392 lines
18 KiB
C#
392 lines
18 KiB
C#
using Marco.Pms.Model.Activities;
|
|
using Marco.Pms.Model.AttendanceModule;
|
|
using Marco.Pms.Model.Authentication;
|
|
using Marco.Pms.Model.Employees;
|
|
using Marco.Pms.Model.Entitlements;
|
|
using Marco.Pms.Model.Industries;
|
|
using Marco.Pms.Model.Projects;
|
|
using Marco.Pms.Utility;
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Identity;
|
|
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace Marco.Pms.DataAccess.Data
|
|
{
|
|
public class ApplicationDbContext : IdentityDbContext<IdentityUser>
|
|
{
|
|
private readonly IHttpContextAccessor _httpContextAccessor;
|
|
|
|
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options, IHttpContextAccessor httpContextAccessor) : base(options)
|
|
{
|
|
_httpContextAccessor = httpContextAccessor;
|
|
|
|
}
|
|
|
|
public DbSet<RefreshToken> RefreshTokens { get; set; }
|
|
|
|
public DbSet<Tenant> Tenants { get; set; }
|
|
public DbSet<ApplicationUser> ApplicationUsers { get; set; }
|
|
|
|
public DbSet<ActivityMaster> ActivityMasters { get; set; }
|
|
public DbSet<Project> Projects { get; set; }
|
|
public DbSet<ProjectAllocation> ProjectAllocations { get; set; }
|
|
|
|
public DbSet<StatusMaster> StatusMasters { get; set; }
|
|
|
|
public DbSet<Building> Buildings { get; set; }
|
|
public DbSet<Floor> Floor { get; set; }
|
|
|
|
public DbSet<WorkArea> WorkAreas { get; set; }
|
|
public DbSet<WorkItem> WorkItems { get; set; }
|
|
//public DbSet<WorkItemMapping> WorkItemMapping { get; set; }
|
|
|
|
public DbSet<WorkShift> WorkShifts { get; set; }
|
|
|
|
|
|
|
|
public DbSet<TaskAllocation> TaskAllocations { get; set; }
|
|
public DbSet<TaskComment> TaskComments { get; set; }
|
|
public DbSet<TaskMembers> TaskMembers { get; set; }
|
|
|
|
|
|
|
|
|
|
// public DbSet<Attendance> Attendances { get; set; }
|
|
public DbSet<Attendance> Attendes { get; set; }
|
|
|
|
public DbSet<AttendanceLog> AttendanceLogs { get; set; }
|
|
// public DbSet<AttendLog> AttendLogs { get; set; }
|
|
|
|
|
|
|
|
public DbSet<Employee> Employees { get; set; }
|
|
public DbSet<EmployeeRoleMapping> EmployeeRoleMappings { get; set; }
|
|
|
|
public DbSet<Module> Modules { get; set; }
|
|
public DbSet<Feature> Features { get; set; }
|
|
public DbSet<FeaturePermission> FeaturePermissions { get; set; }
|
|
|
|
public DbSet<ApplicationRole> ApplicationRoles { get; set; }
|
|
public DbSet<JobRole> JobRoles { get; set; }
|
|
public DbSet<RolePermissionMappings> RolePermissionMappings { get; set; }
|
|
|
|
public DbSet<Industry>Industries { get; set; }
|
|
|
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
|
{
|
|
base.OnModelCreating(modelBuilder);
|
|
|
|
ManageApplicationStructure(modelBuilder);
|
|
|
|
modelBuilder.Entity<ApplicationRole>().HasData(
|
|
new ApplicationRole
|
|
{
|
|
Id = new Guid("2c8d0808-c421-11ef-9b93-0242ac110002"),
|
|
Role = "Admin",
|
|
Description = "",
|
|
TenantId = 1
|
|
},
|
|
new ApplicationRole
|
|
{
|
|
Id = new Guid("62e0918d-c421-11ef-9b93-0242ac110002"),
|
|
Role = "Welder",
|
|
Description = "",
|
|
|
|
TenantId = 1
|
|
},
|
|
new ApplicationRole
|
|
{
|
|
Id = new Guid("68823f1f-c421-11ef-9b93-0242ac110002"),
|
|
Role = "Helper",
|
|
Description = "",
|
|
|
|
TenantId = 1
|
|
},
|
|
new ApplicationRole
|
|
{
|
|
Id = new Guid("6d3a7c72-c421-11ef-9b93-0242ac110002"),
|
|
Role = "Site Engineer",
|
|
Description = "",
|
|
|
|
TenantId = 1
|
|
}
|
|
,
|
|
new ApplicationRole
|
|
{
|
|
Id = new Guid("6d3aad72-c421-11ef-9b93-0242ac110002"),
|
|
Role = "Project Manager",
|
|
Description = "",
|
|
|
|
TenantId = 1
|
|
}
|
|
);
|
|
|
|
modelBuilder.Entity<RefreshToken>(entity =>
|
|
{
|
|
entity.HasKey(e => e.Id);
|
|
entity.HasOne(e => e.User)
|
|
.WithMany()
|
|
.HasForeignKey(e => e.UserId)
|
|
.OnDelete(DeleteBehavior.Cascade);
|
|
});
|
|
|
|
modelBuilder.Entity<Tenant>().HasData(
|
|
new Tenant { Id = 1, Name = "MarcoBMS", ContactName = "Admin", ContactNumber = "123456789", Description = "", DomainName = "www.marcobms.org",IndustryId = 1, OnBoardingDate = DateTime.MinValue }
|
|
);
|
|
|
|
modelBuilder.Entity<StatusMaster>().HasData(
|
|
new StatusMaster
|
|
{
|
|
Id = 1,
|
|
Status = "Active",
|
|
TenantId = 1
|
|
},
|
|
new StatusMaster
|
|
{
|
|
Id = 2,
|
|
Status = "In Progress",
|
|
TenantId = 1
|
|
},
|
|
new StatusMaster
|
|
{
|
|
Id = 3,
|
|
Status = "On Hold",
|
|
TenantId = 1
|
|
},
|
|
new StatusMaster
|
|
{
|
|
Id = 4,
|
|
Status = "Completed",
|
|
TenantId = 1
|
|
}
|
|
);
|
|
modelBuilder.Entity<Project>().HasData(
|
|
new Project
|
|
{
|
|
Id = 1,
|
|
Name = "Project 1",
|
|
ProjectAddress = "Project 1 Address",
|
|
ContactPerson = "Project 1 Contact Person",
|
|
ProjectStatusId = 1,
|
|
TenantId = 1
|
|
}, new Project
|
|
{
|
|
Id = 2,
|
|
Name = "Project 2",
|
|
ProjectAddress = "Project 2 Address",
|
|
ContactPerson = "Project 2 Contact Person",
|
|
ProjectStatusId = 2,
|
|
TenantId = 1
|
|
}, new Project
|
|
{
|
|
Id = 3,
|
|
Name = "Project 3",
|
|
ProjectAddress = "Project 3 Address",
|
|
ContactPerson = "Project 3 Contact Person",
|
|
ProjectStatusId = 3,
|
|
TenantId = 1
|
|
});
|
|
|
|
|
|
var tenantId = _httpContextAccessor.HttpContext?.Items["TenantId"]?.ToString();
|
|
|
|
modelBuilder.Entity<ActivityMaster>()
|
|
.HasData(
|
|
new ActivityMaster
|
|
{
|
|
Id = 1,
|
|
ActivityName = "Core Cutting",
|
|
UnitOfMeasurement = UnitOfMeasurement.Number.ToString(),
|
|
TenantId = 1
|
|
}, new ActivityMaster
|
|
{
|
|
Id = 2,
|
|
ActivityName = "Fabrication",
|
|
UnitOfMeasurement = UnitOfMeasurement.Meter.ToString(),
|
|
TenantId = 1
|
|
}, new ActivityMaster
|
|
{
|
|
Id = 3,
|
|
ActivityName = "Lifting",
|
|
UnitOfMeasurement = UnitOfMeasurement.Meter.ToString(),
|
|
TenantId = 1
|
|
}, new ActivityMaster
|
|
{
|
|
Id = 4,
|
|
ActivityName = "Hanging",
|
|
UnitOfMeasurement = UnitOfMeasurement.Meter.ToString(),
|
|
TenantId = 1
|
|
}, new ActivityMaster
|
|
{
|
|
Id = 5,
|
|
ActivityName = "Tapping",
|
|
UnitOfMeasurement = UnitOfMeasurement.Meter.ToString(),
|
|
TenantId = 1
|
|
}, new ActivityMaster
|
|
{
|
|
Id = 6,
|
|
ActivityName = "Welding",
|
|
UnitOfMeasurement = UnitOfMeasurement.Meter.ToString(),
|
|
TenantId = 1
|
|
}, new ActivityMaster
|
|
{
|
|
Id = 7,
|
|
ActivityName = "Testing",
|
|
UnitOfMeasurement = UnitOfMeasurement.Area.ToString(),
|
|
TenantId = 1
|
|
}, new ActivityMaster
|
|
{
|
|
Id = 8,
|
|
ActivityName = "Painting",
|
|
UnitOfMeasurement = UnitOfMeasurement.Meter.ToString(),
|
|
TenantId = 1
|
|
}, new ActivityMaster
|
|
{
|
|
Id = 9,
|
|
ActivityName = "Marking Area",
|
|
UnitOfMeasurement = UnitOfMeasurement.Meter.ToString(),
|
|
TenantId = 1
|
|
}, new ActivityMaster
|
|
{
|
|
Id = 10,
|
|
ActivityName = "Drilling",
|
|
UnitOfMeasurement = UnitOfMeasurement.Number.ToString(),
|
|
TenantId = 1
|
|
}, new ActivityMaster
|
|
{
|
|
Id = 11,
|
|
ActivityName = "MS Support Fabrication",
|
|
UnitOfMeasurement = UnitOfMeasurement.Number.ToString(),
|
|
TenantId = 1
|
|
}, new ActivityMaster
|
|
{
|
|
Id = 12,
|
|
ActivityName = "MS Support Hanging",
|
|
UnitOfMeasurement = UnitOfMeasurement.Number.ToString(),
|
|
TenantId = 1
|
|
}, new ActivityMaster
|
|
{
|
|
Id = 13,
|
|
ActivityName = "Hydrant Volve",
|
|
UnitOfMeasurement = UnitOfMeasurement.Number.ToString(),
|
|
TenantId = 1
|
|
}, new ActivityMaster
|
|
{
|
|
Id = 14,
|
|
ActivityName = "Sprinkler Installation",
|
|
UnitOfMeasurement = UnitOfMeasurement.Number.ToString(),
|
|
TenantId = 1
|
|
}
|
|
);
|
|
modelBuilder.Entity<Industry>().HasData(
|
|
new Industry {Id = 1,Name = "Information Technology (IT) Services"},
|
|
new Industry { Id = 2,Name = "Manufacturing & Production" },
|
|
new Industry { Id = 3,Name = "Energy & Resources" },
|
|
new Industry { Id = 4,Name = "Finance & Professional Services" },
|
|
new Industry { Id = 5, Name = "Hospitals and Healthcare Services" },
|
|
new Industry { Id = 6, Name = "Social Services" },
|
|
new Industry { Id = 7, Name = "Retail & Consumer Services" },
|
|
new Industry { Id = 8, Name = "Transportation & Logistics" },
|
|
new Industry { Id = 9, Name = "Education & Training" }
|
|
|
|
);
|
|
}
|
|
|
|
private static void ManageApplicationStructure(ModelBuilder modelBuilder)
|
|
{
|
|
// Configure ApplicationRole to Tenant relationship (if Tenant exists)
|
|
modelBuilder.Entity<ApplicationRole>()
|
|
.HasOne<Tenant>() // No navigation property in ApplicationRole
|
|
.WithMany()
|
|
.HasForeignKey(ar => ar.TenantId);
|
|
// Configure the relationship between ApplicationRole and FeaturePermission via a join table
|
|
modelBuilder.Entity<RolePermissionMappings>(entity =>
|
|
{
|
|
entity.HasKey(rfp => new { rfp.ApplicationRoleId, rfp.FeaturePermissionId });
|
|
|
|
entity.HasOne<ApplicationRole>()
|
|
.WithMany()
|
|
.HasForeignKey(rfp => rfp.ApplicationRoleId);
|
|
|
|
entity.HasOne<FeaturePermission>()
|
|
.WithMany()
|
|
.HasForeignKey(rfp => rfp.FeaturePermissionId);
|
|
});
|
|
|
|
|
|
|
|
|
|
modelBuilder.Entity<Module>().HasData(new Module
|
|
{
|
|
Id = 1,
|
|
Name = "Project",
|
|
Description = "Project Module",
|
|
Key = "b04da7e9-0406-409c-ac7f-b97256e6ea02"
|
|
}, new Module
|
|
{
|
|
Id = 2,
|
|
Name = "Employee",
|
|
Description = "Employee Module",
|
|
Key = "0971c7fb-6ce1-458a-ae3f-8d3205893637"
|
|
}, new Module
|
|
{
|
|
Id = 3,
|
|
Name = "Masters",
|
|
Description = "Masters Module",
|
|
Key = "504ec132-e6a9-422f-8f85-050602cfce05"
|
|
});
|
|
|
|
|
|
|
|
modelBuilder.Entity<Feature>().HasData(
|
|
new Feature { Id = new Guid("53176ebf-c75d-42e5-839f-4508ffac3def"), Description = "Manage Project", Name = "Manage Project", ModuleId = 1, IsActive = true },
|
|
new Feature { Id = new Guid("9666de86-d7c7-4d3d-acaa-fcd6d6b81f3c"), Description = "Manage Infra", Name = "Manage Infra", ModuleId = 1, IsActive = true },
|
|
|
|
new Feature { Id = new Guid("9d4b5489-2079-40b9-bd77-6e1bf90bc19f"), Description = "Manage Tasks", Name = "Manage Tasks", ModuleId = 1, IsActive = true },
|
|
|
|
new Feature { Id = new Guid("39e66f81-efc6-446c-95bd-46bff6cfb606"), Description = "Assign and Update Tasks Progress", Name = "Assign and Update Tasks Progress", ModuleId = 1, IsActive = true },
|
|
|
|
|
|
new Feature { Id = new Guid("81ab8a87-8ccd-4015-a917-0627cee6a100"), Description = "Manage Employee", Name = "Manage Employee", ModuleId = 2, IsActive = true },
|
|
new Feature { Id = new Guid("52c9cf54-1eb2-44d2-81bb-524cf29c0a94"), Description = "Attendance", Name = "Attendance", ModuleId = 2, IsActive = true },
|
|
|
|
new Feature { Id = new Guid("be3b3afc-6ccf-4566-b9b6-aafcb65546be"), Description = "Global Masters", Name = "Global Masters", ModuleId = 3, IsActive = true },
|
|
new Feature { Id = new Guid("660131a4-788c-4739-a082-cbbf7879cbf2"), Description = "Tenant Masters", Name = "Tenant Masters", ModuleId = 3, IsActive = true }
|
|
);
|
|
|
|
modelBuilder.Entity<FeaturePermission>().HasData(
|
|
new FeaturePermission { Id = new Guid("6ea44136-987e-44ba-9e5d-1cf8f5837ebc"), FeatureId = new Guid("53176ebf-c75d-42e5-839f-4508ffac3def"), IsEnabled = true, Name = "View Project" , Description=""},
|
|
new FeaturePermission { Id = new Guid("172fc9b6-755b-4f62-ab26-55c34a330614"), FeatureId = new Guid("53176ebf-c75d-42e5-839f-4508ffac3def"), IsEnabled = true, Name = "Manage Project", Description = "" },
|
|
new FeaturePermission { Id = new Guid("b94802ce-0689-4643-9e1d-11c86950c35b"), FeatureId = new Guid("53176ebf-c75d-42e5-839f-4508ffac3def"), IsEnabled = true, Name = "Manage Team", Description = "" },
|
|
|
|
new FeaturePermission { Id = new Guid("c7b68e33-72f0-474f-bd96-77636427ecc8"), FeatureId = new Guid("9666de86-d7c7-4d3d-acaa-fcd6d6b81f3c"), IsEnabled = true, Name = "View Project Infra", Description = "" },
|
|
new FeaturePermission { Id = new Guid("f2aee20a-b754-4537-8166-f9507b44585b"), FeatureId = new Guid("9666de86-d7c7-4d3d-acaa-fcd6d6b81f3c"), IsEnabled = true, Name = "Manage Project Infra", Description = "" },
|
|
|
|
|
|
new FeaturePermission { Id = new Guid("9fcc5f87-25e3-4846-90ac-67a71ab92e3c"), FeatureId = new Guid("9d4b5489-2079-40b9-bd77-6e1bf90bc19f"), IsEnabled = true, Name = "View Task", Description = "" },
|
|
new FeaturePermission { Id = new Guid("08752f33-3b29-4816-b76b-ea8a968ed3c5"), FeatureId = new Guid("9d4b5489-2079-40b9-bd77-6e1bf90bc19f"), IsEnabled = true, Name = "Manage Task", Description = "" },
|
|
|
|
|
|
new FeaturePermission { Id = new Guid("d135a4b0-4f9a-4903-ab9c-4843839ebdee"), FeatureId = new Guid("39e66f81-efc6-446c-95bd-46bff6cfb606"), IsEnabled = true, Name = "Assign Task and Report Progress", Description = "" },
|
|
new FeaturePermission { Id = new Guid("ed99ecd4-1bed-42e1-b7b3-d64c04493823"), FeatureId = new Guid("39e66f81-efc6-446c-95bd-46bff6cfb606"), IsEnabled = true, Name = "Approve Task", Description = "" },
|
|
|
|
|
|
new FeaturePermission { Id = new Guid("b82d2b7e-0d52-45f3-997b-c008ea460e7f"), FeatureId = new Guid("81ab8a87-8ccd-4015-a917-0627cee6a100"), IsEnabled = true, Name = "View Employee", Description = "" },
|
|
new FeaturePermission { Id = new Guid("a97d366a-c2bb-448d-be93-402bd2324566"), FeatureId = new Guid("81ab8a87-8ccd-4015-a917-0627cee6a100"), IsEnabled = true, Name = "Manage Employee", Description = "" },
|
|
new FeaturePermission { Id = new Guid("fbd213e0-0250-46f1-9f5f-4b2a1e6e76a3"), FeatureId = new Guid("81ab8a87-8ccd-4015-a917-0627cee6a100"), IsEnabled = true, Name = "Assign To Project", Description = "" },
|
|
|
|
|
|
new FeaturePermission { Id = new Guid("915e6bff-65f6-4e3f-aea8-3fd217d3ea9e"), FeatureId = new Guid("52c9cf54-1eb2-44d2-81bb-524cf29c0a94"), IsEnabled = true, Name = "Perform Attendance ", Description = "" },
|
|
new FeaturePermission { Id = new Guid("57802c4a-00aa-4a1f-a048-fd2f70dd44b6"), FeatureId = new Guid("52c9cf54-1eb2-44d2-81bb-524cf29c0a94"), IsEnabled = true, Name = "Regularize Attendance", Description = "" },
|
|
|
|
new FeaturePermission { Id = new Guid("5ffbafe0-7ab0-48b1-bb50-c1bf76b65f9d"), FeatureId = new Guid("be3b3afc-6ccf-4566-b9b6-aafcb65546be"), IsEnabled = true, Name = "View Masters", Description = "" },
|
|
new FeaturePermission { Id = new Guid("588a8824-f924-4955-82d8-fc51956cf323"), FeatureId = new Guid("be3b3afc-6ccf-4566-b9b6-aafcb65546be"), IsEnabled = true, Name = "Manage Masters", Description = "" },
|
|
new FeaturePermission { Id = new Guid("cb8ec407-46d4-4467-930c-69127cda6dec"), FeatureId = new Guid("660131a4-788c-4739-a082-cbbf7879cbf2"), IsEnabled = true, Name = "View Masters", Description = "" },
|
|
new FeaturePermission { Id = new Guid("6b1a6d97-a951-4de5-9b19-709bac7c4f18"), FeatureId = new Guid("660131a4-788c-4739-a082-cbbf7879cbf2"), IsEnabled = true, Name = "Manage Masters", Description = "" }
|
|
|
|
);
|
|
}
|
|
}
|
|
}
|