diff --git a/Marco.Pms.DataAccess/Data/ApplicationDbContext.cs b/Marco.Pms.DataAccess/Data/ApplicationDbContext.cs index c67381f..bb4003c 100644 --- a/Marco.Pms.DataAccess/Data/ApplicationDbContext.cs +++ b/Marco.Pms.DataAccess/Data/ApplicationDbContext.cs @@ -72,6 +72,7 @@ namespace Marco.Pms.DataAccess.Data public DbSet RolePermissionMappings { get; set; } public DbSetIndustries { get; set; } + public DbSetActivityCheckLists { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { diff --git a/Marco.Pms.DataAccess/Initializer/DBInitializer.cs b/Marco.Pms.DataAccess/Initializer/DBInitializer.cs index 889e3d7..7b91925 100644 --- a/Marco.Pms.DataAccess/Initializer/DBInitializer.cs +++ b/Marco.Pms.DataAccess/Initializer/DBInitializer.cs @@ -79,7 +79,7 @@ namespace Marco.Pms.DataAccess.Initializer ApplicationUserId = user.Id, BirthDate = DateTime.MinValue, PanNumber = "", - PeramnentAddress = "", + PermanentAddress = "", PhoneNumber = "", TenantId = user.TenantId }; diff --git a/Marco.Pms.DataAccess/Migrations/20250414053152_Added_Check_List_Table.Designer.cs b/Marco.Pms.DataAccess/Migrations/20250414053152_Added_Check_List_Table.Designer.cs new file mode 100644 index 0000000..add9510 --- /dev/null +++ b/Marco.Pms.DataAccess/Migrations/20250414053152_Added_Check_List_Table.Designer.cs @@ -0,0 +1,2073 @@ +// +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("20250414053152_Added_Check_List_Table")] + partial class Added_Check_List_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("bigint"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("AssignedBy") + .HasColumnType("int"); + + 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("int"); + + b.Property("WorkItemId") + .HasColumnType("int"); + + 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("bigint"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Comment") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("CommentDate") + .HasColumnType("datetime(6)"); + + b.Property("CommentedBy") + .HasColumnType("int"); + + b.Property("TaskAllocationId") + .HasColumnType("bigint"); + + b.Property("TenantId") + .HasColumnType("int"); + + 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("bigint"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("EmployeeId") + .HasColumnType("int"); + + b.Property("TaskAllocationId") + .HasColumnType("bigint"); + + b.Property("TenantId") + .HasColumnType("int"); + + 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("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Activity") + .HasColumnType("int"); + + b.Property("ApprovedBy") + .HasColumnType("int"); + + b.Property("AttendanceDate") + .HasColumnType("datetime(6)"); + + b.Property("Comment") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Date") + .HasColumnType("datetime(6)"); + + b.Property("EmployeeID") + .HasColumnType("int"); + + b.Property("InTime") + .HasColumnType("datetime(6)"); + + b.Property("IsApproved") + .HasColumnType("tinyint(1)"); + + b.Property("OutTime") + .HasColumnType("datetime(6)"); + + b.Property("ProjectID") + .HasColumnType("int"); + + b.Property("TenantId") + .HasColumnType("int"); + + 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("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Activity") + .HasColumnType("int"); + + b.Property("ActivityTime") + .HasColumnType("datetime(6)"); + + b.Property("AttendanceId") + .HasColumnType("int"); + + b.Property("Comment") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("EmployeeID") + .HasColumnType("int"); + + b.Property("Latitude") + .HasColumnType("longtext"); + + b.Property("Longitude") + .HasColumnType("longtext"); + + b.Property("Photo") + .HasColumnType("longblob"); + + b.Property("TenantId") + .HasColumnType("int"); + + b.Property("UpdatedBy") + .HasColumnType("int"); + + b.Property("UpdatedOn") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AttendanceId"); + + 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("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + 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.Employees.Employee", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + 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("JobRoleId") + .HasColumnType("int"); + + 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("int"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationUserId"); + + b.HasIndex("JobRoleId"); + + b.HasIndex("TenantId"); + + b.ToTable("Employees"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Employees.WorkShift", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("EndTime") + .HasColumnType("time(6)"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("StartTime") + .HasColumnType("time(6)"); + + b.Property("TenantId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("TenantId"); + + b.ToTable("WorkShifts"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Entitlements.ActivityCheckList", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ActivityMasterId") + .HasColumnType("int"); + + b.Property("Check") + .HasColumnType("longtext"); + + b.Property("IsChecked") + .HasColumnType("tinyint(1)"); + + b.Property("IsMandatory") + .HasColumnType("tinyint(1)"); + + b.Property("TenantId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("ActivityCheckLists"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Entitlements.ActivityMaster", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ActivityName") + .HasColumnType("longtext"); + + b.Property("IsActive") + .HasColumnType("tinyint(1)"); + + b.Property("TenantId") + .HasColumnType("int"); + + b.Property("UnitOfMeasurement") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.HasIndex("TenantId"); + + b.ToTable("ActivityMasters"); + + b.HasData( + new + { + Id = 1, + ActivityName = "Core Cutting", + IsActive = true, + TenantId = 1, + UnitOfMeasurement = "Number" + }, + new + { + Id = 2, + ActivityName = "Fabrication", + IsActive = true, + TenantId = 1, + UnitOfMeasurement = "Meter" + }, + new + { + Id = 3, + ActivityName = "Lifting", + IsActive = true, + TenantId = 1, + UnitOfMeasurement = "Meter" + }, + new + { + Id = 4, + ActivityName = "Hanging", + IsActive = true, + TenantId = 1, + UnitOfMeasurement = "Meter" + }, + new + { + Id = 5, + ActivityName = "Tapping", + IsActive = true, + TenantId = 1, + UnitOfMeasurement = "Meter" + }, + new + { + Id = 6, + ActivityName = "Welding", + IsActive = true, + TenantId = 1, + UnitOfMeasurement = "Meter" + }, + new + { + Id = 7, + ActivityName = "Testing", + IsActive = true, + TenantId = 1, + UnitOfMeasurement = "Area" + }, + new + { + Id = 8, + ActivityName = "Painting", + IsActive = true, + TenantId = 1, + UnitOfMeasurement = "Meter" + }, + new + { + Id = 9, + ActivityName = "Marking Area", + IsActive = true, + TenantId = 1, + UnitOfMeasurement = "Meter" + }, + new + { + Id = 10, + ActivityName = "Drilling", + IsActive = true, + TenantId = 1, + UnitOfMeasurement = "Number" + }, + new + { + Id = 11, + ActivityName = "MS Support Fabrication", + IsActive = true, + TenantId = 1, + UnitOfMeasurement = "Number" + }, + new + { + Id = 12, + ActivityName = "MS Support Hanging", + IsActive = true, + TenantId = 1, + UnitOfMeasurement = "Number" + }, + new + { + Id = 13, + ActivityName = "Hydrant Volve", + IsActive = true, + TenantId = 1, + UnitOfMeasurement = "Number" + }, + new + { + Id = 14, + ActivityName = "Sprinkler Installation", + IsActive = true, + TenantId = 1, + UnitOfMeasurement = "Number" + }); + }); + + modelBuilder.Entity("Marco.Pms.Model.Entitlements.ApplicationRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("Role") + .HasColumnType("longtext"); + + b.Property("TenantId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("TenantId"); + + b.ToTable("ApplicationRoles"); + + b.HasData( + new + { + Id = new Guid("2c8d0808-c421-11ef-9b93-0242ac110002"), + Description = "", + Role = "Admin", + TenantId = 1 + }, + new + { + Id = new Guid("62e0918d-c421-11ef-9b93-0242ac110002"), + Description = "", + Role = "Welder", + TenantId = 1 + }, + new + { + Id = new Guid("68823f1f-c421-11ef-9b93-0242ac110002"), + Description = "", + Role = "Helper", + TenantId = 1 + }, + new + { + Id = new Guid("6d3a7c72-c421-11ef-9b93-0242ac110002"), + Description = "", + Role = "Site Engineer", + TenantId = 1 + }, + new + { + Id = new Guid("6d3aad72-c421-11ef-9b93-0242ac110002"), + Description = "", + Role = "Project Manager", + TenantId = 1 + }); + }); + + modelBuilder.Entity("Marco.Pms.Model.Entitlements.EmployeeRoleMapping", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("EmployeeId") + .HasColumnType("int"); + + b.Property("IsEnabled") + .HasColumnType("tinyint(1)"); + + b.Property("RoleId") + .HasColumnType("char(36)"); + + b.Property("TenantId") + .HasColumnType("int"); + + 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("int"); + + 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 = 1, + Name = "Manage Project" + }, + new + { + Id = new Guid("9666de86-d7c7-4d3d-acaa-fcd6d6b81f3c"), + Description = "Manage Infra", + IsActive = true, + ModuleId = 1, + Name = "Manage Infra" + }, + new + { + Id = new Guid("9d4b5489-2079-40b9-bd77-6e1bf90bc19f"), + Description = "Manage Tasks", + IsActive = true, + ModuleId = 1, + Name = "Manage Tasks" + }, + new + { + Id = new Guid("39e66f81-efc6-446c-95bd-46bff6cfb606"), + Description = "Assign and Update Tasks Progress", + IsActive = true, + ModuleId = 1, + Name = "Assign and Update Tasks Progress" + }, + new + { + Id = new Guid("81ab8a87-8ccd-4015-a917-0627cee6a100"), + Description = "Manage Employee", + IsActive = true, + ModuleId = 2, + Name = "Manage Employee" + }, + new + { + Id = new Guid("52c9cf54-1eb2-44d2-81bb-524cf29c0a94"), + Description = "Attendance", + IsActive = true, + ModuleId = 2, + Name = "Attendance" + }, + new + { + Id = new Guid("be3b3afc-6ccf-4566-b9b6-aafcb65546be"), + Description = "Global Masters", + IsActive = true, + ModuleId = 3, + Name = "Global Masters" + }, + new + { + Id = new Guid("660131a4-788c-4739-a082-cbbf7879cbf2"), + Description = "Tenant Masters", + IsActive = true, + ModuleId = 3, + Name = "Tenant Masters" + }); + }); + + 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.JobRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("TenantId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("TenantId"); + + b.ToTable("JobRoles"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Entitlements.Module", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + 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 = 1, + Description = "Project Module", + Key = "b04da7e9-0406-409c-ac7f-b97256e6ea02", + Name = "Project" + }, + new + { + Id = 2, + Description = "Employee Module", + Key = "0971c7fb-6ce1-458a-ae3f-8d3205893637", + Name = "Employee" + }, + new + { + Id = 3, + Description = "Masters Module", + Key = "504ec132-e6a9-422f-8f85-050602cfce05", + Name = "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.StatusMaster", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Status") + .HasColumnType("longtext"); + + b.Property("TenantId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("TenantId"); + + b.ToTable("StatusMasters"); + + b.HasData( + new + { + Id = 1, + Status = "Active", + TenantId = 1 + }, + new + { + Id = 2, + Status = "In Progress", + TenantId = 1 + }, + new + { + Id = 3, + Status = "On Hold", + TenantId = 1 + }, + new + { + Id = 4, + Status = "Completed", + TenantId = 1 + }); + }); + + modelBuilder.Entity("Marco.Pms.Model.Entitlements.Tenant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ContactName") + .HasColumnType("longtext"); + + b.Property("ContactNumber") + .HasColumnType("longtext"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("DomainName") + .HasColumnType("longtext"); + + b.Property("IndustryId") + .HasColumnType("int"); + + 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 = 1, + ContactName = "Admin", + ContactNumber = "123456789", + Description = "", + DomainName = "www.marcobms.org", + IndustryId = 1, + IsActive = true, + Name = "MarcoBMS", + OnBoardingDate = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified) + }); + }); + + modelBuilder.Entity("Marco.Pms.Model.Industries.Industry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Name") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("Industries"); + + b.HasData( + new + { + Id = 1, + Name = "Information Technology (IT) Services" + }, + new + { + Id = 2, + Name = "Manufacturing & Production" + }, + new + { + Id = 3, + Name = "Energy & Resources" + }, + new + { + Id = 4, + Name = "Finance & Professional Services" + }, + new + { + Id = 5, + Name = "Hospitals and Healthcare Services" + }, + new + { + Id = 6, + Name = "Social Services" + }, + new + { + Id = 7, + Name = "Retail & Consumer Services" + }, + new + { + Id = 8, + Name = "Transportation & Logistics" + }, + new + { + Id = 9, + Name = "Education & Training" + }); + }); + + modelBuilder.Entity("Marco.Pms.Model.Projects.Building", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("Name") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("ProjectId") + .HasColumnType("int"); + + b.Property("TenantId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("TenantId"); + + b.ToTable("Buildings"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Projects.Floor", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("BuildingId") + .HasColumnType("int"); + + b.Property("FloorName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("TenantId") + .HasColumnType("int"); + + 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("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + 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("int"); + + b.Property("StartDate") + .HasColumnType("datetime(6)"); + + b.Property("TenantId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ProjectStatusId"); + + b.HasIndex("TenantId"); + + b.ToTable("Projects"); + + b.HasData( + new + { + Id = 1, + ContactPerson = "Project 1 Contact Person", + Name = "Project 1", + ProjectAddress = "Project 1 Address", + ProjectStatusId = 1, + TenantId = 1 + }, + new + { + Id = 2, + ContactPerson = "Project 2 Contact Person", + Name = "Project 2", + ProjectAddress = "Project 2 Address", + ProjectStatusId = 2, + TenantId = 1 + }, + new + { + Id = 3, + ContactPerson = "Project 3 Contact Person", + Name = "Project 3", + ProjectAddress = "Project 3 Address", + ProjectStatusId = 3, + TenantId = 1 + }); + }); + + modelBuilder.Entity("Marco.Pms.Model.Projects.ProjectAllocation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("AllocationDate") + .HasColumnType("datetime(6)"); + + b.Property("EmployeeId") + .HasColumnType("int"); + + b.Property("IsActive") + .HasColumnType("tinyint(1)"); + + b.Property("JobRoleId") + .HasColumnType("int"); + + b.Property("ProjectId") + .HasColumnType("int"); + + b.Property("ReAllocationDate") + .HasColumnType("datetime(6)"); + + b.Property("TenantId") + .HasColumnType("int"); + + 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("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("AreaName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("FloorId") + .HasColumnType("int"); + + b.Property("TenantId") + .HasColumnType("int"); + + 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("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ActivityId") + .HasColumnType("int"); + + b.Property("CompletedWork") + .HasColumnType("double"); + + b.Property("PlannedWork") + .HasColumnType("double"); + + b.Property("TaskDate") + .HasColumnType("datetime(6)"); + + b.Property("TenantId") + .HasColumnType("int"); + + b.Property("WorkAreaId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ActivityId"); + + b.HasIndex("TenantId"); + + b.HasIndex("WorkAreaId"); + + b.ToTable("WorkItems"); + }); + + 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("int"); + + 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.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("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.Employees.Employee", b => + { + b.HasOne("Marco.Pms.Model.Entitlements.ApplicationUser", "ApplicationUser") + .WithMany() + .HasForeignKey("ApplicationUserId"); + + b.HasOne("Marco.Pms.Model.Entitlements.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.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 => + { + b.HasOne("Marco.Pms.Model.Employees.Employee", "Employee") + .WithMany() + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Marco.Pms.Model.Entitlements.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.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 => + { + b.HasOne("Marco.Pms.Model.Entitlements.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("Marco.Pms.Model.Entitlements.RolePermissionMappings", b => + { + b.HasOne("Marco.Pms.Model.Entitlements.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.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") + .WithMany() + .HasForeignKey("IndustryId"); + + b.Navigation("Industry"); + }); + + 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.Entitlements.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.Entitlements.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("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.Entitlements.Feature", b => + { + b.Navigation("FeaturePermissions"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Marco.Pms.DataAccess/Migrations/20250414053152_Added_Check_List_Table.cs b/Marco.Pms.DataAccess/Migrations/20250414053152_Added_Check_List_Table.cs new file mode 100644 index 0000000..c90fd46 --- /dev/null +++ b/Marco.Pms.DataAccess/Migrations/20250414053152_Added_Check_List_Table.cs @@ -0,0 +1,984 @@ +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Marco.Pms.DataAccess.Migrations +{ + /// + public partial class Added_Check_List_Table : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "PeramnentAddress", + table: "Employees"); + + migrationBuilder.AlterColumn( + name: "Name", + table: "WorkShifts", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "Name", + table: "Tenants", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "DomainName", + table: "Tenants", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "Description", + table: "Tenants", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "ContactNumber", + table: "Tenants", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "ContactName", + table: "Tenants", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "Status", + table: "StatusMasters", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "UserId", + table: "RefreshTokens", + type: "varchar(255)", + nullable: true, + oldClrType: typeof(string), + oldType: "varchar(255)") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "Token", + table: "RefreshTokens", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "ProjectAddress", + table: "Projects", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "ContactPerson", + table: "Projects", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "Description", + table: "Modules", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "Name", + table: "JobRoles", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "Name", + table: "Industries", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "Name", + table: "Features", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "Description", + table: "Features", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "Name", + table: "FeaturePermissions", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "Description", + table: "FeaturePermissions", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "PhoneNumber", + table: "Employees", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "LastName", + table: "Employees", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "Gender", + table: "Employees", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "FirstName", + table: "Employees", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "EmergencyPhoneNumber", + table: "Employees", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "EmergencyContactPerson", + table: "Employees", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "CurrentAddress", + table: "Employees", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AddColumn( + name: "PermanentAddress", + table: "Employees", + type: "longtext", + nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "Role", + table: "ApplicationRoles", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "Description", + table: "ApplicationRoles", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "UnitOfMeasurement", + table: "ActivityMasters", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AlterColumn( + name: "ActivityName", + table: "ActivityMasters", + type: "longtext", + nullable: true, + oldClrType: typeof(string), + oldType: "longtext") + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AddColumn( + name: "IsActive", + table: "ActivityMasters", + type: "tinyint(1)", + nullable: false, + defaultValue: false); + + migrationBuilder.CreateTable( + name: "ActivityCheckLists", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + ActivityMasterId = table.Column(type: "int", nullable: false), + Check = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + IsChecked = table.Column(type: "tinyint(1)", nullable: false), + IsMandatory = table.Column(type: "tinyint(1)", nullable: false), + TenantId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ActivityCheckLists", x => x.Id); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.UpdateData( + table: "ActivityMasters", + keyColumn: "Id", + keyValue: 1, + column: "IsActive", + value: true); + + migrationBuilder.UpdateData( + table: "ActivityMasters", + keyColumn: "Id", + keyValue: 2, + column: "IsActive", + value: true); + + migrationBuilder.UpdateData( + table: "ActivityMasters", + keyColumn: "Id", + keyValue: 3, + column: "IsActive", + value: true); + + migrationBuilder.UpdateData( + table: "ActivityMasters", + keyColumn: "Id", + keyValue: 4, + column: "IsActive", + value: true); + + migrationBuilder.UpdateData( + table: "ActivityMasters", + keyColumn: "Id", + keyValue: 5, + column: "IsActive", + value: true); + + migrationBuilder.UpdateData( + table: "ActivityMasters", + keyColumn: "Id", + keyValue: 6, + column: "IsActive", + value: true); + + migrationBuilder.UpdateData( + table: "ActivityMasters", + keyColumn: "Id", + keyValue: 7, + column: "IsActive", + value: true); + + migrationBuilder.UpdateData( + table: "ActivityMasters", + keyColumn: "Id", + keyValue: 8, + column: "IsActive", + value: true); + + migrationBuilder.UpdateData( + table: "ActivityMasters", + keyColumn: "Id", + keyValue: 9, + column: "IsActive", + value: true); + + migrationBuilder.UpdateData( + table: "ActivityMasters", + keyColumn: "Id", + keyValue: 10, + column: "IsActive", + value: true); + + migrationBuilder.UpdateData( + table: "ActivityMasters", + keyColumn: "Id", + keyValue: 11, + column: "IsActive", + value: true); + + migrationBuilder.UpdateData( + table: "ActivityMasters", + keyColumn: "Id", + keyValue: 12, + column: "IsActive", + value: true); + + migrationBuilder.UpdateData( + table: "ActivityMasters", + keyColumn: "Id", + keyValue: 13, + column: "IsActive", + value: true); + + migrationBuilder.UpdateData( + table: "ActivityMasters", + keyColumn: "Id", + keyValue: 14, + column: "IsActive", + value: true); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "ActivityCheckLists"); + + migrationBuilder.DropColumn( + name: "PermanentAddress", + table: "Employees"); + + migrationBuilder.DropColumn( + name: "IsActive", + table: "ActivityMasters"); + + migrationBuilder.UpdateData( + table: "WorkShifts", + keyColumn: "Name", + keyValue: null, + column: "Name", + value: ""); + + migrationBuilder.AlterColumn( + name: "Name", + table: "WorkShifts", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.UpdateData( + table: "Tenants", + keyColumn: "Name", + keyValue: null, + column: "Name", + value: ""); + + migrationBuilder.AlterColumn( + name: "Name", + table: "Tenants", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.UpdateData( + table: "Tenants", + keyColumn: "DomainName", + keyValue: null, + column: "DomainName", + value: ""); + + migrationBuilder.AlterColumn( + name: "DomainName", + table: "Tenants", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.UpdateData( + table: "Tenants", + keyColumn: "Description", + keyValue: null, + column: "Description", + value: ""); + + migrationBuilder.AlterColumn( + name: "Description", + table: "Tenants", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.UpdateData( + table: "Tenants", + keyColumn: "ContactNumber", + keyValue: null, + column: "ContactNumber", + value: ""); + + migrationBuilder.AlterColumn( + name: "ContactNumber", + table: "Tenants", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.UpdateData( + table: "Tenants", + keyColumn: "ContactName", + keyValue: null, + column: "ContactName", + value: ""); + + migrationBuilder.AlterColumn( + name: "ContactName", + table: "Tenants", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.UpdateData( + table: "StatusMasters", + keyColumn: "Status", + keyValue: null, + column: "Status", + value: ""); + + migrationBuilder.AlterColumn( + name: "Status", + table: "StatusMasters", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.UpdateData( + table: "RefreshTokens", + keyColumn: "UserId", + keyValue: null, + column: "UserId", + value: ""); + + migrationBuilder.AlterColumn( + name: "UserId", + table: "RefreshTokens", + type: "varchar(255)", + nullable: false, + oldClrType: typeof(string), + oldType: "varchar(255)", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.UpdateData( + table: "RefreshTokens", + keyColumn: "Token", + keyValue: null, + column: "Token", + value: ""); + + migrationBuilder.AlterColumn( + name: "Token", + table: "RefreshTokens", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.UpdateData( + table: "Projects", + keyColumn: "ProjectAddress", + keyValue: null, + column: "ProjectAddress", + value: ""); + + migrationBuilder.AlterColumn( + name: "ProjectAddress", + table: "Projects", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.UpdateData( + table: "Projects", + keyColumn: "ContactPerson", + keyValue: null, + column: "ContactPerson", + value: ""); + + migrationBuilder.AlterColumn( + name: "ContactPerson", + table: "Projects", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.UpdateData( + table: "Modules", + keyColumn: "Description", + keyValue: null, + column: "Description", + value: ""); + + migrationBuilder.AlterColumn( + name: "Description", + table: "Modules", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.UpdateData( + table: "JobRoles", + keyColumn: "Name", + keyValue: null, + column: "Name", + value: ""); + + migrationBuilder.AlterColumn( + name: "Name", + table: "JobRoles", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.UpdateData( + table: "Industries", + keyColumn: "Name", + keyValue: null, + column: "Name", + value: ""); + + migrationBuilder.AlterColumn( + name: "Name", + table: "Industries", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.UpdateData( + table: "Features", + keyColumn: "Name", + keyValue: null, + column: "Name", + value: ""); + + migrationBuilder.AlterColumn( + name: "Name", + table: "Features", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.UpdateData( + table: "Features", + keyColumn: "Description", + keyValue: null, + column: "Description", + value: ""); + + migrationBuilder.AlterColumn( + name: "Description", + table: "Features", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.UpdateData( + table: "FeaturePermissions", + keyColumn: "Name", + keyValue: null, + column: "Name", + value: ""); + + migrationBuilder.AlterColumn( + name: "Name", + table: "FeaturePermissions", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.UpdateData( + table: "FeaturePermissions", + keyColumn: "Description", + keyValue: null, + column: "Description", + value: ""); + + migrationBuilder.AlterColumn( + name: "Description", + table: "FeaturePermissions", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.UpdateData( + table: "Employees", + keyColumn: "PhoneNumber", + keyValue: null, + column: "PhoneNumber", + value: ""); + + migrationBuilder.AlterColumn( + name: "PhoneNumber", + table: "Employees", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.UpdateData( + table: "Employees", + keyColumn: "LastName", + keyValue: null, + column: "LastName", + value: ""); + + migrationBuilder.AlterColumn( + name: "LastName", + table: "Employees", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.UpdateData( + table: "Employees", + keyColumn: "Gender", + keyValue: null, + column: "Gender", + value: ""); + + migrationBuilder.AlterColumn( + name: "Gender", + table: "Employees", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.UpdateData( + table: "Employees", + keyColumn: "FirstName", + keyValue: null, + column: "FirstName", + value: ""); + + migrationBuilder.AlterColumn( + name: "FirstName", + table: "Employees", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.UpdateData( + table: "Employees", + keyColumn: "EmergencyPhoneNumber", + keyValue: null, + column: "EmergencyPhoneNumber", + value: ""); + + migrationBuilder.AlterColumn( + name: "EmergencyPhoneNumber", + table: "Employees", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.UpdateData( + table: "Employees", + keyColumn: "EmergencyContactPerson", + keyValue: null, + column: "EmergencyContactPerson", + value: ""); + + migrationBuilder.AlterColumn( + name: "EmergencyContactPerson", + table: "Employees", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.UpdateData( + table: "Employees", + keyColumn: "CurrentAddress", + keyValue: null, + column: "CurrentAddress", + value: ""); + + migrationBuilder.AlterColumn( + name: "CurrentAddress", + table: "Employees", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AddColumn( + name: "PeramnentAddress", + table: "Employees", + type: "longtext", + nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.UpdateData( + table: "ApplicationRoles", + keyColumn: "Role", + keyValue: null, + column: "Role", + value: ""); + + migrationBuilder.AlterColumn( + name: "Role", + table: "ApplicationRoles", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.UpdateData( + table: "ApplicationRoles", + keyColumn: "Description", + keyValue: null, + column: "Description", + value: ""); + + migrationBuilder.AlterColumn( + name: "Description", + table: "ApplicationRoles", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.UpdateData( + table: "ActivityMasters", + keyColumn: "UnitOfMeasurement", + keyValue: null, + column: "UnitOfMeasurement", + value: ""); + + migrationBuilder.AlterColumn( + name: "UnitOfMeasurement", + table: "ActivityMasters", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.UpdateData( + table: "ActivityMasters", + keyColumn: "ActivityName", + keyValue: null, + column: "ActivityName", + value: ""); + + migrationBuilder.AlterColumn( + name: "ActivityName", + table: "ActivityMasters", + type: "longtext", + nullable: false, + oldClrType: typeof(string), + oldType: "longtext", + oldNullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + .OldAnnotation("MySql:CharSet", "utf8mb4"); + } + } +} diff --git a/Marco.Pms.DataAccess/Migrations/ApplicationDbContextModelSnapshot.cs b/Marco.Pms.DataAccess/Migrations/ApplicationDbContextModelSnapshot.cs index bce21e0..b2a0cc8 100644 --- a/Marco.Pms.DataAccess/Migrations/ApplicationDbContextModelSnapshot.cs +++ b/Marco.Pms.DataAccess/Migrations/ApplicationDbContextModelSnapshot.cs @@ -258,11 +258,9 @@ namespace Marco.Pms.DataAccess.Migrations .HasColumnType("datetime(6)"); b.Property("Token") - .IsRequired() .HasColumnType("longtext"); b.Property("UserId") - .IsRequired() .HasColumnType("varchar(255)"); b.HasKey("Id"); @@ -290,26 +288,21 @@ namespace Marco.Pms.DataAccess.Migrations .HasColumnType("datetime(6)"); b.Property("CurrentAddress") - .IsRequired() .HasColumnType("longtext"); b.Property("Email") .HasColumnType("longtext"); b.Property("EmergencyContactPerson") - .IsRequired() .HasColumnType("longtext"); b.Property("EmergencyPhoneNumber") - .IsRequired() .HasColumnType("longtext"); b.Property("FirstName") - .IsRequired() .HasColumnType("longtext"); b.Property("Gender") - .IsRequired() .HasColumnType("longtext"); b.Property("IsActive") @@ -322,7 +315,6 @@ namespace Marco.Pms.DataAccess.Migrations .HasColumnType("datetime(6)"); b.Property("LastName") - .IsRequired() .HasColumnType("longtext"); b.Property("MiddleName") @@ -331,12 +323,10 @@ namespace Marco.Pms.DataAccess.Migrations b.Property("PanNumber") .HasColumnType("longtext"); - b.Property("PeramnentAddress") - .IsRequired() + b.Property("PermanentAddress") .HasColumnType("longtext"); b.Property("PhoneNumber") - .IsRequired() .HasColumnType("longtext"); b.Property("Photo") @@ -371,7 +361,6 @@ namespace Marco.Pms.DataAccess.Migrations .HasColumnType("time(6)"); b.Property("Name") - .IsRequired() .HasColumnType("longtext"); b.Property("StartTime") @@ -387,6 +376,34 @@ namespace Marco.Pms.DataAccess.Migrations b.ToTable("WorkShifts"); }); + modelBuilder.Entity("Marco.Pms.Model.Entitlements.ActivityCheckList", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ActivityMasterId") + .HasColumnType("int"); + + b.Property("Check") + .HasColumnType("longtext"); + + b.Property("IsChecked") + .HasColumnType("tinyint(1)"); + + b.Property("IsMandatory") + .HasColumnType("tinyint(1)"); + + b.Property("TenantId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("ActivityCheckLists"); + }); + modelBuilder.Entity("Marco.Pms.Model.Entitlements.ActivityMaster", b => { b.Property("Id") @@ -396,14 +413,15 @@ namespace Marco.Pms.DataAccess.Migrations MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); b.Property("ActivityName") - .IsRequired() .HasColumnType("longtext"); + b.Property("IsActive") + .HasColumnType("tinyint(1)"); + b.Property("TenantId") .HasColumnType("int"); b.Property("UnitOfMeasurement") - .IsRequired() .HasColumnType("longtext"); b.HasKey("Id"); @@ -417,6 +435,7 @@ namespace Marco.Pms.DataAccess.Migrations { Id = 1, ActivityName = "Core Cutting", + IsActive = true, TenantId = 1, UnitOfMeasurement = "Number" }, @@ -424,6 +443,7 @@ namespace Marco.Pms.DataAccess.Migrations { Id = 2, ActivityName = "Fabrication", + IsActive = true, TenantId = 1, UnitOfMeasurement = "Meter" }, @@ -431,6 +451,7 @@ namespace Marco.Pms.DataAccess.Migrations { Id = 3, ActivityName = "Lifting", + IsActive = true, TenantId = 1, UnitOfMeasurement = "Meter" }, @@ -438,6 +459,7 @@ namespace Marco.Pms.DataAccess.Migrations { Id = 4, ActivityName = "Hanging", + IsActive = true, TenantId = 1, UnitOfMeasurement = "Meter" }, @@ -445,6 +467,7 @@ namespace Marco.Pms.DataAccess.Migrations { Id = 5, ActivityName = "Tapping", + IsActive = true, TenantId = 1, UnitOfMeasurement = "Meter" }, @@ -452,6 +475,7 @@ namespace Marco.Pms.DataAccess.Migrations { Id = 6, ActivityName = "Welding", + IsActive = true, TenantId = 1, UnitOfMeasurement = "Meter" }, @@ -459,6 +483,7 @@ namespace Marco.Pms.DataAccess.Migrations { Id = 7, ActivityName = "Testing", + IsActive = true, TenantId = 1, UnitOfMeasurement = "Area" }, @@ -466,6 +491,7 @@ namespace Marco.Pms.DataAccess.Migrations { Id = 8, ActivityName = "Painting", + IsActive = true, TenantId = 1, UnitOfMeasurement = "Meter" }, @@ -473,6 +499,7 @@ namespace Marco.Pms.DataAccess.Migrations { Id = 9, ActivityName = "Marking Area", + IsActive = true, TenantId = 1, UnitOfMeasurement = "Meter" }, @@ -480,6 +507,7 @@ namespace Marco.Pms.DataAccess.Migrations { Id = 10, ActivityName = "Drilling", + IsActive = true, TenantId = 1, UnitOfMeasurement = "Number" }, @@ -487,6 +515,7 @@ namespace Marco.Pms.DataAccess.Migrations { Id = 11, ActivityName = "MS Support Fabrication", + IsActive = true, TenantId = 1, UnitOfMeasurement = "Number" }, @@ -494,6 +523,7 @@ namespace Marco.Pms.DataAccess.Migrations { Id = 12, ActivityName = "MS Support Hanging", + IsActive = true, TenantId = 1, UnitOfMeasurement = "Number" }, @@ -501,6 +531,7 @@ namespace Marco.Pms.DataAccess.Migrations { Id = 13, ActivityName = "Hydrant Volve", + IsActive = true, TenantId = 1, UnitOfMeasurement = "Number" }, @@ -508,6 +539,7 @@ namespace Marco.Pms.DataAccess.Migrations { Id = 14, ActivityName = "Sprinkler Installation", + IsActive = true, TenantId = 1, UnitOfMeasurement = "Number" }); @@ -520,11 +552,9 @@ namespace Marco.Pms.DataAccess.Migrations .HasColumnType("char(36)"); b.Property("Description") - .IsRequired() .HasColumnType("longtext"); b.Property("Role") - .IsRequired() .HasColumnType("longtext"); b.Property("TenantId") @@ -610,7 +640,6 @@ namespace Marco.Pms.DataAccess.Migrations .HasColumnType("char(36)"); b.Property("Description") - .IsRequired() .HasColumnType("longtext"); b.Property("IsActive") @@ -620,7 +649,6 @@ namespace Marco.Pms.DataAccess.Migrations .HasColumnType("int"); b.Property("Name") - .IsRequired() .HasColumnType("longtext"); b.HasKey("Id"); @@ -703,7 +731,6 @@ namespace Marco.Pms.DataAccess.Migrations .HasColumnType("char(36)"); b.Property("Description") - .IsRequired() .HasColumnType("longtext"); b.Property("FeatureId") @@ -713,7 +740,6 @@ namespace Marco.Pms.DataAccess.Migrations .HasColumnType("tinyint(1)"); b.Property("Name") - .IsRequired() .HasColumnType("longtext"); b.HasKey("Id"); @@ -881,7 +907,6 @@ namespace Marco.Pms.DataAccess.Migrations .HasColumnType("longtext"); b.Property("Name") - .IsRequired() .HasColumnType("longtext"); b.Property("TenantId") @@ -903,7 +928,6 @@ namespace Marco.Pms.DataAccess.Migrations MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); b.Property("Description") - .IsRequired() .HasColumnType("longtext"); b.Property("Key") @@ -966,7 +990,6 @@ namespace Marco.Pms.DataAccess.Migrations MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); b.Property("Status") - .IsRequired() .HasColumnType("longtext"); b.Property("TenantId") @@ -1014,19 +1037,15 @@ namespace Marco.Pms.DataAccess.Migrations MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); b.Property("ContactName") - .IsRequired() .HasColumnType("longtext"); b.Property("ContactNumber") - .IsRequired() .HasColumnType("longtext"); b.Property("Description") - .IsRequired() .HasColumnType("longtext"); b.Property("DomainName") - .IsRequired() .HasColumnType("longtext"); b.Property("IndustryId") @@ -1036,7 +1055,6 @@ namespace Marco.Pms.DataAccess.Migrations .HasColumnType("tinyint(1)"); b.Property("Name") - .IsRequired() .HasColumnType("longtext"); b.Property("OnBoardingDate") @@ -1075,7 +1093,6 @@ namespace Marco.Pms.DataAccess.Migrations MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); b.Property("Name") - .IsRequired() .HasColumnType("longtext"); b.HasKey("Id"); @@ -1194,7 +1211,6 @@ namespace Marco.Pms.DataAccess.Migrations MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); b.Property("ContactPerson") - .IsRequired() .HasColumnType("longtext"); b.Property("EndDate") @@ -1205,7 +1221,6 @@ namespace Marco.Pms.DataAccess.Migrations .HasColumnType("longtext"); b.Property("ProjectAddress") - .IsRequired() .HasColumnType("longtext"); b.Property("ProjectStatusId") @@ -1718,8 +1733,7 @@ namespace Marco.Pms.DataAccess.Migrations b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", "User") .WithMany() .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); + .OnDelete(DeleteBehavior.Cascade); b.Navigation("User"); }); diff --git a/Marco.Pms.Model/Activities/TaskMembers.cs b/Marco.Pms.Model/Activities/TaskMembers.cs index e1dff08..bafdb49 100644 --- a/Marco.Pms.Model/Activities/TaskMembers.cs +++ b/Marco.Pms.Model/Activities/TaskMembers.cs @@ -12,17 +12,16 @@ namespace Marco.Pms.Model.Activities public long TaskAllocationId { get; set; } [ValidateNever] [ForeignKey(nameof(TaskAllocationId))] - public TaskAllocation TaskAllocation { get; set; } + public TaskAllocation? TaskAllocation { get; set; } public int EmployeeId { get; set; } [ForeignKey("EmployeeId")] [ValidateNever] - public Employee Employee { get; set; } - + public Employee? Employee { get; set; } public int TenantId { get; set; } [ValidateNever] [ForeignKey(nameof(TenantId))] - public Tenant Tenant { get; set; } + public Tenant? Tenant { get; set; } } } diff --git a/Marco.Pms.Model/AttendanceModule/AttendanceLog.cs b/Marco.Pms.Model/AttendanceModule/AttendanceLog.cs index 2376ce0..d742b73 100644 --- a/Marco.Pms.Model/AttendanceModule/AttendanceLog.cs +++ b/Marco.Pms.Model/AttendanceModule/AttendanceLog.cs @@ -46,6 +46,6 @@ namespace Marco.Pms.Model.AttendanceModule public int TenantId { get; set; } [ValidateNever] [ForeignKey(nameof(TenantId))] - public Tenant Tenant { get; set; } + public Tenant? Tenant { get; set; } } } diff --git a/Marco.Pms.Model/Authentication/RefreshToken.cs b/Marco.Pms.Model/Authentication/RefreshToken.cs index 345a44b..b60c5ae 100644 --- a/Marco.Pms.Model/Authentication/RefreshToken.cs +++ b/Marco.Pms.Model/Authentication/RefreshToken.cs @@ -5,8 +5,8 @@ namespace Marco.Pms.Model.Authentication public class RefreshToken { public int Id { get; set; } - public string Token { get; set; } - public string UserId { get; set; } + public string? Token { get; set; } + public string? UserId { get; set; } public DateTime ExpiryDate { get; set; } public bool IsRevoked { get; set; } public bool IsUsed { get; set; } @@ -15,6 +15,6 @@ namespace Marco.Pms.Model.Authentication // Relationship with the User - public IdentityUser User { get; set; } + public IdentityUser? User { get; set; } } } diff --git a/Marco.Pms.Model/Dtos/Activities/CreateActivityMasterDto.cs b/Marco.Pms.Model/Dtos/Activities/CreateActivityMasterDto.cs index 4532ddb..52deac2 100644 --- a/Marco.Pms.Model/Dtos/Activities/CreateActivityMasterDto.cs +++ b/Marco.Pms.Model/Dtos/Activities/CreateActivityMasterDto.cs @@ -4,5 +4,6 @@ { public string? ActivityName { get; set; } public string? UnitOfMeasurement { get; set; } + public List? CheckList { get; set; } } } diff --git a/Marco.Pms.Model/Dtos/Activities/CreateCheckListDto.cs b/Marco.Pms.Model/Dtos/Activities/CreateCheckListDto.cs new file mode 100644 index 0000000..b90d085 --- /dev/null +++ b/Marco.Pms.Model/Dtos/Activities/CreateCheckListDto.cs @@ -0,0 +1,9 @@ +namespace Marco.Pms.Model.Dtos.Activities +{ + public class CreateCheckListDto + { + public int Id { get; set; } + public string? Check { get; set; } + public bool IsMandatory { get; set; } + } +} diff --git a/Marco.Pms.Model/Employees/Employee.cs b/Marco.Pms.Model/Employees/Employee.cs index 7c8136b..feeaaae 100644 --- a/Marco.Pms.Model/Employees/Employee.cs +++ b/Marco.Pms.Model/Employees/Employee.cs @@ -8,21 +8,21 @@ namespace Marco.Pms.Model.Employees public class Employee { public int Id { get; set; } - public string FirstName { get; set; } - public string LastName { get; set; } + public string? FirstName { get; set; } + public string? LastName { get; set; } public string? MiddleName { get; set; } public string? Email { get; set; } - public string Gender { get; set; } + public string? Gender { get; set; } public DateTime? BirthDate { get; set; } public DateTime? JoiningDate { get; set; } - public string PeramnentAddress { get; set; } - public string CurrentAddress { get; set; } - public string PhoneNumber { get; set; } + public string? PermanentAddress { get; set; } + public string? CurrentAddress { get; set; } + public string? PhoneNumber { get; set; } - public string EmergencyPhoneNumber { get; set; } - public string EmergencyContactPerson { get; set; } + public string? EmergencyPhoneNumber { get; set; } + public string? EmergencyContactPerson { get; set; } public string? AadharNumber { get; set; } @@ -42,8 +42,7 @@ namespace Marco.Pms.Model.Employees [ValidateNever] [ForeignKey(nameof(TenantId))] - public Tenant Tenant { get; set; } - + public Tenant? Tenant { get; set; } public Guid RoleId { get; set; } //[ForeignKey(nameof(RoleId))] //public EmployeeRole EmployeeRole { get; set; } diff --git a/Marco.Pms.Model/Employees/EmployeeDocument.cs b/Marco.Pms.Model/Employees/EmployeeDocument.cs index c9b7f92..956d9e5 100644 --- a/Marco.Pms.Model/Employees/EmployeeDocument.cs +++ b/Marco.Pms.Model/Employees/EmployeeDocument.cs @@ -1,5 +1,5 @@ -using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; -using System.ComponentModel.DataAnnotations.Schema; +using System.ComponentModel.DataAnnotations.Schema; +using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; namespace Marco.Pms.Model.Employees { diff --git a/Marco.Pms.Model/Employees/WorkShift.cs b/Marco.Pms.Model/Employees/WorkShift.cs index 7f25949..087f795 100644 --- a/Marco.Pms.Model/Employees/WorkShift.cs +++ b/Marco.Pms.Model/Employees/WorkShift.cs @@ -9,7 +9,7 @@ namespace Marco.Pms.Model.Employees { public int Id { get; set; } [DisplayName("Shift Name")] - public string Name { get; set; } + public string? Name { get; set; } public TimeOnly StartTime { get; set; } public TimeOnly EndTime { get; set; } @@ -18,7 +18,7 @@ namespace Marco.Pms.Model.Employees [ValidateNever] [ForeignKey(nameof(TenantId))] - public Tenant Tenant { get; set; } + public Tenant? Tenant { get; set; } } } diff --git a/Marco.Pms.Model/Entitlements/ActivityCheckList.cs b/Marco.Pms.Model/Entitlements/ActivityCheckList.cs new file mode 100644 index 0000000..c63b32c --- /dev/null +++ b/Marco.Pms.Model/Entitlements/ActivityCheckList.cs @@ -0,0 +1,12 @@ +namespace Marco.Pms.Model.Entitlements +{ + public class ActivityCheckList + { + public int Id { get; set; } + public int ActivityMasterId { get; set; } + public string? Check { get; set; } + public bool IsChecked { get; set; } = false; + public bool IsMandatory { get; set; } + public int TenantId { get; set; } + } +} diff --git a/Marco.Pms.Model/Entitlements/ActivityMaster.cs b/Marco.Pms.Model/Entitlements/ActivityMaster.cs index df5f83a..46b8d33 100644 --- a/Marco.Pms.Model/Entitlements/ActivityMaster.cs +++ b/Marco.Pms.Model/Entitlements/ActivityMaster.cs @@ -7,15 +7,16 @@ namespace Marco.Pms.Model.Entitlements public class ActivityMaster { public int Id { get; set; } - public string ActivityName { get; set; } + public string? ActivityName { get; set; } - public string UnitOfMeasurement { get; set; } + public string? UnitOfMeasurement { get; set; } [DisplayName("TenantId")] public int TenantId { get; set; } [ValidateNever] [ForeignKey(nameof(TenantId))] - public Tenant Tenant { get; set; } + public Tenant? Tenant { get; set; } + public bool IsActive { get; set; } = true; } } diff --git a/Marco.Pms.Model/Entitlements/ApplicationRole.cs b/Marco.Pms.Model/Entitlements/ApplicationRole.cs index 512e99b..02bc534 100644 --- a/Marco.Pms.Model/Entitlements/ApplicationRole.cs +++ b/Marco.Pms.Model/Entitlements/ApplicationRole.cs @@ -1,14 +1,10 @@ -using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; -using System.ComponentModel; -using System.ComponentModel.DataAnnotations.Schema; - -namespace Marco.Pms.Model.Entitlements +namespace Marco.Pms.Model.Entitlements { public class ApplicationRole { public Guid Id { get; set; } - public string Role { get; set; } - public string Description { get; set; } + public string? Role { get; set; } + public string? Description { get; set; } public int TenantId { get; set; } diff --git a/Marco.Pms.Model/Entitlements/Client.cs b/Marco.Pms.Model/Entitlements/Client.cs index bb603bf..df6cf01 100644 --- a/Marco.Pms.Model/Entitlements/Client.cs +++ b/Marco.Pms.Model/Entitlements/Client.cs @@ -7,18 +7,18 @@ namespace Marco.Pms.Model.Entitlements public class Tenant { public int Id { get; set; } - public string Name { get; set; } - public string Description { get; set; } - public string DomainName { get; set; } - public string ContactName { get; set; } - public string ContactNumber { get; set; } + public string? Name { get; set; } + public string? Description { get; set; } + public string? DomainName { get; set; } + public string? ContactName { get; set; } + public string? ContactNumber { get; set; } public DateTime OnBoardingDate { get; set; } public string? OragnizationSize { get; set; } public int? IndustryId { get;set; } [ForeignKey("IndustryId")] [ValidateNever] - public Industry Industry{ get; set; } + public Industry? Industry{ get; set; } public bool IsActive { get; set; } = true; } diff --git a/Marco.Pms.Model/Entitlements/EmployeeRoleMapping.cs b/Marco.Pms.Model/Entitlements/EmployeeRoleMapping.cs index b3d1cf3..905301d 100644 --- a/Marco.Pms.Model/Entitlements/EmployeeRoleMapping.cs +++ b/Marco.Pms.Model/Entitlements/EmployeeRoleMapping.cs @@ -10,19 +10,19 @@ namespace Marco.Pms.Model.Entitlements public int EmployeeId { get; set; } [ValidateNever] [ForeignKey(nameof(EmployeeId))] - public Employee Employee { get; set; } // Navigation property to Employee + public Employee? Employee { get; set; } // Navigation property to Employee public Guid RoleId { get; set; } [ValidateNever] [ForeignKey(nameof(RoleId))] - public ApplicationRole Role { get; set; } + public ApplicationRole? Role { get; set; } public bool IsEnabled { get; set; } public int TenantId { get; set; } [ValidateNever] [ForeignKey(nameof(TenantId))] - public Tenant Tenant { get; set; } + public Tenant? Tenant { get; set; } } } diff --git a/Marco.Pms.Model/Entitlements/Feature.cs b/Marco.Pms.Model/Entitlements/Feature.cs index dc844df..13abcdc 100644 --- a/Marco.Pms.Model/Entitlements/Feature.cs +++ b/Marco.Pms.Model/Entitlements/Feature.cs @@ -9,12 +9,12 @@ namespace Marco.Pms.Model.Entitlements public int ModuleId { get; set; } [ValidateNever] [ForeignKey(nameof(ModuleId))] - public Module Module { get; set; } - public string Name { get; set; } // Feature name - public string Description { get; set; } // Feature description + public Module? Module { get; set; } + public string? Name { get; set; } // Feature name + public string? Description { get; set; } // Feature description public bool IsActive { get; set; } - public ICollection FeaturePermissions { get; set; } // Features assigned to this role + public ICollection? FeaturePermissions { get; set; }// Features assigned to this role } } diff --git a/Marco.Pms.Model/Entitlements/FeaturePermission.cs b/Marco.Pms.Model/Entitlements/FeaturePermission.cs index 830807a..06cd2ba 100644 --- a/Marco.Pms.Model/Entitlements/FeaturePermission.cs +++ b/Marco.Pms.Model/Entitlements/FeaturePermission.cs @@ -1,12 +1,5 @@ -using Marco.Pms.Model.Projects; +using System.ComponentModel.DataAnnotations.Schema; using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; -using System.Data; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Marco.Pms.Model.Entitlements { @@ -17,10 +10,10 @@ namespace Marco.Pms.Model.Entitlements public Guid FeatureId { get; set; } // Foreign key to Feature [ForeignKey("FeatureId")] [ValidateNever] - public Feature Feature { get; set; } + public Feature? Feature { get; set; } - public string Name { get; set; } // Feature name - public string Description { get; set; } // Feature description + public string? Name { get; set; } // Feature name + public string? Description { get; set; } // Feature description public bool IsEnabled { get; set; } // Whether the feature is enabled for this role diff --git a/Marco.Pms.Model/Entitlements/JobRole.cs b/Marco.Pms.Model/Entitlements/JobRole.cs index 3557525..457a5fe 100644 --- a/Marco.Pms.Model/Entitlements/JobRole.cs +++ b/Marco.Pms.Model/Entitlements/JobRole.cs @@ -1,17 +1,17 @@ -using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; -using System.ComponentModel.DataAnnotations.Schema; +using System.ComponentModel.DataAnnotations.Schema; +using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; namespace Marco.Pms.Model.Entitlements { public class JobRole { public int Id { get; set; } - public string Name { get; set; } + public string? Name { get; set; } public string? Description { get; set; } public int TenantId { get; set; } [ValidateNever] [ForeignKey(nameof(TenantId))] - public Tenant Tenant { get; set; } + public Tenant? Tenant { get; set; } } } diff --git a/Marco.Pms.Model/Entitlements/Module.cs b/Marco.Pms.Model/Entitlements/Module.cs index 09c92b4..2504f6f 100644 --- a/Marco.Pms.Model/Entitlements/Module.cs +++ b/Marco.Pms.Model/Entitlements/Module.cs @@ -13,9 +13,9 @@ namespace Marco.Pms.Model.Entitlements public int Id { get; set; } [Required] - public string Name { get; set; } + public string? Name { get; set; } - public string Description { get; set; } + public string? Description { get; set; } diff --git a/Marco.Pms.Model/Entitlements/StatusMaster.cs b/Marco.Pms.Model/Entitlements/StatusMaster.cs index 845f701..4ade4f3 100644 --- a/Marco.Pms.Model/Entitlements/StatusMaster.cs +++ b/Marco.Pms.Model/Entitlements/StatusMaster.cs @@ -12,13 +12,13 @@ namespace Marco.Pms.Model.Entitlements public class StatusMaster { public int Id { get; set; } - public string Status { get; set; } + public string? Status { get; set; } [DisplayName("TenantId")] public int TenantId { get; set; } [ValidateNever] [ForeignKey(nameof(TenantId))] - public Tenant Tenant { get; set; } + public Tenant? Tenant { get; set; } } } diff --git a/Marco.Pms.Model/Industries/Industry.cs b/Marco.Pms.Model/Industries/Industry.cs index 73978aa..73e7a1e 100644 --- a/Marco.Pms.Model/Industries/Industry.cs +++ b/Marco.Pms.Model/Industries/Industry.cs @@ -3,6 +3,6 @@ public class Industry { public int Id { get; set; } - public string Name { get; set; } + public string? Name { get; set; } } } diff --git a/Marco.Pms.Model/Mapper/ActivitiesMapper.cs b/Marco.Pms.Model/Mapper/ActivitiesMapper.cs index 7acd09c..1076ce4 100644 --- a/Marco.Pms.Model/Mapper/ActivitiesMapper.cs +++ b/Marco.Pms.Model/Mapper/ActivitiesMapper.cs @@ -122,5 +122,37 @@ namespace Marco.Pms.Model.Mapper Employee = comment.Employee.ToEmployeeVMFromEmployee() }; } + + public static ActivityVM ToActivityVMFromActivityMaster(this ActivityMaster activity,List checkList) + { + return new ActivityVM + { + Id = activity.Id, + ActivityName = activity.ActivityName, + UnitOfMeasurement = activity.UnitOfMeasurement, + CheckLists = checkList, + }; + } + public static CheckListVM ToCheckListVMFromActivityCheckList(this ActivityCheckList checkList,int activityId) + { + return new CheckListVM + { + Id = checkList.Id, + Check = checkList.Check, + ActivityMasterId = activityId, + IsChecked = checkList.IsChecked, + IsMandatory = checkList.IsMandatory, + }; + } + public static ActivityCheckList ToActivityCheckListFromCreateCheckListDto(this CreateCheckListDto checkListDto,int tenantId) + { + return new ActivityCheckList + { + Id = checkListDto.Id, + Check = checkListDto.Check, + IsMandatory = checkListDto.IsMandatory, + TenantId = tenantId + }; + } } } diff --git a/Marco.Pms.Model/Mapper/EmployeeMapper.cs b/Marco.Pms.Model/Mapper/EmployeeMapper.cs index fdef0dd..b4070a3 100644 --- a/Marco.Pms.Model/Mapper/EmployeeMapper.cs +++ b/Marco.Pms.Model/Mapper/EmployeeMapper.cs @@ -24,7 +24,7 @@ namespace Marco.Pms.Model.Mapper JobRole = (model.JobRole != null ? model.JobRole.Name : null), JobRoleId = model.JobRoleId, PanNumber = model.PanNumber, - PermanentAddress = model.PeramnentAddress, + PermanentAddress = model.PermanentAddress, PhoneNumber = model.PhoneNumber, Photo = model.Photo, IsActive = model.IsActive, diff --git a/Marco.Pms.Model/Projects/Building.cs b/Marco.Pms.Model/Projects/Building.cs index 283affa..d0cbc39 100644 --- a/Marco.Pms.Model/Projects/Building.cs +++ b/Marco.Pms.Model/Projects/Building.cs @@ -12,7 +12,7 @@ namespace Marco.Pms.Model.Projects public int Id { get; set; } [Required] [DisplayName("Building Name")] - public string Name { get; set; } + public string? Name { get; set; } public string? Description { get; set; } public int ProjectId { get; set; } @@ -23,6 +23,6 @@ namespace Marco.Pms.Model.Projects [ValidateNever] [ForeignKey(nameof(TenantId))] - public Tenant Tenant { get; set; } + public Tenant? Tenant { get; set; } } } diff --git a/Marco.Pms.Model/Projects/Floor.cs b/Marco.Pms.Model/Projects/Floor.cs index e931ac4..9041158 100644 --- a/Marco.Pms.Model/Projects/Floor.cs +++ b/Marco.Pms.Model/Projects/Floor.cs @@ -12,14 +12,14 @@ namespace Marco.Pms.Model.Projects [Required] [DisplayName("Floor Name")] - public string FloorName { get; set; } + public string? FloorName { get; set; } public int BuildingId { get; set; } [ForeignKey("BuildingId")] [ValidateNever] - public Building Building { get; set; } + public Building? Building { get; set; } [DisplayName("TenantId")] @@ -27,6 +27,6 @@ namespace Marco.Pms.Model.Projects [ValidateNever] [ForeignKey(nameof(TenantId))] - public Tenant Tenant { get; set; } + public Tenant? Tenant { get; set; } } } diff --git a/Marco.Pms.Model/Projects/PhotoGallary.cs b/Marco.Pms.Model/Projects/PhotoGallary.cs index 4c2a75f..71786c1 100644 --- a/Marco.Pms.Model/Projects/PhotoGallary.cs +++ b/Marco.Pms.Model/Projects/PhotoGallary.cs @@ -15,7 +15,7 @@ namespace Marco.Pms.Model.Projects public string? AddedBy { get; set; } [ValidateNever] [ForeignKey(nameof(AddedBy))] - public ApplicationUser? ApplicationUser { get; set; } + public ApplicationUser? ApplicationUser { get; set; } public DateTime AddedOn { get; set; } public required string Imagebase64 { get; set; } } diff --git a/Marco.Pms.Model/Projects/Project.cs b/Marco.Pms.Model/Projects/Project.cs index 58095c8..5fb8619 100644 --- a/Marco.Pms.Model/Projects/Project.cs +++ b/Marco.Pms.Model/Projects/Project.cs @@ -12,14 +12,14 @@ namespace Marco.Pms.Model.Projects public int Id { get; set; } [Required] [DisplayName("Project Name")] - public string Name { get; set; } + public string? Name { get; set; } [DisplayName("Project Address")] - public string ProjectAddress { get; set; } + public string? ProjectAddress { get; set; } [DisplayName("Contact Person")] - public string ContactPerson { get; set; } + public string? ContactPerson { get; set; } public DateTime? StartDate { get; set; } public DateTime? EndDate { get; set; } @@ -29,13 +29,13 @@ namespace Marco.Pms.Model.Projects [ValidateNever] [ForeignKey(nameof(ProjectStatusId))] - public StatusMaster ProjectStatus { get; set; } + public StatusMaster? ProjectStatus { get; set; } [DisplayName("TenantId")] public int TenantId { get; set; } [ValidateNever] [ForeignKey(nameof(TenantId))] - public Tenant Tenant { get; set; } + public Tenant? Tenant { get; set; } } } diff --git a/Marco.Pms.Model/Projects/ProjectAllocation.cs b/Marco.Pms.Model/Projects/ProjectAllocation.cs index f13b503..67c484b 100644 --- a/Marco.Pms.Model/Projects/ProjectAllocation.cs +++ b/Marco.Pms.Model/Projects/ProjectAllocation.cs @@ -12,7 +12,7 @@ namespace Marco.Pms.Model.Projects public int EmployeeId { get; set; } [ForeignKey("EmployeeId")] [ValidateNever] - public Employee Employee { get; set; } + public Employee? Employee { get; set; } public int? JobRoleId { get; set; } //[ForeignKey("EmployeeRoleId")] @@ -24,7 +24,7 @@ namespace Marco.Pms.Model.Projects public int ProjectId { get; set; } [ForeignKey("ProjectId")] [ValidateNever] - public Project Project { get; set; } + public Project? Project { get; set; } public DateTime AllocationDate { get; set; } @@ -35,6 +35,6 @@ namespace Marco.Pms.Model.Projects public int TenantId { get; set; } [ValidateNever] [ForeignKey(nameof(TenantId))] - public Tenant Tenant { get; set; } + public Tenant? Tenant { get; set; } } } diff --git a/Marco.Pms.Model/Projects/WorkArea.cs b/Marco.Pms.Model/Projects/WorkArea.cs index f2a15bf..9a4d4f0 100644 --- a/Marco.Pms.Model/Projects/WorkArea.cs +++ b/Marco.Pms.Model/Projects/WorkArea.cs @@ -13,13 +13,13 @@ namespace Marco.Pms.Model.Projects [Required] [DisplayName("Area Name")] - public string AreaName { get; set; } + public string? AreaName { get; set; } public int FloorId { get; set; } [ForeignKey("FloorId")] [ValidateNever] - public Floor Floor { get; set; } + public Floor? Floor { get; set; } //[ValidateNever] //public List WorkItems { get; set; } @@ -29,6 +29,7 @@ namespace Marco.Pms.Model.Projects [ValidateNever] [ForeignKey(nameof(TenantId))] - public Tenant Tenant { get; set; } + public Tenant? Tenant { get; set; } + + } } -} diff --git a/Marco.Pms.Model/Projects/WorkItem.cs b/Marco.Pms.Model/Projects/WorkItem.cs index 058a258..2ec28a5 100644 --- a/Marco.Pms.Model/Projects/WorkItem.cs +++ b/Marco.Pms.Model/Projects/WorkItem.cs @@ -1,7 +1,7 @@ -using Marco.Pms.Model.Entitlements; -using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; -using System.ComponentModel; +using System.ComponentModel; using System.ComponentModel.DataAnnotations.Schema; +using Marco.Pms.Model.Entitlements; +using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; namespace Marco.Pms.Model.Projects { @@ -13,12 +13,12 @@ namespace Marco.Pms.Model.Projects public int WorkAreaId { get; set; } [ForeignKey("WorkAreaId")] [ValidateNever] - public WorkArea WorkArea { get; set; } + public WorkArea? WorkArea { get; set; } [ForeignKey("ActivityId")] [ValidateNever] - public ActivityMaster ActivityMaster { get; set; } + public ActivityMaster? ActivityMaster { get; set; } public double PlannedWork { get; set; } public double CompletedWork { get; set; } @@ -29,6 +29,6 @@ namespace Marco.Pms.Model.Projects [ValidateNever] [ForeignKey(nameof(TenantId))] - public Tenant Tenant { get; set; } + public Tenant? Tenant { get; set; } } } diff --git a/Marco.Pms.Model/ViewModels/Activities/ActivityVM.cs b/Marco.Pms.Model/ViewModels/Activities/ActivityVM.cs new file mode 100644 index 0000000..83b4a78 --- /dev/null +++ b/Marco.Pms.Model/ViewModels/Activities/ActivityVM.cs @@ -0,0 +1,11 @@ +namespace Marco.Pms.Model.ViewModels.Activities +{ + public class ActivityVM + { + public int Id { get; set; } + public string? ActivityName { get; set; } + + public string? UnitOfMeasurement { get; set; } + public List? CheckLists { get; set; } + } +} diff --git a/Marco.Pms.Model/ViewModels/Activities/CheckListVM.cs b/Marco.Pms.Model/ViewModels/Activities/CheckListVM.cs new file mode 100644 index 0000000..fba0e91 --- /dev/null +++ b/Marco.Pms.Model/ViewModels/Activities/CheckListVM.cs @@ -0,0 +1,11 @@ +namespace Marco.Pms.Model.ViewModels.Activities +{ + public class CheckListVM + { + public int Id { get; set; } + public int ActivityMasterId { get; set; } + public string? Check { get; set; } + public bool IsChecked { get; set; } + public bool IsMandatory { get; set; } + } +} diff --git a/Marco.Pms.Services/Controllers/EmployeeController.cs b/Marco.Pms.Services/Controllers/EmployeeController.cs index b772e75..965e0fc 100644 --- a/Marco.Pms.Services/Controllers/EmployeeController.cs +++ b/Marco.Pms.Services/Controllers/EmployeeController.cs @@ -294,7 +294,7 @@ namespace MarcoBMS.Services.Controllers Gender = model.Gender, MiddleName = model.MiddleName, PanNumber = model.PanNumber, - PeramnentAddress = model.PermanentAddress, + PermanentAddress = model.PermanentAddress, PhoneNumber = model.PhoneNumber, Photo = null, // GetFileDetails(model.Photo).Result.FileData, JobRoleId = Convert.ToInt32(model.JobRoleId), @@ -321,7 +321,7 @@ namespace MarcoBMS.Services.Controllers existingEmployee.Gender = model.Gender; existingEmployee.MiddleName = model.MiddleName; existingEmployee.PanNumber = model.PanNumber; - existingEmployee.PeramnentAddress = model.PermanentAddress; + existingEmployee.PermanentAddress = model.PermanentAddress; existingEmployee.PhoneNumber = model.PhoneNumber; existingEmployee.Photo = null; // GetFileDetails(model.Photo).Result.FileData, existingEmployee.JobRoleId = Convert.ToInt32(model.JobRoleId); diff --git a/Marco.Pms.Services/Controllers/MasterController.cs b/Marco.Pms.Services/Controllers/MasterController.cs index c52ecc5..f1bb056 100644 --- a/Marco.Pms.Services/Controllers/MasterController.cs +++ b/Marco.Pms.Services/Controllers/MasterController.cs @@ -1,10 +1,14 @@ -using Marco.Pms.DataAccess.Data; +using System.Diagnostics; +using Marco.Pms.DataAccess.Data; using Marco.Pms.Model.Dtos.Activities; +using Marco.Pms.Model.Entitlements; using Marco.Pms.Model.Mapper; using Marco.Pms.Model.Utilities; +using Marco.Pms.Model.ViewModels.Activities; using MarcoBMS.Services.Helpers; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; namespace Marco.Pms.Services.Controllers { @@ -15,24 +19,118 @@ namespace Marco.Pms.Services.Controllers { private readonly ApplicationDbContext _context; private readonly UserHelper _userHelper; - public MasterController(ApplicationDbContext context,UserHelper userHelper) + public MasterController(ApplicationDbContext context, UserHelper userHelper) { _context = context; _userHelper = userHelper; } + [HttpGet] + [Route("activities")] + public async Task GetActivitiesMaster() + { + var tenantId = _userHelper.GetTenantId(); + var activities = await _context.ActivityMasters.Where(c => c.TenantId == tenantId && c.IsActive == true).ToListAsync(); + List activitiesVM = new List(); + foreach (var activity in activities) { + var checkList = await _context.ActivityCheckLists.Where(c => c.TenantId == tenantId && c.ActivityMasterId == activity.Id).ToListAsync(); + List checkListVM = new List(); + if(checkList != null) + { + foreach (ActivityCheckList check in checkList) + { + var checkVM = check.ToCheckListVMFromActivityCheckList(activity.Id); + checkListVM.Add(checkVM); + } + } + + ActivityVM activityVM = activity.ToActivityVMFromActivityMaster(checkListVM); + activitiesVM.Add(activityVM); + } + return Ok(ApiResponse.SuccessResponse(activitiesVM, "Success.", 200)); + } + [HttpPost("activity")] public async Task CreateActivity([FromBody] CreateActivityMasterDto createActivity) { var tenantId = _userHelper.GetTenantId(); var employee = await _userHelper.GetCurrentEmployeeAsync(); - if(employee.TenantId != tenantId) + if (employee.TenantId != tenantId) { - return Unauthorized(ApiResponse.ErrorResponse("Current tenant did not match with user's tenant", "Current tenant did not match with user's tenant",401)); + return Unauthorized(ApiResponse.ErrorResponse("Current tenant did not match with user's tenant", "Current tenant did not match with user's tenant", 401)); } var activityMaster = createActivity.ToActivityMasterFromCreateActivityMasterDto(tenantId); _context.ActivityMasters.Add(activityMaster); await _context.SaveChangesAsync(); - return Ok(ApiResponse.SuccessResponse(activityMaster, "Activity created successfully", 200)); + + if (createActivity.CheckList != null) { + List activityCheckList = new List(); + foreach (var check in createActivity.CheckList) + { + ActivityCheckList checkList = check.ToActivityCheckListFromCreateCheckListDto(tenantId); + activityCheckList.Add(checkList); + } + _context.ActivityCheckLists.AddRange(activityCheckList); + await _context.SaveChangesAsync(); + List checkListVM = new List(); + foreach (ActivityCheckList check in activityCheckList) + { + var checkVM = check.ToCheckListVMFromActivityCheckList(activityMaster.Id); + checkListVM.Add(checkVM); + } + + ActivityVM activityVM = activityMaster.ToActivityVMFromActivityMaster(checkListVM); + return Ok(ApiResponse.SuccessResponse(activityVM, "Activity created successfully", 200)); + } + return BadRequest(ApiResponse.ErrorResponse("Check List is Empty", "Check List is Empty", 400)); + } + + [HttpPost("edit/{id}")] + public async Task UpdateActivity(int id, [FromBody] CreateActivityMasterDto createActivity) + { + var tenantId = _userHelper.GetTenantId(); + var employee = await _userHelper.GetCurrentEmployeeAsync(); + ActivityMaster? activity = await _context.ActivityMasters.FirstOrDefaultAsync(x => x.Id == id && x.IsActive == true && x.TenantId == tenantId); + if (activity != null && createActivity.UnitOfMeasurement != null && createActivity.ActivityName != null) { + + activity.ActivityName = createActivity.ActivityName; + activity.UnitOfMeasurement = createActivity.UnitOfMeasurement; + + if (createActivity.CheckList != null) + { + List activityCheckList = new List(); + foreach (var check in createActivity.CheckList) + { + ActivityCheckList checkList = check.ToActivityCheckListFromCreateCheckListDto(tenantId); + activityCheckList.Add(checkList); + } + _context.ActivityCheckLists.UpdateRange(activityCheckList); + await _context.SaveChangesAsync(); + List checkListVM = new List(); + foreach (ActivityCheckList check in activityCheckList) + { + var checkVM = check.ToCheckListVMFromActivityCheckList(activity.Id); + checkListVM.Add(checkVM); + } + + ActivityVM activityVM = activity.ToActivityVMFromActivityMaster(checkListVM); + return Ok(ApiResponse.SuccessResponse(activityVM, "Activity created successfully", 200)); + } + } + + return NotFound(ApiResponse.ErrorResponse("Activity no found", "Activity no found", 404)); + } +#nullable disable + [HttpDelete("delete/{id}")] + public async Task DeleteActivity(int Id) + { + int tenantId = _userHelper.GetTenantId(); + var activity = await _context.ActivityMasters.FirstOrDefaultAsync(a => a.Id == Id && a.TenantId == tenantId); + if(activity != null) + { + activity.IsActive = false; + } + await _context.SaveChangesAsync(); + return Ok(ApiResponse.SuccessResponse(null, "Activity Deleted Successfully", 200)); } } } diff --git a/Marco.Pms.Services/Controllers/TaskController.cs b/Marco.Pms.Services/Controllers/TaskController.cs index 28e99b8..7bdfb22 100644 --- a/Marco.Pms.Services/Controllers/TaskController.cs +++ b/Marco.Pms.Services/Controllers/TaskController.cs @@ -35,17 +35,6 @@ namespace MarcoBMS.Services.Controllers return _userHelper.GetTenantId(); } - [HttpGet] - [Route("activities")] - public async Task GetActivitiesMaster() - { - var tenantId = GetTenantId(); - var activities = await _context.ActivityMasters.Where(c => c.TenantId == tenantId).ToListAsync(); - return Ok(ApiResponse.SuccessResponse(activities, "Success.", 200)); - } - - - [HttpPost("assign")] public async Task AssignTask([FromBody] AssignTaskDto assignTask) { diff --git a/Marco.Pms.Services/Program.cs b/Marco.Pms.Services/Program.cs index 6719848..210c496 100644 --- a/Marco.Pms.Services/Program.cs +++ b/Marco.Pms.Services/Program.cs @@ -23,9 +23,6 @@ builder.Host.UseSerilog((context, config) => }) ; - -#region CORS Settings - // Add services //builder.Services.AddCors(options => //{