LOW/NO/FULL code EXTREMELY EASY TO DEVELOP ANY SYSTEM
For thinking, the development of tools and work with them worthy in the 21st century
The development of FRONTEND as an entire IS system as you do not know it - only 3 choices are enough
Logic - everything in the database is a LIST (list of invoices)
-> This may or may not have a DETAIL (list of items) || OR it needs to be just settings, i.e. Detail (program settings, video processing, etc.)
And the result can be a system that SAP or anyone else can only dream of. Almost like tennis, you can publish one table after another, and by evening you have a small system.
DEFINITION OF 3 layer SYSTEM and necessary components
Database - place for DATA Backend Server - A service that securely conveys data to applications Frontend/User Application - A nice application to easily work with data Print support - creation and printing of any reports
START in 1 day you will start your new system in three steps
Development in EASYDATACenter UNIVERS RESTFULL/SOCKET BACKEND SERVER in three user steps
-
Create any database Table. Use the TemplateList Template and just insert your boxes into it. Remember Indexes, Foreign Keys, or look at already existing tables or consult with me. It IS for a few minutes
-
You export the tables as a model using the prepared CMD command to the BACKEND project [ EntityFramework 6 ] command: Scaffold-DbContext "Server=IP;Database=DB;User ID=USER;Password=PW;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir DBModel done - the entire database is defined in the Backend server
-
From existing calls, e.g. UserList, copy and rename the new API call for the new table [GET,POST,PUT,PATCH,DELETE] COPY file -> PASTE file -> Rename to new API for example: /skladList and Build&Run Done, the API Server is WAITING at http://vaseip/skladList for your call and deployment at the client, in the company, anywhere
Development in EASYBuilder Modern WINDOWS XP+ thin application or system in three user steps
-
You copy the table definition from the model created in the BACKEND project to the FRONTEND project COPY Class from BE Model -> PASTE into FE application -> add new APIURL
-
Select the template you want, there are primarily 3 -> rename it, edit the form and connect it to the MAINMENU so you set the WHERE to search, COPY/PASTE boxes, write Translation in the dictionary and copy the connection to the MAINMENU done - the result is a new form with complete user control
-
Build&Run - you check the work one after the other, because typos are part of us, aren't they the full logging option slaps you in detail where the error is or HURRY GOES Done, the Application is WAITING for your work or deployment at the client, in the company, anywhere
evelopment of Press Reports in FYIREPORTING
-
You simply copy the existing DATALIST/DETAIL report and open it in the editor Rename to the new name of your table.
-
You edit your SQL SELECT and Test it, the parameters are already set ID/SEARCH/CONNECT Ideally in MSSQLMS or HEIDYSQL or something and debug it there. Remember everything is just a LIST or Detail. done - and you have the correct data that you just arrange for printing in the form.
-
And you import into the system in the REPORTING list menu, where you set the required link to APIURL/SEARCH/ID Done, the press kit is WAITING for your work or deployment at the client, in the company, anywhere
END OF KNOWLEDGE REQUIRED FOR SYSTEM DEVELOPMENT
Basic listing of almost unlimited skill application
- Prepared with common agendas
- Operation possible on WINDOWS XP, 7, 8, 10, 11
- C# WFP, XAML, Drag&Drop technology
- Complete management of any Agenda (Table) RESTORE/NEW/EDIT/COPY/DELETE
- Automatically generated list data view.
- Easy preparation of the form according to prepared templates and ready made agendas
- more than 100 types of input fields
- Search in content in the data list
- also optimized for TOUCH TERMINALS for MANUFACTURING or BUSINESS, SELF*SERVICE environments
- own printing system with direct printing support
- Almost unlimited development possibilities with the possibility of own involvement
- Support for controlling operating systems
- thousands of already free tools on GitHub
- connection to any third*party services
- support for all known protocols EMAIL, IMAP, HTTPS, FTP, SSH, SMTP, TELNET
- command line support, JavaScript, Telnet
- Option to connect to 3*party systems, IS and OS systems
- Support multimedia, hardware, 3D, devices, RFID readers, QR, BAR, EAN, VIDEO, SOUND, MS OFFICE, PDF, XPS, RTF, etc.
- development of any customized system from 20,000 CZK. System already prepared as a template for any more than just IS SYSTEM
- the possibility of creating any INFORMATION OR CONTROL, MONITORING, REPORTING system, and so on
EASYTOOLS IMPLEMENTED ADD-ONS
- AddOns for touch panels, controls, data types, forms, media, documents, 3D,
- They are completely free to download (including every license pack)
- Open Source community to include more than 1000 tools in the system by community
BUILT SYSTEMS IN 14 DAYS
- LicenseSrv MultiOS license server with listening API GET/POST server / generation of unlimited static/dynamic CODES and management client
- GUIDES Windows XP+ Implementation Production Guides for Production Companies For office / touch panels with unlimited clients and printing options
- ShoPingER Windows XP+ MultiBranch Quotation/Order/Invoicing System with multimedia files supported by unlimited clients and printing capabilities
- LicenceShoper MultiOS License Server PLUS Windows XP+ MultiBranch Billing System [LicenseSrv + ShoPingER]
SOLUTION - WHERE TO FIND COMPLETE INFORMATION
All documentation, license, case study, price list, media, developer information, help, manuals, technology information, installation, images, videos, downloads, etc. can be found here or:
PROJECT IMPLEMENTATION CASE STUDY PROJECTS USING IDEAS
For thinking, the development of tools and work with them worthy in the 21st century
- The first use of this solution was a big change in a manufacturing company For 1000 workers, but it was only four days work for the IT department
- Implementation of production guides as a task for 4 days CZ In Case Studies
- Creation of the Billing System as a replacement for the system with discontinued support.
- Creation of the ShoPingER Invoicing System with a large overlap in 14 days]
- All Windows Applications are available to try online in the Application ShowRoom https://KlikneteZde.Cz
EASYDATACenter - Backend Server Development Plan
- Create Backend Server Generator
- Create Full Customer Support with Project Managements
EASYBuilder - WPF Fronted System Builder Development Plan
- Publish XAML Generator Graphical Tool with Templates Support
- implement Global Context menu for all DataLists with Count of API record request setting, Properties of Datalist, DataRequest,DataList Controller
- Convert WPF System to WebApplication for Windows/Linux with all graphics and possibilities
- Create SYSTEM Generator
- Create Metro4 Full compatible WEB SYSTEM Variant
- Implement FastReport Tool (Replace FYI Reporting)
Recommended Practices
Using References of Variables or Classes - Maximum Saving Memory Performance
- For All processes which is modified by One Person in One Time - Typical System Using
In simple explanation and absolut ideally working with Data - Maximum Clean Code Data flow modify one Variable or Class on Way Over More Sequenced Methods
- From API List Logic You working only With Primary API Dataset and few sets of Dials
- For standard Using its best way For Maximum clean code without Exeption
Is calculating that you Have Full or Extended Dataset for API everytime - Point For Data loading "'SetRecord' Method" - load data from model to Dataset Variable - Some Operations where you can change data values - Point For Recapitulate full Dataset and Save -
- Info Global Server Running: https://Kliknetezde.Cz:5000/
- Generators & Client Support is Preparing: https://Kliknetezde.Cz:5000/DashBoard
- Youtube: https://www.youtube.com/playlist?list=PLmE7gP9LTBimNJQ444ypG8HVce23fa2Hb
- Facebook: https://www.facebook.com/GroupWareSolution
- LinkedIn: https://www.linkedin.com/in/libor-svoboda-7b96014a/
- Eshop: https://GroupWare-Solutions.Eu
- WebPages: https://GroupWare-Solution.Eu
- Online Application for testing: Https://KlikneteZde.Cz
- GitHub Complete Information and Help: https://github.com/liborsvoboda/EASYSYSTEM-EASYSERVER-EN
Complete Development Documentation and Smart Search: https://liborsvoboda.github.io/EASYSYSTEM-EASYSERVER-EN
Company contact for suppliers
Email:
- Libor.Svoboda@GroupWare-Solution.eu
- Libor.Svoboda@KlikneteZde.Cz
Address:
Street: Žlutava 173
City: Žlutava
PostCode: 761 63
State: Czech Republic
Phone: 00420 724 986 873
EASY-SYSTEM-Builder & EASY-DATA-Center & Visual Studio Help
OS GIT WINDOWS LINUX MARKDOWN DOC SCHEMA DATABASES
- target of the new Groupware Solutions is set Maximal processes to this automatic solutions.
- Result Will Be: Create Table and Set API Template - its Done for DATABASE and Backend API
- Create Form from Templates In FrontEnd for the New Table - Its Done for New System Form (Agenda)
- Share With World : World will share Agendas with you also
- Agenda is Only 3 files: SQL(Table), API, FORM
- Ideal Copy Class from generated By Scaffold to final Form
- Its Absolute Perfect Solution For EASY Create Robust System in Few Months
- All Systems Supported: Machines Control, IS Systems, Terminals, and All Sub Systems
Visual Studio Automatic MD File From XML Comments
- Install 'Vsxmd' Library
- add this code to 'PropertyGroup'
<GenerateDocumentationFile>True</GenerateDocumentationFile>
<DocumentationMarkdown>$(MSBuildProjectDirectory)\EASYDATACenter.md</DocumentationMarkdown>
Visual Studio Automatic Code Cleaning
- Install 'codemaid' Tool
Visual Studio Automatic DataBase Schema Snapshot
- Install 'EntityFrameworkCoreScaffolding' Tool
- Use Example file 'scaffoldingsettings.json' for OneClick Snapshot
GitHub Automatic MDBook
- Enable 'MDBook' tool For Code
Use File: book.toml
GitHub/GitLab Automatic Publish to GCloud Docker
- Enable Build
Use File: Dockerfile
GitHub/GitLab Automatic Publish to GCloud Docker
- Enable Build
Use File: gitlab-ci.yml
Linux Create Backend System Service for Automatic Control
- Read OS support
Use File: Linux-dotnet-MyProject-service.service
Windows Install application.exe as System Service for Automatic Control
- Read OS support
Use File: install.bat
Visual Studio Automatic Generate windows Help File chm
- Install 'GhostDoc' tool
- Run on Project for Generate Full Code COmment and Structure Help file
MSSQL DATABASE Automatic BACKUP/RESTORE
- Use files from MSSQL_DB
- Can run from System Scheduler
- Can Run from SQL command
Backend WebPages Automatic Controller from Pages Structure
- Enable Razor WebPages Engine
- Create new file 'cshtml' in folder ServerCorePages
- Page is automatic included to Controller !must we different than API URLS
MarkDown Item Template
EASY-SYSTEM-Builder & EASY-DATA-Center Visual Studio Help
Migration between Database Types
- Install 'Mysql WorkBench' SW
- run migrations
Help: https://severalnines.com/blog/how-migrate-mssql-mysql/
SW: https://dev.mysql.com/downloads/file/?id=517975
Windows Store Download App Link Generator
- insert App detail link from web store
- Example: https://apps.microsoft.com/store/detail/xaml-studio/9NTLS214TKMQ
- https://store.rg-adguard.net/
Windows Apps & Windows Tools
- in start menu Windows Kits
- cmd Reset Store Settings
wsreset.exe
MarkDown Item Template
API Condition for Ignore In Swagger Docs
[ApiExplorerSettings(IgnoreApi = true)]
API Description For Descripting In Swagger Docs
[SwaggerTag("API Template with INSERT/UPDATE/DELETE/SELECT AND FILTERING APIs")]
public class TemplateListApi : ControllerBase {
[SwaggerOperation(Summary = "Get All records", Description = "Async standard select record API", OperationId = "Select all records", Tags = new[] { "TemplateListApi" })]
public async Task<string> GetTemplateList() {
[HttpDelete("/TemplateList/{id}")]
[Consumes("application/json")]
[SwaggerOperation(Summary = "Delete Record", Description = "Async standard Delete record API", OperationId = "Delete Record", Tags = new[] { "TemplateListApi" })]
public async Task<string> DeleteTemplateList(string id) {
EASY-SYSTEM-Builder & EASY-DATA-Center & Visual Studio Help
Create Linux service and control for BACKEND
- Service Files are on Debian in folder: /lib/systemd/system
- add this code to 'PropertyGroup'
create file: dotnet-Project-service.service
How to Create/Control LINUX service
- command list
systemctl enable dotnet-TABackend-service.service
systemctl start dotnet-TABackend-service.service
systemctl status dotnet-TABackend-service.service
systemctl stop dotnet-TABackend-service.service
Linux Run project dll command
- command list
dotnet application.dll
WINDOWS OS HELP & TIPS
- Install Backend 'EXE' file as Windows service by SC/InstalUtil/ utility
- Windows Service utilities and Service control from command Line examples are in 'WinServiceUtilities' folder
MarkDown Item Template
EASY-SYSTEM-Builder & EASY-DATA-Center & Visual Studio Help
Not generate Static file for MVC Razor pages WebPages
- in project part by parameter:
- add this code to 'PropertyGroup'
<StaticWebAssetsEnabled>false</StaticWebAssetsEnabled>
MarkDown Item Template
Projects Legend
EB = EASYBuilder
ED = EASYDATACenter
SD = EASYBuilderDataCenter
SP = EASYBuilder application
I = Install file
DB = Database
Each changes IN EB/SP can be deployed to the second program
Each changes IN ED/SD can be deployed to the second program
Project/Program Install file are for absolute simple Installation with all Dependencies Documentation And Software for Testing you find on
https://groupware-solution.eu/webdav/Marketing/
login: marketing/marketing
ALL Applications Prepared for Simple Installation / Buy in more installation Types - by user friendly Install file and License Server
Application Clones FE + BE
LicenseSrv - MultiOS License Server with listen API GET/POST server / generate
Unlimited Static/Dynamic CODES and Client for managing
PRUVODKY - Windows XP+ Implementation Production Guides for Production Companies
For Office / Touch Panels using with unlimited Clients and printing possibilities
ShoPingER - Windows XP+ MultiBranch Offer/Order/Invoice System with multimedia Files
Supported with Unlimited Clients and Printing possibilities
LicenceShoper - MultiOS License Server PLUS Windows XP+ MultiBranch Invoice system
[LicenseSrv + ShoPingER]
SOLUTION MAIN PARTS
EASYBuilder Developing C# WPF Visual Studio Project With MustiVariable Menu Settings,
With All DataForm Template types DATAView / DATADetail / With SubDATAview /
With SubFullDataDetail / 3D / Document / Video
for Build ANY Information / Multimedia / Control / Flow / Reporting and More Systems
FOR NEXT COPY / PASTE DEVELOPMENT IN EXTREMELY LOW PRICE 5000Kč/200EURO - Project LICENSE
EASYDATACenter - Universal Secure MultiPlatform MultiDATABASE Backend Server Project
WiTH RESTFULL / WEBSOCKET implementations
With All Template types for INSERT / UPDATE / DELETE / SELECT /
PROCEDURE / SUBFORMDATA and more Other
With DATABASE , Table Template, Procedure Template, View Template,
Backup/Restore and more Examples
With Tables, Indexes, ForeignKeys in All Standard DB Using
FOR NEXT COPY / PASTE DEVELOPMENT IN EXTREMELY LOW PRICE 5000Kč/200EURO - Project LICENSE
FYI Reporting - FreeWare Full Report Designer and Viewer for Printing All document Types
/ Barcodes, EAN, QR, Graphs, SubReport, etc.
SW Date Version Speed Development Description by one man Only
EB/SP/I 1.12.2022 1.5.78.925 Start of Developing steps describing
EB 1.12.2022 Added Link for FyiReportink 100 Examples to
Help_Commands
EB/SP/I 1.12.2022 1.5.78.944 Implemented DB Connection string to settings for All
Report as param, centralized
EB/SP 1.12.2022 Implemented new TreeView Menu for much more menu
items in Menu
SD/SP 1.12.2022 Implemented CurrencyList, UnitList, AddressList
ItemList Agendas
EB/SP 1.12.2022 Implemented Copy menu button for copy Each record in
listview
SD 1.12.2022 Describe existing API call to documentation
EB/SP 2.12.2022 Changed Settings for much more application menu Types
and implemented new Menu
EB/SP 2.12.2022 1.5.78.954 Publish new version EASYBuilder installers on
Google/WebDav/WebSite
EB/ED/SD/SP 2.12.2022 Publish Development Info on WebSite And Marketing
EB/SP 3.12.2022 Repaired filtering on null values
EB/SP 3.12.2022 Centralized load Report List Control from ApiUrl
definition List for these addresses
SD 3.12.2022 Create TemplateList Table
to 15.12.2022 5 Applications Created IN 14 DAYS WITH 20-40 DB
tables / Agendas in ONE MAN ONLY
CURRENT PRICE LIST - You will finally experience a record return and not only in money
For thinking, the development of tools and work with them worthy in the 21st century
Price Idea:
- On the Implementation of production guides in a production company 5 Tables are sufficient
- A CUSTOM REPORT usually takes 0.5 - 2 hours
- The import of the dialer usually takes 1 hour
-
BUILDING A SMALL AVERAGE CUSTOM SYSTEM (5 Tables)
from 20,000CZK or hourly 750CZK/Hour -
BUILDING A SMALL AVERAGE CUSTOM SYSTEM (10 Tables)
from CZK 35,000 or hourly CZK 750/Hour -
Project License/Customer/Number and method of Use PRICE OF 1 SERVER LICENSE CZK 5000
-
PROGRAM WORK CZK 750/Hour
All offered Windows Applications are available to try online in the Application ShowRoom at https://KlikneteZde.Cz
Literature:
https://code-maze.com/net-core-web-development-part1/
https://docs.microsoft.com/cs-cz/aspnet/core/security/cors?view=aspnetcore-6.0
https://docs.microsoft.com/cs-cz/ef/core/cli/dotnet
https://medium.com/free-code-camp/an-awesome-guide-on-how-to-build-restful-apis-with-asp-net-core-87b818123e28
https://stackoverflow.com/questions/48282223/scaffold-dbcontext-to-different-output-folder
https://codewithmukesh.com/blog/repository-pattern-caching-hangfire-aspnet-core/
Swagger Documentation
Administration tools included in Backend server
- ApiDescription Generator - on url: /swagger
- Data manager for connected DB - on url: /CoreAdmin
- Server Health Service - on url: /ServerHealthService
- WEB root - with Websocket test utility
JSON configuration Older Example (folder Data/config.json):
"DatabaseConnectionString": - MSSQL DB connection string. Its only in config file.
"ConfigJwtLocalKey": - Your JWT Local Key you can set random key.
"DefaultConfigServerStartupPort": - Default Port for HTTP/HTTPS/SOCKET.
"ConfigWebSocketTimeoutMin": - Default WebSocket Timeout.
"SocketBufferSizeKb": - Default WebSocket message size.
"ServerTimeTokenValidationEnabled": - Enable/Disable token Expiration.
"ConfigApiTokenTimeoutMin": - Minutes count to token expiration.
"HttpsProtocol": - Enable/Disable HTTP/ HTTPS on this port. Only one is always in use.
"ConfigCertificateDomain": - Certificate for HTTPS is generated automaticaly i fis HTTPS is enabled.
This domain is included in the certificate.
"ConfigCertificatePassword": - Password for generated certificate.Its required.
"DatabaseInternalCachingEnabled": - enable Microsoft internal cache for working with Data
"DatabaseInternalCacheTimeoutMin": - Time for Purging old chache data
"EnableApiDescription": true, - Enable full automatic API documentation generator with request sending for test included
"ModuleDataManagerEnabled": true, - Enable unsafed Data manager
"ModuleHealthServiceEnabled": - Enable Server Health Service with chedking if services running
EASYDATACenter Universal BACKEND Server Solution foe ANY LIN/WIN/DB
-
Universal Secure MultiPlatform MultiDATABASE BackEnd Server Project
-
WiTH RESTFULL / WEBSOCKET implementations
-
With All Template types for INSERT / UPDATE / DELETE / SELECT /
-
PROCEDURES / VIEWS/ SUBFORMDATA and more Other
-
With DATABASE , Table Template, Procedure Template, View Template,
-
Backup/Restore and more Examples
-
With Tables, Indexes, ForeignKeys in All Standard DB Using
-
FOR SIMPLE COPY / PASTE DEVELOPMENT IN EXTREMELY LOW PRICE 5000Kč/200EURO
USED TECHNOLOGIES (SUPPORT by CORE) IN SOLUTION CORE
- DB types: SQL Server, Oracle, MySQL, SQLite, PostgreSQL, DB2, etc.
- LINUX, WINDOWS, GCLOUD, DOCKER, AZURE implementation
- HTTP/HTTPS/WebSocket/RestFull / GET,POST,PATCH,PUT,DELETE,OPTION,etc.
- Detailed Logging, EASY Debugging ON ALL Dev layers
- CookiePolicy , CorsPolicy / Authentication / Authorization / Basic–JwtBearer Tokens
- Automatic API EndPoints /Controllers
- IMPORT FULL DB Schema/Tables/Procedures/Views from DB by ONE Scaffold Command
- DB Migrations AND Management of any layer supported
- Implemented SWAGGER AUTO API Generator: API Tester and Documentation
- Implemented DIRECT DATA MANAGER for view/editing data in Database
- Implemented Server HEALTH Check with support All statuses,communications,etc. for Server Control
- Custom WebPage for BackEnd Controlling supported
- LOW/NO code developing supported by DB/TABLE/API/CLASS Templates
- FULL code development supported
- More others tools and AddOns are on GitHub for implement by Package Install
Databases - EASY Way with AUTO Management
- ASPNETCORE6 and Entity Framework 6 are perfect managing solution for any DATABASE
- Simple using is Domain for these Technologies, which is simple for each Power User
- Automatic Code Correction, Auto Helper, Generation DB Schema for Visual Control will not allow to make a mistake
- lot of Free Tools on GitHub, can be simple included with High effect
These Tools are Included to Solution Core
- Complex Tool DB Data management
- Automatic API Tester and Documentation Generator
- System Checker with controlling and logging more than 100 Server/Network/DB/IS/OS events
Used Primary Technologies for Unlimited Vision - Older
- AspNetCore 6
- Entity Framework 6
- Log4Net
- MSSQL connection
- HTTP/HTTPS/WebSocket/RestFull / [GET,POST,PATCH,PUT,DELETE,OPTION]
- Windows Service / Docker Service / Console application
- CookiePolicy
- CorsPolicy
- Authentication / Authorization / Basic – JwtBearer
- Automatic EndPoints /Controllers
Database Model snapshot to Entity Entity Framework 6:
The first green descriptions commands is for simple direct working with MSSQL database. This command generating „full DB Model Entity“ and „full DB API documentation“. Command must be run from „package manager console“.
Command for: generate full Entity – Database Model Entity Framework Scaffold-DbContext "Server=SQLSRV\SQLEXPRESS;Database=DATAPUB;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir DBModel -ContextDir "DBContexts"
Scaffold-DbContext "Server=SQLSRV;Database=DATAPUB;Persist Security Info=False;User ID=datapub;Password=datapub;MultipleActiveResultSets=False;Encrypt=False;TrustServerCertificate=False;Connection Timeout=30;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir DBModel -ContextDir "DBContexts" Scaffold-DbContext "Server=192.168.1.35;Database=DATAPUB;User ID=datapub;Password=datapub;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir DBModel
Command for: generate full DB Context – Database API documentation Scaffold-DbContext "Server=SQLSRV\SQLEXPRESS;Database=DATAPUB;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -ContextDir "DbContexts"
Replace Connection string in DBContect folder/Context file with this program part. (here you can enable SQL debugging)
public DATAPUBContext(DbContextOptions<DATAPUBContext> options)
: base(options)
{
ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
}
if (!optionsBuilder.IsConfigured)
{
optionsBuilder.ConfigureLoggingCacheTime(TimeSpan.FromMinutes(Program.ServerSettings.SimpleCacheTimeMinutes));
optionsBuilder.EnableServiceProviderCaching(Program.ServerSettings.SimpleCachingEnabled);
optionsBuilder.UseSqlServer(Program.ServerSettings.DatabaseConnectionString,
x => x.MigrationsHistoryTable("MigrationsHistory", "dbo"));
//.UseLoggerFactory(LoggerFactory.Create(builder => { builder.AddConsole(); }))
//.LogTo(message => Debug.WriteLine(message));
//.LogTo(Console.WriteLine);
}
- Disable ForeignKey control you must set JSONIgnore & ValidateNever params for key in DBModel. Example is in UserList:
[JsonIgnore]
[ValidateNever]
public virtual UserRoleList Role { get; set; } = null!;
Init Migrations files to DOTNET migration management for Upload/Manage Database Migrations:
Add-Migration Initial -Context Company.WebApplication1.Data.ApplicationDbContext
Upload migrations to DATABASE
dotnet ef database update
Export Database model to SQL script
dotnet ef dbcontext script --output Migrations/BasicDBModel.sql
These nexts commands are for working with database migrations:
Command for: generate script with full database model
dotnet ef dbcontext script --output Migrations/BasicDBModel.sql
Command for: generate new migration script
dotnet ef migrations add ServerSetting.sql
Command for: generate script for database update
dotnet ef migrations bundle --output Migrations/BasicDBModel.sql
Command for: show all migration List
dotnet ef migrations list
Command for: remove Last migration
dotnet ef migrations remove
Command for: run all waiting migrations scripts
dotnet ef database update
Generate executable Files
https://learn.microsoft.com/cs-cz/dotnet/core/tools/dotnet-publish
Run debug
dotnet run --project BACKENDCORE -r win-x64 -c Debug --self-contained
Generate exe file Without WebPage support dotnet publish BACKENDCORE -c Release -o bin -r win-x64 /p:PublishSingleFile=true
DB backup procedure in Linux
CREATE procedure [dbo].[DB_AUTOBACKUP]
AS
BEGIN
DECLARE @dbName as varchar(50) = DB_NAME();
DECLARE @fileName as varchar(80) = CONCAT('/root/DBbackup/',@dbName,'_',FORMAT(GETDATE(),'yyyyMMdd'),'.bak');
DBCC SHRINKFILE (2, 1); BACKUP DATABASE @dbName TO DISK = @fileName;
DBCC SHRINKFILE (2, 1); BACKUP DATABASE @dbName TO DISK = @fileName;
END;
GO
One Project support More DBs = DBContexts
these can be used whatever, MOre Api for More App for example
The test version, if requested, should ideally be deployed separately for making changes
Solution for Data selection by Role - its needed in SELECT API only
if (Request.HttpContext.User.IsInRole("Admin"))
{ data = new EASYDATACenterContext().ImageGalleryLists.FromSqlRaw("SELECT * FROM ImageGalleryList WHERE 1=1 AND " + filter.Replace("+", " ")).AsNoTracking().ToList(); }
else
{
data = new EASYDATACenterContext().ImageGalleryLists.FromSqlRaw("SELECT * FROM ImageGalleryList WHERE 1=1 AND " + filter.Replace("+", " "))
.Include(a => a.User).Where(a => a.User.UserName == Request.HttpContext.User.Claims.First().Issuer)
.AsNoTracking().ToList();
}
ASPNETCORE6 & ENTITY FRAMEWORK6 - SUPER SERVER
For thinking, the development of tools and work with them worthy in the 21st century
- ASPNETCORE is a simple intuitive framework with a whisperer for easy development.
- The Current Solution already contains templates and samples and can be developed with their help
- robust system.
- More information can be found with the linked folders.
- The project is conceptually complex for complete laymen who learn a few steps over and over again.
- DB Views behave the same as tables
- Turn off foreign keys in the model To be able to work freely with the tables
Server configuration
The server loads the configuration from a file at startup and after connecting to the database replaces it with the settings from the database and starts the server according to the parameters
"DatabaseConnectionString": - MSSQL DB connection string. Its only in config file.
"ConfigJwtLocalKey": - Your JWT Local Key you can set random key.
"DefaultConfigServerStartupPort": - Default Port for HTTP/HTTPS/SOCKET.
"ConfigWebSocketTimeoutMin": - Default WebSocket Timeout.
"SocketBufferSizeKb": - Default WebSocket message size.
"ServerTimeTokenValidationEnabled": - Enable/Disable token Expiration.
"ConfigApiTokenTimeoutMin": - Minutes count to token expiration.
"HttpsProtocol": - Enable/Disable HTTP/ HTTPS on this port. Only one is always in use.
"ConfigCertificateDomain": - Certificate for HTTPS is generated automaticaly i fis HTTPS is enabled.
This domain is included in the certificate.
"ConfigCertificatePassword": - Password for generated certificate.Its required.
"DatabaseInternalCachingEnabled": - enable Microsoft internal cache for working with Data
"DatabaseInternalCacheTimeoutMin": - Time for Purging old chache data
"EnableApiDescription": true, - Enable full automatic API documentation generator with request sending for test included
"ModuleDataManagerEnabled": true, - Enable unsafed Data manager
"ModuleHealthServiceEnabled": - Enable Server Health Service with chedking if services running
- /BackendCheckApi - Api for checking Server Availability
- /Authentication - Basic authentication Standard message for receiving the Token
Unique Services of sever
-
/BackendCheckApi - Api for checking Server Availability
-
/Authentication - Basic authentication Standard message for receiving the Token
-
Web Services
-
/swagger - Automatic generator API model documentation and testing
-
/CoreAdmin - Data Manager for the connected database
-
/ServerHealthService - Service for setting health checks; server HW/SW
API Communication on the BACKEND server side
//Disable foreign keys in the model by adding JsonIgnore, ValidateNever : Sample
[JsonIgnore]
[ValidateNever]
public virtual UserList User { get; set; } = null!;
API Template
- The template is ready for complete communication with the table Just RENAME
- Authorization, INSERT/UPDATE/SELECT/DELETE
//Inserting/Deleting Range Items into the Sub Table - for example Invoice Items
var test = new EASYBUILDERContext(); test.OfferItemLists.AddRange(record);
result = test.SaveChanges();
var test = new EASYBUILDERContext(); test.OfferItemLists.RemoveRange(data);
int result = test.SaveChanges();
EF6 DB procedure query with response
parameters = new List<SqlParameter> {
new SqlParameter { ParameterName = "@unlockCode", Value = unlockCode },
new SqlParameter { ParameterName = "@partNumber", Value = partNumber },
new SqlParameter { ParameterName = "@ipAddress", Value = clientIPAddr },
new SqlParameter { ParameterName = "@allowed" , Value = allowed, Direction = System.Data.ParameterDirection.Output} };
data = new GLOBALNETContext().Database.ExecuteSqlRaw("exec CheckUnlockKey @unlockCode, @partNumber , @ipAddress, @allowed output", parameters.ToArray()).ToString();
allowed = bool.Parse(parameters[3].Value.ToString());
MSSQL IN ASPNETCORE HELP COMMANDS AND TYPES
#Command for: Auto Generate full DB – complete Database Model Entity Framework
Scaffold-DbContext "Server=SQLSRV\SQLEXPRESS;Database=DATAPUB;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir DBModel -ContextDir "DBContexts"
EF6 Query Check Token.Role/Issuer - UserName, Include sub table Foreign Table
if (Request.HttpContext.User.IsInRole("Admin")) {
data = new hotelsContext().AddressLists.ToList();
} else {
data = new hotelsContext().AddressLists.Include(a => a.User)
.Where(a => a.User.UserName == Request.HttpContext.User.Claims.First().Issuer).ToList();
}
Ignore more Sub Tables from include in API response
return JsonSerializer.Serialize(data, new JsonSerializerOptions() { ReferenceHandler = ReferenceHandler.IgnoreCycles,WriteIndented = true });
Advanced Query Select for Admin user Request suppport
if (Request.HttpContext.User.IsInRole("Admin"))
{ data = new hotelsContext().AddressLists.FromSqlRaw("SELECT * FROM AddressList WHERE 1=1 AND " + filter.Replace("+", " ")).AsNoTracking().ToList(); }
else {
data = new hotelsContext().AddressLists.FromSqlRaw("SELECT * FROM AddressList WHERE 1=1 AND " + filter.Replace("+", " "))
.Include(a => a.User).Where(a => a.User.UserName == Request.HttpContext.User.Claims.First().Issuer)
.AsNoTracking().ToList();
}
Extend Table schema with columns from another table
data = new hotelsContext().DocumentTypeLists
.Include(d => (d.SystemNameNavigation)).Select(x => new ExtendedDocumentTypeList
{
Id = x.Id,
SystemName = x.SystemName,
Description = x.Description,
DescriptionCz = x.SystemNameNavigation.DescriptionCz,
DescriptionEn = x.SystemNameNavigation.DescriptionEn,
UserId = x.UserId,
Timestamp = x.Timestamp
}).ToList();
Join Table with new custom join condition with exist record
**And next more condition in WHERE to List
(_joiner, _joined) => _joiner.City
[HttpGet("/GLOBALNETWebApi/Search/GetSearchDial/{language}")]
public async Task<string> GetSearchDial(string language = "cz") {
List<string> data;
List<string> cityData;
List<string> countryData;
using (new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = IsolationLevel.ReadUncommitted })) {
countryData = _dbContext.CountryLists.
Join(_dbContext.HotelLists.Where(a => a.Advertised && a.Approved == true),
joiner => joiner.Id, joined => joined.CountryId, (_joiner, _joined) => _joiner.SystemName).ToList();
cityData = _dbContext.CityLists.Join(_dbContext.HotelLists.Where(a => a.Advertised && a.Approved == true),
joiner => joiner.Id, joined => joined.CountryId, (_joiner, _joined) => _joiner.City).ToList();
data = _dbContext.HotelLists.Where(a=> a.Approved == true && a.Advertised == true).Select(a => a.Name).ToList();
}
countryData.ForEach(item => data.Add(DBOperations.DBTranslate(item, language)));
cityData.ForEach(item => data.Add(DBOperations.DBTranslate(item, language)));
data = data.Distinct().ToList();
data.Sort();
return JsonSerializer.Serialize(data, new JsonSerializerOptions() { ReferenceHandler = ReferenceHandler.IgnoreCycles, WriteIndented = true });
}
Join Table with new custom join condition with exist record to Tuple List
countryData = _dbContext.CountryLists.
Join(_dbContext.HotelLists.Where(a => a.Advertised && a.Approved == true),
joiner => joiner.Id, joined => joined.CountryId, (_joiner, _joined) => new Tuple<int, string>(_joined.Id, _joined.Name)).ToList();
MYSQL IN ASPNETCORE HELP COMMANDS AND TYPES
#Console command for download full database schema to Backend Server Project
Scaffold-DbContext "server=localhost;port=3306;database=lowercasedbname;uid=user;password=password;" Pomelo.EntityFrameworkCore.MySql -OutputDir DBModel
#MYSQL Entity DB Context Connection Code with loaded configuration settings
#Absolute Detailed Logging supported, uncomment only
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) {
if (!optionsBuilder.IsConfigured) {
optionsBuilder.ConfigureLoggingCacheTime(TimeSpan.FromMinutes(Program.ServerSettings.DatabaseInternalCacheTimeoutMin));
optionsBuilder.EnableServiceProviderCaching(Program.ServerSettings.DatabaseInternalCachingEnabled);
optionsBuilder.UseMySql(Program.ServerSettings.DatabaseConnectionString,
ServerVersion.AutoDetect(Program.ServerSettings.DatabaseConnectionString))
;
//.UseLoggerFactory(LoggerFactory.Create(builder => { builder.AddConsole(); }))
//.LogTo(message => Debug.WriteLine(message))
//.LogTo(Console.WriteLine)
;
}
}
API Condition for Role Admin only
[Authorize(Roles = Role.Admin)]
[Authorize(Roles = "admin")]
[CustomAuthorize(Roles = "admin")]
if (Request.HttpContext.User.IsInRole("Admin"))
API Condition Ignore For Swagger Docs
//[ApiExplorerSettings(IgnoreApi = true)]
BACKEND server Templates and system rules COPY/PASTE/RENAME supported
For thinking, the development of tools and work with them worthy in the 21st century
- The displayed template codes can also be found in the Database
- Make the database model as honest as possible in relation to data and bindings
- The best solution is to have the database check the correctness of the data (in 1 place)
- The database contains a DBHELP help procedure
- Document items are deleted with a linked key
- Procedures for Backup/Restore are prepared in the DB
- The system uses SLQ, EF6, Procedures, Views, Functions
- That's all it takes to develop
-- The procedure setting the rights for the user to the necessary operations
USE [EASYBUILDER]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE procedure [dbo].[DB_SETRIGHTS]
AS
BEGIN
BEGIN TRY CREATE USER [easybuilder] FOR LOGIN [easybuilder] END TRY BEGIN CATCH END CATCH;
BEGIN TRY ALTER ROLE [db_datareader] ADD MEMBER [easybuilder]; END TRY BEGIN CATCH END CATCH;
BEGIN TRY ALTER ROLE [db_datawriter] ADD MEMBER [easybuilder]; END TRY BEGIN CATCH END CATCH;
BEGIN TRY GRANT EXECUTE TO [easybuilder]; END TRY BEGIN CATCH END CATCH;
END;
GO
/*
Template for creating standardized Tables (from Table -> CREATE TO)
The template is used by way of REPLACE 'TemplateList' after 'NewTableList'
edit fields correctly, set indexes and foreign keys
System ID Columns - AutoIncrement, TimeStamp - InsertTime
Keys: UserId - Binding to the UsersList Table
*/
USE [EASYBUILDER]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[TemplateList](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [varchar](50) NOT NULL,
[Description] [text] NULL,
[Default] [bit] NOT NULL,
[UserId] [int] NOT NULL,
[Active] [bit] NOT NULL,
[TimeStamp] [datetime2](7) NOT NULL,
CONSTRAINT [PK_TemplateList] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY],
CONSTRAINT [IX_TemplateList] UNIQUE NONCLUSTERED
(
[Name] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE [dbo].[TemplateList] ADD CONSTRAINT [DF_TemplateList_Active] DEFAULT ((1)) FOR [Active]
GO
ALTER TABLE [dbo].[TemplateList] ADD CONSTRAINT [DF_TemplateList_TimeStamp] DEFAULT (getdate()) FOR [TimeStamp]
GO
ALTER TABLE [dbo].[TemplateList] WITH CHECK ADD CONSTRAINT [FK_TemplateList_UserList] FOREIGN KEY([UserId])
REFERENCES [dbo].[UserList] ([Id])
GO
ALTER TABLE [dbo].[TemplateList] CHECK CONSTRAINT [FK_TemplateList_UserList]
GO
/*
System procedure for Reports with advanced filtering The procedure is part of the Supplied Database
*/
USE [EASYBUILDER]
GO
/****** Object: StoredProcedure [dbo].[ReportDataset] Script Date: 11.03.2023 6:45:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[ReportDataset]
@TableName varchar(50) = null,
@Sequence int = 0
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Intended for use with param-ed reports.
-- To be called from various My-FyiReporting reports
-- - Various reports with their own layouts are called from VB app after setting Queue with usp_ReportQueue_Push()
-- each report then just contains :
-- SET FMTONLY OFF;
-- EXEC usp_ReportQueue_Pop @TableName='SomeTablename', @Sequence='10'
--
DECLARE @ID int;
DECLARE @NAME varchar(50);
DECLARE @SQL nvarchar(MAX);
DECLARE @FILTER nvarchar(MAX);
DECLARE @SEARCH varchar(50);
DECLARE @SEARCHCOLUMNLIST nvarchar(MAX);
DECLARE @SEARCHFILTERIGNORE bit;
DECLARE @RECID varchar(50);
DECLARE @RECIDFILTERIGNORE bit;
DECLARE @SEPARATEDCOLUMNS nvarchar(MAX);
SELECT Top 1
@ID=[Id],
@NAME=[Name],
@SQL=[Sql],
@FILTER=[Filter],
@SEARCH=[Search],
@SEARCHCOLUMNLIST=[SearchColumnList],
@SEARCHFILTERIGNORE=[SearchFilterIgnore],
@RECID=[RecId],
@RECIDFILTERIGNORE=[RecIdFilterIgnore]
FROM ReportQueueList WHERE [TableName]=@TableName AND [Sequence] = @Sequence;
--PRERARE RECID
IF (@RECID = 0 OR (@RECIDFILTERIGNORE = 1 AND @FILTER <> '1=1')) BEGIN
SET @RECID = ''
END ELSE BEGIN
SET @RECID = CONCAT(' AND Id=',@RECID);
END
--PRERARE SEARCH
IF (@SEARCH = '' OR (@SEARCHFILTERIGNORE = 1 AND @FILTER <> '1=1')) BEGIN
SET @SEPARATEDCOLUMNS = '1=1';
END ELSE BEGIN
SELECT @SEPARATEDCOLUMNS = STRING_AGG (CONCAT(value,' LIKE ',char(39),'%',@SEARCH,'%',char(39)), ' OR ') FROM STRING_SPLIT (@SEARCHCOLUMNLIST, ',');
END
SET @SQL = CONCAT(@SQL,' WHERE 1=1 AND (', @FILTER,') AND (', @SEPARATEDCOLUMNS,') ',@RECID);
--PRINT @SQL; --FOR Debuging
EXECUTE sp_executesql @SQL;
END
GO
--SQL Trigger for Table to set a single value for type 'Default'
USE [EASYBUILDER]
GO
/****** Object: Trigger [dbo].[TR_UnitList] Script Date: 11.03.2023 6:48:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [dbo].[TR_UnitList] ON [dbo].[UnitList]
FOR INSERT, UPDATE, DELETE
AS
DECLARE @Operation VARCHAR(15)
IF EXISTS (SELECT 0 FROM inserted)
BEGIN
DECLARE @setDefault bit;DECLARE @RecId int;
SET NOCOUNT ON;
IF EXISTS (SELECT 0 FROM deleted)
BEGIN --UPDADE
SELECT @setDefault = ins.[Default] from inserted ins;
SELECT @RecId = ins.Id from inserted ins;
IF(@setDefault = 1) BEGIN
UPDATE [dbo].UnitList SET [Default] = 0 WHERE Id <> @RecId;
END
END ELSE
BEGIN -- INSERT
SELECT @setDefault = ins.[Default] from inserted ins;
SELECT @RecId = ins.Id from inserted ins;
IF(@setDefault = 1) BEGIN
UPDATE [dbo].UnitList SET [Default] = 0 WHERE Id <> @RecId;
END
END
END ELSE
BEGIN --DELETE
SELECT @setDefault = ins.[Default] from deleted ins;
SELECT @RecId = ins.Id from deleted ins;
IF(@setDefault = 1) BEGIN
UPDATE [dbo].UnitList SET [Default] = 1
WHERE Id IN(SELECT TOP (1) Id FROM [dbo].UnitList WHERE Id <> @RecId)
;
END
END
GO
ALTER TABLE [dbo].[UnitList] ENABLE TRIGGER [TR_UnitList]
GO
API communication - 4 TYPES is enough
For thinking, the development of tools and work with them worthy in the 21st century
It is so. INSERT/UPDATE/DETETE/SELECT are the mentioned types which are enough ensure the communication of any system. And top it all off with a single list of APIaddress calls and communication is resolved set up for this as a standardized automatic part of the kernel.
System kernel code dump, Where you just always add the address and don't care about anything else
System APIAddresList - all calls in one place
/// <summary>
/// ALL standard View AND Form API Call must end with "List" - These will automatic added for reports Definitions
/// </summary>
public enum ApiUrls
{
GlobalNETAttachmentList,
GlobalNETAddressList,
Authentication,
BackendCheck,
GlobalNETBranchList,
GlobalNETCalendar,
GlobalNETCreditNoteList,
GlobalNETCreditNoteItemList,
GlobalNETCurrencyList,
GlobalNETDocumentAdviceList,
GlobalNETExchangeRateList,
GlobalNETIncomingInvoiceList,
GlobalNETIncomingInvoiceItemList,
GlobalNETIncomingOrderList,
GlobalNETIncomingOrderItemList,
GlobalNETTemplateClassList
}
4 API Calls - SYSTEM Core module
class ApiCommunication
{
public static async Task<Authentification> Authentification(ApiUrls apiUrl, string userName = null, string password = null)
{
using (HttpClient httpClient = new HttpClient())
{
try
{
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes(userName + ":" + password)));
StringContent test = new StringContent("", Encoding.UTF8, "application/json");
HttpResponseMessage json = await httpClient.PostAsync(App.Setting.ApiAddress + "/" + apiUrl, test);
return JsonConvert.DeserializeObject<Authentification>(await json.Content.ReadAsStringAsync());
}
catch { return new Authentification() { Token = null, Expiration = null }; }
}
}
public static async Task<T> GetApiRequest<T>(ApiUrls apiUrl, string key = null, string token = null) where T : new()
{
using (HttpClient httpClient = new HttpClient())
{
try {
if (token != null) { httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); }
string json = await httpClient.GetStringAsync(App.Setting.ApiAddress + "/" + apiUrl + (!string.IsNullOrWhiteSpace(key) ? "/" + key : ""));
return JsonConvert.DeserializeObject<T>(json);
} catch { return new T(); }
}
}
public static async Task<DBResultMessage> PostApiRequest(ApiUrls apiUrl, HttpContent body, string key = null, string token = null)
{
using (HttpClient httpClient = new HttpClient())
{
try
{
if (token != null) { httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); }
HttpResponseMessage json = await httpClient.PostAsync(App.Setting.ApiAddress + "/" + apiUrl + (!string.IsNullOrWhiteSpace(key) ? "/" + key : ""), body);
DBResultMessage result = JsonConvert.DeserializeObject<DBResultMessage>(await json.Content.ReadAsStringAsync());
if (result.ErrorMessage == null) { result.ErrorMessage = await json.Content.ReadAsStringAsync(); }
return result;
}
catch (Exception ex)
{ return new DBResultMessage() { RecordCount = 0, ErrorMessage = ex.Message + Environment.NewLine + ex.StackTrace, Status = "error" }; }
}
}
public static async Task<DBResultMessage> PutApiRequest(ApiUrls apiUrl, HttpContent body, string key = null, string token = null)
{
using (HttpClient httpClient = new HttpClient())
{
try
{
if (token != null) { httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); }
HttpResponseMessage json = await httpClient.PutAsync(App.Setting.ApiAddress + "/" + apiUrl + (!string.IsNullOrWhiteSpace(key) ? "/" + key : ""), body);
DBResultMessage result = JsonConvert.DeserializeObject<DBResultMessage>(await json.Content.ReadAsStringAsync());
if (result.ErrorMessage == null) { result.ErrorMessage = await json.Content.ReadAsStringAsync(); }
return result;
}
catch (Exception ex)
{ return new DBResultMessage() { RecordCount = 0, ErrorMessage = ex.Message + Environment.NewLine + ex.StackTrace, Status = "error" }; }
}
}
public static async Task<DBResultMessage> DeleteApiRequest(ApiUrls apiUrl, string key = null, string token = null)
{
using (HttpClient httpClient = new HttpClient())
{
try
{
if (token != null) { httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); }
HttpResponseMessage json = await httpClient.DeleteAsync(App.Setting.ApiAddress + "/" + apiUrl + (!string.IsNullOrWhiteSpace(key) ? "/" + key : ""));
return JsonConvert.DeserializeObject<DBResultMessage>(await json.Content.ReadAsStringAsync());
}
catch (Exception ex)
{ return new DBResultMessage() { RecordCount = 0, ErrorMessage = ex.Message + Environment.NewLine + ex.StackTrace, Status = "error" }; }
}
}
public static async Task<bool> CheckApiConnection()
{
using (HttpClient httpClient = new HttpClient())
{
try
{
string json = await httpClient.GetStringAsync(App.Setting.ApiAddress + "/" + ApiUrls.BackendCheck);
return true;
}
catch
{ return false; }
}
}
}
MarkDown Item Template
DATABASES on Modern way - finally
One Command and One Database in Project, never less - its my new Idea
Possible DB Technologies for immediately using by start click only
ALL MAIN DATABASE TYPES IN EASYDATACenter by EF6 (entity framework) are supported
ORACLE
MSSQL
MYSQL
POSTGRESQL
SQLITE
DB2
etc
SHARED PROJECT FILES
MSSQL EASYBuilder DB installation script
MSSQL ENGINE HELP COMMANDS AND TYPES
#Run stored procedure for Backup Database via MSSQL user login
sqlcmd -U ,username -P password -S .\SQLEXPRESS -d DatabaseName -Q "EXEC DB_BACKUP"
#Run stored procedure for Backup Database via Windows Login
sqlcmd -S .\SQLEXPRESS -d DatabaseName -Q "EXEC DB_BACKUP"
#Recovery Database via MSSQL user Login and set Right for Database by running stored procedure 'DB_SETRIGHTS
sqlcmd -U username -P password -S .\SQLEXPRESS -Q "ALTER DATABASE [LICENSESRV] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;RESTORE DATABASE [LICENSESRV] FROM DISK = N'C:\Database\DEFAULT_DATABASES\LICENSESRV.bak' WITH MOVE N'LICENSESRV' TO N'C:\Database\LICENSESRV.mdf', MOVE N'LICENSESRV_log' TO N'C:\Database\LICENSESRV_log.ldf', FILE = 2,RECOVERY, REPLACE, STATS = 10;ALTER DATABASE [LICENSESRV] SET MULTI_USER;"
sqlcmd -U username -P password -S .\SQLEXPRESS -d LICENSESRV -Q "EXEC DB_SETRIGHTS"
DATABASE Templates and System Rules COPY/PASTE/RENAME supported
For thinking, the development of tools and work with them worthy in the 21st century
- The displayed template codes can also be found in the Database
- Make the database model as honest as possible in relation to data and bindings
- The best solution is to have the database check the correctness of the data (in 1 place)
- The database contains a DBHELP help procedure
- Document items are deleted with a linked key
- Procedures for Backup/Restore are prepared in the DB
- The system uses SLQ, EF6, Procedures, Views, Functions
- That's all it takes to discharge
-- The procedure setting the rights for the user to the necessary operations
USE [EASYBUILDER]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE procedure [dbo].[DB_SETRIGHTS]
AS
BEGIN
BEGIN TRY CREATE USER [easybuilder] FOR LOGIN [easybuilder] END TRY BEGIN CATCH END CATCH;
BEGIN TRY ALTER ROLE [db_datareader] ADD MEMBER [easybuilder]; END TRY BEGIN CATCH END CATCH;
BEGIN TRY ALTER ROLE [db_datawriter] ADD MEMBER [easybuilder]; END TRY BEGIN CATCH END CATCH;
BEGIN TRY GRANT EXECUTE TO [easybuilder]; END TRY BEGIN CATCH END CATCH;
END;
GO
/*
Template for creating standardized Tables (from Table -> CREATE TO)
The template is used by way of REPLACE 'TemplateList' after 'NewTableList'
edit fields correctly, set indexes and foreign keys
System ID Columns - AutoIncrement, TimeStamp - InsertTime
Keys: UserId - Binding to the UsersList Table
*/
USE [EASYBUILDER]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[TemplateList](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [varchar](50) NOT NULL,
[Description] [text] NULL,
[Default] [bit] NOT NULL,
[UserId] [int] NOT NULL,
[Active] [bit] NOT NULL,
[TimeStamp] [datetime2](7) NOT NULL,
CONSTRAINT [PK_TemplateList] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY],
CONSTRAINT [IX_TemplateList] UNIQUE NONCLUSTERED
(
[Name] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE [dbo].[TemplateList] ADD CONSTRAINT [DF_TemplateList_Active] DEFAULT ((1)) FOR [Active]
GO
ALTER TABLE [dbo].[TemplateList] ADD CONSTRAINT [DF_TemplateList_TimeStamp] DEFAULT (getdate()) FOR [TimeStamp]
GO
ALTER TABLE [dbo].[TemplateList] WITH CHECK ADD CONSTRAINT [FK_TemplateList_UserList] FOREIGN KEY([UserId])
REFERENCES [dbo].[UserList] ([Id])
GO
ALTER TABLE [dbo].[TemplateList] CHECK CONSTRAINT [FK_TemplateList_UserList]
GO
/*
System procedure for Reports with advanced Filtering
The procedure is part of the Supplied Database
*/
USE [EASYBUILDER]
GO
/****** Object: StoredProcedure [dbo].[ReportDataset] Script Date: 11.03.2023 6:45:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[ReportDataset]
@TableName varchar(50) = null,
@Sequence int = 0
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Intended for use with param-ed reports.
-- To be called from various My-FyiReporting reports
-- - Various reports with their own layouts are called from VB app after setting Queue with usp_ReportQueue_Push()
-- each report then just contains :
-- SET FMTONLY OFF;
-- EXEC usp_ReportQueue_Pop @TableName='SomeTablename', @Sequence='10'
--
DECLARE @ID int;
DECLARE @NAME varchar(50);
DECLARE @SQL nvarchar(MAX);
DECLARE @FILTER nvarchar(MAX);
DECLARE @SEARCH varchar(50);
DECLARE @SEARCHCOLUMNLIST nvarchar(MAX);
DECLARE @SEARCHFILTERIGNORE bit;
DECLARE @RECID varchar(50);
DECLARE @RECIDFILTERIGNORE bit;
DECLARE @SEPARATEDCOLUMNS nvarchar(MAX);
SELECT Top 1
@ID=[Id],
@NAME=[Name],
@SQL=[Sql],
@FILTER=[Filter],
@SEARCH=[Search],
@SEARCHCOLUMNLIST=[SearchColumnList],
@SEARCHFILTERIGNORE=[SearchFilterIgnore],
@RECID=[RecId],
@RECIDFILTERIGNORE=[RecIdFilterIgnore]
FROM ReportQueueList WHERE [TableName]=@TableName AND [Sequence] = @Sequence;
--PRERARE RECID
IF (@RECID = 0 OR (@RECIDFILTERIGNORE = 1 AND @FILTER <> '1=1')) BEGIN
SET @RECID = ''
END ELSE BEGIN
SET @RECID = CONCAT(' AND Id=',@RECID);
END
--PRERARE SEARCH
IF (@SEARCH = '' OR (@SEARCHFILTERIGNORE = 1 AND @FILTER <> '1=1')) BEGIN
SET @SEPARATEDCOLUMNS = '1=1';
END ELSE BEGIN
SELECT @SEPARATEDCOLUMNS = STRING_AGG (CONCAT(value,' LIKE ',char(39),'%',@SEARCH,'%',char(39)), ' OR ') FROM STRING_SPLIT (@SEARCHCOLUMNLIST, ',');
END
SET @SQL = CONCAT(@SQL,' WHERE 1=1 AND (', @FILTER,') AND (', @SEPARATEDCOLUMNS,') ',@RECID);
--PRINT @SQL; --FOR Debuging
EXECUTE sp_executesql @SQL;
END
GO
--SQL Trigger pro Tabulku pro nastaven� jedin� hodnoty u typu 'Default'
USE [EASYBUILDER]
GO
/****** Object: Trigger [dbo].[TR_UnitList] Script Date: 11.03.2023 6:48:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [dbo].[TR_UnitList] ON [dbo].[UnitList]
FOR INSERT, UPDATE, DELETE
AS
DECLARE @Operation VARCHAR(15)
IF EXISTS (SELECT 0 FROM inserted)
BEGIN
DECLARE @setDefault bit;DECLARE @RecId int;
SET NOCOUNT ON;
IF EXISTS (SELECT 0 FROM deleted)
BEGIN --UPDADE
SELECT @setDefault = ins.[Default] from inserted ins;
SELECT @RecId = ins.Id from inserted ins;
IF(@setDefault = 1) BEGIN
UPDATE [dbo].UnitList SET [Default] = 0 WHERE Id <> @RecId;
END
END ELSE
BEGIN -- INSERT
SELECT @setDefault = ins.[Default] from inserted ins;
SELECT @RecId = ins.Id from inserted ins;
IF(@setDefault = 1) BEGIN
UPDATE [dbo].UnitList SET [Default] = 0 WHERE Id <> @RecId;
END
END
END ELSE
BEGIN --DELETE
SELECT @setDefault = ins.[Default] from deleted ins;
SELECT @RecId = ins.Id from deleted ins;
IF(@setDefault = 1) BEGIN
UPDATE [dbo].UnitList SET [Default] = 1
WHERE Id IN(SELECT TOP (1) Id FROM [dbo].UnitList WHERE Id <> @RecId)
;
END
END
GO
ALTER TABLE [dbo].[UnitList] ENABLE TRIGGER [TR_UnitList]
GO
MarkDown Item Template
LOW/NO/FULL code EXTREMELY EASY TO DEVELOP ANY SYSTEM
For thinking, the development of tools and work with them worthy in the 21st century
The development of FRONTEND as an entire IS system as you do not know it - only 3 choices are enough
Logic - everything in the database is a LIST (list of invoices)
-> This may or may not have a DETAIL (list of items) || OR it needs to be just settings, i.e. Detail (program settings, video processing, etc.)
And the result can be a system that SAP or anyone else can only dream of. Almost like tennis, you can publish one table after another, and by evening you have a small system.
DEFINITION OF 3 layer SYSTEM and necessary components
Database - place for DATA Backend Server - A service that securely conveys data to applications Frontend/User Application - A nice application to easily work with data Print support - creation and printing of any reports
START in 1 day you will start your new system in three steps
Development in EASYDATACenter UNIVERS RESTFULL/SOCKET BACKEND SERVER in three user steps
-
Create any database Table. Use the TemplateList Template and just insert your boxes into it. Remember Indexes, Foreign Keys, or look at already existing tables or consult with me. It IS for a few minutes
-
You export the tables as a model using the prepared CMD command to the BACKEND project [ EntityFramework 6 ] command: Scaffold-DbContext "Server=IP;Database=DB;User ID=USER;Password=PW;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir DBModel done - the entire database is defined in the Backend server
-
From existing calls, e.g. UserList, copy and rename the new API call for the new table [GET,POST,PUT,PATCH,DELETE] COPY file -> PASTE file -> Rename to new API for example: /skladList and Build&Run Done, the API Server is WAITING at http://vaseip/skladList for your call and deployment at the client, in the company, anywhere
Development in EASYBuilder Modern WINDOWS XP+ thin application or system in three user steps
-
You copy the table definition from the model created in the BACKEND project to the FRONTEND project COPY Class from BE Model -> PASTE into FE application -> add new APIURL
-
Select the template you want, there are primarily 3 -> rename it, edit the form and connect it to the MAINMENU so you set the WHERE to search, COPY/PASTE boxes, write Translation in the dictionary and copy the connection to the MAINMENU done - the result is a new form with complete user control
-
Build&Run - you check the work one after the other, because typos are part of us, aren't they the full logging option slaps you in detail where the error is or HURRY GOES Done, the Application is WAITING for your work or deployment at the client, in the company, anywhere
evelopment of Press Reports in FYIREPORTING
-
You simply copy the existing DATALIST/DETAIL report and open it in the editor Rename to the new name of your table.
-
You edit your SQL SELECT and Test it, the parameters are already set ID/SEARCH/CONNECT Ideally in MSSQLMS or HEIDYSQL or something and debug it there. Remember everything is just a LIST or Detail. done - and you have the correct data that you just arrange for printing in the form.
-
And you import into the system in the REPORTING list menu, where you set the required link to APIURL/SEARCH/ID Done, the press kit is WAITING for your work or deployment at the client, in the company, anywhere
END OF KNOWLEDGE REQUIRED FOR SYSTEM DEVELOPMENT
Basic listing of almost unlimited skill application
- Prepared with common agendas
- Operation possible on WINDOWS XP, 7, 8, 10, 11
- C# WFP, XAML, Drag&Drop technology
- Complete management of any Agenda (Table) RESTORE/NEW/EDIT/COPY/DELETE
- Automatically generated list data view.
- Easy preparation of the form according to prepared templates and ready made agendas
- more than 100 types of input fields
- Search in content in the data list
- also optimized for TOUCH TERMINALS for MANUFACTURING or BUSINESS, SELF*SERVICE environments
- own printing system with direct printing support
- Almost unlimited development possibilities with the possibility of own involvement
- Support for controlling operating systems
- thousands of already free tools on GitHub
- connection to any third*party services
- support for all known protocols EMAIL, IMAP, HTTPS, FTP, SSH, SMTP, TELNET
- command line support, JavaScript, Telnet
- Option to connect to 3*party systems, IS and OS systems
- Support multimedia, hardware, 3D, devices, RFID readers, QR, BAR, EAN, VIDEO, SOUND, MS OFFICE, PDF, XPS, RTF, etc.
- development of any customized system from 20,000 CZK. System already prepared as a template for any more than just IS SYSTEM
- the possibility of creating any INFORMATION OR CONTROL, MONITORING, REPORTING system, and so on
EASYTOOLS IMPLEMENTED ADD-ONS
- AddOns for touch panels, controls, data types, forms, media, documents, 3D,
- They are completely free to download (including every license pack)
- Open Source community to include more than 1000 tools in the system by community
BUILT SYSTEMS IN 14 DAYS
- LicenseSrv MultiOS license server with listening API GET/POST server / generation of unlimited static/dynamic CODES and management client
- GUIDES Windows XP+ Implementation Production Guides for Production Companies For office / touch panels with unlimited clients and printing options
- ShoPingER Windows XP+ MultiBranch Quotation/Order/Invoicing System with multimedia files supported by unlimited clients and printing capabilities
- LicenceShoper MultiOS License Server PLUS Windows XP+ MultiBranch Billing System [LicenseSrv + ShoPingER]
SOLUTION - WHERE TO FIND COMPLETE INFORMATION
All documentation, license, case study, price list, media, developer information, help, manuals, technology information, installation, images, videos, downloads, etc. can be found here or:
PROJECT IMPLEMENTATION CASE STUDY PROJECTS USING IDEAS
For thinking, the development of tools and work with them worthy in the 21st century
- The first use of this solution was a big change in a manufacturing company For 1000 workers, but it was only four days work for the IT department
- Implementation of production guides as a task for 4 days CZ In Case Studies
- Creation of the Billing System as a replacement for the system with discontinued support.
- Creation of the ShoPingER Invoicing System with a large overlap in 14 days]
- All Windows Applications are available to try online in the Application ShowRoom https://KlikneteZde.Cz
EASYDATACenter - Backend Server Development Plan
- Create Backend Server Generator
- Create Full Customer Support with Project Managements
EASYBuilder - WPF Fronted System Builder Development Plan
- Publish XAML Generator Graphical Tool with Templates Support
- implement Global Context menu for all DataLists with Count of API record request setting, Properties of Datalist, DataRequest,DataList Controller
- Convert WPF System to WebApplication for Windows/Linux with all graphics and possibilities
- Create SYSTEM Generator
- Create Metro4 Full compatible WEB SYSTEM Variant
- Implement FastReport Tool (Replace FYI Reporting)
Recommended Practices
Using References of Variables or Classes - Maximum Saving Memory Performance
- For All processes which is modified by One Person in One Time - Typical System Using
In simple explanation and absolut ideally working with Data - Maximum Clean Code Data flow modify one Variable or Class on Way Over More Sequenced Methods
- From API List Logic You working only With Primary API Dataset and few sets of Dials
- For standard Using its best way For Maximum clean code without Exeption
Is calculating that you Have Full or Extended Dataset for API everytime - Point For Data loading "'SetRecord' Method" - load data from model to Dataset Variable - Some Operations where you can change data values - Point For Recapitulate full Dataset and Save -
- Info Global Server Running: https://Kliknetezde.Cz:5000/
- Generators & Client Support is Preparing: https://Kliknetezde.Cz:5000/DashBoard
- Youtube: https://www.youtube.com/playlist?list=PLmE7gP9LTBimNJQ444ypG8HVce23fa2Hb
- Facebook: https://www.facebook.com/GroupWareSolution
- LinkedIn: https://www.linkedin.com/in/libor-svoboda-7b96014a/
- Eshop: https://GroupWare-Solutions.Eu
- WebPages: https://GroupWare-Solution.Eu
- Online Application for testing: Https://KlikneteZde.Cz
- GitHub Complete Information and Help: https://github.com/liborsvoboda/EASYSYSTEM-EASYSERVER-EN
Complete Development Documentation and Smart Search: https://liborsvoboda.github.io/EASYSYSTEM-EASYSERVER-EN
Company contact for suppliers
Email:
- Libor.Svoboda@GroupWare-Solution.eu
- Libor.Svoboda@KlikneteZde.Cz
Address:
Street: Žlutava 173
City: Žlutava
PostCode: 761 63
State: Czech Republic
Phone: 00420 724 986 873
EASYDATACenter
Contents
- AuthenticateResponse
- BackendServer
- CommunicationController
- CustomFtpUser
- CustomString
- DBResult
- DBResultMessage
- DatabaseContextExtensions
- DgmlSchemaApi
- EASYDATACenterContext
- GLOBALNETAuthenticationApi
- GLOBALNETBackendCheckApi
- HostedFtpServer
- HostedFtpServerMembershipProvider
- IdFilter
- MailRequest
- NameFilter
- SHOPINGERAuthenticationApi
- ServerConfigurationServices
- ConfigureAuthentication(services)
- ConfigureControllers(services)
- ConfigureCookie(services)
- ConfigureDatabaseContext(services)
- ConfigureFTPServer(services)
- ConfigureLogging(services)
- ConfigureScopes(services)
- ConfigureServerWebPages(services)
- ConfigureThirdPartyApi(services)
- ConfigureWebSocketLoggerMonitor(services)
- ServerCoreDbOperations
- ServerCoreFunctions
- CheckDirectory(directory)
- CheckFile(file)
- CopyFile(from,to)
- CreatePath(path)
- FileDetectEncoding(FileName)
- GetSelfSignedCertificate(password)
- GetSelfSignedCertificateFromFile()
- GetSystemErrMessage(exception,msgCount)
- GetUserApiErrMessage(exception,msgCount)
- LoadSettings()
- RandomString(length)
- ReadFile(fileName)
- SendEmail(mailRequest,sendImmediately)
- SendMassEmail(mailRequests)
- UnicodeToUTF8(strFrom)
- ServerCoreHelpers
- ServerCoreLoggerWS
- ServerCorePagesApi
- ServerEmailerApi
- ServerEnablingServices
- ServerLocalDbDials
- ServerModules
- ServerModulesEnabling
- ServerRestartApi
- ServerRootApi
- ServerRuntimeData
- ServerSettings
- ConfigApiTokenTimeoutMin
- ConfigCertificateDomain
- ConfigCertificatePassword
- ConfigJwtLocalKey
- ConfigMaxWebSocketBufferSizeKb
- ConfigServerStartupOnHttps
- ConfigServerStartupPort
- ConfigWebSocketTimeoutMin
- DatabaseConnectionString
- DatabaseInternalCacheTimeoutMin
- DatabaseInternalCachingEnabled
- EmailerSMTPLoginPassword
- EmailerSMTPLoginUsername
- EmailerSMTPPort
- EmailerSMTPServerAddress
- EmailerSMTPSslIsEnabled
- EmailerServiceEmailAddress
- ModuleDataManagerEnabled
- ModuleDbDiagramGeneratorEnabled
- ModuleHealthServiceEnabled
- ModuleHealthServiceRefreshIntervalSec
- ModuleMdDocumentationEnabled
- ModuleSwaggerApiDocEnabled
- ServerEnableWebSocketMonitor
- ServerFtpFreeEngineEnabled
- ServerFtpSecurityEnabled
- ServerMvcWebPagesEngineEnabled
- ServerRazorWebPagesEngineEnabled
- ServerTimeTokenValidationEnabled
- ServerWebBrowserEnabled
- ServerWebSocketEngineEnabled
- SpecialCoreCheckerEmailSenderActive
- SpecialEnableMassEmail
- SpecialServerLanguage
- SpecialServerServiceName
- SpecialUseDbLocalAutoupdatedDials
- ServiceHealthCheck
- SetReportFilter
- Startup
- TemplateList
- WebSocketExtension
- WebSocketLogProvider
- WebSocketLogger
AuthenticateResponse type
Namespace
EASYDATACenter.ServerCoreDefinition
Summary
The authenticate response.
Expiration property
Summary
Gets or Sets the expiration.
Id property
Summary
Gets or Sets the id.
Name property
Summary
Gets or Sets the name.
Role property
Summary
Gets or Sets the role.
Surname property
Summary
Gets or Sets the surname.
Token property
Summary
Gets or Sets the token.
BackendServer type
Namespace
EASYDATACenter
Summary
Server Main Definition Starting Point Of Project
ServerRuntimeData constants
Summary
Startup Server Initialization Server Runtime Data
ServerSettings constants
Summary
Startup Server Initialization Server Setting Data
BuildWebHost(args) method
Summary
Final Preparing Server HostBuilder Definition
Returns
Parameters
Name | Type | Description |
---|---|---|
args | System.String[] |
Main(args) method
Summary
Server Startup Process
Parameters
Name | Type | Description |
---|---|---|
args | System.String[] |
RestartServer() method
Summary
Server Restart Controller
Parameters
This method has no parameters.
ServerStartupDbDataLoading() method
Summary
Server Startup DB Data loading for minimize DB Connect TO Frequency Dials Without Changes Example: LanguageList
Parameters
This method has no parameters.
StartServer() method
Summary
Server Start Controller
Parameters
This method has no parameters.
CommunicationController type
Namespace
EASYDATACenter.ServerCoreDefinition
Summary
Server Communication Extensions for Controlling Data
HttpContext property
Summary
Server Request Accessory controller
CheckAdmin() method
Summary
Check Admin Role
Parameters
This method has no parameters.
CustomFtpUser type
Namespace
EASYDATACenter.ServerCoreServers.HostedFtpServerMembershipProvider
Summary
Custom FTP user implementation
#ctor(name) constructor
Summary
Initializes a new instance of the CustomFtpUser instance.
Parameters
Name | Type | Description |
---|---|---|
name | System.String | The user name |
Name property
Summary
Inherit from parent.
IsInGroup() method
Summary
Inherit from parent.
Parameters
This method has no parameters.
CustomString type
Namespace
EASYDATACenter.ServerCoreDBSettings
Summary
Custom Definition for Returning string List from Stored Procedures Name is ColumnName from Stored Procedure Result
DBResult type
Namespace
EASYDATACenter.ServerCoreDefinition
Summary
Database response types definition
DBResultMessage type
Namespace
EASYDATACenter.ServerCoreDefinition
Summary
The DB result message.
ErrorMessage property
Summary
Gets or Sets the error message.
InsertedId property
Summary
Gets or Sets the inserted id.
RecordCount property
Summary
Gets or Sets the record count.
Status property
Summary
Gets or Sets the status.
DatabaseContextExtensions type
Namespace
EASYDATACenter.ServerCoreDBSettings
Summary
Database Context Extensions for All Types Procedures For Retun Data in procedure can be Simple SELECT * XXX and you Create Same Class for returned DataSet
DgmlSchemaApi type
Namespace
EASYDATACenter.ServerCoreDBSettings
Summary
Database Schema Diagram Controller
See Also
#ctor(context) constructor
Summary
Initializes a new instance of the DgmlSchemaApi class.
Parameters
Name | Type | Description |
---|---|---|
context | EASYDATACenter.ServerCoreDBSettings.EASYDATACenterContext | The context. |
Get() method
Summary
Creates a DGML class diagram of most of the entities in the project wher you go to localhost/dgml See https://github.com/ErikEJ/SqlCeToolbox/wiki/EF-Core-Power-Tools
Returns
a DGML class diagram
Parameters
This method has no parameters.
EASYDATACenterContext type
Namespace
EASYDATACenter.ServerCoreDBSettings
Summary
Server Main Database Settings Here is Included ScaffoldContext which is connected via Visual Studio Tool Here can Be added customization which are not on the server Here is Extended the Context with Insert News Functionality Customizing and implement Settings for Automatic Adopted Database Schema for Unlimited Working and Operations For Specifics API schemas
GetApiUserId(httpContext) method
Summary
Return User From API Request if Exist other null
Returns
Parameters
Name | Type | Description |
---|---|---|
httpContext | Microsoft.AspNetCore.Http.HttpContext |
IsAdmin(httpContext) method
Summary
Return User From API Request if Exist other null
Returns
Parameters
Name | Type | Description |
---|---|---|
httpContext | Microsoft.AspNetCore.Http.HttpContext |
GLOBALNETAuthenticationApi type
Namespace
EASYDATACenter.ControllersExtensions
Authenticate(username,password) method
Summary
API Authenticated and Generate Token
Returns
Parameters
Name | Type | Description |
---|---|---|
username | System.String | |
password | System.String |
LifetimeValidator(notBefore,expires,token,params) method
Summary
API Token LifeTime Validator
Returns
Parameters
Name | Type | Description |
---|---|---|
notBefore | System.Nullable{System.DateTime} | |
expires | System.Nullable{System.DateTime} | |
token | Microsoft.IdentityModel.Tokens.SecurityToken | |
params | Microsoft.IdentityModel.Tokens.TokenValidationParameters |
RefreshUserToken(username,token) method
Summary
API Refresh User Token
Returns
Parameters
Name | Type | Description |
---|---|---|
username | System.String | |
token | EASYDATACenter.ServerCoreDefinition.AuthenticateResponse |
GLOBALNETBackendCheckApi type
Namespace
EASYDATACenter.ControllersExtensions
Summary
Simple Api for Checking Avaiability
See Also
GetBackendCheckApi() method
Summary
Gets the backend check API.
Returns
Parameters
This method has no parameters.
HostedFtpServer type
Namespace
EASYDATACenter.ServerCoreServers
#ctor(ftpServerHost) constructor
Summary
Initializes a new instance of the HostedFtpServer class.
Parameters
Name | Type | Description |
---|---|---|
ftpServerHost | FubarDev.FtpServer.IFtpServerHost | The FTP server host that gets wrapped as a hosted service. |
StartAsync() method
Summary
Inherit from parent.
Parameters
This method has no parameters.
StopAsync() method
Summary
Inherit from parent.
Parameters
This method has no parameters.
HostedFtpServerMembershipProvider type
Namespace
EASYDATACenter.ServerCoreServers
Summary
Custom membership provider for Authentication Validation Actual is Set by UserName and Password in Database
ValidateUser(username,password) method
Summary
FTP User Validation Its for Open FTP and User Validation
Returns
Parameters
Name | Type | Description |
---|---|---|
username | System.String | The username. |
password | System.String | The password. |
ValidateUserAsync(username,password) method
Summary
FTP User Validation Async Its for Open FTP and User Validation
Returns
The result of the validation.
Parameters
Name | Type | Description |
---|---|---|
username | System.String | The user name. |
password | System.String | The password. |
IdFilter type
Namespace
EASYDATACenter.ServerCoreDBSettings
Summary
Custom Class Definition for Filtering by record Id
MailRequest type
Namespace
EASYDATACenter.ServerCoreDefinition
Summary
Class Definition for Server Emailer In List of this claas you can use Mass Emailer
NameFilter type
Namespace
EASYDATACenter.ServerCoreDBSettings
Summary
Custom Class Definition for Filtering by string
SHOPINGERAuthenticationApi type
Namespace
SHOPINGER.Controllers
Authenticate(username,password) method
Summary
API Authenticated and Generate Token
Returns
Parameters
Name | Type | Description |
---|---|---|
username | System.String | |
password | System.String |
LifetimeValidator(notBefore,expires,token,params) method
Summary
API Token LifeTime Validator
Returns
Parameters
Name | Type | Description |
---|---|---|
notBefore | System.Nullable{System.DateTime} | |
expires | System.Nullable{System.DateTime} | |
token | Microsoft.IdentityModel.Tokens.SecurityToken | |
params | Microsoft.IdentityModel.Tokens.TokenValidationParameters |
RefreshUserToken(username,token) method
Summary
API Refresh User Token
Returns
Parameters
Name | Type | Description |
---|---|---|
username | System.String | |
token | EASYDATACenter.ServerCoreDefinition.AuthenticateResponse |
ServerConfigurationServices type
Namespace
EASYDATACenter.ServerCoreConfiguration
Summary
Server Core Configuration Settings of Security, Communications, Technologies, Modules Rules, Rights, Conditions, Formats, Services, Logging, etc..
ConfigureAuthentication(services) method
Summary
Server Core: Configure Server Authentication Support
Parameters
Name | Type | Description |
---|---|---|
services | Microsoft.Extensions.DependencyInjection.IServiceCollection@ |
ConfigureControllers(services) method
Summary
Server Core: Configure Server Controllers options.SuppressImplicitRequiredAttributeForNonNullableReferenceTypes = [ValidateNever] in Class options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore = [JsonIgnore] in Class
Parameters
Name | Type | Description |
---|---|---|
services | Microsoft.Extensions.DependencyInjection.IServiceCollection@ |
ConfigureCookie(services) method
Summary
Server Core: Configure Cookie Politics
Parameters
Name | Type | Description |
---|---|---|
services | Microsoft.Extensions.DependencyInjection.IServiceCollection@ |
ConfigureDatabaseContext(services) method
Summary
Server Core: Configure Custom Services
Parameters
Name | Type | Description |
---|---|---|
services | Microsoft.Extensions.DependencyInjection.IServiceCollection@ |
ConfigureFTPServer(services) method
Summary
Custom Secure FTP Server
Parameters
Name | Type | Description |
---|---|---|
services | Microsoft.Extensions.DependencyInjection.IServiceCollection@ | The services. |
ConfigureLogging(services) method
Summary
Server Core: Configure Server Logging
Parameters
Name | Type | Description |
---|---|---|
services | Microsoft.Extensions.DependencyInjection.IServiceCollection@ |
ConfigureScopes(services) method
Summary
Server Core: Configure Custom Core Services
Parameters
Name | Type | Description |
---|---|---|
services | Microsoft.Extensions.DependencyInjection.IServiceCollection@ |
ConfigureServerWebPages(services) method
Summary
Configures the MVC server pages.
Parameters
Name | Type | Description |
---|---|---|
services | Microsoft.Extensions.DependencyInjection.IServiceCollection@ | The services. |
ConfigureThirdPartyApi(services) method
Summary
Server Core: Configure HTTP Client for work with third party API
Parameters
Name | Type | Description |
---|---|---|
services | Microsoft.Extensions.DependencyInjection.IServiceCollection@ |
ConfigureWebSocketLoggerMonitor(services) method
Summary
Server core: Configures the WebSocket logger monitor. For multi monitoring and for Example Posibilities
Parameters
Name | Type | Description |
---|---|---|
services | Microsoft.Extensions.DependencyInjection.IServiceCollection@ | The services. |
ServerCoreDbOperations type
Namespace
EASYDATACenter.ServerCoreMethods
Summary
All Server Definitions of Database Operation method
DBTranslate(word,language) method
Summary
Default Operation for Call Translation
Returns
Parameters
Name | Type | Description |
---|---|---|
word | System.String | |
language | System.String |
DBTranslateOffline(word,language) method
Summary
Database LanuageList for Off-line Using Definitions
Returns
Parameters
Name | Type | Description |
---|---|---|
word | System.String | |
language | System.String |
DBTranslateOnline(word,language) method
Summary
Database LanuageList for On-line Using Definitions
Returns
Parameters
Name | Type | Description |
---|---|---|
word | System.String | |
language | System.String |
LoadStaticDbDials(onlyThis) method
Summary
Method for All Server Defined Table for Local Using As Off line AutoUpdated Tables
Parameters
Name | Type | Description |
---|---|---|
onlyThis | System.Nullable{EASYDATACenter.ServerCoreDefinition.ServerLocalDbDials} |
WriteVisit(ipAddress,userId,userName) method
Summary
Trigger User Login History
Parameters
Name | Type | Description |
---|---|---|
ipAddress | System.String | |
userId | System.Int32 | |
userName | System.String |
ServerCoreFunctions type
Namespace
EASYDATACenter.ServerCoreMethods
CheckDirectory(directory) method
Summary
Checks the directory.
Returns
Parameters
Name | Type | Description |
---|---|---|
directory | System.String | The directory. |
CheckFile(file) method
Summary
Checks the file.
Returns
Parameters
Name | Type | Description |
---|---|---|
file | System.String | The file. |
CopyFile(from,to) method
Summary
Copies the file.
Returns
Parameters
Name | Type | Description |
---|---|---|
from | System.String | From. |
to | System.String | To. |
CreatePath(path) method
Summary
Creates the path.
Returns
Parameters
Name | Type | Description |
---|---|---|
path | System.String | The path. |
FileDetectEncoding(FileName) method
Summary
Files the detect encoding.
Returns
Parameters
Name | Type | Description |
---|---|---|
FileName | System.String | Name of the file. |
GetSelfSignedCertificate(password) method
Summary
Gets the self signed certificate For API Security HTTPS.
Returns
Parameters
Name | Type | Description |
---|---|---|
password | System.String | The password. |
GetSelfSignedCertificateFromFile() method
Summary
Set Imported Certificate from file on Server for Https TODO
Returns
Parameters
This method has no parameters.
GetSystemErrMessage(exception,msgCount) method
Summary
Mined-ed Error Message For System Save to Database For Simple Solving Problem
Returns
Parameters
Name | Type | Description |
---|---|---|
exception | System.Exception | |
msgCount | System.Int32 |
GetUserApiErrMessage(exception,msgCount) method
Summary
Mined-ed Error Message For Answer in API Error Response with detailed info about problem
Returns
Parameters
Name | Type | Description |
---|---|---|
exception | System.Exception | |
msgCount | System.Int32 |
LoadSettings() method
Summary
Server Local Startup Configuration Its Running as First - Load from Congig.Json After DB connection Before Server Start Is This configuration Replaced By Data from DB And next Server Start. Its for situation - Bad Connection Server Start with Configuration from File
Parameters
This method has no parameters.
RandomString(length) method
Summary
Randoms the string.
Returns
Parameters
Name | Type | Description |
---|---|---|
length | System.Int32 | The length. |
ReadFile(fileName) method
Summary
Reads the file.
Returns
Parameters
Name | Type | Description |
---|---|---|
fileName | System.String | Name of the file. |
SendEmail(mailRequest,sendImmediately) method
Summary
System Mailer sending Emails To service email with detected fail for analyze and corrections on the Way provide better services every time !!! This You can implement everywhere, !!! In Debug mode is written to Console, in Release will be sent email Empty Sender And Recipients set email for Service Recipient
Parameters
Name | Type | Description |
---|---|---|
mailRequest | EASYDATACenter.ServerCoreDefinition.MailRequest | |
sendImmediately | System.Boolean |
SendMassEmail(mailRequests) method
Summary
Sends the mass mail.
Parameters
Name | Type | Description |
---|---|---|
mailRequests | System.Collections.Generic.List{EASYDATACenter.ServerCoreDefinition.MailRequest} | The mail requests. |
UnicodeToUTF8(strFrom) method
Summary
Unicodes to ut f8.
Returns
Parameters
Name | Type | Description |
---|---|---|
strFrom | System.String | The string from. |
ServerCoreHelpers type
Namespace
EASYDATACenter.ServerCoreDefinition
Summary
System Helpers for EASY working Here are extension for Database Model, WebSocket
AddSocketConnectionToCentalList(newWebSocket,socketAPIPath) method
Summary
Add WeSocket Connection To Central List
Parameters
Name | Type | Description |
---|---|---|
newWebSocket | System.Net.WebSockets.WebSocket | The new web socket. |
socketAPIPath | System.String | The socket path. |
BindList``1(dt) method
Summary
Extension For Using Custom Defined Tables from Database Procedures Its used as Database Context Extension as 'CollectionFromSql' Method in Database Context
Returns
Parameters
Name | Type | Description |
---|---|---|
dt | System.Data.DataTable | The dt. |
Generic Types
Name | Description |
---|---|
T |
DisposeSocketConnectionsWithTimeOut() method
Summary
!! Global Method for Simple Using WebSockets WebSocket Disposed - Cleaning monitored Sockets from Central List. Are Closed and Disposed Only with Timeout or with closed Connection
Parameters
This method has no parameters.
ListenClientWebSocketMessages(webSocket,socketAPIPath) method
Summary
Register Listening Client WebSocket Communication Ist for Receive messages from Client
Returns
Parameters
Name | Type | Description |
---|---|---|
webSocket | System.Net.WebSockets.WebSocket | |
socketAPIPath | System.String |
SendMessageAndUpdateWebSocketsInSpecificPath(socketAPIPath,message) method
Summary
Sends the message and update web sockets in specific path.
Parameters
Name | Type | Description |
---|---|---|
socketAPIPath | System.String | The socket API path. |
message | System.String | The message. |
SendMessageToClientSocket(webSocket,message) method
Summary
Sends the message to client WebSocket. This Is Used by "SendMessageAndUpdateWebSocketsInSpecificPath" For Update Informaions on All Connections in Same WebSocket Path Its Solution FOR Teminals, Group Communications, etc.
Parameters
Name | Type | Description |
---|---|---|
webSocket | System.Net.WebSockets.WebSocket | The web socket. |
message | System.String | The message. |
ServerCoreLoggerWS type
Namespace
EASYDATACenter.ServerCoreDBSettings
Summary
WEBSocket Template still not used Ideal for Terminal Panels, chat, controlling services
Echo(context,webSocket) method
Summary
WebSocket Communication Set Examle
Returns
Parameters
Name | Type | Description |
---|---|---|
context | Microsoft.AspNetCore.Http.HttpContext | The context. |
webSocket | System.Net.WebSockets.WebSocket | The web socket. |
Get() method
Summary
WebSocket Registration Connection API Example
Returns
Parameters
This method has no parameters.
GetBySocketAPIPath(id) method
Summary
Universal WebSocket API Definitions for Connection Paths and Registering To Server Central List ow WebSocket Connections
Returns
Parameters
Name | Type | Description |
---|---|---|
id | System.String |
ServerCorePagesApi type
Namespace
EASYDATACenter.ServerCoreDBSettings
Summary
Server Core Web Pages Controller
See Also
ServerEmailerApi type
Namespace
EASYDATACenter.ServerCoreDBSettings
Summary
Server Email sender Api for logged Communication
See Also
ServerEnablingServices type
Namespace
EASYDATACenter.ServerCoreConfiguration
Summary
Server Core Enabling Settings of Security, API Communications, Technologies, Modules,Rules, Rights, Rules, Rights, Conditions, Cors, Cookies, Formats, Services, Logging, etc..
EnableCors() method
Summary
Server Cors Configuration
Parameters
This method has no parameters.
EnableEndpoints() method
Summary
Server Endpoints Configuration
Parameters
This method has no parameters.
EnableLogging(app,loggerFactory) method
Summary
Enable Server Logging in Debug Mode
Returns
Parameters
Name | Type | Description |
---|---|---|
app | Microsoft.AspNetCore.Builder.IApplicationBuilder@ | |
loggerFactory | Microsoft.Extensions.Logging.ILoggerFactory@ |
EnableWebSocket(app) method
Summary
Server WebSocket Configuration
Returns
Parameters
Name | Type | Description |
---|---|---|
app | Microsoft.AspNetCore.Builder.IApplicationBuilder@ |
ServerLocalDbDials type
Namespace
EASYDATACenter.ServerCoreDefinition
Summary
Special Functions: Definition of Selected tables for Optimal Using to Data nature Its saves traffic, increases availability and for Example implemented Language is in Develop Auto Fill Table when is First Using Its can be used for more Dials
ServerModules type
Namespace
EASYDATACenter.ServerCoreConfiguration
Summary
Configure Server Ad-dons and Modules
ConfigureCoreAdmin(services) method
Summary
Server Module: Automatic DB Data Manager for work with data directly services.AddCoreAdmin("Admin"); is Token RoleName
Parameters
Name | Type | Description |
---|---|---|
services | Microsoft.Extensions.DependencyInjection.IServiceCollection@ |
ConfigureDocumentation(services) method
Summary
Server Module: Generted Developer Documentation for Defvelopers Documentation contain full Server Structure for extremelly simple developing
Parameters
Name | Type | Description |
---|---|---|
services | Microsoft.Extensions.DependencyInjection.IServiceCollection@ |
ConfigureHealthCheck(services) method
Summary
Server Module: Automatic DB Data Manager for work with data directly
Parameters
Name | Type | Description |
---|---|---|
services | Microsoft.Extensions.DependencyInjection.IServiceCollection@ |
ConfigureSwagger(services) method
Summary
Server Module: Swagger Api Doc Generator And Online Tester Configuration
Parameters
Name | Type | Description |
---|---|---|
services | Microsoft.Extensions.DependencyInjection.IServiceCollection@ |
ServerModulesEnabling type
Namespace
EASYDATACenter.ServerCoreConfiguration
Summary
Enable Configured Server Ad-dons and Modules
EnableCoreAdmin() method
Summary
Server Module: Enable Swagger Api Doc Generator And Online Tester
Parameters
This method has no parameters.
EnableDocumentation() method
Summary
Server Module: Enable Generated Developer Documentation
Parameters
This method has no parameters.
EnableSwagger() method
Summary
Server Module: Enable Swagger Api Doc Generator And Online Tester
Parameters
This method has no parameters.
ServerRestartApi type
Namespace
EASYDATACenter.ServerCoreDBSettings
Summary
Server Restart Api for Remote Control
See Also
ServerRootApi type
Namespace
EASYDATACenter.ServerCoreDBSettings
Summary
Server Root Controller
See Also
Index() method
Summary
Server Root "/" Redirection to "server" Folder
Returns
Parameters
This method has no parameters.
ServerRuntimeData type
Namespace
EASYDATACenter.ServerCoreDefinition
Summary
The server runtime data.
CentralWebSocketList constants
Summary
Central WebSocket List for Easy one place Using
LocalDBTableList constants
Summary
The local db table list.
ServerArgs constants
Summary
Server Starup Args
ServerCancelToken constants
Summary
Cancellation Token for Server Remote Control
ServerCoreStatus constants
Summary
Server Core Status
ServerFTPProvider constants
Summary
Server Securited FTP Provider for Remote Control
ServerRestartRequest constants
Summary
Server Restart Request Indicator
ConfigFile property
Summary
Gets or Sets the configure file.
DataPath property
Summary
Gets or Sets the data path.
DebugMode property
Summary
Gets or Sets the debug mode.
Setting_folder property
Summary
Gets or Sets the setting_folder.
Startup_path property
Summary
Gets or Sets the startup_path.
ServerSettings type
Namespace
EASYDATACenter.ServerCoreDefinition
Summary
The server settings.
ConfigApiTokenTimeoutMin property
Summary
Bearer Token Timeout Setting in Minutes. Connection must be Refreshed in Interval After Timeout connection Must Login Again. It is as needed. You Can Change Key for close All connections Immediately. Timeout is good for Webpages Recomended: 15
ConfigCertificateDomain property
Summary
Its Domain for include to Automatic Generated Certificate For Server running on HTTPS. Domain is for Your validation Certificate Domain. Can be Changed for commercial. Recommended: 127.0.0.1
ConfigCertificatePassword property
Summary
Password will be inserted to Server Generated Certificate for HTTPS. Recommended: empty = Maximal Security Randomly generated 20 chars string
ConfigJwtLocalKey property
Summary
Special Functions:Server AutoGenerated encryption Key For Securing Communication On Each Server Restart All Tokens not will be valid and the Login Reconnect is Requested. Its AntiHacker Security Rule Recommended: empty = Maximal Security Randomly generated 40 chars string
ConfigMaxWebSocketBufferSizeKb property
Summary
Maximum socket message size for control Traffic Recomended: 10
ConfigServerStartupOnHttps property
Summary
Setting for Server URL Services. Logically can run only one Http or Https Server has more Security Setting Politics. Recommended: true
ConfigServerStartupPort property
Summary
Set Server Startup Port on Http/HttpS/WebSocket and for All Engines, Modules, API Controler and WebPages Recommended: 5000
ConfigWebSocketTimeoutMin property
Summary
WebSocket Timeout Connection Settings in Minutes. After timeout when not detected any communication socket is closed Set according to your need Recommended: 2
DatabaseConnectionString property
Summary
Server Database Connection string for Full Service of Database Migration/Api/Check/Unlimited Develop !!!Warning: Check this connection for Read/Write/Exec is enabled
DatabaseInternalCacheTimeoutMin property
Summary
Time in Minutes for Database Valid Cache Data and Refreshing Duplicit Functionality with Database Server Recommended: 30
DatabaseInternalCachingEnabled property
Summary
Enable Disable Entity Framework Internal Cache I recommend turning it off : from Logic, Duplicit Functionality with Database Server in complex process can generate problems Recommended: false
EmailerSMTPLoginPassword property
Summary
SMTP Password for Login to External Mail Server Its Necessary for Correct running Server Internal Core Monitoring
EmailerSMTPLoginUsername property
Summary
SMTP UserName for Login to External Mail Server Its Necessary for Correct running Server Internal Core Monitoring
EmailerSMTPPort property
Summary
SMTP Port for Login to External Mail Server Its Necessary for Correct running Server Internal Core Monitoring
EmailerSMTPServerAddress property
Summary
SMTP Server Address for Login to External Mail Server Its Necessary for Correct running Server Internal Core Monitoring
EmailerSMTPSslIsEnabled property
Summary
EmailerSMTPSslIsEnabled SSl Email Protocol for Login to External Mail Server Its Necessary for Correct running Server Internal Core Monitoring
EmailerServiceEmailAddress property
Summary
Service email, for info about not available service from HeatchCheck Can be used for next Develop, automatic checking problems, missing data and all other Its Necessary for Correct running Server Internal Core Monitoring
ModuleDataManagerEnabled property
Summary
Special Function: AutoGenerated Database DataManager for working with Data Running only in Debug mode for simple Develop, can be modified. All changes are Reflected after restart server
ModuleDbDiagramGeneratorEnabled property
Summary
Enable Automatic Database Diagram for Simple show Database structure with All bingings
ModuleHealthServiceEnabled property
Summary
Special Function: More than 200 Server Statuses Can be monitored by HeathCheckService, Over Net can Control Other Company Services Also as Central Control Point With Email Service. For Example: Server/Memory/All DB Types/IP/HDD/Port/Api/NET/Cloud/Environment Must be run for Metrics AddOn https://learn.microsoft.com/en-us/dotnet/architecture/microservices/implement-resilient-applications/monitor-app-health
ModuleHealthServiceRefreshIntervalSec property
Summary
Special Function: More than 200 Server Statuses Can be monitored by HeathCheckService, Over Net can Control Other Company Services Also as Central Control Point With Email Service. For Example: Server/Memory/All DB Types/IP/HDD/Port/Api/NET/Cloud/Environment Must be run for Metrics AddOn !!! run in Release mode for Good Reading of Logs without HeathChecks Cycling info https://github.com/Xabaril/AspNetCore.Diagnostics.HealthChecks https://testfully.io/blog/api-health-check-monitoring/
ModuleMdDocumentationEnabled property
Summary
Enable Server Structure Documentation for Developers Using RootPath, - Block File Browsing Is Good for Server with Documentation only Or Use for Show WebPage and Copy "Only HTML"
ModuleSwaggerApiDocEnabled property
Summary
Special Function: Server Automatically Generate Full Documentation of API structure AND Database Model. Plus Included API Interface for Online Testing All API Methods with Authentication Its Automatic Solution for Third Party cooperation. All changes are Reflected after restart server
ServerEnableWebSocketMonitor property
Summary
Server support online multi watch Logging Its Run on Websocket and the Log Messages are sent for All opened connections for wathing on Path: ServerCoreMonitor You can enable Mass Email Api
ServerFtpFreeEngineEnabled property
Summary
Enable FTP File Server oppened for every connection with full rights
ServerFtpSecurityEnabled property
Summary
Enable FTP Security For access to FTP must be logged
ServerMvcWebPagesEngineEnabled property
Summary
Enable Mvc WebPages support engine with Correct Configuration
ServerRazorWebPagesEngineEnabled property
Summary
Enable Razor WebPages support engine with Correct Configuration for Automaping form folder 'Pages'
ServerTimeTokenValidationEnabled property
Summary
Enable Disable Bearer Token Timeout Validation Token can be valid EveryTime to using: Example for machine connection Or is Control last activity
ServerWebBrowserEnabled property
Summary
Enable WebPages File Browsing from server Url on Server
ServerWebSocketEngineEnabled property
Summary
Enable WebSocket Engine with Default Example Api Controller
SpecialCoreCheckerEmailSenderActive property
Summary
Activation / Deactivation of Email Sender For Server Core Fails Checker All Catch Write to SendEmail, In Debug mode is Written in console in Release mode is Sended email (All incorrect server statuses are monitored) Can be writen to Database - !!! Warning for infinite Cycling (DB shutdown example) Recommended: true
SpecialEnableMassEmail property
Summary
Server support mass emailing as Service You can enable Mass Email Api
SpecialServerLanguage property
Summary
Server Language for Translating Server internal statuses Recommended: cz or en - other languages are not implemented
SpecialServerServiceName property
Summary
Server Service Name automatic figured in All IS/OS/Engines info Recommended: EASYDATACenter
SpecialUseDbLocalAutoupdatedDials property
Summary
Special Function: Using Selected Tables with AutoRefresh On change as Local DataSets, For Optimize Traffic. For Example LanguageList - Static table with often reading Recommended: true - functionality must be implemented in Server Code
ServiceHealthCheck type
Namespace
EASYDATACenter.ServerCoreDefinition
Microsoft#Extensions#Diagnostics#HealthChecks#IHealthCheck#CheckHealthAsync(context,cancellationToken) method
Summary
checks any service whether it ends normally or with an exception
Returns
Parameters
Name | Type | Description |
---|---|---|
context | Microsoft.Extensions.Diagnostics.HealthChecks.HealthCheckContext | |
cancellationToken | System.Threading.CancellationToken |
SetReportFilter type
Namespace
EASYDATACenter.ServerCoreDBSettings
Summary
Database Model Extension Definitions Its API Filter, Extended Classes, Translation, etc
Startup type
Namespace
EASYDATACenter
Summary
Server Startup Definitions
Configure(app,loggerFactory) method
Summary
Server Core: Main Enabling of Server Services, Technologies, Modules, etc..
Parameters
Name | Type | Description |
---|---|---|
app | Microsoft.AspNetCore.Builder.IApplicationBuilder | |
loggerFactory | Microsoft.Extensions.Logging.ILoggerFactory |
ConfigureServices(services) method
Summary
Server Core: Main Configure of Server Services, Technologies, Modules, etc..
Returns
void.
Parameters
Name | Type | Description |
---|---|---|
services | Microsoft.Extensions.DependencyInjection.IServiceCollection |
TemplateList type
Namespace
EASYDATACenter.DBModel
Summary
Template System Class, This Class has all DBLogic auto Fields and user join for simple creating system Only Rename for your new table
WebSocketExtension type
Namespace
EASYDATACenter.ServerCoreDefinition
Summary
WebSocket Extension Definition For Simple Central Control All Connection By Connection Path and Timeout
WebSocketLogProvider type
Namespace
EASYDATACenter.ServerCoreDefinition.ServerCoreHelpers
Summary
!!! Implemented Server Core WebSocket System LogProvider Stream This Is Special Serice For Remote Monitoring On More Devices in OneTime
See Also
WebSocketLogger type
Namespace
EASYDATACenter.ServerCoreDefinition.ServerCoreHelpers
Summary
Server Core WebSocket System Logger Interface
See Also
Log``1(logLevel,eventId,state,exception,formatter) method
Summary
Used to log the entry.
Parameters
Name | Type | Description |
---|---|---|
logLevel | Microsoft.Extensions.Logging.LogLevel | An instance of LogLevel. |
eventId | Microsoft.Extensions.Logging.EventId | The event's ID. An instance of EventId. |
state | ``0 | The event's state. |
exception | System.Exception | The event's exception. An instance of Exception |
formatter | System.Func{``0,System.Exception,System.String} | A delegate that formats |
Generic Types
Name | Description |
---|---|
TState |
EASYBuilder Description SYSTEM CORE
For thinking, the development of tools and work with them worthy in the 21st century
A full detailed description of the system core for easy development of any system with full support for automated functions, methods to make any of your applications work properly
this information is divided into information for
- rapid development
- complete information about the basic function of the system
Projects Documentation
Used automatic tools
- Generating MD from XML Documentation from code
Generating MD from XML Documentation from code
<DocumentationFile>bin\Debug\Documentation\GlobalNET.xml</DocumentationFile>
<DocumentationMarkdown>$(MSBuildProjectDirectory)\GlobalNET.md</DocumentationMarkdown>
DECLARED SYSTEM CONDITIONS FOR DEVELOP NEW AGENDA
Basic Info what you minimal need for start Developing of new Agendas
-
APP Initialization [INFO]
- Starting APP with Welcome Page by JSON Setting
- Initialize Technologies
- Including Core Styles and themes
- Set Global Properties
- Set Global DataLists (Parameters, Setting, Tilts, System Classes, UserData, Error Handlers, API Security, etc)
- Set CrashReporting join
-
Welcome Page [INFO] - Video Start Page with Mottos
-
NAMESPACES [CONDITIONS] Pages - Each Agenda must be in Namespace Pages Classes - All Agenda Classes are in Namespace Classes for developer Help
-
DataClases [CONDITIONS] - DataList - Table Models Description (for Agendas/Pages)
- Create By TemplateClass.cs file your new Class/DataModel Definition in your Agenda Folder
- you can create Extended Table Model for more field in basic DataListModel - (example: ReceiptList, OutgoingOrderList, etc.)
- Done
-
ApiCommunications [CONDITIONS] - In the Class is in ENUM all API address list
- All API Cals which has 'List' word on End is automatically supported for insert Report
- Insert your New API address to this enum
- Done
-
Languages [CONDITIONS] - Each used 'Word' must exist in all Language Files Before Build
- insert all new translations [check duplicity]to all dictionaries for your new Agenda field, menuName
- Done
-
PageTemplatesCodeHelp [INFO] - is central List of special methods in the system (Load/SaveFile, load, lang, number validation, etc..)
-
Templates [INFO] - For simple create new ANY agengas by COPY/PASTE for simple modify INPUT fields only
- for new Agenda Create new folder in Agendas and copy TemplateClass and correct TemplatePage to this folder
- rename these files and change class model to your new class[COPY/PASTE from backend]
- replace 'TemplateClass' for your new in XAML and CS file of your new Page/Agenda
- now the form field change only and modify and check fields, translations, apiCalls in cs code for your new
- Done
-
MainMenu [CONDITIONS] - in MainWindow must be new Agenga inserted to the application menu
- Insert new menu Item -im Xaml copy existing menu item and rename to your new Agenda
- Translate menu item - In CS code insert the translate menu item in initialize Method
- Set Menu Reaction - in MainWindows Method 'Cb_verticalMenuSelected' copy existing menuitem part code in the 'CASE' and change XAML menu name and name of called 'Page' Here on end case for List Report set the '/YourTableNameList' in Report line or for non report Table set 'cb_printReports.ItemsSource = null;'
- Done
-
Reports [INFO] - In system menu Reports you can upload Report file for your new Agenda
NOW Build and YOUR new Agenda is IN App Menu and After click is opened THIS IS ALL INFORMATIONS FOR SUCCESS DEVELOPING
SHORT SYSTEM DESCRIPTION
System is Fully dynamic Controlled For All menuInserted Pages/Agendas
(Insert new Page/Agenda to menu + Translate for implement to full system only)
All method are implemented with global logic of using for central Core of this System and his Modification
For working with any standard system agenda (Typically IS System - SAP Example)
INSERT/UPDATE/DELETE/SELECT/FILTER/PRINT/SHOW/MEDIA 3D/VIDEO/DOCS/EAN CODES/1000 FINISHED TOOLS on GITHUB/UNLIMITED ETC
FOR WINDOWS MODERN SYSTEMS/TERMINALS/ETC ON START (WEB FORMAT IS SUPPORTED BY TECHNOLOGY WILL BE DONE IN YEAR FUTURE
MAINWINDOW Central SYSTEM Control Manual
This is Core central point (MainWindow.xaml/cs) for full system Here are Defined All join for Central Control for All parts of System
- MainWindow is Absolute Primary Control window off all actions in the application
- Here are All global definitions, Messages, mainWindows and all Shared Controls for Pages
- Here are Application Menu events, Update, Reports, New/Edit/.. for DataList, Filters, TabPages
- MainWindow Has Defined 3Menu Types for More Systems: - Buttons in Header LINE -> For simple touch Terminal with few button for Agendas - SelectBox -> For TouchPanels with more MenuItems, but Touch functionality is Needed - TreeView -> For Robust Systems with a lot of MenuItems/Agendas
- in Xaml are declared all shared input/Controls/ETC for Application
App Update, Tools, Theme, Menus, Report Ctrl, Pages Controls, Graphics, ProgressRing, TabPages Types,
CORE SYSTEM METHODS - OLDER,Was modernized**
- Initialize - Initiate Theme/Color/App menu/Load Config/Show Login
Here is Translate Menu Items**
-
Timer10sec_Elapsed - Auto Backend Timer cycling by Config [default 5sec]
- check if Backend is Accesible - Server status Control
- load Server Setting
- Load Application Parameters for NULL user
-
ShowLoginDialog - Login, Load User Params, Token, Enable Menu Items
-
ShowMessage - Shared Message for call from Pages For show in MainWindow
-
SetServiceStop - connect/disconnect menuItems Pages on Backend Service Status
DATALIST GLOBAL METHODS - OLDER,Was modernized**
- cb_FilterDropDownClosed - Reload Datalist with filtering
- Mi_filter_Click - Generate and show advanced filter (for SQL conditioning):
- Cb_PrintReportsSelected - save filter to DB, open selected Report
- Cb_verticalMenuSelected - Open selected Page/Agenda and set all controls,input,filter,reports status !!NEW AGENDA MUST BE DEFINED ONLY HERE.
INFO METHOD LIST SYSTEM CORE NOT NEEDED CHANGES - OLDER,Was modernized
-
Btn_about_click - Show About Info
-
WinMain_KeyDown - Global Control for Keyboard press ,implemented F1/ALT+Q
-
Btn_LaunchHelp_Click - Open index.chm Windows Help File
-
ApplicationClosing - Save theme, close App
-
AppRestart - Restart for Configuration Reload
-
StringToFilter - upload seted filter in page for actual view
-
RemoveFilterItem_Click - Remove advanced filter Item
-
FilterField_SelectionChanged - support method for dynamic filter generation
-
MainGrid_IsDraggingChanged - For Draging TabPages - ACTUALLY DISABLED
-
Menu_action_Click - Automatic Datalist Controls Action Handler
-
AddNewTab - Automatic TabPages Controller
-
TabPanelOnSelectionChange - Automatic Controller for TabPages Changing
-
ChangeMenuView - Specific for Version with more menu types. Show/Hide used menu type
System Core Code Rules
/// <summary>
/// Library with standarztized Definitions and Methods For Develop Any System
/// </summary>
public class PageTemplatesCodeHelp
{
#region MyReStandartized Definitions - OLDER,Was modernized
/// <summary>
/// Define Collection For Combobox Example
/// </summary>
public ObservableCollection<Language> Languages = new ObservableCollection<Language>() {
new Language() { Name = "System", Value = "system" },
new Language() { Name = "Czech", Value = "cs-CZ" },
};
#endregion
/// <summary>
/// Special Method for input limitation as number only
/// Its only for help
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void NumberValidationTextBox(object sender, TextCompositionEventArgs e)
{
Regex regex = new Regex("[^0-9]+");
e.Handled = regex.IsMatch(e.Text);
}
/// <summary>
/// Global Application Defined API Communication Types for Centalised using
/// </summary>
private async void DefinedAllAplicationApiComunicationTypes()
{
///ApiUrls variable is List With All API cals
///DBResultMessage is Class for Global using of All Api with all information of Request result
DBResultMessage dBResult;
/// Serialize Dataset for API sending INSERT/UPDATE
TemplateClassList myRecord = new TemplateClassList();
string json = JsonConvert.SerializeObject(myRecord);
StringContent httpContent = new StringContent(json, Encoding.UTF8, "application/json");
///API for load/Select Data
await ApiCommunication.GetApiRequest<List<TemplateClassList>>(ApiUrls.TemplateClassList, null, App.UserData.Authentification.Token);
///API for Data Insert
dBResult = await ApiCommunication.PutApiRequest(ApiUrls.TemplateClassList, httpContent, null, App.UserData.Authentification.Token);
///API for Data Update
dBResult = await ApiCommunication.PostApiRequest(ApiUrls.TemplateClassList, httpContent, null, App.UserData.Authentification.Token);
///API for Delete Data
dBResult = await ApiCommunication.DeleteApiRequest(ApiUrls.TemplateClassList, "someId", App.UserData.Authentification.Token);
}
/// <summary>
/// Global Application avaiable Methods for All Pages for Centalised using
/// </summary>
private async void DefinedGlobalMainWindowMethodsForAllPages()
{
///Aplication Restart
MainWindow.AppRestart();
///Progresring for Wait indication
MainWindow.ProgressRing = Visibility.Hidden;
///Show Info message
await MainWindow.ShowMessage(false, "Resources[\"dictionaryWord\"].ToString()");
///Show Confirm Dialog
MessageDialogResult result = await MainWindow.ShowMessage(false, "Resources[\"dictionaryWord\"].ToString()" + " ", true);
if (result == MessageDialogResult.Affirmative) { }
///Method For Sett Language of Each Page
Language defaultLanguage = JsonConvert.DeserializeObject<Language>(App.Setting.DefaultLanguage);
///_ = MediaFunctions.SetLanguageDictionary(Resources, defaultLanguage.Value);
}
/// <summary>
/// Global Specific Methods For Customized Working - OLDER,Was modernized
/// </summary>
private async void UsedSpecificMethodsForCustomizedWorking()
{
#region Other Help Global Definitions and Methods
///Load Parameter From Table Parameters text is Parameter name
var res = ServerCoreFunctions.ParameterCheck("someParameterName").Correct ? int.Parse(ServerCoreFunctions.ParameterCheck("someParameterName").Value) : 50;
///Set ComboBox Item By myValue (from selected record or another)
int index = 0; ComboBox cb_defaultLanguage = new ComboBox();
cb_defaultLanguage.Items.SourceCollection.Cast<Language>().ToList().ForEach(language => { if (language.Name == "myvalue") { cb_defaultLanguage.SelectedIndex = index; } index++; });
///Open File Dialog
OpenFileDialog dlg = new OpenFileDialog
{ DefaultExt = ".exe", Filter = "Exe files |*.exe", Title = "Resources[\"fileOpenDescription\"].ToString()" };
if (dlg.ShowDialog() == true) { }
#endregion
}
#region Other Custom Communications
/// <summary>
/// Customized GET Call
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private async void BtnApiTest_Click(object sender, RoutedEventArgs e)
{
using (HttpClient httpClient = new HttpClient())
{
try
{
string json = await httpClient.GetStringAsync("someUrl");
await MainWindow.ShowMessage(false, json);
}
catch (Exception ex) { await MainWindow.ShowMessage(true, "Exception Error : " + ex.StackTrace); }
}
}
#endregion
PAGE/AGENDA STANDARTIZED DEFINITION FOR CREATE NEW ANY SYSTEM STANDARD AGENGA
AGENDA (Page) IS BUILDED FROM STANDARTIZED METHODS FOR FULL CONTROL OF EACH STANDARD Agenda Page
Each FULL agenga has these Methods for work with SYSTEM CORE
AGENDA CONTAIN - DaTaModel Class File (Copied from Backend Server or DB Structure ScaffoldContext)
PreDefined XAML FORM (contain both LIST/FORM definitions)
List od Global System Methods for Control Full Agenda in System Core
PAGE - AGENDA METHOD LIST
Method InitializePage - used by MenuClick - Load Dictionaries, Parameters, Translate Form Fields And Run 'LoadDataList' for Datalist/Dials, others, Set Record = False
Method LoadDataList - used by REFRESH Button - Call API for again load datasets in Page (DB Select)
Method NewRecord - used by NEW Button - Open detail form for New Record
Method EditRecord(false) - used by EDIT Button - Open detail form for edit Record
Method EditRecord(true) - used by COPY Button - Open detail form for create copied Record (with ID=0)
Method DeleteRecord - used by DELETE Button - Call delete API for selected record in datalist (DB Delete)
Method Filter - SEARCH Textbox - SIMPLE SEARCH in all defined columns in PAGE code - Method Filter
Method DgListView_Translate - Translate Datalist column - translate column names by Xaml Language Dictionaries
Method DgListView_MouseDoubleClick - Select and Open selected Record Detail
Method DgListView_SelectionChanged - Select Record For control buttons enabling, show Report with join on Id
Method BtnSave_Click - Form to DataClassModel, send API (DB Insert/DB Update), Return to DataList View
Method BtnCancel_Click - Cancel Form and Return to DataListView
Method SetRecord - Load Selected Record (edit,copy) to Detail Form
In Combined Forms with SubTable The methods Are copied as SubMethods (Translate,Data,Form Fields)
Standard SUBSELECT ComboBox/ListBox/ListView/Custom For Dial Join Record Selection (Addresses, Items, Etc.)
Standard Method List for Full Mouse/Keyboard Control
- SelectGotFocus - Call SubDataList Controller for Selection one Record for Selection 'UpdateCustomerSearchResults'
- UpdateCustomerSearchResults - Control full SubData List, select, show Info message not exist, Select Founded Record
- Customer_KeyDown - Keyboard Up/Down Event for Data listing in ListView Form Item/Input
- SelectCustomer_Enter - Selection by Enter
- MouseSelectCustomer_Click - Selection by Mouse
- SetXxxxxx - Set Joined Fields From this Selection
Standard Methods For SubDocItems INSERT/DELETE (Invoice Example)
- dgSubListView_SelectionChanged - Select Item form List For Delete Control
- BtnItemInsert_Click - Insert new Item to SubDataList from SubFormInputFields
- BtnItemDelete_Click - Delete selected SubItem from DataList
- ClearItemsFields - Clear SubItemForm
- SetSubListsNonActiveOnNewItem - Load DataSources For SubItem Selections types (Dials -> ItemList, CurrencyList)
Optional
- HideTiltButtons - Hide/Show Button for show subDocument
- TiltToInvoice_Click - Open subDocument
Standard Tilt Documents (Next Joined Generating SubDoc Offer -> Order, etc)
Standard Method List for full generation process
- ImportInvoice - Import Existed Document (example in CreditNoteList)
PREPARED TEMPLATES FOR FAST DEVELOPING - Older was Modernized
SYSTEM TEMPLATES FOR MAKE ANY TOUCH/IS/ETC. SYSTEM
System HAS 4 Standard Data Form Types in Main Structure (System Templates)
Implemented Forms for build Robust Any System
TemplateListViewPage - show DATALIST ONLY, used in Login history list
TemplateListPage - show DATALIST WITH DETAIL FORM, Standard Dials,
used in Parameters, User, Roles, etc.
TemplateListPageWithSubViewPage - show DATALIST WITH DETAIL FORM AND SUB TABLE DATAVIEW
used in Currency agenda
TemplateListPageWithSubPage - show DATALIST WITH DETAIL FORM AND SUB TABLE DATAVIEW + FORM
used in invoice, order for work 2Tables HEADER/Items in One time
System HAS 3 Form Types in Main Structure (All are in Templates)
DATALIST ONLY - TemplateListViewPage
Show Datalist only (Login history for example, views, etc..)
DATALIST WITH DETAIL FORM - TemplateListPage
Show Datalist and Detail Form for PAge Table ( Dials, Simple agendas with one primary table, etc...)
SETTING - TemplateSettingsPage
Customized Forms with unlimited posibilities,(Setting Form, special Form, special Page, Video, 3D, etc)
In System are implemented multimedia templates (MultiMedia Templates)
Implemented Special MultiMedia Forms
TemplateDocumentViewPage - XPS,PDF,TXT,and more format direct viewer/Print
TemplateSTLPage - Show 3D STL project
TemplateVideoPage - Play MP4 Video player
Supported next implementation
GITHUB WPF TOOLS FOR SYSTEM IS / OS, HW can possible to implement for FREE
API communication - 4 TYPES is enough
For thinking, the development of tools and work with them worthy in the 21st century
It is so. INSERT/UPDATE/DETETE/SELECT are the mentioned types which are enough ensure the communication of any system. And top it all off with a single list of APIaddress calls and communication is resolved set up for this as a standardized automatic part of the kernel.
System kernel code dump, Where you just always add the address and don't care about anything else
System APIAddresList - all calls in one place
/// <summary>
/// ALL standard View AND Form API Call must end with "List" - These will automatic added for reports Definitions
/// </summary>
public enum ApiUrls
{
GlobalNETAttachmentList,
GlobalNETAddressList,
Authentication,
BackendCheck,
GlobalNETBranchList,
GlobalNETCalendar,
GlobalNETCreditNoteList,
GlobalNETCreditNoteItemList,
GlobalNETCurrencyList,
GlobalNETDocumentAdviceList,
GlobalNETExchangeRateList,
GlobalNETIncomingInvoiceList,
GlobalNETIncomingInvoiceItemList,
GlobalNETIncomingOrderList,
GlobalNETIncomingOrderItemList,
GlobalNETTemplateClassList
}
4 API Calls - SYSTEM Core module
class ApiCommunication
{
public static async Task<Authentification> Authentification(ApiUrls apiUrl, string userName = null, string password = null)
{
using (HttpClient httpClient = new HttpClient())
{
try
{
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes(userName + ":" + password)));
StringContent test = new StringContent("", Encoding.UTF8, "application/json");
HttpResponseMessage json = await httpClient.PostAsync(App.Setting.ApiAddress + "/" + apiUrl, test);
return JsonConvert.DeserializeObject<Authentification>(await json.Content.ReadAsStringAsync());
}
catch { return new Authentification() { Token = null, Expiration = null }; }
}
}
public static async Task<T> GetApiRequest<T>(ApiUrls apiUrl, string key = null, string token = null) where T : new()
{
using (HttpClient httpClient = new HttpClient())
{
try {
if (token != null) { httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); }
string json = await httpClient.GetStringAsync(App.Setting.ApiAddress + "/" + apiUrl + (!string.IsNullOrWhiteSpace(key) ? "/" + key : ""));
return JsonConvert.DeserializeObject<T>(json);
} catch { return new T(); }
}
}
public static async Task<DBResultMessage> PostApiRequest(ApiUrls apiUrl, HttpContent body, string key = null, string token = null)
{
using (HttpClient httpClient = new HttpClient())
{
try
{
if (token != null) { httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); }
HttpResponseMessage json = await httpClient.PostAsync(App.Setting.ApiAddress + "/" + apiUrl + (!string.IsNullOrWhiteSpace(key) ? "/" + key : ""), body);
DBResultMessage result = JsonConvert.DeserializeObject<DBResultMessage>(await json.Content.ReadAsStringAsync());
if (result.ErrorMessage == null) { result.ErrorMessage = await json.Content.ReadAsStringAsync(); }
return result;
}
catch (Exception ex)
{ return new DBResultMessage() { RecordCount = 0, ErrorMessage = ex.Message + Environment.NewLine + ex.StackTrace, Status = "error" }; }
}
}
public static async Task<DBResultMessage> PutApiRequest(ApiUrls apiUrl, HttpContent body, string key = null, string token = null)
{
using (HttpClient httpClient = new HttpClient())
{
try
{
if (token != null) { httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); }
HttpResponseMessage json = await httpClient.PutAsync(App.Setting.ApiAddress + "/" + apiUrl + (!string.IsNullOrWhiteSpace(key) ? "/" + key : ""), body);
DBResultMessage result = JsonConvert.DeserializeObject<DBResultMessage>(await json.Content.ReadAsStringAsync());
if (result.ErrorMessage == null) { result.ErrorMessage = await json.Content.ReadAsStringAsync(); }
return result;
}
catch (Exception ex)
{ return new DBResultMessage() { RecordCount = 0, ErrorMessage = ex.Message + Environment.NewLine + ex.StackTrace, Status = "error" }; }
}
}
public static async Task<DBResultMessage> DeleteApiRequest(ApiUrls apiUrl, string key = null, string token = null)
{
using (HttpClient httpClient = new HttpClient())
{
try
{
if (token != null) { httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); }
HttpResponseMessage json = await httpClient.DeleteAsync(App.Setting.ApiAddress + "/" + apiUrl + (!string.IsNullOrWhiteSpace(key) ? "/" + key : ""));
return JsonConvert.DeserializeObject<DBResultMessage>(await json.Content.ReadAsStringAsync());
}
catch (Exception ex)
{ return new DBResultMessage() { RecordCount = 0, ErrorMessage = ex.Message + Environment.NewLine + ex.StackTrace, Status = "error" }; }
}
}
public static async Task<bool> CheckApiConnection()
{
using (HttpClient httpClient = new HttpClient())
{
try
{
string json = await httpClient.GetStringAsync(App.Setting.ApiAddress + "/" + ApiUrls.BackendCheck);
return true;
}
catch
{ return false; }
}
}
}
EASYBuilder Premade Templates
For thinking, the development of tools and work with them worthy in the 21st century
Pre-prepared templates are used to easily create a new agenda. Even if there are only a few of them, they are fully sufficient to create complex systems of more or less all types, not only IS Systems - for which 4 templates are enough, but also Special Systems, Media Systems, Management / BI, and many others. The system is nothing more than a list of very frequently repeated forms.
And you simply click on the graphic builder, which is part of Visual Studio. And that's the entire development of the system. Here is a list of prepared templates in the system for more than n IS SYSTEM
SystemTemplates - Media Templates --Older was modernized
-
TemplateListViewPage - Displays only the DataList. For example access history, Detailed form is not even needed
-
TemplateListPage - displays the DataList and the Detailed form both for displaying the list and editing the record. That is, the most common template where you just edit the fields according to the table.
-
TemplateListPageWithSubViewPage - displays the DataList and Detail form + additional DataList sub items. For example, the current exchange rate for currency. So it is a system type of Template
-
TemplateListPageWithSubPage - displays a DataList and a Detail Form + another DataList with a Detail Item Form. For example Invoice - Header + Items. And with these templates you can write, for example, the entire SAP.
MultiMediaTemplates - Media Templates --Older was modernized
TemplateVideoPage - Video player
TemplateSTLPage - STL representation of a 3D object
TemplateDocumentViewPage - Web browser that displays most file types
PDF, Docx, TXT, PNG, JPG, etc.
CustomTemplates - Custom templates - Just slanted forms after all
TemplateSettingsPage - sample template for creating a unique form These types, which you can click on in Visual Studio in the case of necessity, will reveal all unique types of forms when he wants anything atypical
Shared Agendas - Real Creation
In the SharedAgendas folder you will find approx. 50 Agendas - all forms already created forms for immediate use or as an inspiration for the creation of new agendas.
Code Examples
https://learn.microsoft.com/cs-cz/samples/browse/?terms=xaml
Literature
https://www.c-sharpcorner.com/article/what-is-power-bi-report-builder-and-how-to-design-paginated-report-using-power-b/ https://github.com/majorsilence/My-FyiReporting/releases https://mahapps.com/api/MahApps.Metro.Controls/ https://helix-toolkit.github.io/ https://www.c-sharpcorner.com/UploadFile/mahesh/viewing-word-documents-in-wpf/ https://techcohere.com/post/Create-PDF-File-From-WPF-Window-using-iTextsharp-1001 https://www.c-sharpcorner.com/UploadFile/mahesh/viewing-word-documents-in-wpf/ https://github.com/xceedsoftware/wpftoolkit https://www.tutorialspoint.com/wpf/wpf_3d_graphics.htm
Number Formats (For Parameters) https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings
Manual Builder https://github.com/EWSoftware/SHFB/releases https://github.com/psoares33/FyiReporting-Docs/wiki
all method in MainWindow from Agenda Page Example
((SchedulerPage)((MainWindowViewModel)DataContext).TabContents[0].Content).LoadScheduledTask();
Convert Project to ASPNETCORE project
https://learn.microsoft.com/cs-cz/dotnet/core/porting/upgrade-assistant-overview?WT.mc_id=dotnet-35129-website
dotnet tool install -g --add-source "https://api.nuget.org/v3/index.json" --ignore-failed-sources upgrade-assistant
upgrade-assistant upgrade převod na web
Connection string Example
Server=192.168.1.35,1433;Database=db;User ID=user;Password=pw;
Server=SQLSRV;DataBase=db;Trusted_Connection=True;Connect Timeout=30;
Print example from CMD with parameters
"RdlReader.exe" "C:\WorkListPrint.rdl" -p "&Search=%%&Id=0"
Report has dataset and you can insert field over right mouse/ insert / object /
Expressions PageBreak ={PersonalNumber} - new page by each personalNumber
functions in C# not MSSQL
using ="Filter:" + Replace({?Search}, "%", "") - Search is param, replace %%
for run report mut be set Default values for parameters =Fields!OperationNumber.Value + " " + {Note} =Sum({Amount})
Call from System Thread
volani funkce ze stejneho vlakna
this.Invoke(() => { if (ServiceStatus != Resources["running"].ToString()) reloadScheduledTasks(); });
Set Collor Icon programmaticaly
Application.Current.MainWindow.Icon = IconMaker.Icon(Colors.White);
Remove opened Page programatically
MetroWindow wnd = (MetroWindow)App.Current.MainWindow;
TabablzControl tc = (TabablzControl)wnd.FindName("InitialTabablzControl");
TabContent itc0 = (TabContent)tc.SelectedItem;
tc.RemoveFromSource(itc0);
rogram Help - Will be implemented
Adding Help
#region Help Added
private DependencyObject CurrentHelpDO { get; set; }
private Popup CurrentHelpPopup { get; set; }
private bool HelpActive { get; set; }
private MouseEventHandler _helpHandler = null;
static bool isHelpMode = false;
#endregion
private void Window_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
if (isHelpMode && 1 == 0)
{
e.Handled = true;
isHelpMode = false;
Mouse.OverrideCursor = null;
if (Help.MyHelpCommand.CanExecute(null, this))
{
Help.MyHelpCommand.Execute(null, this);
}
}
}
private void winMain_MouseMove(object sender, MouseEventArgs e)
{
HitTestResult hitTestResult = VisualTreeHelper.HitTest(((Visual)sender), e.GetPosition(this));
if (hitTestResult.VisualHit != null && CurrentHelpDO != hitTestResult.VisualHit)
{
DependencyObject checkHelpDO = hitTestResult.VisualHit;
string helpText = AutomationProperties.GetHelpText(checkHelpDO);
while (String.IsNullOrEmpty(helpText) && checkHelpDO != null && checkHelpDO != mainWindow)
{
checkHelpDO = VisualTreeHelper.GetParent(checkHelpDO);
helpText = AutomationProperties.GetHelpText(checkHelpDO);
}
if (String.IsNullOrEmpty(helpText) && CurrentHelpPopup != null)
{
CurrentHelpPopup.IsOpen = false;
CurrentHelpDO = null;
}
else if (!String.IsNullOrEmpty(helpText) && CurrentHelpDO != checkHelpDO)
{
CurrentHelpDO = checkHelpDO;
if (CurrentHelpPopup != null)
{
CurrentHelpPopup.IsOpen = false;
}
CurrentHelpPopup = new Popup()
{
PopupAnimation = PopupAnimation.Scroll,
PlacementTarget = (UIElement)hitTestResult.VisualHit,
IsOpen = true,
Child = new Border()
{
CornerRadius = new CornerRadius(10),
BorderBrush = new SolidColorBrush(Colors.Goldenrod),
BorderThickness = new Thickness(2),
Background = new SolidColorBrush(Colors.LightYellow),
Child = new TextBlock()
{
Margin = new Thickness(10),
Text = helpText.Replace("\\r\\n", "\r\n"),
FontSize = 14,
FontWeight = FontWeights.Normal
}
}
};
CurrentHelpPopup.IsOpen = true;
}
}
}
private void btnHelp_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
if (isHelpMode)
{
isHelpMode = false;
Mouse.OverrideCursor = null;
}
}
private void btn_LaunchHelp_Click(object sender, RoutedEventArgs e)
{
System.Windows.Forms.Help.ShowHelp(null, "SIMTERM.chm");
}
private void ToggleHelp()
{
CurrentHelpDO = null;
if (CurrentHelpPopup != null)
{
CurrentHelpPopup.IsOpen = false;
}
HelpActive = !HelpActive;
if (_helpHandler == null)
{
_helpHandler = new MouseEventHandler(winMain_MouseMove);
}
if (HelpActive)
{
mainWindow.MouseMove += _helpHandler;
}
else
{
mainWindow.MouseMove -= _helpHandler;
}
ToggleHelp(mainWindow);
}
private void ToggleHelp(DependencyObject dependObj)
{
for (int x = 0; x < VisualTreeHelper.GetChildrenCount(dependObj); x++)
{
DependencyObject child = VisualTreeHelper.GetChild(dependObj, x);
ToggleHelp(child);
}
if (dependObj is UIElement)
{
UIElement element = (UIElement)dependObj;
if (HelpActive)
{
string helpText = AutomationProperties.GetHelpText(element);
if (!String.IsNullOrEmpty(helpText))
{
}
}
}
}
Developing Page Code Help
/// <summary>
/// Library with standardize Definitions and Methods For Develop Any System
/// </summary>
public class PageTemplatesCodeHelp {
#region MyReStandartized Definitions
/// <summary>
/// Define Collection For ComboBox Example
/// </summary>
public ObservableCollection<Language> Languages = new ObservableCollection<Language>() {
new Language() { Name = "System", Value = "system" },
new Language() { Name = "Czech", Value = "cs-CZ" },
};
#endregion MyReStandartized Definitions
/// <summary>
/// Special Method for input limitation as number only
/// Its only for help
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void NumberValidationTextBox(object sender, TextCompositionEventArgs e) {
Regex regex = new Regex("[^0-9]+");
e.Handled = regex.IsMatch(e.Text);
}
/// <summary>
/// Example of Load System Parameters for Page
/// Add Call this method Before LoadDatalist and Tilt Documents
/// LoadParameters() will be later translating Detail Fields
/// </summary>
private async void LoadParameters() {
string itemVatPriceFormat = await DataOperations.ParameterCheck("ItemVatPriceFormat");
string documentVatPriceFormat = await DataOperations.ParameterCheck("DocumentVatPriceFormat");
int intValue = int.Parse(await DataOperations.ParameterCheck("DocumentRowHeight"));
}
/// <summary>
/// Global Application Defined API Communication Types for Centralized using
/// </summary>
private async void DefinedAllAplicationApiComunicationTypes() {
///ApiUrls variable is List With All API calls
///DBResultMessage is Class for Global using of All API with all information of Request result
DBResultMessage dBResult;
/// Serialize Dataset for API sending INSERT/UPDATE
TemplateClassList myRecord = new TemplateClassList();
string json = JsonConvert.SerializeObject(myRecord);
StringContent httpContent = new StringContent(json, Encoding.UTF8, "application/json");
///API for load/Select Data
await ApiCommunication.GetApiRequest<List<TemplateClassList>>(ApiUrls.GlobalNETTemplateClassList, null, App.UserData.Authentification.Token);
///API for Data Insert
dBResult = await ApiCommunication.PutApiRequest(ApiUrls.GlobalNETTemplateClassList, httpContent, null, App.UserData.Authentification.Token);
///API for Data Update
dBResult = await ApiCommunication.PostApiRequest(ApiUrls.GlobalNETTemplateClassList, httpContent, null, App.UserData.Authentification.Token);
///API for Delete Data
dBResult = await ApiCommunication.DeleteApiRequest(ApiUrls.GlobalNETTemplateClassList, "someId", App.UserData.Authentification.Token);
}
Developing Global MainWindow Code Help
// <summary>
/// Global Application available Methods for All Pages for Centralized using
/// </summary>
private async void DefinedGlobalMainWindowMethodsForAllPages() {
///Application Restart
App.AppRestart();
///ProgresRing for Wait indication
MainWindow.ProgressRing = Visibility.Hidden;
///Show Info message
await MainWindow.ShowMessage(false, "Resources[\"dictionaryWord\"].ToString()");
///Show Confirm Dialog
MessageDialogResult result = await MainWindow.ShowMessage(false, "Resources[\"dictionaryWord\"].ToString()" + " ", true);
if (result == MessageDialogResult.Affirmative) { }
///Method For Sett Language of Each Page
Language defaultLanguage = JsonConvert.DeserializeObject<Language>(App.Setting.DefaultLanguage);
///_ = SystemOperations.SetLanguageDictionary(Resources, defaultLanguage.Value);
}
/// <summary>
/// Global Specific Methods For Customized Working
/// </summary>
private async void UsedSpecificMethodsForCustomizedWorking() {
#region Other Help Global Definitions and Methods
///Load Parameter From Table Parameters text is Parameter name
var res = int.Parse(await DataOperations.ParameterCheck("someParameterName"));
///Set ComboBox Item By myValue (from selected record or another)
int index = 0; ComboBox cb_defaultLanguage = new ComboBox();
cb_defaultLanguage.Items.SourceCollection.Cast<Language>().ToList().ForEach(language => { if (language.Name == "myvalue") { cb_defaultLanguage.SelectedIndex = index; } index++; });
///Open File Dialog
OpenFileDialog dlg = new OpenFileDialog
{ DefaultExt = ".exe", Filter = "Exe files |*.exe", Title = "Resources[\"fileOpenDescription\"].ToString()" };
if (dlg.ShowDialog() == true) { }
#endregion Other Help Global Definitions and Methods
}
Customizing Page Code Help
/// <summary>
/// Customized GET Call
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private async void BtnApiTest_Click(object sender, RoutedEventArgs e) {
using (HttpClient httpClient = new HttpClient())
{
try
{
string json = await httpClient.GetStringAsync("someUrl");
await MainWindow.ShowMessage(false, json);
}
catch (Exception ex) { await MainWindow.ShowMessage(true, "Exception Error : " + ex.StackTrace); }
}
}
Classlist Type Examples - Recommended
/// <summary>
/// Typical Table schema for API which you copy from Generated Model in API Server
/// On API server is Automatically generated by Scaffold command
/// Class is Same as API result
/// Example Load Data: listVariable = await ApiCommunication.GetApiRequest<List<TemplateClassList>>(ApiUrls.GlobalNETTemplateClassList, null, App.UserData.Authentification.Token);
/// </summary>
public partial class ExampleClassList {
public int Id { get; set; } = 0;
public string SystemName { get; set; } = null;
public string Description { get; set; } = null;
public int UserId { get; set; }
public bool Active { get; set; }
public DateTime TimeStamp { get; set; }
}
/// <summary>
/// Extend API Class with Custom Column in One dataset
/// !!!SYSTEM CONDITION: Name must contain "Extended"
/// !!!FOR NULL SET IN THE JOING FIELDS BEFORE SEND OVER API
///
/// Move the fields with SAME NAME as Joined Table on API to ExtendedClass
/// Will be set to 'null' Before API send
///
/// Using: for Translation, Info about joined table, etc
/// It must be cleaned by operation "NullSetInExtensionFields" before Database operation
/// for disable join control on API for valid independent table
/// Other is valid join key for other Tables
/// </summary>
public partial class ExtendedExampleClassList : TemplateClassList {
public string Currency { get; set; } // its join to table Currency
public string TotalCurrency { get; set; }
public ExtendedExampleClassList() { }
public ExtendedExampleClassList(ItemList ch) {
foreach (var prop in ch.GetType().GetProperties())
{ this.GetType().GetProperty(prop.Name).SetValue(this, prop.GetValue(ch, null), null); }
}
}
/// <summary>
/// WARNING: If you Add the field with Same Name as joined table in Database Model
/// you must set this field as 'null' before send Insert / Update
/// in HttpContent must Be as 'null' value other is taken as Data Join by API Server
///
/// SIMPLE USING
/// API Class is extended on root level by custom fields
/// Example Load Data and Fill custom Fields:
///
/// listVariable = await ApiCommunication.GetApiRequest<List<TemplateClassList>>(ApiUrls.GlobalNETTemplateClassList, null, App.UserData.Authentification.Token);
/// listVariable.ForEach(async rec => { rec.Translation = await DBOperations.DBTranslation(rec.SystemName); });
/// </summary>
public partial class ExampleClassListWithLocalTranslation {
public int Id { get; set; } = 0;
public string SystemName { get; set; } = null;
public string Description { get; set; } = null;
public int UserId { get; set; }
public bool Active { get; set; }
public DateTime TimeStamp { get; set; }
public string Translation { get; set; } = null;
}
MarkDown Template Help
SYSTEM PROJECT STRUCTURE - DECRIPTION
-
APP Initialization - Starting APP with Welcome Page by JSON Setting
- Initialize Technologies
- Including Core Styles and themes
- Set Global Properties
- Set Global DataLists (Parameters, Setting, Tilts, System Classes, UserData, Erroer Handlers, API Security, etc)
- Set CrashReporting join -
Welcome Page - Video Start Page with Mottos
-
MainWindow - Central System Core Point where are All Global Shared methods for system core running
-
LOGICAL HARD DEFINED SYSTEM STRUCTURE Namespaces
- Pages - ALL Agendas must BE in PAGES ALL 3 TYPED FORMS (Defined in Templates)
- Classes - EACH AGENDA has 2 FILES - CLASS WITH DB/BACKEND/CUSTOMIZED Class AND XAML FORM -
API Communications
- Class File with API Definitions, All API URLs for communication with Backend, Response format, System Auth
- GET,POST,PUT,DELETE universal API Cals for full system (All agendas) - Communication control
- other Logics rules Are implemented in DB Structure - Foreign keys, Views, Procedures -
GLOBAL Styles - Styles for standardized show vies, form, menu, other or custom controls, inputs, list, menu, etc.
-
GLOBAL Classes - Universal System Classes for correct work SYSTEM CORE
-Parameters, Tilt Types, universal Doc Class, Server Set class, etc... -
GLOBAL Functions
-MediaFunctions - Special methods for file formats work, mailSend, images functions, Project Version, System Dictionaries
-FileFunctions - COPY,SAVE,DELETE,CHECK Files/Directories, etc.
-ServerCoreFunctions - System Parameters, Advanced Filter Generator, etc. -
Languages Folder for XAML Language Files
-
Manual Folder - WIN Developer Auto generated Help Files with All Core Reviews (F1 - Only for Developers) Generated by External OXYGEN
-
TAB&SYSTEM - Methods and Definitions for CORE Graphics of SYSTEM Builder Tab control, definitions, models, crashReport, Delegates, Theme/Color Control, System Updater, Help etc.
-
Data Folder - External image files, json, and all others external files, examples for system
-
AGENDAS - Folder With All Agendas (Each Form=Agenda has unique defined format -> Class + Xaml Template Form or you can create custom any form)
EACH Created FORM is AGENDA - EXAMPLE Calendar - One Table, unique (SETTING TYPE PAGE) Form All agendas you can create from SYSTEM Templates which existed in system. Its prepared for build Robust System, Multimedia system, Terminals, Etc.
MarkDown Item Template
EASYTOOLS
- Addons for Touch panels, Controls,Data types, Forms, Media, Docs, 3D,
- Are Fully Free for Download (Each Licence Package included)
- Oppened OpenSource Community for including more than 1000 tools to system by community
- There are tools for EASYSYSTEMBuilder only
IMPLEMENTED TOOLS
Calendar - Calendar Control for Calendar Agenda - Unique Agenda and System Page
CrashReporter - Autoatic Email sender to Developer if some fail in system core detected
SqlConnectionDialog - Connection Dialog for connect to MSSQL server for run SQL commands
TouchKeyboard - TouchKeyboard for implementing as TouchPanels/Terminal/Etc.
VNCServer - Implemented Remote connection support
ImageLibrary - Functionalities for Editing Images
POSIBILITIES
- You can implement more than 1000 WPF tools and functionalities on Github For Free
- Simple Github Implementations by WPF Library
- None limitations for implementing any IS/OS/Other tools
- BackWard Complatibility to WINDOWS XP+
MarkDown Item Template
FYI Reporting - FreeWare Full Report Designer and Viewer
for Printing All document Types with Images, Barcodes, EAN, QR, Graphs, SubReport, etc.
IMPORTANT INFO FOR REPORT DEVELOP
- Reports are for developping setted Default Parameters.
- If the report is called from the system - All parameters are replaced by system sended params
- Each Report can has more Datasets (subreports not need for Header/Items Views)
- More Examples are Defined
- Full Developing of new reports are supported
- Included commandline Tool, Report Viewer, Report Designer
JOINING WITH EASYSYSTEMBuilder - Calling Reports
Directly - System sending these parameters directly to opening Report
connectionString [Connect] - For Report connection to Database
table name [TableName] - primary tablename from datalist
record ID [Id] - Selected record Id
Simple Search Parameter [Search] - For simple search in Datalist Fields
Over DB - System save all filter informations to table 'ReportQueueList' and
to all record with has selected Datalist Table.
After Saving to DB is Called open Report. Its for Reports with using DB
procedure 'ReportDataset' for Full DB defined Data Selections
Direct parameters not need for this using
EASYSYSTEMBuilder SYSTEM Conditions for Reports
-
Connection String is Defined in setting for All reports in Application (Client)
-
All APIUrls with 'List' word on end are automaticaly added for insert Report for this Table
-
All System reports are Saved in Database - table 'ReportList'
-
For Print is downloaded and open with direct params everyTime
-
'ReportQueueList' Definitions is second method for Print report,
which the definition is full in DB (can be defined multi Datasets) -
Report can combine both method for Load Datasets (Over stored procedure or direct selection with params)
-
Print Report Action you can set for Record Selection Only
-
Unlimited Print Reports you Define for Primary Table - DataList
-
System has these joins: Datalist, Rec ID, simple Search, Advanced Search
-
Each join [param] can be separated for run alone or combined with others
-
Full SQL and SQLexec are supported
Print example from CMD with parameters
"RdlReader.exe" "C:\WorkListPrint.rdl" -p "&Search=%%&Id=0"
Report has dataset and you can insert field over right mouse/ insert / object /
Expressions PageBreak ={PersonalNumber} - new page by each personalNumber
functions in C# not MSSQL
using ="Filter:" + Replace({?Search}, "%", "") - Search is param, replace %%
for run report mut be set Default values for parameters =Fields!OperationNumber.Value + " " + {Note} =Sum({Amount})
Print SQL Examples
SET FMTONLY OFF;
SELECT
w.[Id],FORMAT([Date],'MM.yyyy') as Month,
FORMAT([Date],'dd.MM.yyyy') as Date,
CONCAT(FORMAT([Date],'MMyy'),w.[PersonalNumber]) as ListBreak,
w.[PersonalNumber],o.[PartNumber],w.[WorkPlace],w.[OperationNumber],
[WorkTime],[Pcs],[Amount],[WorkPower] ,[Name],[SurName],o.[Note]
FROM [WorkList] w,[PersonList] p,[OperationList] o
WHERE w.PersonalNumber = p.PersonalNumber AND w.WorkPlace = o.WorkPlace
AND o.OperationNumber = w.OperationNumber AND
(@Id = 0 AND ((LEN(@Search) > 2 AND w.Id LIKE @Search) OR LEN(@Search) = 2))
OR w.Id = @Id
ORDER BY w.[Date] ASC, w.PersonalNumber, w.[OperationNumber]
--Select with simple search and Id selection
SELECT Id, UserName, TerminalName, Description, Timestamp
FROM LoginHistoryList
WHERE 1=1 AND (
( @Search <> '%%' AND id LIKE @Search )
OR ( @Search = '%%' AND @Id = 0 )
OR ( @Search = '%%' AND @Id <> 0 AND Id = @Id )
)
--Selection with direct params
SELECT Id, UserName, TerminalName, Description, Timestamp
FROM LoginHistoryList
WHERE 1=1 AND (
( @Search <> '%%' AND id LIKE @Search )
OR ( @Search = '%%' AND @Id = 0 )
OR ( @Search = '%%' AND @Id <> 0 AND Id = @Id )
)
--Select with advanced Filter
SET FMTONLY OFF;
DECLARE @whereClause NVARCHAR(MAX) = @Filter ;
DECLARE @sql NVARCHAR(MAX) = 'SELECT Id, UserName, TerminalName, Description, Timestamp FROM LoginHistoryList WHERE @whereClause';
SELECT @sql = REPLACE(@sql, '@whereClause', @whereClause);
EXEC sp_executesql @sql;
--Selection with ReportQueueList definitions
SET FMTONLY OFF;
EXEC ReportDataset @TableName='tableName', @Sequence='SeqNr'
--Selection with Formating and Dials Fields
SET FMTONLY OFF;
SELECT
w.[Id],FORMAT([Date],'MM.yyyy') as Month,
FORMAT([Date],'dd.MM.yyyy') as Date,
CONCAT(FORMAT([Date],'MMyy'),w.[PersonalNumber]) as ListBreak,
w.[PersonalNumber],o.[PartNumber],w.[WorkPlace],w.[OperationNumber],
[WorkTime],[Pcs],[Amount],[WorkPower] ,[Name],[SurName],o.[Note]
FROM [WorkList] w,[PersonList] p,[OperationList] o
WHERE w.PersonalNumber = p.PersonalNumber AND w.WorkPlace = o.WorkPlace
AND o.OperationNumber = w.OperationNumber AND
(@Id = 0 AND ((LEN(@Search) > 2 AND w.Id LIKE @Search) OR LEN(@Search) = 2))
OR w.Id = @Id
ORDER BY w.[Date] ASC, w.PersonalNumber, w.[OperationNumber]
SYSTEM PRINTING
-
On Print Request
- Updated all filters in table 'ReportQueueList' on records for selected table
- download from DB and open report with sended these params for Direct SQL support Params
- Search = Searched Value
- Id = Record Id from table
- Filter= Setted Filter command in sql syntax after WHERE clause
- TableName - selected table Name
- Connect - connection string from client settings
- Run report. Done
-
Report Types:
- Alone Report file with ful own SQL command and use params for selection. Examples You can see in edited reports, Instalation folder and Help
- Sql defined in ReportQueueList Table, in report is only command: SET FMTONLY OFF;EXEC ReportDataset @TableName='tablename', @Sequence='10'
-
Parameters are sending Every Time, For Debuging you can use MSSQL SQL Profiller
-
In database is Saved Stored Procedure: ReportDataset for folded filter, ReportQueueList table is managing
-
All report are shared for selected database
-
Each print is report again downloaded from database for new run
-
Each report can be exported in Reports menu
-
All reports are saved in instalation folder as Examples
-
All reports has same parameters
Dynamic Filtering:
-
For managed SQL command can be 'Search' and 'Id' params ignored = Each Filter working independently Setted Priority: 1] Combined Filter 2] Id 3] Searched Value (searched columns are rardcoded in 'Filter' method on each Datalist) in Report must be hardcoded again
-
in stored Procedure: 'ReportDataset' if Both Searfh and Id Ignored - Filter is aply alone else all cobndition are joined with 'OR' clause for Each Filter setting: 'Id' and 'Search'
Its Prepared for future MultiRows Selection
-
More Info Via Help File FYI Reporting Documentations on Github
-
In one Report you can setted more DATALists = DB SELECTS (Invoice Example - Header/Item) and you can set any field over Report Parameter for using in all Report Positions
MarkDown Item Template
GlobalNET
Contents
- AccessRoleListPage
- AddressListPage
- ApiUrls
- App
- AppVersion
- AttachmentListPage
- Authentification
- BranchListPage
- CalendarPage
- ClientSettingsPage
- Config
- CrashReporterSettings
- CreditNoteListPage
- CurrencyListPage
- DBOperations
- DBResultMessage
- DataOperations
- DataViewSupport
- DocumentAdviceListPage
- DocumentItemList
- DocumentTypeListPage
- DocumentationPage
- ExchangeRateListPage
- FileOperations
- GeneratedInternalTypeHelper
- GlobalRuntimeMonitor
- GraphsPage
- GroupListPage
- HardwareOperations
- IconMaker
- IgnoredExceptionListPage
- ImageGalleryListPage
- IncomingInvoiceListPage
- IncomingOrderListPage
- ItemListPage
- Language
- LanguageListPage
- LicenseActivationFailListPage
- LicenseAlgorithmListPage
- LoginHistoryListPage
- MainWindow
- #ctor()
- _hackyIsFirstWindow
- DataGridSelected
- DataGridSelectedIdListIndicator
- DgRefresh
- DownloadShow
- DownloadStatus
- OperationRunning
- ProgressRing
- RunReleaseMode
- ServerLoggerSource
- ServiceRunning
- ServiceStatus
- ShowSystemLogger
- SystemLogger
- UserLogged
- VncRunning
- AddOrRemoveTab(headerName,tabPage,tagText)
- BtnKeyboardClick(sender,e)
- BtnShowLoggerClick(sender,e)
- Btn_LaunchHelp_Click(sender,e)
- Btn_LaunchMetroTheme_Click(sender,e)
- Btn_about_click(sender,e)
- CbFilterDropDownClosed(sender,e)
- CbPrintReportsSelected(sender,e)
- FilterField_SelectionChanged(sender,e)
- InitializeComponent()
- MainGrid_IsDraggingChanged(sender,e)
- MainWindow_Closing(sender,e)
- MainWindow_KeyDown(sender,e)
- MainWindow_Loaded(sender,e)
- MainWindow_MouseLeave()
- MenuSortOnStart()
- Menu_action_Click(sender,e)
- Mi_filter_Click(sender,e)
- Mi_logout_Click(sender,e)
- RemoveFilterItem_Click(sender,e)
- SetServiceStop()
- ShowLoginDialog()
- ShowMessage(error,message,confirm)
- StringToFilter(filterBox,advancedFilter)
- SystemLoggerSourceChanged_Click(sender,e)
- SystemTimerController(sender,e)
- TabPanelOnSelectionChange(sender,e)
- TiltOpenForm(translateHeader)
- MathTypeOperations
- MaturityListPage
- MediaOperations
- MottoListPage
- MyCustomLifeSpanHandler
- MyCustomLifeSpanHandler
- OnBeforePopup(chromiumWebBrowser,browser,frame,targetUrl,targetFrameName,targetDisposition,userGesture,popupFeatures,windowInfo,browserSettings,noJavascriptAccess,newBrowser)
- OnBeforePopup(chromiumWebBrowser,browser,frame,targetUrl,targetFrameName,targetDisposition,userGesture,popupFeatures,windowInfo,browserSettings,noJavascriptAccess,newBrowser)
- NotesListPage
- OfferListPage
- OperationListPage
- OutgoingInvoiceListPage
- OutgoingOrderListPage
- ParameterListPage
- PartListPage
- PaymentMethodListPage
- PaymentStatusListPage
- PersonListPage
- ReceiptListPage
- ReportListPage
- ReportQueueListPage
- ReportSelection
- Resources
- ScreenSaverPage
- ServerSettingKeys
- ServerSettingPage
- SupportPage
- SvgIconListPage
- SystemFailListPage
- SystemLoggerHelper
- SystemLoggerWebSocketClass
- SystemOperations
- FilterToString(filterBox)
- GetExceptionMessages(exception,msgCount)
- GetExceptionMessagesAll(exception,msgCount)
- IncreaseFileVersionBuild()
- RandomString(length)
- RemoveAppNamespaceFromString(stringForRemoveNamespace)
- SendMailWithMailTo(address,subject,body,attach)
- SendMailWithServerSetting(message)
- SetLanguageDictionary(Resources,languageDefault)
- StartExternalProccess(fullFilePath,startupPath,arguments)
- SystemStatuses
- SystemWindowDataModel
- TemplateClassListPage
- TemplateClassListViewPage
- TemplateClassListWithSubPage
- #ctor()
- dataViewSupport
- ClearItemsFields()
- Customer_KeyDown(sender,e)
- DeleteRecord()
- DgListView_MouseDoubleClick(sender,e)
- DgListView_Translate(sender,ex)
- DgSubListView_Translate(sender,ex)
- EditRecord()
- Filter(filter)
- InitializeComponent()
- LoadDataList()
- NewRecord()
- NotesChanged(sender,e)
- PartNumberGotFocus(sender,e)
- PartNumber_KeyDown(sender,e)
- SelectCustomer_Enter(sender,e)
- SelectGotFocus(sender,e)
- SelectPartNumber_Enter(sender,e)
- SetCustomer(sender,e)
- SetPartNumber(sender,e)
- SetSubListsNonActiveOnNewItem()
- UpdateCustomerSearchResults()
- UpdatePartNumberSearchResults()
- TemplateClassListWithSubViewPage
- TemplateDocumentViewPage
- TemplateSTLPage
- TemplateSettingsPage
- TemplateVideoPage
- TemplateWebViewPage
- TerminalPage
- TiltTargets
- ToolPanelDefinitionListPage
- ToolPanelListPage
- TranslatedApiList
- UnitListPage
- UpdateVariant
- UsedLicenseListPage
- UserData
- UserListPage
- UserRoleListPage
- VatListPage
- WarehouseListPage
- WelcomePage
- WorkListPage
AccessRoleListPage type
Namespace
GlobalNET.Pages
Summary
AccessRoleListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
AddressListPage type
Namespace
GlobalNET.Pages
Summary
AddressListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
ApiUrls type
Namespace
GlobalNET.Api
Summary
ALL standard View AND Form API Call must end with "List" - These will automatic added for reports Definitions
App type
Namespace
GlobalNET
Summary
App
#ctor() constructor
Summary
Application Global Exceptions Controls Definitions
Parameters
This constructor has no parameters.
SystemRuntimeData constants
Summary
Global Application Startup Settings Central Parameters / Languages / User / Configure TODO must centalize to Globall APP class
TiltReceiptDoc constants
Summary
Tilt Document types definitions
AppQuitRequest(silent) method
Summary
System or Quit
Parameters
Name | Type | Description |
---|---|---|
silent | System.Boolean |
AppRestart() method
Summary
System Restart Controller
Parameters
This method has no parameters.
ApplicationLogging(ex,customMessage) method
Summary
Full Application System logging Running If is AppSystemTimer is Enabled for disable other processes exceptions Full Application logging to file if enabled and to DB for solving by Developers Supported Custom Message Here Is Filling Local System Logger for Developers Logging to Database Are All non Developer working
Parameters
Name | Type | Description |
---|---|---|
ex | System.Exception | |
customMessage | System.String |
ApplicationQuit(sender,e) method
Summary
MainWindow Closing Handler for Cleaning TempData, disable AddOns / Tool and Third Party Software Closing Third Party processes
Parameters
Name | Type | Description |
---|---|---|
sender | M:GlobalNET.App.ApplicationQuit |
CurrentDomain_FirstChanceException(sender,e) method
Summary
FullSystem Logging Every Exception types are monitored for maximize correct running all processes, System addOns, systems, communications, threads, network All detail of application system add all used possibilities
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
e | System.Runtime.ExceptionServices.FirstChanceExceptionEventArgs |
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
Main() method
Summary
Application Entry Point.
Parameters
This method has no parameters.
OnStartup(e) method
Summary
Connected Starting Video
Parameters
Name | Type | Description |
---|---|---|
e | System.Windows.StartupEventArgs |
RootAppKeyDownController(sender,e) method
Summary
Keyboard Pointer to Central Keyboard Reaction Definitions
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
e | System.Windows.Input.KeyEventArgs |
AppVersion type
Namespace
GlobalNET.Classes
Summary
Program version Class
AttachmentListPage type
Namespace
GlobalNET.Pages
Summary
AttachmentListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
Authentification type
Namespace
GlobalNET.GlobalClasses
Summary
Class for User Authentication information
BranchListPage type
Namespace
GlobalNET.Pages
Summary
BranchListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
CalendarPage type
Namespace
GlobalNET.Pages
Summary
CalendarPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
ClientSettingsPage type
Namespace
GlobalNET.Pages
Summary
ClientSettingsPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
Config type
Namespace
GlobalNET.Classes
Summary
Client configuration Definition
CrashReporterSettings type
Namespace
GlobalNET.SystemConfiguration
Summary
Libreria condivisa
_ReportCrash constants
Summary
FirstRun
CreditNoteListPage type
Namespace
GlobalNET.Pages
Summary
CreditNoteListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
CurrencyListPage type
Namespace
GlobalNET.Pages
Summary
CurrencyListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
DBOperations type
Namespace
GlobalNET.GlobalOperations
Summary
Centralised DBFunctions as Load DB Congig, System Dials (Language, Params) Another Db functions As Saving System Loging, Language Dictionary Autofiling
DBTranslation(systemName,notCreateNew,comaList,lang) method
Summary
Centralised Method for Translating by DB Dictionary Service insert the news words for translate (After translate request) to Database Automaticaly with Empty Translate. Service return translate if is possible or requested word send back CamelCase ignored
Returns
Parameters
Name | Type | Description |
---|---|---|
systemName | System.String | |
notCreateNew | System.Boolean | |
comaList | System.Boolean | |
lang | System.String |
LoadOrRefreshUserData() method
Summary
Centralised Method for Refresh All UserData params, for correct App running. Thinking for remove and new Load Actualy limited by DebugingHelpSetting Itr user After Succes User Login
Parameters
This method has no parameters.
LoadStartupDBData() method
Summary
Startup Load System Parameters ,Languages, System Controlling, Server Setting
Parameters
This method has no parameters.
SaveSystemFailMessage(message) method
Summary
Save Exception to DB Fail List (System Log) Write to System Logger
Parameters
Name | Type | Description |
---|---|---|
message | System.String |
SetNonUserDataOnSuccessStartUp() method
Summary
SYSTEM: Set NonUser Startup Data for Correct Prepare System Its for All Status Possible - NODB,OS,IS,Network,etc. For check ANY possible problems out of System
Parameters
This method has no parameters.
DBResultMessage type
Namespace
GlobalNET.Api
Summary
Global API Definition of Result API calls for All Calling of Insert / Update / Delete
DataOperations type
Namespace
GlobalNET.GlobalOperations
Summary
Centralized DataOperations as Cleaning dataset Language Dictionary Auto filing
GetTranslatedApiList(listOnly,omitApiList) method
Summary
Global Method for Using API Uris as Unique Generic List for All API Call - logic is All standardized not only DataPages as automated Logic
Returns
Parameters
Name | Type | Description |
---|---|---|
listOnly | System.Boolean | |
omitApiList | System.Collections.Generic.List{System.String} |
NullSetInExtensionFields``1() method
Summary
!!! SYSTEM RULE: ClassList with joining fields names must be null able before API operation !!! ClassName must contain: "Extended" WORD Extension field in Class - Dataset must be set as null before Database Operation else is joining to other dataset is valid and can be blocked by fail key Its Check Extended in ClassName - SYSTEM RULE
Returns
Parameters
This method has no parameters.
Generic Types
Name | Description |
---|---|
T |
ParameterCheck(parameterName) method
Summary
Return Requested User or if not exist default DB parameter CamelCase Ignored
Returns
Parameters
Name | Type | Description |
---|---|---|
parameterName | System.String |
DataViewSupport type
Namespace
GlobalNET.Classes
Summary
Actual List Item informations for Controls each Page in MainView
DocumentAdviceListPage type
Namespace
GlobalNET.Pages
Summary
DocumentAdviceListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
DocumentItemList type
Namespace
GlobalNET.GlobalClasses
Summary
Univessal Document List (Item) for Offer,Order,Invoice
DocumentTypeListPage type
Namespace
GlobalNET.Pages
Summary
DocumentTypeListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
DocumentationPage type
Namespace
GlobalNET.Pages
Summary
DocumentationPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
ExchangeRateListPage type
Namespace
GlobalNET.Pages
Summary
ExchangeRateListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
FileOperations type
Namespace
GlobalNET.GlobalOperations
CopyFiles(sourcePath,destinationPath) method
Summary
Prepared Method for Files Copy
Parameters
Name | Type | Description |
---|---|---|
sourcePath | System.String | |
destinationPath | System.String |
CreateFile(file) method
Summary
Prepared Method for Create empty file
Returns
Parameters
Name | Type | Description |
---|---|---|
file | System.String |
FileDetectEncoding(FileName) method
Summary
Prepared Method for Get Information of File encoding UTF8,WIN1250,etc
Returns
Parameters
Name | Type | Description |
---|---|---|
FileName | System.String |
LoadSettings() method
Summary
Application Startup Check and configure Data Structure in folder ProgramData And required files, load client configuration config.json
Returns
Parameters
This method has no parameters.
SaveSettings() method
Summary
Function for saving Application Configuration This is client configuration only
Returns
Parameters
This method has no parameters.
VncServerIniFile(path) method
Summary
Generate ini file for start vns server default password: groupware
Returns
Parameters
Name | Type | Description |
---|---|---|
path | System.String |
GeneratedInternalTypeHelper type
Namespace
XamlGeneratedNamespace
Summary
GeneratedInternalTypeHelper
AddEventHandler() method
Summary
AddEventHandler
Parameters
This method has no parameters.
CreateDelegate() method
Summary
CreateDelegate
Parameters
This method has no parameters.
CreateInstance() method
Summary
CreateInstance
Parameters
This method has no parameters.
GetPropertyValue() method
Summary
GetPropertyValue
Parameters
This method has no parameters.
SetPropertyValue() method
Summary
SetPropertyValue
Parameters
This method has no parameters.
GlobalRuntimeMonitor type
Namespace
GlobalNET.GlobalClasses
Summary
!!!SYSTEM Global Runtime Monitor Definition For One Point monitoring For Processes and each other Definition For optimize the System Running
TODO
- move All Central Definitions Here
- create Monitor Window for managing
GraphsPage type
Namespace
GlobalNET.Pages
Summary
GraphsPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
GroupListPage type
Namespace
GlobalNET.Pages
Summary
GroupListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
HardwareOperations type
Namespace
GlobalNET.GlobalOperations
ApplicationKeyboardMaping(sender,e) method
Summary
Application Keyboard controller
Parameters
Name | Type | Description |
---|---|---|
sender | System.Windows.Input.KeyEventArgs |
IconMaker type
Namespace
GlobalNET.GlobalGenerators
Summary
System Online Icon Generator from custom Path Its for working with Icon over Database Dynamically
Icon(color,iconPath) method
Summary
Generate Custom Icon from Defined Path
Returns
Parameters
Name | Type | Description |
---|---|---|
color | System.Windows.Media.Color | The color. |
iconPath | System.String | The icon path. |
IgnoredExceptionListPage type
Namespace
GlobalNET.Pages
Summary
IgnoredExceptionListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
ImageGalleryListPage type
Namespace
GlobalNET.Pages
Summary
ImageGalleryListPage
ClearGallery() method
Summary
Phycical clear local storage and form
Parameters
This method has no parameters.
GrayscaleClick(sender,e) method
Summary
Images Effect Part
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
e | System.Windows.RoutedEventArgs |
ImageChangesCancelClick(sender,e) method
Summary
Image Graphics Changes Controllers
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
e | System.Windows.Input.MouseButtonEventArgs |
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
LoadFromServer() method
Summary
Last proccess
Returns
Parameters
This method has no parameters.
RefreshViewPhoto(selectedPhotoId) method
Summary
Parameters
Name | Type | Description |
---|---|---|
selectedPhotoId | System.Nullable{System.Int32} | selectedPhotoId -1 is Select Last |
SaveImageToServer(onlyThis) method
Summary
null For Full Folder else No of dbId, 0 = new
Returns
Parameters
Name | Type | Description |
---|---|---|
onlyThis | System.Nullable{System.Int32} |
IncomingInvoiceListPage type
Namespace
GlobalNET.Pages
Summary
IncomingInvoiceListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
IncomingOrderListPage type
Namespace
GlobalNET.Pages
Summary
IncomingOrderListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
ItemListPage type
Namespace
GlobalNET.Pages
Summary
ItemListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
Language type
Namespace
GlobalNET.Classes
Summary
Language definition support
LanguageListPage type
Namespace
GlobalNET.Pages
Summary
LanguageListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
LicenseActivationFailListPage type
Namespace
GlobalNET.Pages
Summary
LicenseActivationFailListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
LicenseAlgorithmListPage type
Namespace
GlobalNET.Pages
Summary
LicenseAlgorithmListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
LoginHistoryListPage type
Namespace
GlobalNET.Pages
Summary
LoginHistoryListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
MainWindow type
Namespace
GlobalNET
Summary
MainWindow
#ctor() constructor
Summary
System Core AND ALL shared functionalities
Parameters
This constructor has no parameters.
_hackyIsFirstWindow constants
Summary
MainControls Screen Variables
DataGridSelected property
Summary
Indicator for Enable New DataGrid Button
DataGridSelectedIdListIndicator property
Summary
DataGrid have selected record indicator
DgRefresh property
Summary
Indicator for enable Refresh Button Indicator
DownloadShow property
Summary
Indicator for show Downloading area
DownloadStatus property
Summary
Downloading of update status variable
OperationRunning property
Summary
Indicator for mark operation status for any programmatic operations
ProgressRing property
Summary
ProgressRing Visibility indicator
RunReleaseMode property
ServerLoggerSource property
Summary
System Logger Source Status and Controller This is status of Settings System Logger Source
ServiceRunning property
Summary
Service Status description
ServiceStatus property
Summary
Service Status public Variable
ShowSystemLogger property
Summary
System Logger Activator by Setted Parametr Can be setted for All Apps or Every User individually
SystemLogger property
Summary
System Online Logger for EASY developing
UserLogged property
Summary
User Logged Status
VncRunning property
AddOrRemoveTab(headerName,tabPage,tagText) method
Summary
Tabs Pages control for Insert/Move/Change Pages
Parameters
Name | Type | Description |
---|---|---|
headerName | System.String | |
tabPage | System.Object | |
tagText | System.String |
BtnKeyboardClick(sender,e) method
Summary
System tools controllers
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
e | System.Windows.RoutedEventArgs |
BtnShowLoggerClick(sender,e) method
Summary
Show System On line Logger
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
e | System.Windows.RoutedEventArgs |
Btn_LaunchHelp_Click(sender,e) method
Summary
Help button controller for Show Help File
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
e | System.Windows.RoutedEventArgs |
Btn_LaunchMetroTheme_Click(sender,e) method
Summary
Show Metro Theme possibilities
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
e | System.Windows.RoutedEventArgs |
Btn_about_click(sender,e) method
Summary
about applications information
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
e | System.Windows.RoutedEventArgs |
CbFilterDropDownClosed(sender,e) method
Summary
Full dynamic apply sett ed filter
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
e | System.EventArgs |
CbPrintReportsSelected(sender,e) method
Summary
Print Report Selection Controller
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
e | System.Windows.Controls.SelectionChangedEventArgs |
FilterField_SelectionChanged(sender,e) method
Summary
Full dynamic set sign DataGrid advanced filter type
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
e | System.Windows.Controls.SelectionChangedEventArgs |
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
MainGrid_IsDraggingChanged(sender,e) method
Summary
Dragging and separate to more Applications: TabPanel drag Controller - not Used
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
e | System.Windows.RoutedPropertyChangedEventArgs{System.Boolean} |
MainWindow_Closing(sender,e) method
Summary
Applications Close Request Controller
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
e | System.ComponentModel.CancelEventArgs |
MainWindow_KeyDown(sender,e) method
Summary
MainWindow Keyboard pointer to Keyboard Central Application controller
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
e | System.Windows.Input.KeyEventArgs |
MainWindow_Loaded(sender,e) method
Summary
Application Loaded Start Backend timer for check server set Theme
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
e | System.Windows.RoutedEventArgs |
MainWindow_MouseLeave() method
Summary
Writing Last User action for monitoring Free Time Used by: SceenSaver
Parameters
This method has no parameters.
MenuSortOnStart() method
Summary
Auto Menu Alphabetical sorting for selected Application Language
Parameters
This method has no parameters.
Menu_action_Click(sender,e) method
Summary
THIS IS AUTOMATIC INCLUDE DATALIST VIEW MENU in FORMAT APIcallPage open or select existed TabPanel VERTICAL MENU - Copy and CHANGE ONLY Page Name AND Report CALL as /XXXX
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
e | System.Windows.RoutedEventArgs |
Mi_filter_Click(sender,e) method
Summary
Full dynamic Show/Hidden DataGrid advanced Filter Menu
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
e | System.Windows.RoutedEventArgs |
Mi_logout_Click(sender,e) method
Summary
Application Logout button Controller
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
e | System.Windows.RoutedEventArgs |
RemoveFilterItem_Click(sender,e) method
Summary
Full dynamic Remove Item from DataGrid advanced Filter
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
e | System.Windows.RoutedEventArgs |
SetServiceStop() method
Summary
Server is unavailable All operations are blocked
Parameters
This method has no parameters.
ShowLoginDialog() method
Summary
Application Login Dialog
Parameters
This method has no parameters.
ShowMessage(error,message,confirm) method
Summary
Central Application Message Dialog for All Info / Error / other messages for User
Returns
Parameters
Name | Type | Description |
---|---|---|
error | System.Boolean | |
message | System.String | |
confirm | System.Boolean |
StringToFilter(filterBox,advancedFilter) method
Summary
Full dynamic build filter on selected page from saved advanced filter
Returns
Parameters
Name | Type | Description |
---|---|---|
filterBox | System.Windows.Controls.ComboBox | |
advancedFilter | System.String |
SystemLoggerSourceChanged_Click(sender,e) method
Summary
System Logger Source Selector Server Logger has Source From Client Settings by WebSocket URL
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | The source of the event. |
e | System.EventArgs | The EventArgs instance containing the event data. |
SystemTimerController(sender,e) method
Summary
Backend System Timer for check server connection
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
e | System.Timers.ElapsedEventArgs |
TabPanelOnSelectionChange(sender,e) method
Summary
Tab click selection change reload ID and Pointers for ListView Buttons
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | The sender. |
e | System.Windows.Controls.SelectionChangedEventArgs | The SelectionChangedEventArgs instance containing the event data. |
TiltOpenForm(translateHeader) method
Summary
Tilts: Standardized Opening or create Tilt documents
Returns
Parameters
Name | Type | Description |
---|---|---|
translateHeader | System.String |
MathTypeOperations type
Namespace
GlobalNET.GlobalOperations
CheckTypeValue() method
Summary
Global DataTypes Chwecker with Bool Result Used on System Parameters
Parameters
This method has no parameters.
MaturityListPage type
Namespace
GlobalNET.Pages
Summary
MaturityListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
MediaOperations type
Namespace
GlobalNET.GlobalOperations
ArrayToImage(array) method
Summary
Cresate Bitmap Image from DB array to Image for show preview
Returns
Parameters
Name | Type | Description |
---|---|---|
array | System.Byte[] |
GetImageImmediatelly(path) method
Summary
Important Closing connections of openned files by Form and binding this is solution for close oppened file after load Solution for All Files
Parameters
Name | Type | Description |
---|---|---|
path | System.String |
MottoListPage type
Namespace
GlobalNET.Pages
Summary
MottoListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
MyCustomLifeSpanHandler type
Namespace
GlobalNET.Pages.DocumentationPage
MyCustomLifeSpanHandler type
Namespace
GlobalNET.Pages.TemplateWebViewPage
OnBeforePopup(chromiumWebBrowser,browser,frame,targetUrl,targetFrameName,targetDisposition,userGesture,popupFeatures,windowInfo,browserSettings,noJavascriptAccess,newBrowser) method
Summary
Block open New Solo Window Frame as popup
Returns
Parameters
Name | Type | Description |
---|---|---|
chromiumWebBrowser | CefSharp.IWebBrowser | |
browser | CefSharp.IBrowser | |
frame | CefSharp.IFrame | |
targetUrl | System.String | |
targetFrameName | System.String | |
targetDisposition | CefSharp.WindowOpenDisposition | |
userGesture | System.Boolean | |
popupFeatures | CefSharp.IPopupFeatures | |
windowInfo | CefSharp.IWindowInfo | |
browserSettings | CefSharp.IBrowserSettings | |
noJavascriptAccess | System.Boolean@ | |
newBrowser | CefSharp.IWebBrowser@ |
OnBeforePopup(chromiumWebBrowser,browser,frame,targetUrl,targetFrameName,targetDisposition,userGesture,popupFeatures,windowInfo,browserSettings,noJavascriptAccess,newBrowser) method
Summary
Block open New Solo Window Frame as popup
Returns
Parameters
Name | Type | Description |
---|---|---|
chromiumWebBrowser | CefSharp.IWebBrowser | |
browser | CefSharp.IBrowser | |
frame | CefSharp.IFrame | |
targetUrl | System.String | |
targetFrameName | System.String | |
targetDisposition | CefSharp.WindowOpenDisposition | |
userGesture | System.Boolean | |
popupFeatures | CefSharp.IPopupFeatures | |
windowInfo | CefSharp.IWindowInfo | |
browserSettings | CefSharp.IBrowserSettings | |
noJavascriptAccess | System.Boolean@ | |
newBrowser | CefSharp.IWebBrowser@ |
NotesListPage type
Namespace
GlobalNET.Pages
Summary
NotesListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
OfferListPage type
Namespace
GlobalNET.Pages
Summary
OfferListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
OperationListPage type
Namespace
GlobalNET.Pages
Summary
OperationListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
OutgoingInvoiceListPage type
Namespace
GlobalNET.Pages
Summary
OutgoingInvoiceListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
OutgoingOrderListPage type
Namespace
GlobalNET.Pages
Summary
OutgoingOrderListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
ParameterListPage type
Namespace
GlobalNET.Pages
Summary
ParameterListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
PartListPage type
Namespace
GlobalNET.Pages
Summary
PartListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
PaymentMethodListPage type
Namespace
GlobalNET.Pages
Summary
PaymentMethodListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
PaymentStatusListPage type
Namespace
GlobalNET.Pages
Summary
PaymentStatusListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
PersonListPage type
Namespace
GlobalNET.Pages
Summary
PersonListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
ReceiptListPage type
Namespace
GlobalNET.Pages
Summary
ReceiptListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
ReportListPage type
Namespace
GlobalNET.Pages
Summary
ReportListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
ReportQueueListPage type
Namespace
GlobalNET.Pages
Summary
ReportQueueListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
ReportSelection type
Namespace
GlobalNET.Classes
Summary
Report naming support
Resources type
Namespace
GlobalNET.Properties
Summary
Třída prostředků se silnými typy pro vyhledávání lokalizovaných řetězců atp.
Culture property
Summary
Potlačí vlastnost CurrentUICulture aktuálního vlákna pro všechna vyhledání prostředků pomocí třídy prostředků se silnými typy.
ResourceManager property
Summary
Vrací instanci ResourceManager uloženou v mezipaměti použitou touto třídou.
no_photo property
Summary
Vyhledává lokalizovaný prostředek typu System.Drawing.Bitmap.
ScreenSaverPage type
Namespace
GlobalNET.Pages
Summary
ScreenSaverPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
ServerSettingKeys type
Namespace
GlobalNET.Classes
Summary
Server Configuration definition for Backend API EASYDATACenter
ServerSettingPage type
Namespace
GlobalNET.Pages
Summary
ServerSettingPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
SupportPage type
Namespace
GlobalNET.Pages
Summary
SupportPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
SvgIconListPage type
Namespace
GlobalNET.Pages
Summary
SvgIconListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
SystemFailListPage type
Namespace
GlobalNET.Pages
Summary
SystemFailListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
SystemLoggerHelper type
Namespace
GlobalNET.SystemHelper
Summary
System Logger Helper Defined Central WebSocket Monitor Controller
DisposeSystemLoggerWebSocketMonitor() method
Summary
Disable Server Logger When the System logger is enabled
Parameters
This method has no parameters.
SystemLoggerWebSocketMonitorOnOff() method
Summary
Systems the logger web socket monitor on/off. Full Control For Server WebSocket Logger
Parameters
This method has no parameters.
SystemLoggerWebSocketClass type
Namespace
GlobalNET.SystemHelper
Summary
System Logger WebSocket Monitor Controller Class Definition For Centralized Using
SystemOperations type
Namespace
GlobalNET.GlobalOperations
Summary
Centralised System Functions for work with Types, methods, Formats, Logic, supported methods
FilterToString(filterBox) method
Summary
SYSTEM Advanced Filter Conversion for API return existing filter for saving to string in selected Page
Returns
Parameters
Name | Type | Description |
---|---|---|
filterBox | System.Windows.Controls.ComboBox |
GetExceptionMessages(exception,msgCount) method
Summary
Mining All Exception Information For Central System Logger Ignore Some selected Fails is possible by Ignored Exception Settings
Returns
Parameters
Name | Type | Description |
---|---|---|
exception | System.Exception | |
msgCount | System.Int32 |
GetExceptionMessagesAll(exception,msgCount) method
Summary
Mining All Exception Information For Local System Logger EveryTime Show All fails for Best Developing On Expert Level
Returns
Parameters
Name | Type | Description |
---|---|---|
exception | System.Exception | |
msgCount | System.Int32 |
IncreaseFileVersionBuild() method
Summary
Automatic Increase version System Ideal for small systems with more release in 1 day Increase Windows Correct 3 position for Widows Installation In Debug is increase last 4 position
Returns
Parameters
This method has no parameters.
RandomString(length) method
Summary
Generate Random String with defined length
Returns
Parameters
Name | Type | Description |
---|---|---|
length | System.Int32 | The length. |
RemoveAppNamespaceFromString(stringForRemoveNamespace) method
Summary
Its Solution for this is a solution for demanding and multiplied servers Or Running SHARP and Test System By One Backend Server Service API Urls with Namespaces in Name are for Backend model with More Same Database Schemas Backend Databases count in One Server Service is Unlimited
Parameters
Name | Type | Description |
---|---|---|
stringForRemoveNamespace | System.String |
SendMailWithMailTo(address,subject,body,attach) method
Summary
System Mail sending
Parameters
Name | Type | Description |
---|---|---|
address | System.String | |
subject | System.String | |
body | System.String | |
attach | System.String |
SendMailWithServerSetting(message) method
Summary
Email Sender for send Direct Email by Server Configuration for Testing
Parameters
Name | Type | Description |
---|---|---|
message | System.String | The message. |
SetLanguageDictionary(Resources,languageDefault) method
Summary
Settings Local Application Translation dictionaries (Resources Files) for Pages Will be replaced by DBDictionary, but for Offline Running must be possible
Returns
Parameters
Name | Type | Description |
---|---|---|
Resources | System.Windows.ResourceDictionary | |
languageDefault | System.String |
StartExternalProccess(fullFilePath,startupPath,arguments) method
Summary
System External Process Starter for Conrtalized Using Return the processId when is started or null
TODO
- create process Monitor
- save the monitored procceses to System Monitor
- must be refactored actual status
Returns
Parameters
Name | Type | Description |
---|---|---|
fullFilePath | System.String | The full file path. |
startupPath | System.String | The startup path. |
arguments | System.String | The arguments. |
SystemStatuses type
Namespace
GlobalNET.GlobalClasses
Summary
!!SYSTEM Global Definition for System Statuses
SYSTEM Running mode In debug mode is disabled the System Logger Visual Studio Debugger difficult operation has problem If you want you can enable SystemLogger by change to: DebugWithSystemLogger
Its Used as String EveryWhere Its good Soution for Centarized Statuses of System Errors Are Saved In SystemLogger or Database
SystemWindowDataModel type
Namespace
GlobalNET.SystemStructure
#ctor() constructor
Summary
Its Solution For MultiInstance Application If The InterTab Is Enabled Can be Dragged Tab To the New Application
Parameters
This constructor has no parameters.
TemplateClassListPage type
Namespace
GlobalNET.Pages
Summary
This standartized Template is only for list view od Data table Called from MainWindow.cs on open New Tab
#ctor() constructor
Summary
Initialize page with loading Dictionary and start loding data Manual work needed Translate All XAML fields by Resources Runned on start
Parameters
This constructor has no parameters.
dataViewSupport constants
Summary
Standartized declaring static page data and selected record for All Pages this method is for global working with pages Called from MainWindow.cs for Control of Button Menu and Selections (Report,Filter and more) All is setted as global Classes for All Pages and Work is Fully automatized by System core
DeleteRecord() method
Summary
Standartized Method on All Pages with Forms for New Record ALL Needed changes Are done By Replace CLASSNAME not needed manual work Dynamicaly Called Only from MainWindow.cs on Delete button Click Show MainWindow Standartized Message with info About Delete and After confirm Send DeleteApiRequest Reload Datalist and cancel Selected Record
Parameters
This method has no parameters.
DgListView_MouseDoubleClick(sender,e) method
Summary
Standartized method for selecting and opening Detail Form. This is only View Page, that is only for Select record This is full automatic, not needed manual work This is on Every page ('View' and 'Form' Types) without 'Setting' Type (Name=Setting and Tag=Setting in XAML part) this method is for global working page its local control From XAML
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
e | System.Windows.Input.MouseButtonEventArgs |
DgListView_Translate(sender,ex) method
Summary
Standartized method for translating column names of DatagidView (List Data) Manual Changing is needed for set Translate of Column Names via Dictionary Items Here you can set Format(Date,time, etc),Index position, Hide Column, Translate, change grahics Style This is on Every page ('View' and 'Form' Types) without 'Setting' Type (Name=Setting and Tag=Setting in XAML part) this method is for global working with page internal reaction on DatagrigView DataFiling on Start Page Runned On Page Loading
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
ex | System.EventArgs |
EditRecord() method
Summary
Standartized Method on All Pages with Forms for New Record ALL Needed changes Are done By Replace CLASSNAME not needed manual work Dynamicaly Called Only from MainWindow.cs on Edit button Click Only Set Record And Hide Dataview and Show Detail with selected Record
Parameters
This method has no parameters.
Filter(filter) method
Summary
Standartized method for searching match in setted columns. Searched value is from the simple 'Search Input' for DatagidView (List Data) Manual Changing is needed of filtered columns by Search Value This is on Every page ('View' and 'Form' Types) without 'Setting' Type (Name=Setting and Tag=Setting in XAML part) this method is for global working with pages Called from MainWindow.cs Dynamicaly Called Only from MainWindow.cs when Search value Inserted
Parameters
Name | Type | Description |
---|---|---|
filter | System.String |
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
LoadDataList() method
Summary
Standartized Method for Loading data. Manual Changing is needed for simple form is All changed By CLASNAME Chage, but If you need More API data for selection Here are Defined All incoming Data Loading is same centralized only change ClasName For Diferent Dataset
After all data for DatagridView (List Data) are loaded The ProgressRing is hidden This is on Every page ('View' and 'Form' Types) without 'Setting' Type (Name=Setting and Tag=Setting in XAML part) this method is for global working with pages Called from MainWindow.cs on Refresh button click Runned on Pageloading or Filter or View Change
Returns
Parameters
This method has no parameters.
NewRecord() method
Summary
Standartized Method on All Pages with Forms for New Record ALL Needed changes Are done By Replace CLASSNAME not needed manual work Dynamicaly Called Only from MainWindow.cs on New button Click Only Set Record And Hide Dataview and Show Detail
Parameters
This method has no parameters.
TemplateClassListViewPage type
Namespace
GlobalNET.Pages
Summary
This standartized Template is only for list view od Data table Called from MainWindow.cs on open New Tab
#ctor() constructor
Summary
Initialize page with loading Dictionary and start loding data Runned on start
Parameters
This constructor has no parameters.
dataViewSupport constants
Summary
Standartized declaring static page data and selected record for All Pages this method is for global working with pages Called from MainWindow.cs for Control of Button Menu and Selections (Report,Filter and more) All is setted as global Classes for All Pages and Work is Fully automatized by System core
DgListView_MouseDoubleClick(sender,e) method
Summary
Standartized method for selecting and opening Detail Form. This is only View Page, that is only for Select record This is full automatic, not needed manual work This is on Every page ('View' and 'Form' Types) without 'Setting' Type (Name=Setting and Tag=Setting in XAML part) this method is for global working page its local control From XAML
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
e | System.Windows.Input.MouseButtonEventArgs |
DgListView_Translate(sender,ex) method
Summary
Standartized method for translating column names of DatagidView (List Data) Here you can set Format(Date,time, etc),Index position, Hide Column, Translate, change grahics Style This is on Every page ('View' and 'Form' Types) without 'Setting' Type (Name=Setting and Tag=Setting in XAML part) this method is for global working with page internal reaction on DatagrigView DataFiling on Start Page Runned On Page Loading
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
ex | System.EventArgs |
Filter(filter) method
Summary
Standartized method for searching match in setted columns. Searched value is from the simple 'Search Input' for DatagidView (List Data) Here you define which column of Dataset will be filtered This is on Every page ('View' and 'Form' Types) without 'Setting' Type (Name=Setting and Tag=Setting in XAML part) this method is for global working with pages Called from MainWindow.cs Dynamicaly Called Only from MainWindow.cs when Search value Inserted
Parameters
Name | Type | Description |
---|---|---|
filter | System.String |
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
LoadDataList() method
Summary
Standartized Method for Loading data. Manual Changing is needed for simple form is All changed By CLASNAME Chage, but If you need More API data for selection Here are Defined All incoming Data Loading is same centralized only change ClasName For Diferent Dataset
After all data for DatagridView (List Data) are loaded The ProgressRing is hidden This is on Every page ('View' and 'Form' Types) without 'Setting' Type (Name=Setting and Tag=Setting in XAML part) this method is for global working with pages Called from MainWindow.cs on Refresh button click Runned on Pageloading or Filter or View Change
Returns
Parameters
This method has no parameters.
TemplateClassListWithSubPage type
Namespace
GlobalNET.Pages
Summary
This standartized Template is only for list view od Data table Called from MainWindow.cs on open New Tab
#ctor() constructor
Summary
Initialize page with loading Dictionary and start loding data Manual work needed Translate All XAML fields by Resources Runned on start
Parameters
This constructor has no parameters.
dataViewSupport constants
Summary
Standartized declaring static page data and selected record for All Pages this method is for global working with pages Called from MainWindow.cs for Control of Button Menu and Selections (Report,Filter and more) All is setted as global Classes for All Pages and Work is Fully automatized by System core
HERE you Define All Data Variables For This Form
ClearItemsFields() method
Summary
Standartized Method for Clear SubRecord Input Fields with custom Dataset For Correct Using must be Fields changed for used dataset
Parameters
This method has no parameters.
Customer_KeyDown(sender,e) method
Summary
Standartized method for Keyboard control of SelectBox This is full automatic, not needed manual work
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
e | System.Windows.Input.KeyEventArgs |
DeleteRecord() method
Summary
Standartized Method on All Pages with Forms for New Record ALL Needed changes Are done By Replace CLASSNAME not needed manual work Dynamicaly Called Only from MainWindow.cs on Delete button Click Show MainWindow Standartized Message with info About Delete and After confirm Send DeleteApiRequest Reload Datalist and cancel Selected Record
Parameters
This method has no parameters.
DgListView_MouseDoubleClick(sender,e) method
Summary
Standartized method for selecting and opening Detail Form. This is only View Page, that is only for Select record This is full automatic, not needed manual work This is on Every page ('View' and 'Form' Types) without 'Setting' Type (Name=Setting and Tag=Setting in XAML part) this method is for global working page its local control From XAML
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
e | System.Windows.Input.MouseButtonEventArgs |
DgListView_Translate(sender,ex) method
Summary
Standartized method for translating column names of DatagidView (List Data) Manual Changing is needed for set Translate of Column Names via Dictionary Items Here you can set Format(Date,time, etc),Index position, Hide Column, Translate, change grahics Style This is on Every page ('View' and 'Form' Types) without 'Setting' Type (Name=Setting and Tag=Setting in XAML part) this method is for global working with page internal reaction on DatagrigView DataFiling on Start Page Runned On Page Loading
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
ex | System.EventArgs |
DgSubListView_Translate(sender,ex) method
Summary
Standartized method for translating column names of SubDatagidView (List Data) Manual Changing is needed for set Translate of Column Names via Dictionary Items Here you can set Format(Date,time, etc),Index position, Hide Column, Translate, change grahics Style This is on Every page ('View' and 'Form' Types) without 'Setting' Type (Name=Setting and Tag=Setting in XAML part) this method is for global working with page internal reaction on DatagrigView DataFiling on Start Page Runned On Page Loading
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
ex | System.EventArgs |
EditRecord() method
Summary
Standartized Method on All Pages with Forms for New Record ALL Needed changes Are done By Replace CLASSNAME not needed manual work Dynamicaly Called Only from MainWindow.cs on Edit button Click Only Set Record And Hide Dataview and Show Detail with selected Record
Parameters
This method has no parameters.
Filter(filter) method
Summary
Standartized method for searching match in setted columns. Searched value is from the simple 'Search Input' for DatagidView (List Data) Manual Changing is needed of filtered columns by Search Value This is on Every page ('View' and 'Form' Types) without 'Setting' Type (Name=Setting and Tag=Setting in XAML part) this method is for global working with pages Called from MainWindow.cs Dynamicaly Called Only from MainWindow.cs when Search value Inserted
Parameters
Name | Type | Description |
---|---|---|
filter | System.String |
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
LoadDataList() method
Summary
Standartized Method for Loading data. Manual Changing is needed for simple form is All changed By CLASNAME Chage, but If you need More API data for selection Here are Defined All incoming Data Loading is same centralized only change ClasName For Diferent Dataset
After all data for DatagridView (List Data) are loaded The ProgressRing is hidden This is on Every page ('View' and 'Form' Types) without 'Setting' Type (Name=Setting and Tag=Setting in XAML part) this method is for global working with pages Called from MainWindow.cs on Refresh button click Runned on Pageloading or Filter or View Change
Returns
Parameters
This method has no parameters.
NewRecord() method
Summary
Standartized Method on All Pages with Forms for New Record ALL Needed changes Are done By Replace CLASSNAME not needed manual work Dynamicaly Called Only from MainWindow.cs on New button Click Only Set Record And Hide Dataview and Show Detail
Parameters
This method has no parameters.
NotesChanged(sender,e) method
Summary
Standartized Maximal Simle Code with Reaction and Fill input After ParentComboboxSelection
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
e | System.Windows.Controls.SelectionChangedEventArgs |
PartNumberGotFocus(sender,e) method
Summary
Standartized method indicate start loading all data of SubRecord after Selected in Combobox This is full automatic, not needed manual work
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
e | System.Windows.RoutedEventArgs |
PartNumber_KeyDown(sender,e) method
Summary
Standartized method for Keyboard control of SelectBox This is full automatic, not needed manual work
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
e | System.Windows.Input.KeyEventArgs |
SelectCustomer_Enter(sender,e) method
Summary
Standartized methods with Indicate Customer Selection and Start Filling Input This is full automatic, not needed manual work
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
e | System.Windows.Input.KeyEventArgs |
SelectGotFocus(sender,e) method
Summary
Standartized method indicate start loading all data of SubRecord after Selected in Combobox This is full automatic, not needed manual work
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
e | System.Windows.RoutedEventArgs |
SelectPartNumber_Enter(sender,e) method
Summary
Standartized methods with Indicate Customer Selection and Start Filling Input This is full automatic, not needed manual work
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
e | System.Windows.Input.KeyEventArgs |
SetCustomer(sender,e) method
Summary
Standartized methods For Filling Input after Selection This is full automatic, not needed manual work
Parameters
Name | Type | Description |
---|---|---|
sender | M:GlobalNET.Pages.TemplateClassListWithSubPage.SetCustomer |
SetPartNumber(sender,e) method
Summary
Standartized methods For Filling Input after Selection This is full automatic, not needed manual work
Parameters
Name | Type | Description |
---|---|---|
sender | M:GlobalNET.Pages.TemplateClassListWithSubPage.SetPartNumber |
SetSubListsNonActiveOnNewItem() method
Summary
Standartized Method for Load All SubData which is needed for Working with SubRecord For Correct Using must be changed for actual datasets
Parameters
This method has no parameters.
UpdateCustomerSearchResults() method
Summary
Standartized method Filling Customer Input by Selected Value This is full automatic, not needed manual work
Parameters
This method has no parameters.
UpdatePartNumberSearchResults() method
Summary
Standartized method Filling Customer Input by Selected Value This is full automatic, not needed manual work
Parameters
This method has no parameters.
TemplateClassListWithSubViewPage type
Namespace
GlobalNET.Pages
Summary
This standartized Template is only for list view od Data table Called from MainWindow.cs on open New Tab
#ctor() constructor
Summary
Initialize page with loading Dictionary and start loding data Manual work needed Translate All XAML fields by Resources Runned on start
Parameters
This constructor has no parameters.
dataViewSupport constants
Summary
Standartized declaring static page data and selected record for All Pages this method is for global working with pages Called from MainWindow.cs for Control of Button Menu and Selections (Report,Filter and more) All is setted as global Classes for All Pages and Work is Fully automatized by System core
HERE you Define All Data Variables For This Form
DeleteRecord() method
Summary
Standartized Method on All Pages with Forms for New Record ALL Needed changes Are done By Replace CLASSNAME not needed manual work Dynamicaly Called Only from MainWindow.cs on Delete button Click Show MainWindow Standartized Message with info About Delete and After confirm Send DeleteApiRequest Reload Datalist and cancel Selected Record
Parameters
This method has no parameters.
DgListView_MouseDoubleClick(sender,e) method
Summary
Standartized method for selecting and opening Detail Form. This is only View Page, that is only for Select record This is full automatic, not needed manual work This is on Every page ('View' and 'Form' Types) without 'Setting' Type (Name=Setting and Tag=Setting in XAML part) this method is for global working page its local control From XAML
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
e | System.Windows.Input.MouseButtonEventArgs |
DgListView_Translate(sender,ex) method
Summary
Standartized method for translating column names of DatagidView (List Data) Manual Changing is needed for set Translate of Column Names via Dictionary Items Here you can set Format(Date,time, etc),Index position, Hide Column, Translate, change grahics Style This is on Every page ('View' and 'Form' Types) without 'Setting' Type (Name=Setting and Tag=Setting in XAML part) this method is for global working with page internal reaction on DatagrigView DataFiling on Start Page Runned On Page Loading
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
ex | System.EventArgs |
DgSubListView_Translate(sender,ex) method
Summary
Standartized method for translating column names of SubDatagidView (List Data) Manual Changing is needed for set Translate of Column Names via Dictionary Items Here you can set Format(Date,time, etc),Index position, Hide Column, Translate, change grahics Style This is on Every page ('View' and 'Form' Types) without 'Setting' Type (Name=Setting and Tag=Setting in XAML part) this method is for global working with page internal reaction on DatagrigView DataFiling on Start Page Runned On Page Loading
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
ex | System.EventArgs |
EditRecord() method
Summary
Standartized Method on All Pages with Forms for New Record ALL Needed changes Are done By Replace CLASSNAME not needed manual work Dynamicaly Called Only from MainWindow.cs on Edit button Click Only Set Record And Hide Dataview and Show Detail with selected Record
Parameters
This method has no parameters.
Filter(filter) method
Summary
Standartized method for searching match in setted columns. Searched value is from the simple 'Search Input' for DatagidView (List Data) Manual Changing is needed of filtered columns by Search Value This is on Every page ('View' and 'Form' Types) without 'Setting' Type (Name=Setting and Tag=Setting in XAML part) this method is for global working with pages Called from MainWindow.cs Dynamicaly Called Only from MainWindow.cs when Search value Inserted
Parameters
Name | Type | Description |
---|---|---|
filter | System.String |
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
LoadDataList() method
Summary
Standartized Method for Loading data. Manual Changing is needed for simple form is All changed By CLASNAME Chage, but If you need More API data for selection Here are Defined All incoming Data Loading is same centralized only change ClasName For Diferent Dataset
After all data for DatagridView (List Data) are loaded The ProgressRing is hidden This is on Every page ('View' and 'Form' Types) without 'Setting' Type (Name=Setting and Tag=Setting in XAML part) this method is for global working with pages Called from MainWindow.cs on Refresh button click Runned on Pageloading or Filter or View Change
Returns
Parameters
This method has no parameters.
LoadSubDataList() method
Summary
Standartized Method for Loading SubData. Manual Changing is needed for simple form is All changed By CLASNAME Chage, but If you need More API data for selection Here are Defined All incoming Data Loading is same centralized only change ClasName For Diferent Dataset
After all data for DatagridView (List Data) are loaded The ProgressRing is hidden This is on Every page ('View' and 'Form' Types) without 'Setting' Type (Name=Setting and Tag=Setting in XAML part) this method is for global working with pages Called from MainWindow.cs on Refresh button click Runned on Pageloading or Filter or View Change
Returns
Parameters
This method has no parameters.
NewRecord() method
Summary
Standartized Method on All Pages with Forms for New Record ALL Needed changes Are done By Replace CLASSNAME not needed manual work Dynamicaly Called Only from MainWindow.cs on New button Click Only Set Record And Hide Dataview and Show Detail
Parameters
This method has no parameters.
TemplateDocumentViewPage type
Namespace
GlobalNET.Pages
Summary
Template Page For View document, pictures, text and and much more file formats opened in WebViewer
#ctor() constructor
Summary
Initialize page with loading Dictionary and direct show example file
Parameters
This constructor has no parameters.
dataViewSupport constants
Summary
Standartized declaring static page data for global vorking with pages
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
TemplateSTLPage type
Namespace
GlobalNET.Pages
Summary
TemplateSTLPage
dataViewSupport constants
Summary
Standartized declaring static page data for global vorking with pages
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
TemplateSettingsPage type
Namespace
GlobalNET.Pages
Summary
TemplateSettingsPage
#ctor() constructor
Summary
Initialize page with loading Dictionary and start loding data Manual work needed Translate All XAML fields by Resources Runned on start
Parameters
This constructor has no parameters.
Languages constants
Summary
Define Collection For Combobox
dataViewSupport constants
Summary
Standartized declaring static page data for global vorking with pages
BtnApiTest_Click(sender,e) method
Summary
Customized GET Call
Parameters
Name | Type | Description |
---|---|---|
sender | System.Object | |
e | System.Windows.RoutedEventArgs |
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
TemplateVideoPage type
Namespace
GlobalNET.Pages
Summary
TemplateVideoPage
dataViewSupport constants
Summary
Standartized declaring static page data for global vorking with pages
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
TemplateWebViewPage type
Namespace
GlobalNET.Pages
Summary
Template Page For internet pages document, pictures, text and and much more file formats opened in WebViewer
#ctor() constructor
Summary
Initialize page with loading Dictionary and direct show example file
Parameters
This constructor has no parameters.
dataViewSupport constants
Summary
Standartized declaring static page data for global vorking with pages
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
TerminalPage type
Namespace
GlobalNET.Pages
Summary
TerminalPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
TiltTargets type
Namespace
GlobalNET.GlobalClasses
Summary
Tilt Document Types Definitions
ToolPanelDefinitionListPage type
Namespace
GlobalNET.Pages
Summary
ToolPanelDefinitionListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
ToolPanelListPage type
Namespace
GlobalNET.Pages
Summary
ToolPanelListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
TranslatedApiList type
Namespace
GlobalNET.GlobalClasses
Summary
Class for Using as customized list the List of API urls for Central using in the system One Api is One: Dataview / Right / Report Posibility / Menu Item / Page Exist rules for automatic processing in System Core Logic for simple Developing
UnitListPage type
Namespace
GlobalNET.Pages
Summary
UnitListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
UpdateVariant type
Namespace
GlobalNET.GlobalClasses
Summary
Global class for using Name/Value - Example Reports, Language and others
UsedLicenseListPage type
Namespace
GlobalNET.Pages
Summary
UsedLicenseListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
UserData type
Namespace
GlobalNET.GlobalClasses
Summary
Basic user data for login
UserListPage type
Namespace
GlobalNET.Pages
Summary
UserListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
UserRoleListPage type
Namespace
GlobalNET.Pages
Summary
UserRoleListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
VatListPage type
Namespace
GlobalNET.Pages
Summary
VatListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
WarehouseListPage type
Namespace
GlobalNET.Pages
Summary
WarehouseListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
WelcomePage type
Namespace
GlobalNET.Pages
Summary
WelcomePage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
WorkListPage type
Namespace
GlobalNET.Pages
Summary
WorkListPage
InitializeComponent() method
Summary
InitializeComponent
Parameters
This method has no parameters.
EN:
New in the menu "Absolutely unique EASY SYSTEM BUILDER" absolutely easy to create a 3-tier system (ANY DB, BACKEND-SERVER, FRONTEND-KLIENT) with excel knowledge Just create a Table for Data and a Form, all in graphic designers So you literally click on the system, 1 table every day = sales system with orders and offers per month And that's not all, by any chance. It doesn't have to be only a data system, but also a multimedia one without any problem, for cutting videos, working with photos or 3D or even a CONTROL SYSTEM for machine control (Currently SIEMENS PLC is supported), or any other Hardware after delivery of specifications. Or the Control system, Backup, DataWarehouse, Controlling, BI OLAP, Flow Processes, Production, Information or business touch Terminals. IT CAN ALSO BE USED ONLY AS AN EXTENSION OR CONNECTION OF SYSTEMS
The starting cost for the core is only 10,000 CZK / 400 Euro, and you can try it yourself or order cheaply what you want to add there. Don't bow down to the system, GET A CUSTOMIZED SYSTEM. For idea:
- invoicing system with OBJ+NAB+MULTI BRANCHES, WAREHOUSE, CHECKOUT - 14 DAYS
- implementation of a touch terminal in production for work reports - 4 DAYS
- A system for hotels including room agency, invoicing and orders is currently being created - 1 MONTH
- Free updates, 1 development for all clients via shared project agendas in code
Unlimited users, unlimited printing, unlimited options, tutorials, tips, tricks, advice, Prepared for all types of systems and terminals for MS WINDOWS
INTELLIGENT DOCUMENTATION: https://liborsvoboda.github.io/EASYSYSTEM-EASYSERVER-EN/
CODE: https://github.com/liborsvoboda/EASYSYSTEM-EASYSERVER-EN
ONLINE EXAMPLE: https://kliknetezde.cz
SO DON'T DELAY AND CALL TODAY BEFORE THE PRICE GOES UP BACKEND SERVER CAN BE USED INDEPENDENTLY FOR ANY OTHER MULTIPLATFORM PROJECT
IT Architect Libor Svoboda GroupWare-Solution.Eu Tel: 00420 724986873, email: Libor.Svoboda@GroupWare-Solution.Eu
UNIVERSAL MODERN BE + MS FE SOLUTION FOR BUILDING ANY 3-layer technological software or its parts
For thinking, the development of tools and work with them worthy in the 21st century
- EASYDATACenter - Universal multi-platform MultiDatabase Backend server solution with all standard technologies implemented
- EASYSYSTEMBuilder - Universal modern Metro WPF Frontend System Builder solution for quick and easy development of any system with minimal knowledge
- Combined solution - is a simple solution for rapid development of any modern system, runs perfectly on prepared System Core and templates for Graphical/Click Development
Complete Development Documentation and Smart Search: https://liborsvoboda.github.io/EASYSYSTEM-EASYSERVER-EN
Complete free projects codes, templates, help, tips, trics, etc: https://github.com/liborsvoboda/EASYSYSTEM-EASYSERVER-EN
GroupWare-Solutions FOR Universal IT World
SolutionsVisions&Ideas.MD
AUTO_STEPS_Look_First.md
CoreStructureDefinition.md
DATABASES.md
EASYDATACENTER_Code_Help.MD
EASYSYSTEMBuilder_Code_Help.md
EASYTools_3rdFreeAddons.MD
FIYReporting.md
OS_GIT_GCLOUD_WIN_LIN_DOCKER_Help.md
SolutionsChangeLog.MD
3rdPartyVisionsTips.md
SUMMARY.md
EASY-SYSTEM-Builder
Visual Studio project solution EASYSYSTEMBuilder for
C# WPF Low/no code solution For immediate development of your own SYSTEM:
- FOR EVERY Company/Data Management/IS/OS/HW
- Multilingual WPF application supported
- Full support for the creation of any MS system (modern SAP, etc.).
- Control system with graph support
- Support for a unique media system,
- Touch terminals supported
- Bussiness/City/Country/ANY touch touch terminals on Windows AIO monitors are supported
- NEXT YEAR Web Convert Support for LINUX/WINDOWS
- Thousands of IS/OS/etc. tools on Github for free
- Transparent clean code
- Low/no code development support - Click-to-click graphic development
For standard IT/terminal systems development, the XAML graphical Builder with Class Copy is all you need for development
- System updates are free
- Code updates and all changes are public
1. DataWorking/IO/PRINT/SHOW
With all types of data form templates for standardized:
DATAView / DATADetail / DATAView with SubDATAview / DATAView with SubFullDataDetail
3D / Document / Video
1. To build ANY information / multimedia / control / flow / reporting and other systems
COPY/PASTE DEVELOPMENT PRICE 5000CZK/200EURO - PROJECT LICENSE
EASY-DATA-CENTER
Visual Studio project solution EASYDATACenter ASPNETCORE6 providing:
Simple development of Universal secure Multiplatform MultiDB Backend Server With RESTFULL / WEBSOCKET implementations
-
With all types of templates for INSERT / UPDATE / DELETE / SELECT / PROCEDURE / SUBFORMDATA / etc.
-
WITH DATABASE, table template, Procerure template, view template,
-
Backup/restore/set DB rights and other examples
-
With tables, indexes, foreign keys in all standard DB uses
**COPY/PASTE DEVELOPMENT PRICE 5000CZK/200EURO - PROJECT LICENSE**
FYI Reporting - Report Editor / Viewer
FreeWare Full Report Designer and Viewer for printing all types of documents / barcodes, EAN, QR
EASYTOOLS
- Add-ons for touch panels, controls, data types, forms, media, documents, 3D,
- They are completely free to download (including every license pack)
- Open Source community to include more than 1000 tools in the system by community
EXISTING CLONE SYSTEMS CREATED IN 14 DAYS
- LicenseSrv MultiOS license server with listening API GET/POST server / generation of unlimited static/dynamic license CODES and application client to manage the Server
- GUIDES Windows XP+ Implementation of production sources in the production of a production company For office / touch panels with an unlimited number of clients and the possibility of printing
- ShoPingER Windows XP+ Multi Branch Quotation/Order/Invoicing system with multimedia files supported by unlimited clients and printing capabilities
- LicenceShoper MultiOS License Server PLUS Windows XP+ MultiBranches Billing System [LicenseSrv + ShoPingER]
SOLUTION - WHERE TO FIND COMPLETE INFORMATION
All documentation, license, case study, price list, media, developer information, help, manuals, technology information, installation, images, videos, downloads, etc. can be found here:
- Info Global Server Running: https://Kliknetezde.Cz:5000/
- Generators & Client Support is Preparing: https://Kliknetezde.Cz:5000/DashBoard
- Youtube: https://www.youtube.com/playlist?list=PLmE7gP9LTBimNJQ444ypG8HVce23fa2Hb
- Facebook: https://www.facebook.com/GroupWareSolution
- LinkedIn: https://www.linkedin.com/in/libor-svoboda-7b96014a/
- Eshop: https://GroupWare-Solutions.Eu
- WebPages: https://GroupWare-Solution.Eu
- Online Application for testing: Https://KlikneteZde.Cz
- GitHub Complete Information and Help: https://github.com/liborsvoboda/EASYSYSTEM-EASYSERVER-EN
Complete Development Documentation and Smart Search: https://liborsvoboda.github.io/EASYSYSTEM-EASYSERVER-EN
Company contact for suppliers
Email:
- Libor.Svoboda@GroupWare-Solution.eu
- Libor.Svoboda@KlikneteZde.Cz
Address:
Street: Žlutava 173
City: Žlutava
PostCode: 761 63
State: Czech Republic
Phone: 00420 724 986 873