From 56f17681be13f163126c2fc0af219a0586b0e139 Mon Sep 17 00:00:00 2001 From: ivanszabo Date: Mon, 31 Mar 2025 11:55:24 +0200 Subject: [PATCH] RoleCheckPoint --- .../Controllers/UserController.cs | 75 ++ .../Services/CheckListService.cs | 8 +- .../Services/Interfaces/ICheckListService.cs | 9 +- .../Services/Interfaces/IUserService.cs | 6 +- src/WorkFlowCheck.BL/Services/UserService.cs | 90 ++ .../DTO/CheckListHeaderDTO.cs | 2 + .../DTO/RoleCheckPointDTO.cs | 19 + src/WorkFlowCheck.Common/Enums/CheckStatus.cs | 17 + src/WorkFlowCheck.DL/AppDbContext.cs | 3 +- .../RoleCheckPointTypeConfiguration.cs | 20 + .../Entities/CheckListHeader.cs | 2 + .../Entities/RoleCheckListTemplateHeader.cs | 2 +- .../Entities/RoleCheckPoint.cs | 18 + .../20250331093742_Extend009.Designer.cs | 847 ++++++++++++++++++ .../Migrations/20250331093742_Extend009.cs | 98 ++ .../Migrations/AppDbContextModelSnapshot.cs | 56 +- .../CheckListHeaderEditPage.cshtml.cs | 4 +- .../CheckListHeaderPage.cshtml | 2 +- .../CheckListHeaderPage.cshtml.cs | 10 + .../Pages/Shared/_Layout.cshtml | 2 +- .../UserAndRole/RoleCheckPointsPage.cshtml | 112 +++ .../UserAndRole/RoleCheckPointsPage.cshtml.cs | 25 + .../Services/CheckListService.cs | 24 +- .../Services/Interfaces/ICheckListService.cs | 5 +- .../Services/Interfaces/IUserService.cs | 4 + src/WorkFlowCheck.Web/Services/UserService.cs | 71 ++ 26 files changed, 1511 insertions(+), 20 deletions(-) create mode 100644 src/WorkFlowCheck.Common/DTO/RoleCheckPointDTO.cs create mode 100644 src/WorkFlowCheck.Common/Enums/CheckStatus.cs create mode 100644 src/WorkFlowCheck.DL/Configurations/RoleCheckPointTypeConfiguration.cs create mode 100644 src/WorkFlowCheck.DL/Entities/RoleCheckPoint.cs create mode 100644 src/WorkFlowCheck.DL/Migrations/20250331093742_Extend009.Designer.cs create mode 100644 src/WorkFlowCheck.DL/Migrations/20250331093742_Extend009.cs create mode 100644 src/WorkFlowCheck.Web/Pages/UserAndRole/RoleCheckPointsPage.cshtml create mode 100644 src/WorkFlowCheck.Web/Pages/UserAndRole/RoleCheckPointsPage.cshtml.cs diff --git a/src/WorkFlowCheck.API/Controllers/UserController.cs b/src/WorkFlowCheck.API/Controllers/UserController.cs index 6002ea3..7761b76 100644 --- a/src/WorkFlowCheck.API/Controllers/UserController.cs +++ b/src/WorkFlowCheck.API/Controllers/UserController.cs @@ -366,5 +366,80 @@ namespace WorkFlowCheck.API.Controllers } return retVal; } + + [HttpGet("GetRoleCheckPoint/{id}")] + public async Task> GetRoleCheckPoint(int id) + { + var retVal = new ApiResponseDTO() + { + IsSuccess = true, + }; + var roleCheckPointDTO = await _userService.GetRoleCheckPointAsync(id); + + if (roleCheckPointDTO != null) + { + if (roleCheckPointDTO.Id == 0) + { + retVal.IsSuccess = false; + retVal.Errors.Add("No match!"); + retVal.Data = roleCheckPointDTO; + } + else + { + retVal.IsSuccess = true; + retVal.Data = roleCheckPointDTO; + } + } + else + { + retVal.IsSuccess = false; + retVal.Errors.Add("No data!"); + } + + return retVal; + } + [HttpGet("GetAllRoleCheckPoints")] + public async Task>> GetAllRoleCheckPoints() + { + var retVal = new ApiResponseDTO>() + { + IsSuccess = true, + }; + var results = await _userService.GetAllRoleCheckPointsAsync(); + + if (results != null) + { + retVal.IsSuccess = true; + retVal.Data = results; + } + else + { + retVal.IsSuccess = false; + retVal.Errors.Add("No data!"); + } + + return retVal; + } + [HttpPost("UpdateRoleCheckPoint")] + public async Task> UpdateRoleCheckPoint([FromBody] RoleCheckPointDTO roleCheckPointDTO) + { + var retVal = new ApiResponseDTO() + { + IsSuccess = true + }; + + try + { + var result = await _userService.UpdateRoleCheckPointAsync(roleCheckPointDTO); + retVal.Data = result; + + } + catch (Exception ex) + { + retVal.IsSuccess = false; + Log.Error(ex.Message); + } + return retVal; + } } } diff --git a/src/WorkFlowCheck.BL/Services/CheckListService.cs b/src/WorkFlowCheck.BL/Services/CheckListService.cs index 27e2e9c..ef5b03b 100644 --- a/src/WorkFlowCheck.BL/Services/CheckListService.cs +++ b/src/WorkFlowCheck.BL/Services/CheckListService.cs @@ -1,14 +1,18 @@ using AutoMapper; +using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.EntityFrameworkCore; using Serilog; using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; using System.Linq; +using System.Reflection; using System.Text; using System.Threading.Tasks; using WorkFlowCheck.BL.DocumentGenerator; using WorkFlowCheck.BL.Services.Interfaces; using WorkFlowCheck.Common.DTO; +using WorkFlowCheck.Common.Enums; using WorkFlowCheck.DL; using WorkFlowCheck.DL.Entities; @@ -150,6 +154,7 @@ namespace WorkFlowCheck.BL.Services CheckListHeader checkListHeader = new CheckListHeader() { CheckListTemplateHeaderId = checkListHeaderNewDTO.CheckListTemplateHeaderId, + CheckStatus = CheckStatus.Open, DateExecution = currentDate, IsEditable = true, UserId = checkListHeaderNewDTO.UserId, @@ -403,7 +408,7 @@ namespace WorkFlowCheck.BL.Services if (checkListRow != null) { checkListRow.Answer = checkListRowDTO.Answer; - checkListRow.Photo = checkListRowDTO.Photo; + checkListRow.Photo = checkListRowDTO.Photo; await _dbContext.SaveChangesAsync(); retVal = _mapper.Map(checkListRow); } @@ -417,7 +422,6 @@ namespace WorkFlowCheck.BL.Services return retVal; } - public byte[] CreatePDF(int checkListHeaderId) { var location = System.Reflection.Assembly.GetEntryAssembly().Location; diff --git a/src/WorkFlowCheck.BL/Services/Interfaces/ICheckListService.cs b/src/WorkFlowCheck.BL/Services/Interfaces/ICheckListService.cs index 45e2a10..98505a9 100644 --- a/src/WorkFlowCheck.BL/Services/Interfaces/ICheckListService.cs +++ b/src/WorkFlowCheck.BL/Services/Interfaces/ICheckListService.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc.Rendering; using WorkFlowCheck.Common.DTO; namespace WorkFlowCheck.BL.Services.Interfaces @@ -25,7 +21,8 @@ namespace WorkFlowCheck.BL.Services.Interfaces Task GetCheckListRowAsync(int id); Task UpdateCheckListRowAsync(CheckListRowDTO checkListRowDTO); - + + byte[] CreatePDF(int checkListHeaderId); } } diff --git a/src/WorkFlowCheck.BL/Services/Interfaces/IUserService.cs b/src/WorkFlowCheck.BL/Services/Interfaces/IUserService.cs index dbaf3ad..b2ca4cb 100644 --- a/src/WorkFlowCheck.BL/Services/Interfaces/IUserService.cs +++ b/src/WorkFlowCheck.BL/Services/Interfaces/IUserService.cs @@ -25,7 +25,11 @@ namespace WorkFlowCheck.BL.Services.Interfaces Task GetRoleCheckListTemplateHeaderAsync(int Id); Task> GetAllRoleCheckListTemplateHeadersAsync(); Task UpdateRoleCheckListTemplateHeaderAsync(RoleCheckListTemplateHeaderDTO roleCheckListTemplateHeaderDTO); - + + Task GetRoleCheckPointAsync(int Id); + Task> GetAllRoleCheckPointsAsync(); + Task UpdateRoleCheckPointAsync(RoleCheckPointDTO roleCheckPointDTO); + string GenerateJwtToken(UserDTO userDTO); } } diff --git a/src/WorkFlowCheck.BL/Services/UserService.cs b/src/WorkFlowCheck.BL/Services/UserService.cs index 9534b35..16f5154 100644 --- a/src/WorkFlowCheck.BL/Services/UserService.cs +++ b/src/WorkFlowCheck.BL/Services/UserService.cs @@ -429,5 +429,95 @@ namespace WorkFlowCheck.BL.Services return retVal; } + + public async Task GetRoleCheckPointAsync(int Id) + { + var retVal = new RoleCheckPointDTO(); + + try + { + var userRole = await _dbContext.RoleCheckPoints.Where(w => w.Id == Id).FirstOrDefaultAsync(); + if (userRole != null) + { + retVal = _mapper.Map(userRole); + } + } + catch (Exception ex) + { + Log.Error(ex.Message); + } + return retVal; + } + public async Task> GetAllRoleCheckPointsAsync() + { + var retVal = new List(); + try + { + var results = await _dbContext.RoleCheckPoints + .Include(i => i.CheckPoint) + .Include(i => i.Role) + .AsNoTracking() + .ToListAsync(); + if (results != null) + { + retVal = _mapper.Map>(results); + } + } + catch (Exception ex) + { + Log.Error(ex.Message); + } + return retVal; + } + public async Task UpdateRoleCheckPointAsync(RoleCheckPointDTO roleCheckPointDTO) + { + var retVal = new RoleCheckPointDTO(); + try + { + if (roleCheckPointDTO.Id == 0) + { + var roleCheckPoint_Exists = await _dbContext.RoleCheckPoints + .Where(w => w.RoleId == roleCheckPointDTO.RoleId && + w.CheckPointId == roleCheckPointDTO.CheckPointId) + .FirstOrDefaultAsync(); + if (roleCheckPoint_Exists == null) + { + var roleCheckPoint = new RoleCheckPoint(); + roleCheckPoint.CheckPointId = roleCheckPointDTO.CheckPointId; + roleCheckPoint.RoleId = roleCheckPointDTO.RoleId; + roleCheckPoint.Enabled = roleCheckPointDTO.Enabled; + + _dbContext.RoleCheckPoints.Add(roleCheckPoint); + await _dbContext.SaveChangesAsync(); + + retVal = _mapper.Map(roleCheckPoint); + } + else + { + retVal = _mapper.Map(roleCheckPoint_Exists); + } + } + else + { + var roleCheckPoint = await _dbContext.RoleCheckPoints.Where(w => w.Id == roleCheckPointDTO.Id).FirstOrDefaultAsync(); + + if (roleCheckPoint != null) + { + roleCheckPoint.CheckPointId = roleCheckPointDTO.CheckPointId; + roleCheckPoint.RoleId = roleCheckPointDTO.RoleId; + roleCheckPoint.Enabled = roleCheckPointDTO.Enabled; + await _dbContext.SaveChangesAsync(); + + retVal = _mapper.Map(roleCheckPoint); + } + } + } + catch (Exception ex) + { + Log.Error(ex.Message); + } + + return retVal; + } } } diff --git a/src/WorkFlowCheck.Common/DTO/CheckListHeaderDTO.cs b/src/WorkFlowCheck.Common/DTO/CheckListHeaderDTO.cs index b24977b..2cd7b70 100644 --- a/src/WorkFlowCheck.Common/DTO/CheckListHeaderDTO.cs +++ b/src/WorkFlowCheck.Common/DTO/CheckListHeaderDTO.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using WorkFlowCheck.Common.Enums; namespace WorkFlowCheck.Common.DTO { @@ -11,6 +12,7 @@ namespace WorkFlowCheck.Common.DTO public int Id { get; set; } public int CheckListTemplateHeaderId { get; set; } public CheckListTemplateHeaderDTO? CheckListTemplateHeaderDTO { get; set; } + public CheckStatus CheckStatus { get; set; } public DateTime DateExecution { get; set; } public int UserId { get; set; } public UserDTO? UserDTO { get; set; } diff --git a/src/WorkFlowCheck.Common/DTO/RoleCheckPointDTO.cs b/src/WorkFlowCheck.Common/DTO/RoleCheckPointDTO.cs new file mode 100644 index 0000000..f12040b --- /dev/null +++ b/src/WorkFlowCheck.Common/DTO/RoleCheckPointDTO.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WorkFlowCheck.Common.DTO +{ + public class RoleCheckPointDTO + { + public int Id { get; set; } + public int RoleId { get; set; } + public RoleDTO? RoleDTO { get; set; } = null!; + public int CheckPointId { get; set; } + public CheckPointDTO? CheckPointDTO { get; set; } = null!; + public bool Enabled { get; set; } = false; + } +} diff --git a/src/WorkFlowCheck.Common/Enums/CheckStatus.cs b/src/WorkFlowCheck.Common/Enums/CheckStatus.cs new file mode 100644 index 0000000..b71699d --- /dev/null +++ b/src/WorkFlowCheck.Common/Enums/CheckStatus.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WorkFlowCheck.Common.Enums +{ + public enum CheckStatus + { + Open = 0, + InProgress = 1, + Blocked = 3, + Storno = 4, + Sent = 5 + } +} diff --git a/src/WorkFlowCheck.DL/AppDbContext.cs b/src/WorkFlowCheck.DL/AppDbContext.cs index 0a17fa7..e9b0d14 100644 --- a/src/WorkFlowCheck.DL/AppDbContext.cs +++ b/src/WorkFlowCheck.DL/AppDbContext.cs @@ -44,8 +44,8 @@ namespace WorkFlowCheck.DL public DbSet Roles { get; set; } = null!; public DbSet Users { get; set; } = null!; public DbSet UserRoles { get; set; } = null!; - public DbSet RoleCheckListTemplateHeaders { get; set; } = null!; + public DbSet RoleCheckPoints { get; set; } = null!; #endregion @@ -63,6 +63,7 @@ namespace WorkFlowCheck.DL modelBuilder.ApplyConfiguration(new NumberGeneratorDateTypeConfiguration()); modelBuilder.ApplyConfiguration(new RoleTypeConfiguration()); modelBuilder.ApplyConfiguration(new RoleCheckListTemplateHeaderTypeConfiguration()); + modelBuilder.ApplyConfiguration(new RoleCheckPointTypeConfiguration()); modelBuilder.ApplyConfiguration(new UserTypeConfiguration()); modelBuilder.ApplyConfiguration(new UserRoleTypeConfiguration()); diff --git a/src/WorkFlowCheck.DL/Configurations/RoleCheckPointTypeConfiguration.cs b/src/WorkFlowCheck.DL/Configurations/RoleCheckPointTypeConfiguration.cs new file mode 100644 index 0000000..7fabbff --- /dev/null +++ b/src/WorkFlowCheck.DL/Configurations/RoleCheckPointTypeConfiguration.cs @@ -0,0 +1,20 @@ +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WorkFlowCheck.DL.Configurations +{ + public class RoleCheckPointTypeConfiguration : IEntityTypeConfiguration + { + public void Configure(EntityTypeBuilder builder) + { + builder.ToTable("RoleCheckPoint"); + builder.HasKey(e => e.Id); + builder.Property(e => e.Id).ValueGeneratedOnAdd(); + } + } +} diff --git a/src/WorkFlowCheck.DL/Entities/CheckListHeader.cs b/src/WorkFlowCheck.DL/Entities/CheckListHeader.cs index bf53a6c..08acfa0 100644 --- a/src/WorkFlowCheck.DL/Entities/CheckListHeader.cs +++ b/src/WorkFlowCheck.DL/Entities/CheckListHeader.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using WorkFlowCheck.Common.Enums; using WorkFlowCheck.DL.Interfaces; namespace WorkFlowCheck.DL.Entities @@ -12,6 +13,7 @@ namespace WorkFlowCheck.DL.Entities public int Id { get; set; } public int CheckListTemplateHeaderId { get; set; } public virtual CheckListTemplateHeader CheckListTemplateHeader { get; set; } + public CheckStatus CheckStatus { get; set; } public DateTime DateExecution { get; set; } public int UserId { get; set; } public virtual User User { get; set; } diff --git a/src/WorkFlowCheck.DL/Entities/RoleCheckListTemplateHeader.cs b/src/WorkFlowCheck.DL/Entities/RoleCheckListTemplateHeader.cs index 7d89ff5..896d1fa 100644 --- a/src/WorkFlowCheck.DL/Entities/RoleCheckListTemplateHeader.cs +++ b/src/WorkFlowCheck.DL/Entities/RoleCheckListTemplateHeader.cs @@ -9,6 +9,6 @@ namespace WorkFlowCheck.DL.Entities public virtual Role Role { get; set; } = null!; public int CheckListTemplateHeaderId { get; set; } public virtual CheckListTemplateHeader CheckListTemplateHeader { get; set; } = null!; - public bool Enabled { get; set; } = false; + public bool Enabled { get; set; } = true; } } diff --git a/src/WorkFlowCheck.DL/Entities/RoleCheckPoint.cs b/src/WorkFlowCheck.DL/Entities/RoleCheckPoint.cs new file mode 100644 index 0000000..636815d --- /dev/null +++ b/src/WorkFlowCheck.DL/Entities/RoleCheckPoint.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WorkFlowCheck.DL.Entities +{ + public class RoleCheckPoint + { + public int Id { get; set; } + public int RoleId { get; set; } + public virtual Role Role { get; set; } = null!; + public int CheckPointId { get; set; } + public virtual CheckPoint CheckPoint { get; set; } = null!; + public bool Enabled { get; set; } = true; + } +} diff --git a/src/WorkFlowCheck.DL/Migrations/20250331093742_Extend009.Designer.cs b/src/WorkFlowCheck.DL/Migrations/20250331093742_Extend009.Designer.cs new file mode 100644 index 0000000..f316eaa --- /dev/null +++ b/src/WorkFlowCheck.DL/Migrations/20250331093742_Extend009.Designer.cs @@ -0,0 +1,847 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using WorkFlowCheck.DL; + +#nullable disable + +namespace WorkFlowCheck.DL.Migrations +{ + [DbContext(typeof(AppDbContext))] + [Migration("20250331093742_Extend009")] + partial class Extend009 + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.12") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("WorkFlowCheck.DL.Entities.CheckListHeader", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CheckListTemplateHeaderId") + .HasColumnType("int"); + + b.Property("CheckStatus") + .HasColumnType("int"); + + b.Property("CreatedAt") + .HasColumnType("datetime2"); + + b.Property("CreatedBy") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("DateExecution") + .HasColumnType("datetime2"); + + b.Property("Description") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("DocumentNumber") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("GuidNumber") + .HasColumnType("uniqueidentifier"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("IsEditable") + .HasColumnType("bit"); + + b.Property("IsStorno") + .HasColumnType("bit"); + + b.Property("LastModAt") + .HasColumnType("datetime2"); + + b.Property("LastModBy") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ShortName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("CheckListTemplateHeaderId"); + + b.HasIndex("UserId"); + + b.ToTable("CheckListHeader", (string)null); + }); + + modelBuilder.Entity("WorkFlowCheck.DL.Entities.CheckListRow", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Answer") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("CheckListHeaderId") + .HasColumnType("int"); + + b.Property("CheckListTemplateRowId") + .HasColumnType("int"); + + b.Property("CreatedAt") + .HasColumnType("datetime2"); + + b.Property("CreatedBy") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("GuidNumber") + .HasColumnType("uniqueidentifier"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("LastModAt") + .HasColumnType("datetime2"); + + b.Property("LastModBy") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Photo") + .IsRequired() + .HasColumnType("varbinary(max)"); + + b.HasKey("Id"); + + b.HasIndex("CheckListHeaderId"); + + b.HasIndex("CheckListTemplateRowId"); + + b.ToTable("CheckListRow", (string)null); + }); + + modelBuilder.Entity("WorkFlowCheck.DL.Entities.CheckListTemplateHeader", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("datetime2"); + + b.Property("CreatedBy") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("LastModAt") + .HasColumnType("datetime2"); + + b.Property("LastModBy") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("NumberGenerator1Id") + .HasColumnType("int"); + + b.Property("NumberGenerator2Id") + .HasColumnType("int"); + + b.Property("ShortName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("NumberGenerator1Id"); + + b.HasIndex("NumberGenerator2Id"); + + b.ToTable("CheckListTemplateHeader", (string)null); + }); + + modelBuilder.Entity("WorkFlowCheck.DL.Entities.CheckListTemplateRow", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AnswerType") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("CheckListTemplateHeaderId") + .HasColumnType("int"); + + b.Property("CheckPointId") + .HasColumnType("int"); + + b.Property("CreatedAt") + .HasColumnType("datetime2"); + + b.Property("CreatedBy") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("LastModAt") + .HasColumnType("datetime2"); + + b.Property("LastModBy") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("OperationDescription") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("RowIndex") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("CheckListTemplateHeaderId"); + + b.HasIndex("CheckPointId"); + + b.HasIndex("EquipmentId"); + + b.ToTable("CheckListTemplateRow", (string)null); + }); + + modelBuilder.Entity("WorkFlowCheck.DL.Entities.CheckPoint", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Code") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("CreatedAt") + .HasColumnType("datetime2"); + + b.Property("CreatedBy") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("LastModAt") + .HasColumnType("datetime2"); + + b.Property("LastModBy") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ShortName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("CheckPoint", (string)null); + }); + + modelBuilder.Entity("WorkFlowCheck.DL.Entities.Equipment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("datetime2"); + + b.Property("CreatedBy") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("EquipmentNumber") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("LastModAt") + .HasColumnType("datetime2"); + + b.Property("LastModBy") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ShortName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Equipment", (string)null); + }); + + modelBuilder.Entity("WorkFlowCheck.DL.Entities.Location", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("datetime2"); + + b.Property("CreatedBy") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("FullName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("LastModAt") + .HasColumnType("datetime2"); + + b.Property("LastModBy") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Location", (string)null); + }); + + modelBuilder.Entity("WorkFlowCheck.DL.Entities.NumberGeneratorTemplate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CurrentNumber") + .HasColumnType("int"); + + b.Property("DigitFormat") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("GenerateType") + .HasColumnType("int"); + + b.Property("LastGeneratedNumber") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Prefix") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("PrefixSeparator") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ShortName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Suffix") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("SuffixSeparator") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("NumberGeneratorTemplate", (string)null); + + b.HasData( + new + { + Id = 1, + CurrentNumber = 0, + DigitFormat = "D4", + GenerateType = 0, + LastGeneratedNumber = "", + Prefix = "CHK", + PrefixSeparator = "-", + ShortName = "Ellenőrzési dokumentum sorszámozása", + Suffix = "", + SuffixSeparator = "-" + }); + }); + + modelBuilder.Entity("WorkFlowCheck.DL.Entities.NumberGeneratorTemplateDate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CurrentNumber") + .HasColumnType("int"); + + b.Property("LastGeneratedNumber") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Month") + .HasColumnType("int"); + + b.Property("NumberGeneratorTemplateId") + .HasColumnType("int"); + + b.Property("Year") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("NumberGeneratorTemplateId"); + + b.ToTable("NumberGeneratorTemplateDate", (string)null); + + b.HasData( + new + { + Id = 1, + CurrentNumber = 0, + LastGeneratedNumber = "", + Month = 0, + NumberGeneratorTemplateId = 1, + Year = 1 + }); + }); + + modelBuilder.Entity("WorkFlowCheck.DL.Entities.Role", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("datetime2"); + + b.Property("CreatedBy") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("LastModAt") + .HasColumnType("datetime2"); + + b.Property("LastModBy") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("RoleName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Roles", (string)null); + }); + + modelBuilder.Entity("WorkFlowCheck.DL.Entities.RoleCheckListTemplateHeader", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CheckListTemplateHeaderId") + .HasColumnType("int"); + + b.Property("Enabled") + .HasColumnType("bit"); + + b.Property("RoleId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("CheckListTemplateHeaderId"); + + b.HasIndex("RoleId"); + + b.ToTable("RoleCheckListTemplateHeader", (string)null); + }); + + modelBuilder.Entity("WorkFlowCheck.DL.Entities.RoleCheckPoint", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CheckPointId") + .HasColumnType("int"); + + b.Property("Enabled") + .HasColumnType("bit"); + + b.Property("RoleId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("CheckPointId"); + + b.HasIndex("RoleId"); + + b.ToTable("RoleCheckPoint", (string)null); + }); + + modelBuilder.Entity("WorkFlowCheck.DL.Entities.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Active") + .HasColumnType("bit"); + + b.Property("CreatedAt") + .HasColumnType("datetime2"); + + b.Property("CreatedBy") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Email") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("FirstName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("JwtToken") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("LastModAt") + .HasColumnType("datetime2"); + + b.Property("LastModBy") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("LastName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("Token2FA") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("UserName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Users", (string)null); + + b.HasData( + new + { + Id = 1, + Active = true, + CreatedAt = new DateTime(2025, 3, 31, 9, 37, 40, 826, DateTimeKind.Utc).AddTicks(2914), + CreatedBy = "System", + Email = "admin@nuvolar.hu", + FirstName = "Administrator", + IsDeleted = false, + JwtToken = "", + LastModAt = new DateTime(2025, 3, 31, 9, 37, 40, 826, DateTimeKind.Utc).AddTicks(2918), + LastModBy = "System", + LastName = "System", + PasswordHash = "eGM0NUREZnJ0ISFFRDIxMKE5TYwthDBuUsTUEO1fBnCR3VdSCmdz47ue0RoVvnkY", + Token2FA = "", + UserName = "admin" + }, + new + { + Id = 2, + Active = true, + CreatedAt = new DateTime(2025, 3, 31, 9, 37, 40, 838, DateTimeKind.Utc).AddTicks(1281), + CreatedBy = "System", + Email = "user@nuvolar.hu", + FirstName = "User", + IsDeleted = false, + JwtToken = "", + LastModAt = new DateTime(2025, 3, 31, 9, 37, 40, 838, DateTimeKind.Utc).AddTicks(1285), + LastModBy = "System", + LastName = "System", + PasswordHash = "eGM0NUREZnJ0ISFFRDIxMPwM2D9sQSj7zmaSBIsOGe0I9hBFwCGPVbyrYMA5EnKG", + Token2FA = "", + UserName = "user" + }); + }); + + modelBuilder.Entity("WorkFlowCheck.DL.Entities.UserRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("RoleId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.HasIndex("UserId"); + + b.ToTable("UserRoles", (string)null); + }); + + modelBuilder.Entity("WorkFlowCheck.DL.Entities.CheckListHeader", b => + { + b.HasOne("WorkFlowCheck.DL.Entities.CheckListTemplateHeader", "CheckListTemplateHeader") + .WithMany() + .HasForeignKey("CheckListTemplateHeaderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("WorkFlowCheck.DL.Entities.User", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CheckListTemplateHeader"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("WorkFlowCheck.DL.Entities.CheckListRow", b => + { + b.HasOne("WorkFlowCheck.DL.Entities.CheckListHeader", "CheckListHeader") + .WithMany("CheckListRows") + .HasForeignKey("CheckListHeaderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("WorkFlowCheck.DL.Entities.CheckListTemplateRow", "CheckListTemplateRow") + .WithMany() + .HasForeignKey("CheckListTemplateRowId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CheckListHeader"); + + b.Navigation("CheckListTemplateRow"); + }); + + modelBuilder.Entity("WorkFlowCheck.DL.Entities.CheckListTemplateHeader", b => + { + b.HasOne("WorkFlowCheck.DL.Entities.NumberGeneratorTemplate", "NumberGenerator1") + .WithMany() + .HasForeignKey("NumberGenerator1Id"); + + b.HasOne("WorkFlowCheck.DL.Entities.NumberGeneratorTemplate", "NumberGenerator2") + .WithMany() + .HasForeignKey("NumberGenerator2Id"); + + b.Navigation("NumberGenerator1"); + + b.Navigation("NumberGenerator2"); + }); + + modelBuilder.Entity("WorkFlowCheck.DL.Entities.CheckListTemplateRow", b => + { + b.HasOne("WorkFlowCheck.DL.Entities.CheckListTemplateHeader", "CheckListTemplateHeader") + .WithMany("CheckListTemplateRows") + .HasForeignKey("CheckListTemplateHeaderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("WorkFlowCheck.DL.Entities.CheckPoint", "CheckPoint") + .WithMany("CheckListTemplateRows") + .HasForeignKey("CheckPointId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("WorkFlowCheck.DL.Entities.Equipment", "Equipment") + .WithMany() + .HasForeignKey("EquipmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CheckListTemplateHeader"); + + b.Navigation("CheckPoint"); + + b.Navigation("Equipment"); + }); + + modelBuilder.Entity("WorkFlowCheck.DL.Entities.NumberGeneratorTemplateDate", b => + { + b.HasOne("WorkFlowCheck.DL.Entities.NumberGeneratorTemplate", "NumberGeneratorTemplate") + .WithMany("NumberGeneratorTemplateDates") + .HasForeignKey("NumberGeneratorTemplateId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("NumberGeneratorTemplate"); + }); + + modelBuilder.Entity("WorkFlowCheck.DL.Entities.RoleCheckListTemplateHeader", b => + { + b.HasOne("WorkFlowCheck.DL.Entities.CheckListTemplateHeader", "CheckListTemplateHeader") + .WithMany() + .HasForeignKey("CheckListTemplateHeaderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("WorkFlowCheck.DL.Entities.Role", "Role") + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CheckListTemplateHeader"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("WorkFlowCheck.DL.Entities.RoleCheckPoint", b => + { + b.HasOne("WorkFlowCheck.DL.Entities.CheckPoint", "CheckPoint") + .WithMany() + .HasForeignKey("CheckPointId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("WorkFlowCheck.DL.Entities.Role", "Role") + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CheckPoint"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("WorkFlowCheck.DL.Entities.UserRole", b => + { + b.HasOne("WorkFlowCheck.DL.Entities.Role", "Role") + .WithMany("UserRoles") + .HasForeignKey("RoleId"); + + b.HasOne("WorkFlowCheck.DL.Entities.User", "User") + .WithMany("UserRoles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Role"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("WorkFlowCheck.DL.Entities.CheckListHeader", b => + { + b.Navigation("CheckListRows"); + }); + + modelBuilder.Entity("WorkFlowCheck.DL.Entities.CheckListTemplateHeader", b => + { + b.Navigation("CheckListTemplateRows"); + }); + + modelBuilder.Entity("WorkFlowCheck.DL.Entities.CheckPoint", b => + { + b.Navigation("CheckListTemplateRows"); + }); + + modelBuilder.Entity("WorkFlowCheck.DL.Entities.NumberGeneratorTemplate", b => + { + b.Navigation("NumberGeneratorTemplateDates"); + }); + + modelBuilder.Entity("WorkFlowCheck.DL.Entities.Role", b => + { + b.Navigation("UserRoles"); + }); + + modelBuilder.Entity("WorkFlowCheck.DL.Entities.User", b => + { + b.Navigation("UserRoles"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/WorkFlowCheck.DL/Migrations/20250331093742_Extend009.cs b/src/WorkFlowCheck.DL/Migrations/20250331093742_Extend009.cs new file mode 100644 index 0000000..ecc2714 --- /dev/null +++ b/src/WorkFlowCheck.DL/Migrations/20250331093742_Extend009.cs @@ -0,0 +1,98 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace WorkFlowCheck.DL.Migrations +{ + /// + public partial class Extend009 : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "CheckStatus", + table: "CheckListHeader", + type: "int", + nullable: false, + defaultValue: 0); + + migrationBuilder.CreateTable( + name: "RoleCheckPoint", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + RoleId = table.Column(type: "int", nullable: false), + CheckPointId = table.Column(type: "int", nullable: false), + Enabled = table.Column(type: "bit", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_RoleCheckPoint", x => x.Id); + table.ForeignKey( + name: "FK_RoleCheckPoint_CheckPoint_CheckPointId", + column: x => x.CheckPointId, + principalTable: "CheckPoint", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_RoleCheckPoint_Roles_RoleId", + column: x => x.RoleId, + principalTable: "Roles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.UpdateData( + table: "Users", + keyColumn: "Id", + keyValue: 1, + columns: new[] { "CreatedAt", "LastModAt" }, + values: new object[] { new DateTime(2025, 3, 31, 9, 37, 40, 826, DateTimeKind.Utc).AddTicks(2914), new DateTime(2025, 3, 31, 9, 37, 40, 826, DateTimeKind.Utc).AddTicks(2918) }); + + migrationBuilder.UpdateData( + table: "Users", + keyColumn: "Id", + keyValue: 2, + columns: new[] { "CreatedAt", "LastModAt" }, + values: new object[] { new DateTime(2025, 3, 31, 9, 37, 40, 838, DateTimeKind.Utc).AddTicks(1281), new DateTime(2025, 3, 31, 9, 37, 40, 838, DateTimeKind.Utc).AddTicks(1285) }); + + migrationBuilder.CreateIndex( + name: "IX_RoleCheckPoint_CheckPointId", + table: "RoleCheckPoint", + column: "CheckPointId"); + + migrationBuilder.CreateIndex( + name: "IX_RoleCheckPoint_RoleId", + table: "RoleCheckPoint", + column: "RoleId"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "RoleCheckPoint"); + + migrationBuilder.DropColumn( + name: "CheckStatus", + table: "CheckListHeader"); + + migrationBuilder.UpdateData( + table: "Users", + keyColumn: "Id", + keyValue: 1, + columns: new[] { "CreatedAt", "LastModAt" }, + values: new object[] { new DateTime(2025, 3, 21, 15, 14, 11, 73, DateTimeKind.Utc).AddTicks(8912), new DateTime(2025, 3, 21, 15, 14, 11, 73, DateTimeKind.Utc).AddTicks(8916) }); + + migrationBuilder.UpdateData( + table: "Users", + keyColumn: "Id", + keyValue: 2, + columns: new[] { "CreatedAt", "LastModAt" }, + values: new object[] { new DateTime(2025, 3, 21, 15, 14, 11, 84, DateTimeKind.Utc).AddTicks(9869), new DateTime(2025, 3, 21, 15, 14, 11, 84, DateTimeKind.Utc).AddTicks(9870) }); + } + } +} diff --git a/src/WorkFlowCheck.DL/Migrations/AppDbContextModelSnapshot.cs b/src/WorkFlowCheck.DL/Migrations/AppDbContextModelSnapshot.cs index a23f575..cde0945 100644 --- a/src/WorkFlowCheck.DL/Migrations/AppDbContextModelSnapshot.cs +++ b/src/WorkFlowCheck.DL/Migrations/AppDbContextModelSnapshot.cs @@ -33,6 +33,9 @@ namespace WorkFlowCheck.DL.Migrations b.Property("CheckListTemplateHeaderId") .HasColumnType("int"); + b.Property("CheckStatus") + .HasColumnType("int"); + b.Property("CreatedAt") .HasColumnType("datetime2"); @@ -515,6 +518,32 @@ namespace WorkFlowCheck.DL.Migrations b.ToTable("RoleCheckListTemplateHeader", (string)null); }); + modelBuilder.Entity("WorkFlowCheck.DL.Entities.RoleCheckPoint", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CheckPointId") + .HasColumnType("int"); + + b.Property("Enabled") + .HasColumnType("bit"); + + b.Property("RoleId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("CheckPointId"); + + b.HasIndex("RoleId"); + + b.ToTable("RoleCheckPoint", (string)null); + }); + modelBuilder.Entity("WorkFlowCheck.DL.Entities.User", b => { b.Property("Id") @@ -579,13 +608,13 @@ namespace WorkFlowCheck.DL.Migrations { Id = 1, Active = true, - CreatedAt = new DateTime(2025, 3, 21, 15, 14, 11, 73, DateTimeKind.Utc).AddTicks(8912), + CreatedAt = new DateTime(2025, 3, 31, 9, 37, 40, 826, DateTimeKind.Utc).AddTicks(2914), CreatedBy = "System", Email = "admin@nuvolar.hu", FirstName = "Administrator", IsDeleted = false, JwtToken = "", - LastModAt = new DateTime(2025, 3, 21, 15, 14, 11, 73, DateTimeKind.Utc).AddTicks(8916), + LastModAt = new DateTime(2025, 3, 31, 9, 37, 40, 826, DateTimeKind.Utc).AddTicks(2918), LastModBy = "System", LastName = "System", PasswordHash = "eGM0NUREZnJ0ISFFRDIxMKE5TYwthDBuUsTUEO1fBnCR3VdSCmdz47ue0RoVvnkY", @@ -596,13 +625,13 @@ namespace WorkFlowCheck.DL.Migrations { Id = 2, Active = true, - CreatedAt = new DateTime(2025, 3, 21, 15, 14, 11, 84, DateTimeKind.Utc).AddTicks(9869), + CreatedAt = new DateTime(2025, 3, 31, 9, 37, 40, 838, DateTimeKind.Utc).AddTicks(1281), CreatedBy = "System", Email = "user@nuvolar.hu", FirstName = "User", IsDeleted = false, JwtToken = "", - LastModAt = new DateTime(2025, 3, 21, 15, 14, 11, 84, DateTimeKind.Utc).AddTicks(9870), + LastModAt = new DateTime(2025, 3, 31, 9, 37, 40, 838, DateTimeKind.Utc).AddTicks(1285), LastModBy = "System", LastName = "System", PasswordHash = "eGM0NUREZnJ0ISFFRDIxMPwM2D9sQSj7zmaSBIsOGe0I9hBFwCGPVbyrYMA5EnKG", @@ -744,6 +773,25 @@ namespace WorkFlowCheck.DL.Migrations b.Navigation("Role"); }); + modelBuilder.Entity("WorkFlowCheck.DL.Entities.RoleCheckPoint", b => + { + b.HasOne("WorkFlowCheck.DL.Entities.CheckPoint", "CheckPoint") + .WithMany() + .HasForeignKey("CheckPointId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("WorkFlowCheck.DL.Entities.Role", "Role") + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CheckPoint"); + + b.Navigation("Role"); + }); + modelBuilder.Entity("WorkFlowCheck.DL.Entities.UserRole", b => { b.HasOne("WorkFlowCheck.DL.Entities.Role", "Role") diff --git a/src/WorkFlowCheck.Web/Pages/CheckList/CheckListHeader/CheckListHeaderEditPage.cshtml.cs b/src/WorkFlowCheck.Web/Pages/CheckList/CheckListHeader/CheckListHeaderEditPage.cshtml.cs index 8159f34..ce49daf 100644 --- a/src/WorkFlowCheck.Web/Pages/CheckList/CheckListHeader/CheckListHeaderEditPage.cshtml.cs +++ b/src/WorkFlowCheck.Web/Pages/CheckList/CheckListHeader/CheckListHeaderEditPage.cshtml.cs @@ -1,5 +1,6 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; +using Microsoft.AspNetCore.Mvc.Rendering; using WorkFlowCheck.Common.DTO; using WorkFlowCheck.Web.Services.Interfaces; @@ -12,7 +13,7 @@ namespace WorkFlowCheck.Web.Pages.CheckList.CheckListHeader [BindProperty] public CheckListHeaderDTO CheckListHeaderDTO { get; set; } - + public List CheckStatus { get; set; } public CheckListHeaderEditPageModel(ILogger logger, ICheckListService checkListService) { @@ -22,6 +23,7 @@ namespace WorkFlowCheck.Web.Pages.CheckList.CheckListHeader public async Task OnGet(int id) { CheckListHeaderDTO = await _checkListService.GetCheckListHeader(id); + CheckStatus = _checkListService.GetCheckStatus(); } public async Task OnGetLoadCheckListRows(int id) { diff --git a/src/WorkFlowCheck.Web/Pages/CheckList/CheckListHeader/CheckListHeaderPage.cshtml b/src/WorkFlowCheck.Web/Pages/CheckList/CheckListHeader/CheckListHeaderPage.cshtml index 11ce7f4..38f054c 100644 --- a/src/WorkFlowCheck.Web/Pages/CheckList/CheckListHeader/CheckListHeaderPage.cshtml +++ b/src/WorkFlowCheck.Web/Pages/CheckList/CheckListHeader/CheckListHeaderPage.cshtml @@ -1,7 +1,7 @@ @page @model WorkFlowCheck.Web.Pages.CheckList.CheckListHeader.CheckListHeaderPageModel @{ - ViewData["Title"] = "Ellenőrzési sablonok"; + ViewData["Title"] = "Ellenőrzések"; }

@ViewData["Title"]

diff --git a/src/WorkFlowCheck.Web/Pages/CheckList/CheckListHeader/CheckListHeaderPage.cshtml.cs b/src/WorkFlowCheck.Web/Pages/CheckList/CheckListHeader/CheckListHeaderPage.cshtml.cs index 8039eee..28533cd 100644 --- a/src/WorkFlowCheck.Web/Pages/CheckList/CheckListHeader/CheckListHeaderPage.cshtml.cs +++ b/src/WorkFlowCheck.Web/Pages/CheckList/CheckListHeader/CheckListHeaderPage.cshtml.cs @@ -1,5 +1,9 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; +using Microsoft.AspNetCore.Mvc.Rendering; +using System.ComponentModel.DataAnnotations; +using System.Reflection; +using WorkFlowCheck.Common.Enums; using WorkFlowCheck.Web.Services.Interfaces; namespace WorkFlowCheck.Web.Pages.CheckList.CheckListHeader @@ -8,6 +12,9 @@ namespace WorkFlowCheck.Web.Pages.CheckList.CheckListHeader { private readonly ILogger _logger; private readonly ICheckListService _checkListService; + + public List CheckStatus { get; set; } + public CheckListHeaderPageModel(ILogger logger, ICheckListService checkListService) { _logger = logger; @@ -15,7 +22,10 @@ namespace WorkFlowCheck.Web.Pages.CheckList.CheckListHeader } public async Task OnGet() { + CheckStatus = _checkListService.GetCheckStatus(); } + + public async Task OnGetLoadCheckListHeaders() { var results = await _checkListService.GetAllCheckListHeaderAsync(); diff --git a/src/WorkFlowCheck.Web/Pages/Shared/_Layout.cshtml b/src/WorkFlowCheck.Web/Pages/Shared/_Layout.cshtml index 6b377a9..d2c4a08 100644 --- a/src/WorkFlowCheck.Web/Pages/Shared/_Layout.cshtml +++ b/src/WorkFlowCheck.Web/Pages/Shared/_Layout.cshtml @@ -151,7 +151,7 @@ - + @* *@ @await RenderSectionAsync("Scripts", required: false) diff --git a/src/WorkFlowCheck.Web/Pages/UserAndRole/RoleCheckPointsPage.cshtml b/src/WorkFlowCheck.Web/Pages/UserAndRole/RoleCheckPointsPage.cshtml new file mode 100644 index 0000000..d7d643d --- /dev/null +++ b/src/WorkFlowCheck.Web/Pages/UserAndRole/RoleCheckPointsPage.cshtml @@ -0,0 +1,112 @@ +@page +@model WorkFlowCheck.Web.Pages.UserAndRole.RoleCheckPointsPageModel +@{ + ViewData["Title"] = "Szabályok - Ellenőrzési sablonok"; +} +

@ViewData["Title"]

+ +
+
+ +
+ + + + + + + + + + + + + + + + + + + +
IDRole nameCheckpoint nameEnabledAction
IDRole nameCheckpoint nameEnabledAction
+
+ +@section Scripts { + +} diff --git a/src/WorkFlowCheck.Web/Pages/UserAndRole/RoleCheckPointsPage.cshtml.cs b/src/WorkFlowCheck.Web/Pages/UserAndRole/RoleCheckPointsPage.cshtml.cs new file mode 100644 index 0000000..43bf74c --- /dev/null +++ b/src/WorkFlowCheck.Web/Pages/UserAndRole/RoleCheckPointsPage.cshtml.cs @@ -0,0 +1,25 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; +using WorkFlowCheck.Web.Services.Interfaces; + +namespace WorkFlowCheck.Web.Pages.UserAndRole +{ + public class RoleCheckPointsPageModel : PageModel + { + private readonly ILogger _logger; + private readonly IUserService _userService; + public RoleCheckPointsPageModel(ILogger logger, IUserService userService) + { + _logger = logger; + _userService = userService; + } + public async Task OnGet() + { + } + public async Task OnGetLoadRoleCheckPoints() + { + var results = await _userService.GetAllRoleCheckListTemplates(); + return new JsonResult(new { data = results }); + } + } +} diff --git a/src/WorkFlowCheck.Web/Services/CheckListService.cs b/src/WorkFlowCheck.Web/Services/CheckListService.cs index 56e4919..7c335ef 100644 --- a/src/WorkFlowCheck.Web/Services/CheckListService.cs +++ b/src/WorkFlowCheck.Web/Services/CheckListService.cs @@ -1,7 +1,11 @@ -using Newtonsoft.Json; +using Microsoft.AspNetCore.Mvc.Rendering; +using Newtonsoft.Json; using Serilog; +using System.ComponentModel.DataAnnotations; using System.Net.Http; +using System.Reflection; using WorkFlowCheck.Common.DTO; +using WorkFlowCheck.Common.Enums; using WorkFlowCheck.Web.Services.Interfaces; namespace WorkFlowCheck.Web.Services @@ -200,6 +204,24 @@ namespace WorkFlowCheck.Web.Services }; } } + + public List GetCheckStatus() + { + return Enum.GetValues(typeof(CheckStatus)) + .Cast() + .Select(e => new SelectListItem + { + Value = ((int)e).ToString(), + Text = GetEnumDisplayName(e) + }).ToList(); + } + private string GetEnumDisplayName(Enum enumValue) + { + return enumValue.GetType() + .GetMember(enumValue.ToString()) + .First() + .GetCustomAttribute()?.Name ?? enumValue.ToString(); + } } } diff --git a/src/WorkFlowCheck.Web/Services/Interfaces/ICheckListService.cs b/src/WorkFlowCheck.Web/Services/Interfaces/ICheckListService.cs index 39722d4..20df9b4 100644 --- a/src/WorkFlowCheck.Web/Services/Interfaces/ICheckListService.cs +++ b/src/WorkFlowCheck.Web/Services/Interfaces/ICheckListService.cs @@ -1,4 +1,5 @@ -using WorkFlowCheck.Common.DTO; +using Microsoft.AspNetCore.Mvc.Rendering; +using WorkFlowCheck.Common.DTO; namespace WorkFlowCheck.Web.Services.Interfaces { @@ -18,5 +19,7 @@ namespace WorkFlowCheck.Web.Services.Interfaces Task GetCheckListRow(int id); Task> UpdateCheckListRow(CheckListRowDTO checkListRowDTO); + List GetCheckStatus(); + } } diff --git a/src/WorkFlowCheck.Web/Services/Interfaces/IUserService.cs b/src/WorkFlowCheck.Web/Services/Interfaces/IUserService.cs index bfbb953..ee4b100 100644 --- a/src/WorkFlowCheck.Web/Services/Interfaces/IUserService.cs +++ b/src/WorkFlowCheck.Web/Services/Interfaces/IUserService.cs @@ -21,5 +21,9 @@ namespace WorkFlowCheck.Web.Services.Interfaces Task GetRoleCheckListTemplateHeader(int id); Task> GetAllRoleCheckListTemplates(); Task> UpdateRoleCheckListTemplateHeader(RoleCheckListTemplateHeaderDTO roleCheckListTemplateHeaderDTO); + + Task GetRoleCheckPoint(int id); + Task> GetAllRoleCheckPoints(); + Task> UpdateRoleCheckPoint(RoleCheckPointDTO roleCheckPointDTO); } } diff --git a/src/WorkFlowCheck.Web/Services/UserService.cs b/src/WorkFlowCheck.Web/Services/UserService.cs index acd16ba..8b0a6da 100644 --- a/src/WorkFlowCheck.Web/Services/UserService.cs +++ b/src/WorkFlowCheck.Web/Services/UserService.cs @@ -335,5 +335,76 @@ namespace WorkFlowCheck.Web.Services }; } } + + public async Task GetRoleCheckPoint(int id) + { + string endpoint = $"{_httpClient.BaseAddress}api/user/GetRoleCheckPoint/{id}"; + var retVal = new RoleCheckPointDTO(); + try + { + var response = await _httpClient.GetFromJsonAsync>(endpoint); + if (response != null) + { + if (response.IsSuccess) + { + return response.Data; + } + } + } + catch (Exception ex) + { + Log.Error(ex.Message); + } + return retVal; + } + public async Task> GetAllRoleCheckPoints() + { + string endpoint = $"{_httpClient.BaseAddress}api/User/GetAllRoleCheckPoints"; + var retVal = new List(); + try + { + var response = await _httpClient.GetFromJsonAsync>>(endpoint); + if (response != null) + { + if (response.IsSuccess) + { + return response.Data; + } + } + } + catch (Exception ex) + { + Log.Error(ex.Message); + } + return retVal; + } + public async Task> UpdateRoleCheckPoint(RoleCheckPointDTO roleCheckPointDTO) + { + try + { + string endpoint = $"{_httpClient.BaseAddress}api/user/UpdateRoleCheckPoint"; + + using (HttpResponseMessage httpResponseMessage = await _httpClient.PostAsJsonAsync(endpoint, roleCheckPointDTO)) + { + httpResponseMessage.EnsureSuccessStatusCode(); + + var jsonString = await httpResponseMessage.Content.ReadAsStringAsync(); + var response = JsonConvert.DeserializeObject>(jsonString); + + return response ?? new ApiResponseDTO + { + IsSuccess = false, + }; + } + } + catch (Exception ex) + { + // Hiba visszaadása + return new ApiResponseDTO + { + IsSuccess = false + }; + } + } } }