130 lines
4.5 KiB
C#
130 lines
4.5 KiB
C#
using Marco.Pms.DataAccess.Data;
|
|
using Marco.Pms.Model.Employees;
|
|
using Marco.Pms.Model.Entitlements;
|
|
using Marco.Pms.Model.ViewModels;
|
|
using Marco.Pms.Utility;
|
|
using Microsoft.AspNetCore.Identity;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace Marco.Pms.DataAccess.Initializer
|
|
{
|
|
public class DBInitializer : IDBInitializer
|
|
{
|
|
|
|
private readonly ApplicationDbContext _db;
|
|
private readonly UserManager<IdentityUser> _userManager;
|
|
private readonly RoleManager<IdentityRole> _roleManager;
|
|
//private readonly IUnitOfWork _unitOfWork;
|
|
|
|
public DBInitializer(UserManager<IdentityUser> userManager, RoleManager<IdentityRole> roleManager, ApplicationDbContext db)
|
|
{
|
|
_userManager = userManager;
|
|
_roleManager = roleManager;
|
|
_db = db;
|
|
//_unitOfWork = unitOfWork;
|
|
|
|
}
|
|
public void Initialize()
|
|
{
|
|
// Migration those are not applied
|
|
try
|
|
{
|
|
if (_db.Database.GetPendingMigrations().Count() > 0)
|
|
{
|
|
_db.Database.Migrate();
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Console.WriteLine(ex.ToString());
|
|
}
|
|
|
|
// Create roes if not created
|
|
|
|
CreateProjectInfra();
|
|
|
|
if (!_roleManager.RoleExistsAsync(APP_ROLES.Admin.ToString()).GetAwaiter().GetResult())
|
|
{
|
|
_roleManager.CreateAsync(new IdentityRole(APP_ROLES.Admin.ToString())).GetAwaiter().GetResult();
|
|
_roleManager.CreateAsync(new IdentityRole(APP_ROLES.Management.ToString())).GetAwaiter().GetResult();
|
|
_roleManager.CreateAsync(new IdentityRole(APP_ROLES.SiteEngineer.ToString())).GetAwaiter().GetResult();
|
|
_roleManager.CreateAsync(new IdentityRole(APP_ROLES.SkilledWorker.ToString())).GetAwaiter().GetResult();
|
|
_roleManager.CreateAsync(new IdentityRole(APP_ROLES.UnskilledWorker.ToString())).GetAwaiter().GetResult();
|
|
|
|
|
|
// Create admin user if roles are not created
|
|
_userManager.CreateAsync(new ApplicationUser
|
|
{
|
|
UserName = "admin@marcobms.com",
|
|
Email = "admin@marcobms.com",
|
|
PhoneNumber = "1234567890",
|
|
// Street = "Street 1",
|
|
// State = "State",
|
|
// Postalcode = "1234567890",
|
|
// City = "City",
|
|
TenantId = Guid.Parse("b3466e83-7e11-464c-b93a-daf047838b26"),
|
|
IsRootUser = true,
|
|
|
|
}, "User@123").GetAwaiter().GetResult();
|
|
|
|
ApplicationUser user = _db.ApplicationUsers.FirstOrDefault(u => u.Email == "admin@marcobms.com") ?? new ApplicationUser();
|
|
_userManager.AddToRoleAsync(user, APP_ROLES.Admin.ToString()).GetAwaiter().GetResult();
|
|
|
|
Employee emp = new Employee()
|
|
{
|
|
FirstName = "Administrator",
|
|
LastName = "",
|
|
MiddleName = "",
|
|
Gender = "",
|
|
EmergencyPhoneNumber = "1234567890",
|
|
CurrentAddress = "",
|
|
AadharNumber = "1234567890",
|
|
ApplicationUserId = user.Id,
|
|
BirthDate = DateTime.MinValue,
|
|
PanNumber = "",
|
|
PermanentAddress = "",
|
|
PhoneNumber = "",
|
|
TenantId = user.TenantId
|
|
};
|
|
_db.Employees.Add(emp);
|
|
|
|
_db.SaveChanges();
|
|
|
|
}
|
|
}
|
|
|
|
private static void CreateProjectInfra()
|
|
{
|
|
var jsonData = File.ReadAllText("wwwroot/assets/data/buildings.json");
|
|
|
|
var entities1 = Newtonsoft.Json.JsonConvert.DeserializeObject<ProjectDetailsVM>(jsonData);
|
|
|
|
//foreach (Building item in entities1.buildings)
|
|
//{
|
|
// _unitOfWork.Building.Add(item);
|
|
//}
|
|
//_unitOfWork.Save();
|
|
|
|
|
|
//foreach (Floor item in entities1.floors)
|
|
//{
|
|
// _unitOfWork.Floor.Add(item);
|
|
//}
|
|
//_unitOfWork.Save();
|
|
|
|
//foreach (WorkArea item in entities1.workAreas)
|
|
//{
|
|
// _unitOfWork.WorkArea.Add(item);
|
|
//}
|
|
//_unitOfWork.Save();
|
|
|
|
//foreach (WorkItem item in entities1.workItems)
|
|
//{
|
|
// _unitOfWork.WorkItem.Add(item);
|
|
//}
|
|
//_unitOfWork.Save();
|
|
}
|
|
}
|
|
|
|
}
|