From 0c49d8d05cf805ac918307422491e84be731ad9b Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Sat, 10 May 2025 13:16:20 +0530 Subject: [PATCH 1/9] Changed file structure in model project --- .../Initializer/DBInitializer.cs | 2 +- .../TicketPriorityMasterDto.cs | 2 +- .../TicketStatusMasterDto.cs | 2 +- .../{Forum => Master}/TicketTagMasterDto.cs | 2 +- .../{Forum => Master}/TicketTypeMasterDto.cs | 2 +- .../Dtos/{Project => Projects}/BuildingDot.cs | 0 .../{Project => Projects}/CreateProjectDto.cs | 0 .../Dtos/{Project => Projects}/FloorDot.cs | 0 .../Dtos/{Project => Projects}/InfraDot.cs | 0 .../ProjectAllocationDot.cs | 0 .../Dtos/{Project => Projects}/ProjectDto.cs | 0 .../{Project => Projects}/UpdateProjectDto.cs | 0 .../Dtos/{Project => Projects}/WorkAreaDot.cs | 0 .../Dtos/{Project => Projects}/WorkItemDot.cs | 0 Marco.Pms.Model/Employees/Employee.cs | 1 + .../EmployeeRoleMapping.cs | 4 +- Marco.Pms.Model/Entitlements/Client.cs | 2 +- .../Entitlements/FeaturePermission.cs | 1 + Marco.Pms.Model/Forum/TicketForum.cs | 1 + Marco.Pms.Model/Forum/TicketTag.cs | 4 +- Marco.Pms.Model/Mapper/ActivitiesMapper.cs | 1 + .../Mapper/ApplicationRoleMapper.cs | 4 +- Marco.Pms.Model/Mapper/EmployeeRoleMapper.cs | 2 +- Marco.Pms.Model/Mapper/FeatureMapper.cs | 2 +- Marco.Pms.Model/Mapper/ForumMapper.cs | 2 + Marco.Pms.Model/Mapper/ProjectMapper.cs | 2 +- .../ActivityMaster.cs | 2 +- .../{Entitlements => Master}/Feature.cs | 3 +- .../{Industries => Master}/Industry.cs | 2 +- .../{Entitlements => Master}/Module.cs | 2 +- .../{Entitlements => Master}/StatusMaster.cs | 2 +- .../{Forum => Master}/TicketPriorityMaster.cs | 2 +- .../{Forum => Master}/TicketStatusMaster.cs | 2 +- .../{Forum => Master}/TicketTagMaster.cs | 2 +- .../{Forum => Master}/TicketTypeMaster.cs | 0 Marco.Pms.Model/Projects/Project.cs | 2 +- Marco.Pms.Model/Projects/WorkItem.cs | 2 +- .../ApplicationRole.cs | 2 +- .../{Entitlements => Roles}/JobRole.cs | 2 +- .../{ => Employee}/EmployeeRolesVM.cs | 2 +- .../{ => Master}/FeaturePermissionVM.cs | 2 +- .../ViewModels/{ => Master}/FeatureVM.cs | 2 +- .../Projects}/BuildingVM.cs | 4 +- .../Projects}/FloorsVM.cs | 2 +- .../ViewModels/{ => Projects}/InfraVM.cs | 2 +- .../{ => Projects}/ProjectDetailsVM.cs | 2 +- .../{ => Projects}/ProjectListVM.cs | 2 +- .../Projects}/ProjectVM.cs | 4 +- .../Projects}/WorkAreaVM.cs | 2 +- .../Projects}/WorkItemVM.cs | 2 +- .../{ => Roles}/ApplicationRolesVM.cs | 4 +- .../ViewModels/{ => Roles}/JobRoleVM.cs | 0 .../ViewModels/{ => Roles}/RolesVM.cs | 4 +- .../Controllers/EmployeeController.cs | 1 - .../Controllers/FeatureController.cs | 3 +- .../Controllers/ForumController.cs | 1 + .../Controllers/MarketController.cs | 2 +- .../Controllers/ProjectController.cs | 16 +- .../Controllers/RolesController.cs | 153 ++---------------- .../Service/StartupDataSeeder.cs | 1 + 60 files changed, 77 insertions(+), 195 deletions(-) rename Marco.Pms.Model/Dtos/{Forum => Master}/TicketPriorityMasterDto.cs (89%) rename Marco.Pms.Model/Dtos/{Forum => Master}/TicketStatusMasterDto.cs (89%) rename Marco.Pms.Model/Dtos/{Forum => Master}/TicketTagMasterDto.cs (86%) rename Marco.Pms.Model/Dtos/{Forum => Master}/TicketTypeMasterDto.cs (87%) rename Marco.Pms.Model/Dtos/{Project => Projects}/BuildingDot.cs (100%) rename Marco.Pms.Model/Dtos/{Project => Projects}/CreateProjectDto.cs (100%) rename Marco.Pms.Model/Dtos/{Project => Projects}/FloorDot.cs (100%) rename Marco.Pms.Model/Dtos/{Project => Projects}/InfraDot.cs (100%) rename Marco.Pms.Model/Dtos/{Project => Projects}/ProjectAllocationDot.cs (100%) rename Marco.Pms.Model/Dtos/{Project => Projects}/ProjectDto.cs (100%) rename Marco.Pms.Model/Dtos/{Project => Projects}/UpdateProjectDto.cs (100%) rename Marco.Pms.Model/Dtos/{Project => Projects}/WorkAreaDot.cs (100%) rename Marco.Pms.Model/Dtos/{Project => Projects}/WorkItemDot.cs (100%) rename Marco.Pms.Model/{Entitlements => Employees}/EmployeeRoleMapping.cs (89%) rename Marco.Pms.Model/{Entitlements => Master}/ActivityMaster.cs (88%) rename Marco.Pms.Model/{Entitlements => Master}/Feature.cs (90%) rename Marco.Pms.Model/{Industries => Master}/Industry.cs (75%) rename Marco.Pms.Model/{Entitlements => Master}/Module.cs (90%) rename Marco.Pms.Model/{Entitlements => Master}/StatusMaster.cs (82%) rename Marco.Pms.Model/{Forum => Master}/TicketPriorityMaster.cs (91%) rename Marco.Pms.Model/{Forum => Master}/TicketStatusMaster.cs (92%) rename Marco.Pms.Model/{Forum => Master}/TicketTagMaster.cs (89%) rename Marco.Pms.Model/{Forum => Master}/TicketTypeMaster.cs (100%) rename Marco.Pms.Model/{Entitlements => Roles}/ApplicationRole.cs (86%) rename Marco.Pms.Model/{Entitlements => Roles}/JobRole.cs (85%) rename Marco.Pms.Model/ViewModels/{ => Employee}/EmployeeRolesVM.cs (86%) rename Marco.Pms.Model/ViewModels/{ => Master}/FeaturePermissionVM.cs (90%) rename Marco.Pms.Model/ViewModels/{ => Master}/FeatureVM.cs (91%) rename Marco.Pms.Model/{Dtos/Project => ViewModels/Projects}/BuildingVM.cs (82%) rename Marco.Pms.Model/{Dtos/Project => ViewModels/Projects}/FloorsVM.cs (87%) rename Marco.Pms.Model/ViewModels/{ => Projects}/InfraVM.cs (82%) rename Marco.Pms.Model/ViewModels/{ => Projects}/ProjectDetailsVM.cs (92%) rename Marco.Pms.Model/ViewModels/{ => Projects}/ProjectListVM.cs (91%) rename Marco.Pms.Model/{Dtos/Project => ViewModels/Projects}/ProjectVM.cs (57%) rename Marco.Pms.Model/{Dtos/Project => ViewModels/Projects}/WorkAreaVM.cs (87%) rename Marco.Pms.Model/{Dtos/Project => ViewModels/Projects}/WorkItemVM.cs (78%) rename Marco.Pms.Model/ViewModels/{ => Roles}/ApplicationRolesVM.cs (77%) rename Marco.Pms.Model/ViewModels/{ => Roles}/JobRoleVM.cs (100%) rename Marco.Pms.Model/ViewModels/{ => Roles}/RolesVM.cs (69%) diff --git a/Marco.Pms.DataAccess/Initializer/DBInitializer.cs b/Marco.Pms.DataAccess/Initializer/DBInitializer.cs index 5c3dfd2..bb95d9d 100644 --- a/Marco.Pms.DataAccess/Initializer/DBInitializer.cs +++ b/Marco.Pms.DataAccess/Initializer/DBInitializer.cs @@ -1,7 +1,7 @@ using Marco.Pms.DataAccess.Data; using Marco.Pms.Model.Employees; using Marco.Pms.Model.Entitlements; -using Marco.Pms.Model.ViewModels; +using Marco.Pms.Model.ViewModels.Projects; using Marco.Pms.Utility; using Microsoft.AspNetCore.Identity; using Microsoft.EntityFrameworkCore; diff --git a/Marco.Pms.Model/Dtos/Forum/TicketPriorityMasterDto.cs b/Marco.Pms.Model/Dtos/Master/TicketPriorityMasterDto.cs similarity index 89% rename from Marco.Pms.Model/Dtos/Forum/TicketPriorityMasterDto.cs rename to Marco.Pms.Model/Dtos/Master/TicketPriorityMasterDto.cs index a87add2..b8db8db 100644 --- a/Marco.Pms.Model/Dtos/Forum/TicketPriorityMasterDto.cs +++ b/Marco.Pms.Model/Dtos/Master/TicketPriorityMasterDto.cs @@ -1,4 +1,4 @@ -namespace Marco.Pms.Model.Dtos.Forum +namespace Marco.Pms.Model.Dtos.Master { public class TicketPriorityMasterDto { diff --git a/Marco.Pms.Model/Dtos/Forum/TicketStatusMasterDto.cs b/Marco.Pms.Model/Dtos/Master/TicketStatusMasterDto.cs similarity index 89% rename from Marco.Pms.Model/Dtos/Forum/TicketStatusMasterDto.cs rename to Marco.Pms.Model/Dtos/Master/TicketStatusMasterDto.cs index 46074b4..3179ffc 100644 --- a/Marco.Pms.Model/Dtos/Forum/TicketStatusMasterDto.cs +++ b/Marco.Pms.Model/Dtos/Master/TicketStatusMasterDto.cs @@ -1,4 +1,4 @@ -namespace Marco.Pms.Model.Dtos.Forum +namespace Marco.Pms.Model.Dtos.Master { public class TicketStatusMasterDto { diff --git a/Marco.Pms.Model/Dtos/Forum/TicketTagMasterDto.cs b/Marco.Pms.Model/Dtos/Master/TicketTagMasterDto.cs similarity index 86% rename from Marco.Pms.Model/Dtos/Forum/TicketTagMasterDto.cs rename to Marco.Pms.Model/Dtos/Master/TicketTagMasterDto.cs index 2fd7bac..667f151 100644 --- a/Marco.Pms.Model/Dtos/Forum/TicketTagMasterDto.cs +++ b/Marco.Pms.Model/Dtos/Master/TicketTagMasterDto.cs @@ -1,4 +1,4 @@ -namespace Marco.Pms.Model.Dtos.Forum +namespace Marco.Pms.Model.Dtos.Master { public class TicketTagMasterDto { diff --git a/Marco.Pms.Model/Dtos/Forum/TicketTypeMasterDto.cs b/Marco.Pms.Model/Dtos/Master/TicketTypeMasterDto.cs similarity index 87% rename from Marco.Pms.Model/Dtos/Forum/TicketTypeMasterDto.cs rename to Marco.Pms.Model/Dtos/Master/TicketTypeMasterDto.cs index cdf1784..5f728d9 100644 --- a/Marco.Pms.Model/Dtos/Forum/TicketTypeMasterDto.cs +++ b/Marco.Pms.Model/Dtos/Master/TicketTypeMasterDto.cs @@ -1,4 +1,4 @@ -namespace Marco.Pms.Model.Dtos.Forum +namespace Marco.Pms.Model.Dtos.Master { public class TicketTypeMasterDto { diff --git a/Marco.Pms.Model/Dtos/Project/BuildingDot.cs b/Marco.Pms.Model/Dtos/Projects/BuildingDot.cs similarity index 100% rename from Marco.Pms.Model/Dtos/Project/BuildingDot.cs rename to Marco.Pms.Model/Dtos/Projects/BuildingDot.cs diff --git a/Marco.Pms.Model/Dtos/Project/CreateProjectDto.cs b/Marco.Pms.Model/Dtos/Projects/CreateProjectDto.cs similarity index 100% rename from Marco.Pms.Model/Dtos/Project/CreateProjectDto.cs rename to Marco.Pms.Model/Dtos/Projects/CreateProjectDto.cs diff --git a/Marco.Pms.Model/Dtos/Project/FloorDot.cs b/Marco.Pms.Model/Dtos/Projects/FloorDot.cs similarity index 100% rename from Marco.Pms.Model/Dtos/Project/FloorDot.cs rename to Marco.Pms.Model/Dtos/Projects/FloorDot.cs diff --git a/Marco.Pms.Model/Dtos/Project/InfraDot.cs b/Marco.Pms.Model/Dtos/Projects/InfraDot.cs similarity index 100% rename from Marco.Pms.Model/Dtos/Project/InfraDot.cs rename to Marco.Pms.Model/Dtos/Projects/InfraDot.cs diff --git a/Marco.Pms.Model/Dtos/Project/ProjectAllocationDot.cs b/Marco.Pms.Model/Dtos/Projects/ProjectAllocationDot.cs similarity index 100% rename from Marco.Pms.Model/Dtos/Project/ProjectAllocationDot.cs rename to Marco.Pms.Model/Dtos/Projects/ProjectAllocationDot.cs diff --git a/Marco.Pms.Model/Dtos/Project/ProjectDto.cs b/Marco.Pms.Model/Dtos/Projects/ProjectDto.cs similarity index 100% rename from Marco.Pms.Model/Dtos/Project/ProjectDto.cs rename to Marco.Pms.Model/Dtos/Projects/ProjectDto.cs diff --git a/Marco.Pms.Model/Dtos/Project/UpdateProjectDto.cs b/Marco.Pms.Model/Dtos/Projects/UpdateProjectDto.cs similarity index 100% rename from Marco.Pms.Model/Dtos/Project/UpdateProjectDto.cs rename to Marco.Pms.Model/Dtos/Projects/UpdateProjectDto.cs diff --git a/Marco.Pms.Model/Dtos/Project/WorkAreaDot.cs b/Marco.Pms.Model/Dtos/Projects/WorkAreaDot.cs similarity index 100% rename from Marco.Pms.Model/Dtos/Project/WorkAreaDot.cs rename to Marco.Pms.Model/Dtos/Projects/WorkAreaDot.cs diff --git a/Marco.Pms.Model/Dtos/Project/WorkItemDot.cs b/Marco.Pms.Model/Dtos/Projects/WorkItemDot.cs similarity index 100% rename from Marco.Pms.Model/Dtos/Project/WorkItemDot.cs rename to Marco.Pms.Model/Dtos/Projects/WorkItemDot.cs diff --git a/Marco.Pms.Model/Employees/Employee.cs b/Marco.Pms.Model/Employees/Employee.cs index 904f98c..affdbf4 100644 --- a/Marco.Pms.Model/Employees/Employee.cs +++ b/Marco.Pms.Model/Employees/Employee.cs @@ -1,5 +1,6 @@ using System.ComponentModel.DataAnnotations.Schema; using Marco.Pms.Model.Entitlements; +using Marco.Pms.Model.Roles; using Marco.Pms.Model.Utilities; using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; diff --git a/Marco.Pms.Model/Entitlements/EmployeeRoleMapping.cs b/Marco.Pms.Model/Employees/EmployeeRoleMapping.cs similarity index 89% rename from Marco.Pms.Model/Entitlements/EmployeeRoleMapping.cs rename to Marco.Pms.Model/Employees/EmployeeRoleMapping.cs index 5e070e3..ee2c44d 100644 --- a/Marco.Pms.Model/Entitlements/EmployeeRoleMapping.cs +++ b/Marco.Pms.Model/Employees/EmployeeRoleMapping.cs @@ -1,9 +1,9 @@ using System.ComponentModel.DataAnnotations.Schema; -using Marco.Pms.Model.Employees; +using Marco.Pms.Model.Roles; using Marco.Pms.Model.Utilities; using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; -namespace Marco.Pms.Model.Entitlements +namespace Marco.Pms.Model.Employees { public class EmployeeRoleMapping : TenantRelation { diff --git a/Marco.Pms.Model/Entitlements/Client.cs b/Marco.Pms.Model/Entitlements/Client.cs index d424b10..44944f8 100644 --- a/Marco.Pms.Model/Entitlements/Client.cs +++ b/Marco.Pms.Model/Entitlements/Client.cs @@ -1,5 +1,5 @@ using System.ComponentModel.DataAnnotations.Schema; -using Marco.Pms.Model.Industries; +using Marco.Pms.Model.Master; using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; namespace Marco.Pms.Model.Entitlements diff --git a/Marco.Pms.Model/Entitlements/FeaturePermission.cs b/Marco.Pms.Model/Entitlements/FeaturePermission.cs index 06cd2ba..9da8a97 100644 --- a/Marco.Pms.Model/Entitlements/FeaturePermission.cs +++ b/Marco.Pms.Model/Entitlements/FeaturePermission.cs @@ -1,4 +1,5 @@ using System.ComponentModel.DataAnnotations.Schema; +using Marco.Pms.Model.Master; using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; namespace Marco.Pms.Model.Entitlements diff --git a/Marco.Pms.Model/Forum/TicketForum.cs b/Marco.Pms.Model/Forum/TicketForum.cs index b3e01c4..aa30f9e 100644 --- a/Marco.Pms.Model/Forum/TicketForum.cs +++ b/Marco.Pms.Model/Forum/TicketForum.cs @@ -1,4 +1,5 @@ using System.ComponentModel.DataAnnotations.Schema; +using Marco.Pms.Model.Master; using Marco.Pms.Model.Utilities; using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; diff --git a/Marco.Pms.Model/Forum/TicketTag.cs b/Marco.Pms.Model/Forum/TicketTag.cs index 04f60f2..64804ac 100644 --- a/Marco.Pms.Model/Forum/TicketTag.cs +++ b/Marco.Pms.Model/Forum/TicketTag.cs @@ -1,4 +1,6 @@ -namespace Marco.Pms.Model.Forum +using Marco.Pms.Model.Master; + +namespace Marco.Pms.Model.Forum { public class TicketTag { diff --git a/Marco.Pms.Model/Mapper/ActivitiesMapper.cs b/Marco.Pms.Model/Mapper/ActivitiesMapper.cs index 459feef..75d6511 100644 --- a/Marco.Pms.Model/Mapper/ActivitiesMapper.cs +++ b/Marco.Pms.Model/Mapper/ActivitiesMapper.cs @@ -1,6 +1,7 @@ using Marco.Pms.Model.Activities; using Marco.Pms.Model.Dtos.Activities; using Marco.Pms.Model.Entitlements; +using Marco.Pms.Model.Master; using Marco.Pms.Model.ViewModels.Activities; namespace Marco.Pms.Model.Mapper diff --git a/Marco.Pms.Model/Mapper/ApplicationRoleMapper.cs b/Marco.Pms.Model/Mapper/ApplicationRoleMapper.cs index d548991..45228e2 100644 --- a/Marco.Pms.Model/Mapper/ApplicationRoleMapper.cs +++ b/Marco.Pms.Model/Mapper/ApplicationRoleMapper.cs @@ -1,6 +1,7 @@ using Marco.Pms.Model.Dtos.Roles; -using Marco.Pms.Model.Entitlements; +using Marco.Pms.Model.Roles; using Marco.Pms.Model.ViewModels; +using Marco.Pms.Model.ViewModels.Roles; #nullable disable namespace Marco.Pms.Model.Mapper { @@ -12,7 +13,6 @@ namespace Marco.Pms.Model.Mapper { Id = model.Id, Role = model.Role, - IsSystem = model.IsSystem, Description = model.Description, //FeaturePermission = model.FeaturePermissions }; diff --git a/Marco.Pms.Model/Mapper/EmployeeRoleMapper.cs b/Marco.Pms.Model/Mapper/EmployeeRoleMapper.cs index 1fceb96..b90d281 100644 --- a/Marco.Pms.Model/Mapper/EmployeeRoleMapper.cs +++ b/Marco.Pms.Model/Mapper/EmployeeRoleMapper.cs @@ -1,5 +1,5 @@ using Marco.Pms.Model.Dtos.Employees; -using Marco.Pms.Model.Entitlements; +using Marco.Pms.Model.Employees; namespace Marco.Pms.Model.Mapper { diff --git a/Marco.Pms.Model/Mapper/FeatureMapper.cs b/Marco.Pms.Model/Mapper/FeatureMapper.cs index 681afb6..9522ea5 100644 --- a/Marco.Pms.Model/Mapper/FeatureMapper.cs +++ b/Marco.Pms.Model/Mapper/FeatureMapper.cs @@ -1,5 +1,5 @@ using Marco.Pms.Model.Entitlements; -using Marco.Pms.Model.ViewModels; +using Marco.Pms.Model.ViewModels.Master; namespace Marco.Pms.Model.Mapper { diff --git a/Marco.Pms.Model/Mapper/ForumMapper.cs b/Marco.Pms.Model/Mapper/ForumMapper.cs index a79f05c..c5f84ba 100644 --- a/Marco.Pms.Model/Mapper/ForumMapper.cs +++ b/Marco.Pms.Model/Mapper/ForumMapper.cs @@ -1,7 +1,9 @@ using Marco.Pms.Model.DocumentManager; using Marco.Pms.Model.Dtos.Forum; +using Marco.Pms.Model.Dtos.Master; using Marco.Pms.Model.Employees; using Marco.Pms.Model.Forum; +using Marco.Pms.Model.Master; using Marco.Pms.Model.ViewModels.Forum; namespace Marco.Pms.Model.Mapper diff --git a/Marco.Pms.Model/Mapper/ProjectMapper.cs b/Marco.Pms.Model/Mapper/ProjectMapper.cs index b357441..75588c5 100644 --- a/Marco.Pms.Model/Mapper/ProjectMapper.cs +++ b/Marco.Pms.Model/Mapper/ProjectMapper.cs @@ -1,6 +1,6 @@ using Marco.Pms.Model.Dtos.Project; using Marco.Pms.Model.Projects; -using Marco.Pms.Model.ViewModels; +using Marco.Pms.Model.ViewModels.Projects; namespace Marco.Pms.Model.Mapper { diff --git a/Marco.Pms.Model/Entitlements/ActivityMaster.cs b/Marco.Pms.Model/Master/ActivityMaster.cs similarity index 88% rename from Marco.Pms.Model/Entitlements/ActivityMaster.cs rename to Marco.Pms.Model/Master/ActivityMaster.cs index 977dbdd..26b018e 100644 --- a/Marco.Pms.Model/Entitlements/ActivityMaster.cs +++ b/Marco.Pms.Model/Master/ActivityMaster.cs @@ -1,6 +1,6 @@ using Marco.Pms.Model.Utilities; -namespace Marco.Pms.Model.Entitlements +namespace Marco.Pms.Model.Master { public class ActivityMaster : TenantRelation { diff --git a/Marco.Pms.Model/Entitlements/Feature.cs b/Marco.Pms.Model/Master/Feature.cs similarity index 90% rename from Marco.Pms.Model/Entitlements/Feature.cs rename to Marco.Pms.Model/Master/Feature.cs index 6ddd7ef..304076a 100644 --- a/Marco.Pms.Model/Entitlements/Feature.cs +++ b/Marco.Pms.Model/Master/Feature.cs @@ -1,7 +1,8 @@ using System.ComponentModel.DataAnnotations.Schema; +using Marco.Pms.Model.Entitlements; using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; -namespace Marco.Pms.Model.Entitlements +namespace Marco.Pms.Model.Master { public class Feature { diff --git a/Marco.Pms.Model/Industries/Industry.cs b/Marco.Pms.Model/Master/Industry.cs similarity index 75% rename from Marco.Pms.Model/Industries/Industry.cs rename to Marco.Pms.Model/Master/Industry.cs index 6333bd0..b9157ae 100644 --- a/Marco.Pms.Model/Industries/Industry.cs +++ b/Marco.Pms.Model/Master/Industry.cs @@ -1,4 +1,4 @@ -namespace Marco.Pms.Model.Industries +namespace Marco.Pms.Model.Master { public class Industry { diff --git a/Marco.Pms.Model/Entitlements/Module.cs b/Marco.Pms.Model/Master/Module.cs similarity index 90% rename from Marco.Pms.Model/Entitlements/Module.cs rename to Marco.Pms.Model/Master/Module.cs index 3705ecd..a9df43e 100644 --- a/Marco.Pms.Model/Entitlements/Module.cs +++ b/Marco.Pms.Model/Master/Module.cs @@ -1,6 +1,6 @@ using System.ComponentModel.DataAnnotations; -namespace Marco.Pms.Model.Entitlements +namespace Marco.Pms.Model.Master { public class Module { diff --git a/Marco.Pms.Model/Entitlements/StatusMaster.cs b/Marco.Pms.Model/Master/StatusMaster.cs similarity index 82% rename from Marco.Pms.Model/Entitlements/StatusMaster.cs rename to Marco.Pms.Model/Master/StatusMaster.cs index 945cd49..4bd5283 100644 --- a/Marco.Pms.Model/Entitlements/StatusMaster.cs +++ b/Marco.Pms.Model/Master/StatusMaster.cs @@ -1,6 +1,6 @@ using Marco.Pms.Model.Utilities; -namespace Marco.Pms.Model.Entitlements +namespace Marco.Pms.Model.Master { public class StatusMaster : TenantRelation { diff --git a/Marco.Pms.Model/Forum/TicketPriorityMaster.cs b/Marco.Pms.Model/Master/TicketPriorityMaster.cs similarity index 91% rename from Marco.Pms.Model/Forum/TicketPriorityMaster.cs rename to Marco.Pms.Model/Master/TicketPriorityMaster.cs index 1c5da55..e7c5a15 100644 --- a/Marco.Pms.Model/Forum/TicketPriorityMaster.cs +++ b/Marco.Pms.Model/Master/TicketPriorityMaster.cs @@ -1,4 +1,4 @@ -namespace Marco.Pms.Model.Forum +namespace Marco.Pms.Model.Master { public class TicketPriorityMaster { diff --git a/Marco.Pms.Model/Forum/TicketStatusMaster.cs b/Marco.Pms.Model/Master/TicketStatusMaster.cs similarity index 92% rename from Marco.Pms.Model/Forum/TicketStatusMaster.cs rename to Marco.Pms.Model/Master/TicketStatusMaster.cs index 1dfab31..8a341e7 100644 --- a/Marco.Pms.Model/Forum/TicketStatusMaster.cs +++ b/Marco.Pms.Model/Master/TicketStatusMaster.cs @@ -1,4 +1,4 @@ -namespace Marco.Pms.Model.Forum +namespace Marco.Pms.Model.Master { public class TicketStatusMaster { diff --git a/Marco.Pms.Model/Forum/TicketTagMaster.cs b/Marco.Pms.Model/Master/TicketTagMaster.cs similarity index 89% rename from Marco.Pms.Model/Forum/TicketTagMaster.cs rename to Marco.Pms.Model/Master/TicketTagMaster.cs index 7815c57..68630a4 100644 --- a/Marco.Pms.Model/Forum/TicketTagMaster.cs +++ b/Marco.Pms.Model/Master/TicketTagMaster.cs @@ -1,4 +1,4 @@ -namespace Marco.Pms.Model.Forum +namespace Marco.Pms.Model.Master { public class TicketTagMaster { diff --git a/Marco.Pms.Model/Forum/TicketTypeMaster.cs b/Marco.Pms.Model/Master/TicketTypeMaster.cs similarity index 100% rename from Marco.Pms.Model/Forum/TicketTypeMaster.cs rename to Marco.Pms.Model/Master/TicketTypeMaster.cs diff --git a/Marco.Pms.Model/Projects/Project.cs b/Marco.Pms.Model/Projects/Project.cs index c3c47a1..5b0c357 100644 --- a/Marco.Pms.Model/Projects/Project.cs +++ b/Marco.Pms.Model/Projects/Project.cs @@ -1,7 +1,7 @@ using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; -using Marco.Pms.Model.Entitlements; +using Marco.Pms.Model.Master; using Marco.Pms.Model.Utilities; using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; diff --git a/Marco.Pms.Model/Projects/WorkItem.cs b/Marco.Pms.Model/Projects/WorkItem.cs index 841a3a7..81b854c 100644 --- a/Marco.Pms.Model/Projects/WorkItem.cs +++ b/Marco.Pms.Model/Projects/WorkItem.cs @@ -1,5 +1,5 @@ using System.ComponentModel.DataAnnotations.Schema; -using Marco.Pms.Model.Entitlements; +using Marco.Pms.Model.Master; using Marco.Pms.Model.Utilities; using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; diff --git a/Marco.Pms.Model/Entitlements/ApplicationRole.cs b/Marco.Pms.Model/Roles/ApplicationRole.cs similarity index 86% rename from Marco.Pms.Model/Entitlements/ApplicationRole.cs rename to Marco.Pms.Model/Roles/ApplicationRole.cs index 5a15714..e51f6e0 100644 --- a/Marco.Pms.Model/Entitlements/ApplicationRole.cs +++ b/Marco.Pms.Model/Roles/ApplicationRole.cs @@ -1,4 +1,4 @@ -namespace Marco.Pms.Model.Entitlements +namespace Marco.Pms.Model.Roles { public class ApplicationRole { diff --git a/Marco.Pms.Model/Entitlements/JobRole.cs b/Marco.Pms.Model/Roles/JobRole.cs similarity index 85% rename from Marco.Pms.Model/Entitlements/JobRole.cs rename to Marco.Pms.Model/Roles/JobRole.cs index d7daf9a..637bb39 100644 --- a/Marco.Pms.Model/Entitlements/JobRole.cs +++ b/Marco.Pms.Model/Roles/JobRole.cs @@ -1,6 +1,6 @@ using Marco.Pms.Model.Utilities; -namespace Marco.Pms.Model.Entitlements +namespace Marco.Pms.Model.Roles { public class JobRole : TenantRelation { diff --git a/Marco.Pms.Model/ViewModels/EmployeeRolesVM.cs b/Marco.Pms.Model/ViewModels/Employee/EmployeeRolesVM.cs similarity index 86% rename from Marco.Pms.Model/ViewModels/EmployeeRolesVM.cs rename to Marco.Pms.Model/ViewModels/Employee/EmployeeRolesVM.cs index 8b1509c..39b31e8 100644 --- a/Marco.Pms.Model/ViewModels/EmployeeRolesVM.cs +++ b/Marco.Pms.Model/ViewModels/Employee/EmployeeRolesVM.cs @@ -1,4 +1,4 @@ -namespace Marco.Pms.Model.ViewModels +namespace Marco.Pms.Model.ViewModels.Employee { public class EmployeeRolesVM { diff --git a/Marco.Pms.Model/ViewModels/FeaturePermissionVM.cs b/Marco.Pms.Model/ViewModels/Master/FeaturePermissionVM.cs similarity index 90% rename from Marco.Pms.Model/ViewModels/FeaturePermissionVM.cs rename to Marco.Pms.Model/ViewModels/Master/FeaturePermissionVM.cs index f3336d5..9140d23 100644 --- a/Marco.Pms.Model/ViewModels/FeaturePermissionVM.cs +++ b/Marco.Pms.Model/ViewModels/Master/FeaturePermissionVM.cs @@ -1,4 +1,4 @@ -namespace Marco.Pms.Model.ViewModels +namespace Marco.Pms.Model.ViewModels.Master { public class FeaturePermissionVM { diff --git a/Marco.Pms.Model/ViewModels/FeatureVM.cs b/Marco.Pms.Model/ViewModels/Master/FeatureVM.cs similarity index 91% rename from Marco.Pms.Model/ViewModels/FeatureVM.cs rename to Marco.Pms.Model/ViewModels/Master/FeatureVM.cs index 4fe470f..935dd23 100644 --- a/Marco.Pms.Model/ViewModels/FeatureVM.cs +++ b/Marco.Pms.Model/ViewModels/Master/FeatureVM.cs @@ -1,4 +1,4 @@ -namespace Marco.Pms.Model.ViewModels +namespace Marco.Pms.Model.ViewModels.Master { public class FeatureVM { diff --git a/Marco.Pms.Model/Dtos/Project/BuildingVM.cs b/Marco.Pms.Model/ViewModels/Projects/BuildingVM.cs similarity index 82% rename from Marco.Pms.Model/Dtos/Project/BuildingVM.cs rename to Marco.Pms.Model/ViewModels/Projects/BuildingVM.cs index 40f6ea2..06acc39 100644 --- a/Marco.Pms.Model/Dtos/Project/BuildingVM.cs +++ b/Marco.Pms.Model/ViewModels/Projects/BuildingVM.cs @@ -1,6 +1,4 @@ - - -namespace Marco.Pms.Model.Dtos.Project +namespace Marco.Pms.Model.ViewModels.Projects { public class BuildingVM { diff --git a/Marco.Pms.Model/Dtos/Project/FloorsVM.cs b/Marco.Pms.Model/ViewModels/Projects/FloorsVM.cs similarity index 87% rename from Marco.Pms.Model/Dtos/Project/FloorsVM.cs rename to Marco.Pms.Model/ViewModels/Projects/FloorsVM.cs index 6674629..f9d9355 100644 --- a/Marco.Pms.Model/Dtos/Project/FloorsVM.cs +++ b/Marco.Pms.Model/ViewModels/Projects/FloorsVM.cs @@ -1,7 +1,7 @@ using System.ComponentModel; using System.ComponentModel.DataAnnotations; -namespace Marco.Pms.Model.Dtos.Project +namespace Marco.Pms.Model.ViewModels.Projects { public class FloorsVM { diff --git a/Marco.Pms.Model/ViewModels/InfraVM.cs b/Marco.Pms.Model/ViewModels/Projects/InfraVM.cs similarity index 82% rename from Marco.Pms.Model/ViewModels/InfraVM.cs rename to Marco.Pms.Model/ViewModels/Projects/InfraVM.cs index 9bdea2b..ccea6d1 100644 --- a/Marco.Pms.Model/ViewModels/InfraVM.cs +++ b/Marco.Pms.Model/ViewModels/Projects/InfraVM.cs @@ -1,6 +1,6 @@ using Marco.Pms.Model.Projects; -namespace Marco.Pms.Model.ViewModels +namespace Marco.Pms.Model.ViewModels.Projects { public class InfraVM { diff --git a/Marco.Pms.Model/ViewModels/ProjectDetailsVM.cs b/Marco.Pms.Model/ViewModels/Projects/ProjectDetailsVM.cs similarity index 92% rename from Marco.Pms.Model/ViewModels/ProjectDetailsVM.cs rename to Marco.Pms.Model/ViewModels/Projects/ProjectDetailsVM.cs index 9726bf2..277b059 100644 --- a/Marco.Pms.Model/ViewModels/ProjectDetailsVM.cs +++ b/Marco.Pms.Model/ViewModels/Projects/ProjectDetailsVM.cs @@ -2,7 +2,7 @@ using Marco.Pms.Model.Employees; using Marco.Pms.Model.Projects; -namespace Marco.Pms.Model.ViewModels +namespace Marco.Pms.Model.ViewModels.Projects { public class ProjectDetailsVM { diff --git a/Marco.Pms.Model/ViewModels/ProjectListVM.cs b/Marco.Pms.Model/ViewModels/Projects/ProjectListVM.cs similarity index 91% rename from Marco.Pms.Model/ViewModels/ProjectListVM.cs rename to Marco.Pms.Model/ViewModels/Projects/ProjectListVM.cs index 888d64b..ab5f906 100644 --- a/Marco.Pms.Model/ViewModels/ProjectListVM.cs +++ b/Marco.Pms.Model/ViewModels/Projects/ProjectListVM.cs @@ -1,4 +1,4 @@ -namespace Marco.Pms.Model.ViewModels +namespace Marco.Pms.Model.ViewModels.Projects { public class ProjectListVM { diff --git a/Marco.Pms.Model/Dtos/Project/ProjectVM.cs b/Marco.Pms.Model/ViewModels/Projects/ProjectVM.cs similarity index 57% rename from Marco.Pms.Model/Dtos/Project/ProjectVM.cs rename to Marco.Pms.Model/ViewModels/Projects/ProjectVM.cs index 6afc004..cd349bb 100644 --- a/Marco.Pms.Model/Dtos/Project/ProjectVM.cs +++ b/Marco.Pms.Model/ViewModels/Projects/ProjectVM.cs @@ -1,4 +1,6 @@ -namespace Marco.Pms.Model.Dtos.Project +using Marco.Pms.Model.Dtos.Project; + +namespace Marco.Pms.Model.ViewModels.Projects { public class ProjectVM : ProjectDto { diff --git a/Marco.Pms.Model/Dtos/Project/WorkAreaVM.cs b/Marco.Pms.Model/ViewModels/Projects/WorkAreaVM.cs similarity index 87% rename from Marco.Pms.Model/Dtos/Project/WorkAreaVM.cs rename to Marco.Pms.Model/ViewModels/Projects/WorkAreaVM.cs index 127fe4b..eaf1dae 100644 --- a/Marco.Pms.Model/Dtos/Project/WorkAreaVM.cs +++ b/Marco.Pms.Model/ViewModels/Projects/WorkAreaVM.cs @@ -1,7 +1,7 @@ using System.ComponentModel; using System.ComponentModel.DataAnnotations; -namespace Marco.Pms.Model.Dtos.Project +namespace Marco.Pms.Model.ViewModels.Projects { public class WorkAreaVM { diff --git a/Marco.Pms.Model/Dtos/Project/WorkItemVM.cs b/Marco.Pms.Model/ViewModels/Projects/WorkItemVM.cs similarity index 78% rename from Marco.Pms.Model/Dtos/Project/WorkItemVM.cs rename to Marco.Pms.Model/ViewModels/Projects/WorkItemVM.cs index adf93e8..f126d77 100644 --- a/Marco.Pms.Model/Dtos/Project/WorkItemVM.cs +++ b/Marco.Pms.Model/ViewModels/Projects/WorkItemVM.cs @@ -1,6 +1,6 @@ using Marco.Pms.Model.Projects; -namespace Marco.Pms.Model.Dtos.Project +namespace Marco.Pms.Model.ViewModels.Projects { public class WorkItemVM { diff --git a/Marco.Pms.Model/ViewModels/ApplicationRolesVM.cs b/Marco.Pms.Model/ViewModels/Roles/ApplicationRolesVM.cs similarity index 77% rename from Marco.Pms.Model/ViewModels/ApplicationRolesVM.cs rename to Marco.Pms.Model/ViewModels/Roles/ApplicationRolesVM.cs index 15bfb1f..aa7ec00 100644 --- a/Marco.Pms.Model/ViewModels/ApplicationRolesVM.cs +++ b/Marco.Pms.Model/ViewModels/Roles/ApplicationRolesVM.cs @@ -1,4 +1,6 @@ -namespace Marco.Pms.Model.ViewModels +using Marco.Pms.Model.ViewModels.Master; + +namespace Marco.Pms.Model.ViewModels.Roles { public class ApplicationRolesVM { diff --git a/Marco.Pms.Model/ViewModels/JobRoleVM.cs b/Marco.Pms.Model/ViewModels/Roles/JobRoleVM.cs similarity index 100% rename from Marco.Pms.Model/ViewModels/JobRoleVM.cs rename to Marco.Pms.Model/ViewModels/Roles/JobRoleVM.cs diff --git a/Marco.Pms.Model/ViewModels/RolesVM.cs b/Marco.Pms.Model/ViewModels/Roles/RolesVM.cs similarity index 69% rename from Marco.Pms.Model/ViewModels/RolesVM.cs rename to Marco.Pms.Model/ViewModels/Roles/RolesVM.cs index ac3501b..2d966b6 100644 --- a/Marco.Pms.Model/ViewModels/RolesVM.cs +++ b/Marco.Pms.Model/ViewModels/Roles/RolesVM.cs @@ -1,4 +1,6 @@ -namespace Marco.Pms.Model.ViewModels +using Marco.Pms.Model.ViewModels.Master; + +namespace Marco.Pms.Model.ViewModels.Roles { public class RolesVM diff --git a/Marco.Pms.Services/Controllers/EmployeeController.cs b/Marco.Pms.Services/Controllers/EmployeeController.cs index 86f712a..7e02698 100644 --- a/Marco.Pms.Services/Controllers/EmployeeController.cs +++ b/Marco.Pms.Services/Controllers/EmployeeController.cs @@ -8,7 +8,6 @@ using Marco.Pms.Model.Entitlements; using Marco.Pms.Model.Mapper; using Marco.Pms.Model.Projects; using Marco.Pms.Model.Utilities; -using Marco.Pms.Model.ViewModels; using Marco.Pms.Model.ViewModels.Employee; using MarcoBMS.Services.Helpers; using MarcoBMS.Services.Service; diff --git a/Marco.Pms.Services/Controllers/FeatureController.cs b/Marco.Pms.Services/Controllers/FeatureController.cs index ea8c539..635ab7e 100644 --- a/Marco.Pms.Services/Controllers/FeatureController.cs +++ b/Marco.Pms.Services/Controllers/FeatureController.cs @@ -1,8 +1,9 @@ using Marco.Pms.DataAccess.Data; using Marco.Pms.Model.Entitlements; using Marco.Pms.Model.Mapper; +using Marco.Pms.Model.Master; using Marco.Pms.Model.Utilities; -using Marco.Pms.Model.ViewModels; +using Marco.Pms.Model.ViewModels.Master; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; diff --git a/Marco.Pms.Services/Controllers/ForumController.cs b/Marco.Pms.Services/Controllers/ForumController.cs index e55c58a..b46edb1 100644 --- a/Marco.Pms.Services/Controllers/ForumController.cs +++ b/Marco.Pms.Services/Controllers/ForumController.cs @@ -4,6 +4,7 @@ using Marco.Pms.Model.Dtos.Forum; using Marco.Pms.Model.Employees; using Marco.Pms.Model.Forum; using Marco.Pms.Model.Mapper; +using Marco.Pms.Model.Master; using Marco.Pms.Model.Projects; using Marco.Pms.Model.Utilities; using Marco.Pms.Model.ViewModels.Forum; diff --git a/Marco.Pms.Services/Controllers/MarketController.cs b/Marco.Pms.Services/Controllers/MarketController.cs index 56ee1db..8928b2a 100644 --- a/Marco.Pms.Services/Controllers/MarketController.cs +++ b/Marco.Pms.Services/Controllers/MarketController.cs @@ -1,7 +1,7 @@ using Marco.Pms.DataAccess.Data; using Marco.Pms.Model.Dtos.Util; -using Marco.Pms.Model.Industries; using Marco.Pms.Model.Mapper; +using Marco.Pms.Model.Master; using Marco.Pms.Model.Utilities; using MarcoBMS.Services.Helpers; using MarcoBMS.Services.Service; diff --git a/Marco.Pms.Services/Controllers/ProjectController.cs b/Marco.Pms.Services/Controllers/ProjectController.cs index 94cd8dc..1aa5096 100644 --- a/Marco.Pms.Services/Controllers/ProjectController.cs +++ b/Marco.Pms.Services/Controllers/ProjectController.cs @@ -5,8 +5,8 @@ using Marco.Pms.Model.Entitlements; using Marco.Pms.Model.Mapper; using Marco.Pms.Model.Projects; using Marco.Pms.Model.Utilities; -using Marco.Pms.Model.ViewModels; using Marco.Pms.Model.ViewModels.Employee; +using Marco.Pms.Model.ViewModels.Projects; using MarcoBMS.Services.Helpers; using MarcoBMS.Services.Service; using Microsoft.AspNetCore.Authorization; @@ -493,7 +493,6 @@ namespace MarcoBMS.Services.Controllers { Guid tenantId = GetTenantId(); List workItems = new List { }; - string responseMessage = ""; if (workItemDot != null) { foreach (var item in workItemDot) @@ -505,14 +504,12 @@ namespace MarcoBMS.Services.Controllers //update _context.WorkItems.Update(workItem); await _context.SaveChangesAsync(); - responseMessage = "Task Added Successfully"; } else { //create _context.WorkItems.Add(workItem); await _context.SaveChangesAsync(); - responseMessage = "Task Updated Successfully"; } var result = new WorkItemVM { @@ -522,7 +519,7 @@ namespace MarcoBMS.Services.Controllers workItems.Add(result); } var activity = await _context.ActivityMasters.ToListAsync(); - return Ok(ApiResponse.SuccessResponse(workItems, responseMessage, 200)); + return Ok(ApiResponse.SuccessResponse(workItems, "Data saved successfully.", 200)); } return BadRequest(ApiResponse.ErrorResponse("Invalid details.", "Work Item Details are not valid.", 400)); @@ -572,7 +569,6 @@ namespace MarcoBMS.Services.Controllers { Guid tenantId = GetTenantId(); var responseData = new InfraVM { }; - string responseMessage = ""; if (infraDots != null) { foreach (var item in infraDots) @@ -589,7 +585,6 @@ namespace MarcoBMS.Services.Controllers _context.Buildings.Add(building); await _context.SaveChangesAsync(); responseData.building = building; - responseMessage = "Buliding Added Successfully"; } else { @@ -597,7 +592,6 @@ namespace MarcoBMS.Services.Controllers _context.Buildings.Update(building); await _context.SaveChangesAsync(); responseData.building = building; - responseMessage = "Buliding Updated Successfully"; } } @@ -612,7 +606,6 @@ namespace MarcoBMS.Services.Controllers _context.Floor.Add(floor); await _context.SaveChangesAsync(); responseData.floor = floor; - responseMessage = "Floor Added Successfully"; } else { @@ -620,7 +613,6 @@ namespace MarcoBMS.Services.Controllers _context.Floor.Update(floor); await _context.SaveChangesAsync(); responseData.floor = floor; - responseMessage = "Floor Updated Successfully"; } } if (item.WorkArea != null) @@ -634,7 +626,6 @@ namespace MarcoBMS.Services.Controllers _context.WorkAreas.Add(workArea); await _context.SaveChangesAsync(); responseData.workArea = workArea; - responseMessage = "Work Area Added Successfully"; } else { @@ -642,11 +633,10 @@ namespace MarcoBMS.Services.Controllers _context.WorkAreas.Update(workArea); await _context.SaveChangesAsync(); responseData.workArea = workArea; - responseMessage = "Work Area Updated Successfully"; } } } - return Ok(ApiResponse.SuccessResponse(responseData, responseMessage, 200)); + return Ok(ApiResponse.SuccessResponse(responseData, "Data saved successfully.", 200)); } return BadRequest(ApiResponse.ErrorResponse("Invalid details.", "Infra Details are not valid.", 400)); diff --git a/Marco.Pms.Services/Controllers/RolesController.cs b/Marco.Pms.Services/Controllers/RolesController.cs index 8f84416..80c49d3 100644 --- a/Marco.Pms.Services/Controllers/RolesController.cs +++ b/Marco.Pms.Services/Controllers/RolesController.cs @@ -1,13 +1,14 @@ using System.Data; using Marco.Pms.DataAccess.Data; -using Marco.Pms.Model.Dtos.Employees; using Marco.Pms.Model.Dtos.Roles; using Marco.Pms.Model.Entitlements; using Marco.Pms.Model.Mapper; +using Marco.Pms.Model.Roles; using Marco.Pms.Model.Utilities; using Marco.Pms.Model.ViewModels; +using Marco.Pms.Model.ViewModels.Master; +using Marco.Pms.Model.ViewModels.Roles; using MarcoBMS.Services.Helpers; -using MarcoBMS.Services.Service; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; @@ -23,16 +24,16 @@ namespace MarcoBMS.Services.Controllers private readonly ApplicationDbContext _context; private readonly RolesHelper _rolesHelper; private readonly UserHelper _userHelper; - private readonly UserManager _userManager; - private readonly ILoggingService _logger; - public RolesController(UserManager userManager, ApplicationDbContext context, RolesHelper rolesHelper, UserHelper userHelper, ILoggingService logger) + + private readonly UserManager _userManager; + + public RolesController(UserManager userManager, ApplicationDbContext context, RolesHelper rolesHelper, UserHelper userHelper) { _context = context; _userManager = userManager; _rolesHelper = rolesHelper; _userHelper = userHelper; - _logger = logger; } private Guid GetTenantId() @@ -101,30 +102,7 @@ namespace MarcoBMS.Services.Controllers return BadRequest(ApiResponse.ErrorResponse(ex.Message, ex, 400)); } } - [HttpDelete("jobrole/{id}")] - public async Task DeleteJobRole(Guid id) - { - Guid tenantId = GetTenantId(); - var LoggedEmployee = await _userHelper.GetCurrentEmployeeAsync(); - var jobRole = await _context.JobRoles.FirstOrDefaultAsync(r => r.Id == id && r.TenantId == tenantId); - if (jobRole != null) - { - var employee = await _context.Employees.Where(e => e.JobRoleId == jobRole.Id).ToListAsync(); - if (employee.Any()) - { - _logger.LogWarning("Employee with ID {LoggedEmployeeId} tries to delete the job role with ID {JobRoleId} which is assigned to one or more employees", LoggedEmployee.Id, jobRole.Id); - return BadRequest(ApiResponse.ErrorResponse("Cannot delete the job role because it is assigned to one or more employees.", "Cannot delete the job role because it is assigned to one or more employees.", 400)); - } - _context.JobRoles.Remove(jobRole); - await _context.SaveChangesAsync(); - _logger.LogInfo("Employee with ID {LoggedEmployeeId} deleted the job role with ID {JobRoleId}", LoggedEmployee.Id, jobRole.Id); - } - else - { - _logger.LogWarning("Job role with ID {JobRoleId} not found in database", id); - } - return Ok(ApiResponse.SuccessResponse(new { }, "Job role deleted successfully", 200)); - } + [HttpGet] public async Task GetAllRoles() @@ -162,7 +140,6 @@ namespace MarcoBMS.Services.Controllers { Id = item.Id, Role = item.Role, - IsSystem = item.IsSystem, Description = item.Description, FeaturePermission = [] }; @@ -251,21 +228,17 @@ namespace MarcoBMS.Services.Controllers try { Guid TenantId = GetTenantId(); - var LoggedEmployee = await _userHelper.GetCurrentEmployeeAsync(); - var existingRole = await _context.ApplicationRoles.AsNoTracking().FirstOrDefaultAsync(r => r.Id == id); - if (existingRole != null && existingRole.IsSystem) - { - _logger.LogWarning("Employee with ID {LoggedEmployeeId} tries to update System-defined application roles {AppcationRoleId}", LoggedEmployee.Id, existingRole.Id); - return BadRequest(ApiResponse.ErrorResponse("System-defined roles cannot be updated", "System-defined roles cannot be updated", 400)); - } + ApplicationRole role = updateRoleDto.ToApplicationRoleFromUpdateDto(TenantId); if (role.TenantId != TenantId) return Unauthorized(ApiResponse.ErrorResponse("You don't have any authority to update role", "You don't have any authority to update role", 401)); - if (existingRole != null) + + var projectModel = _context.ApplicationRoles.Update(role); + + if (projectModel == null) { - _context.ApplicationRoles.Update(role); - await _context.SaveChangesAsync(); + return NotFound(ApiResponse.ErrorResponse("Project not found", "Project not found", 404)); } bool modified = false; @@ -295,13 +268,7 @@ namespace MarcoBMS.Services.Controllers } catch (Exception ex) { - var response = new - { - message = ex.Message, - detail = ex.StackTrace, - statusCode = StatusCodes.Status500InternalServerError - }; - return BadRequest(ApiResponse.ErrorResponse(ex.Message, response, 400)); + return BadRequest(ApiResponse.ErrorResponse(ex.Message, ex, 400)); } } @@ -339,101 +306,11 @@ namespace MarcoBMS.Services.Controllers { Id = role.Id, Role = role.Role, - IsSystem = role.IsSystem, FeaturePermission = featurePermissions }; return Ok(ApiResponse.SuccessResponse(vm, "Roles Perimssions fetched successfully.", 200)); } - [HttpDelete("{id}")] - public async Task DeleteApplicationRole(Guid id) - { - Guid tenantId = GetTenantId(); - var LoggedEmployee = await _userHelper.GetCurrentEmployeeAsync(); - var role = await _context.ApplicationRoles.AsNoTracking().FirstOrDefaultAsync(r => r.Id == id && r.TenantId == tenantId); - if (role != null) - { - if (role.IsSystem) - { - _logger.LogInfo("Employee with ID {LoggedEmployeeId} tries to delete system-defined application role with ID {ApplicationRoleId}", LoggedEmployee.Id, role.Id); - return BadRequest(ApiResponse.ErrorResponse("This role cannot be deleted because it is system-defined.", "This role cannot be deleted because it is system-defined.", 400)); - } - var employeeRoleMapping = await _context.EmployeeRoleMappings.Where(erm => erm.RoleId == role.Id).ToListAsync(); - if (employeeRoleMapping.Count != 0) - { - _logger.LogInfo("Employee with ID {LoggedEmployeeId} tries to delete application role with ID {ApplicationRoleId} with is assigned to an employee", LoggedEmployee.Id, role.Id); - return BadRequest(ApiResponse.ErrorResponse("This role cannot be deleted because it is currently assigned to employees.", "This role cannot be deleted because it is currently assigned to employees.", 400)); - } - _context.ApplicationRoles.Remove(role); - var rolePermissionMapping = await _context.RolePermissionMappings.Where(r => r.ApplicationRoleId == role.Id).ToListAsync(); - if (rolePermissionMapping.Count != 0) - { - _context.RolePermissionMappings.RemoveRange(rolePermissionMapping); - _logger.LogInfo("All permissions assigned to the application role with ID {ApplicationRoleId} have been removed.", role.Id); - } - await _context.SaveChangesAsync(); - _logger.LogInfo("Employee with ID {LoggedEmployeeId} deleted application role with ID {ApplicationRoleId}", LoggedEmployee.Id, role.Id); - } - else - { - _logger.LogWarning("Application role with ID {ApplicationRoleId} not found in database", id); - } - return Ok(ApiResponse.SuccessResponse(new { }, "Application role is deleted successfully", 200)); - } - - - [HttpPost] - [Route("assign-roles")] - public async Task ManageRoles([FromBody] List employeeRoleDots) - { - if (!ModelState.IsValid) - { - var errors = ModelState.Values - .SelectMany(v => v.Errors) - .Select(e => e.ErrorMessage) - .ToList(); - return BadRequest(ApiResponse.ErrorResponse("Invalid data", errors, 400)); - } - var employeesIds = employeeRoleDots.Select(e => e.EmployeeId).Distinct().ToList(); - var LoggedEmployee = await _userHelper.GetCurrentEmployeeAsync(); - var employees = await _context.Employees.Where(e => employeesIds.Contains(e.Id)).ToListAsync(); - - Guid TenantId = GetTenantId(); - try - { - foreach (EmployeeRoleDot role in employeeRoleDots) - { - var employee = employees.Find(e => e.Id == role.EmployeeId && e.IsSystem); - if (employee != null) - { - _logger.LogWarning("Employee with ID {LoggedEmployeeId} tries to assign or remove the application role to System-defined employee with ID {EmployeeId}", LoggedEmployee.Id, employee.Id); - return BadRequest(ApiResponse.ErrorResponse("System-defined employee cannot have application roles assigned or removed.", "System-defined employee cannot have application roles assigned or removed.", 400)); - } - EmployeeRoleMapping mapping = role.ToEmployeeRoleMappingFromEmployeeRoleDot(TenantId); - - var existingItem = await _context.EmployeeRoleMappings.AsNoTracking().SingleOrDefaultAsync(c => c.Id == mapping.Id); - - if (existingItem == null) - { - if (role.IsEnabled == true) - { - _context.EmployeeRoleMappings.Add(mapping); - } - } - else if (role.IsEnabled == false) - { - _context.EmployeeRoleMappings.Remove(existingItem); - } - - } - await _context.SaveChangesAsync(); - } - catch (Exception ex) - { - return BadRequest(ApiResponse.ErrorResponse(ex.Message, ex, 400)); - } - return Ok(ApiResponse.SuccessResponse("success", "Roles modified.", 200)); - } } } diff --git a/Marco.Pms.Services/Service/StartupDataSeeder.cs b/Marco.Pms.Services/Service/StartupDataSeeder.cs index e84a0ff..a3e04f9 100644 --- a/Marco.Pms.Services/Service/StartupDataSeeder.cs +++ b/Marco.Pms.Services/Service/StartupDataSeeder.cs @@ -1,6 +1,7 @@ using Marco.Pms.DataAccess.Data; using Marco.Pms.Model.Employees; using Marco.Pms.Model.Entitlements; +using Marco.Pms.Model.Roles; using Microsoft.AspNetCore.Identity; using Microsoft.EntityFrameworkCore; -- 2.43.0 From d95f61cba960a4054e77482ca6ea4c70e28505c7 Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Sat, 10 May 2025 13:39:33 +0530 Subject: [PATCH 2/9] Fixed error happeds when Changing file strucutre in model project --- .../Mapper/ApplicationRoleMapper.cs | 3 +- .../Controllers/ProjectController.cs | 16 +- .../Controllers/RolesController.cs | 149 ++++++++++++++++-- 3 files changed, 153 insertions(+), 15 deletions(-) diff --git a/Marco.Pms.Model/Mapper/ApplicationRoleMapper.cs b/Marco.Pms.Model/Mapper/ApplicationRoleMapper.cs index 45228e2..86b96d8 100644 --- a/Marco.Pms.Model/Mapper/ApplicationRoleMapper.cs +++ b/Marco.Pms.Model/Mapper/ApplicationRoleMapper.cs @@ -13,6 +13,7 @@ namespace Marco.Pms.Model.Mapper { Id = model.Id, Role = model.Role, + IsSystem = model.IsSystem, Description = model.Description, //FeaturePermission = model.FeaturePermissions }; @@ -73,4 +74,4 @@ namespace Marco.Pms.Model.Mapper } } -} +} \ No newline at end of file diff --git a/Marco.Pms.Services/Controllers/ProjectController.cs b/Marco.Pms.Services/Controllers/ProjectController.cs index 1aa5096..a0fb7ff 100644 --- a/Marco.Pms.Services/Controllers/ProjectController.cs +++ b/Marco.Pms.Services/Controllers/ProjectController.cs @@ -493,6 +493,7 @@ namespace MarcoBMS.Services.Controllers { Guid tenantId = GetTenantId(); List workItems = new List { }; + string responseMessage = ""; if (workItemDot != null) { foreach (var item in workItemDot) @@ -504,12 +505,14 @@ namespace MarcoBMS.Services.Controllers //update _context.WorkItems.Update(workItem); await _context.SaveChangesAsync(); + responseMessage = "Task Added Successfully"; } else { //create _context.WorkItems.Add(workItem); await _context.SaveChangesAsync(); + responseMessage = "Task Updated Successfully"; } var result = new WorkItemVM { @@ -519,7 +522,7 @@ namespace MarcoBMS.Services.Controllers workItems.Add(result); } var activity = await _context.ActivityMasters.ToListAsync(); - return Ok(ApiResponse.SuccessResponse(workItems, "Data saved successfully.", 200)); + return Ok(ApiResponse.SuccessResponse(workItems, responseMessage, 200)); } return BadRequest(ApiResponse.ErrorResponse("Invalid details.", "Work Item Details are not valid.", 400)); @@ -569,6 +572,7 @@ namespace MarcoBMS.Services.Controllers { Guid tenantId = GetTenantId(); var responseData = new InfraVM { }; + string responseMessage = ""; if (infraDots != null) { foreach (var item in infraDots) @@ -585,6 +589,7 @@ namespace MarcoBMS.Services.Controllers _context.Buildings.Add(building); await _context.SaveChangesAsync(); responseData.building = building; + responseMessage = "Buliding Added Successfully"; } else { @@ -592,6 +597,7 @@ namespace MarcoBMS.Services.Controllers _context.Buildings.Update(building); await _context.SaveChangesAsync(); responseData.building = building; + responseMessage = "Buliding Updated Successfully"; } } @@ -606,6 +612,7 @@ namespace MarcoBMS.Services.Controllers _context.Floor.Add(floor); await _context.SaveChangesAsync(); responseData.floor = floor; + responseMessage = "Floor Added Successfully"; } else { @@ -613,6 +620,7 @@ namespace MarcoBMS.Services.Controllers _context.Floor.Update(floor); await _context.SaveChangesAsync(); responseData.floor = floor; + responseMessage = "Floor Updated Successfully"; } } if (item.WorkArea != null) @@ -626,6 +634,7 @@ namespace MarcoBMS.Services.Controllers _context.WorkAreas.Add(workArea); await _context.SaveChangesAsync(); responseData.workArea = workArea; + responseMessage = "Work Area Added Successfully"; } else { @@ -633,14 +642,15 @@ namespace MarcoBMS.Services.Controllers _context.WorkAreas.Update(workArea); await _context.SaveChangesAsync(); responseData.workArea = workArea; + responseMessage = "Work Area Updated Successfully"; } } } - return Ok(ApiResponse.SuccessResponse(responseData, "Data saved successfully.", 200)); + return Ok(ApiResponse.SuccessResponse(responseData, responseMessage, 200)); } return BadRequest(ApiResponse.ErrorResponse("Invalid details.", "Infra Details are not valid.", 400)); } } -} +} \ No newline at end of file diff --git a/Marco.Pms.Services/Controllers/RolesController.cs b/Marco.Pms.Services/Controllers/RolesController.cs index 80c49d3..651900b 100644 --- a/Marco.Pms.Services/Controllers/RolesController.cs +++ b/Marco.Pms.Services/Controllers/RolesController.cs @@ -1,6 +1,8 @@ using System.Data; using Marco.Pms.DataAccess.Data; +using Marco.Pms.Model.Dtos.Employees; using Marco.Pms.Model.Dtos.Roles; +using Marco.Pms.Model.Employees; using Marco.Pms.Model.Entitlements; using Marco.Pms.Model.Mapper; using Marco.Pms.Model.Roles; @@ -9,6 +11,7 @@ using Marco.Pms.Model.ViewModels; using Marco.Pms.Model.ViewModels.Master; using Marco.Pms.Model.ViewModels.Roles; using MarcoBMS.Services.Helpers; +using MarcoBMS.Services.Service; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; @@ -24,16 +27,16 @@ namespace MarcoBMS.Services.Controllers private readonly ApplicationDbContext _context; private readonly RolesHelper _rolesHelper; private readonly UserHelper _userHelper; - - private readonly UserManager _userManager; + private readonly ILoggingService _logger; - public RolesController(UserManager userManager, ApplicationDbContext context, RolesHelper rolesHelper, UserHelper userHelper) + public RolesController(UserManager userManager, ApplicationDbContext context, RolesHelper rolesHelper, UserHelper userHelper, ILoggingService logger) { _context = context; _userManager = userManager; _rolesHelper = rolesHelper; _userHelper = userHelper; + _logger = logger; } private Guid GetTenantId() @@ -102,7 +105,30 @@ namespace MarcoBMS.Services.Controllers return BadRequest(ApiResponse.ErrorResponse(ex.Message, ex, 400)); } } - + [HttpDelete("jobrole/{id}")] + public async Task DeleteJobRole(Guid id) + { + Guid tenantId = GetTenantId(); + var LoggedEmployee = await _userHelper.GetCurrentEmployeeAsync(); + var jobRole = await _context.JobRoles.FirstOrDefaultAsync(r => r.Id == id && r.TenantId == tenantId); + if (jobRole != null) + { + var employee = await _context.Employees.Where(e => e.JobRoleId == jobRole.Id).ToListAsync(); + if (employee.Any()) + { + _logger.LogWarning("Employee with ID {LoggedEmployeeId} tries to delete the job role with ID {JobRoleId} which is assigned to one or more employees", LoggedEmployee.Id, jobRole.Id); + return BadRequest(ApiResponse.ErrorResponse("Cannot delete the job role because it is assigned to one or more employees.", "Cannot delete the job role because it is assigned to one or more employees.", 400)); + } + _context.JobRoles.Remove(jobRole); + await _context.SaveChangesAsync(); + _logger.LogInfo("Employee with ID {LoggedEmployeeId} deleted the job role with ID {JobRoleId}", LoggedEmployee.Id, jobRole.Id); + } + else + { + _logger.LogWarning("Job role with ID {JobRoleId} not found in database", id); + } + return Ok(ApiResponse.SuccessResponse(new { }, "Job role deleted successfully", 200)); + } [HttpGet] public async Task GetAllRoles() @@ -140,6 +166,7 @@ namespace MarcoBMS.Services.Controllers { Id = item.Id, Role = item.Role, + IsSystem = item.IsSystem, Description = item.Description, FeaturePermission = [] }; @@ -228,17 +255,21 @@ namespace MarcoBMS.Services.Controllers try { Guid TenantId = GetTenantId(); - + var LoggedEmployee = await _userHelper.GetCurrentEmployeeAsync(); + var existingRole = await _context.ApplicationRoles.AsNoTracking().FirstOrDefaultAsync(r => r.Id == id); + if (existingRole != null && existingRole.IsSystem) + { + _logger.LogWarning("Employee with ID {LoggedEmployeeId} tries to update System-defined application roles {AppcationRoleId}", LoggedEmployee.Id, existingRole.Id); + return BadRequest(ApiResponse.ErrorResponse("System-defined roles cannot be updated", "System-defined roles cannot be updated", 400)); + } ApplicationRole role = updateRoleDto.ToApplicationRoleFromUpdateDto(TenantId); if (role.TenantId != TenantId) return Unauthorized(ApiResponse.ErrorResponse("You don't have any authority to update role", "You don't have any authority to update role", 401)); - - var projectModel = _context.ApplicationRoles.Update(role); - - if (projectModel == null) + if (existingRole != null) { - return NotFound(ApiResponse.ErrorResponse("Project not found", "Project not found", 404)); + _context.ApplicationRoles.Update(role); + await _context.SaveChangesAsync(); } bool modified = false; @@ -268,7 +299,13 @@ namespace MarcoBMS.Services.Controllers } catch (Exception ex) { - return BadRequest(ApiResponse.ErrorResponse(ex.Message, ex, 400)); + var response = new + { + message = ex.Message, + detail = ex.StackTrace, + statusCode = StatusCodes.Status500InternalServerError + }; + return BadRequest(ApiResponse.ErrorResponse(ex.Message, response, 400)); } } @@ -306,11 +343,101 @@ namespace MarcoBMS.Services.Controllers { Id = role.Id, Role = role.Role, + IsSystem = role.IsSystem, FeaturePermission = featurePermissions }; return Ok(ApiResponse.SuccessResponse(vm, "Roles Perimssions fetched successfully.", 200)); } + [HttpDelete("{id}")] + public async Task DeleteApplicationRole(Guid id) + { + Guid tenantId = GetTenantId(); + var LoggedEmployee = await _userHelper.GetCurrentEmployeeAsync(); + var role = await _context.ApplicationRoles.AsNoTracking().FirstOrDefaultAsync(r => r.Id == id && r.TenantId == tenantId); + if (role != null) + { + if (role.IsSystem) + { + _logger.LogInfo("Employee with ID {LoggedEmployeeId} tries to delete system-defined application role with ID {ApplicationRoleId}", LoggedEmployee.Id, role.Id); + return BadRequest(ApiResponse.ErrorResponse("This role cannot be deleted because it is system-defined.", "This role cannot be deleted because it is system-defined.", 400)); + } + var employeeRoleMapping = await _context.EmployeeRoleMappings.Where(erm => erm.RoleId == role.Id).ToListAsync(); + if (employeeRoleMapping.Count != 0) + { + _logger.LogInfo("Employee with ID {LoggedEmployeeId} tries to delete application role with ID {ApplicationRoleId} with is assigned to an employee", LoggedEmployee.Id, role.Id); + return BadRequest(ApiResponse.ErrorResponse("This role cannot be deleted because it is currently assigned to employees.", "This role cannot be deleted because it is currently assigned to employees.", 400)); + } + _context.ApplicationRoles.Remove(role); + var rolePermissionMapping = await _context.RolePermissionMappings.Where(r => r.ApplicationRoleId == role.Id).ToListAsync(); + if (rolePermissionMapping.Count != 0) + { + _context.RolePermissionMappings.RemoveRange(rolePermissionMapping); + _logger.LogInfo("All permissions assigned to the application role with ID {ApplicationRoleId} have been removed.", role.Id); + } + await _context.SaveChangesAsync(); + _logger.LogInfo("Employee with ID {LoggedEmployeeId} deleted application role with ID {ApplicationRoleId}", LoggedEmployee.Id, role.Id); + } + else + { + _logger.LogWarning("Application role with ID {ApplicationRoleId} not found in database", id); + } + return Ok(ApiResponse.SuccessResponse(new { }, "Application role is deleted successfully", 200)); + } + + + [HttpPost] + [Route("assign-roles")] + public async Task ManageRoles([FromBody] List employeeRoleDots) + { + if (!ModelState.IsValid) + { + var errors = ModelState.Values + .SelectMany(v => v.Errors) + .Select(e => e.ErrorMessage) + .ToList(); + return BadRequest(ApiResponse.ErrorResponse("Invalid data", errors, 400)); + } + var employeesIds = employeeRoleDots.Select(e => e.EmployeeId).Distinct().ToList(); + var LoggedEmployee = await _userHelper.GetCurrentEmployeeAsync(); + var employees = await _context.Employees.Where(e => employeesIds.Contains(e.Id)).ToListAsync(); + + Guid TenantId = GetTenantId(); + try + { + foreach (EmployeeRoleDot role in employeeRoleDots) + { + var employee = employees.Find(e => e.Id == role.EmployeeId && e.IsSystem); + if (employee != null) + { + _logger.LogWarning("Employee with ID {LoggedEmployeeId} tries to assign or remove the application role to System-defined employee with ID {EmployeeId}", LoggedEmployee.Id, employee.Id); + return BadRequest(ApiResponse.ErrorResponse("System-defined employee cannot have application roles assigned or removed.", "System-defined employee cannot have application roles assigned or removed.", 400)); + } + EmployeeRoleMapping mapping = role.ToEmployeeRoleMappingFromEmployeeRoleDot(TenantId); + + var existingItem = await _context.EmployeeRoleMappings.AsNoTracking().SingleOrDefaultAsync(c => c.Id == mapping.Id); + + if (existingItem == null) + { + if (role.IsEnabled == true) + { + _context.EmployeeRoleMappings.Add(mapping); + } + } + else if (role.IsEnabled == false) + { + _context.EmployeeRoleMappings.Remove(existingItem); + } + + } + await _context.SaveChangesAsync(); + } + catch (Exception ex) + { + return BadRequest(ApiResponse.ErrorResponse(ex.Message, ex, 400)); + } + return Ok(ApiResponse.SuccessResponse("success", "Roles modified.", 200)); + } } } -- 2.43.0 From 7a3d0c8c607d25be230e72d6e714aae42c9070ca Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Sat, 10 May 2025 15:04:39 +0530 Subject: [PATCH 3/9] created model, DTO,(Data Transfer Object) VM(View Model) for Work Category master table and added migration for adding table to database and seeding system-defined categoryies in table for first tenant --- .../Data/ApplicationDbContext.cs | 31 +- ...dded_WorkCategory_Master_Table.Designer.cs | 2500 +++++++++++++++++ ...0074238_Added_WorkCategory_Master_Table.cs | 63 + .../ApplicationDbContextModelSnapshot.cs | 986 ++++--- .../Dtos/Master/WorkCategoryMasterDto.cs | 9 + Marco.Pms.Model/Mapper/MasterMapper.cs | 31 + Marco.Pms.Model/Master/WorkCategoryMaster.cs | 12 + .../ViewModels/Master/WorkCategoryMasterVM.cs | 11 + 8 files changed, 3181 insertions(+), 462 deletions(-) create mode 100644 Marco.Pms.DataAccess/Migrations/20250510074238_Added_WorkCategory_Master_Table.Designer.cs create mode 100644 Marco.Pms.DataAccess/Migrations/20250510074238_Added_WorkCategory_Master_Table.cs create mode 100644 Marco.Pms.Model/Dtos/Master/WorkCategoryMasterDto.cs create mode 100644 Marco.Pms.Model/Mapper/MasterMapper.cs create mode 100644 Marco.Pms.Model/Master/WorkCategoryMaster.cs create mode 100644 Marco.Pms.Model/ViewModels/Master/WorkCategoryMasterVM.cs diff --git a/Marco.Pms.DataAccess/Data/ApplicationDbContext.cs b/Marco.Pms.DataAccess/Data/ApplicationDbContext.cs index 333dafb..817afd2 100644 --- a/Marco.Pms.DataAccess/Data/ApplicationDbContext.cs +++ b/Marco.Pms.DataAccess/Data/ApplicationDbContext.cs @@ -6,8 +6,9 @@ using Marco.Pms.Model.DocumentManager; using Marco.Pms.Model.Employees; using Marco.Pms.Model.Entitlements; using Marco.Pms.Model.Forum; -using Marco.Pms.Model.Industries; +using Marco.Pms.Model.Master; using Marco.Pms.Model.Projects; +using Marco.Pms.Model.Roles; using Marco.Pms.Model.Utilities; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Identity; @@ -87,6 +88,7 @@ namespace Marco.Pms.DataAccess.Data public DbSet TicketTagMasters { get; set; } public DbSet Documents { get; set; } public DbSet TicketTags { get; set; } + public DbSet WorkCategoryMasters { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) @@ -402,6 +404,33 @@ namespace Marco.Pms.DataAccess.Data TenantId = Guid.Parse("b3466e83-7e11-464c-b93a-daf047838b26") } ); + modelBuilder.Entity().HasData( + new WorkCategoryMaster + { + Id = new Guid("86bb2cc8-f6b5-4fdd-bbee-c389c713a44b"), + Name = "Fresh Work", + Description = "Created new task in a professional or creative context", + IsSystem = true, + TenantId = Guid.Parse("b3466e83-7e11-464c-b93a-daf047838b26") + }, + new WorkCategoryMaster + { + Id = new Guid("9ebfa19c-53b9-481b-b863-c25d2f843201"), + Name = "Rework", + Description = "Revising, modifying, or correcting a task to improve its quality or fix issues", + IsSystem = true, + TenantId = Guid.Parse("b3466e83-7e11-464c-b93a-daf047838b26") + }, + new WorkCategoryMaster + { + Id = new Guid("11a79929-1d07-42dc-9e98-82d0d2f4a240"), + Name = "Quality Issue", + Description = "Any defect, deviation, or non-conformance in a task that fails to meet established standards or customer expectations.", + IsSystem = true, + TenantId = Guid.Parse("b3466e83-7e11-464c-b93a-daf047838b26") + } + ); + } private static void ManageApplicationStructure(ModelBuilder modelBuilder) diff --git a/Marco.Pms.DataAccess/Migrations/20250510074238_Added_WorkCategory_Master_Table.Designer.cs b/Marco.Pms.DataAccess/Migrations/20250510074238_Added_WorkCategory_Master_Table.Designer.cs new file mode 100644 index 0000000..5a16b4c --- /dev/null +++ b/Marco.Pms.DataAccess/Migrations/20250510074238_Added_WorkCategory_Master_Table.Designer.cs @@ -0,0 +1,2500 @@ +// +using System; +using Marco.Pms.DataAccess.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Marco.Pms.DataAccess.Migrations +{ + [DbContext(typeof(ApplicationDbContext))] + [Migration("20250510074238_Added_WorkCategory_Master_Table")] + partial class Added_WorkCategory_Master_Table + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.12") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + //MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); + + modelBuilder.Entity("Marco.Pms.Model.Activities.TaskAllocation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("AssignedBy") + .HasColumnType("char(36)"); + + b.Property("AssignmentDate") + .HasColumnType("datetime(6)"); + + b.Property("CompletedTask") + .HasColumnType("double"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("PlannedTask") + .HasColumnType("double"); + + b.Property("ReportedDate") + .HasColumnType("datetime(6)"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.Property("WorkItemId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("AssignedBy"); + + b.HasIndex("TenantId"); + + b.HasIndex("WorkItemId"); + + b.ToTable("TaskAllocations"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Activities.TaskComment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Comment") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("CommentDate") + .HasColumnType("datetime(6)"); + + b.Property("CommentedBy") + .HasColumnType("char(36)"); + + b.Property("TaskAllocationId") + .HasColumnType("char(36)"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("CommentedBy"); + + b.HasIndex("TaskAllocationId"); + + b.HasIndex("TenantId"); + + b.ToTable("TaskComments"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Activities.TaskMembers", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("EmployeeId") + .HasColumnType("char(36)"); + + b.Property("TaskAllocationId") + .HasColumnType("char(36)"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("TaskAllocationId"); + + b.HasIndex("TenantId"); + + b.ToTable("TaskMembers"); + }); + + modelBuilder.Entity("Marco.Pms.Model.AttendanceModule.Attendance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Activity") + .HasColumnType("int"); + + b.Property("ApprovedBy") + .HasColumnType("char(36)"); + + b.Property("AttendanceDate") + .HasColumnType("datetime(6)"); + + b.Property("Comment") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Date") + .HasColumnType("datetime(6)"); + + b.Property("EmployeeID") + .HasColumnType("char(36)"); + + b.Property("InTime") + .HasColumnType("datetime(6)"); + + b.Property("IsApproved") + .HasColumnType("tinyint(1)"); + + b.Property("OutTime") + .HasColumnType("datetime(6)"); + + b.Property("ProjectID") + .HasColumnType("char(36)"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("EmployeeID"); + + b.HasIndex("TenantId"); + + b.ToTable("Attendes"); + }); + + modelBuilder.Entity("Marco.Pms.Model.AttendanceModule.AttendanceLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Activity") + .HasColumnType("int"); + + b.Property("ActivityTime") + .HasColumnType("datetime(6)"); + + b.Property("AttendanceId") + .HasColumnType("char(36)"); + + b.Property("Comment") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("DocumentId") + .HasColumnType("char(36)"); + + b.Property("EmployeeID") + .HasColumnType("char(36)"); + + b.Property("Latitude") + .HasColumnType("longtext"); + + b.Property("Longitude") + .HasColumnType("longtext"); + + b.Property("Photo") + .HasColumnType("longblob"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.Property("UpdatedBy") + .HasColumnType("char(36)"); + + b.Property("UpdatedOn") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AttendanceId"); + + b.HasIndex("DocumentId"); + + b.HasIndex("EmployeeID"); + + b.HasIndex("TenantId"); + + b.HasIndex("UpdatedBy"); + + b.ToTable("AttendanceLogs"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Authentication.RefreshToken", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)"); + + b.Property("ExpiryDate") + .HasColumnType("datetime(6)"); + + b.Property("IsRevoked") + .HasColumnType("tinyint(1)"); + + b.Property("IsUsed") + .HasColumnType("tinyint(1)"); + + b.Property("RevokedAt") + .HasColumnType("datetime(6)"); + + b.Property("Token") + .HasColumnType("longtext"); + + b.Property("UserId") + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("RefreshTokens"); + }); + + modelBuilder.Entity("Marco.Pms.Model.DocumentManager.Document", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Base64Data") + .HasColumnType("longtext"); + + b.Property("BatchId") + .HasColumnType("char(36)"); + + b.Property("ContentType") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("FileName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("FileSize") + .HasColumnType("bigint"); + + b.Property("S3Key") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.Property("ThumbS3Key") + .HasColumnType("longtext"); + + b.Property("UploadedAt") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("TenantId"); + + b.ToTable("Documents"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Employees.Employee", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("AadharNumber") + .HasColumnType("longtext"); + + b.Property("ApplicationUserId") + .HasColumnType("varchar(255)"); + + b.Property("BirthDate") + .HasColumnType("datetime(6)"); + + b.Property("CurrentAddress") + .HasColumnType("longtext"); + + b.Property("Email") + .HasColumnType("longtext"); + + b.Property("EmergencyContactPerson") + .HasColumnType("longtext"); + + b.Property("EmergencyPhoneNumber") + .HasColumnType("longtext"); + + b.Property("FirstName") + .HasColumnType("longtext"); + + b.Property("Gender") + .HasColumnType("longtext"); + + b.Property("IsActive") + .HasColumnType("tinyint(1)"); + + b.Property("IsSystem") + .HasColumnType("tinyint(1)"); + + b.Property("JobRoleId") + .HasColumnType("char(36)"); + + b.Property("JoiningDate") + .HasColumnType("datetime(6)"); + + b.Property("LastName") + .HasColumnType("longtext"); + + b.Property("MiddleName") + .HasColumnType("longtext"); + + b.Property("PanNumber") + .HasColumnType("longtext"); + + b.Property("PermanentAddress") + .HasColumnType("longtext"); + + b.Property("PhoneNumber") + .HasColumnType("longtext"); + + b.Property("Photo") + .HasColumnType("longblob"); + + b.Property("RoleId") + .HasColumnType("char(36)"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationUserId"); + + b.HasIndex("JobRoleId"); + + b.HasIndex("TenantId"); + + b.ToTable("Employees"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Employees.EmployeeRoleMapping", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("EmployeeId") + .HasColumnType("char(36)"); + + b.Property("IsEnabled") + .HasColumnType("tinyint(1)"); + + b.Property("RoleId") + .HasColumnType("char(36)"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("RoleId"); + + b.HasIndex("TenantId"); + + b.ToTable("EmployeeRoleMappings"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Employees.WorkShift", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("EndTime") + .HasColumnType("time(6)"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("StartTime") + .HasColumnType("time(6)"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("TenantId"); + + b.ToTable("WorkShifts"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Entitlements.ActivityCheckList", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ActivityId") + .HasColumnType("char(36)"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("IsChecked") + .HasColumnType("tinyint(1)"); + + b.Property("IsMandatory") + .HasColumnType("tinyint(1)"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.ToTable("ActivityCheckLists"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Entitlements.CheckListMappings", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CheckListId") + .HasColumnType("char(36)"); + + b.Property("TaskAllocationId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.ToTable("CheckListMappings"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Entitlements.FeaturePermission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("FeatureId") + .HasColumnType("char(36)"); + + b.Property("IsEnabled") + .HasColumnType("tinyint(1)"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.HasIndex("FeatureId"); + + b.ToTable("FeaturePermissions"); + + b.HasData( + new + { + Id = new Guid("6ea44136-987e-44ba-9e5d-1cf8f5837ebc"), + Description = "", + FeatureId = new Guid("53176ebf-c75d-42e5-839f-4508ffac3def"), + IsEnabled = true, + Name = "View Project" + }, + new + { + Id = new Guid("172fc9b6-755b-4f62-ab26-55c34a330614"), + Description = "", + FeatureId = new Guid("53176ebf-c75d-42e5-839f-4508ffac3def"), + IsEnabled = true, + Name = "Manage Project" + }, + new + { + Id = new Guid("b94802ce-0689-4643-9e1d-11c86950c35b"), + Description = "", + FeatureId = new Guid("53176ebf-c75d-42e5-839f-4508ffac3def"), + IsEnabled = true, + Name = "Manage Team" + }, + new + { + Id = new Guid("c7b68e33-72f0-474f-bd96-77636427ecc8"), + Description = "", + FeatureId = new Guid("9666de86-d7c7-4d3d-acaa-fcd6d6b81f3c"), + IsEnabled = true, + Name = "View Project Infra" + }, + new + { + Id = new Guid("f2aee20a-b754-4537-8166-f9507b44585b"), + Description = "", + FeatureId = new Guid("9666de86-d7c7-4d3d-acaa-fcd6d6b81f3c"), + IsEnabled = true, + Name = "Manage Project Infra" + }, + new + { + Id = new Guid("9fcc5f87-25e3-4846-90ac-67a71ab92e3c"), + Description = "", + FeatureId = new Guid("9d4b5489-2079-40b9-bd77-6e1bf90bc19f"), + IsEnabled = true, + Name = "View Task" + }, + new + { + Id = new Guid("08752f33-3b29-4816-b76b-ea8a968ed3c5"), + Description = "", + FeatureId = new Guid("9d4b5489-2079-40b9-bd77-6e1bf90bc19f"), + IsEnabled = true, + Name = "Manage Task" + }, + new + { + Id = new Guid("d135a4b0-4f9a-4903-ab9c-4843839ebdee"), + Description = "", + FeatureId = new Guid("39e66f81-efc6-446c-95bd-46bff6cfb606"), + IsEnabled = true, + Name = "Assign Task and Report Progress" + }, + new + { + Id = new Guid("ed99ecd4-1bed-42e1-b7b3-d64c04493823"), + Description = "", + FeatureId = new Guid("39e66f81-efc6-446c-95bd-46bff6cfb606"), + IsEnabled = true, + Name = "Approve Task" + }, + new + { + Id = new Guid("b82d2b7e-0d52-45f3-997b-c008ea460e7f"), + Description = "", + FeatureId = new Guid("81ab8a87-8ccd-4015-a917-0627cee6a100"), + IsEnabled = true, + Name = "View Employee" + }, + new + { + Id = new Guid("a97d366a-c2bb-448d-be93-402bd2324566"), + Description = "", + FeatureId = new Guid("81ab8a87-8ccd-4015-a917-0627cee6a100"), + IsEnabled = true, + Name = "Manage Employee" + }, + new + { + Id = new Guid("fbd213e0-0250-46f1-9f5f-4b2a1e6e76a3"), + Description = "", + FeatureId = new Guid("81ab8a87-8ccd-4015-a917-0627cee6a100"), + IsEnabled = true, + Name = "Assign To Project" + }, + new + { + Id = new Guid("915e6bff-65f6-4e3f-aea8-3fd217d3ea9e"), + Description = "", + FeatureId = new Guid("52c9cf54-1eb2-44d2-81bb-524cf29c0a94"), + IsEnabled = true, + Name = "Perform Attendance " + }, + new + { + Id = new Guid("57802c4a-00aa-4a1f-a048-fd2f70dd44b6"), + Description = "", + FeatureId = new Guid("52c9cf54-1eb2-44d2-81bb-524cf29c0a94"), + IsEnabled = true, + Name = "Regularize Attendance" + }, + new + { + Id = new Guid("5ffbafe0-7ab0-48b1-bb50-c1bf76b65f9d"), + Description = "", + FeatureId = new Guid("be3b3afc-6ccf-4566-b9b6-aafcb65546be"), + IsEnabled = true, + Name = "View Masters" + }, + new + { + Id = new Guid("588a8824-f924-4955-82d8-fc51956cf323"), + Description = "", + FeatureId = new Guid("be3b3afc-6ccf-4566-b9b6-aafcb65546be"), + IsEnabled = true, + Name = "Manage Masters" + }, + new + { + Id = new Guid("cb8ec407-46d4-4467-930c-69127cda6dec"), + Description = "", + FeatureId = new Guid("660131a4-788c-4739-a082-cbbf7879cbf2"), + IsEnabled = true, + Name = "View Masters" + }, + new + { + Id = new Guid("6b1a6d97-a951-4de5-9b19-709bac7c4f18"), + Description = "", + FeatureId = new Guid("660131a4-788c-4739-a082-cbbf7879cbf2"), + IsEnabled = true, + Name = "Manage Masters" + }); + }); + + modelBuilder.Entity("Marco.Pms.Model.Entitlements.RolePermissionMappings", b => + { + b.Property("ApplicationRoleId") + .HasColumnType("char(36)"); + + b.Property("FeaturePermissionId") + .HasColumnType("char(36)"); + + b.HasKey("ApplicationRoleId", "FeaturePermissionId"); + + b.HasIndex("FeaturePermissionId"); + + b.ToTable("RolePermissionMappings"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Entitlements.Tenant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ContactName") + .HasColumnType("longtext"); + + b.Property("ContactNumber") + .HasColumnType("longtext"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("DomainName") + .HasColumnType("longtext"); + + b.Property("IndustryId") + .HasColumnType("char(36)"); + + b.Property("IsActive") + .HasColumnType("tinyint(1)"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("OnBoardingDate") + .HasColumnType("datetime(6)"); + + b.Property("OragnizationSize") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.HasIndex("IndustryId"); + + b.ToTable("Tenants"); + + b.HasData( + new + { + Id = new Guid("b3466e83-7e11-464c-b93a-daf047838b26"), + ContactName = "Admin", + ContactNumber = "123456789", + Description = "", + DomainName = "www.marcobms.org", + IndustryId = new Guid("15436ee3-a650-469e-bfc2-59993f7514bb"), + IsActive = true, + Name = "MarcoBMS", + OnBoardingDate = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + OragnizationSize = "100-200" + }); + }); + + modelBuilder.Entity("Marco.Pms.Model.Forum.TicketAttachment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CommentId") + .HasColumnType("char(36)"); + + b.Property("FileId") + .HasColumnType("char(36)"); + + b.Property("FileName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("TicketId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("CommentId"); + + b.HasIndex("TicketId"); + + b.ToTable("TicketAttachments"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Forum.TicketComment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("AuthorId") + .HasColumnType("char(36)"); + + b.Property("MessageText") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("ParentMessageId") + .HasColumnType("char(36)"); + + b.Property("SentAt") + .HasColumnType("datetime(6)"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.Property("TicketId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("TenantId"); + + b.ToTable("TicketComments"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Forum.TicketForum", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)"); + + b.Property("CreatedById") + .HasColumnType("char(36)"); + + b.Property("Description") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("LinkedActivityId") + .HasColumnType("char(36)"); + + b.Property("LinkedProjectId") + .HasColumnType("char(36)"); + + b.Property("PriorityId") + .HasColumnType("char(36)"); + + b.Property("StatusId") + .HasColumnType("char(36)"); + + b.Property("Subject") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.Property("TypeId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("PriorityId"); + + b.HasIndex("StatusId"); + + b.HasIndex("TenantId"); + + b.HasIndex("TypeId"); + + b.ToTable("Tickets"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Forum.TicketTag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("TagId") + .HasColumnType("char(36)"); + + b.Property("TicketId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("TagId"); + + b.HasIndex("TicketId"); + + b.ToTable("TicketTags"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Forum.TicketTypeMaster", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("IsDefault") + .HasColumnType("tinyint(1)"); + + b.Property("Name") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.ToTable("TicketTypeMasters"); + + b.HasData( + new + { + Id = new Guid("c74e5480-2b71-483c-8f4a-1a9c69c32603"), + Description = "An identified problem that affects the performance, reliability, or standards of a product or service", + IsDefault = true, + Name = "Quality Issue", + TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") + }, + new + { + Id = new Guid("d1f55eab-9898-4e46-9f03-b263e33e5d38"), + Description = "A support service that assists users with technical issues, requests, or inquiries.", + IsDefault = true, + Name = "Help Desk", + TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") + }); + }); + + modelBuilder.Entity("Marco.Pms.Model.Master.ActivityMaster", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ActivityName") + .HasColumnType("longtext"); + + b.Property("IsActive") + .HasColumnType("tinyint(1)"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.Property("UnitOfMeasurement") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.HasIndex("TenantId"); + + b.ToTable("ActivityMasters"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Master.Feature", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("IsActive") + .HasColumnType("tinyint(1)"); + + b.Property("ModuleId") + .HasColumnType("char(36)"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.HasIndex("ModuleId"); + + b.ToTable("Features"); + + b.HasData( + new + { + Id = new Guid("53176ebf-c75d-42e5-839f-4508ffac3def"), + Description = "Manage Project", + IsActive = true, + ModuleId = new Guid("bf59fd88-b57a-4d67-bf01-3780f385896b"), + Name = "Manage Project" + }, + new + { + Id = new Guid("9666de86-d7c7-4d3d-acaa-fcd6d6b81f3c"), + Description = "Manage Infra", + IsActive = true, + ModuleId = new Guid("bf59fd88-b57a-4d67-bf01-3780f385896b"), + Name = "Manage Infra" + }, + new + { + Id = new Guid("9d4b5489-2079-40b9-bd77-6e1bf90bc19f"), + Description = "Manage Tasks", + IsActive = true, + ModuleId = new Guid("bf59fd88-b57a-4d67-bf01-3780f385896b"), + Name = "Manage Tasks" + }, + new + { + Id = new Guid("39e66f81-efc6-446c-95bd-46bff6cfb606"), + Description = "Assign and Update Tasks Progress", + IsActive = true, + ModuleId = new Guid("bf59fd88-b57a-4d67-bf01-3780f385896b"), + Name = "Assign and Update Tasks Progress" + }, + new + { + Id = new Guid("81ab8a87-8ccd-4015-a917-0627cee6a100"), + Description = "Manage Employee", + IsActive = true, + ModuleId = new Guid("2a231490-bcb1-4bdd-91f1-f25fb7f25b23"), + Name = "Manage Employee" + }, + new + { + Id = new Guid("52c9cf54-1eb2-44d2-81bb-524cf29c0a94"), + Description = "Attendance", + IsActive = true, + ModuleId = new Guid("2a231490-bcb1-4bdd-91f1-f25fb7f25b23"), + Name = "Attendance" + }, + new + { + Id = new Guid("be3b3afc-6ccf-4566-b9b6-aafcb65546be"), + Description = "Global Masters", + IsActive = true, + ModuleId = new Guid("c43db8c7-ab73-47f4-9d3b-f83e81357924"), + Name = "Global Masters" + }, + new + { + Id = new Guid("660131a4-788c-4739-a082-cbbf7879cbf2"), + Description = "Tenant Masters", + IsActive = true, + ModuleId = new Guid("c43db8c7-ab73-47f4-9d3b-f83e81357924"), + Name = "Tenant Masters" + }); + }); + + modelBuilder.Entity("Marco.Pms.Model.Master.Industry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("Industries"); + + b.HasData( + new + { + Id = new Guid("15436ee3-a650-469e-bfc2-59993f7514bb"), + Name = "Information Technology (IT) Services" + }, + new + { + Id = new Guid("0a63e657-2c5f-49b5-854b-42c978293154"), + Name = "Manufacturing & Production" + }, + new + { + Id = new Guid("bdc61e3b-69ea-4394-bab6-079ec135b5bd"), + Name = "Energy & Resources" + }, + new + { + Id = new Guid("5ca200ac-00d7-415e-a410-b948e27ac9d2"), + Name = "Finance & Professional Services" + }, + new + { + Id = new Guid("d5621700-cd87-441f-8cdb-6051ddfc83b4"), + Name = "Hospitals and Healthcare Services" + }, + new + { + Id = new Guid("23608891-657e-40f0-bbd4-2b0a2ec1a76f"), + Name = "Social Services" + }, + new + { + Id = new Guid("a493f4e3-16b1-4411-be3c-6bf2987a3168"), + Name = "Retail & Consumer Services" + }, + new + { + Id = new Guid("e9d8ce92-9371-4ed9-9831-83c07f78edec"), + Name = "Transportation & Logistics" + }, + new + { + Id = new Guid("8a0d6134-2dbe-4e0a-b250-ff34cb7b9df0"), + Name = "Education & Training" + }); + }); + + modelBuilder.Entity("Marco.Pms.Model.Master.Module", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("Key") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Name") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("Modules"); + + b.HasData( + new + { + Id = new Guid("bf59fd88-b57a-4d67-bf01-3780f385896b"), + Description = "Project Module", + Key = "b04da7e9-0406-409c-ac7f-b97256e6ea02", + Name = "Project" + }, + new + { + Id = new Guid("2a231490-bcb1-4bdd-91f1-f25fb7f25b23"), + Description = "Employee Module", + Key = "0971c7fb-6ce1-458a-ae3f-8d3205893637", + Name = "Employee" + }, + new + { + Id = new Guid("c43db8c7-ab73-47f4-9d3b-f83e81357924"), + Description = "Masters Module", + Key = "504ec132-e6a9-422f-8f85-050602cfce05", + Name = "Masters" + }); + }); + + modelBuilder.Entity("Marco.Pms.Model.Master.StatusMaster", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Status") + .HasColumnType("longtext"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("TenantId"); + + b.ToTable("StatusMasters"); + + b.HasData( + new + { + Id = new Guid("b74da4c2-d07e-46f2-9919-e75e49b12731"), + Status = "Active", + TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") + }, + new + { + Id = new Guid("603e994b-a27f-4e5d-a251-f3d69b0498ba"), + Status = "In Progress", + TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") + }, + new + { + Id = new Guid("ef1c356e-0fe0-42df-a5d3-8daee355492d"), + Status = "On Hold", + TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") + }, + new + { + Id = new Guid("33deaef9-9af1-4f2a-b443-681ea0d04f81"), + Status = "Completed", + TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") + }); + }); + + modelBuilder.Entity("Marco.Pms.Model.Master.TicketPriorityMaster", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ColorCode") + .HasColumnType("longtext"); + + b.Property("IsDefault") + .HasColumnType("tinyint(1)"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.ToTable("TicketPriorityMasters"); + + b.HasData( + new + { + Id = new Guid("188d29b3-10f3-42d0-9587-1a46ae7a0320"), + ColorCode = "008000", + IsDefault = true, + Level = 1, + Name = "Low", + TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") + }, + new + { + Id = new Guid("0919bc84-9f82-4ecf-98c7-962755dd9a97"), + ColorCode = "FFFF00", + IsDefault = true, + Level = 2, + Name = "Medium", + TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") + }, + new + { + Id = new Guid("a13b7e59-16fd-4665-b5cf-a97399e8445a"), + ColorCode = "#FFA500", + IsDefault = true, + Level = 3, + Name = "High", + TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") + }, + new + { + Id = new Guid("f340fbc3-c9fd-46aa-b063-0093418830e4"), + ColorCode = "#FFA500", + IsDefault = true, + Level = 4, + Name = "Critical", + TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") + }, + new + { + Id = new Guid("44a7b91d-a0dd-45d1-8616-4d2f71e16401"), + ColorCode = "#FF0000", + IsDefault = true, + Level = 5, + Name = "Urgent", + TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") + }); + }); + + modelBuilder.Entity("Marco.Pms.Model.Master.TicketStatusMaster", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ColorCode") + .HasColumnType("longtext"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("IsDefault") + .HasColumnType("tinyint(1)"); + + b.Property("Name") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.ToTable("TicketStatusMasters"); + + b.HasData( + new + { + Id = new Guid("6b0c409b-3e80-4165-8b39-f3fcacb4c797"), + ColorCode = "#FFCC99", + Description = "This is a newly created issue.", + IsDefault = true, + Name = "New", + TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") + }, + new + { + Id = new Guid("6c5ac37d-5b7d-40f3-adec-2dabaa5cca86"), + ColorCode = "#E6FF99", + Description = "Assigned to employee or team of employees", + IsDefault = true, + Name = "Assigned", + TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") + }, + new + { + Id = new Guid("7f96bcd5-0c66-411b-8a1d-9d1a4785194e"), + ColorCode = "#99E6FF", + Description = "These issues are currently in progress", + IsDefault = true, + Name = "In Progress", + TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") + }, + new + { + Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"), + ColorCode = "#6c757d", + Description = "These issues are currently under review", + IsDefault = true, + Name = "In Review", + TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") + }, + new + { + Id = new Guid("8ff85685-a875-4f21-aa95-d99551315fcc"), + ColorCode = "#B399FF", + Description = "The following issues are resolved and closed", + IsDefault = true, + Name = "Done", + TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") + }); + }); + + modelBuilder.Entity("Marco.Pms.Model.Master.TicketTagMaster", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ColorCode") + .HasColumnType("longtext"); + + b.Property("IsDefault") + .HasColumnType("tinyint(1)"); + + b.Property("Name") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.ToTable("TicketTagMasters"); + + b.HasData( + new + { + Id = new Guid("ef6c2a65-f61d-4537-9650-a7ab7f8d98db"), + ColorCode = "#e59866", + IsDefault = true, + Name = "Quality Issue", + TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") + }, + new + { + Id = new Guid("5a168569-8ad7-4422-8db6-51ef25caddeb"), + ColorCode = "#85c1e9", + IsDefault = true, + Name = "Help Desk", + TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") + }); + }); + + modelBuilder.Entity("Marco.Pms.Model.Master.WorkCategoryMaster", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Description") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("IsSystem") + .HasColumnType("tinyint(1)"); + + b.Property("Name") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("TenantId"); + + b.ToTable("WorkCategoryMasters"); + + b.HasData( + new + { + Id = new Guid("86bb2cc8-f6b5-4fdd-bbee-c389c713a44b"), + Description = "Created new task in a professional or creative context", + IsSystem = true, + Name = "Fresh Work", + TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") + }, + new + { + Id = new Guid("9ebfa19c-53b9-481b-b863-c25d2f843201"), + Description = "Revising, modifying, or correcting a task to improve its quality or fix issues", + IsSystem = true, + Name = "Rework", + TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") + }, + new + { + Id = new Guid("11a79929-1d07-42dc-9e98-82d0d2f4a240"), + Description = "Any defect, deviation, or non-conformance in a task that fails to meet established standards or customer expectations.", + IsSystem = true, + Name = "Quality Issue", + TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") + }); + }); + + modelBuilder.Entity("Marco.Pms.Model.Projects.Building", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("Name") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("ProjectId") + .HasColumnType("char(36)"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("TenantId"); + + b.ToTable("Buildings"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Projects.Floor", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("BuildingId") + .HasColumnType("char(36)"); + + b.Property("FloorName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("BuildingId"); + + b.HasIndex("TenantId"); + + b.ToTable("Floor"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Projects.Project", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ContactPerson") + .HasColumnType("longtext"); + + b.Property("EndDate") + .HasColumnType("datetime(6)"); + + b.Property("Name") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("ProjectAddress") + .HasColumnType("longtext"); + + b.Property("ProjectStatusId") + .HasColumnType("char(36)"); + + b.Property("StartDate") + .HasColumnType("datetime(6)"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("ProjectStatusId"); + + b.HasIndex("TenantId"); + + b.ToTable("Projects"); + + b.HasData( + new + { + Id = new Guid("85bf587b-7ca9-4685-b77c-d817f5847e85"), + ContactPerson = "Project 1 Contact Person", + EndDate = new DateTime(2026, 4, 20, 10, 11, 17, 588, DateTimeKind.Unspecified), + Name = "Project 1", + ProjectAddress = "Project 1 Address", + ProjectStatusId = new Guid("b74da4c2-d07e-46f2-9919-e75e49b12731"), + StartDate = new DateTime(2025, 4, 20, 10, 11, 17, 588, DateTimeKind.Unspecified), + TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") + }); + }); + + modelBuilder.Entity("Marco.Pms.Model.Projects.ProjectAllocation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("AllocationDate") + .HasColumnType("datetime(6)"); + + b.Property("EmployeeId") + .HasColumnType("char(36)"); + + b.Property("IsActive") + .HasColumnType("tinyint(1)"); + + b.Property("JobRoleId") + .HasColumnType("char(36)"); + + b.Property("ProjectId") + .HasColumnType("char(36)"); + + b.Property("ReAllocationDate") + .HasColumnType("datetime(6)"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("ProjectId"); + + b.HasIndex("TenantId"); + + b.ToTable("ProjectAllocations"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Projects.WorkArea", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("AreaName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("FloorId") + .HasColumnType("char(36)"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("FloorId"); + + b.HasIndex("TenantId"); + + b.ToTable("WorkAreas"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Projects.WorkItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ActivityId") + .HasColumnType("char(36)"); + + b.Property("CompletedWork") + .HasColumnType("double"); + + b.Property("PlannedWork") + .HasColumnType("double"); + + b.Property("TaskDate") + .HasColumnType("datetime(6)"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.Property("WorkAreaId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("ActivityId"); + + b.HasIndex("TenantId"); + + b.HasIndex("WorkAreaId"); + + b.ToTable("WorkItems"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Roles.ApplicationRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("IsSystem") + .HasColumnType("tinyint(1)"); + + b.Property("Role") + .HasColumnType("longtext"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("TenantId"); + + b.ToTable("ApplicationRoles"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Roles.JobRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("TenantId"); + + b.ToTable("JobRoles"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Utilities.Inquiries", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("About") + .HasColumnType("longtext"); + + b.Property("ContactNumber") + .HasColumnType("longtext"); + + b.Property("ContactPerson") + .HasColumnType("longtext"); + + b.Property("Email") + .HasColumnType("longtext"); + + b.Property("IndustryId") + .HasColumnType("char(36)"); + + b.Property("OragnizationSize") + .HasColumnType("longtext"); + + b.Property("OrganizatioinName") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("Inquiries"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("longtext"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex"); + + b.ToTable("AspNetRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("longtext"); + + b.Property("ClaimValue") + .HasColumnType("longtext"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("longtext"); + + b.Property("Discriminator") + .IsRequired() + .HasMaxLength(21) + .HasColumnType("varchar(21)"); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("tinyint(1)"); + + b.Property("LockoutEnabled") + .HasColumnType("tinyint(1)"); + + b.Property("LockoutEnd") + .HasColumnType("datetime(6)"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("PasswordHash") + .HasColumnType("longtext"); + + b.Property("PhoneNumber") + .HasColumnType("longtext"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("tinyint(1)"); + + b.Property("SecurityStamp") + .HasColumnType("longtext"); + + b.Property("TwoFactorEnabled") + .HasColumnType("tinyint(1)"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex"); + + b.ToTable("AspNetUsers", (string)null); + + b.HasDiscriminator().HasValue("IdentityUser"); + + b.UseTphMappingStrategy(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("longtext"); + + b.Property("ClaimValue") + .HasColumnType("longtext"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("varchar(255)"); + + b.Property("ProviderKey") + .HasColumnType("varchar(255)"); + + b.Property("ProviderDisplayName") + .HasColumnType("longtext"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("varchar(255)"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("varchar(255)"); + + b.Property("RoleId") + .HasColumnType("varchar(255)"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("varchar(255)"); + + b.Property("LoginProvider") + .HasColumnType("varchar(255)"); + + b.Property("Name") + .HasColumnType("varchar(255)"); + + b.Property("Value") + .HasColumnType("longtext"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("Marco.Pms.Model.Entitlements.ApplicationUser", b => + { + b.HasBaseType("Microsoft.AspNetCore.Identity.IdentityUser"); + + b.Property("IsActive") + .HasColumnType("tinyint(1)"); + + b.Property("IsRootUser") + .HasColumnType("tinyint(1)"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasDiscriminator().HasValue("ApplicationUser"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Activities.TaskAllocation", b => + { + b.HasOne("Marco.Pms.Model.Employees.Employee", "Employee") + .WithMany() + .HasForeignKey("AssignedBy") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Marco.Pms.Model.Entitlements.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Marco.Pms.Model.Projects.WorkItem", "WorkItem") + .WithMany() + .HasForeignKey("WorkItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Tenant"); + + b.Navigation("WorkItem"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Activities.TaskComment", b => + { + b.HasOne("Marco.Pms.Model.Employees.Employee", "Employee") + .WithMany() + .HasForeignKey("CommentedBy") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Marco.Pms.Model.Activities.TaskAllocation", "TaskAllocation") + .WithMany() + .HasForeignKey("TaskAllocationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Marco.Pms.Model.Entitlements.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("TaskAllocation"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Activities.TaskMembers", b => + { + b.HasOne("Marco.Pms.Model.Employees.Employee", "Employee") + .WithMany() + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Marco.Pms.Model.Activities.TaskAllocation", "TaskAllocation") + .WithMany() + .HasForeignKey("TaskAllocationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Marco.Pms.Model.Entitlements.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("TaskAllocation"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("Marco.Pms.Model.AttendanceModule.Attendance", b => + { + b.HasOne("Marco.Pms.Model.Employees.Employee", "Approver") + .WithMany() + .HasForeignKey("EmployeeID") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Marco.Pms.Model.Entitlements.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Approver"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("Marco.Pms.Model.AttendanceModule.AttendanceLog", b => + { + b.HasOne("Marco.Pms.Model.AttendanceModule.Attendance", "Attendance") + .WithMany() + .HasForeignKey("AttendanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Marco.Pms.Model.DocumentManager.Document", "Document") + .WithMany() + .HasForeignKey("DocumentId"); + + b.HasOne("Marco.Pms.Model.Employees.Employee", "Employee") + .WithMany() + .HasForeignKey("EmployeeID") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Marco.Pms.Model.Entitlements.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Marco.Pms.Model.Employees.Employee", "UpdatedByEmployee") + .WithMany() + .HasForeignKey("UpdatedBy"); + + b.Navigation("Attendance"); + + b.Navigation("Document"); + + b.Navigation("Employee"); + + b.Navigation("Tenant"); + + b.Navigation("UpdatedByEmployee"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Authentication.RefreshToken", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Marco.Pms.Model.DocumentManager.Document", b => + { + b.HasOne("Marco.Pms.Model.Entitlements.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Employees.Employee", b => + { + b.HasOne("Marco.Pms.Model.Entitlements.ApplicationUser", "ApplicationUser") + .WithMany() + .HasForeignKey("ApplicationUserId"); + + b.HasOne("Marco.Pms.Model.Roles.JobRole", "JobRole") + .WithMany() + .HasForeignKey("JobRoleId"); + + b.HasOne("Marco.Pms.Model.Entitlements.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ApplicationUser"); + + b.Navigation("JobRole"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Employees.EmployeeRoleMapping", b => + { + b.HasOne("Marco.Pms.Model.Employees.Employee", "Employee") + .WithMany() + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Marco.Pms.Model.Roles.ApplicationRole", "Role") + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Marco.Pms.Model.Entitlements.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Role"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Employees.WorkShift", b => + { + b.HasOne("Marco.Pms.Model.Entitlements.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Entitlements.FeaturePermission", b => + { + b.HasOne("Marco.Pms.Model.Master.Feature", "Feature") + .WithMany("FeaturePermissions") + .HasForeignKey("FeatureId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Feature"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Entitlements.RolePermissionMappings", b => + { + b.HasOne("Marco.Pms.Model.Roles.ApplicationRole", null) + .WithMany() + .HasForeignKey("ApplicationRoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Marco.Pms.Model.Entitlements.FeaturePermission", null) + .WithMany() + .HasForeignKey("FeaturePermissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Marco.Pms.Model.Entitlements.Tenant", b => + { + b.HasOne("Marco.Pms.Model.Master.Industry", "Industry") + .WithMany() + .HasForeignKey("IndustryId"); + + b.Navigation("Industry"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Forum.TicketAttachment", b => + { + b.HasOne("Marco.Pms.Model.Forum.TicketComment", "TicketComment") + .WithMany("Attachments") + .HasForeignKey("CommentId"); + + b.HasOne("Marco.Pms.Model.Forum.TicketForum", "Ticket") + .WithMany() + .HasForeignKey("TicketId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Ticket"); + + b.Navigation("TicketComment"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Forum.TicketComment", b => + { + b.HasOne("Marco.Pms.Model.Entitlements.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Forum.TicketForum", b => + { + b.HasOne("Marco.Pms.Model.Master.TicketPriorityMaster", "Priority") + .WithMany() + .HasForeignKey("PriorityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Marco.Pms.Model.Master.TicketStatusMaster", "TicketStatusMaster") + .WithMany() + .HasForeignKey("StatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Marco.Pms.Model.Entitlements.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Marco.Pms.Model.Forum.TicketTypeMaster", "TicketTypeMaster") + .WithMany() + .HasForeignKey("TypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Priority"); + + b.Navigation("Tenant"); + + b.Navigation("TicketStatusMaster"); + + b.Navigation("TicketTypeMaster"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Forum.TicketTag", b => + { + b.HasOne("Marco.Pms.Model.Master.TicketTagMaster", "Tag") + .WithMany() + .HasForeignKey("TagId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Marco.Pms.Model.Forum.TicketForum", "Ticket") + .WithMany() + .HasForeignKey("TicketId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Tag"); + + b.Navigation("Ticket"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Master.ActivityMaster", b => + { + b.HasOne("Marco.Pms.Model.Entitlements.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Master.Feature", b => + { + b.HasOne("Marco.Pms.Model.Master.Module", "Module") + .WithMany() + .HasForeignKey("ModuleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Module"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Master.StatusMaster", b => + { + b.HasOne("Marco.Pms.Model.Entitlements.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Master.WorkCategoryMaster", b => + { + b.HasOne("Marco.Pms.Model.Entitlements.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Projects.Building", b => + { + b.HasOne("Marco.Pms.Model.Entitlements.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Projects.Floor", b => + { + b.HasOne("Marco.Pms.Model.Projects.Building", "Building") + .WithMany() + .HasForeignKey("BuildingId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Marco.Pms.Model.Entitlements.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Building"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Projects.Project", b => + { + b.HasOne("Marco.Pms.Model.Master.StatusMaster", "ProjectStatus") + .WithMany() + .HasForeignKey("ProjectStatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Marco.Pms.Model.Entitlements.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ProjectStatus"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Projects.ProjectAllocation", b => + { + b.HasOne("Marco.Pms.Model.Employees.Employee", "Employee") + .WithMany() + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Marco.Pms.Model.Projects.Project", "Project") + .WithMany() + .HasForeignKey("ProjectId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Marco.Pms.Model.Entitlements.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Project"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Projects.WorkArea", b => + { + b.HasOne("Marco.Pms.Model.Projects.Floor", "Floor") + .WithMany() + .HasForeignKey("FloorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Marco.Pms.Model.Entitlements.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Floor"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Projects.WorkItem", b => + { + b.HasOne("Marco.Pms.Model.Master.ActivityMaster", "ActivityMaster") + .WithMany() + .HasForeignKey("ActivityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Marco.Pms.Model.Entitlements.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Marco.Pms.Model.Projects.WorkArea", "WorkArea") + .WithMany() + .HasForeignKey("WorkAreaId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ActivityMaster"); + + b.Navigation("Tenant"); + + b.Navigation("WorkArea"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Roles.ApplicationRole", b => + { + b.HasOne("Marco.Pms.Model.Entitlements.Tenant", null) + .WithMany() + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Marco.Pms.Model.Roles.JobRole", b => + { + b.HasOne("Marco.Pms.Model.Entitlements.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Marco.Pms.Model.Forum.TicketComment", b => + { + b.Navigation("Attachments"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Master.Feature", b => + { + b.Navigation("FeaturePermissions"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Marco.Pms.DataAccess/Migrations/20250510074238_Added_WorkCategory_Master_Table.cs b/Marco.Pms.DataAccess/Migrations/20250510074238_Added_WorkCategory_Master_Table.cs new file mode 100644 index 0000000..53b3611 --- /dev/null +++ b/Marco.Pms.DataAccess/Migrations/20250510074238_Added_WorkCategory_Master_Table.cs @@ -0,0 +1,63 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +#pragma warning disable CA1814 // Prefer jagged arrays over multidimensional + +namespace Marco.Pms.DataAccess.Migrations +{ + /// + public partial class Added_WorkCategory_Master_Table : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "WorkCategoryMasters", + columns: table => new + { + Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + Name = table.Column(type: "longtext", nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Description = table.Column(type: "longtext", nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + IsSystem = table.Column(type: "tinyint(1)", nullable: false), + TenantId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci") + }, + constraints: table => + { + table.PrimaryKey("PK_WorkCategoryMasters", x => x.Id); + table.ForeignKey( + name: "FK_WorkCategoryMasters_Tenants_TenantId", + column: x => x.TenantId, + principalTable: "Tenants", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.InsertData( + table: "WorkCategoryMasters", + columns: new[] { "Id", "Description", "IsSystem", "Name", "TenantId" }, + values: new object[,] + { + { new Guid("11a79929-1d07-42dc-9e98-82d0d2f4a240"), "Any defect, deviation, or non-conformance in a task that fails to meet established standards or customer expectations.", true, "Quality Issue", new Guid("b3466e83-7e11-464c-b93a-daf047838b26") }, + { new Guid("86bb2cc8-f6b5-4fdd-bbee-c389c713a44b"), "Created new task in a professional or creative context", true, "Fresh Work", new Guid("b3466e83-7e11-464c-b93a-daf047838b26") }, + { new Guid("9ebfa19c-53b9-481b-b863-c25d2f843201"), "Revising, modifying, or correcting a task to improve its quality or fix issues", true, "Rework", new Guid("b3466e83-7e11-464c-b93a-daf047838b26") } + }); + + migrationBuilder.CreateIndex( + name: "IX_WorkCategoryMasters_TenantId", + table: "WorkCategoryMasters", + column: "TenantId"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "WorkCategoryMasters"); + } + } +} diff --git a/Marco.Pms.DataAccess/Migrations/ApplicationDbContextModelSnapshot.cs b/Marco.Pms.DataAccess/Migrations/ApplicationDbContextModelSnapshot.cs index 7c616ef..35644f8 100644 --- a/Marco.Pms.DataAccess/Migrations/ApplicationDbContextModelSnapshot.cs +++ b/Marco.Pms.DataAccess/Migrations/ApplicationDbContextModelSnapshot.cs @@ -386,6 +386,35 @@ namespace Marco.Pms.DataAccess.Migrations b.ToTable("Employees"); }); + modelBuilder.Entity("Marco.Pms.Model.Employees.EmployeeRoleMapping", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("EmployeeId") + .HasColumnType("char(36)"); + + b.Property("IsEnabled") + .HasColumnType("tinyint(1)"); + + b.Property("RoleId") + .HasColumnType("char(36)"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("RoleId"); + + b.HasIndex("TenantId"); + + b.ToTable("EmployeeRoleMappings"); + }); + modelBuilder.Entity("Marco.Pms.Model.Employees.WorkShift", b => { b.Property("Id") @@ -437,56 +466,6 @@ namespace Marco.Pms.DataAccess.Migrations b.ToTable("ActivityCheckLists"); }); - modelBuilder.Entity("Marco.Pms.Model.Entitlements.ActivityMaster", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("char(36)"); - - b.Property("ActivityName") - .HasColumnType("longtext"); - - b.Property("IsActive") - .HasColumnType("tinyint(1)"); - - b.Property("TenantId") - .HasColumnType("char(36)"); - - b.Property("UnitOfMeasurement") - .HasColumnType("longtext"); - - b.HasKey("Id"); - - b.HasIndex("TenantId"); - - b.ToTable("ActivityMasters"); - }); - - modelBuilder.Entity("Marco.Pms.Model.Entitlements.ApplicationRole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("char(36)"); - - b.Property("Description") - .HasColumnType("longtext"); - - b.Property("IsSystem") - .HasColumnType("tinyint(1)"); - - b.Property("Role") - .HasColumnType("longtext"); - - b.Property("TenantId") - .HasColumnType("char(36)"); - - b.HasKey("Id"); - - b.HasIndex("TenantId"); - - b.ToTable("ApplicationRoles"); - }); - modelBuilder.Entity("Marco.Pms.Model.Entitlements.CheckListMappings", b => { b.Property("Id") @@ -504,126 +483,6 @@ namespace Marco.Pms.DataAccess.Migrations b.ToTable("CheckListMappings"); }); - modelBuilder.Entity("Marco.Pms.Model.Entitlements.EmployeeRoleMapping", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("char(36)"); - - b.Property("EmployeeId") - .HasColumnType("char(36)"); - - b.Property("IsEnabled") - .HasColumnType("tinyint(1)"); - - b.Property("RoleId") - .HasColumnType("char(36)"); - - b.Property("TenantId") - .HasColumnType("char(36)"); - - b.HasKey("Id"); - - b.HasIndex("EmployeeId"); - - b.HasIndex("RoleId"); - - b.HasIndex("TenantId"); - - b.ToTable("EmployeeRoleMappings"); - }); - - modelBuilder.Entity("Marco.Pms.Model.Entitlements.Feature", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("char(36)"); - - b.Property("Description") - .HasColumnType("longtext"); - - b.Property("IsActive") - .HasColumnType("tinyint(1)"); - - b.Property("ModuleId") - .HasColumnType("char(36)"); - - b.Property("Name") - .HasColumnType("longtext"); - - b.HasKey("Id"); - - b.HasIndex("ModuleId"); - - b.ToTable("Features"); - - b.HasData( - new - { - Id = new Guid("53176ebf-c75d-42e5-839f-4508ffac3def"), - Description = "Manage Project", - IsActive = true, - ModuleId = new Guid("bf59fd88-b57a-4d67-bf01-3780f385896b"), - Name = "Manage Project" - }, - new - { - Id = new Guid("9666de86-d7c7-4d3d-acaa-fcd6d6b81f3c"), - Description = "Manage Infra", - IsActive = true, - ModuleId = new Guid("bf59fd88-b57a-4d67-bf01-3780f385896b"), - Name = "Manage Infra" - }, - new - { - Id = new Guid("9d4b5489-2079-40b9-bd77-6e1bf90bc19f"), - Description = "Manage Tasks", - IsActive = true, - ModuleId = new Guid("bf59fd88-b57a-4d67-bf01-3780f385896b"), - Name = "Manage Tasks" - }, - new - { - Id = new Guid("39e66f81-efc6-446c-95bd-46bff6cfb606"), - Description = "Assign and Update Tasks Progress", - IsActive = true, - ModuleId = new Guid("bf59fd88-b57a-4d67-bf01-3780f385896b"), - Name = "Assign and Update Tasks Progress" - }, - new - { - Id = new Guid("81ab8a87-8ccd-4015-a917-0627cee6a100"), - Description = "Manage Employee", - IsActive = true, - ModuleId = new Guid("2a231490-bcb1-4bdd-91f1-f25fb7f25b23"), - Name = "Manage Employee" - }, - new - { - Id = new Guid("52c9cf54-1eb2-44d2-81bb-524cf29c0a94"), - Description = "Attendance", - IsActive = true, - ModuleId = new Guid("2a231490-bcb1-4bdd-91f1-f25fb7f25b23"), - Name = "Attendance" - }, - new - { - Id = new Guid("be3b3afc-6ccf-4566-b9b6-aafcb65546be"), - Description = "Global Masters", - IsActive = true, - ModuleId = new Guid("c43db8c7-ab73-47f4-9d3b-f83e81357924"), - Name = "Global Masters" - }, - new - { - Id = new Guid("660131a4-788c-4739-a082-cbbf7879cbf2"), - Description = "Tenant Masters", - IsActive = true, - ModuleId = new Guid("c43db8c7-ab73-47f4-9d3b-f83e81357924"), - Name = "Tenant Masters" - }); - }); - modelBuilder.Entity("Marco.Pms.Model.Entitlements.FeaturePermission", b => { b.Property("Id") @@ -795,73 +654,6 @@ namespace Marco.Pms.DataAccess.Migrations }); }); - modelBuilder.Entity("Marco.Pms.Model.Entitlements.JobRole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("char(36)"); - - b.Property("Description") - .HasColumnType("longtext"); - - b.Property("Name") - .HasColumnType("longtext"); - - b.Property("TenantId") - .HasColumnType("char(36)"); - - b.HasKey("Id"); - - b.HasIndex("TenantId"); - - b.ToTable("JobRoles"); - }); - - modelBuilder.Entity("Marco.Pms.Model.Entitlements.Module", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("char(36)"); - - b.Property("Description") - .HasColumnType("longtext"); - - b.Property("Key") - .IsRequired() - .HasColumnType("longtext"); - - b.Property("Name") - .IsRequired() - .HasColumnType("longtext"); - - b.HasKey("Id"); - - b.ToTable("Modules"); - - b.HasData( - new - { - Id = new Guid("bf59fd88-b57a-4d67-bf01-3780f385896b"), - Description = "Project Module", - Key = "b04da7e9-0406-409c-ac7f-b97256e6ea02", - Name = "Project" - }, - new - { - Id = new Guid("2a231490-bcb1-4bdd-91f1-f25fb7f25b23"), - Description = "Employee Module", - Key = "0971c7fb-6ce1-458a-ae3f-8d3205893637", - Name = "Employee" - }, - new - { - Id = new Guid("c43db8c7-ab73-47f4-9d3b-f83e81357924"), - Description = "Masters Module", - Key = "504ec132-e6a9-422f-8f85-050602cfce05", - Name = "Masters" - }); - }); - modelBuilder.Entity("Marco.Pms.Model.Entitlements.RolePermissionMappings", b => { b.Property("ApplicationRoleId") @@ -877,51 +669,6 @@ namespace Marco.Pms.DataAccess.Migrations b.ToTable("RolePermissionMappings"); }); - modelBuilder.Entity("Marco.Pms.Model.Entitlements.StatusMaster", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("char(36)"); - - b.Property("Status") - .HasColumnType("longtext"); - - b.Property("TenantId") - .HasColumnType("char(36)"); - - b.HasKey("Id"); - - b.HasIndex("TenantId"); - - b.ToTable("StatusMasters"); - - b.HasData( - new - { - Id = new Guid("b74da4c2-d07e-46f2-9919-e75e49b12731"), - Status = "Active", - TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") - }, - new - { - Id = new Guid("603e994b-a27f-4e5d-a251-f3d69b0498ba"), - Status = "In Progress", - TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") - }, - new - { - Id = new Guid("ef1c356e-0fe0-42df-a5d3-8daee355492d"), - Status = "On Hold", - TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") - }, - new - { - Id = new Guid("33deaef9-9af1-4f2a-b443-681ea0d04f81"), - Status = "Completed", - TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") - }); - }); - modelBuilder.Entity("Marco.Pms.Model.Entitlements.Tenant", b => { b.Property("Id") @@ -1088,7 +835,337 @@ namespace Marco.Pms.DataAccess.Migrations b.ToTable("Tickets"); }); - modelBuilder.Entity("Marco.Pms.Model.Forum.TicketPriorityMaster", b => + modelBuilder.Entity("Marco.Pms.Model.Forum.TicketTag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("TagId") + .HasColumnType("char(36)"); + + b.Property("TicketId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("TagId"); + + b.HasIndex("TicketId"); + + b.ToTable("TicketTags"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Forum.TicketTypeMaster", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("IsDefault") + .HasColumnType("tinyint(1)"); + + b.Property("Name") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.ToTable("TicketTypeMasters"); + + b.HasData( + new + { + Id = new Guid("c74e5480-2b71-483c-8f4a-1a9c69c32603"), + Description = "An identified problem that affects the performance, reliability, or standards of a product or service", + IsDefault = true, + Name = "Quality Issue", + TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") + }, + new + { + Id = new Guid("d1f55eab-9898-4e46-9f03-b263e33e5d38"), + Description = "A support service that assists users with technical issues, requests, or inquiries.", + IsDefault = true, + Name = "Help Desk", + TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") + }); + }); + + modelBuilder.Entity("Marco.Pms.Model.Master.ActivityMaster", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ActivityName") + .HasColumnType("longtext"); + + b.Property("IsActive") + .HasColumnType("tinyint(1)"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.Property("UnitOfMeasurement") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.HasIndex("TenantId"); + + b.ToTable("ActivityMasters"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Master.Feature", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("IsActive") + .HasColumnType("tinyint(1)"); + + b.Property("ModuleId") + .HasColumnType("char(36)"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.HasIndex("ModuleId"); + + b.ToTable("Features"); + + b.HasData( + new + { + Id = new Guid("53176ebf-c75d-42e5-839f-4508ffac3def"), + Description = "Manage Project", + IsActive = true, + ModuleId = new Guid("bf59fd88-b57a-4d67-bf01-3780f385896b"), + Name = "Manage Project" + }, + new + { + Id = new Guid("9666de86-d7c7-4d3d-acaa-fcd6d6b81f3c"), + Description = "Manage Infra", + IsActive = true, + ModuleId = new Guid("bf59fd88-b57a-4d67-bf01-3780f385896b"), + Name = "Manage Infra" + }, + new + { + Id = new Guid("9d4b5489-2079-40b9-bd77-6e1bf90bc19f"), + Description = "Manage Tasks", + IsActive = true, + ModuleId = new Guid("bf59fd88-b57a-4d67-bf01-3780f385896b"), + Name = "Manage Tasks" + }, + new + { + Id = new Guid("39e66f81-efc6-446c-95bd-46bff6cfb606"), + Description = "Assign and Update Tasks Progress", + IsActive = true, + ModuleId = new Guid("bf59fd88-b57a-4d67-bf01-3780f385896b"), + Name = "Assign and Update Tasks Progress" + }, + new + { + Id = new Guid("81ab8a87-8ccd-4015-a917-0627cee6a100"), + Description = "Manage Employee", + IsActive = true, + ModuleId = new Guid("2a231490-bcb1-4bdd-91f1-f25fb7f25b23"), + Name = "Manage Employee" + }, + new + { + Id = new Guid("52c9cf54-1eb2-44d2-81bb-524cf29c0a94"), + Description = "Attendance", + IsActive = true, + ModuleId = new Guid("2a231490-bcb1-4bdd-91f1-f25fb7f25b23"), + Name = "Attendance" + }, + new + { + Id = new Guid("be3b3afc-6ccf-4566-b9b6-aafcb65546be"), + Description = "Global Masters", + IsActive = true, + ModuleId = new Guid("c43db8c7-ab73-47f4-9d3b-f83e81357924"), + Name = "Global Masters" + }, + new + { + Id = new Guid("660131a4-788c-4739-a082-cbbf7879cbf2"), + Description = "Tenant Masters", + IsActive = true, + ModuleId = new Guid("c43db8c7-ab73-47f4-9d3b-f83e81357924"), + Name = "Tenant Masters" + }); + }); + + modelBuilder.Entity("Marco.Pms.Model.Master.Industry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("Industries"); + + b.HasData( + new + { + Id = new Guid("15436ee3-a650-469e-bfc2-59993f7514bb"), + Name = "Information Technology (IT) Services" + }, + new + { + Id = new Guid("0a63e657-2c5f-49b5-854b-42c978293154"), + Name = "Manufacturing & Production" + }, + new + { + Id = new Guid("bdc61e3b-69ea-4394-bab6-079ec135b5bd"), + Name = "Energy & Resources" + }, + new + { + Id = new Guid("5ca200ac-00d7-415e-a410-b948e27ac9d2"), + Name = "Finance & Professional Services" + }, + new + { + Id = new Guid("d5621700-cd87-441f-8cdb-6051ddfc83b4"), + Name = "Hospitals and Healthcare Services" + }, + new + { + Id = new Guid("23608891-657e-40f0-bbd4-2b0a2ec1a76f"), + Name = "Social Services" + }, + new + { + Id = new Guid("a493f4e3-16b1-4411-be3c-6bf2987a3168"), + Name = "Retail & Consumer Services" + }, + new + { + Id = new Guid("e9d8ce92-9371-4ed9-9831-83c07f78edec"), + Name = "Transportation & Logistics" + }, + new + { + Id = new Guid("8a0d6134-2dbe-4e0a-b250-ff34cb7b9df0"), + Name = "Education & Training" + }); + }); + + modelBuilder.Entity("Marco.Pms.Model.Master.Module", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("Key") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Name") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("Modules"); + + b.HasData( + new + { + Id = new Guid("bf59fd88-b57a-4d67-bf01-3780f385896b"), + Description = "Project Module", + Key = "b04da7e9-0406-409c-ac7f-b97256e6ea02", + Name = "Project" + }, + new + { + Id = new Guid("2a231490-bcb1-4bdd-91f1-f25fb7f25b23"), + Description = "Employee Module", + Key = "0971c7fb-6ce1-458a-ae3f-8d3205893637", + Name = "Employee" + }, + new + { + Id = new Guid("c43db8c7-ab73-47f4-9d3b-f83e81357924"), + Description = "Masters Module", + Key = "504ec132-e6a9-422f-8f85-050602cfce05", + Name = "Masters" + }); + }); + + modelBuilder.Entity("Marco.Pms.Model.Master.StatusMaster", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Status") + .HasColumnType("longtext"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("TenantId"); + + b.ToTable("StatusMasters"); + + b.HasData( + new + { + Id = new Guid("b74da4c2-d07e-46f2-9919-e75e49b12731"), + Status = "Active", + TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") + }, + new + { + Id = new Guid("603e994b-a27f-4e5d-a251-f3d69b0498ba"), + Status = "In Progress", + TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") + }, + new + { + Id = new Guid("ef1c356e-0fe0-42df-a5d3-8daee355492d"), + Status = "On Hold", + TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") + }, + new + { + Id = new Guid("33deaef9-9af1-4f2a-b443-681ea0d04f81"), + Status = "Completed", + TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") + }); + }); + + modelBuilder.Entity("Marco.Pms.Model.Master.TicketPriorityMaster", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -1162,7 +1239,7 @@ namespace Marco.Pms.DataAccess.Migrations }); }); - modelBuilder.Entity("Marco.Pms.Model.Forum.TicketStatusMaster", b => + modelBuilder.Entity("Marco.Pms.Model.Master.TicketStatusMaster", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -1236,28 +1313,7 @@ namespace Marco.Pms.DataAccess.Migrations }); }); - modelBuilder.Entity("Marco.Pms.Model.Forum.TicketTag", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("char(36)"); - - b.Property("TagId") - .HasColumnType("char(36)"); - - b.Property("TicketId") - .HasColumnType("char(36)"); - - b.HasKey("Id"); - - b.HasIndex("TagId"); - - b.HasIndex("TicketId"); - - b.ToTable("TicketTags"); - }); - - modelBuilder.Entity("Marco.Pms.Model.Forum.TicketTagMaster", b => + modelBuilder.Entity("Marco.Pms.Model.Master.TicketTagMaster", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -1299,16 +1355,17 @@ namespace Marco.Pms.DataAccess.Migrations }); }); - modelBuilder.Entity("Marco.Pms.Model.Forum.TicketTypeMaster", b => + modelBuilder.Entity("Marco.Pms.Model.Master.WorkCategoryMaster", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("char(36)"); b.Property("Description") + .IsRequired() .HasColumnType("longtext"); - b.Property("IsDefault") + b.Property("IsSystem") .HasColumnType("tinyint(1)"); b.Property("Name") @@ -1320,85 +1377,34 @@ namespace Marco.Pms.DataAccess.Migrations b.HasKey("Id"); - b.ToTable("TicketTypeMasters"); + b.HasIndex("TenantId"); + + b.ToTable("WorkCategoryMasters"); b.HasData( new { - Id = new Guid("c74e5480-2b71-483c-8f4a-1a9c69c32603"), - Description = "An identified problem that affects the performance, reliability, or standards of a product or service", - IsDefault = true, + Id = new Guid("86bb2cc8-f6b5-4fdd-bbee-c389c713a44b"), + Description = "Created new task in a professional or creative context", + IsSystem = true, + Name = "Fresh Work", + TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") + }, + new + { + Id = new Guid("9ebfa19c-53b9-481b-b863-c25d2f843201"), + Description = "Revising, modifying, or correcting a task to improve its quality or fix issues", + IsSystem = true, + Name = "Rework", + TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") + }, + new + { + Id = new Guid("11a79929-1d07-42dc-9e98-82d0d2f4a240"), + Description = "Any defect, deviation, or non-conformance in a task that fails to meet established standards or customer expectations.", + IsSystem = true, Name = "Quality Issue", TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") - }, - new - { - Id = new Guid("d1f55eab-9898-4e46-9f03-b263e33e5d38"), - Description = "A support service that assists users with technical issues, requests, or inquiries.", - IsDefault = true, - Name = "Help Desk", - TenantId = new Guid("b3466e83-7e11-464c-b93a-daf047838b26") - }); - }); - - modelBuilder.Entity("Marco.Pms.Model.Industries.Industry", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("char(36)"); - - b.Property("Name") - .HasColumnType("longtext"); - - b.HasKey("Id"); - - b.ToTable("Industries"); - - b.HasData( - new - { - Id = new Guid("15436ee3-a650-469e-bfc2-59993f7514bb"), - Name = "Information Technology (IT) Services" - }, - new - { - Id = new Guid("0a63e657-2c5f-49b5-854b-42c978293154"), - Name = "Manufacturing & Production" - }, - new - { - Id = new Guid("bdc61e3b-69ea-4394-bab6-079ec135b5bd"), - Name = "Energy & Resources" - }, - new - { - Id = new Guid("5ca200ac-00d7-415e-a410-b948e27ac9d2"), - Name = "Finance & Professional Services" - }, - new - { - Id = new Guid("d5621700-cd87-441f-8cdb-6051ddfc83b4"), - Name = "Hospitals and Healthcare Services" - }, - new - { - Id = new Guid("23608891-657e-40f0-bbd4-2b0a2ec1a76f"), - Name = "Social Services" - }, - new - { - Id = new Guid("a493f4e3-16b1-4411-be3c-6bf2987a3168"), - Name = "Retail & Consumer Services" - }, - new - { - Id = new Guid("e9d8ce92-9371-4ed9-9831-83c07f78edec"), - Name = "Transportation & Logistics" - }, - new - { - Id = new Guid("8a0d6134-2dbe-4e0a-b250-ff34cb7b9df0"), - Name = "Education & Training" }); }); @@ -1601,6 +1607,53 @@ namespace Marco.Pms.DataAccess.Migrations b.ToTable("WorkItems"); }); + modelBuilder.Entity("Marco.Pms.Model.Roles.ApplicationRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("IsSystem") + .HasColumnType("tinyint(1)"); + + b.Property("Role") + .HasColumnType("longtext"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("TenantId"); + + b.ToTable("ApplicationRoles"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Roles.JobRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("TenantId"); + + b.ToTable("JobRoles"); + }); + modelBuilder.Entity("Marco.Pms.Model.Utilities.Inquiries", b => { b.Property("Id") @@ -2020,7 +2073,7 @@ namespace Marco.Pms.DataAccess.Migrations .WithMany() .HasForeignKey("ApplicationUserId"); - b.HasOne("Marco.Pms.Model.Entitlements.JobRole", "JobRole") + b.HasOne("Marco.Pms.Model.Roles.JobRole", "JobRole") .WithMany() .HasForeignKey("JobRoleId"); @@ -2037,38 +2090,7 @@ namespace Marco.Pms.DataAccess.Migrations b.Navigation("Tenant"); }); - modelBuilder.Entity("Marco.Pms.Model.Employees.WorkShift", b => - { - b.HasOne("Marco.Pms.Model.Entitlements.Tenant", "Tenant") - .WithMany() - .HasForeignKey("TenantId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Tenant"); - }); - - modelBuilder.Entity("Marco.Pms.Model.Entitlements.ActivityMaster", b => - { - b.HasOne("Marco.Pms.Model.Entitlements.Tenant", "Tenant") - .WithMany() - .HasForeignKey("TenantId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Tenant"); - }); - - modelBuilder.Entity("Marco.Pms.Model.Entitlements.ApplicationRole", b => - { - b.HasOne("Marco.Pms.Model.Entitlements.Tenant", null) - .WithMany() - .HasForeignKey("TenantId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Marco.Pms.Model.Entitlements.EmployeeRoleMapping", b => + modelBuilder.Entity("Marco.Pms.Model.Employees.EmployeeRoleMapping", b => { b.HasOne("Marco.Pms.Model.Employees.Employee", "Employee") .WithMany() @@ -2076,7 +2098,7 @@ namespace Marco.Pms.DataAccess.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - b.HasOne("Marco.Pms.Model.Entitlements.ApplicationRole", "Role") + b.HasOne("Marco.Pms.Model.Roles.ApplicationRole", "Role") .WithMany() .HasForeignKey("RoleId") .OnDelete(DeleteBehavior.Cascade) @@ -2095,29 +2117,7 @@ namespace Marco.Pms.DataAccess.Migrations b.Navigation("Tenant"); }); - modelBuilder.Entity("Marco.Pms.Model.Entitlements.Feature", b => - { - b.HasOne("Marco.Pms.Model.Entitlements.Module", "Module") - .WithMany() - .HasForeignKey("ModuleId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Module"); - }); - - modelBuilder.Entity("Marco.Pms.Model.Entitlements.FeaturePermission", b => - { - b.HasOne("Marco.Pms.Model.Entitlements.Feature", "Feature") - .WithMany("FeaturePermissions") - .HasForeignKey("FeatureId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Feature"); - }); - - modelBuilder.Entity("Marco.Pms.Model.Entitlements.JobRole", b => + modelBuilder.Entity("Marco.Pms.Model.Employees.WorkShift", b => { b.HasOne("Marco.Pms.Model.Entitlements.Tenant", "Tenant") .WithMany() @@ -2128,9 +2128,20 @@ namespace Marco.Pms.DataAccess.Migrations b.Navigation("Tenant"); }); + modelBuilder.Entity("Marco.Pms.Model.Entitlements.FeaturePermission", b => + { + b.HasOne("Marco.Pms.Model.Master.Feature", "Feature") + .WithMany("FeaturePermissions") + .HasForeignKey("FeatureId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Feature"); + }); + modelBuilder.Entity("Marco.Pms.Model.Entitlements.RolePermissionMappings", b => { - b.HasOne("Marco.Pms.Model.Entitlements.ApplicationRole", null) + b.HasOne("Marco.Pms.Model.Roles.ApplicationRole", null) .WithMany() .HasForeignKey("ApplicationRoleId") .OnDelete(DeleteBehavior.Cascade) @@ -2143,20 +2154,9 @@ namespace Marco.Pms.DataAccess.Migrations .IsRequired(); }); - modelBuilder.Entity("Marco.Pms.Model.Entitlements.StatusMaster", b => - { - b.HasOne("Marco.Pms.Model.Entitlements.Tenant", "Tenant") - .WithMany() - .HasForeignKey("TenantId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Tenant"); - }); - modelBuilder.Entity("Marco.Pms.Model.Entitlements.Tenant", b => { - b.HasOne("Marco.Pms.Model.Industries.Industry", "Industry") + b.HasOne("Marco.Pms.Model.Master.Industry", "Industry") .WithMany() .HasForeignKey("IndustryId"); @@ -2193,13 +2193,13 @@ namespace Marco.Pms.DataAccess.Migrations modelBuilder.Entity("Marco.Pms.Model.Forum.TicketForum", b => { - b.HasOne("Marco.Pms.Model.Forum.TicketPriorityMaster", "Priority") + b.HasOne("Marco.Pms.Model.Master.TicketPriorityMaster", "Priority") .WithMany() .HasForeignKey("PriorityId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - b.HasOne("Marco.Pms.Model.Forum.TicketStatusMaster", "TicketStatusMaster") + b.HasOne("Marco.Pms.Model.Master.TicketStatusMaster", "TicketStatusMaster") .WithMany() .HasForeignKey("StatusId") .OnDelete(DeleteBehavior.Cascade) @@ -2228,7 +2228,7 @@ namespace Marco.Pms.DataAccess.Migrations modelBuilder.Entity("Marco.Pms.Model.Forum.TicketTag", b => { - b.HasOne("Marco.Pms.Model.Forum.TicketTagMaster", "Tag") + b.HasOne("Marco.Pms.Model.Master.TicketTagMaster", "Tag") .WithMany() .HasForeignKey("TagId") .OnDelete(DeleteBehavior.Cascade) @@ -2245,6 +2245,50 @@ namespace Marco.Pms.DataAccess.Migrations b.Navigation("Ticket"); }); + modelBuilder.Entity("Marco.Pms.Model.Master.ActivityMaster", b => + { + b.HasOne("Marco.Pms.Model.Entitlements.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Master.Feature", b => + { + b.HasOne("Marco.Pms.Model.Master.Module", "Module") + .WithMany() + .HasForeignKey("ModuleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Module"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Master.StatusMaster", b => + { + b.HasOne("Marco.Pms.Model.Entitlements.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Master.WorkCategoryMaster", b => + { + b.HasOne("Marco.Pms.Model.Entitlements.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Tenant"); + }); + modelBuilder.Entity("Marco.Pms.Model.Projects.Building", b => { b.HasOne("Marco.Pms.Model.Entitlements.Tenant", "Tenant") @@ -2277,7 +2321,7 @@ namespace Marco.Pms.DataAccess.Migrations modelBuilder.Entity("Marco.Pms.Model.Projects.Project", b => { - b.HasOne("Marco.Pms.Model.Entitlements.StatusMaster", "ProjectStatus") + b.HasOne("Marco.Pms.Model.Master.StatusMaster", "ProjectStatus") .WithMany() .HasForeignKey("ProjectStatusId") .OnDelete(DeleteBehavior.Cascade) @@ -2342,7 +2386,7 @@ namespace Marco.Pms.DataAccess.Migrations modelBuilder.Entity("Marco.Pms.Model.Projects.WorkItem", b => { - b.HasOne("Marco.Pms.Model.Entitlements.ActivityMaster", "ActivityMaster") + b.HasOne("Marco.Pms.Model.Master.ActivityMaster", "ActivityMaster") .WithMany() .HasForeignKey("ActivityId") .OnDelete(DeleteBehavior.Cascade) @@ -2367,6 +2411,26 @@ namespace Marco.Pms.DataAccess.Migrations b.Navigation("WorkArea"); }); + modelBuilder.Entity("Marco.Pms.Model.Roles.ApplicationRole", b => + { + b.HasOne("Marco.Pms.Model.Entitlements.Tenant", null) + .WithMany() + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Marco.Pms.Model.Roles.JobRole", b => + { + b.HasOne("Marco.Pms.Model.Entitlements.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Tenant"); + }); + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => { b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) @@ -2418,15 +2482,15 @@ namespace Marco.Pms.DataAccess.Migrations .IsRequired(); }); - modelBuilder.Entity("Marco.Pms.Model.Entitlements.Feature", b => - { - b.Navigation("FeaturePermissions"); - }); - modelBuilder.Entity("Marco.Pms.Model.Forum.TicketComment", b => { b.Navigation("Attachments"); }); + + modelBuilder.Entity("Marco.Pms.Model.Master.Feature", b => + { + b.Navigation("FeaturePermissions"); + }); #pragma warning restore 612, 618 } } diff --git a/Marco.Pms.Model/Dtos/Master/WorkCategoryMasterDto.cs b/Marco.Pms.Model/Dtos/Master/WorkCategoryMasterDto.cs new file mode 100644 index 0000000..77bf12b --- /dev/null +++ b/Marco.Pms.Model/Dtos/Master/WorkCategoryMasterDto.cs @@ -0,0 +1,9 @@ +namespace Marco.Pms.Model.Dtos.Master +{ + public class WorkCategoryMasterDto + { + public Guid? Id { get; set; } + public string Name { get; set; } = string.Empty; + public string? Description { get; set; } + } +} diff --git a/Marco.Pms.Model/Mapper/MasterMapper.cs b/Marco.Pms.Model/Mapper/MasterMapper.cs new file mode 100644 index 0000000..548c162 --- /dev/null +++ b/Marco.Pms.Model/Mapper/MasterMapper.cs @@ -0,0 +1,31 @@ +using Marco.Pms.Model.Dtos.Master; +using Marco.Pms.Model.Master; +using Marco.Pms.Model.ViewModels.Master; + +namespace Marco.Pms.Model.Mapper +{ + public static class MasterMapper + { + // -------------------------------- Work Category -------------------------------- + public static WorkCategoryMaster ToWorkCategoryMasterFromWorkCategoryMasterDto(this WorkCategoryMasterDto categoryMasterDto, Guid tenantId) + { + return new WorkCategoryMaster + { + Id = categoryMasterDto.Id ?? Guid.Empty, + Name = categoryMasterDto.Name, + Description = categoryMasterDto.Description ?? "", + TenantId = tenantId + }; + } + public static WorkCategoryMasterVM ToWorkCategoryMasterVMFromWorkCategoryMaster(this WorkCategoryMaster categoryMaster) + { + return new WorkCategoryMasterVM + { + Id = categoryMaster.Id, + Name = categoryMaster.Name, + Description = categoryMaster.Description ?? "", + IsSystem = categoryMaster.IsSystem + }; + } + } +} diff --git a/Marco.Pms.Model/Master/WorkCategoryMaster.cs b/Marco.Pms.Model/Master/WorkCategoryMaster.cs new file mode 100644 index 0000000..3ca9014 --- /dev/null +++ b/Marco.Pms.Model/Master/WorkCategoryMaster.cs @@ -0,0 +1,12 @@ +using Marco.Pms.Model.Utilities; + +namespace Marco.Pms.Model.Master +{ + public class WorkCategoryMaster : TenantRelation + { + public Guid Id { get; set; } + public string Name { get; set; } = string.Empty; + public string Description { get; set; } = string.Empty; + public bool IsSystem { get; set; } = false; + } +} diff --git a/Marco.Pms.Model/ViewModels/Master/WorkCategoryMasterVM.cs b/Marco.Pms.Model/ViewModels/Master/WorkCategoryMasterVM.cs new file mode 100644 index 0000000..4e11ece --- /dev/null +++ b/Marco.Pms.Model/ViewModels/Master/WorkCategoryMasterVM.cs @@ -0,0 +1,11 @@ + +namespace Marco.Pms.Model.ViewModels.Master +{ + public class WorkCategoryMasterVM + { + public Guid? Id { get; set; } + public string Name { get; set; } = string.Empty; + public string? Description { get; set; } + public bool IsSystem { get; set; } + } +} -- 2.43.0 From 648d8e691a9c31db52e25108fcda0797e164c19a Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Sat, 10 May 2025 15:13:57 +0530 Subject: [PATCH 4/9] Added an API endpoint to retrieve the list of all Work Categories. --- .../Controllers/MasterController.cs | 382 ++++++++++-------- 1 file changed, 207 insertions(+), 175 deletions(-) diff --git a/Marco.Pms.Services/Controllers/MasterController.cs b/Marco.Pms.Services/Controllers/MasterController.cs index 1d482c4..37581b4 100644 --- a/Marco.Pms.Services/Controllers/MasterController.cs +++ b/Marco.Pms.Services/Controllers/MasterController.cs @@ -1,12 +1,14 @@ using Marco.Pms.DataAccess.Data; using Marco.Pms.Model.Dtos.Activities; -using Marco.Pms.Model.Dtos.Forum; +using Marco.Pms.Model.Dtos.Master; using Marco.Pms.Model.Entitlements; using Marco.Pms.Model.Forum; using Marco.Pms.Model.Mapper; +using Marco.Pms.Model.Master; using Marco.Pms.Model.Utilities; using Marco.Pms.Model.ViewModels.Activities; using Marco.Pms.Model.ViewModels.Forum; +using Marco.Pms.Model.ViewModels.Master; using MarcoBMS.Services.Helpers; using MarcoBMS.Services.Service; using Microsoft.AspNetCore.Authorization; @@ -29,6 +31,8 @@ namespace Marco.Pms.Services.Controllers _userHelper = userHelper; _logger = logger; } + + // -------------------------------- Activity -------------------------------- [HttpGet] [Route("activities")] public async Task GetActivitiesMaster() @@ -178,6 +182,9 @@ namespace Marco.Pms.Services.Controllers _logger.LogInfo("Activity Deleted Successfully from tenant {tenantId}", tenantId); return Ok(ApiResponse.SuccessResponse(new { }, "Activity Deleted Successfully", 200)); } + + // -------------------------------- Industry -------------------------------- + [HttpGet] [Route("industries")] public async Task GetIndustries() @@ -189,6 +196,8 @@ namespace Marco.Pms.Services.Controllers return Ok(ApiResponse.SuccessResponse(industries, System.String.Format("{0} industry records fetched successfully", industries.Count), 200)); } + // -------------------------------- Ticket Status -------------------------------- + [HttpGet("ticket-status")] public async Task GetTicketStatusMaster() { @@ -204,51 +213,6 @@ namespace Marco.Pms.Services.Controllers return Ok(ApiResponse.SuccessResponse(statusVMs, System.String.Format("{0} Ticket Status records fetched successfully", statusVMs.Count), 200)); } - [HttpGet("ticket-types")] - public async Task GetTicketTypeMaster() - { - Guid tenantId = _userHelper.GetTenantId(); - List typeVMs = new List(); - List typeMasters = await _context.TicketTypeMasters.Where(s => s.TenantId == tenantId).ToListAsync(); - foreach (var typeMaster in typeMasters) - { - typeVMs.Add(typeMaster.ToTicketTypeVMFromTicketTypeMaster()); - } - - _logger.LogInfo("{count} Ticket Type records fetched successfully from tenant {tenantId}", typeVMs.Count, tenantId); - return Ok(ApiResponse.SuccessResponse(typeVMs, System.String.Format("{0} Ticket Type records fetched successfully", typeVMs.Count), 200)); - } - - [HttpGet("ticket-priorities")] - public async Task GetTicketPriorityMaster() - { - Guid tenantId = _userHelper.GetTenantId(); - List priorityVMs = new List(); - List priorityMasters = await _context.TicketPriorityMasters.Where(s => s.TenantId == tenantId).ToListAsync(); - foreach (var priorityMaster in priorityMasters) - { - priorityVMs.Add(priorityMaster.ToTicketPriorityVMFromTicketPriorityMaster()); - } - - _logger.LogInfo("{count} Ticket Priority records fetched successfully from tenant {tenantId}", priorityVMs.Count, tenantId); - return Ok(ApiResponse.SuccessResponse(priorityVMs, System.String.Format("{0} Ticket Priority records fetched successfully", priorityVMs.Count), 200)); - } - - [HttpGet("ticket-tags")] - public async Task GetTicketTagMaster() - { - Guid tenantId = _userHelper.GetTenantId(); - List tagVMs = new List(); - List tagMasters = await _context.TicketTagMasters.Where(s => s.TenantId == tenantId).ToListAsync(); - foreach (var tagMaster in tagMasters) - { - tagVMs.Add(tagMaster.ToTicketTagVMFromTicketTagMaster()); - } - - _logger.LogInfo("{count} Ticket Tag records fetched successfully from tenant {tenantId}", tagVMs.Count, tenantId); - return Ok(ApiResponse.SuccessResponse(tagVMs, System.String.Format("{0} Ticket Tag records fetched successfully", tagVMs.Count), 200)); - } - [HttpPost("ticket-status")] public async Task CreateTicketStatusMaster(TicketStatusMasterDto statusMasterDto) { @@ -267,63 +231,6 @@ namespace Marco.Pms.Services.Controllers return BadRequest(ApiResponse.ErrorResponse("Sent Empty payload", "Sent Empty payload", 400)); } - [HttpPost("ticket-types")] - public async Task CreateTicketTypeMaster(TicketTypeMasterDto typeMasterDto) - { - Guid tenantId = _userHelper.GetTenantId(); - if (typeMasterDto != null) - { - TicketTypeMaster? typeMaster = typeMasterDto.ToTicketTypeMasterFromTicketTypeMasterDto(tenantId); - _context.TicketTypeMasters.Update(typeMaster); - await _context.SaveChangesAsync(); - - TicketTypeVM typeVM = typeMaster.ToTicketTypeVMFromTicketTypeMaster(); - _logger.LogInfo("Ticket Type master {TicketTypeId} added successfully from tenant {tenantId}", typeMaster.Id, tenantId); - return Ok(ApiResponse.SuccessResponse(typeVM, "Ticket type master added successfully", 200)); - - } - _logger.LogError("User sent empyt payload"); - return BadRequest(ApiResponse.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400)); - } - - [HttpPost("ticket-priorities")] - public async Task CreateTicketPriorityMaster(TicketPriorityMasterDto priorityMasterDto) - { - - Guid tenantId = _userHelper.GetTenantId(); - if (priorityMasterDto != null) - { - TicketPriorityMaster? typeMaster = priorityMasterDto.ToTicketPriorityMasterFromTicketPriorityMasterDto(tenantId); - _context.TicketPriorityMasters.Update(typeMaster); - await _context.SaveChangesAsync(); - - TicketPriorityVM typeVM = typeMaster.ToTicketPriorityVMFromTicketPriorityMaster(); - _logger.LogInfo("Ticket Priority master {TicketPriorityId} added successfully from tenant {tenantId}", typeMaster.Id, tenantId); - return Ok(ApiResponse.SuccessResponse(typeVM, "Ticket Priority master added successfully", 200)); - } - - _logger.LogError("User sent empyt payload"); - return BadRequest(ApiResponse.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400)); - } - - [HttpPost("ticket-tags")] - public async Task CreateTicketTagMaster(TicketTagMasterDto tagMasterDto) - { - Guid tenantId = _userHelper.GetTenantId(); - if (tagMasterDto != null) - { - TicketTagMaster? tagMaster = tagMasterDto.ToTicketTagMasterFromTicketTagMasterDto(tenantId); - _context.TicketTagMasters.Update(tagMaster); - await _context.SaveChangesAsync(); - - TicketTagVM typeVM = tagMaster.ToTicketTagVMFromTicketTagMaster(); - _logger.LogInfo("Ticket Tag master {TicketTypeId} added successfully from tenant {tenantId}", tagMaster.Id, tenantId); - return Ok(ApiResponse.SuccessResponse(typeVM, "Ticket tag master added successfully", 200)); - - } - _logger.LogError("User sent empyt payload"); - return BadRequest(ApiResponse.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400)); - } [HttpPost("ticket-status/edit")] public async Task UpdateTicketStatusMaster(TicketStatusMasterDto statusMasterDto) { @@ -348,78 +255,6 @@ namespace Marco.Pms.Services.Controllers return BadRequest(ApiResponse.ErrorResponse("Sent Empty payload", "Sent Empty payload", 400)); } - [HttpPost("ticket-types/edit")] - public async Task UpdateTicketTypeMaster(TicketTypeMasterDto typeMasterDto) - { - Guid tenantId = _userHelper.GetTenantId(); - if (typeMasterDto != null) - { - TicketTypeMaster? typeMaster = await _context.TicketTypeMasters.AsNoTracking().FirstOrDefaultAsync(s => s.TenantId == tenantId && s.Id == typeMasterDto.Id); - if (typeMaster != null) - { - typeMaster = typeMasterDto.ToTicketTypeMasterFromTicketTypeMasterDto(tenantId); - _context.TicketTypeMasters.Update(typeMaster); - await _context.SaveChangesAsync(); - - TicketTypeVM typeVM = typeMaster.ToTicketTypeVMFromTicketTypeMaster(); - _logger.LogInfo("Ticket Type master {TicketTypeId} updated successfully from tenant {tenantId}", typeMaster.Id, tenantId); - return Ok(ApiResponse.SuccessResponse(typeVM, "Ticket type master updated successfully", 200)); - } - _logger.LogError("Ticket type master {TicketTypeId} not found in database", typeMasterDto.Id != null ? typeMasterDto.Id.Value : Guid.Empty); - return NotFound(ApiResponse.ErrorResponse("Ticket type master not found", "Ticket type master not found", 404)); - } - _logger.LogError("User sent empyt payload"); - return BadRequest(ApiResponse.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400)); - } - - [HttpPost("ticket-priorities/edit")] - public async Task UpdateTicketPriorityMaster(TicketPriorityMasterDto priorityMasterDto) - { - Guid tenantId = _userHelper.GetTenantId(); - if (priorityMasterDto != null) - { - TicketPriorityMaster? typeMaster = await _context.TicketPriorityMasters.AsNoTracking().FirstOrDefaultAsync(s => s.TenantId == tenantId && s.Id == priorityMasterDto.Id); - if (typeMaster != null) - { - typeMaster = priorityMasterDto.ToTicketPriorityMasterFromTicketPriorityMasterDto(tenantId); - _context.TicketPriorityMasters.Update(typeMaster); - await _context.SaveChangesAsync(); - - TicketPriorityVM typeVM = typeMaster.ToTicketPriorityVMFromTicketPriorityMaster(); - _logger.LogInfo("Ticket Priority master {TicketPriorityId} updated successfully from tenant {tenantId}", typeMaster.Id, tenantId); - return Ok(ApiResponse.SuccessResponse(typeVM, "Ticket Priority master updated successfully", 200)); - } - _logger.LogError("Ticket Priority master {TicketPriorityId} not found in database", priorityMasterDto.Id != null ? priorityMasterDto.Id.Value : Guid.Empty); - return NotFound(ApiResponse.ErrorResponse("Ticket Priority master not found", "Ticket Priority master not found", 404)); - } - _logger.LogError("User sent empyt payload"); - return BadRequest(ApiResponse.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400)); - } - - [HttpPost("ticket-tags/edit")] - public async Task UpdateTicketTagMaster(TicketTagMasterDto tagMasterDto) - { - var tenantId = _userHelper.GetTenantId(); - if (tagMasterDto != null) - { - TicketTagMaster? tagMaster = await _context.TicketTagMasters.AsNoTracking().FirstOrDefaultAsync(s => s.TenantId == tenantId && s.Id == tagMasterDto.Id); - if (tagMaster != null) - { - tagMaster = tagMasterDto.ToTicketTagMasterFromTicketTagMasterDto(tenantId); - _context.TicketTagMasters.Update(tagMaster); - await _context.SaveChangesAsync(); - - TicketTagVM typeVM = tagMaster.ToTicketTagVMFromTicketTagMaster(); - _logger.LogInfo("Ticket Tag master {TicketTypeId} updated successfully from tenant {tenantId}", tagMaster.Id, tenantId); - return Ok(ApiResponse.SuccessResponse(typeVM, "Ticket tag master updated successfully", 200)); - } - _logger.LogError("Ticket tag master {TicketTypeId} not found in database", tagMasterDto.Id != null ? tagMasterDto.Id.Value : Guid.Empty); - return NotFound(ApiResponse.ErrorResponse("Ticket tag master not found", "Ticket tag master not found", 404)); - } - _logger.LogError("User sent empyt payload"); - return BadRequest(ApiResponse.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400)); - } - [HttpDelete("ticket-status/{id}")] public async Task DeleteTicketStatusMaster(Guid id) { @@ -448,6 +283,66 @@ namespace Marco.Pms.Services.Controllers } } + // -------------------------------- Ticket Type -------------------------------- + + [HttpGet("ticket-types")] + public async Task GetTicketTypeMaster() + { + Guid tenantId = _userHelper.GetTenantId(); + List typeVMs = new List(); + List typeMasters = await _context.TicketTypeMasters.Where(s => s.TenantId == tenantId).ToListAsync(); + foreach (var typeMaster in typeMasters) + { + typeVMs.Add(typeMaster.ToTicketTypeVMFromTicketTypeMaster()); + } + + _logger.LogInfo("{count} Ticket Type records fetched successfully from tenant {tenantId}", typeVMs.Count, tenantId); + return Ok(ApiResponse.SuccessResponse(typeVMs, System.String.Format("{0} Ticket Type records fetched successfully", typeVMs.Count), 200)); + } + + [HttpPost("ticket-types")] + public async Task CreateTicketTypeMaster(TicketTypeMasterDto typeMasterDto) + { + Guid tenantId = _userHelper.GetTenantId(); + if (typeMasterDto != null) + { + TicketTypeMaster? typeMaster = typeMasterDto.ToTicketTypeMasterFromTicketTypeMasterDto(tenantId); + _context.TicketTypeMasters.Add(typeMaster); + await _context.SaveChangesAsync(); + + TicketTypeVM typeVM = typeMaster.ToTicketTypeVMFromTicketTypeMaster(); + _logger.LogInfo("Ticket Type master {TicketTypeId} added successfully from tenant {tenantId}", typeMaster.Id, tenantId); + return Ok(ApiResponse.SuccessResponse(typeVM, "Ticket type master added successfully", 200)); + + } + _logger.LogError("User sent empyt payload"); + return BadRequest(ApiResponse.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400)); + } + + [HttpPost("ticket-types/edit")] + public async Task UpdateTicketTypeMaster(TicketTypeMasterDto typeMasterDto) + { + Guid tenantId = _userHelper.GetTenantId(); + if (typeMasterDto != null) + { + TicketTypeMaster? typeMaster = await _context.TicketTypeMasters.AsNoTracking().FirstOrDefaultAsync(s => s.TenantId == tenantId && s.Id == typeMasterDto.Id); + if (typeMaster != null) + { + typeMaster = typeMasterDto.ToTicketTypeMasterFromTicketTypeMasterDto(tenantId); + _context.TicketTypeMasters.Update(typeMaster); + await _context.SaveChangesAsync(); + + TicketTypeVM typeVM = typeMaster.ToTicketTypeVMFromTicketTypeMaster(); + _logger.LogInfo("Ticket Type master {TicketTypeId} updated successfully from tenant {tenantId}", typeMaster.Id, tenantId); + return Ok(ApiResponse.SuccessResponse(typeVM, "Ticket type master updated successfully", 200)); + } + _logger.LogError("Ticket type master {TicketTypeId} not found in database", typeMasterDto.Id != null ? typeMasterDto.Id.Value : Guid.Empty); + return NotFound(ApiResponse.ErrorResponse("Ticket type master not found", "Ticket type master not found", 404)); + } + _logger.LogError("User sent empyt payload"); + return BadRequest(ApiResponse.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400)); + } + [HttpDelete("ticket-types/{id}")] public async Task DeleteTicketTypeMaster(Guid id) { @@ -476,6 +371,66 @@ namespace Marco.Pms.Services.Controllers } } + // -------------------------------- Ticket Priority -------------------------------- + + [HttpGet("ticket-priorities")] + public async Task GetTicketPriorityMaster() + { + Guid tenantId = _userHelper.GetTenantId(); + List priorityVMs = new List(); + List priorityMasters = await _context.TicketPriorityMasters.Where(s => s.TenantId == tenantId).ToListAsync(); + foreach (var priorityMaster in priorityMasters) + { + priorityVMs.Add(priorityMaster.ToTicketPriorityVMFromTicketPriorityMaster()); + } + + _logger.LogInfo("{count} Ticket Priority records fetched successfully from tenant {tenantId}", priorityVMs.Count, tenantId); + return Ok(ApiResponse.SuccessResponse(priorityVMs, System.String.Format("{0} Ticket Priority records fetched successfully", priorityVMs.Count), 200)); + } + + [HttpPost("ticket-priorities")] + public async Task CreateTicketPriorityMaster(TicketPriorityMasterDto priorityMasterDto) + { + + Guid tenantId = _userHelper.GetTenantId(); + if (priorityMasterDto != null) + { + TicketPriorityMaster? typeMaster = priorityMasterDto.ToTicketPriorityMasterFromTicketPriorityMasterDto(tenantId); + _context.TicketPriorityMasters.Add(typeMaster); + await _context.SaveChangesAsync(); + + TicketPriorityVM typeVM = typeMaster.ToTicketPriorityVMFromTicketPriorityMaster(); + _logger.LogInfo("Ticket Priority master {TicketPriorityId} added successfully from tenant {tenantId}", typeMaster.Id, tenantId); + return Ok(ApiResponse.SuccessResponse(typeVM, "Ticket Priority master added successfully", 200)); + } + + _logger.LogError("User sent empyt payload"); + return BadRequest(ApiResponse.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400)); + } + [HttpPost("ticket-priorities/edit")] + public async Task UpdateTicketPriorityMaster(TicketPriorityMasterDto priorityMasterDto) + { + Guid tenantId = _userHelper.GetTenantId(); + if (priorityMasterDto != null) + { + TicketPriorityMaster? typeMaster = await _context.TicketPriorityMasters.AsNoTracking().FirstOrDefaultAsync(s => s.TenantId == tenantId && s.Id == priorityMasterDto.Id); + if (typeMaster != null) + { + typeMaster = priorityMasterDto.ToTicketPriorityMasterFromTicketPriorityMasterDto(tenantId); + _context.TicketPriorityMasters.Update(typeMaster); + await _context.SaveChangesAsync(); + + TicketPriorityVM typeVM = typeMaster.ToTicketPriorityVMFromTicketPriorityMaster(); + _logger.LogInfo("Ticket Priority master {TicketPriorityId} updated successfully from tenant {tenantId}", typeMaster.Id, tenantId); + return Ok(ApiResponse.SuccessResponse(typeVM, "Ticket Priority master updated successfully", 200)); + } + _logger.LogError("Ticket Priority master {TicketPriorityId} not found in database", priorityMasterDto.Id != null ? priorityMasterDto.Id.Value : Guid.Empty); + return NotFound(ApiResponse.ErrorResponse("Ticket Priority master not found", "Ticket Priority master not found", 404)); + } + _logger.LogError("User sent empyt payload"); + return BadRequest(ApiResponse.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400)); + } + [HttpDelete("ticket-priorities/{id}")] public async Task DeleteTicketPriorityMaster(Guid id) { @@ -504,6 +459,66 @@ namespace Marco.Pms.Services.Controllers } } + // -------------------------------- Ticket Tag -------------------------------- + + [HttpGet("ticket-tags")] + public async Task GetTicketTagMaster() + { + Guid tenantId = _userHelper.GetTenantId(); + List tagVMs = new List(); + List tagMasters = await _context.TicketTagMasters.Where(s => s.TenantId == tenantId).ToListAsync(); + foreach (var tagMaster in tagMasters) + { + tagVMs.Add(tagMaster.ToTicketTagVMFromTicketTagMaster()); + } + + _logger.LogInfo("{count} Ticket Tag records fetched successfully from tenant {tenantId}", tagVMs.Count, tenantId); + return Ok(ApiResponse.SuccessResponse(tagVMs, System.String.Format("{0} Ticket Tag records fetched successfully", tagVMs.Count), 200)); + } + + [HttpPost("ticket-tags")] + public async Task CreateTicketTagMaster(TicketTagMasterDto tagMasterDto) + { + Guid tenantId = _userHelper.GetTenantId(); + if (tagMasterDto != null) + { + TicketTagMaster? tagMaster = tagMasterDto.ToTicketTagMasterFromTicketTagMasterDto(tenantId); + _context.TicketTagMasters.Add(tagMaster); + await _context.SaveChangesAsync(); + + TicketTagVM typeVM = tagMaster.ToTicketTagVMFromTicketTagMaster(); + _logger.LogInfo("Ticket Tag master {TicketTypeId} added successfully from tenant {tenantId}", tagMaster.Id, tenantId); + return Ok(ApiResponse.SuccessResponse(typeVM, "Ticket tag master added successfully", 200)); + + } + _logger.LogError("User sent empyt payload"); + return BadRequest(ApiResponse.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400)); + } + + [HttpPost("ticket-tags/edit")] + public async Task UpdateTicketTagMaster(TicketTagMasterDto tagMasterDto) + { + var tenantId = _userHelper.GetTenantId(); + if (tagMasterDto != null) + { + TicketTagMaster? tagMaster = await _context.TicketTagMasters.AsNoTracking().FirstOrDefaultAsync(s => s.TenantId == tenantId && s.Id == tagMasterDto.Id); + if (tagMaster != null) + { + tagMaster = tagMasterDto.ToTicketTagMasterFromTicketTagMasterDto(tenantId); + _context.TicketTagMasters.Update(tagMaster); + await _context.SaveChangesAsync(); + + TicketTagVM typeVM = tagMaster.ToTicketTagVMFromTicketTagMaster(); + _logger.LogInfo("Ticket Tag master {TicketTypeId} updated successfully from tenant {tenantId}", tagMaster.Id, tenantId); + return Ok(ApiResponse.SuccessResponse(typeVM, "Ticket tag master updated successfully", 200)); + } + _logger.LogError("Ticket tag master {TicketTypeId} not found in database", tagMasterDto.Id != null ? tagMasterDto.Id.Value : Guid.Empty); + return NotFound(ApiResponse.ErrorResponse("Ticket tag master not found", "Ticket tag master not found", 404)); + } + _logger.LogError("User sent empyt payload"); + return BadRequest(ApiResponse.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400)); + } + [HttpDelete("ticket-tags/{id}")] public async Task DeleteTicketTagMaster(Guid id) { @@ -531,5 +546,22 @@ namespace Marco.Pms.Services.Controllers return NotFound(ApiResponse.ErrorResponse("Ticket tag not found", "Ticket tag not found", 404)); } } + + // -------------------------------- Work Category -------------------------------- + + [HttpGet("work-categories")] + public async Task GetWorkCategoryMasterList() + { + Guid tenantId = _userHelper.GetTenantId(); + List workCategoryMasterVMs = new List(); + List workCategories = await _context.WorkCategoryMasters.Where(s => s.TenantId == tenantId).ToListAsync(); + foreach (var workCategory in workCategories) + { + workCategoryMasterVMs.Add(workCategory.ToWorkCategoryMasterVMFromWorkCategoryMaster()); + } + + _logger.LogInfo("{count} Work Category records fetched successfully from tenant {tenantId}", workCategoryMasterVMs.Count, tenantId); + return Ok(ApiResponse.SuccessResponse(workCategoryMasterVMs, System.String.Format("{0} Work Category records fetched successfully", workCategoryMasterVMs.Count), 200)); + } } } -- 2.43.0 From 20ea1389ddd65c95a94dd5944ad9be4ed37a1c5b Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Sat, 10 May 2025 15:15:30 +0530 Subject: [PATCH 5/9] Added an API endpoint to retrieve the Work Category by ID --- .../Controllers/MasterController.cs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/Marco.Pms.Services/Controllers/MasterController.cs b/Marco.Pms.Services/Controllers/MasterController.cs index 37581b4..87b03e2 100644 --- a/Marco.Pms.Services/Controllers/MasterController.cs +++ b/Marco.Pms.Services/Controllers/MasterController.cs @@ -563,5 +563,23 @@ namespace Marco.Pms.Services.Controllers _logger.LogInfo("{count} Work Category records fetched successfully from tenant {tenantId}", workCategoryMasterVMs.Count, tenantId); return Ok(ApiResponse.SuccessResponse(workCategoryMasterVMs, System.String.Format("{0} Work Category records fetched successfully", workCategoryMasterVMs.Count), 200)); } + + [HttpGet("work-category/{id})")] + public async Task GetWorkCategoryMaster(Guid id) + { + Guid tenantId = _userHelper.GetTenantId(); + WorkCategoryMaster? workCategory = await _context.WorkCategoryMasters.FirstOrDefaultAsync(s => s.TenantId == tenantId && s.Id == id); + if (workCategory != null) + { + WorkCategoryMasterVM workCategoryMasterVM = workCategory.ToWorkCategoryMasterVMFromWorkCategoryMaster(); + _logger.LogInfo("{WorkCategoryId} Work Category fetched successfully from tenant {tenantId}", workCategoryMasterVM.Id ?? Guid.Empty, tenantId); + return Ok(ApiResponse.SuccessResponse(workCategoryMasterVM, "Work Category fetched successfully", 200)); + } + + _logger.LogInfo("{WorkCategoryId} Work Category not found in database", id); + return NotFound(ApiResponse.ErrorResponse("Work Category not found", "Work Category not found", 404)); + } + + } } -- 2.43.0 From 6f378fe0bd6f0f5a019c1b4c48a3fadf6cfde16b Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Sat, 10 May 2025 15:17:02 +0530 Subject: [PATCH 6/9] Added an API endpoint to create a new Work Category entry. --- .../Controllers/MasterController.cs | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/Marco.Pms.Services/Controllers/MasterController.cs b/Marco.Pms.Services/Controllers/MasterController.cs index 87b03e2..1d7a9f3 100644 --- a/Marco.Pms.Services/Controllers/MasterController.cs +++ b/Marco.Pms.Services/Controllers/MasterController.cs @@ -580,6 +580,36 @@ namespace Marco.Pms.Services.Controllers return NotFound(ApiResponse.ErrorResponse("Work Category not found", "Work Category not found", 404)); } + [HttpPost("work-category")] + public async Task CreateWorkCategoryMaster(WorkCategoryMasterDto workCategoryMasterDto) + { + Guid tenantId = _userHelper.GetTenantId(); + if (workCategoryMasterDto != null) + { + WorkCategoryMaster? existingWorkCategory = await _context.WorkCategoryMasters.FirstOrDefaultAsync(w => w.Name == workCategoryMasterDto.Name); + if (existingWorkCategory != null) + { + _logger.LogWarning("Work Category of name {WorkCategoryName} already exist", existingWorkCategory.Name); + return Conflict(ApiResponse.ErrorResponse("Work Category already exist", "Work Category already exist", 409)); + } + WorkCategoryMaster? workCategory = workCategoryMasterDto.ToWorkCategoryMasterFromWorkCategoryMasterDto(tenantId); + WorkCategoryMasterVM workCategoryMasterVM = new WorkCategoryMasterVM(); + if (workCategory != null && workCategory.Id == Guid.Empty) + { + + _context.WorkCategoryMasters.Add(workCategory); + await _context.SaveChangesAsync(); + + workCategoryMasterVM = workCategory.ToWorkCategoryMasterVMFromWorkCategoryMaster(); + } + _logger.LogInfo("Work category master {WorkCategoryId} added successfully from tenant {tenantId}", workCategoryMasterVM.Id ?? Guid.Empty, tenantId); + return Ok(ApiResponse.SuccessResponse(workCategoryMasterVM, "Work category master added successfully", 200)); + + } + _logger.LogError("User sent empyt payload"); + return BadRequest(ApiResponse.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400)); + } + } } -- 2.43.0 From 5953f37e57343b22decf9351eec61390d3294c05 Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Sat, 10 May 2025 15:22:10 +0530 Subject: [PATCH 7/9] Added an API endpoint to update an existing Work Category, with update allowed only if IsSystem = false. --- .../Controllers/MasterController.cs | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/Marco.Pms.Services/Controllers/MasterController.cs b/Marco.Pms.Services/Controllers/MasterController.cs index 1d7a9f3..6ad8690 100644 --- a/Marco.Pms.Services/Controllers/MasterController.cs +++ b/Marco.Pms.Services/Controllers/MasterController.cs @@ -610,6 +610,34 @@ namespace Marco.Pms.Services.Controllers return BadRequest(ApiResponse.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400)); } + [HttpPost("work-category/edit")] + public async Task UpdateWorkCategoryMaster(WorkCategoryMasterDto workCategoryMasterDto) + { + var tenantId = _userHelper.GetTenantId(); + if (workCategoryMasterDto != null) + { + WorkCategoryMaster? workCategory = await _context.WorkCategoryMasters.AsNoTracking().FirstOrDefaultAsync(s => s.TenantId == tenantId && s.Id == workCategoryMasterDto.Id); + if (workCategory != null) + { + if (workCategory.IsSystem) + { + _logger.LogError("User tries to update system-defined work category"); + return BadRequest(ApiResponse.ErrorResponse("Cannot update system-defined work", "Cannot update system-defined work", 400)); + } + workCategory = workCategoryMasterDto.ToWorkCategoryMasterFromWorkCategoryMasterDto(tenantId); + _context.WorkCategoryMasters.Update(workCategory); + await _context.SaveChangesAsync(); + + WorkCategoryMasterVM workCategoryMasterVM = workCategory.ToWorkCategoryMasterVMFromWorkCategoryMaster(); + _logger.LogInfo("Work category master {WorkCategoryId} updated successfully from tenant {tenantId}", workCategory.Id, tenantId); + return Ok(ApiResponse.SuccessResponse(workCategoryMasterVM, "Work category master updated successfully", 200)); + } + _logger.LogError("Work category master {WorkCategoryId} not found in database", workCategoryMasterDto.Id ?? Guid.Empty); + return NotFound(ApiResponse.ErrorResponse("Work category master not found", "Work category master not found", 404)); + } + _logger.LogError("User sent empyt payload"); + return BadRequest(ApiResponse.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400)); + } } } -- 2.43.0 From ec7e754f590a5caaaf32de1cf92cdc0d4f18126f Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Sat, 10 May 2025 15:23:29 +0530 Subject: [PATCH 8/9] Added an API endpoint to delete a Work Category, allowing deletion only if IsSystem = false. --- .../Controllers/MasterController.cs | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/Marco.Pms.Services/Controllers/MasterController.cs b/Marco.Pms.Services/Controllers/MasterController.cs index 6ad8690..f3e5c4e 100644 --- a/Marco.Pms.Services/Controllers/MasterController.cs +++ b/Marco.Pms.Services/Controllers/MasterController.cs @@ -639,5 +639,33 @@ namespace Marco.Pms.Services.Controllers return BadRequest(ApiResponse.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400)); } + [HttpDelete("work-category/{id}")] + public async Task DeleteWorkCategoryMaster(Guid id) + { + var tenantId = _userHelper.GetTenantId(); + var LoggedEmployee = await _userHelper.GetCurrentEmployeeAsync(); + WorkCategoryMaster? workCategory = await _context.WorkCategoryMasters.FirstOrDefaultAsync(t => t.TenantId == tenantId && t.Id == id); + if (workCategory != null) + { + if (workCategory.IsSystem == false) + { + _context.WorkCategoryMasters.Remove(workCategory); + await _context.SaveChangesAsync(); + + _logger.LogInfo("Work category {WorkCategoryId} deleted successfully from tenant {tenantId}", id, tenantId); + return Ok(ApiResponse.SuccessResponse(new { }, "Work category deleted successfully", 200)); + } + else + { + _logger.LogWarning("Employee with {LoggedEmployeeId} tries to delete system-defined work category {WorkCategoryId}", LoggedEmployee.Id, id); + return BadRequest(ApiResponse.ErrorResponse("Can not delete system-defined work category", "Can not delete system-defined work category", 400)); + } + } + else + { + _logger.LogError("Work category {WorkCategoryId} not found in database", id); + return NotFound(ApiResponse.ErrorResponse("Work category not found", "Work category not found", 404)); + } + } } } -- 2.43.0 From 8fae161095d06f57cd5cdbc08c4b6e0db04d2259 Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Sat, 10 May 2025 18:14:25 +0530 Subject: [PATCH 9/9] Added "id" in updating endpiont url --- .../Controllers/MasterController.cs | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/Marco.Pms.Services/Controllers/MasterController.cs b/Marco.Pms.Services/Controllers/MasterController.cs index f3e5c4e..b89dc91 100644 --- a/Marco.Pms.Services/Controllers/MasterController.cs +++ b/Marco.Pms.Services/Controllers/MasterController.cs @@ -214,7 +214,7 @@ namespace Marco.Pms.Services.Controllers } [HttpPost("ticket-status")] - public async Task CreateTicketStatusMaster(TicketStatusMasterDto statusMasterDto) + public async Task CreateTicketStatusMaster([FromBody] TicketStatusMasterDto statusMasterDto) { Guid tenantId = _userHelper.GetTenantId(); if (statusMasterDto != null) @@ -231,11 +231,11 @@ namespace Marco.Pms.Services.Controllers return BadRequest(ApiResponse.ErrorResponse("Sent Empty payload", "Sent Empty payload", 400)); } - [HttpPost("ticket-status/edit")] - public async Task UpdateTicketStatusMaster(TicketStatusMasterDto statusMasterDto) + [HttpPost("ticket-status/edit/{id}")] + public async Task UpdateTicketStatusMaster(Guid id, [FromBody] TicketStatusMasterDto statusMasterDto) { Guid tenantId = _userHelper.GetTenantId(); - if (statusMasterDto != null) + if (statusMasterDto != null && statusMasterDto.Id != id) { TicketStatusMaster? statusMaster = await _context.TicketStatusMasters.AsNoTracking().FirstOrDefaultAsync(s => s.TenantId == tenantId && s.Id == statusMasterDto.Id); if (statusMaster != null) @@ -301,7 +301,7 @@ namespace Marco.Pms.Services.Controllers } [HttpPost("ticket-types")] - public async Task CreateTicketTypeMaster(TicketTypeMasterDto typeMasterDto) + public async Task CreateTicketTypeMaster([FromBody] TicketTypeMasterDto typeMasterDto) { Guid tenantId = _userHelper.GetTenantId(); if (typeMasterDto != null) @@ -319,11 +319,11 @@ namespace Marco.Pms.Services.Controllers return BadRequest(ApiResponse.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400)); } - [HttpPost("ticket-types/edit")] - public async Task UpdateTicketTypeMaster(TicketTypeMasterDto typeMasterDto) + [HttpPost("ticket-types/edit/{id}")] + public async Task UpdateTicketTypeMaster(Guid id, [FromBody] TicketTypeMasterDto typeMasterDto) { Guid tenantId = _userHelper.GetTenantId(); - if (typeMasterDto != null) + if (typeMasterDto != null && typeMasterDto.Id != id) { TicketTypeMaster? typeMaster = await _context.TicketTypeMasters.AsNoTracking().FirstOrDefaultAsync(s => s.TenantId == tenantId && s.Id == typeMasterDto.Id); if (typeMaster != null) @@ -389,7 +389,7 @@ namespace Marco.Pms.Services.Controllers } [HttpPost("ticket-priorities")] - public async Task CreateTicketPriorityMaster(TicketPriorityMasterDto priorityMasterDto) + public async Task CreateTicketPriorityMaster([FromBody] TicketPriorityMasterDto priorityMasterDto) { Guid tenantId = _userHelper.GetTenantId(); @@ -407,11 +407,11 @@ namespace Marco.Pms.Services.Controllers _logger.LogError("User sent empyt payload"); return BadRequest(ApiResponse.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400)); } - [HttpPost("ticket-priorities/edit")] - public async Task UpdateTicketPriorityMaster(TicketPriorityMasterDto priorityMasterDto) + [HttpPost("ticket-priorities/edit/{id}")] + public async Task UpdateTicketPriorityMaster(Guid id, [FromBody] TicketPriorityMasterDto priorityMasterDto) { Guid tenantId = _userHelper.GetTenantId(); - if (priorityMasterDto != null) + if (priorityMasterDto != null && priorityMasterDto.Id != null) { TicketPriorityMaster? typeMaster = await _context.TicketPriorityMasters.AsNoTracking().FirstOrDefaultAsync(s => s.TenantId == tenantId && s.Id == priorityMasterDto.Id); if (typeMaster != null) @@ -477,7 +477,7 @@ namespace Marco.Pms.Services.Controllers } [HttpPost("ticket-tags")] - public async Task CreateTicketTagMaster(TicketTagMasterDto tagMasterDto) + public async Task CreateTicketTagMaster([FromBody] TicketTagMasterDto tagMasterDto) { Guid tenantId = _userHelper.GetTenantId(); if (tagMasterDto != null) @@ -495,11 +495,11 @@ namespace Marco.Pms.Services.Controllers return BadRequest(ApiResponse.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400)); } - [HttpPost("ticket-tags/edit")] - public async Task UpdateTicketTagMaster(TicketTagMasterDto tagMasterDto) + [HttpPost("ticket-tags/edit/{id}")] + public async Task UpdateTicketTagMaster(Guid id, [FromBody] TicketTagMasterDto tagMasterDto) { var tenantId = _userHelper.GetTenantId(); - if (tagMasterDto != null) + if (tagMasterDto != null && tagMasterDto.Id != id) { TicketTagMaster? tagMaster = await _context.TicketTagMasters.AsNoTracking().FirstOrDefaultAsync(s => s.TenantId == tenantId && s.Id == tagMasterDto.Id); if (tagMaster != null) @@ -581,7 +581,7 @@ namespace Marco.Pms.Services.Controllers } [HttpPost("work-category")] - public async Task CreateWorkCategoryMaster(WorkCategoryMasterDto workCategoryMasterDto) + public async Task CreateWorkCategoryMaster([FromBody] WorkCategoryMasterDto workCategoryMasterDto) { Guid tenantId = _userHelper.GetTenantId(); if (workCategoryMasterDto != null) @@ -610,11 +610,11 @@ namespace Marco.Pms.Services.Controllers return BadRequest(ApiResponse.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400)); } - [HttpPost("work-category/edit")] - public async Task UpdateWorkCategoryMaster(WorkCategoryMasterDto workCategoryMasterDto) + [HttpPost("work-category/edit/{id}")] + public async Task UpdateWorkCategoryMaster(Guid id, [FromBody] WorkCategoryMasterDto workCategoryMasterDto) { var tenantId = _userHelper.GetTenantId(); - if (workCategoryMasterDto != null) + if (workCategoryMasterDto != null && workCategoryMasterDto.Id != id) { WorkCategoryMaster? workCategory = await _context.WorkCategoryMasters.AsNoTracking().FirstOrDefaultAsync(s => s.TenantId == tenantId && s.Id == workCategoryMasterDto.Id); if (workCategory != null) -- 2.43.0