From 4280a846210fdea5f69c2bada52d8df525be1ae7 Mon Sep 17 00:00:00 2001 From: AishwaryaRameshbabu-SF3446 Date: Fri, 20 Feb 2026 16:33:23 +0530 Subject: [PATCH] 1011356-Added-DataBaseSamples --- .../Grid_EntityFramework.Server/CHANGELOG.md | 8 + .../Controllers/TicketsController.cs | 128 + .../Data/TicketsDbContext.cs | 45 + .../Grid_EntityFramework.Server.csproj | 29 + .../Grid_EntityFramework.Server.csproj.user | 6 + .../Grid_EntityFramework.Server.http | 6 + .../Models/Ticket.cs | 56 + .../Grid_EntityFramework.Server/Program.cs | 34 + .../Properties/launchSettings.json | 45 + .../appsettings.Development.json | 8 + .../appsettings.json | 12 + .../Grid_EntityFramework.sln | 33 + .../grid_entityframework.client/CHANGELOG.md | 16 + .../grid_entityframework.client/README.md | 73 + .../aspnetcore-https.js | 37 + .../eslint.config.js | 23 + .../grid_entityframework.client.esproj | 10 + .../grid_entityframework.client.esproj.user | 4 + .../grid_entityframework.client/index.html | 13 + .../grid_entityframework.client/package.json | 33 + .../public/vite.svg | 1 + .../grid_entityframework.client/src/App.css | 192 ++ .../grid_entityframework.client/src/App.tsx | 64 + .../src/CustomAdaptor.ts | 69 + .../src/assets/react.svg | 1 + .../grid_entityframework.client/src/index.css | 10 + .../grid_entityframework.client/src/main.tsx | 10 + .../tsconfig.app.json | 28 + .../grid_entityframework.client/tsconfig.json | 7 + .../tsconfig.node.json | 26 + .../vite.config.ts | 61 + .../Grid_MSSQL.Server/CHANGELOG.md | 8 + .../Controllers/TicketsController.cs | 128 + .../Data/TicketRepository.cs | 221 ++ .../Grid_MSSQL.Server/Data/Tickets.cs | 82 + .../Grid_MSSQL.Server.csproj | 27 + .../Grid_MSSQL.Server.csproj.user | 6 + .../Grid_MSSQL.Server/Grid_MSSQL.Server.http | 6 + .../Grid_MSSQL.Server/Program.cs | 41 + .../Properties/launchSettings.json | 45 + .../appsettings.Development.json | 8 + .../Grid_MSSQL.Server/appsettings.json | 12 + ...CoreApp,Version=v8.0.AssemblyAttributes.cs | 4 + .../net8.0/Grid_MSSQL.Server.AssemblyInfo.cs | 22 + ...Grid_MSSQL.Server.AssemblyInfoInputs.cache | 1 + ....GeneratedMSBuildEditorConfig.editorconfig | 23 + .../Grid_MSSQL.Server.GlobalUsings.g.cs | 17 + .../net8.0/Grid_MSSQL.Server.assets.cache | Bin 0 -> 30308 bytes ...SSQL.Server.csproj.AssemblyReference.cache | Bin 0 -> 13636 bytes ...Grid_MSSQL.Server.csproj.nuget.dgspec.json | 95 + .../Grid_MSSQL.Server.csproj.nuget.g.props | 24 + .../Grid_MSSQL.Server.csproj.nuget.g.targets | 9 + .../Grid_MSSQL.Server/obj/project.assets.json | 2162 +++++++++++++++++ .../Grid_MSSQL.Server/obj/project.nuget.cache | 49 + .../Grid_MSSQL.sln | 33 + .../grid_mssql.client/CHANGELOG.md | 16 + .../grid_mssql.client/README.md | 73 + .../grid_mssql.client/eslint.config.js | 23 + .../grid_mssql.client.esproj | 11 + .../grid_mssql.client/index.html | 14 + .../obj/Debug/package.g.props | 29 + .../grid_mssql.client/package.json | 32 + .../grid_mssql.client/public/vite.svg | 1 + .../grid_mssql.client/src/App.css | 192 ++ .../grid_mssql.client/src/App.tsx | 165 ++ .../grid_mssql.client/src/CustomAdaptor.ts | 69 + .../grid_mssql.client/src/assets/react.svg | 1 + .../grid_mssql.client/src/index.css | 10 + .../grid_mssql.client/src/main.tsx | 10 + .../grid_mssql.client/tsconfig.app.json | 28 + .../grid_mssql.client/tsconfig.json | 7 + .../grid_mssql.client/tsconfig.node.json | 26 + .../grid_mssql.client/vite.config.ts | 61 + .../Grid_MySQL.Server/CHANGELOG.md | 8 + .../Controllers/GridController.cs | 166 ++ .../Data/AppDataConnection.cs | 27 + .../Grid_MySQL.Server.csproj | 26 + .../Grid_MySQL.Server.csproj.user | 6 + .../Grid_MySQL.Server/Grid_MySQL.Server.http | 6 + .../Grid_MySQL.Server/Models/Transaction.cs | 47 + .../Grid_MySQL.Server/Program.cs | 34 + .../Properties/launchSettings.json | 45 + .../appsettings.Development.json | 8 + .../Grid_MySQL.Server/appsettings.json | 12 + .../Grid_MySQL.sln | 33 + .../grid_mysql.client/CHANGELOG.md | 16 + .../grid_mysql.client/README.md | 73 + .../grid_mysql.client/aspnetcore-https.js | 37 + .../grid_mysql.client/eslint.config.js | 23 + .../grid_mysql.client.esproj | 10 + .../grid_mysql.client/index.html | 14 + .../grid_mysql.client/package.json | 33 + .../grid_mysql.client/public/vite.svg | 1 + .../grid_mysql.client/src/App.css | 1 + .../grid_mysql.client/src/App.tsx | 67 + .../grid_mysql.client/src/CustomAdaptor.ts | 69 + .../grid_mysql.client/src/assets/react.svg | 1 + .../grid_mysql.client/src/index.css | 10 + .../grid_mysql.client/src/main.tsx | 10 + .../grid_mysql.client/tsconfig.app.json | 28 + .../grid_mysql.client/tsconfig.json | 7 + .../grid_mysql.client/tsconfig.node.json | 26 + .../grid_mysql.client/vite.config.ts | 61 + 103 files changed, 5784 insertions(+) create mode 100644 connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/CHANGELOG.md create mode 100644 connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/Controllers/TicketsController.cs create mode 100644 connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/Data/TicketsDbContext.cs create mode 100644 connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/Grid_EntityFramework.Server.csproj create mode 100644 connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/Grid_EntityFramework.Server.csproj.user create mode 100644 connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/Grid_EntityFramework.Server.http create mode 100644 connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/Models/Ticket.cs create mode 100644 connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/Program.cs create mode 100644 connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/Properties/launchSettings.json create mode 100644 connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/appsettings.Development.json create mode 100644 connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/appsettings.json create mode 100644 connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.sln create mode 100644 connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/CHANGELOG.md create mode 100644 connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/README.md create mode 100644 connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/aspnetcore-https.js create mode 100644 connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/eslint.config.js create mode 100644 connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/grid_entityframework.client.esproj create mode 100644 connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/grid_entityframework.client.esproj.user create mode 100644 connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/index.html create mode 100644 connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/package.json create mode 100644 connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/public/vite.svg create mode 100644 connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/src/App.css create mode 100644 connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/src/App.tsx create mode 100644 connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/src/CustomAdaptor.ts create mode 100644 connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/src/assets/react.svg create mode 100644 connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/src/index.css create mode 100644 connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/src/main.tsx create mode 100644 connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/tsconfig.app.json create mode 100644 connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/tsconfig.json create mode 100644 connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/tsconfig.node.json create mode 100644 connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/vite.config.ts create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/CHANGELOG.md create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/Controllers/TicketsController.cs create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/Data/TicketRepository.cs create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/Data/Tickets.cs create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/Grid_MSSQL.Server.csproj create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/Grid_MSSQL.Server.csproj.user create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/Grid_MSSQL.Server.http create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/Program.cs create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/Properties/launchSettings.json create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/appsettings.Development.json create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/appsettings.json create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/Debug/net8.0/Grid_MSSQL.Server.AssemblyInfo.cs create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/Debug/net8.0/Grid_MSSQL.Server.AssemblyInfoInputs.cache create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/Debug/net8.0/Grid_MSSQL.Server.GeneratedMSBuildEditorConfig.editorconfig create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/Debug/net8.0/Grid_MSSQL.Server.GlobalUsings.g.cs create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/Debug/net8.0/Grid_MSSQL.Server.assets.cache create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/Debug/net8.0/Grid_MSSQL.Server.csproj.AssemblyReference.cache create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/Grid_MSSQL.Server.csproj.nuget.dgspec.json create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/Grid_MSSQL.Server.csproj.nuget.g.props create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/Grid_MSSQL.Server.csproj.nuget.g.targets create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/project.assets.json create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/project.nuget.cache create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.sln create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/CHANGELOG.md create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/README.md create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/eslint.config.js create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/grid_mssql.client.esproj create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/index.html create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/obj/Debug/package.g.props create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/package.json create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/public/vite.svg create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/src/App.css create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/src/App.tsx create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/src/CustomAdaptor.ts create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/src/assets/react.svg create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/src/index.css create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/src/main.tsx create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/tsconfig.app.json create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/tsconfig.json create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/tsconfig.node.json create mode 100644 connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/vite.config.ts create mode 100644 connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/CHANGELOG.md create mode 100644 connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/Controllers/GridController.cs create mode 100644 connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/Data/AppDataConnection.cs create mode 100644 connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/Grid_MySQL.Server.csproj create mode 100644 connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/Grid_MySQL.Server.csproj.user create mode 100644 connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/Grid_MySQL.Server.http create mode 100644 connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/Models/Transaction.cs create mode 100644 connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/Program.cs create mode 100644 connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/Properties/launchSettings.json create mode 100644 connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/appsettings.Development.json create mode 100644 connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/appsettings.json create mode 100644 connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.sln create mode 100644 connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/CHANGELOG.md create mode 100644 connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/README.md create mode 100644 connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/aspnetcore-https.js create mode 100644 connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/eslint.config.js create mode 100644 connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/grid_mysql.client.esproj create mode 100644 connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/index.html create mode 100644 connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/package.json create mode 100644 connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/public/vite.svg create mode 100644 connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/src/App.css create mode 100644 connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/src/App.tsx create mode 100644 connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/src/CustomAdaptor.ts create mode 100644 connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/src/assets/react.svg create mode 100644 connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/src/index.css create mode 100644 connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/src/main.tsx create mode 100644 connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/tsconfig.app.json create mode 100644 connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/tsconfig.json create mode 100644 connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/tsconfig.node.json create mode 100644 connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/vite.config.ts diff --git a/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/CHANGELOG.md b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/CHANGELOG.md new file mode 100644 index 0000000..03c2619 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/CHANGELOG.md @@ -0,0 +1,8 @@ +This file explains how Visual Studio created the project. + +The following steps were used to generate this project: +- Create new ASP\.NET Core Web API project. +- Update project file to add a reference to the frontend project and set SPA properties. +- Update `launchSettings.json` to register the SPA proxy as a startup assembly. +- Add project to the startup projects list. +- Write this file. diff --git a/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/Controllers/TicketsController.cs b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/Controllers/TicketsController.cs new file mode 100644 index 0000000..6abea1f --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/Controllers/TicketsController.cs @@ -0,0 +1,128 @@ +using Grid_EntityFramework.Server.Data; +using Grid_EntityFramework.Server.Models; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; +using Syncfusion.EJ2.Base; + +namespace Grid_EntityFramework.Server.Controllers +{ + [Route("api/[controller]")] + public class TicketsController : ControllerBase + { + private readonly TicketsDbContext _db; + + public TicketsController(TicketsDbContext db) + { + _db = db; + } + + // READ + [HttpPost("url")] + public IActionResult UrlDataSource([FromBody] DataManagerRequest dm) + { + IQueryable query = _db.Tickets.AsNoTracking(); + var op = new DataOperations(); + + if (dm.Search?.Count > 0) + query = op.PerformSearching(query, dm.Search).Cast().AsQueryable(); + + if (dm.Where?.Count > 0) + query = op.PerformFiltering(query, dm.Where, dm.Where[0].Operator) + .Cast() + .AsQueryable(); + + if (dm.Sorted?.Count > 0) + query = op.PerformSorting(query, dm.Sorted).Cast().AsQueryable(); + else + query = query.OrderBy(t => t.TicketId); + + var count = query.Count(); + + if (dm.Skip > 0) + query = query.Skip(dm.Skip); + + if (dm.Take > 0) + query = query.Take(dm.Take); + + return dm.RequiresCounts + ? Ok(new { result = query.ToList(), count }) + : Ok(query.ToList()); + } + + // CREATE + [HttpPost("insert")] + public IActionResult Insert([FromBody] CRUDModel value) + { + var ticket = value.Value; + + // Identity handled like MVC + ticket.TicketId = 0; + + _db.Tickets.Add(ticket); + _db.SaveChanges(); + + return Ok(ticket); + } + + // UPDATE + [HttpPost("update")] + public IActionResult Update([FromBody] CRUDModel value) + { + var ticket = value.Value; + + _db.Entry(ticket).State = EntityState.Modified; + _db.SaveChanges(); + + return Ok(ticket); + } + + // DELETE + [HttpPost("remove")] + public IActionResult Remove([FromBody] CRUDModel value) + { + var key = Convert.ToInt32(value.Key); + var ticket = _db.Tickets.First(t => t.TicketId == key); + + _db.Tickets.Remove(ticket); + _db.SaveChanges(); + + return Ok(value); + } + + // BATCH + [HttpPost("batch")] + public IActionResult Batch([FromBody] CRUDModel value) + { + if (value.Changed != null) + { + foreach (var ticket in value.Changed) + { + _db.Tickets.Attach(ticket); + _db.Entry(ticket).State = EntityState.Modified; + } + } + + if (value.Added != null) + { + foreach (var ticket in value.Added) + { + ticket.TicketId = 0; + _db.Tickets.Add(ticket); + } + } + + if (value.Deleted != null) + { + foreach (var ticket in value.Deleted) + { + var existing = _db.Tickets.Find(ticket.TicketId); + if (existing != null) + _db.Tickets.Remove(existing); + } + } + + _db.SaveChanges(); + return Ok(value); + } + } +} diff --git a/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/Data/TicketsDbContext.cs b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/Data/TicketsDbContext.cs new file mode 100644 index 0000000..c0704d5 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/Data/TicketsDbContext.cs @@ -0,0 +1,45 @@ +// File: Data/TicketsDbContext.cs +using Grid_EntityFramework.Server.Models; +using Microsoft.EntityFrameworkCore; + +namespace Grid_EntityFramework.Server.Data +{ + public class TicketsDbContext(DbContextOptions options) : DbContext(options) + { + public DbSet Tickets => Set(); + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + var entity = modelBuilder.Entity(); + + // Table and Schema + entity.ToTable("Tickets", "dbo"); + + // PK + entity.HasKey(e => e.TicketId); + + // Identity (handled by [DatabaseGenerated] attribute, but we can be explicit) + entity.Property(e => e.TicketId).ValueGeneratedOnAdd(); + + // Column configs (equivalent to your EF6 constraints) + entity.Property(e => e.PublicTicketId).HasMaxLength(50).IsRequired(); + entity.HasIndex(e => e.PublicTicketId).IsUnique(); // matches your EF6 unique index + + entity.Property(e => e.Title).HasMaxLength(200); + entity.Property(e => e.Description).HasColumnType("text"); // or nvarchar(max) + entity.Property(e => e.Category).HasMaxLength(100); + entity.Property(e => e.Department).HasMaxLength(100); + entity.Property(e => e.Assignee).HasMaxLength(100); + entity.Property(e => e.CreatedBy).HasMaxLength(100); + entity.Property(e => e.Status).HasMaxLength(50).IsRequired(); + entity.Property(e => e.Priority).HasMaxLength(50).IsRequired(); + + entity.Property(e => e.ResponseDue).HasColumnType("datetime2"); + entity.Property(e => e.DueDate).HasColumnType("datetime2"); + entity.Property(e => e.CreatedAt).HasColumnType("datetime2").IsRequired(); + entity.Property(e => e.UpdatedAt).HasColumnType("datetime2").IsRequired(); + + base.OnModelCreating(modelBuilder); + } + } +} diff --git a/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/Grid_EntityFramework.Server.csproj b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/Grid_EntityFramework.Server.csproj new file mode 100644 index 0000000..62ae6b7 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/Grid_EntityFramework.Server.csproj @@ -0,0 +1,29 @@ + + + net10.0 + disable + enable + ..\grid_entityframework.client + npm start + https://localhost:57606 + + + + + 8.*-* + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + false + + + diff --git a/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/Grid_EntityFramework.Server.csproj.user b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/Grid_EntityFramework.Server.csproj.user new file mode 100644 index 0000000..9ff5820 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/Grid_EntityFramework.Server.csproj.user @@ -0,0 +1,6 @@ + + + + https + + \ No newline at end of file diff --git a/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/Grid_EntityFramework.Server.http b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/Grid_EntityFramework.Server.http new file mode 100644 index 0000000..9a94646 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/Grid_EntityFramework.Server.http @@ -0,0 +1,6 @@ +@Grid_EntityFramework.Server_HostAddress = http://localhost:5018 + +GET {{Grid_EntityFramework.Server_HostAddress}}/weatherforecast/ +Accept: application/json + +### diff --git a/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/Models/Ticket.cs b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/Models/Ticket.cs new file mode 100644 index 0000000..9c4ca8a --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/Models/Ticket.cs @@ -0,0 +1,56 @@ +// File: Models/Ticket.cs +using System; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace Grid_EntityFramework.Server.Models +{ + [Table("Tickets", Schema = "dbo")] + public class Ticket + { + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int TicketId { get; set; } + + [Required, MaxLength(50)] + public string PublicTicketId { get; set; } + + [MaxLength(200)] + public string Title { get; set; } + + // EF Core: prefer NVARCHAR(MAX) instead of deprecated TEXT. + // We'll keep column type from your EF6 note if you must match legacy schema: + [Column(TypeName = "text")] // Consider changing to nvarchar(max) for modern SQL Server + public string Description { get; set; } + + [MaxLength(100)] + public string Category { get; set; } + + [MaxLength(100)] + public string Department { get; set; } + + [MaxLength(100)] + public string Assignee { get; set; } + + [MaxLength(100)] + public string CreatedBy { get; set; } + + [Required, MaxLength(50)] + public string Status { get; set; } = "Open"; + + [Required, MaxLength(50)] + public string Priority { get; set; } = "Medium"; + + [Column(TypeName = "datetime2")] + public DateTime? ResponseDue { get; set; } + + [Column(TypeName = "datetime2")] + public DateTime? DueDate { get; set; } + + [Required, Column(TypeName = "datetime2")] + public DateTime CreatedAt { get; set; } = DateTime.UtcNow; + + [Required, Column(TypeName = "datetime2")] + public DateTime UpdatedAt { get; set; } = DateTime.UtcNow; + } +} diff --git a/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/Program.cs b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/Program.cs new file mode 100644 index 0000000..71564cb --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/Program.cs @@ -0,0 +1,34 @@ +// File: Program.cs +using Grid_EntityFramework.Server.Data; +using Microsoft.EntityFrameworkCore; +using Newtonsoft.Json; + +var builder = WebApplication.CreateBuilder(args); + +builder + .Services.AddControllers() + .AddNewtonsoftJson(o => + { + // Key setting: do not try to set null into value types (int) + o.SerializerSettings.NullValueHandling = NullValueHandling.Ignore; + // Optional hardening: + // o.SerializerSettings.MissingMemberHandling = MissingMemberHandling.Ignore; + }); + +// EF Core SQL Server +builder.Services.AddDbContext(options => + options.UseSqlServer(builder.Configuration.GetConnectionString("TicketsDb")) +); + +builder.Services.AddControllers(); + +// CORS if you call from Angular dev server +builder.Services.AddCors(opts => +{ + opts.AddPolicy("dev", p => p.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod()); +}); + +var app = builder.Build(); +app.UseCors("dev"); +app.MapControllers(); +app.Run(); diff --git a/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/Properties/launchSettings.json b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/Properties/launchSettings.json new file mode 100644 index 0000000..c806da3 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/Properties/launchSettings.json @@ -0,0 +1,45 @@ +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:57542", + "sslPort": 44378 + } + }, + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "launchUrl": "swagger", + "applicationUrl": "http://localhost:5018", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development", + "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.SpaProxy" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "launchUrl": "swagger", + "applicationUrl": "https://localhost:7097;http://localhost:5018", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development", + "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.SpaProxy" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "launchUrl": "swagger", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development", + "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.SpaProxy" + } + } + } +} + diff --git a/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/appsettings.Development.json b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/appsettings.Development.json new file mode 100644 index 0000000..0c208ae --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/appsettings.json b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/appsettings.json new file mode 100644 index 0000000..2948aad --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.Server/appsettings.json @@ -0,0 +1,12 @@ +{ + "ConnectionStrings": { + "TicketsDb": "Server=localhost;Database=TicketsDb;Trusted_Connection=True;TrustServerCertificate=True;" + }, + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} \ No newline at end of file diff --git a/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.sln b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.sln new file mode 100644 index 0000000..798d8f2 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/Grid_EntityFramework.sln @@ -0,0 +1,33 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.14.36811.4 d17.14 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{54A90642-561A-4BB1-A94E-469ADEE60C69}") = "grid_entityframework.client", "grid_entityframework.client\grid_entityframework.client.esproj", "{984D72BB-7818-B1A2-44D2-7168C985718D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Grid_EntityFramework.Server", "Grid_EntityFramework.Server\Grid_EntityFramework.Server.csproj", "{0A164CEC-98CD-4FD9-9016-A2B772632F2D}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {984D72BB-7818-B1A2-44D2-7168C985718D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {984D72BB-7818-B1A2-44D2-7168C985718D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {984D72BB-7818-B1A2-44D2-7168C985718D}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {984D72BB-7818-B1A2-44D2-7168C985718D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {984D72BB-7818-B1A2-44D2-7168C985718D}.Release|Any CPU.Build.0 = Release|Any CPU + {984D72BB-7818-B1A2-44D2-7168C985718D}.Release|Any CPU.Deploy.0 = Release|Any CPU + {0A164CEC-98CD-4FD9-9016-A2B772632F2D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0A164CEC-98CD-4FD9-9016-A2B772632F2D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0A164CEC-98CD-4FD9-9016-A2B772632F2D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0A164CEC-98CD-4FD9-9016-A2B772632F2D}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {6C139039-C8B6-4102-B631-FF9DCEF84A09} + EndGlobalSection +EndGlobal diff --git a/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/CHANGELOG.md b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/CHANGELOG.md new file mode 100644 index 0000000..2b235fc --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/CHANGELOG.md @@ -0,0 +1,16 @@ +This file explains how Visual Studio created the project. + +The following tools were used to generate this project: +- create-vite + +The following steps were used to generate this project: +- Create react project with create-vite: `npm init --yes vite@latest ticketmanagement.client -- --template=react-ts`. +- Update `vite.config.ts` to set up proxying and certs. +- Add `@type/node` for `vite.config.js` typing. +- Update `App` component to fetch and display weather information. +- Create project file (`ticketmanagement.client.esproj`). +- Create `launch.json` to enable debugging. +- Add project to solution. +- Update proxy endpoint to be the backend server endpoint. +- Add project to the startup projects list. +- Write this file. diff --git a/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/README.md b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/README.md new file mode 100644 index 0000000..d2e7761 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/README.md @@ -0,0 +1,73 @@ +# React + TypeScript + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) (or [oxc](https://oxc.rs) when used in [rolldown-vite](https://vite.dev/guide/rolldown)) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## React Compiler + +The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation). + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules: + +```js +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + // Other configs... + + // Remove tseslint.configs.recommended and replace with this + tseslint.configs.recommendedTypeChecked, + // Alternatively, use this for stricter rules + tseslint.configs.strictTypeChecked, + // Optionally, add this for stylistic rules + tseslint.configs.stylisticTypeChecked, + + // Other configs... + ], + languageOptions: { + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + // other options... + }, + }, +]) +``` + +You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules: + +```js +// eslint.config.js +import reactX from 'eslint-plugin-react-x' +import reactDom from 'eslint-plugin-react-dom' + +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + // Other configs... + // Enable lint rules for React + reactX.configs['recommended-typescript'], + // Enable lint rules for React DOM + reactDom.configs.recommended, + ], + languageOptions: { + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + // other options... + }, + }, +]) +``` diff --git a/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/aspnetcore-https.js b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/aspnetcore-https.js new file mode 100644 index 0000000..cab03ec --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/aspnetcore-https.js @@ -0,0 +1,37 @@ +// This script sets up HTTPS for the application using the ASP.NET Core HTTPS certificate +const fs = require('fs'); +const spawn = require('child_process').spawn; +const path = require('path'); + +const baseFolder = + process.env.APPDATA !== undefined && process.env.APPDATA !== '' + ? `${process.env.APPDATA}/ASP.NET/https` + : `${process.env.HOME}/.aspnet/https`; + +const certificateArg = process.argv.map(arg => arg.match(/--name=(?.+)/i)).filter(Boolean)[0]; +const certificateName = certificateArg ? certificateArg.groups.value : process.env.npm_package_name; + +if (!certificateName) { + console.error('Invalid certificate name. Run this script in the context of an npm/yarn script or pass --name=<> explicitly.') + process.exit(-1); +} + +const certFilePath = path.join(baseFolder, `${certificateName}.pem`); +const keyFilePath = path.join(baseFolder, `${certificateName}.key`); + +if (!fs.existsSync(baseFolder)) { + fs.mkdirSync(baseFolder, { recursive: true }); +} + +if (!fs.existsSync(certFilePath) || !fs.existsSync(keyFilePath)) { + spawn('dotnet', [ + 'dev-certs', + 'https', + '--export-path', + certFilePath, + '--format', + 'Pem', + '--no-password', + ], { stdio: 'inherit', }) + .on('exit', (code) => process.exit(code)); +} \ No newline at end of file diff --git a/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/eslint.config.js b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/eslint.config.js new file mode 100644 index 0000000..5e6b472 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/eslint.config.js @@ -0,0 +1,23 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import tseslint from 'typescript-eslint' +import { defineConfig, globalIgnores } from 'eslint/config' + +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + js.configs.recommended, + tseslint.configs.recommended, + reactHooks.configs.flat.recommended, + reactRefresh.configs.vite, + ], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + }, +]) diff --git a/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/grid_entityframework.client.esproj b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/grid_entityframework.client.esproj new file mode 100644 index 0000000..9510cf7 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/grid_entityframework.client.esproj @@ -0,0 +1,10 @@ + + + npm start + Jasmine + + false + + $(MSBuildProjectDirectory)\dist\grid_entityframework.client\ + + \ No newline at end of file diff --git a/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/grid_entityframework.client.esproj.user b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/grid_entityframework.client.esproj.user new file mode 100644 index 0000000..88a5509 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/grid_entityframework.client.esproj.user @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/index.html b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/index.html new file mode 100644 index 0000000..0e06e83 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/index.html @@ -0,0 +1,13 @@ + + + + + + + GridEntityframeworkClient + + +
+ + + diff --git a/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/package.json b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/package.json new file mode 100644 index 0000000..f6a7fdd --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/package.json @@ -0,0 +1,33 @@ +{ + "name": "ticketmanagement.client", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "start": "vite", + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "@syncfusion/ej2-data": "^32.1.24", + "@syncfusion/ej2-react-grids": "^32.1.25", + "react": "^19.2.0", + "react-dom": "^19.2.0" + }, + "devDependencies": { + "@eslint/js": "^9.39.1", + "@types/node": "^24.10.1", + "@types/react": "^19.2.5", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^5.1.1", + "eslint": "^9.39.1", + "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-refresh": "^0.4.24", + "globals": "^16.5.0", + "typescript": "~5.9.3", + "typescript-eslint": "^8.46.4", + "vite": "^7.2.4" + } +} diff --git a/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/public/vite.svg b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/src/App.css b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/src/App.css new file mode 100644 index 0000000..0d37ee7 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/src/App.css @@ -0,0 +1,192 @@ +/* host equivalent to :host in Angular */ +.host { + display: block; + padding: 1rem; +} + +/* STATUS */ +.status-text { + font-weight: 600; + font-size: 0.92rem; +} + +.status-open { + color: #0d6efd; +} + +.status-inprogress { + color: #d97706; +} + +.status-waiting-customer { + color: #7c3aed; +} + +.status-waiting-agent { + color: #9333ea; +} + +.status-resolved { + color: #059669; +} + +.status-closed { + color: #047857; +} + +.status-ticket-id { + color: #4097ee; + position: relative; + text-decoration: none; + transition: color 0.3s ease-in-out; +} + +.status-ticket-id::before { + content: ""; + position: absolute; + top: 100%; + width: 100%; + height: 3px; + background-color: #94a8e1; + transform: scaleX(0); + transition: transform 0.3s ease-in-out; +} + +.status-ticket-id:hover { + color: #2d26c6; + cursor: pointer; +} + +.status-ticket-id:hover::before { + transform: scaleX(1); +} + +/* PRIORITY */ +.priority-pill { + display: inline-flex; + align-items: center; + gap: 0.45rem; + font-weight: 600; + font-size: 0.92rem; +} + +.priority-pill .priority-icon { + display: inline-block; +} + +.priority-pill.priority-critical { + color: #b91c1c; +} + +.priority-pill.priority-critical .priority-icon { + width: 0; + height: 0; + border-left: 0.35rem solid transparent; + border-right: 0.35rem solid transparent; + border-bottom: 0.65rem solid #b91c1c; +} + +.priority-pill.priority-high { + color: #dc2626; +} + +.priority-pill.priority-high .priority-icon { + width: 0; + height: 0; + border-left: 0.34rem solid transparent; + border-right: 0.34rem solid transparent; + border-bottom: 0.6rem solid #dc2626; +} + +.priority-pill.priority-medium { + color: #15803d; +} + +.priority-pill.priority-medium .priority-icon { + width: 0.6rem; + height: 0.6rem; + border-radius: 0.2rem; + background-color: #22c55e; +} + +.priority-pill.priority-low { + color: #4b5563; +} + +.priority-pill.priority-low .priority-icon { + width: 0; + height: 0; + border-left: 0.32rem solid transparent; + border-right: 0.32rem solid transparent; + border-top: 0.55rem solid #4b5563; +} + +/* CATEGORY CHIP */ +.chip { + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0.2rem 1rem; + min-height: 1.8rem; + border-radius: 999px; + font-size: 0.82rem; + font-weight: 600; + color: #fff; + line-height: 1; + white-space: nowrap; + background-color: var(--chip-color, #4b5563); +} + +.chip.category-network { + --chip-color: #4a7c59; +} + +.chip.category-performance { + --chip-color: #68b0ab; +} + +.chip.category-vpn { + --chip-color: #56638a; +} + +.chip.category-hardware { + --chip-color: #8e443d; +} + +.chip.category-server { + --chip-color: #25a18e; +} + +.chip.category-security { + --chip-color: #320a28; +} + +.chip.category-connectivity { + --chip-color: #3c6997; +} + +.chip.category-software { + --chip-color: #ae76a6; +} + +.chip.category-email { + --chip-color: #003554; +} + +.chip.category-access { + --chip-color: #0582ca; +} + +.chip.category-backup { + --chip-color: #093a3e; +} + +.chip.category-database { + --chip-color: #92374d; +} + +/* RESPONSE DUE */ +.response-due { + color: #c05621; + font-weight: 600; +} \ No newline at end of file diff --git a/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/src/App.tsx b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/src/App.tsx new file mode 100644 index 0000000..f5598eb --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/src/App.tsx @@ -0,0 +1,64 @@ +// File: src/components/TicketsGrid.tsx +import React, { useMemo } from 'react'; +import { + GridComponent, + ColumnsDirective, + ColumnDirective, + Inject, + Toolbar, + Edit, + Sort, + Filter, + Page, + type EditSettingsModel, +} from '@syncfusion/ej2-react-grids'; +import { DataManager } from '@syncfusion/ej2-data'; +import { CustomAdaptor } from './CustomAdaptor'; + +const App: React.FC = () => { + const dataManager = useMemo(() => new DataManager({ + url: 'http://localhost:5018/api/tickets/url', + insertUrl: 'http://localhost:5018/api/tickets/insert', + updateUrl: 'http://localhost:5018/api/tickets/update', + removeUrl: 'http://localhost:5018/api/tickets/remove', + batchUrl: 'http://localhost:5018/api/tickets/batch', + adaptor: new CustomAdaptor(), + }), []); + + const toolbar: string[] = ['Add', 'Edit', 'Delete', 'Update', 'Cancel', 'Search']; + + const editSettings: EditSettingsModel = { + allowAdding: true, + allowEditing: true, + allowDeleting: true, + // mode: 'Batch', + }; + + return ( + + + + + + + + + + + + + + + + ); +}; + +export default App; \ No newline at end of file diff --git a/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/src/CustomAdaptor.ts b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/src/CustomAdaptor.ts new file mode 100644 index 0000000..f5f4047 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/src/CustomAdaptor.ts @@ -0,0 +1,69 @@ +// File: src/app/custom-adaptor.ts +import { type BatchChanges } from "@syncfusion/ej2-react-grids"; +import { + DataManager, + UrlAdaptor, + type ReturnOption, + type DataResult, +} from "@syncfusion/ej2-data"; + +export class CustomAdaptor extends UrlAdaptor { + public override processResponse(data: DataResult): ReturnOption { + const original = data as any; + if (original && original.result) { + let i = 0; + original.result.forEach((item: any) => (item.SNo = ++i)); + } + return original; + } + + public override beforeSend( + dm: DataManager, + request: Request, + settings?: any, + ): void { + super.beforeSend(dm, request, settings); + } + + public override insert(dm: DataManager, data: DataResult) { + return { + url: `${dm.dataSource["insertUrl"]}`, + type: "POST", + contentType: "application/json; charset=utf-8", + data: JSON.stringify({ value: data }), + }; + } + + public override update(dm: DataManager, _keyField: string, value: any) { + return { + url: `${dm.dataSource["updateUrl"]}`, + type: "POST", + contentType: "application/json; charset=utf-8", + data: JSON.stringify({ value }), + }; + } + + public override remove(dm: DataManager, keyField: string, value: any) { + const keyValue = + value && typeof value === "object" ? value[keyField] : value; + return { + url: `${dm.dataSource["removeUrl"]}`, + type: "POST", + contentType: "application/json; charset=utf-8", + data: JSON.stringify({ key: keyValue }), + }; + } + + public override batchRequest(dm: DataManager, changes: BatchChanges) { + return { + url: `${dm.dataSource["batchUrl"]}`, + type: "POST", + contentType: "application/json; charset=utf-8", + data: JSON.stringify({ + added: changes.addedRecords, + changed: changes.changedRecords, + deleted: changes.deletedRecords, + }), + }; + } +} diff --git a/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/src/assets/react.svg b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/src/assets/react.svg new file mode 100644 index 0000000..6c87de9 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/src/index.css b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/src/index.css new file mode 100644 index 0000000..53a481e --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/src/index.css @@ -0,0 +1,10 @@ +@import '../node_modules/@syncfusion/ej2-base/styles/bootstrap5.3.css'; +@import '../node_modules/@syncfusion/ej2-buttons/styles/bootstrap5.3.css'; +@import '../node_modules/@syncfusion/ej2-calendars/styles/bootstrap5.3.css'; +@import '../node_modules/@syncfusion/ej2-dropdowns/styles/bootstrap5.3.css'; +@import '../node_modules/@syncfusion/ej2-inputs/styles/bootstrap5.3.css'; +@import '../node_modules/@syncfusion/ej2-navigations/styles/bootstrap5.3.css'; +@import '../node_modules/@syncfusion/ej2-popups/styles/bootstrap5.3.css'; +@import '../node_modules/@syncfusion/ej2-splitbuttons/styles/bootstrap5.3.css'; +@import '../node_modules/@syncfusion/ej2-notifications/styles/bootstrap5.3.css'; +@import '../node_modules/@syncfusion/ej2-react-grids/styles/bootstrap5.3.css'; \ No newline at end of file diff --git a/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/src/main.tsx b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/src/main.tsx new file mode 100644 index 0000000..bef5202 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/src/main.tsx @@ -0,0 +1,10 @@ +import { StrictMode } from 'react' +import { createRoot } from 'react-dom/client' +import './index.css' +import App from './App.tsx' + +createRoot(document.getElementById('root')!).render( + + + , +) diff --git a/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/tsconfig.app.json b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/tsconfig.app.json new file mode 100644 index 0000000..a9b5a59 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/tsconfig.app.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "target": "ES2022", + "useDefineForClassFields": true, + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "module": "ESNext", + "types": ["vite/client"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["src"] +} diff --git a/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/tsconfig.json b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/tsconfig.json new file mode 100644 index 0000000..1ffef60 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/tsconfig.json @@ -0,0 +1,7 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] +} diff --git a/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/tsconfig.node.json b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/tsconfig.node.json new file mode 100644 index 0000000..8a67f62 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/tsconfig.node.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "target": "ES2023", + "lib": ["ES2023"], + "module": "ESNext", + "types": ["node"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/vite.config.ts b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/vite.config.ts new file mode 100644 index 0000000..e6b0f97 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-EntityFrameWork/grid_entityframework.client/vite.config.ts @@ -0,0 +1,61 @@ +import { fileURLToPath, URL } from 'node:url'; + +import { defineConfig } from 'vite'; +import plugin from '@vitejs/plugin-react'; +import fs from 'fs'; +import path from 'path'; +import child_process from 'child_process'; +import { env } from 'process'; + +const baseFolder = + env.APPDATA !== undefined && env.APPDATA !== '' + ? `${env.APPDATA}/ASP.NET/https` + : `${env.HOME}/.aspnet/https`; + +const certificateName = "ticketmanagement.client"; +const certFilePath = path.join(baseFolder, `${certificateName}.pem`); +const keyFilePath = path.join(baseFolder, `${certificateName}.key`); + +if (!fs.existsSync(baseFolder)) { + fs.mkdirSync(baseFolder, { recursive: true }); +} + +if (!fs.existsSync(certFilePath) || !fs.existsSync(keyFilePath)) { + if (0 !== child_process.spawnSync('dotnet', [ + 'dev-certs', + 'https', + '--export-path', + certFilePath, + '--format', + 'Pem', + '--no-password', + ], { stdio: 'inherit', }).status) { + throw new Error("Could not create certificate."); + } +} + +const target = env.ASPNETCORE_HTTPS_PORT ? `https://localhost:${env.ASPNETCORE_HTTPS_PORT}` : + env.ASPNETCORE_URLS ? env.ASPNETCORE_URLS.split(';')[0] : 'https://localhost:7290'; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [plugin()], + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)) + } + }, + server: { + proxy: { + '^/weatherforecast': { + target, + secure: false + } + }, + port: parseInt(env.DEV_SERVER_PORT || '59074'), + https: { + key: fs.readFileSync(keyFilePath), + cert: fs.readFileSync(certFilePath), + } + } +}) diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/CHANGELOG.md b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/CHANGELOG.md new file mode 100644 index 0000000..03c2619 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/CHANGELOG.md @@ -0,0 +1,8 @@ +This file explains how Visual Studio created the project. + +The following steps were used to generate this project: +- Create new ASP\.NET Core Web API project. +- Update project file to add a reference to the frontend project and set SPA properties. +- Update `launchSettings.json` to register the SPA proxy as a startup assembly. +- Add project to the startup projects list. +- Write this file. diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/Controllers/TicketsController.cs b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/Controllers/TicketsController.cs new file mode 100644 index 0000000..e5f3bda --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/Controllers/TicketsController.cs @@ -0,0 +1,128 @@ +using Grid_MSSQL.Server.Data; +using Microsoft.AspNetCore.Mvc; +using Syncfusion.EJ2.Base; + +namespace Grid_MSSQL.Server.Controllers +{ + [ApiController] + [Route("api/[controller]")] + public class TicketsController : ControllerBase + { + private readonly TicketRepository _repo; + private readonly DataOperations _dataOps = new DataOperations(); + + public TicketsController(TicketRepository repo) + { + _repo = repo; + } + + // READ (DataManager + UrlAdaptor expects POST) + // POST api/tickets + [HttpPost] + public async Task List([FromBody] DataManagerRequest dm) + { + IEnumerable data = await _repo.GetTicketsAsync(); + + // Searching + if (dm.Search != null && dm.Search.Count > 0) + { + data = _dataOps.PerformSearching(data, dm.Search); + } + + // Filtering + if (dm.Where != null && dm.Where.Count > 0) + { + data = _dataOps.PerformFiltering(data, dm.Where, dm.Where[0].Operator); + } + + // Sorting + if (dm.Sorted != null && dm.Sorted.Count > 0) + { + data = _dataOps.PerformSorting(data, dm.Sorted); + } + + // Count BEFORE paging + int count = data.Count(); + + // Paging + if (dm.Skip != 0) + data = _dataOps.PerformSkip(data, dm.Skip); + if (dm.Take != 0) + data = _dataOps.PerformTake(data, dm.Take); + + // Final shape required by UrlAdaptor + return Ok(dm.RequiresCounts ? new { result = data, count } : data); + } + + [HttpGet("ping")] + public IActionResult Ping() => Ok(new { ok = true, time = DateTime.UtcNow }); + + // INSERT + // POST api/tickets/insert + [HttpPost("insert")] + public async Task Insert([FromBody] CRUDModel args) + { + if (args?.Value == null) + return BadRequest("Invalid payload."); + var created = await _repo.InsertAsync(args.Value); + return Ok(created); + } + + // UPDATE + // POST api/tickets/update + [HttpPost("update")] + public async Task Update([FromBody] CRUDModel args) + { + if (args?.Value == null) + return BadRequest("Invalid payload."); + if (args.Value.TicketId <= 0) + return BadRequest("TicketId is required for update."); + var updated = await _repo.UpdateAsync(args.Value); + return Ok(updated); + } + + // REMOVE + // POST api/tickets/remove + // UrlAdaptor sends { key: , keyColumn: "TicketId", action: "remove" } + [HttpPost("remove")] + public async Task Remove([FromBody] CRUDModel args) + { + if (args == null || args.Key == null) + return BadRequest("Key is required."); + if (!int.TryParse(args.Key.ToString(), out var id)) + return BadRequest("Invalid key format."); + + await _repo.DeleteAsync(id); + return Ok(new { TicketId = id }); + } + + // BATCH + // POST api/tickets/batch + [HttpPost("batch")] + public async Task Batch([FromBody] CRUDModel args) + { + if (args == null) + return BadRequest("Invalid payload."); + + if (args.Changed != null) + { + foreach (var t in args.Changed) + await _repo.UpdateAsync(t); + } + + if (args.Added != null) + { + for (int i = 0; i < args.Added.Count; i++) + args.Added[i] = await _repo.InsertAsync(args.Added[i]); + } + + if (args.Deleted != null) + { + foreach (var t in args.Deleted) + await _repo.DeleteAsync(t.TicketId); + } + + return Ok(new { status = "ok" }); + } + } +} diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/Data/TicketRepository.cs b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/Data/TicketRepository.cs new file mode 100644 index 0000000..605e83b --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/Data/TicketRepository.cs @@ -0,0 +1,221 @@ +using Microsoft.Data.SqlClient; + +namespace Grid_MSSQL.Server.Data +{ + public class TicketRepository + { + private readonly string _connectionString; + + // Public Ticket ID Configuration + private const string PublicTicketIdPrefix = "NET"; + private const string PublicTicketIdSeparator = "-"; + private const int PublicTicketIdStartNumber = 1001; + + /// + /// Initializes the repository with a connection string from configuration. + /// + public TicketRepository(IConfiguration configuration) + { + _connectionString = configuration.GetConnectionString("TicketDb")!; + } + + /// + /// Creates a new SQL connection using the configured connection string. + /// + private SqlConnection GetConnection() => new SqlConnection(_connectionString); + + /// + /// Returns all tickets ordered by TicketId. + /// + public async Task> GetTicketsAsync() + { + var list = new List(); + const string sql = + @"SELECT TicketId, PublicTicketId, Title, Description, Category, Department, Assignee, + CreatedBy, Status, Priority, ResponseDue, DueDate, CreatedAt, UpdatedAt + FROM dbo.Tickets ORDER BY TicketId"; + + await using var conn = GetConnection(); + await conn.OpenAsync(); + await using var cmd = new SqlCommand(sql, conn); + await using var reader = await cmd.ExecuteReaderAsync(); + + while (await reader.ReadAsync()) + { + list.Add( + new Tickets + { + TicketId = reader.GetInt32(reader.GetOrdinal("TicketId")), + PublicTicketId = reader["PublicTicketId"] as string, + Title = reader["Title"] as string, + Description = reader["Description"] as string, + Category = reader["Category"] as string, + Department = reader["Department"] as string, + Assignee = reader["Assignee"] as string, + CreatedBy = reader["CreatedBy"] as string, + Status = reader["Status"] as string, + Priority = reader["Priority"] as string, + ResponseDue = + reader["ResponseDue"] == DBNull.Value + ? null + : Convert.ToDateTime(reader["ResponseDue"]), + DueDate = + reader["DueDate"] == DBNull.Value + ? null + : Convert.ToDateTime(reader["DueDate"]), + CreatedAt = + reader["CreatedAt"] == DBNull.Value + ? null + : Convert.ToDateTime(reader["CreatedAt"]), + UpdatedAt = + reader["UpdatedAt"] == DBNull.Value + ? null + : Convert.ToDateTime(reader["UpdatedAt"]), + } + ); + } + return list; + } + + /// + /// Generates the next public ticket ID (e.g., NET-1002) by reading the current max numeric suffix. + /// + private async Task GeneratePublicTicketIdAsync() + { + // Efficiently get max numeric suffix with SQL + string like = $"{PublicTicketIdPrefix}{PublicTicketIdSeparator}%"; + const string sql = + @" + SELECT MAX(TRY_CAST(SUBSTRING(PublicTicketId, LEN(@prefix) + LEN(@sep) + 1, 50) AS INT)) + FROM dbo.Tickets + WHERE PublicTicketId LIKE @like"; + int? maxNumber = null; + + await using var conn = GetConnection(); + await conn.OpenAsync(); + await using var cmd = new SqlCommand(sql, conn); + cmd.Parameters.AddWithValue("@prefix", PublicTicketIdPrefix); + cmd.Parameters.AddWithValue("@sep", PublicTicketIdSeparator); + cmd.Parameters.AddWithValue("@like", like); + + var result = await cmd.ExecuteScalarAsync(); + if (result != DBNull.Value && result != null) + { + maxNumber = Convert.ToInt32(result); + } + + int next = (maxNumber ?? (PublicTicketIdStartNumber - 1)) + 1; + return $"{PublicTicketIdPrefix}{PublicTicketIdSeparator}{next}"; + } + + /// + /// Inserts a new ticket and returns the created entity with its TicketId. + /// + public async Task InsertAsync(Tickets value) + { + // Auto-generate PublicTicketId if empty + if (string.IsNullOrWhiteSpace(value.PublicTicketId)) + { + value.PublicTicketId = await GeneratePublicTicketIdAsync(); + } + + // Default timestamps + value.CreatedAt ??= DateTime.UtcNow; + value.UpdatedAt ??= DateTime.UtcNow; + + const string sql = + @" + INSERT INTO dbo.Tickets + (PublicTicketId, Title, Description, Category, Department, Assignee, CreatedBy, Status, Priority, + ResponseDue, DueDate, CreatedAt, UpdatedAt) + OUTPUT INSERTED.TicketId + VALUES + (@PublicTicketId, @Title, @Description, @Category, @Department, @Assignee, @CreatedBy, @Status, @Priority, + @ResponseDue, @DueDate, @CreatedAt, @UpdatedAt);"; + + await using var conn = GetConnection(); + await conn.OpenAsync(); + await using var cmd = new SqlCommand(sql, conn); + cmd.Parameters.AddWithValue( + "@PublicTicketId", + (object?)value.PublicTicketId ?? DBNull.Value + ); + cmd.Parameters.AddWithValue("@Title", (object?)value.Title ?? DBNull.Value); + cmd.Parameters.AddWithValue("@Description", (object?)value.Description ?? DBNull.Value); + cmd.Parameters.AddWithValue("@Category", (object?)value.Category ?? DBNull.Value); + cmd.Parameters.AddWithValue("@Department", (object?)value.Department ?? DBNull.Value); + cmd.Parameters.AddWithValue("@Assignee", (object?)value.Assignee ?? DBNull.Value); + cmd.Parameters.AddWithValue("@CreatedBy", (object?)value.CreatedBy ?? DBNull.Value); + cmd.Parameters.AddWithValue("@Status", (object?)value.Status ?? DBNull.Value); + cmd.Parameters.AddWithValue("@Priority", (object?)value.Priority ?? DBNull.Value); + cmd.Parameters.AddWithValue("@ResponseDue", (object?)value.ResponseDue ?? DBNull.Value); + cmd.Parameters.AddWithValue("@DueDate", (object?)value.DueDate ?? DBNull.Value); + cmd.Parameters.AddWithValue("@CreatedAt", (object?)value.CreatedAt ?? DBNull.Value); + cmd.Parameters.AddWithValue("@UpdatedAt", (object?)value.UpdatedAt ?? DBNull.Value); + + value.TicketId = Convert.ToInt32(await cmd.ExecuteScalarAsync()); + return value; + } + + /// + /// Updates an existing ticket by TicketId and returns the updated entity. + /// + public async Task UpdateAsync(Tickets value) + { + value.UpdatedAt ??= DateTime.UtcNow; + + const string sql = + @" + UPDATE dbo.Tickets + SET PublicTicketId = @PublicTicketId, + Title = @Title, + Description = @Description, + Category = @Category, + Department = @Department, + Assignee = @Assignee, + CreatedBy = @CreatedBy, + Status = @Status, + Priority = @Priority, + ResponseDue = @ResponseDue, + DueDate = @DueDate, + UpdatedAt = @UpdatedAt + WHERE TicketId = @TicketId;"; + + await using var conn = GetConnection(); + await conn.OpenAsync(); + await using var cmd = new SqlCommand(sql, conn); + cmd.Parameters.AddWithValue("@TicketId", value.TicketId); + cmd.Parameters.AddWithValue( + "@PublicTicketId", + (object?)value.PublicTicketId ?? DBNull.Value + ); + cmd.Parameters.AddWithValue("@Title", (object?)value.Title ?? DBNull.Value); + cmd.Parameters.AddWithValue("@Description", (object?)value.Description ?? DBNull.Value); + cmd.Parameters.AddWithValue("@Category", (object?)value.Category ?? DBNull.Value); + cmd.Parameters.AddWithValue("@Department", (object?)value.Department ?? DBNull.Value); + cmd.Parameters.AddWithValue("@Assignee", (object?)value.Assignee ?? DBNull.Value); + cmd.Parameters.AddWithValue("@CreatedBy", (object?)value.CreatedBy ?? DBNull.Value); + cmd.Parameters.AddWithValue("@Status", (object?)value.Status ?? DBNull.Value); + cmd.Parameters.AddWithValue("@Priority", (object?)value.Priority ?? DBNull.Value); + cmd.Parameters.AddWithValue("@ResponseDue", (object?)value.ResponseDue ?? DBNull.Value); + cmd.Parameters.AddWithValue("@DueDate", (object?)value.DueDate ?? DBNull.Value); + cmd.Parameters.AddWithValue("@UpdatedAt", (object?)value.UpdatedAt ?? DBNull.Value); + + await cmd.ExecuteNonQueryAsync(); + return value; + } + + /// + /// Deletes a ticket by TicketId. Returns affected rows (0 or 1). + /// + public async Task DeleteAsync(int ticketId) + { + const string sql = @"DELETE FROM dbo.Tickets WHERE TicketId = @TicketId;"; + await using var conn = GetConnection(); + await conn.OpenAsync(); + await using var cmd = new SqlCommand(sql, conn); + cmd.Parameters.AddWithValue("@TicketId", ticketId); + return await cmd.ExecuteNonQueryAsync(); + } + } +} diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/Data/Tickets.cs b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/Data/Tickets.cs new file mode 100644 index 0000000..d51f2e3 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/Data/Tickets.cs @@ -0,0 +1,82 @@ +using System.ComponentModel.DataAnnotations; + +namespace Grid_MSSQL.Server.Data +{ + /// + /// Represents a ticket record mapped to the 'Tickets' table in the database. + /// This model defines the structure of ticket-related data used throughout the application. + /// + public class Tickets + { + /// + /// Gets or sets the unique identifier for the ticket record. + /// + [Key] + public int TicketId { get; set; } + + /// + /// Gets or sets the public-facing ticket identifier (e.g., NET-1001). + /// + public string? PublicTicketId { get; set; } + + /// + /// Gets or sets the ticket title or subject. + /// + public string? Title { get; set; } + + /// + /// Gets or sets a detailed description of the ticket. + /// + public string? Description { get; set; } + + /// + /// Gets or sets the category of the issue (e.g., Network, Hardware, Software). + /// + public string? Category { get; set; } + + /// + /// Gets or sets the department responsible for handling the ticket. + /// + public string? Department { get; set; } + + /// + /// Gets or sets the name of the agent assigned to the ticket. + /// + public string? Assignee { get; set; } + + /// + /// Gets or sets the name of the person who created the ticket. + /// + public string? CreatedBy { get; set; } + + /// + /// Gets or sets the current status of the ticket (e.g., Open, In Progress, Resolved, Closed). + /// + public string? Status { get; set; } + + /// + /// Gets or sets the priority level of the ticket (e.g., Critical, High, Medium, Low). + /// + public string? Priority { get; set; } + + /// + /// Gets or sets the deadline for responding to the ticket. + /// + public DateTime? ResponseDue { get; set; } + + /// + /// Gets or sets the deadline for resolving the ticket. + /// + public DateTime? DueDate { get; set; } + + /// + /// Gets or sets the timestamp indicating when the ticket was created. + /// + public DateTime? CreatedAt { get; set; } + + /// + /// Gets or sets the timestamp indicating when the ticket was last updated. + /// + public DateTime? UpdatedAt { get; set; } + } +} diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/Grid_MSSQL.Server.csproj b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/Grid_MSSQL.Server.csproj new file mode 100644 index 0000000..10128be --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/Grid_MSSQL.Server.csproj @@ -0,0 +1,27 @@ + + + + net8.0 + enable + enable + ..\grid_mssql.client + npm run dev + https://localhost:64691 + + + + + 8.*-* + + + + + + + + + false + + + + diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/Grid_MSSQL.Server.csproj.user b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/Grid_MSSQL.Server.csproj.user new file mode 100644 index 0000000..9ff5820 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/Grid_MSSQL.Server.csproj.user @@ -0,0 +1,6 @@ + + + + https + + \ No newline at end of file diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/Grid_MSSQL.Server.http b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/Grid_MSSQL.Server.http new file mode 100644 index 0000000..eeacfaa --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/Grid_MSSQL.Server.http @@ -0,0 +1,6 @@ +@Grid_MSSQL.Server_HostAddress = http://localhost:5239 + +GET {{Grid_MSSQL.Server_HostAddress}}/weatherforecast/ +Accept: application/json + +### diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/Program.cs b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/Program.cs new file mode 100644 index 0000000..65541f1 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/Program.cs @@ -0,0 +1,41 @@ +using Grid_MSSQL.Server.Data; + +var builder = WebApplication.CreateBuilder(args); + +// Add MVC controllers and keep JSON property names as-is (PascalCase) +builder + .Services.AddControllers() + .AddJsonOptions(options => + { + options.JsonSerializerOptions.PropertyNamingPolicy = null; + options.JsonSerializerOptions.DictionaryKeyPolicy = null; + options.JsonSerializerOptions.ReferenceHandler = null; + }); + +// (Optional) Swagger for API exploration in Development +builder.Services.AddEndpointsApiExplorer(); +builder.Services.AddSwaggerGen(); + +// CORS: allow all (simple for local dev / separate frontend) +builder.Services.AddCors(options => +{ + options.AddDefaultPolicy(policy => policy.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod()); +}); + +// Register repository for DI +builder.Services.AddScoped(); + +var app = builder.Build(); + +// Swagger only in Development +if (app.Environment.IsDevelopment()) +{ + app.UseSwagger(); + app.UseSwaggerUI(); +} + +// Enable CORS and map controllers +app.UseCors(); +app.MapControllers(); + +app.Run(); diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/Properties/launchSettings.json b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/Properties/launchSettings.json new file mode 100644 index 0000000..e692899 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/Properties/launchSettings.json @@ -0,0 +1,45 @@ +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:10768", + "sslPort": 44315 + } + }, + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "launchUrl": "swagger", + "applicationUrl": "http://localhost:5239", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development", + "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.SpaProxy" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "launchUrl": "swagger", + "applicationUrl": "https://localhost:7225;http://localhost:5239", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development", + "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.SpaProxy" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "launchUrl": "swagger", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development", + "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.SpaProxy" + } + } + } +} + diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/appsettings.Development.json b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/appsettings.Development.json new file mode 100644 index 0000000..0c208ae --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/appsettings.json b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/appsettings.json new file mode 100644 index 0000000..ff161a4 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/appsettings.json @@ -0,0 +1,12 @@ +{ + "ConnectionStrings": { + "TicketDb": "Data Source=localhost;Initial Catalog=NetworkSupportDB;Integrated Security=True;Connect Timeout=30;Encrypt=False;Trust Server Certificate=False;Application Intent=ReadWrite;Multi Subnet Failover=False" + }, + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} \ No newline at end of file diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 0000000..2217181 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/Debug/net8.0/Grid_MSSQL.Server.AssemblyInfo.cs b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/Debug/net8.0/Grid_MSSQL.Server.AssemblyInfo.cs new file mode 100644 index 0000000..c7410f7 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/Debug/net8.0/Grid_MSSQL.Server.AssemblyInfo.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("Grid_MSSQL.Server")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+503b51daf37e477794decc21a93b29e7a8bee5c8")] +[assembly: System.Reflection.AssemblyProductAttribute("Grid_MSSQL.Server")] +[assembly: System.Reflection.AssemblyTitleAttribute("Grid_MSSQL.Server")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// Generated by the MSBuild WriteCodeFragment class. + diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/Debug/net8.0/Grid_MSSQL.Server.AssemblyInfoInputs.cache b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/Debug/net8.0/Grid_MSSQL.Server.AssemblyInfoInputs.cache new file mode 100644 index 0000000..30ee70e --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/Debug/net8.0/Grid_MSSQL.Server.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +80cf5fb59ee152c5288fc308b1d2dfb5c90cbba047d37a76223d49b4bc91d94f diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/Debug/net8.0/Grid_MSSQL.Server.GeneratedMSBuildEditorConfig.editorconfig b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/Debug/net8.0/Grid_MSSQL.Server.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..e4be511 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/Debug/net8.0/Grid_MSSQL.Server.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,23 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetFrameworkIdentifier = .NETCoreApp +build_property.TargetFrameworkVersion = v8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = true +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = Grid_MSSQL.Server +build_property.RootNamespace = Grid_MSSQL.Server +build_property.ProjectDir = D:\Documentation Work\MSSQL\syncfusion-react-grid-with-mssql-database\Grid_MSSQL\Grid_MSSQL.Server\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = +build_property.RazorLangVersion = 8.0 +build_property.SupportLocalizedComponentNames = +build_property.GenerateRazorMetadataSourceChecksumAttributes = +build_property.MSBuildProjectDirectory = D:\Documentation Work\MSSQL\syncfusion-react-grid-with-mssql-database\Grid_MSSQL\Grid_MSSQL.Server +build_property._RazorSourceGeneratorDebug = +build_property.EffectiveAnalysisLevelStyle = 8.0 +build_property.EnableCodeStyleSeverity = diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/Debug/net8.0/Grid_MSSQL.Server.GlobalUsings.g.cs b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/Debug/net8.0/Grid_MSSQL.Server.GlobalUsings.g.cs new file mode 100644 index 0000000..5e6145d --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/Debug/net8.0/Grid_MSSQL.Server.GlobalUsings.g.cs @@ -0,0 +1,17 @@ +// +global using Microsoft.AspNetCore.Builder; +global using Microsoft.AspNetCore.Hosting; +global using Microsoft.AspNetCore.Http; +global using Microsoft.AspNetCore.Routing; +global using Microsoft.Extensions.Configuration; +global using Microsoft.Extensions.DependencyInjection; +global using Microsoft.Extensions.Hosting; +global using Microsoft.Extensions.Logging; +global using System; +global using System.Collections.Generic; +global using System.IO; +global using System.Linq; +global using System.Net.Http; +global using System.Net.Http.Json; +global using System.Threading; +global using System.Threading.Tasks; diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/Debug/net8.0/Grid_MSSQL.Server.assets.cache b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/Debug/net8.0/Grid_MSSQL.Server.assets.cache new file mode 100644 index 0000000000000000000000000000000000000000..5fe5cad1c9e8665f1aecdf2f79181bb719cb28e1 GIT binary patch literal 30308 zcmdU2X_y?xS(bNoCd7$k$B`A;mMkms%HCe>YPDJ!oM^o($t!EuvQ}0C4A8wZy}P|T zm#2Fqtphm-&VdthKoTH82!|m+fN&q-3P&K^AwUA*J_5h^!B771zTMT+U)OZcbkFX} zlX;$3vt9F5)%#UdSJhWvRq65*7pA^y+qP||zBKa5Yt@f@wzB7ikAHgVi~B$GsptOZ z`7b>1<QVZo|;D>Zjzw$b!ftaYnltrm=G zbJ_L^b*s2$E!%FP;uIS-x3=UN_D#>Ox=yX?8s*yZvQu3)tVP#rSVfP4g-PRtak5}l zt@8S_Ouba|sz?d3%j?x~W4usw3v;d1&PAzRQmI|At9HZkY7N&YmCFO*%Fk^8|0eg3 zZUXmOJ)%3-3*9G!1dN4Rvr)7aX_SB@yyv=AT#Hi!OUL8S9ZoY6K`Mk$Rx)X-yc*Q03cE6@auE37CaBV33=v&QV!?+4MjB-~WRUVb!1W%R zZP@Fm4!JOHOp3RPy zi(YLFlb^zALmPS8D?ea*5z$_6FJASd$wEB_YNYxgK&nGP&KW|bHHiuvLQtscjml0k ze2>IneH?Toy@&AJ^Pm)`hXK>86>H@jrHC;zh$2hyVU6N2oj5rDCmG zMK7DZL?gmaB7xb`bdZ3gZ)o&K@ciZtc1}V4=WV0yjq`-YZ4}Sd9=Wjut-6ER8ixAT z3@Mt1$c~eRHC1s1e7{M1fi9S4;66PNZK^*lZUXoLa z+l1nF8sCe#im7Vf@L)61tYQaK7(MA5PpZeBKyNr7Nw6=GMKh_gKcljL1mF3J#=T*= zD~rwITG_^|F`Cuhu$GtY2IgiH@kzvjke9RCKwfhDYQ^nq6t_q5owNVwOm5k(=H&+y zO;UWVM)7rcep|l&qcg>(lb7Msvy$Lhjo=iX%ek5tXY@-=+UkbAI;N^Pu-Z26{>CYuR_f(S=yHabw zo`$WMT4r;BjBihhnw(P{!Xlc-bKX8Gs7co@HXB%yFp7=!x>s9nSoM{4qrQff85&|q z^|%m5nU+y5BZ@4hCpC(f@%-VQ8e0lQOsp`mu}iJ;ihQx=hy9T~DCS91^|~*CfBb$gS|?@j?ZIQ%dot*r#AL!n zL`@=L4UZCnivOav7S#CT15pO?AB~0iS)>6<57xIuS3G3bn7LNFwz}_@T_k8IzTkqc&|F*dpp9U=*3`C^kO6>_4NopnA~2F5KQwh zp@K??BT!O8-+*wGY0DO*c_-S`NMMMCsnOaaEn0g?seL2D>C+p|Wq2XNwhM@X9s$$i z%Axa4*>(>d9hBHq@xId4{4e(K%GgwugNz}C7qMW)idnRDJ&X{{n} zqVG^p+o#Hd*1#?I844bJ+gLAr+xo{>C`Pyu;3|EAedGfa45bgSpL~CUqV)acT$77>Ye(&Jsrb8n%E8{L>>jGnq!F}^ zt5<@yY0ra5oL0+`mYrD3WH1CZ>FeuvAD^HteSGUIZ}#k8%;aA#6;fGCDt#lFhTEeRWw{%$vND*fqy4Hs0Dp+Z!R!FOS-^% zshR{>HqyEzyvH{5hwyBzy_88uGy^s4zOifliZD(BA>|%Dbvf#a-^4+l=lKA zpi};Sg!SA;H__iFnt=4Tk@}s03Fy>+0AZWzj}z8PY6l^B>ITY3Q+WO$!u!WxClrwW zIu`VS6a_wp@Xc_B71gFFOPn=~pY4pFLKEAAlJ-+^n`zkGe+U%W-07pGDnAUEfZk?) z1YtQBc%sq8j!t@qsst+-?R#XS_LHE5+AJdI|0rmYJ{NdM{{_GVboxJru&*S~s!&mS zR;ePlGMIp_;*TS2Ga8%nC+P?Dc(On7Js0&9dY0stGuhZ~14Y)>AV5{_0Zc$w<>Lr@ zW3DkOv8~0=`FA599_klGza2ctm-}PL_a^`o(E0u(!g4MzCK9fI7|2tU;;YTpFvn(I>?1ChryA>em_86jsPa0>+-V* z>mvuc(0~(FYH$>w2Co53K-b`t2)NpnV*4 zSn>}7r2PT*#Rl1jzX`U;;YlUqRSbZy*q~CXpR!$wR;T&}Dsq@gV3Fy>+9bq{acRN$>^)PX0;++K{wi9kp zAn_@{1a#t`LfEa_z#vNYF=R}F(*Oz104AUl{0)TlOt6>3$6*PcL&lQec|4ndPVhGo z){{R!?+y%6c;rZKy8ss61;7M!Zoh@FoaUkO_u~qT=(q@ukc+2EaCoHMj8`WvVkb=! z&z(rS<+nkRs)WY;@8E9}&{g>~!g8)fC{@H+>&-iN9k!CkK}*uVh-VYf>HjXm)^l06 z3G8j2w}GjiTJ-V|Pk1;-7WVIfg=G8tcs2o@?H?d4=R{f2O`6^Gwsl4{_a{Jyw8M$= zCH!pyI_=LOtfyBo@75Z@Z4PlK}k}-jAs+jss9ne z`g3cJsE4OOlFEc@npg0*3Fyjv7Gb-AoXtC$zb9_pQAcOpLbK}JOkOh6c8-8LY4D>j zjsG#iOhBjpCkR^t{uKB#;Lm~0bz!#DxZzYcs>NS`oeAh#{3XJu#peKO@mIhHHpjbf zxK$@S#f%-Xyb@1pG;B306XS&{4n$t>urrBAp+)U{9{kv_{us+{sEv?{|MYFttKZnT37!BwkDu!_0I^S zR{sJ}tA7RFo3F0A56`mc$(Ly%=++a*>N(qWdH=3#fcl{QZy;*|`iu4N2-9DzxA%im z;$_lx`HvJ`{xdujiGdKyN2|MqW$u|)8u+gkH++~-QKaozoj&6&d^6R<9Pb9OFx)Fw@W{a zj%6O`8dfNh>wZ7Ti3|xwCj*gWsxFaK>@tzp=E@)zl?5WMbch#SaKLUjL+a`%9ujN6 zu>{>AZ^sOqa@6(6I#aiskWPo&P0&%}Qp-_AC^;qlMieHg--xm^xQp^$l@MmnBifxQ zez`1&V`#F|4K7AO?}vLTWa)I4XOi77Qjv|Nb9(B^$F8@ojEMT{oMLcAV}~1Bb_Ta; z$dOIEdILHpUg2^?l8A2WXkGE*7fwvZzspbz(v-+@e~UlRjgGaaCFh{g-_h-Y-7a;J z{eqg-CcQ3(x(zU#XQ(Yb91jn-lM=rM?IV~kr%%LU?W3D8lgx3I%$at6DMaK2G|XiC zyj8Jxsj1ieCMeg5R0xDN3`i!>{!*F zDc7~VtLt@pPb+-SbgjOAsaCYg+dWj(KHPBTIb2MrRTr9zthk}f$F^P-k38cva4jP) zwj4wXyQZ6E5C7f9K+%=lOLj)?Lz$0V4MK9DWXoLatR*y*`B>B-BnRx6E=!H9x@11K zGziIorH0hS@v`QU`B>2)BnKQ%=CW#K%_Z}(pFv0ttXeXcwOZC(G9Swsgyg_lP3BUU z^Q=zq$57^DGlP&EsFzQRe$+p#l2M(9^PFti83^z2zocG`X2$G>GM_&ggycY@DRc2M zx9ZI2Lk1x^;5FnZq)ugIRLIDAh$9r=rT%EoIqOTMa?X6_BFNAysGPlBYGFpLB!vIH z(7yP!nf?qRGO^{9RQ%sN!XQa8=#Po^86~H^0vOfBYD)W$4@NPCg{hhIWGqZmA(*sn zJJ}}f5{X$1Cvr*3g3?)T+LZIhj)_M*wvT0$JCi7vWt|~e&CnK=_BYjhD6y7BX^Q>8 zhY~pn0bw+Y6vXb_ZkY+u)GCO}i1n;+o~`Z<)v8?oRS*pSyBE<|L+SQK3nnWXYh18x z89}t7xMWx#NG)|OBQoS6buudacuJ8}o6UZITAaude`O>htZQNHCt1pOB-p|CceWZ? zY)3nbC{y);&QgK-3A-tFnIlr)FM?tg<6X)Q)6B%|mx9V3CrnFj|47}@F`P^Kn39gn z&h~ppS&W_T9X&4Iu!Q8~4v5f_mD$PPLo+(w+EmL?=4)8Ant^&$Wu0Odsw>`&&QiMd zcq(*DjL@Sj*DInX+&%!cV&(Ef-yP=F7HjX7;7aJARF)jOv7L0r!w4hr6KCbtid4wq zT;3n%q(>S=B4XK9D++O&HI}5{2Yw_>hl~S1@JQeXPM=39Kk&{#u9X6rMVg8zO%W9h!Xz_^Ku917B0ezKz%IgK!DV#? zL~$t#Hq^B&pt2%%?5Lm%A{N%R&&HdX1SUbiP&{X!b559q+?zA^e&4Sh~Pf5-wW+MM4rNhy#kk1&E9j3h{y=0V3ruh=1vfehI=tApoF1uT`|eYK=ujPXGY)h_CUlDA?D^3l~M- z19J3_b`1Iky=wtGvA@F<|M?Mp+oPM}^9*lCvX(X`1!(nJe9h))?XCyEY#r%R3iR;y zL@v|{bZegm2HEm%)y7l|Hx855mYXma|Z=28u;?3QvKgF_zBZLK*5nI}s8t zlR&~TmR{jpVIXfB5;;>GjEL;m6ef*Arn3<;1)CES)eQu1&z!E$)AJfsuUoAGoKN=VJMG9p^KoWcmE%4g$gg8-$+S%v8CBlC?r-}|2^Jmu-go70mdjw#>#)*-Oap9fQ57^ah3;()Y+6o4Ta1WLn%JYgW3&N&P;CDAw%gx|RS z61GglB)!9g&bTB2ID1?Cz?pc|o3$nk^k@WGd2dSd?Z^6*TgZ~Ct**Rlw*QTWd^I9{RfSG{>lqN7!s0feA=TTq=0zov0-V)4f zI~wZ9A{ipWb`DYy3Irjp6x}QEWY}j88)U05--Jz*2rWlf&{0K;z`t%^S=IZySild{ zL=otP+J(IuuTF5`z=!ziZgN4~;0W7|6{}fiEv|Muf)rR<1o%$aT$F$eUiH%{`+g=* z4%q){M9%Jggn1tt)>MsK zF`}PccFF6_%f(yHzIE|>w1op#n(dfW@haG6w6RN8Au{@PVNV^uy*L-hCs?zx7#?&$ zpo#eeFEF=j#0x5!%crvF3<#z&Xb81MUM%cj_&09iKxO>XKoDa`2I$XB zxHAFI00RgYG?NC8r)fwX=I*Qgqm3aZ%9o`2%bmswYMJ+xC1TtUYAp93vkyKKIuAq4^ti zd>3w8Tjrmj(a{Nr6pt#itI}3+h z53+Z^xw4S7*_tZUiu)c0{07+e57P z`^%C^QTvz2<)y#&d(wy_*m3I&m=kYSj+A9(4!i znyww_K)#cgA*kFIabsOs>{R{!Cr;%bKWcDqN9D?T!-kW4{1eOJcRD$`?@}`_KbmAV z_Qawk_E$#F`gN~geQHs)UtRyH_U3Mg-IjqsL*dW)MfefPezx5V{%I2ziEuy0_jh39z2Ju2f0xE7Ox+;aImcd1f&)y0h<*lhB zykUuD!GoLFp~0N6yt%ldd8|AgV7E@d{qL$mtCXOc8?A~v>R?S^*Q5^3ZC5OdkO&!C zX~r6k*kO@FrlL@~FiPYdrQykeO{w=;P3lCnJi%G;g&6!30lsS1Xe<1_-1N`hb-A7OAQ z5CcLGSmCSA#I7^~k}lwe^MZwlTH81R5(p3p+Bsr?ltxIgDx$ZFylUH6Ax|LufTMpP z63@_s+g8E5NLaeYCN{9E6Y<+S=3=)O&WnF6dUHMcgLT==dwm?<@MP!0zOVDUl^?%2 z$-AXPs{W~P&)AYukul-NpJJbXm{w;$`KLnBqIIv=ITalbpa0SP<2K=+ z1ut&Xd=AsBcJTXMG`#QlU7>DK-BXHTxqqqGkiLG!% z^CT-{B@3+Db_S}|l|(S=d)WElR!({35S^H1bYPi3`iycf4zx3*mw7rGk%ZOZmXEZEyIvb|n!W zKTR-PR?fQYWSP6@ZP>6eT>GL@M(8W=%LmsA=fDdOEfoeOC&rTBT&fUmw#a{%*mLBG z$rZ5=bmv8NODi?%voq?+N!g5J6RKj~zt61j7?n|5_wIhLR58z@U>&~oz6dVw^&cVh!eqyQnG1e{vR^|-j_`801s#sDuu^p zlPOFtl}Dk|TH=AQUF$kF1Huo-y2>CDL{Y8^ib*~y1*Cv$#8lGVMR* zk`3OA0-{$2&g)-qT}MALwchVS2z_bA;iLLb^4NtFneC2dxvkl7Ilnk9c-%O3Vax@ zzeC%>wfp%GTYIl8o|txy7p_%obE9{9`XkT&?7~;JQ%tRT$@$so_pjAwe}A<91ZdfNECxfp(^!p2n_uTBK%ziaH)=W}BTJaGqV5~rF>-?p>YB2{3e zUSwBP#lWD57HX+VLs}~JfKwx6MD&)OmNoWTzM%8%*2cJBu$1$3HO9_}nPteyM4J2D%Za!xx%U2Y zqicG$=-Eo) + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + $(UserProfile)\.nuget\packages\ + C:\Users\SanthoshIruthayaraj\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages;C:\Program Files\dotnet\sdk\NuGetFallbackFolder + PackageReference + 7.0.0 + + + + + + + + + + + + C:\Users\SanthoshIruthayaraj\.nuget\packages\microsoft.extensions.apidescription.server\6.0.5 + + \ No newline at end of file diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/Grid_MSSQL.Server.csproj.nuget.g.targets b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/Grid_MSSQL.Server.csproj.nuget.g.targets new file mode 100644 index 0000000..c15ae5e --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/Grid_MSSQL.Server.csproj.nuget.g.targets @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/project.assets.json b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/project.assets.json new file mode 100644 index 0000000..bd503f3 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/project.assets.json @@ -0,0 +1,2162 @@ +{ + "version": 3, + "targets": { + "net8.0": { + "Azure.Core/1.50.0": { + "type": "package", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "8.0.0", + "System.ClientModel": "1.8.0", + "System.Memory.Data": "8.0.1" + }, + "compile": { + "lib/net8.0/Azure.Core.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Azure.Core.dll": { + "related": ".xml" + } + } + }, + "Azure.Identity/1.17.1": { + "type": "package", + "dependencies": { + "Azure.Core": "1.50.0", + "Microsoft.Identity.Client": "4.78.0", + "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" + }, + "compile": { + "lib/net8.0/Azure.Identity.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Azure.Identity.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.SpaProxy/8.0.24": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.AspNetCore.SpaProxy.dll": {} + }, + "runtime": { + "lib/net8.0/Microsoft.AspNetCore.SpaProxy.dll": {} + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ], + "build": { + "build/Microsoft.AspNetCore.SpaProxy.targets": {} + } + }, + "Microsoft.Bcl.AsyncInterfaces/8.0.0": { + "type": "package", + "compile": { + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Data.SqlClient/6.1.4": { + "type": "package", + "dependencies": { + "Azure.Core": "1.50.0", + "Azure.Identity": "1.17.1", + "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", + "Microsoft.Extensions.Caching.Memory": "8.0.1", + "Microsoft.Identity.Client": "4.80.0", + "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", + "Microsoft.SqlServer.Server": "1.0.0", + "System.Configuration.ConfigurationManager": "8.0.1", + "System.Diagnostics.DiagnosticSource": "8.0.1", + "System.IdentityModel.Tokens.Jwt": "7.7.1", + "System.Security.Cryptography.Pkcs": "8.0.1" + }, + "compile": { + "ref/net8.0/Microsoft.Data.SqlClient.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Data.SqlClient.dll": { + "related": ".xml" + } + }, + "resource": { + "lib/net8.0/cs/Microsoft.Data.SqlClient.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/de/Microsoft.Data.SqlClient.resources.dll": { + "locale": "de" + }, + "lib/net8.0/es/Microsoft.Data.SqlClient.resources.dll": { + "locale": "es" + }, + "lib/net8.0/fr/Microsoft.Data.SqlClient.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/it/Microsoft.Data.SqlClient.resources.dll": { + "locale": "it" + }, + "lib/net8.0/ja/Microsoft.Data.SqlClient.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ko/Microsoft.Data.SqlClient.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/pl/Microsoft.Data.SqlClient.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pt-BR/Microsoft.Data.SqlClient.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/ru/Microsoft.Data.SqlClient.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/tr/Microsoft.Data.SqlClient.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/zh-Hans/Microsoft.Data.SqlClient.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hant/Microsoft.Data.SqlClient.resources.dll": { + "locale": "zh-Hant" + } + }, + "runtimeTargets": { + "runtimes/unix/lib/net8.0/Microsoft.Data.SqlClient.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/net8.0/Microsoft.Data.SqlClient.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "Microsoft.Data.SqlClient.SNI.runtime/6.0.2": { + "type": "package", + "runtimeTargets": { + "runtimes/win-arm64/native/Microsoft.Data.SqlClient.SNI.dll": { + "assetType": "native", + "rid": "win-arm64" + }, + "runtimes/win-x64/native/Microsoft.Data.SqlClient.SNI.dll": { + "assetType": "native", + "rid": "win-x64" + }, + "runtimes/win-x86/native/Microsoft.Data.SqlClient.SNI.dll": { + "assetType": "native", + "rid": "win-x86" + } + } + }, + "Microsoft.Extensions.AI.Abstractions/9.9.1": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Extensions.AI.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.AI.Abstractions.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Extensions.ApiDescription.Server/6.0.5": { + "type": "package", + "build": { + "build/Microsoft.Extensions.ApiDescription.Server.props": {}, + "build/Microsoft.Extensions.ApiDescription.Server.targets": {} + }, + "buildMultiTargeting": { + "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.props": {}, + "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.targets": {} + } + }, + "Microsoft.Extensions.Caching.Abstractions/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Caching.Memory/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "8.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", + "Microsoft.Extensions.Logging.Abstractions": "8.0.2", + "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Caching.Memory.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Logging.Abstractions/8.0.3": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets": {} + } + }, + "Microsoft.Extensions.Options/8.0.2": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Options.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/Microsoft.Extensions.Options.targets": {} + } + }, + "Microsoft.Extensions.Primitives/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Primitives.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Identity.Client/4.80.0": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "8.14.0", + "System.Diagnostics.DiagnosticSource": "6.0.1", + "System.ValueTuple": "4.5.0" + }, + "compile": { + "lib/net8.0/Microsoft.Identity.Client.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Identity.Client.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Identity.Client.Extensions.Msal/4.78.0": { + "type": "package", + "dependencies": { + "Microsoft.Identity.Client": "4.78.0", + "System.Security.Cryptography.ProtectedData": "4.5.0" + }, + "compile": { + "lib/net8.0/Microsoft.Identity.Client.Extensions.Msal.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Identity.Client.Extensions.Msal.dll": { + "related": ".xml" + } + } + }, + "Microsoft.IdentityModel.Abstractions/8.14.0": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.IdentityModel.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.Abstractions.dll": { + "related": ".xml" + } + } + }, + "Microsoft.IdentityModel.JsonWebTokens/7.7.1": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Tokens": "7.7.1" + }, + "compile": { + "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.dll": { + "related": ".xml" + } + } + }, + "Microsoft.IdentityModel.Logging/7.7.1": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "7.7.1" + }, + "compile": { + "lib/net8.0/Microsoft.IdentityModel.Logging.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.Logging.dll": { + "related": ".xml" + } + } + }, + "Microsoft.IdentityModel.Protocols/7.7.1": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Tokens": "7.7.1" + }, + "compile": { + "lib/net8.0/Microsoft.IdentityModel.Protocols.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.Protocols.dll": { + "related": ".xml" + } + } + }, + "Microsoft.IdentityModel.Protocols.OpenIdConnect/7.7.1": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Protocols": "7.7.1", + "System.IdentityModel.Tokens.Jwt": "7.7.1" + }, + "compile": { + "lib/net8.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll": { + "related": ".xml" + } + } + }, + "Microsoft.IdentityModel.Tokens/7.7.1": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Logging": "7.7.1" + }, + "compile": { + "lib/net8.0/Microsoft.IdentityModel.Tokens.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.Tokens.dll": { + "related": ".xml" + } + } + }, + "Microsoft.OpenApi/1.6.14": { + "type": "package", + "compile": { + "lib/netstandard2.0/Microsoft.OpenApi.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.OpenApi.dll": { + "related": ".pdb;.xml" + } + } + }, + "Microsoft.SqlServer.Server/1.0.0": { + "type": "package", + "compile": { + "lib/netstandard2.0/Microsoft.SqlServer.Server.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.SqlServer.Server.dll": { + "related": ".pdb;.xml" + } + } + }, + "Newtonsoft.Json/13.0.3": { + "type": "package", + "compile": { + "lib/net6.0/Newtonsoft.Json.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/Newtonsoft.Json.dll": { + "related": ".xml" + } + } + }, + "Swashbuckle.AspNetCore/6.6.2": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.ApiDescription.Server": "6.0.5", + "Swashbuckle.AspNetCore.Swagger": "6.6.2", + "Swashbuckle.AspNetCore.SwaggerGen": "6.6.2", + "Swashbuckle.AspNetCore.SwaggerUI": "6.6.2" + }, + "build": { + "build/Swashbuckle.AspNetCore.props": {} + } + }, + "Swashbuckle.AspNetCore.Swagger/6.6.2": { + "type": "package", + "dependencies": { + "Microsoft.OpenApi": "1.6.14" + }, + "compile": { + "lib/net8.0/Swashbuckle.AspNetCore.Swagger.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net8.0/Swashbuckle.AspNetCore.Swagger.dll": { + "related": ".pdb;.xml" + } + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "Swashbuckle.AspNetCore.SwaggerGen/6.6.2": { + "type": "package", + "dependencies": { + "Swashbuckle.AspNetCore.Swagger": "6.6.2" + }, + "compile": { + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll": { + "related": ".pdb;.xml" + } + } + }, + "Swashbuckle.AspNetCore.SwaggerUI/6.6.2": { + "type": "package", + "compile": { + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll": { + "related": ".pdb;.xml" + } + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "Syncfusion.EJ2.AspNet.Core/32.2.5": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.AI.Abstractions": "9.9.1", + "Newtonsoft.Json": "13.0.3", + "Syncfusion.Licensing": "32.2.5" + }, + "compile": { + "lib/net8.0/Syncfusion.EJ2.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Syncfusion.EJ2.dll": { + "related": ".xml" + } + } + }, + "Syncfusion.Licensing/32.2.5": { + "type": "package", + "compile": { + "lib/net8.0/Syncfusion.Licensing.dll": {} + }, + "runtime": { + "lib/net8.0/Syncfusion.Licensing.dll": {} + } + }, + "System.ClientModel/1.8.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.3", + "System.Memory.Data": "8.0.1" + }, + "compile": { + "lib/net8.0/System.ClientModel.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.ClientModel.dll": { + "related": ".xml" + } + } + }, + "System.Configuration.ConfigurationManager/8.0.1": { + "type": "package", + "dependencies": { + "System.Diagnostics.EventLog": "8.0.1", + "System.Security.Cryptography.ProtectedData": "8.0.0" + }, + "compile": { + "lib/net8.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Configuration.ConfigurationManager.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "System.Diagnostics.DiagnosticSource/8.0.1": { + "type": "package", + "compile": { + "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "System.Diagnostics.EventLog/8.0.1": { + "type": "package", + "compile": { + "lib/net8.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Diagnostics.EventLog.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + }, + "runtimeTargets": { + "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.Messages.dll": { + "assetType": "runtime", + "rid": "win" + }, + "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.IdentityModel.Tokens.Jwt/7.7.1": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", + "Microsoft.IdentityModel.Tokens": "7.7.1" + }, + "compile": { + "lib/net8.0/System.IdentityModel.Tokens.Jwt.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.IdentityModel.Tokens.Jwt.dll": { + "related": ".xml" + } + } + }, + "System.Memory.Data/8.0.1": { + "type": "package", + "compile": { + "lib/net8.0/System.Memory.Data.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Memory.Data.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "System.Security.Cryptography.Pkcs/8.0.1": { + "type": "package", + "compile": { + "lib/net8.0/System.Security.Cryptography.Pkcs.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Security.Cryptography.Pkcs.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + }, + "runtimeTargets": { + "runtimes/win/lib/net8.0/System.Security.Cryptography.Pkcs.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Cryptography.ProtectedData/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.Security.Cryptography.ProtectedData.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Security.Cryptography.ProtectedData.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "System.ValueTuple/4.5.0": { + "type": "package", + "compile": { + "ref/netcoreapp2.0/_._": {} + }, + "runtime": { + "lib/netcoreapp2.0/_._": {} + } + } + } + }, + "libraries": { + "Azure.Core/1.50.0": { + "sha512": "GBNKZEhdIbTXxedvD3R7I/yDVFX9jJJEz02kCziFSJxspSQ5RMHc3GktulJ1s7+ffXaXD7kMgrtdQTaggyInLw==", + "type": "package", + "path": "azure.core/1.50.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "CHANGELOG.md", + "README.md", + "azure.core.1.50.0.nupkg.sha512", + "azure.core.nuspec", + "azureicon.png", + "lib/net462/Azure.Core.dll", + "lib/net462/Azure.Core.xml", + "lib/net472/Azure.Core.dll", + "lib/net472/Azure.Core.xml", + "lib/net8.0/Azure.Core.dll", + "lib/net8.0/Azure.Core.xml", + "lib/netstandard2.0/Azure.Core.dll", + "lib/netstandard2.0/Azure.Core.xml" + ] + }, + "Azure.Identity/1.17.1": { + "sha512": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==", + "type": "package", + "path": "azure.identity/1.17.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "CHANGELOG.md", + "README.md", + "azure.identity.1.17.1.nupkg.sha512", + "azure.identity.nuspec", + "azureicon.png", + "lib/net8.0/Azure.Identity.dll", + "lib/net8.0/Azure.Identity.xml", + "lib/netstandard2.0/Azure.Identity.dll", + "lib/netstandard2.0/Azure.Identity.xml" + ] + }, + "Microsoft.AspNetCore.SpaProxy/8.0.24": { + "sha512": "Rp0r2Ie9zd8k+TYV10TYDGxu+fLoQoOtd8lRyRvaM/SK2BqqtG0k5JewmUJsYXu6jy5mXc9vuNydQb5AjFrz1g==", + "type": "package", + "path": "microsoft.aspnetcore.spaproxy/8.0.24", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "build/Microsoft.AspNetCore.SpaProxy.targets", + "lib/net8.0/Microsoft.AspNetCore.SpaProxy.dll", + "microsoft.aspnetcore.spaproxy.8.0.24.nupkg.sha512", + "microsoft.aspnetcore.spaproxy.nuspec" + ] + }, + "Microsoft.Bcl.AsyncInterfaces/8.0.0": { + "sha512": "3WA9q9yVqJp222P3x1wYIGDAkpjAku0TMUaaQV22g6L67AI0LdOIrVS7Ht2vJfLHGSPVuqN94vIr15qn+HEkHw==", + "type": "package", + "path": "microsoft.bcl.asyncinterfaces/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Bcl.AsyncInterfaces.targets", + "buildTransitive/net462/_._", + "lib/net462/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/net462/Microsoft.Bcl.AsyncInterfaces.xml", + "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.xml", + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml", + "microsoft.bcl.asyncinterfaces.8.0.0.nupkg.sha512", + "microsoft.bcl.asyncinterfaces.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Data.SqlClient/6.1.4": { + "sha512": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "type": "package", + "path": "microsoft.data.sqlclient/6.1.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "dotnet.png", + "lib/net462/Microsoft.Data.SqlClient.dll", + "lib/net462/Microsoft.Data.SqlClient.xml", + "lib/net462/cs/Microsoft.Data.SqlClient.resources.dll", + "lib/net462/de/Microsoft.Data.SqlClient.resources.dll", + "lib/net462/es/Microsoft.Data.SqlClient.resources.dll", + "lib/net462/fr/Microsoft.Data.SqlClient.resources.dll", + "lib/net462/it/Microsoft.Data.SqlClient.resources.dll", + "lib/net462/ja/Microsoft.Data.SqlClient.resources.dll", + "lib/net462/ko/Microsoft.Data.SqlClient.resources.dll", + "lib/net462/pl/Microsoft.Data.SqlClient.resources.dll", + "lib/net462/pt-BR/Microsoft.Data.SqlClient.resources.dll", + "lib/net462/ru/Microsoft.Data.SqlClient.resources.dll", + "lib/net462/tr/Microsoft.Data.SqlClient.resources.dll", + "lib/net462/zh-Hans/Microsoft.Data.SqlClient.resources.dll", + "lib/net462/zh-Hant/Microsoft.Data.SqlClient.resources.dll", + "lib/net8.0/Microsoft.Data.SqlClient.dll", + "lib/net8.0/Microsoft.Data.SqlClient.xml", + "lib/net8.0/cs/Microsoft.Data.SqlClient.resources.dll", + "lib/net8.0/de/Microsoft.Data.SqlClient.resources.dll", + "lib/net8.0/es/Microsoft.Data.SqlClient.resources.dll", + "lib/net8.0/fr/Microsoft.Data.SqlClient.resources.dll", + "lib/net8.0/it/Microsoft.Data.SqlClient.resources.dll", + "lib/net8.0/ja/Microsoft.Data.SqlClient.resources.dll", + "lib/net8.0/ko/Microsoft.Data.SqlClient.resources.dll", + "lib/net8.0/pl/Microsoft.Data.SqlClient.resources.dll", + "lib/net8.0/pt-BR/Microsoft.Data.SqlClient.resources.dll", + "lib/net8.0/ru/Microsoft.Data.SqlClient.resources.dll", + "lib/net8.0/tr/Microsoft.Data.SqlClient.resources.dll", + "lib/net8.0/zh-Hans/Microsoft.Data.SqlClient.resources.dll", + "lib/net8.0/zh-Hant/Microsoft.Data.SqlClient.resources.dll", + "lib/net9.0/Microsoft.Data.SqlClient.dll", + "lib/net9.0/Microsoft.Data.SqlClient.xml", + "lib/net9.0/cs/Microsoft.Data.SqlClient.resources.dll", + "lib/net9.0/de/Microsoft.Data.SqlClient.resources.dll", + "lib/net9.0/es/Microsoft.Data.SqlClient.resources.dll", + "lib/net9.0/fr/Microsoft.Data.SqlClient.resources.dll", + "lib/net9.0/it/Microsoft.Data.SqlClient.resources.dll", + "lib/net9.0/ja/Microsoft.Data.SqlClient.resources.dll", + "lib/net9.0/ko/Microsoft.Data.SqlClient.resources.dll", + "lib/net9.0/pl/Microsoft.Data.SqlClient.resources.dll", + "lib/net9.0/pt-BR/Microsoft.Data.SqlClient.resources.dll", + "lib/net9.0/ru/Microsoft.Data.SqlClient.resources.dll", + "lib/net9.0/tr/Microsoft.Data.SqlClient.resources.dll", + "lib/net9.0/zh-Hans/Microsoft.Data.SqlClient.resources.dll", + "lib/net9.0/zh-Hant/Microsoft.Data.SqlClient.resources.dll", + "lib/netstandard2.0/Microsoft.Data.SqlClient.dll", + "lib/netstandard2.0/Microsoft.Data.SqlClient.xml", + "microsoft.data.sqlclient.6.1.4.nupkg.sha512", + "microsoft.data.sqlclient.nuspec", + "ref/net462/Microsoft.Data.SqlClient.dll", + "ref/net462/Microsoft.Data.SqlClient.xml", + "ref/net8.0/Microsoft.Data.SqlClient.dll", + "ref/net8.0/Microsoft.Data.SqlClient.xml", + "ref/net9.0/Microsoft.Data.SqlClient.dll", + "ref/net9.0/Microsoft.Data.SqlClient.xml", + "ref/netstandard2.0/Microsoft.Data.SqlClient.dll", + "ref/netstandard2.0/Microsoft.Data.SqlClient.xml", + "runtimes/unix/lib/net8.0/Microsoft.Data.SqlClient.dll", + "runtimes/unix/lib/net9.0/Microsoft.Data.SqlClient.dll", + "runtimes/win/lib/net462/Microsoft.Data.SqlClient.dll", + "runtimes/win/lib/net8.0/Microsoft.Data.SqlClient.dll", + "runtimes/win/lib/net9.0/Microsoft.Data.SqlClient.dll" + ] + }, + "Microsoft.Data.SqlClient.SNI.runtime/6.0.2": { + "sha512": "f+pRODTWX7Y67jXO3T5S2dIPZ9qMJNySjlZT/TKmWVNWe19N8jcWmHaqHnnchaq3gxEKv1SWVY5EFzOD06l41w==", + "type": "package", + "path": "microsoft.data.sqlclient.sni.runtime/6.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.txt", + "dotnet.png", + "microsoft.data.sqlclient.sni.runtime.6.0.2.nupkg.sha512", + "microsoft.data.sqlclient.sni.runtime.nuspec", + "runtimes/win-arm64/native/Microsoft.Data.SqlClient.SNI.dll", + "runtimes/win-x64/native/Microsoft.Data.SqlClient.SNI.dll", + "runtimes/win-x86/native/Microsoft.Data.SqlClient.SNI.dll" + ] + }, + "Microsoft.Extensions.AI.Abstractions/9.9.1": { + "sha512": "khnPyY46Yk2OTOY3z+hUsXxxl58RkMeSYxrWHr/eKYtM3Zp4UfY6Z7C75uMJTpt6l8eCJjoQ7tVj/R0Fmz/nPw==", + "type": "package", + "path": "microsoft.extensions.ai.abstractions/9.9.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "README.md", + "lib/net462/Microsoft.Extensions.AI.Abstractions.dll", + "lib/net462/Microsoft.Extensions.AI.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.AI.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.AI.Abstractions.xml", + "lib/net9.0/Microsoft.Extensions.AI.Abstractions.dll", + "lib/net9.0/Microsoft.Extensions.AI.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.AI.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.AI.Abstractions.xml", + "microsoft.extensions.ai.abstractions.9.9.1.nupkg.sha512", + "microsoft.extensions.ai.abstractions.nuspec" + ] + }, + "Microsoft.Extensions.ApiDescription.Server/6.0.5": { + "sha512": "Ckb5EDBUNJdFWyajfXzUIMRkhf52fHZOQuuZg/oiu8y7zDCVwD0iHhew6MnThjHmevanpxL3f5ci2TtHQEN6bw==", + "type": "package", + "path": "microsoft.extensions.apidescription.server/6.0.5", + "hasTools": true, + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "build/Microsoft.Extensions.ApiDescription.Server.props", + "build/Microsoft.Extensions.ApiDescription.Server.targets", + "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.props", + "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.targets", + "microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512", + "microsoft.extensions.apidescription.server.nuspec", + "tools/Newtonsoft.Json.dll", + "tools/dotnet-getdocument.deps.json", + "tools/dotnet-getdocument.dll", + "tools/dotnet-getdocument.runtimeconfig.json", + "tools/net461-x86/GetDocument.Insider.exe", + "tools/net461-x86/GetDocument.Insider.exe.config", + "tools/net461-x86/Microsoft.Win32.Primitives.dll", + "tools/net461-x86/System.AppContext.dll", + "tools/net461-x86/System.Buffers.dll", + "tools/net461-x86/System.Collections.Concurrent.dll", + "tools/net461-x86/System.Collections.NonGeneric.dll", + "tools/net461-x86/System.Collections.Specialized.dll", + "tools/net461-x86/System.Collections.dll", + "tools/net461-x86/System.ComponentModel.EventBasedAsync.dll", + "tools/net461-x86/System.ComponentModel.Primitives.dll", + "tools/net461-x86/System.ComponentModel.TypeConverter.dll", + "tools/net461-x86/System.ComponentModel.dll", + "tools/net461-x86/System.Console.dll", + "tools/net461-x86/System.Data.Common.dll", + "tools/net461-x86/System.Diagnostics.Contracts.dll", + "tools/net461-x86/System.Diagnostics.Debug.dll", + "tools/net461-x86/System.Diagnostics.DiagnosticSource.dll", + "tools/net461-x86/System.Diagnostics.FileVersionInfo.dll", + "tools/net461-x86/System.Diagnostics.Process.dll", + "tools/net461-x86/System.Diagnostics.StackTrace.dll", + "tools/net461-x86/System.Diagnostics.TextWriterTraceListener.dll", + "tools/net461-x86/System.Diagnostics.Tools.dll", + "tools/net461-x86/System.Diagnostics.TraceSource.dll", + "tools/net461-x86/System.Diagnostics.Tracing.dll", + "tools/net461-x86/System.Drawing.Primitives.dll", + "tools/net461-x86/System.Dynamic.Runtime.dll", + "tools/net461-x86/System.Globalization.Calendars.dll", + "tools/net461-x86/System.Globalization.Extensions.dll", + "tools/net461-x86/System.Globalization.dll", + "tools/net461-x86/System.IO.Compression.ZipFile.dll", + "tools/net461-x86/System.IO.Compression.dll", + "tools/net461-x86/System.IO.FileSystem.DriveInfo.dll", + "tools/net461-x86/System.IO.FileSystem.Primitives.dll", + "tools/net461-x86/System.IO.FileSystem.Watcher.dll", + "tools/net461-x86/System.IO.FileSystem.dll", + "tools/net461-x86/System.IO.IsolatedStorage.dll", + "tools/net461-x86/System.IO.MemoryMappedFiles.dll", + "tools/net461-x86/System.IO.Pipes.dll", + "tools/net461-x86/System.IO.UnmanagedMemoryStream.dll", + "tools/net461-x86/System.IO.dll", + "tools/net461-x86/System.Linq.Expressions.dll", + "tools/net461-x86/System.Linq.Parallel.dll", + "tools/net461-x86/System.Linq.Queryable.dll", + "tools/net461-x86/System.Linq.dll", + "tools/net461-x86/System.Memory.dll", + "tools/net461-x86/System.Net.Http.dll", + "tools/net461-x86/System.Net.NameResolution.dll", + "tools/net461-x86/System.Net.NetworkInformation.dll", + "tools/net461-x86/System.Net.Ping.dll", + "tools/net461-x86/System.Net.Primitives.dll", + "tools/net461-x86/System.Net.Requests.dll", + "tools/net461-x86/System.Net.Security.dll", + "tools/net461-x86/System.Net.Sockets.dll", + "tools/net461-x86/System.Net.WebHeaderCollection.dll", + "tools/net461-x86/System.Net.WebSockets.Client.dll", + "tools/net461-x86/System.Net.WebSockets.dll", + "tools/net461-x86/System.Numerics.Vectors.dll", + "tools/net461-x86/System.ObjectModel.dll", + "tools/net461-x86/System.Reflection.Extensions.dll", + "tools/net461-x86/System.Reflection.Primitives.dll", + "tools/net461-x86/System.Reflection.dll", + "tools/net461-x86/System.Resources.Reader.dll", + "tools/net461-x86/System.Resources.ResourceManager.dll", + "tools/net461-x86/System.Resources.Writer.dll", + "tools/net461-x86/System.Runtime.CompilerServices.Unsafe.dll", + "tools/net461-x86/System.Runtime.CompilerServices.VisualC.dll", + "tools/net461-x86/System.Runtime.Extensions.dll", + "tools/net461-x86/System.Runtime.Handles.dll", + "tools/net461-x86/System.Runtime.InteropServices.RuntimeInformation.dll", + "tools/net461-x86/System.Runtime.InteropServices.dll", + "tools/net461-x86/System.Runtime.Numerics.dll", + "tools/net461-x86/System.Runtime.Serialization.Formatters.dll", + "tools/net461-x86/System.Runtime.Serialization.Json.dll", + "tools/net461-x86/System.Runtime.Serialization.Primitives.dll", + "tools/net461-x86/System.Runtime.Serialization.Xml.dll", + "tools/net461-x86/System.Runtime.dll", + "tools/net461-x86/System.Security.Claims.dll", + "tools/net461-x86/System.Security.Cryptography.Algorithms.dll", + "tools/net461-x86/System.Security.Cryptography.Csp.dll", + "tools/net461-x86/System.Security.Cryptography.Encoding.dll", + "tools/net461-x86/System.Security.Cryptography.Primitives.dll", + "tools/net461-x86/System.Security.Cryptography.X509Certificates.dll", + "tools/net461-x86/System.Security.Principal.dll", + "tools/net461-x86/System.Security.SecureString.dll", + "tools/net461-x86/System.Text.Encoding.Extensions.dll", + "tools/net461-x86/System.Text.Encoding.dll", + "tools/net461-x86/System.Text.RegularExpressions.dll", + "tools/net461-x86/System.Threading.Overlapped.dll", + "tools/net461-x86/System.Threading.Tasks.Parallel.dll", + "tools/net461-x86/System.Threading.Tasks.dll", + "tools/net461-x86/System.Threading.Thread.dll", + "tools/net461-x86/System.Threading.ThreadPool.dll", + "tools/net461-x86/System.Threading.Timer.dll", + "tools/net461-x86/System.Threading.dll", + "tools/net461-x86/System.ValueTuple.dll", + "tools/net461-x86/System.Xml.ReaderWriter.dll", + "tools/net461-x86/System.Xml.XDocument.dll", + "tools/net461-x86/System.Xml.XPath.XDocument.dll", + "tools/net461-x86/System.Xml.XPath.dll", + "tools/net461-x86/System.Xml.XmlDocument.dll", + "tools/net461-x86/System.Xml.XmlSerializer.dll", + "tools/net461-x86/netstandard.dll", + "tools/net461/GetDocument.Insider.exe", + "tools/net461/GetDocument.Insider.exe.config", + "tools/net461/Microsoft.Win32.Primitives.dll", + "tools/net461/System.AppContext.dll", + "tools/net461/System.Buffers.dll", + "tools/net461/System.Collections.Concurrent.dll", + "tools/net461/System.Collections.NonGeneric.dll", + "tools/net461/System.Collections.Specialized.dll", + "tools/net461/System.Collections.dll", + "tools/net461/System.ComponentModel.EventBasedAsync.dll", + "tools/net461/System.ComponentModel.Primitives.dll", + "tools/net461/System.ComponentModel.TypeConverter.dll", + "tools/net461/System.ComponentModel.dll", + "tools/net461/System.Console.dll", + "tools/net461/System.Data.Common.dll", + "tools/net461/System.Diagnostics.Contracts.dll", + "tools/net461/System.Diagnostics.Debug.dll", + "tools/net461/System.Diagnostics.DiagnosticSource.dll", + "tools/net461/System.Diagnostics.FileVersionInfo.dll", + "tools/net461/System.Diagnostics.Process.dll", + "tools/net461/System.Diagnostics.StackTrace.dll", + "tools/net461/System.Diagnostics.TextWriterTraceListener.dll", + "tools/net461/System.Diagnostics.Tools.dll", + "tools/net461/System.Diagnostics.TraceSource.dll", + "tools/net461/System.Diagnostics.Tracing.dll", + "tools/net461/System.Drawing.Primitives.dll", + "tools/net461/System.Dynamic.Runtime.dll", + "tools/net461/System.Globalization.Calendars.dll", + "tools/net461/System.Globalization.Extensions.dll", + "tools/net461/System.Globalization.dll", + "tools/net461/System.IO.Compression.ZipFile.dll", + "tools/net461/System.IO.Compression.dll", + "tools/net461/System.IO.FileSystem.DriveInfo.dll", + "tools/net461/System.IO.FileSystem.Primitives.dll", + "tools/net461/System.IO.FileSystem.Watcher.dll", + "tools/net461/System.IO.FileSystem.dll", + "tools/net461/System.IO.IsolatedStorage.dll", + "tools/net461/System.IO.MemoryMappedFiles.dll", + "tools/net461/System.IO.Pipes.dll", + "tools/net461/System.IO.UnmanagedMemoryStream.dll", + "tools/net461/System.IO.dll", + "tools/net461/System.Linq.Expressions.dll", + "tools/net461/System.Linq.Parallel.dll", + "tools/net461/System.Linq.Queryable.dll", + "tools/net461/System.Linq.dll", + "tools/net461/System.Memory.dll", + "tools/net461/System.Net.Http.dll", + "tools/net461/System.Net.NameResolution.dll", + "tools/net461/System.Net.NetworkInformation.dll", + "tools/net461/System.Net.Ping.dll", + "tools/net461/System.Net.Primitives.dll", + "tools/net461/System.Net.Requests.dll", + "tools/net461/System.Net.Security.dll", + "tools/net461/System.Net.Sockets.dll", + "tools/net461/System.Net.WebHeaderCollection.dll", + "tools/net461/System.Net.WebSockets.Client.dll", + "tools/net461/System.Net.WebSockets.dll", + "tools/net461/System.Numerics.Vectors.dll", + "tools/net461/System.ObjectModel.dll", + "tools/net461/System.Reflection.Extensions.dll", + "tools/net461/System.Reflection.Primitives.dll", + "tools/net461/System.Reflection.dll", + "tools/net461/System.Resources.Reader.dll", + "tools/net461/System.Resources.ResourceManager.dll", + "tools/net461/System.Resources.Writer.dll", + "tools/net461/System.Runtime.CompilerServices.Unsafe.dll", + "tools/net461/System.Runtime.CompilerServices.VisualC.dll", + "tools/net461/System.Runtime.Extensions.dll", + "tools/net461/System.Runtime.Handles.dll", + "tools/net461/System.Runtime.InteropServices.RuntimeInformation.dll", + "tools/net461/System.Runtime.InteropServices.dll", + "tools/net461/System.Runtime.Numerics.dll", + "tools/net461/System.Runtime.Serialization.Formatters.dll", + "tools/net461/System.Runtime.Serialization.Json.dll", + "tools/net461/System.Runtime.Serialization.Primitives.dll", + "tools/net461/System.Runtime.Serialization.Xml.dll", + "tools/net461/System.Runtime.dll", + "tools/net461/System.Security.Claims.dll", + "tools/net461/System.Security.Cryptography.Algorithms.dll", + "tools/net461/System.Security.Cryptography.Csp.dll", + "tools/net461/System.Security.Cryptography.Encoding.dll", + "tools/net461/System.Security.Cryptography.Primitives.dll", + "tools/net461/System.Security.Cryptography.X509Certificates.dll", + "tools/net461/System.Security.Principal.dll", + "tools/net461/System.Security.SecureString.dll", + "tools/net461/System.Text.Encoding.Extensions.dll", + "tools/net461/System.Text.Encoding.dll", + "tools/net461/System.Text.RegularExpressions.dll", + "tools/net461/System.Threading.Overlapped.dll", + "tools/net461/System.Threading.Tasks.Parallel.dll", + "tools/net461/System.Threading.Tasks.dll", + "tools/net461/System.Threading.Thread.dll", + "tools/net461/System.Threading.ThreadPool.dll", + "tools/net461/System.Threading.Timer.dll", + "tools/net461/System.Threading.dll", + "tools/net461/System.ValueTuple.dll", + "tools/net461/System.Xml.ReaderWriter.dll", + "tools/net461/System.Xml.XDocument.dll", + "tools/net461/System.Xml.XPath.XDocument.dll", + "tools/net461/System.Xml.XPath.dll", + "tools/net461/System.Xml.XmlDocument.dll", + "tools/net461/System.Xml.XmlSerializer.dll", + "tools/net461/netstandard.dll", + "tools/netcoreapp2.1/GetDocument.Insider.deps.json", + "tools/netcoreapp2.1/GetDocument.Insider.dll", + "tools/netcoreapp2.1/GetDocument.Insider.runtimeconfig.json", + "tools/netcoreapp2.1/System.Diagnostics.DiagnosticSource.dll" + ] + }, + "Microsoft.Extensions.Caching.Abstractions/8.0.0": { + "sha512": "3KuSxeHoNYdxVYfg2IRZCThcrlJ1XJqIXkAWikCsbm5C/bCjv7G0WoKDyuR98Q+T607QT2Zl5GsbGRkENcV2yQ==", + "type": "package", + "path": "microsoft.extensions.caching.abstractions/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Caching.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Caching.Abstractions.targets", + "lib/net462/Microsoft.Extensions.Caching.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Caching.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.Caching.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.Caching.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.Caching.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.Caching.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.xml", + "microsoft.extensions.caching.abstractions.8.0.0.nupkg.sha512", + "microsoft.extensions.caching.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Caching.Memory/8.0.1": { + "sha512": "HFDnhYLccngrzyGgHkjEDU5FMLn4MpOsr5ElgsBMC4yx6lJh4jeWO7fHS8+TXPq+dgxCmUa/Trl8svObmwW4QA==", + "type": "package", + "path": "microsoft.extensions.caching.memory/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Caching.Memory.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Caching.Memory.targets", + "lib/net462/Microsoft.Extensions.Caching.Memory.dll", + "lib/net462/Microsoft.Extensions.Caching.Memory.xml", + "lib/net6.0/Microsoft.Extensions.Caching.Memory.dll", + "lib/net6.0/Microsoft.Extensions.Caching.Memory.xml", + "lib/net7.0/Microsoft.Extensions.Caching.Memory.dll", + "lib/net7.0/Microsoft.Extensions.Caching.Memory.xml", + "lib/net8.0/Microsoft.Extensions.Caching.Memory.dll", + "lib/net8.0/Microsoft.Extensions.Caching.Memory.xml", + "lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.dll", + "lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.xml", + "microsoft.extensions.caching.memory.8.0.1.nupkg.sha512", + "microsoft.extensions.caching.memory.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": { + "sha512": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==", + "type": "package", + "path": "microsoft.extensions.dependencyinjection.abstractions/8.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.Abstractions.targets", + "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512", + "microsoft.extensions.dependencyinjection.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging.Abstractions/8.0.3": { + "sha512": "dL0QGToTxggRLMYY4ZYX5AMwBb+byQBd/5dMiZE07Nv73o6I5Are3C7eQTh7K2+A4ct0PVISSr7TZANbiNb2yQ==", + "type": "package", + "path": "microsoft.extensions.logging.abstractions/8.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/roslyn3.11/cs/Microsoft.Extensions.Logging.Generators.dll", + "analyzers/dotnet/roslyn3.11/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/Microsoft.Extensions.Logging.Generators.dll", + "analyzers/dotnet/roslyn4.0/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Logging.Generators.dll", + "analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", + "buildTransitive/net461/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/net462/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.targets", + "lib/net462/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml", + "microsoft.extensions.logging.abstractions.8.0.3.nupkg.sha512", + "microsoft.extensions.logging.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Options/8.0.2": { + "sha512": "dWGKvhFybsaZpGmzkGCbNNwBD1rVlWzrZKANLW/CcbFJpCEceMCGzT7zZwHOGBCbwM0SzBuceMj5HN1LKV1QqA==", + "type": "package", + "path": "microsoft.extensions.options/8.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Options.SourceGeneration.dll", + "analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "buildTransitive/net461/Microsoft.Extensions.Options.targets", + "buildTransitive/net462/Microsoft.Extensions.Options.targets", + "buildTransitive/net6.0/Microsoft.Extensions.Options.targets", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Options.targets", + "buildTransitive/netstandard2.0/Microsoft.Extensions.Options.targets", + "lib/net462/Microsoft.Extensions.Options.dll", + "lib/net462/Microsoft.Extensions.Options.xml", + "lib/net6.0/Microsoft.Extensions.Options.dll", + "lib/net6.0/Microsoft.Extensions.Options.xml", + "lib/net7.0/Microsoft.Extensions.Options.dll", + "lib/net7.0/Microsoft.Extensions.Options.xml", + "lib/net8.0/Microsoft.Extensions.Options.dll", + "lib/net8.0/Microsoft.Extensions.Options.xml", + "lib/netstandard2.0/Microsoft.Extensions.Options.dll", + "lib/netstandard2.0/Microsoft.Extensions.Options.xml", + "lib/netstandard2.1/Microsoft.Extensions.Options.dll", + "lib/netstandard2.1/Microsoft.Extensions.Options.xml", + "microsoft.extensions.options.8.0.2.nupkg.sha512", + "microsoft.extensions.options.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Primitives/8.0.0": { + "sha512": "bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g==", + "type": "package", + "path": "microsoft.extensions.primitives/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Primitives.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Primitives.targets", + "lib/net462/Microsoft.Extensions.Primitives.dll", + "lib/net462/Microsoft.Extensions.Primitives.xml", + "lib/net6.0/Microsoft.Extensions.Primitives.dll", + "lib/net6.0/Microsoft.Extensions.Primitives.xml", + "lib/net7.0/Microsoft.Extensions.Primitives.dll", + "lib/net7.0/Microsoft.Extensions.Primitives.xml", + "lib/net8.0/Microsoft.Extensions.Primitives.dll", + "lib/net8.0/Microsoft.Extensions.Primitives.xml", + "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll", + "lib/netstandard2.0/Microsoft.Extensions.Primitives.xml", + "microsoft.extensions.primitives.8.0.0.nupkg.sha512", + "microsoft.extensions.primitives.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Identity.Client/4.80.0": { + "sha512": "nmg+q17mKdNafWvaX7Of5Xh8sxc4acsD6xOOczp7kgjAzR7bpseYGZzg38XPoS/vW7k92sGKCWgHSogB0K62KQ==", + "type": "package", + "path": "microsoft.identity.client/4.80.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "lib/net462/Microsoft.Identity.Client.dll", + "lib/net462/Microsoft.Identity.Client.xml", + "lib/net472/Microsoft.Identity.Client.dll", + "lib/net472/Microsoft.Identity.Client.xml", + "lib/net8.0-android34.0/Microsoft.Identity.Client.aar", + "lib/net8.0-android34.0/Microsoft.Identity.Client.dll", + "lib/net8.0-android34.0/Microsoft.Identity.Client.xml", + "lib/net8.0-ios18.0/Microsoft.Identity.Client.dll", + "lib/net8.0-ios18.0/Microsoft.Identity.Client.xml", + "lib/net8.0/Microsoft.Identity.Client.dll", + "lib/net8.0/Microsoft.Identity.Client.xml", + "lib/netstandard2.0/Microsoft.Identity.Client.dll", + "lib/netstandard2.0/Microsoft.Identity.Client.xml", + "microsoft.identity.client.4.80.0.nupkg.sha512", + "microsoft.identity.client.nuspec" + ] + }, + "Microsoft.Identity.Client.Extensions.Msal/4.78.0": { + "sha512": "DYU9o+DrDQuyZxeq91GBA9eNqBvA3ZMkLzQpF7L9dTk6FcIBM1y1IHXWqiKXTvptPF7CZE59upbyUoa+FJ5eiA==", + "type": "package", + "path": "microsoft.identity.client.extensions.msal/4.78.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "lib/net8.0/Microsoft.Identity.Client.Extensions.Msal.dll", + "lib/net8.0/Microsoft.Identity.Client.Extensions.Msal.xml", + "lib/netstandard2.0/Microsoft.Identity.Client.Extensions.Msal.dll", + "lib/netstandard2.0/Microsoft.Identity.Client.Extensions.Msal.xml", + "microsoft.identity.client.extensions.msal.4.78.0.nupkg.sha512", + "microsoft.identity.client.extensions.msal.nuspec" + ] + }, + "Microsoft.IdentityModel.Abstractions/8.14.0": { + "sha512": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==", + "type": "package", + "path": "microsoft.identitymodel.abstractions/8.14.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "lib/net462/Microsoft.IdentityModel.Abstractions.dll", + "lib/net462/Microsoft.IdentityModel.Abstractions.xml", + "lib/net472/Microsoft.IdentityModel.Abstractions.dll", + "lib/net472/Microsoft.IdentityModel.Abstractions.xml", + "lib/net6.0/Microsoft.IdentityModel.Abstractions.dll", + "lib/net6.0/Microsoft.IdentityModel.Abstractions.xml", + "lib/net8.0/Microsoft.IdentityModel.Abstractions.dll", + "lib/net8.0/Microsoft.IdentityModel.Abstractions.xml", + "lib/net9.0/Microsoft.IdentityModel.Abstractions.dll", + "lib/net9.0/Microsoft.IdentityModel.Abstractions.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.Abstractions.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.Abstractions.xml", + "microsoft.identitymodel.abstractions.8.14.0.nupkg.sha512", + "microsoft.identitymodel.abstractions.nuspec" + ] + }, + "Microsoft.IdentityModel.JsonWebTokens/7.7.1": { + "sha512": "3Izi75UCUssvo8LPx3OVnEeZay58qaFicrtSnbtUt7q8qQi0gy46gh4V8VUTkMVMKXV6VMyjBVmeNNgeCUJuIw==", + "type": "package", + "path": "microsoft.identitymodel.jsonwebtokens/7.7.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/net461/Microsoft.IdentityModel.JsonWebTokens.xml", + "lib/net462/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/net462/Microsoft.IdentityModel.JsonWebTokens.xml", + "lib/net472/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/net472/Microsoft.IdentityModel.JsonWebTokens.xml", + "lib/net6.0/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/net6.0/Microsoft.IdentityModel.JsonWebTokens.xml", + "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.xml", + "microsoft.identitymodel.jsonwebtokens.7.7.1.nupkg.sha512", + "microsoft.identitymodel.jsonwebtokens.nuspec" + ] + }, + "Microsoft.IdentityModel.Logging/7.7.1": { + "sha512": "BZNgSq/o8gsKExdYoBKPR65fdsxW0cTF8PsdqB8y011AGUJJW300S/ZIsEUD0+sOmGc003Gwv3FYbjrVjvsLNQ==", + "type": "package", + "path": "microsoft.identitymodel.logging/7.7.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/Microsoft.IdentityModel.Logging.dll", + "lib/net461/Microsoft.IdentityModel.Logging.xml", + "lib/net462/Microsoft.IdentityModel.Logging.dll", + "lib/net462/Microsoft.IdentityModel.Logging.xml", + "lib/net472/Microsoft.IdentityModel.Logging.dll", + "lib/net472/Microsoft.IdentityModel.Logging.xml", + "lib/net6.0/Microsoft.IdentityModel.Logging.dll", + "lib/net6.0/Microsoft.IdentityModel.Logging.xml", + "lib/net8.0/Microsoft.IdentityModel.Logging.dll", + "lib/net8.0/Microsoft.IdentityModel.Logging.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.Logging.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.Logging.xml", + "microsoft.identitymodel.logging.7.7.1.nupkg.sha512", + "microsoft.identitymodel.logging.nuspec" + ] + }, + "Microsoft.IdentityModel.Protocols/7.7.1": { + "sha512": "h+fHHBGokepmCX+QZXJk4Ij8OApCb2n2ktoDkNX5CXteXsOxTHMNgjPGpAwdJMFvAL7TtGarUnk3o97NmBq2QQ==", + "type": "package", + "path": "microsoft.identitymodel.protocols/7.7.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/Microsoft.IdentityModel.Protocols.dll", + "lib/net461/Microsoft.IdentityModel.Protocols.xml", + "lib/net462/Microsoft.IdentityModel.Protocols.dll", + "lib/net462/Microsoft.IdentityModel.Protocols.xml", + "lib/net472/Microsoft.IdentityModel.Protocols.dll", + "lib/net472/Microsoft.IdentityModel.Protocols.xml", + "lib/net6.0/Microsoft.IdentityModel.Protocols.dll", + "lib/net6.0/Microsoft.IdentityModel.Protocols.xml", + "lib/net8.0/Microsoft.IdentityModel.Protocols.dll", + "lib/net8.0/Microsoft.IdentityModel.Protocols.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.Protocols.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.Protocols.xml", + "microsoft.identitymodel.protocols.7.7.1.nupkg.sha512", + "microsoft.identitymodel.protocols.nuspec" + ] + }, + "Microsoft.IdentityModel.Protocols.OpenIdConnect/7.7.1": { + "sha512": "yT2Hdj8LpPbcT9C9KlLVxXl09C8zjFaVSaApdOwuecMuoV4s6Sof/mnTDz/+F/lILPIBvrWugR9CC7iRVZgbfQ==", + "type": "package", + "path": "microsoft.identitymodel.protocols.openidconnect/7.7.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", + "lib/net461/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", + "lib/net462/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", + "lib/net462/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", + "lib/net472/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", + "lib/net472/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", + "lib/net6.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", + "lib/net6.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", + "lib/net8.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", + "lib/net8.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", + "microsoft.identitymodel.protocols.openidconnect.7.7.1.nupkg.sha512", + "microsoft.identitymodel.protocols.openidconnect.nuspec" + ] + }, + "Microsoft.IdentityModel.Tokens/7.7.1": { + "sha512": "fQ0VVCba75lknUHGldi3iTKAYUQqbzp1Un8+d9cm9nON0Gs8NAkXddNg8iaUB0qi/ybtAmNWizTR4avdkCJ9pQ==", + "type": "package", + "path": "microsoft.identitymodel.tokens/7.7.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/Microsoft.IdentityModel.Tokens.dll", + "lib/net461/Microsoft.IdentityModel.Tokens.xml", + "lib/net462/Microsoft.IdentityModel.Tokens.dll", + "lib/net462/Microsoft.IdentityModel.Tokens.xml", + "lib/net472/Microsoft.IdentityModel.Tokens.dll", + "lib/net472/Microsoft.IdentityModel.Tokens.xml", + "lib/net6.0/Microsoft.IdentityModel.Tokens.dll", + "lib/net6.0/Microsoft.IdentityModel.Tokens.xml", + "lib/net8.0/Microsoft.IdentityModel.Tokens.dll", + "lib/net8.0/Microsoft.IdentityModel.Tokens.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.Tokens.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.Tokens.xml", + "microsoft.identitymodel.tokens.7.7.1.nupkg.sha512", + "microsoft.identitymodel.tokens.nuspec" + ] + }, + "Microsoft.OpenApi/1.6.14": { + "sha512": "tTaBT8qjk3xINfESyOPE2rIellPvB7qpVqiWiyA/lACVvz+xOGiXhFUfohcx82NLbi5avzLW0lx+s6oAqQijfw==", + "type": "package", + "path": "microsoft.openapi/1.6.14", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "lib/netstandard2.0/Microsoft.OpenApi.dll", + "lib/netstandard2.0/Microsoft.OpenApi.pdb", + "lib/netstandard2.0/Microsoft.OpenApi.xml", + "microsoft.openapi.1.6.14.nupkg.sha512", + "microsoft.openapi.nuspec" + ] + }, + "Microsoft.SqlServer.Server/1.0.0": { + "sha512": "N4KeF3cpcm1PUHym1RmakkzfkEv3GRMyofVv40uXsQhCQeglr2OHNcUk2WOG51AKpGO8ynGpo9M/kFXSzghwug==", + "type": "package", + "path": "microsoft.sqlserver.server/1.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "dotnet.png", + "lib/net46/Microsoft.SqlServer.Server.dll", + "lib/net46/Microsoft.SqlServer.Server.pdb", + "lib/net46/Microsoft.SqlServer.Server.xml", + "lib/netstandard2.0/Microsoft.SqlServer.Server.dll", + "lib/netstandard2.0/Microsoft.SqlServer.Server.pdb", + "lib/netstandard2.0/Microsoft.SqlServer.Server.xml", + "microsoft.sqlserver.server.1.0.0.nupkg.sha512", + "microsoft.sqlserver.server.nuspec" + ] + }, + "Newtonsoft.Json/13.0.3": { + "sha512": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==", + "type": "package", + "path": "newtonsoft.json/13.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.md", + "README.md", + "lib/net20/Newtonsoft.Json.dll", + "lib/net20/Newtonsoft.Json.xml", + "lib/net35/Newtonsoft.Json.dll", + "lib/net35/Newtonsoft.Json.xml", + "lib/net40/Newtonsoft.Json.dll", + "lib/net40/Newtonsoft.Json.xml", + "lib/net45/Newtonsoft.Json.dll", + "lib/net45/Newtonsoft.Json.xml", + "lib/net6.0/Newtonsoft.Json.dll", + "lib/net6.0/Newtonsoft.Json.xml", + "lib/netstandard1.0/Newtonsoft.Json.dll", + "lib/netstandard1.0/Newtonsoft.Json.xml", + "lib/netstandard1.3/Newtonsoft.Json.dll", + "lib/netstandard1.3/Newtonsoft.Json.xml", + "lib/netstandard2.0/Newtonsoft.Json.dll", + "lib/netstandard2.0/Newtonsoft.Json.xml", + "newtonsoft.json.13.0.3.nupkg.sha512", + "newtonsoft.json.nuspec", + "packageIcon.png" + ] + }, + "Swashbuckle.AspNetCore/6.6.2": { + "sha512": "+NB4UYVYN6AhDSjW0IJAd1AGD8V33gemFNLPaxKTtPkHB+HaKAKf9MGAEUPivEWvqeQfcKIw8lJaHq6LHljRuw==", + "type": "package", + "path": "swashbuckle.aspnetcore/6.6.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "build/Swashbuckle.AspNetCore.props", + "swashbuckle.aspnetcore.6.6.2.nupkg.sha512", + "swashbuckle.aspnetcore.nuspec" + ] + }, + "Swashbuckle.AspNetCore.Swagger/6.6.2": { + "sha512": "ovgPTSYX83UrQUWiS5vzDcJ8TEX1MAxBgDFMK45rC24MorHEPQlZAHlaXj/yth4Zf6xcktpUgTEBvffRQVwDKA==", + "type": "package", + "path": "swashbuckle.aspnetcore.swagger/6.6.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net5.0/Swashbuckle.AspNetCore.Swagger.dll", + "lib/net5.0/Swashbuckle.AspNetCore.Swagger.pdb", + "lib/net5.0/Swashbuckle.AspNetCore.Swagger.xml", + "lib/net6.0/Swashbuckle.AspNetCore.Swagger.dll", + "lib/net6.0/Swashbuckle.AspNetCore.Swagger.pdb", + "lib/net6.0/Swashbuckle.AspNetCore.Swagger.xml", + "lib/net7.0/Swashbuckle.AspNetCore.Swagger.dll", + "lib/net7.0/Swashbuckle.AspNetCore.Swagger.pdb", + "lib/net7.0/Swashbuckle.AspNetCore.Swagger.xml", + "lib/net8.0/Swashbuckle.AspNetCore.Swagger.dll", + "lib/net8.0/Swashbuckle.AspNetCore.Swagger.pdb", + "lib/net8.0/Swashbuckle.AspNetCore.Swagger.xml", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.Swagger.dll", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.Swagger.pdb", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.Swagger.xml", + "lib/netstandard2.0/Swashbuckle.AspNetCore.Swagger.dll", + "lib/netstandard2.0/Swashbuckle.AspNetCore.Swagger.pdb", + "lib/netstandard2.0/Swashbuckle.AspNetCore.Swagger.xml", + "package-readme.md", + "swashbuckle.aspnetcore.swagger.6.6.2.nupkg.sha512", + "swashbuckle.aspnetcore.swagger.nuspec" + ] + }, + "Swashbuckle.AspNetCore.SwaggerGen/6.6.2": { + "sha512": "zv4ikn4AT1VYuOsDCpktLq4QDq08e7Utzbir86M5/ZkRaLXbCPF11E1/vTmOiDzRTl0zTZINQU2qLKwTcHgfrA==", + "type": "package", + "path": "swashbuckle.aspnetcore.swaggergen/6.6.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net5.0/Swashbuckle.AspNetCore.SwaggerGen.dll", + "lib/net5.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", + "lib/net5.0/Swashbuckle.AspNetCore.SwaggerGen.xml", + "lib/net6.0/Swashbuckle.AspNetCore.SwaggerGen.dll", + "lib/net6.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", + "lib/net6.0/Swashbuckle.AspNetCore.SwaggerGen.xml", + "lib/net7.0/Swashbuckle.AspNetCore.SwaggerGen.dll", + "lib/net7.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", + "lib/net7.0/Swashbuckle.AspNetCore.SwaggerGen.xml", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.xml", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerGen.dll", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerGen.xml", + "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerGen.dll", + "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", + "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerGen.xml", + "package-readme.md", + "swashbuckle.aspnetcore.swaggergen.6.6.2.nupkg.sha512", + "swashbuckle.aspnetcore.swaggergen.nuspec" + ] + }, + "Swashbuckle.AspNetCore.SwaggerUI/6.6.2": { + "sha512": "mBBb+/8Hm2Q3Wygag+hu2jj69tZW5psuv0vMRXY07Wy+Rrj40vRP8ZTbKBhs91r45/HXT4aY4z0iSBYx1h6JvA==", + "type": "package", + "path": "swashbuckle.aspnetcore.swaggerui/6.6.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net5.0/Swashbuckle.AspNetCore.SwaggerUI.dll", + "lib/net5.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", + "lib/net5.0/Swashbuckle.AspNetCore.SwaggerUI.xml", + "lib/net6.0/Swashbuckle.AspNetCore.SwaggerUI.dll", + "lib/net6.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", + "lib/net6.0/Swashbuckle.AspNetCore.SwaggerUI.xml", + "lib/net7.0/Swashbuckle.AspNetCore.SwaggerUI.dll", + "lib/net7.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", + "lib/net7.0/Swashbuckle.AspNetCore.SwaggerUI.xml", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.xml", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerUI.dll", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerUI.xml", + "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerUI.dll", + "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", + "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerUI.xml", + "package-readme.md", + "swashbuckle.aspnetcore.swaggerui.6.6.2.nupkg.sha512", + "swashbuckle.aspnetcore.swaggerui.nuspec" + ] + }, + "Syncfusion.EJ2.AspNet.Core/32.2.5": { + "sha512": "wM8o2fL+PhqpyY2MBSFYSWftAhanbo41xfDE4sU1GsU3yOAyuCFJXXdmTLYRWosgNSzeGkd0UY/OwWgvcdu7Qg==", + "type": "package", + "path": "syncfusion.ej2.aspnet.core/32.2.5", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.txt", + "README.md", + "lib/net10.0/Syncfusion.EJ2.dll", + "lib/net10.0/Syncfusion.EJ2.xml", + "lib/net8.0/Syncfusion.EJ2.dll", + "lib/net8.0/Syncfusion.EJ2.xml", + "lib/net9.0/Syncfusion.EJ2.dll", + "lib/net9.0/Syncfusion.EJ2.xml", + "lib/netstandard2.0/Syncfusion.EJ2.dll", + "lib/netstandard2.0/Syncfusion.EJ2.xml", + "lib/netstandard2.1/Syncfusion.EJ2.dll", + "lib/netstandard2.1/Syncfusion.EJ2.xml", + "syncfusion.ej2.aspnet.core.32.2.5.nupkg.sha512", + "syncfusion.ej2.aspnet.core.nuspec", + "syncfusion_logo.png" + ] + }, + "Syncfusion.Licensing/32.2.5": { + "sha512": "4aNqKeYr2CM74tHL3J8TPYZxBt2RacMrg8SDUd9uxWpJkqzBy7b5eCoohHvA1+PA/cwW5w0gITzl6CsyvWJB4Q==", + "type": "package", + "path": "syncfusion.licensing/32.2.5", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.txt", + "README.md", + "lib/net10.0/Syncfusion.Licensing.dll", + "lib/net462/Syncfusion.Licensing.dll", + "lib/net8.0/Syncfusion.Licensing.dll", + "lib/net9.0/Syncfusion.Licensing.dll", + "lib/netstandard2.0/Syncfusion.Licensing.dll", + "lib/uap10.0/Syncfusion.Licensing.dll", + "syncfusion.licensing.32.2.5.nupkg.sha512", + "syncfusion.licensing.nuspec", + "syncfusion_logo.png" + ] + }, + "System.ClientModel/1.8.0": { + "sha512": "AqRzhn0v29GGGLj/Z6gKq4lGNtvPHT4nHdG5PDJh9IfVjv/nYUVmX11hwwws1vDFeIAzrvmn0dPu8IjLtu6fAw==", + "type": "package", + "path": "system.clientmodel/1.8.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "CHANGELOG.md", + "DotNetPackageIcon.png", + "README.md", + "analyzers/dotnet/cs/System.ClientModel.SourceGeneration.dll", + "lib/net8.0/System.ClientModel.dll", + "lib/net8.0/System.ClientModel.xml", + "lib/net9.0/System.ClientModel.dll", + "lib/net9.0/System.ClientModel.xml", + "lib/netstandard2.0/System.ClientModel.dll", + "lib/netstandard2.0/System.ClientModel.xml", + "system.clientmodel.1.8.0.nupkg.sha512", + "system.clientmodel.nuspec" + ] + }, + "System.Configuration.ConfigurationManager/8.0.1": { + "sha512": "gPYFPDyohW2gXNhdQRSjtmeS6FymL2crg4Sral1wtvEJ7DUqFCDWDVbbLobASbzxfic8U1hQEdC7hmg9LHncMw==", + "type": "package", + "path": "system.configuration.configurationmanager/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Configuration.ConfigurationManager.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Configuration.ConfigurationManager.targets", + "lib/net462/System.Configuration.ConfigurationManager.dll", + "lib/net462/System.Configuration.ConfigurationManager.xml", + "lib/net6.0/System.Configuration.ConfigurationManager.dll", + "lib/net6.0/System.Configuration.ConfigurationManager.xml", + "lib/net7.0/System.Configuration.ConfigurationManager.dll", + "lib/net7.0/System.Configuration.ConfigurationManager.xml", + "lib/net8.0/System.Configuration.ConfigurationManager.dll", + "lib/net8.0/System.Configuration.ConfigurationManager.xml", + "lib/netstandard2.0/System.Configuration.ConfigurationManager.dll", + "lib/netstandard2.0/System.Configuration.ConfigurationManager.xml", + "system.configuration.configurationmanager.8.0.1.nupkg.sha512", + "system.configuration.configurationmanager.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Diagnostics.DiagnosticSource/8.0.1": { + "sha512": "vaoWjvkG1aenR2XdjaVivlCV9fADfgyhW5bZtXT23qaEea0lWiUljdQuze4E31vKM7ZWJaSUsbYIKE3rnzfZUg==", + "type": "package", + "path": "system.diagnostics.diagnosticsource/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Diagnostics.DiagnosticSource.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Diagnostics.DiagnosticSource.targets", + "lib/net462/System.Diagnostics.DiagnosticSource.dll", + "lib/net462/System.Diagnostics.DiagnosticSource.xml", + "lib/net6.0/System.Diagnostics.DiagnosticSource.dll", + "lib/net6.0/System.Diagnostics.DiagnosticSource.xml", + "lib/net7.0/System.Diagnostics.DiagnosticSource.dll", + "lib/net7.0/System.Diagnostics.DiagnosticSource.xml", + "lib/net8.0/System.Diagnostics.DiagnosticSource.dll", + "lib/net8.0/System.Diagnostics.DiagnosticSource.xml", + "lib/netstandard2.0/System.Diagnostics.DiagnosticSource.dll", + "lib/netstandard2.0/System.Diagnostics.DiagnosticSource.xml", + "system.diagnostics.diagnosticsource.8.0.1.nupkg.sha512", + "system.diagnostics.diagnosticsource.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Diagnostics.EventLog/8.0.1": { + "sha512": "n1ZP7NM2Gkn/MgD8+eOT5MulMj6wfeQMNS2Pizvq5GHCZfjlFMXV2irQlQmJhwA2VABC57M0auudO89Iu2uRLg==", + "type": "package", + "path": "system.diagnostics.eventlog/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Diagnostics.EventLog.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Diagnostics.EventLog.targets", + "lib/net462/System.Diagnostics.EventLog.dll", + "lib/net462/System.Diagnostics.EventLog.xml", + "lib/net6.0/System.Diagnostics.EventLog.dll", + "lib/net6.0/System.Diagnostics.EventLog.xml", + "lib/net7.0/System.Diagnostics.EventLog.dll", + "lib/net7.0/System.Diagnostics.EventLog.xml", + "lib/net8.0/System.Diagnostics.EventLog.dll", + "lib/net8.0/System.Diagnostics.EventLog.xml", + "lib/netstandard2.0/System.Diagnostics.EventLog.dll", + "lib/netstandard2.0/System.Diagnostics.EventLog.xml", + "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.Messages.dll", + "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.dll", + "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.xml", + "runtimes/win/lib/net7.0/System.Diagnostics.EventLog.Messages.dll", + "runtimes/win/lib/net7.0/System.Diagnostics.EventLog.dll", + "runtimes/win/lib/net7.0/System.Diagnostics.EventLog.xml", + "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.Messages.dll", + "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.dll", + "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.xml", + "system.diagnostics.eventlog.8.0.1.nupkg.sha512", + "system.diagnostics.eventlog.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.IdentityModel.Tokens.Jwt/7.7.1": { + "sha512": "rQkO1YbAjLwnDJSMpRhRtrc6XwIcEOcUvoEcge+evurpzSZM3UNK+MZfD3sKyTlYsvknZ6eJjSBfnmXqwOsT9Q==", + "type": "package", + "path": "system.identitymodel.tokens.jwt/7.7.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/System.IdentityModel.Tokens.Jwt.dll", + "lib/net461/System.IdentityModel.Tokens.Jwt.xml", + "lib/net462/System.IdentityModel.Tokens.Jwt.dll", + "lib/net462/System.IdentityModel.Tokens.Jwt.xml", + "lib/net472/System.IdentityModel.Tokens.Jwt.dll", + "lib/net472/System.IdentityModel.Tokens.Jwt.xml", + "lib/net6.0/System.IdentityModel.Tokens.Jwt.dll", + "lib/net6.0/System.IdentityModel.Tokens.Jwt.xml", + "lib/net8.0/System.IdentityModel.Tokens.Jwt.dll", + "lib/net8.0/System.IdentityModel.Tokens.Jwt.xml", + "lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.dll", + "lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.xml", + "system.identitymodel.tokens.jwt.7.7.1.nupkg.sha512", + "system.identitymodel.tokens.jwt.nuspec" + ] + }, + "System.Memory.Data/8.0.1": { + "sha512": "BVYuec3jV23EMRDeR7Dr1/qhx7369dZzJ9IWy2xylvb4YfXsrUxspWc4UWYid/tj4zZK58uGZqn2WQiaDMhmAg==", + "type": "package", + "path": "system.memory.data/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Memory.Data.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Memory.Data.targets", + "lib/net462/System.Memory.Data.dll", + "lib/net462/System.Memory.Data.xml", + "lib/net6.0/System.Memory.Data.dll", + "lib/net6.0/System.Memory.Data.xml", + "lib/net7.0/System.Memory.Data.dll", + "lib/net7.0/System.Memory.Data.xml", + "lib/net8.0/System.Memory.Data.dll", + "lib/net8.0/System.Memory.Data.xml", + "lib/netstandard2.0/System.Memory.Data.dll", + "lib/netstandard2.0/System.Memory.Data.xml", + "system.memory.data.8.0.1.nupkg.sha512", + "system.memory.data.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Security.Cryptography.Pkcs/8.0.1": { + "sha512": "CoCRHFym33aUSf/NtWSVSZa99dkd0Hm7OCZUxORBjRB16LNhIEOf8THPqzIYlvKM0nNDAPTRBa1FxEECrgaxxA==", + "type": "package", + "path": "system.security.cryptography.pkcs/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Security.Cryptography.Pkcs.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Security.Cryptography.Pkcs.targets", + "lib/net462/System.Security.Cryptography.Pkcs.dll", + "lib/net462/System.Security.Cryptography.Pkcs.xml", + "lib/net6.0/System.Security.Cryptography.Pkcs.dll", + "lib/net6.0/System.Security.Cryptography.Pkcs.xml", + "lib/net7.0/System.Security.Cryptography.Pkcs.dll", + "lib/net7.0/System.Security.Cryptography.Pkcs.xml", + "lib/net8.0/System.Security.Cryptography.Pkcs.dll", + "lib/net8.0/System.Security.Cryptography.Pkcs.xml", + "lib/netstandard2.0/System.Security.Cryptography.Pkcs.dll", + "lib/netstandard2.0/System.Security.Cryptography.Pkcs.xml", + "lib/netstandard2.1/System.Security.Cryptography.Pkcs.dll", + "lib/netstandard2.1/System.Security.Cryptography.Pkcs.xml", + "runtimes/win/lib/net6.0/System.Security.Cryptography.Pkcs.dll", + "runtimes/win/lib/net6.0/System.Security.Cryptography.Pkcs.xml", + "runtimes/win/lib/net7.0/System.Security.Cryptography.Pkcs.dll", + "runtimes/win/lib/net7.0/System.Security.Cryptography.Pkcs.xml", + "runtimes/win/lib/net8.0/System.Security.Cryptography.Pkcs.dll", + "runtimes/win/lib/net8.0/System.Security.Cryptography.Pkcs.xml", + "system.security.cryptography.pkcs.8.0.1.nupkg.sha512", + "system.security.cryptography.pkcs.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Security.Cryptography.ProtectedData/8.0.0": { + "sha512": "+TUFINV2q2ifyXauQXRwy4CiBhqvDEDZeVJU7qfxya4aRYOKzVBpN+4acx25VcPB9ywUN6C0n8drWl110PhZEg==", + "type": "package", + "path": "system.security.cryptography.protecteddata/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Security.Cryptography.ProtectedData.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Security.Cryptography.ProtectedData.targets", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net462/System.Security.Cryptography.ProtectedData.dll", + "lib/net462/System.Security.Cryptography.ProtectedData.xml", + "lib/net6.0/System.Security.Cryptography.ProtectedData.dll", + "lib/net6.0/System.Security.Cryptography.ProtectedData.xml", + "lib/net7.0/System.Security.Cryptography.ProtectedData.dll", + "lib/net7.0/System.Security.Cryptography.ProtectedData.xml", + "lib/net8.0/System.Security.Cryptography.ProtectedData.dll", + "lib/net8.0/System.Security.Cryptography.ProtectedData.xml", + "lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll", + "lib/netstandard2.0/System.Security.Cryptography.ProtectedData.xml", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "system.security.cryptography.protecteddata.8.0.0.nupkg.sha512", + "system.security.cryptography.protecteddata.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.ValueTuple/4.5.0": { + "sha512": "okurQJO6NRE/apDIP23ajJ0hpiNmJ+f0BwOlB/cSqTLQlw5upkf+5+96+iG2Jw40G1fCVCyPz/FhIABUjMR+RQ==", + "type": "package", + "path": "system.valuetuple/4.5.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net461/System.ValueTuple.dll", + "lib/net461/System.ValueTuple.xml", + "lib/net47/System.ValueTuple.dll", + "lib/net47/System.ValueTuple.xml", + "lib/netcoreapp2.0/_._", + "lib/netstandard1.0/System.ValueTuple.dll", + "lib/netstandard1.0/System.ValueTuple.xml", + "lib/netstandard2.0/_._", + "lib/portable-net40+sl4+win8+wp8/System.ValueTuple.dll", + "lib/portable-net40+sl4+win8+wp8/System.ValueTuple.xml", + "lib/uap10.0.16299/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net461/System.ValueTuple.dll", + "ref/net47/System.ValueTuple.dll", + "ref/netcoreapp2.0/_._", + "ref/netstandard2.0/_._", + "ref/portable-net40+sl4+win8+wp8/System.ValueTuple.dll", + "ref/uap10.0.16299/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.valuetuple.4.5.0.nupkg.sha512", + "system.valuetuple.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + } + }, + "projectFileDependencyGroups": { + "net8.0": [ + "Microsoft.AspNetCore.SpaProxy >= 8.*-*", + "Microsoft.Data.SqlClient >= 6.1.4", + "Swashbuckle.AspNetCore >= 6.6.2", + "Syncfusion.EJ2.AspNet.Core >= 32.2.5" + ] + }, + "packageFolders": { + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\": {}, + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {}, + "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\Documentation Work\\MSSQL\\syncfusion-react-grid-with-mssql-database\\Grid_MSSQL\\Grid_MSSQL.Server\\Grid_MSSQL.Server.csproj", + "projectName": "Grid_MSSQL.Server", + "projectPath": "D:\\Documentation Work\\MSSQL\\syncfusion-react-grid-with-mssql-database\\Grid_MSSQL\\Grid_MSSQL.Server\\Grid_MSSQL.Server.csproj", + "packagesPath": "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\", + "outputPath": "D:\\Documentation Work\\MSSQL\\syncfusion-react-grid-with-mssql-database\\Grid_MSSQL\\Grid_MSSQL.Server\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages", + "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" + ], + "configFilePaths": [ + "C:\\Users\\SanthoshIruthayaraj\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "10.0.100" + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "Microsoft.AspNetCore.SpaProxy": { + "target": "Package", + "version": "[8.*-*, )" + }, + "Microsoft.Data.SqlClient": { + "target": "Package", + "version": "[6.1.4, )" + }, + "Swashbuckle.AspNetCore": { + "target": "Package", + "version": "[6.6.2, )" + }, + "Syncfusion.EJ2.AspNet.Core": { + "target": "Package", + "version": "[32.2.5, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.AspNetCore.App": { + "privateAssets": "none" + }, + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.103/PortableRuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/project.nuget.cache b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/project.nuget.cache new file mode 100644 index 0000000..6b5a973 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.Server/obj/project.nuget.cache @@ -0,0 +1,49 @@ +{ + "version": 2, + "dgSpecHash": "ROKdSzHv5zQ=", + "success": true, + "projectFilePath": "D:\\Documentation Work\\MSSQL\\syncfusion-react-grid-with-mssql-database\\Grid_MSSQL\\Grid_MSSQL.Server\\Grid_MSSQL.Server.csproj", + "expectedPackageFiles": [ + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\azure.core\\1.50.0\\azure.core.1.50.0.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\azure.identity\\1.17.1\\azure.identity.1.17.1.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\microsoft.aspnetcore.spaproxy\\8.0.24\\microsoft.aspnetcore.spaproxy.8.0.24.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\8.0.0\\microsoft.bcl.asyncinterfaces.8.0.0.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\microsoft.data.sqlclient\\6.1.4\\microsoft.data.sqlclient.6.1.4.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\microsoft.data.sqlclient.sni.runtime\\6.0.2\\microsoft.data.sqlclient.sni.runtime.6.0.2.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\microsoft.extensions.ai.abstractions\\9.9.1\\microsoft.extensions.ai.abstractions.9.9.1.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\microsoft.extensions.apidescription.server\\6.0.5\\microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\microsoft.extensions.caching.abstractions\\8.0.0\\microsoft.extensions.caching.abstractions.8.0.0.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\microsoft.extensions.caching.memory\\8.0.1\\microsoft.extensions.caching.memory.8.0.1.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\8.0.2\\microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\8.0.3\\microsoft.extensions.logging.abstractions.8.0.3.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\microsoft.extensions.options\\8.0.2\\microsoft.extensions.options.8.0.2.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\microsoft.extensions.primitives\\8.0.0\\microsoft.extensions.primitives.8.0.0.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\microsoft.identity.client\\4.80.0\\microsoft.identity.client.4.80.0.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\microsoft.identity.client.extensions.msal\\4.78.0\\microsoft.identity.client.extensions.msal.4.78.0.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\microsoft.identitymodel.abstractions\\8.14.0\\microsoft.identitymodel.abstractions.8.14.0.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\microsoft.identitymodel.jsonwebtokens\\7.7.1\\microsoft.identitymodel.jsonwebtokens.7.7.1.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\microsoft.identitymodel.logging\\7.7.1\\microsoft.identitymodel.logging.7.7.1.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\microsoft.identitymodel.protocols\\7.7.1\\microsoft.identitymodel.protocols.7.7.1.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\microsoft.identitymodel.protocols.openidconnect\\7.7.1\\microsoft.identitymodel.protocols.openidconnect.7.7.1.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\microsoft.identitymodel.tokens\\7.7.1\\microsoft.identitymodel.tokens.7.7.1.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\microsoft.openapi\\1.6.14\\microsoft.openapi.1.6.14.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\microsoft.sqlserver.server\\1.0.0\\microsoft.sqlserver.server.1.0.0.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\newtonsoft.json\\13.0.3\\newtonsoft.json.13.0.3.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\swashbuckle.aspnetcore\\6.6.2\\swashbuckle.aspnetcore.6.6.2.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\swashbuckle.aspnetcore.swagger\\6.6.2\\swashbuckle.aspnetcore.swagger.6.6.2.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\swashbuckle.aspnetcore.swaggergen\\6.6.2\\swashbuckle.aspnetcore.swaggergen.6.6.2.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\swashbuckle.aspnetcore.swaggerui\\6.6.2\\swashbuckle.aspnetcore.swaggerui.6.6.2.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\syncfusion.ej2.aspnet.core\\32.2.5\\syncfusion.ej2.aspnet.core.32.2.5.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\syncfusion.licensing\\32.2.5\\syncfusion.licensing.32.2.5.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\system.clientmodel\\1.8.0\\system.clientmodel.1.8.0.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\system.configuration.configurationmanager\\8.0.1\\system.configuration.configurationmanager.8.0.1.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\system.diagnostics.diagnosticsource\\8.0.1\\system.diagnostics.diagnosticsource.8.0.1.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\system.diagnostics.eventlog\\8.0.1\\system.diagnostics.eventlog.8.0.1.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\system.identitymodel.tokens.jwt\\7.7.1\\system.identitymodel.tokens.jwt.7.7.1.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\system.memory.data\\8.0.1\\system.memory.data.8.0.1.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\system.security.cryptography.pkcs\\8.0.1\\system.security.cryptography.pkcs.8.0.1.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\system.security.cryptography.protecteddata\\8.0.0\\system.security.cryptography.protecteddata.8.0.0.nupkg.sha512", + "C:\\Users\\SanthoshIruthayaraj\\.nuget\\packages\\system.valuetuple\\4.5.0\\system.valuetuple.4.5.0.nupkg.sha512" + ], + "logs": [] +} \ No newline at end of file diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.sln b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.sln new file mode 100644 index 0000000..646e09e --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/Grid_MSSQL.sln @@ -0,0 +1,33 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.14.36811.4 d17.14 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{54A90642-561A-4BB1-A94E-469ADEE60C69}") = "grid_mssql.client", "grid_mssql.client\grid_mssql.client.esproj", "{18682886-ACB0-47C2-313A-1C36E6891CAA}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Grid_MSSQL.Server", "Grid_MSSQL.Server\Grid_MSSQL.Server.csproj", "{AFEB1E61-B1A3-40E6-8B10-9BC0CD69261B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {18682886-ACB0-47C2-313A-1C36E6891CAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {18682886-ACB0-47C2-313A-1C36E6891CAA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {18682886-ACB0-47C2-313A-1C36E6891CAA}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {18682886-ACB0-47C2-313A-1C36E6891CAA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {18682886-ACB0-47C2-313A-1C36E6891CAA}.Release|Any CPU.Build.0 = Release|Any CPU + {18682886-ACB0-47C2-313A-1C36E6891CAA}.Release|Any CPU.Deploy.0 = Release|Any CPU + {AFEB1E61-B1A3-40E6-8B10-9BC0CD69261B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AFEB1E61-B1A3-40E6-8B10-9BC0CD69261B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AFEB1E61-B1A3-40E6-8B10-9BC0CD69261B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AFEB1E61-B1A3-40E6-8B10-9BC0CD69261B}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {5FCC4E61-55A4-4B71-9ABA-2C9793410A82} + EndGlobalSection +EndGlobal diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/CHANGELOG.md b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/CHANGELOG.md new file mode 100644 index 0000000..438afef --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/CHANGELOG.md @@ -0,0 +1,16 @@ +This file explains how Visual Studio created the project. + +The following tools were used to generate this project: +- create-vite + +The following steps were used to generate this project: +- Create react project with create-vite: `npm init --yes vite@latest grid_mssql.client -- --template=react-ts`. +- Update `vite.config.ts` to set up proxying and certs. +- Add `@type/node` for `vite.config.js` typing. +- Update `App` component to fetch and display weather information. +- Create project file (`grid_mssql.client.esproj`). +- Create `launch.json` to enable debugging. +- Add project to solution. +- Update proxy endpoint to be the backend server endpoint. +- Add project to the startup projects list. +- Write this file. diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/README.md b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/README.md new file mode 100644 index 0000000..d2e7761 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/README.md @@ -0,0 +1,73 @@ +# React + TypeScript + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) (or [oxc](https://oxc.rs) when used in [rolldown-vite](https://vite.dev/guide/rolldown)) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## React Compiler + +The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation). + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules: + +```js +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + // Other configs... + + // Remove tseslint.configs.recommended and replace with this + tseslint.configs.recommendedTypeChecked, + // Alternatively, use this for stricter rules + tseslint.configs.strictTypeChecked, + // Optionally, add this for stylistic rules + tseslint.configs.stylisticTypeChecked, + + // Other configs... + ], + languageOptions: { + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + // other options... + }, + }, +]) +``` + +You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules: + +```js +// eslint.config.js +import reactX from 'eslint-plugin-react-x' +import reactDom from 'eslint-plugin-react-dom' + +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + // Other configs... + // Enable lint rules for React + reactX.configs['recommended-typescript'], + // Enable lint rules for React DOM + reactDom.configs.recommended, + ], + languageOptions: { + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + // other options... + }, + }, +]) +``` diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/eslint.config.js b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/eslint.config.js new file mode 100644 index 0000000..5e6b472 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/eslint.config.js @@ -0,0 +1,23 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import tseslint from 'typescript-eslint' +import { defineConfig, globalIgnores } from 'eslint/config' + +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + js.configs.recommended, + tseslint.configs.recommended, + reactHooks.configs.flat.recommended, + reactRefresh.configs.vite, + ], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + }, +]) diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/grid_mssql.client.esproj b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/grid_mssql.client.esproj new file mode 100644 index 0000000..6e48911 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/grid_mssql.client.esproj @@ -0,0 +1,11 @@ + + + npm run dev + src\ + Vitest + + false + + $(MSBuildProjectDirectory)\dist + + \ No newline at end of file diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/index.html b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/index.html new file mode 100644 index 0000000..904c446 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/index.html @@ -0,0 +1,14 @@ + + + + + + + React Grid with MSSQL + + + +
+ + + diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/obj/Debug/package.g.props b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/obj/Debug/package.g.props new file mode 100644 index 0000000..f2c01f3 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/obj/Debug/package.g.props @@ -0,0 +1,29 @@ + + + + grid_mssql.client + true + 0.0.0 + module + vite + tsc -b && vite build + eslint . + vite preview + ^32.1.24 + ^32.1.25 + ^19.2.0 + ^19.2.0 + ^9.39.1 + ^24.10.1 + ^19.2.7 + ^19.2.3 + ^5.1.1 + ^9.39.1 + ^7.0.1 + ^0.4.24 + ^16.5.0 + ~5.9.3 + ^8.48.0 + ^7.3.1 + + \ No newline at end of file diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/package.json b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/package.json new file mode 100644 index 0000000..e19cf0d --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/package.json @@ -0,0 +1,32 @@ +{ + "name": "grid_mssql.client", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "@syncfusion/ej2-data": "^32.1.24", + "@syncfusion/ej2-react-grids": "^32.1.25", + "react": "^19.2.0", + "react-dom": "^19.2.0" + }, + "devDependencies": { + "@eslint/js": "^9.39.1", + "@types/node": "^24.10.1", + "@types/react": "^19.2.7", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^5.1.1", + "eslint": "^9.39.1", + "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-refresh": "^0.4.24", + "globals": "^16.5.0", + "typescript": "~5.9.3", + "typescript-eslint": "^8.48.0", + "vite": "^7.3.1" + } +} \ No newline at end of file diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/public/vite.svg b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/src/App.css b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/src/App.css new file mode 100644 index 0000000..0d37ee7 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/src/App.css @@ -0,0 +1,192 @@ +/* host equivalent to :host in Angular */ +.host { + display: block; + padding: 1rem; +} + +/* STATUS */ +.status-text { + font-weight: 600; + font-size: 0.92rem; +} + +.status-open { + color: #0d6efd; +} + +.status-inprogress { + color: #d97706; +} + +.status-waiting-customer { + color: #7c3aed; +} + +.status-waiting-agent { + color: #9333ea; +} + +.status-resolved { + color: #059669; +} + +.status-closed { + color: #047857; +} + +.status-ticket-id { + color: #4097ee; + position: relative; + text-decoration: none; + transition: color 0.3s ease-in-out; +} + +.status-ticket-id::before { + content: ""; + position: absolute; + top: 100%; + width: 100%; + height: 3px; + background-color: #94a8e1; + transform: scaleX(0); + transition: transform 0.3s ease-in-out; +} + +.status-ticket-id:hover { + color: #2d26c6; + cursor: pointer; +} + +.status-ticket-id:hover::before { + transform: scaleX(1); +} + +/* PRIORITY */ +.priority-pill { + display: inline-flex; + align-items: center; + gap: 0.45rem; + font-weight: 600; + font-size: 0.92rem; +} + +.priority-pill .priority-icon { + display: inline-block; +} + +.priority-pill.priority-critical { + color: #b91c1c; +} + +.priority-pill.priority-critical .priority-icon { + width: 0; + height: 0; + border-left: 0.35rem solid transparent; + border-right: 0.35rem solid transparent; + border-bottom: 0.65rem solid #b91c1c; +} + +.priority-pill.priority-high { + color: #dc2626; +} + +.priority-pill.priority-high .priority-icon { + width: 0; + height: 0; + border-left: 0.34rem solid transparent; + border-right: 0.34rem solid transparent; + border-bottom: 0.6rem solid #dc2626; +} + +.priority-pill.priority-medium { + color: #15803d; +} + +.priority-pill.priority-medium .priority-icon { + width: 0.6rem; + height: 0.6rem; + border-radius: 0.2rem; + background-color: #22c55e; +} + +.priority-pill.priority-low { + color: #4b5563; +} + +.priority-pill.priority-low .priority-icon { + width: 0; + height: 0; + border-left: 0.32rem solid transparent; + border-right: 0.32rem solid transparent; + border-top: 0.55rem solid #4b5563; +} + +/* CATEGORY CHIP */ +.chip { + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0.2rem 1rem; + min-height: 1.8rem; + border-radius: 999px; + font-size: 0.82rem; + font-weight: 600; + color: #fff; + line-height: 1; + white-space: nowrap; + background-color: var(--chip-color, #4b5563); +} + +.chip.category-network { + --chip-color: #4a7c59; +} + +.chip.category-performance { + --chip-color: #68b0ab; +} + +.chip.category-vpn { + --chip-color: #56638a; +} + +.chip.category-hardware { + --chip-color: #8e443d; +} + +.chip.category-server { + --chip-color: #25a18e; +} + +.chip.category-security { + --chip-color: #320a28; +} + +.chip.category-connectivity { + --chip-color: #3c6997; +} + +.chip.category-software { + --chip-color: #ae76a6; +} + +.chip.category-email { + --chip-color: #003554; +} + +.chip.category-access { + --chip-color: #0582ca; +} + +.chip.category-backup { + --chip-color: #093a3e; +} + +.chip.category-database { + --chip-color: #92374d; +} + +/* RESPONSE DUE */ +.response-due { + color: #c05621; + font-weight: 600; +} \ No newline at end of file diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/src/App.tsx b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/src/App.tsx new file mode 100644 index 0000000..f2e8187 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/src/App.tsx @@ -0,0 +1,165 @@ +import React from 'react'; +import { + GridComponent, + ColumnsDirective, + ColumnDirective, + Inject, + Page, + Sort, + Filter, + Edit, + Toolbar, + type FilterSettingsModel +} from '@syncfusion/ej2-react-grids'; +import { DataManager } from '@syncfusion/ej2-data'; +import './app.css'; +import { CustomAdaptor } from './CustomAdaptor'; + +const BASE_URL = 'http://localhost:5239/api/tickets'; + +const dataManager = new DataManager({ + url: `${BASE_URL}`, + insertUrl: `${BASE_URL}/insert`, + updateUrl: `${BASE_URL}/update`, + removeUrl: `${BASE_URL}/remove`, + batchUrl: `${BASE_URL}/batch`, + adaptor: new CustomAdaptor() +}); + +const toolbar: string[] = ['Add', 'Edit', 'Delete', 'Update', 'Cancel', 'Search']; +const editSettings = { allowEditing: true, allowAdding: true, allowDeleting: true }; +const filterSettings: FilterSettingsModel = { type: 'Excel' }; + +const validationRules = { + ticketId: { required: true }, + title: { required: true }, + status: { required: true }, + priority: { required: true }, + category: { required: true }, + department: { required: true }, + createdBy: { required: true }, + assignee: { required: true }, + dueDate: { required: true }, + responseDue: { required: true } +}; + +const formatDateTime = (value?: string | Date | null) => { + if (!value) return ''; + const d = value instanceof Date ? value : new Date(value); + return new Intl.DateTimeFormat('en-US', { + month: 'short', + day: 'numeric', + year: 'numeric', + hour: 'numeric', + minute: '2-digit', + hour12: true + }).format(d); +}; + +const getStatusClass = (row: TicketRow): string => { + const map: Record = { Open: 'status-open', Closed: 'status-closed', Pending: 'status-pending' }; + return map[row.Status] ?? ''; +}; + +const getStatusDescription = (row: TicketRow): string => `Status: ${row.Status}`; + +const getPriorityClass = (row: TicketRow): string => { + const map: Record = { High: 'priority-high', Medium: 'priority-medium', Low: 'priority-low' }; + return map[row.Priority] ?? ''; +}; + +const getPriorityDescription = (row: TicketRow): string => `Priority: ${row.Priority}`; + +const getCategoryClass = (row: TicketRow): string => { + const map: Record = { Bug: 'chip-bug', Feature: 'chip-feature', Task: 'chip-task' }; + return map[row.Category] ?? ''; +}; + +const publicTicketIdTemplate = (data: TicketRow) => ( + {data.PublicTicketId} +); + +const statusTemplate = (data: TicketRow) => ( + + {data.Status} + +); + +const priorityTemplate = (data: TicketRow) => ( + + +); + +const categoryTemplate = (data: TicketRow) => ( + {data.Category} +); + +const responseDueTemplate = (data: TicketRow) => ( + {data.ResponseDue ? formatDateTime(data.ResponseDue) : ''} +); + +const App: React.FC = () => { + return ( +
+ + + + + + + + + + + + + + + + + + +
+ ); +}; + +export default App; + +export interface TicketRow { + TicketId: number | string; + PublicTicketId: string; + Title: string; + Status: string; + Priority: string; + Category: string; + Department: string; + CreatedBy: string; + Assignee: string; + DueDate?: string | Date | null; + ResponseDue?: string | Date | null; + UpdatedAt?: string | Date | null; + CreatedAt?: string | Date | null; +} \ No newline at end of file diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/src/CustomAdaptor.ts b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/src/CustomAdaptor.ts new file mode 100644 index 0000000..f5f4047 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/src/CustomAdaptor.ts @@ -0,0 +1,69 @@ +// File: src/app/custom-adaptor.ts +import { type BatchChanges } from "@syncfusion/ej2-react-grids"; +import { + DataManager, + UrlAdaptor, + type ReturnOption, + type DataResult, +} from "@syncfusion/ej2-data"; + +export class CustomAdaptor extends UrlAdaptor { + public override processResponse(data: DataResult): ReturnOption { + const original = data as any; + if (original && original.result) { + let i = 0; + original.result.forEach((item: any) => (item.SNo = ++i)); + } + return original; + } + + public override beforeSend( + dm: DataManager, + request: Request, + settings?: any, + ): void { + super.beforeSend(dm, request, settings); + } + + public override insert(dm: DataManager, data: DataResult) { + return { + url: `${dm.dataSource["insertUrl"]}`, + type: "POST", + contentType: "application/json; charset=utf-8", + data: JSON.stringify({ value: data }), + }; + } + + public override update(dm: DataManager, _keyField: string, value: any) { + return { + url: `${dm.dataSource["updateUrl"]}`, + type: "POST", + contentType: "application/json; charset=utf-8", + data: JSON.stringify({ value }), + }; + } + + public override remove(dm: DataManager, keyField: string, value: any) { + const keyValue = + value && typeof value === "object" ? value[keyField] : value; + return { + url: `${dm.dataSource["removeUrl"]}`, + type: "POST", + contentType: "application/json; charset=utf-8", + data: JSON.stringify({ key: keyValue }), + }; + } + + public override batchRequest(dm: DataManager, changes: BatchChanges) { + return { + url: `${dm.dataSource["batchUrl"]}`, + type: "POST", + contentType: "application/json; charset=utf-8", + data: JSON.stringify({ + added: changes.addedRecords, + changed: changes.changedRecords, + deleted: changes.deletedRecords, + }), + }; + } +} diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/src/assets/react.svg b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/src/assets/react.svg new file mode 100644 index 0000000..6c87de9 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/src/index.css b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/src/index.css new file mode 100644 index 0000000..53a481e --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/src/index.css @@ -0,0 +1,10 @@ +@import '../node_modules/@syncfusion/ej2-base/styles/bootstrap5.3.css'; +@import '../node_modules/@syncfusion/ej2-buttons/styles/bootstrap5.3.css'; +@import '../node_modules/@syncfusion/ej2-calendars/styles/bootstrap5.3.css'; +@import '../node_modules/@syncfusion/ej2-dropdowns/styles/bootstrap5.3.css'; +@import '../node_modules/@syncfusion/ej2-inputs/styles/bootstrap5.3.css'; +@import '../node_modules/@syncfusion/ej2-navigations/styles/bootstrap5.3.css'; +@import '../node_modules/@syncfusion/ej2-popups/styles/bootstrap5.3.css'; +@import '../node_modules/@syncfusion/ej2-splitbuttons/styles/bootstrap5.3.css'; +@import '../node_modules/@syncfusion/ej2-notifications/styles/bootstrap5.3.css'; +@import '../node_modules/@syncfusion/ej2-react-grids/styles/bootstrap5.3.css'; \ No newline at end of file diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/src/main.tsx b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/src/main.tsx new file mode 100644 index 0000000..bef5202 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/src/main.tsx @@ -0,0 +1,10 @@ +import { StrictMode } from 'react' +import { createRoot } from 'react-dom/client' +import './index.css' +import App from './App.tsx' + +createRoot(document.getElementById('root')!).render( + + + , +) diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/tsconfig.app.json b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/tsconfig.app.json new file mode 100644 index 0000000..a9b5a59 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/tsconfig.app.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "target": "ES2022", + "useDefineForClassFields": true, + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "module": "ESNext", + "types": ["vite/client"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["src"] +} diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/tsconfig.json b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/tsconfig.json new file mode 100644 index 0000000..1ffef60 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/tsconfig.json @@ -0,0 +1,7 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] +} diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/tsconfig.node.json b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/tsconfig.node.json new file mode 100644 index 0000000..8a67f62 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/tsconfig.node.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "target": "ES2023", + "lib": ["ES2023"], + "module": "ESNext", + "types": ["node"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/vite.config.ts b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/vite.config.ts new file mode 100644 index 0000000..689482a --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MSSQL/grid_mssql.client/vite.config.ts @@ -0,0 +1,61 @@ +import { fileURLToPath, URL } from 'node:url'; + +import { defineConfig } from 'vite'; +import plugin from '@vitejs/plugin-react'; +import fs from 'fs'; +import path from 'path'; +import child_process from 'child_process'; +import { env } from 'process'; + +const baseFolder = + env.APPDATA !== undefined && env.APPDATA !== '' + ? `${env.APPDATA}/ASP.NET/https` + : `${env.HOME}/.aspnet/https`; + +const certificateName = "grid_mssql.client"; +const certFilePath = path.join(baseFolder, `${certificateName}.pem`); +const keyFilePath = path.join(baseFolder, `${certificateName}.key`); + +if (!fs.existsSync(baseFolder)) { + fs.mkdirSync(baseFolder, { recursive: true }); +} + +if (!fs.existsSync(certFilePath) || !fs.existsSync(keyFilePath)) { + if (0 !== child_process.spawnSync('dotnet', [ + 'dev-certs', + 'https', + '--export-path', + certFilePath, + '--format', + 'Pem', + '--no-password', + ], { stdio: 'inherit', }).status) { + throw new Error("Could not create certificate."); + } +} + +const target = env.ASPNETCORE_HTTPS_PORT ? `https://localhost:${env.ASPNETCORE_HTTPS_PORT}` : + env.ASPNETCORE_URLS ? env.ASPNETCORE_URLS.split(';')[0] : 'https://localhost:7225'; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [plugin()], + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)) + } + }, + server: { + proxy: { + '^/weatherforecast': { + target, + secure: false + } + }, + port: parseInt(env.DEV_SERVER_PORT || '64691'), + https: { + key: fs.readFileSync(keyFilePath), + cert: fs.readFileSync(certFilePath), + } + } +}) diff --git a/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/CHANGELOG.md b/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/CHANGELOG.md new file mode 100644 index 0000000..03c2619 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/CHANGELOG.md @@ -0,0 +1,8 @@ +This file explains how Visual Studio created the project. + +The following steps were used to generate this project: +- Create new ASP\.NET Core Web API project. +- Update project file to add a reference to the frontend project and set SPA properties. +- Update `launchSettings.json` to register the SPA proxy as a startup assembly. +- Add project to the startup projects list. +- Write this file. diff --git a/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/Controllers/GridController.cs b/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/Controllers/GridController.cs new file mode 100644 index 0000000..f115970 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/Controllers/GridController.cs @@ -0,0 +1,166 @@ +// File: Grid_MySQL.Server/Controllers/GridController.cs +using Grid_MySQL.Server.Data; +using Grid_MySQL.Server.Models; +using LinqToDB; +using LinqToDB.Async; +using Microsoft.AspNetCore.Mvc; +using Syncfusion.EJ2.Base; + +namespace Grid_MySQL.Server.Controllers +{ + [ApiController] + [Route("api/[controller]")] + public class GridController(AppDataConnection db) : ControllerBase + { + private readonly AppDataConnection _db = db; + + // POST: /api/grid/url + // Accepts Syncfusion DataManagerRequest and returns data with optional counts. + [HttpPost("url")] + public async Task UrlDatasource([FromBody] DataManagerRequest dm) + { + try + { + // Get IQueryable using LinqToDB raw SQL (to match your original pattern) + IQueryable query = _db.FromSql( + "SELECT * FROM transactiondb.transactions" + ); + + var operation = new QueryableOperation(); + + // Searching + if (dm.Search != null && dm.Search.Count > 0) + query = operation.PerformSearching(query, dm.Search); + + // Filtering + if (dm.Where != null && dm.Where.Count > 0) + query = operation.PerformFiltering(query, dm.Where, dm.Where[0].Operator); + + // Sorting + if (dm.Sorted != null && dm.Sorted.Count > 0) + query = operation.PerformSorting(query, dm.Sorted); + + // Total count before paging + int count = await query.CountAsync(); + + // Paging + if (dm.Skip != 0) + query = operation.PerformSkip(query, dm.Skip); + if (dm.Take != 0) + query = operation.PerformTake(query, dm.Take); + + var rows = await query.ToListAsync(); + + if (dm.RequiresCounts) + return Ok(new { result = rows, count }); + + return Ok(rows); + } + catch (Exception ex) + { + return Problem(title: "UrlDatasource error", detail: ex.ToString()); + } + } + + // POST: /api/grid/insert + // Inserts a new Transaction and returns the created entity (with generated Id). + [HttpPost("insert")] + public async Task Insert([FromBody] CRUDModel model) + { + if (model?.Value == null) + return BadRequest(); + + var value = model.Value; + + var id = await _db.InsertWithInt32IdentityAsync(value); + value.Id = id; + + return Ok(value); + } + + // POST: /api/grid/update + // Updates an existing Transaction by Id. The posted body must include the primary key. + [HttpPost("update")] + public async Task Update([FromBody] CRUDModel model) + { + if (model?.Value == null) + return BadRequest(); + + var value = model.Value; + + // optional existence check (safe and simple) + if (!_db.Transactions.Any(t => t.Id == value.Id)) + return NotFound(); + + await _db.UpdateAsync(value); + return Ok(value); + } + + // POST: /api/grid/remove + // Removes a Transaction by key (Syncfusion UrlAdaptor default posts { key: ... }). + [HttpPost("remove")] + public async Task Remove([FromBody] CRUDModel model) + { + var key = Convert.ToInt32(model.Key); + var rows = await _db.Transactions.DeleteAsync(t => t.Id == key); + if (rows == 0) + return NotFound("Record not found"); + + return Ok(new { key }); + } + + // POST: /api/grid/batch + // Handles batch add, update, and delete in a single transaction. + [HttpPost("batch")] + public async Task BatchUpdate([FromBody] CRUDModel payload) + { + using var tr = await _db.BeginTransactionAsync(); + + // INSERT many + if (payload.Added != null && payload.Added.Count > 0) + { + foreach (var r in payload.Added) + { + if (r.CreatedAt == default) + r.CreatedAt = DateTime.UtcNow; + + var newId = await _db.InsertWithInt32IdentityAsync(r); + r.Id = newId; // return generated key to client + } + } + + // UPDATE many + if (payload.Changed != null && payload.Changed.Count > 0) + { + foreach (var r in payload.Changed) + { + await _db + .Transactions.Where(t => t.Id == r.Id) + .Set(t => t.TransactionId, r.TransactionId) + .Set(t => t.CustomerId, r.CustomerId) + .Set(t => t.OrderId, r.OrderId) + .Set(t => t.InvoiceNumber, r.InvoiceNumber) + .Set(t => t.Description, r.Description) + .Set(t => t.Amount, r.Amount) + .Set(t => t.CurrencyCode, r.CurrencyCode) + .Set(t => t.TransactionType, r.TransactionType) + .Set(t => t.PaymentGateway, r.PaymentGateway) + .Set(t => t.CreatedAt, r.CreatedAt) // keep if you intentionally allow updating CreatedAt + .Set(t => t.CompletedAt, r.CompletedAt) + .Set(t => t.Status, r.Status) + .UpdateAsync(); + } + } + + // DELETE many + if (payload.Deleted != null && payload.Deleted.Count > 0) + { + var keys = payload.Deleted.Select(d => d.Id).ToArray(); + await _db.Transactions.Where(t => keys.Contains(t.Id)).DeleteAsync(); + } + + await tr.CommitAsync(); + return Ok(payload); + } + } +} diff --git a/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/Data/AppDataConnection.cs b/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/Data/AppDataConnection.cs new file mode 100644 index 0000000..9fd9165 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/Data/AppDataConnection.cs @@ -0,0 +1,27 @@ +// File: Grid_MySQL.Server/Data/AppDataConnection.cs +using Grid_MySQL.Server.Models; +using LinqToDB; +using LinqToDB.Data; +using LinqToDB.DataProvider.MySql; + +namespace Grid_MySQL.Server.Data +{ + public sealed class AppDataConnection : DataConnection + { + public AppDataConnection(IConfiguration config) + : base( + new DataOptions().UseMySql( + config.GetConnectionString("MySqlConn"), + MySqlVersion.MySql80, + MySqlProvider.MySqlConnector + ) + ) + { + InlineParameters = true; + // Optional tracing: + // this.OnTrace = info => System.Diagnostics.Debug.WriteLine($"[LinqToDB] {info.SqlText}"); + } + + public ITable Transactions => this.GetTable(); + } +} diff --git a/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/Grid_MySQL.Server.csproj b/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/Grid_MySQL.Server.csproj new file mode 100644 index 0000000..47a34d1 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/Grid_MySQL.Server.csproj @@ -0,0 +1,26 @@ + + + net10.0 + enable + ..\grid_mysql.client + npm start + https://localhost:62268 + + + + + + + + 10.*-* + + + + + + + + false + + + diff --git a/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/Grid_MySQL.Server.csproj.user b/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/Grid_MySQL.Server.csproj.user new file mode 100644 index 0000000..9ff5820 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/Grid_MySQL.Server.csproj.user @@ -0,0 +1,6 @@ + + + + https + + \ No newline at end of file diff --git a/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/Grid_MySQL.Server.http b/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/Grid_MySQL.Server.http new file mode 100644 index 0000000..ed2fa56 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/Grid_MySQL.Server.http @@ -0,0 +1,6 @@ +@Grid_MySQL.Server_HostAddress = http://localhost:5283 + +GET {{Grid_MySQL.Server_HostAddress}}/weatherforecast/ +Accept: application/json + +### diff --git a/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/Models/Transaction.cs b/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/Models/Transaction.cs new file mode 100644 index 0000000..ce2e877 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/Models/Transaction.cs @@ -0,0 +1,47 @@ +using LinqToDB.Mapping; + +namespace Grid_MySQL.Server.Models +{ + [Table("transactions")] + public class Transaction + { + [PrimaryKey, Identity] + public int? Id { get; set; } + + [Column, NotNull] + public string TransactionId { get; set; } + + [Column, NotNull] + public int CustomerId { get; set; } + + [Column] + public int? OrderId { get; set; } + + [Column] + public string InvoiceNumber { get; set; } + + [Column] + public string Description { get; set; } + + [Column, NotNull] + public decimal Amount { get; set; } + + [Column] + public string CurrencyCode { get; set; } + + [Column] + public string TransactionType { get; set; } + + [Column] + public string PaymentGateway { get; set; } + + [Column, NotNull] + public DateTime CreatedAt { get; set; } + + [Column] + public DateTime? CompletedAt { get; set; } + + [Column] + public string Status { get; set; } + } +} diff --git a/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/Program.cs b/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/Program.cs new file mode 100644 index 0000000..8dc6b1c --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/Program.cs @@ -0,0 +1,34 @@ +using Grid_MySQL.Server.Data; +using LinqToDB; +using LinqToDB.AspNet; +using LinqToDB.DataProvider.MySql; + +var builder = WebApplication.CreateBuilder(args); + +builder.Services.AddControllers().AddNewtonsoftJson(); + +// CORS (dev) +builder.Services.AddCors(options => +{ + options.AddPolicy("cors", p => p.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod()); +}); + +// 1) Register LinqToDB engine (connection factory) with MySQL provider +builder.Services.AddLinqToDB( + (sp, options) => + options.UseMySql( + builder.Configuration.GetConnectionString("MySqlConn"), + MySqlVersion.MySql80, + MySqlProvider.MySqlConnector + ) +); + +// 2) Register your typed DataConnection so controllers can inject it +builder.Services.AddScoped(); + +var app = builder.Build(); + +app.UseCors("cors"); +app.MapControllers(); + +app.Run(); diff --git a/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/Properties/launchSettings.json b/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/Properties/launchSettings.json new file mode 100644 index 0000000..05db172 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/Properties/launchSettings.json @@ -0,0 +1,45 @@ +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:27953", + "sslPort": 44349 + } + }, + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "launchUrl": "swagger", + "applicationUrl": "http://localhost:5283", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development", + "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.SpaProxy" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "launchUrl": "swagger", + "applicationUrl": "https://localhost:7143;http://localhost:5283", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development", + "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.SpaProxy" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "launchUrl": "swagger", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development", + "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.SpaProxy" + } + } + } +} + diff --git a/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/appsettings.Development.json b/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/appsettings.Development.json new file mode 100644 index 0000000..0c208ae --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/appsettings.json b/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/appsettings.json new file mode 100644 index 0000000..0e549e9 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.Server/appsettings.json @@ -0,0 +1,12 @@ +{ + "ConnectionStrings": { + "MySqlConn": "Server=localhost;Port=3306;Database=transactiondb;User Id=admin;Password=12345678;SslMode=None;" + }, + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} \ No newline at end of file diff --git a/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.sln b/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.sln new file mode 100644 index 0000000..9060b8b --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MySQL/Grid_MySQL.sln @@ -0,0 +1,33 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.14.36811.4 d17.14 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{54A90642-561A-4BB1-A94E-469ADEE60C69}") = "grid_mysql.client", "grid_mysql.client\grid_mysql.client.esproj", "{BFE7B104-8353-2AD3-8556-CB3C9C813E26}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Grid_MySQL.Server", "Grid_MySQL.Server\Grid_MySQL.Server.csproj", "{C91B9C7F-EC75-48B6-9129-AD12D77BEF98}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {BFE7B104-8353-2AD3-8556-CB3C9C813E26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BFE7B104-8353-2AD3-8556-CB3C9C813E26}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BFE7B104-8353-2AD3-8556-CB3C9C813E26}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {BFE7B104-8353-2AD3-8556-CB3C9C813E26}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BFE7B104-8353-2AD3-8556-CB3C9C813E26}.Release|Any CPU.Build.0 = Release|Any CPU + {BFE7B104-8353-2AD3-8556-CB3C9C813E26}.Release|Any CPU.Deploy.0 = Release|Any CPU + {C91B9C7F-EC75-48B6-9129-AD12D77BEF98}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C91B9C7F-EC75-48B6-9129-AD12D77BEF98}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C91B9C7F-EC75-48B6-9129-AD12D77BEF98}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C91B9C7F-EC75-48B6-9129-AD12D77BEF98}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {4A0ABFC4-7856-4155-ADD4-D9E4D323A329} + EndGlobalSection +EndGlobal diff --git a/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/CHANGELOG.md b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/CHANGELOG.md new file mode 100644 index 0000000..2b235fc --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/CHANGELOG.md @@ -0,0 +1,16 @@ +This file explains how Visual Studio created the project. + +The following tools were used to generate this project: +- create-vite + +The following steps were used to generate this project: +- Create react project with create-vite: `npm init --yes vite@latest ticketmanagement.client -- --template=react-ts`. +- Update `vite.config.ts` to set up proxying and certs. +- Add `@type/node` for `vite.config.js` typing. +- Update `App` component to fetch and display weather information. +- Create project file (`ticketmanagement.client.esproj`). +- Create `launch.json` to enable debugging. +- Add project to solution. +- Update proxy endpoint to be the backend server endpoint. +- Add project to the startup projects list. +- Write this file. diff --git a/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/README.md b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/README.md new file mode 100644 index 0000000..d2e7761 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/README.md @@ -0,0 +1,73 @@ +# React + TypeScript + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) (or [oxc](https://oxc.rs) when used in [rolldown-vite](https://vite.dev/guide/rolldown)) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## React Compiler + +The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation). + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules: + +```js +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + // Other configs... + + // Remove tseslint.configs.recommended and replace with this + tseslint.configs.recommendedTypeChecked, + // Alternatively, use this for stricter rules + tseslint.configs.strictTypeChecked, + // Optionally, add this for stylistic rules + tseslint.configs.stylisticTypeChecked, + + // Other configs... + ], + languageOptions: { + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + // other options... + }, + }, +]) +``` + +You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules: + +```js +// eslint.config.js +import reactX from 'eslint-plugin-react-x' +import reactDom from 'eslint-plugin-react-dom' + +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + // Other configs... + // Enable lint rules for React + reactX.configs['recommended-typescript'], + // Enable lint rules for React DOM + reactDom.configs.recommended, + ], + languageOptions: { + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + // other options... + }, + }, +]) +``` diff --git a/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/aspnetcore-https.js b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/aspnetcore-https.js new file mode 100644 index 0000000..cab03ec --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/aspnetcore-https.js @@ -0,0 +1,37 @@ +// This script sets up HTTPS for the application using the ASP.NET Core HTTPS certificate +const fs = require('fs'); +const spawn = require('child_process').spawn; +const path = require('path'); + +const baseFolder = + process.env.APPDATA !== undefined && process.env.APPDATA !== '' + ? `${process.env.APPDATA}/ASP.NET/https` + : `${process.env.HOME}/.aspnet/https`; + +const certificateArg = process.argv.map(arg => arg.match(/--name=(?.+)/i)).filter(Boolean)[0]; +const certificateName = certificateArg ? certificateArg.groups.value : process.env.npm_package_name; + +if (!certificateName) { + console.error('Invalid certificate name. Run this script in the context of an npm/yarn script or pass --name=<> explicitly.') + process.exit(-1); +} + +const certFilePath = path.join(baseFolder, `${certificateName}.pem`); +const keyFilePath = path.join(baseFolder, `${certificateName}.key`); + +if (!fs.existsSync(baseFolder)) { + fs.mkdirSync(baseFolder, { recursive: true }); +} + +if (!fs.existsSync(certFilePath) || !fs.existsSync(keyFilePath)) { + spawn('dotnet', [ + 'dev-certs', + 'https', + '--export-path', + certFilePath, + '--format', + 'Pem', + '--no-password', + ], { stdio: 'inherit', }) + .on('exit', (code) => process.exit(code)); +} \ No newline at end of file diff --git a/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/eslint.config.js b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/eslint.config.js new file mode 100644 index 0000000..5e6b472 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/eslint.config.js @@ -0,0 +1,23 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import tseslint from 'typescript-eslint' +import { defineConfig, globalIgnores } from 'eslint/config' + +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + js.configs.recommended, + tseslint.configs.recommended, + reactHooks.configs.flat.recommended, + reactRefresh.configs.vite, + ], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + }, +]) diff --git a/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/grid_mysql.client.esproj b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/grid_mysql.client.esproj new file mode 100644 index 0000000..06f55e3 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/grid_mysql.client.esproj @@ -0,0 +1,10 @@ + + + npm start + Jasmine + + false + + $(MSBuildProjectDirectory)\dist\grid_mysql.client\ + + \ No newline at end of file diff --git a/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/index.html b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/index.html new file mode 100644 index 0000000..28d0c05 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/index.html @@ -0,0 +1,14 @@ + + + + + + + GridMysqlClient + + + +
+ + + diff --git a/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/package.json b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/package.json new file mode 100644 index 0000000..f6a7fdd --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/package.json @@ -0,0 +1,33 @@ +{ + "name": "ticketmanagement.client", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "start": "vite", + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "@syncfusion/ej2-data": "^32.1.24", + "@syncfusion/ej2-react-grids": "^32.1.25", + "react": "^19.2.0", + "react-dom": "^19.2.0" + }, + "devDependencies": { + "@eslint/js": "^9.39.1", + "@types/node": "^24.10.1", + "@types/react": "^19.2.5", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^5.1.1", + "eslint": "^9.39.1", + "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-refresh": "^0.4.24", + "globals": "^16.5.0", + "typescript": "~5.9.3", + "typescript-eslint": "^8.46.4", + "vite": "^7.2.4" + } +} diff --git a/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/public/vite.svg b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/src/App.css b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/src/App.css new file mode 100644 index 0000000..5f28270 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/src/App.css @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/src/App.tsx b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/src/App.tsx new file mode 100644 index 0000000..22d3471 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/src/App.tsx @@ -0,0 +1,67 @@ +import React from 'react'; +import { + GridComponent, + ColumnsDirective, + ColumnDirective, + Inject, + Edit, + Toolbar, + Page, + Sort, + Filter, + Search, +} from '@syncfusion/ej2-react-grids'; +import { DataManager } from '@syncfusion/ej2-data'; +import { CustomAdaptor } from './CustomAdaptor'; + +const App: React.FC = () => { + const dateDefault = new Date(); + + const transactionIdRules = { required: true, maxLength: 50 }; + const customerIdRules = { required: true, number: true }; + const orderIdRules = { number: true }; + const invoiceNumberRules = { maxLength: 50 }; + const descriptionRules = { maxLength: 500 }; + const amountRules = { required: true, number: true }; + const currencyCodeRules = { maxLength: 10 }; + const transactionTypeRules = { maxLength: 50 }; + const paymentGatewayRules = { maxLength: 100 }; + const statusRules = { maxLength: 50 }; + + const dataManager = new DataManager({ + url: 'http://localhost:5283/api/grid/url', + insertUrl: 'http://localhost:5283/api/grid/insert', + updateUrl: 'http://localhost:5283/api/grid/update', + removeUrl: 'http://localhost:5283/api/grid/remove', + batchUrl: 'http://localhost:5283/api/grid/batch', + adaptor: new CustomAdaptor(), + }); + + const editSettings = { allowAdding: true, allowEditing: true, allowDeleting: true }; + const toolbar = ['Add', 'Edit', 'Delete', 'Update', 'Cancel', 'Search']; + + return ( +
+ + + + + + + + + + + + + + + + + + +
+ ); +}; + +export default App; \ No newline at end of file diff --git a/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/src/CustomAdaptor.ts b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/src/CustomAdaptor.ts new file mode 100644 index 0000000..f5f4047 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/src/CustomAdaptor.ts @@ -0,0 +1,69 @@ +// File: src/app/custom-adaptor.ts +import { type BatchChanges } from "@syncfusion/ej2-react-grids"; +import { + DataManager, + UrlAdaptor, + type ReturnOption, + type DataResult, +} from "@syncfusion/ej2-data"; + +export class CustomAdaptor extends UrlAdaptor { + public override processResponse(data: DataResult): ReturnOption { + const original = data as any; + if (original && original.result) { + let i = 0; + original.result.forEach((item: any) => (item.SNo = ++i)); + } + return original; + } + + public override beforeSend( + dm: DataManager, + request: Request, + settings?: any, + ): void { + super.beforeSend(dm, request, settings); + } + + public override insert(dm: DataManager, data: DataResult) { + return { + url: `${dm.dataSource["insertUrl"]}`, + type: "POST", + contentType: "application/json; charset=utf-8", + data: JSON.stringify({ value: data }), + }; + } + + public override update(dm: DataManager, _keyField: string, value: any) { + return { + url: `${dm.dataSource["updateUrl"]}`, + type: "POST", + contentType: "application/json; charset=utf-8", + data: JSON.stringify({ value }), + }; + } + + public override remove(dm: DataManager, keyField: string, value: any) { + const keyValue = + value && typeof value === "object" ? value[keyField] : value; + return { + url: `${dm.dataSource["removeUrl"]}`, + type: "POST", + contentType: "application/json; charset=utf-8", + data: JSON.stringify({ key: keyValue }), + }; + } + + public override batchRequest(dm: DataManager, changes: BatchChanges) { + return { + url: `${dm.dataSource["batchUrl"]}`, + type: "POST", + contentType: "application/json; charset=utf-8", + data: JSON.stringify({ + added: changes.addedRecords, + changed: changes.changedRecords, + deleted: changes.deletedRecords, + }), + }; + } +} diff --git a/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/src/assets/react.svg b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/src/assets/react.svg new file mode 100644 index 0000000..6c87de9 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/src/index.css b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/src/index.css new file mode 100644 index 0000000..53a481e --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/src/index.css @@ -0,0 +1,10 @@ +@import '../node_modules/@syncfusion/ej2-base/styles/bootstrap5.3.css'; +@import '../node_modules/@syncfusion/ej2-buttons/styles/bootstrap5.3.css'; +@import '../node_modules/@syncfusion/ej2-calendars/styles/bootstrap5.3.css'; +@import '../node_modules/@syncfusion/ej2-dropdowns/styles/bootstrap5.3.css'; +@import '../node_modules/@syncfusion/ej2-inputs/styles/bootstrap5.3.css'; +@import '../node_modules/@syncfusion/ej2-navigations/styles/bootstrap5.3.css'; +@import '../node_modules/@syncfusion/ej2-popups/styles/bootstrap5.3.css'; +@import '../node_modules/@syncfusion/ej2-splitbuttons/styles/bootstrap5.3.css'; +@import '../node_modules/@syncfusion/ej2-notifications/styles/bootstrap5.3.css'; +@import '../node_modules/@syncfusion/ej2-react-grids/styles/bootstrap5.3.css'; \ No newline at end of file diff --git a/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/src/main.tsx b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/src/main.tsx new file mode 100644 index 0000000..bef5202 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/src/main.tsx @@ -0,0 +1,10 @@ +import { StrictMode } from 'react' +import { createRoot } from 'react-dom/client' +import './index.css' +import App from './App.tsx' + +createRoot(document.getElementById('root')!).render( + + + , +) diff --git a/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/tsconfig.app.json b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/tsconfig.app.json new file mode 100644 index 0000000..a9b5a59 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/tsconfig.app.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "target": "ES2022", + "useDefineForClassFields": true, + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "module": "ESNext", + "types": ["vite/client"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["src"] +} diff --git a/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/tsconfig.json b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/tsconfig.json new file mode 100644 index 0000000..1ffef60 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/tsconfig.json @@ -0,0 +1,7 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] +} diff --git a/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/tsconfig.node.json b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/tsconfig.node.json new file mode 100644 index 0000000..8a67f62 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/tsconfig.node.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "target": "ES2023", + "lib": ["ES2023"], + "module": "ESNext", + "types": ["node"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/vite.config.ts b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/vite.config.ts new file mode 100644 index 0000000..e6b0f97 --- /dev/null +++ b/connecting-to-database/syncfusion-angular-grid-MySQL/grid_mysql.client/vite.config.ts @@ -0,0 +1,61 @@ +import { fileURLToPath, URL } from 'node:url'; + +import { defineConfig } from 'vite'; +import plugin from '@vitejs/plugin-react'; +import fs from 'fs'; +import path from 'path'; +import child_process from 'child_process'; +import { env } from 'process'; + +const baseFolder = + env.APPDATA !== undefined && env.APPDATA !== '' + ? `${env.APPDATA}/ASP.NET/https` + : `${env.HOME}/.aspnet/https`; + +const certificateName = "ticketmanagement.client"; +const certFilePath = path.join(baseFolder, `${certificateName}.pem`); +const keyFilePath = path.join(baseFolder, `${certificateName}.key`); + +if (!fs.existsSync(baseFolder)) { + fs.mkdirSync(baseFolder, { recursive: true }); +} + +if (!fs.existsSync(certFilePath) || !fs.existsSync(keyFilePath)) { + if (0 !== child_process.spawnSync('dotnet', [ + 'dev-certs', + 'https', + '--export-path', + certFilePath, + '--format', + 'Pem', + '--no-password', + ], { stdio: 'inherit', }).status) { + throw new Error("Could not create certificate."); + } +} + +const target = env.ASPNETCORE_HTTPS_PORT ? `https://localhost:${env.ASPNETCORE_HTTPS_PORT}` : + env.ASPNETCORE_URLS ? env.ASPNETCORE_URLS.split(';')[0] : 'https://localhost:7290'; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [plugin()], + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)) + } + }, + server: { + proxy: { + '^/weatherforecast': { + target, + secure: false + } + }, + port: parseInt(env.DEV_SERVER_PORT || '59074'), + https: { + key: fs.readFileSync(keyFilePath), + cert: fs.readFileSync(certFilePath), + } + } +})