create project
This commit is contained in:
commit
ffeab6a127
196 changed files with 36968 additions and 0 deletions
315
Data/DatabaseSeeder.cs
Normal file
315
Data/DatabaseSeeder.cs
Normal file
|
|
@ -0,0 +1,315 @@
|
|||
using BMA.EHR.Core;
|
||||
using BMA.EHR.Extensions;
|
||||
using BMA.EHR.Recurit.Exam.Service.Models;
|
||||
using BMA.EHR.Recurit.Exam.Service.Services;
|
||||
using Newtonsoft.Json;
|
||||
using OfficeOpenXml;
|
||||
using System.Linq;
|
||||
|
||||
namespace BMA.EHR.Recurit.Exam.Service.Data
|
||||
{
|
||||
public static class DatabaseSeeder
|
||||
{
|
||||
|
||||
#region " Seed Metadata "
|
||||
|
||||
public static async Task SeedPrefixAsync(WebApplication app)
|
||||
{
|
||||
using var scope = app.Services.CreateScope();
|
||||
var service = scope.ServiceProvider.GetRequiredService<PrefixService>();
|
||||
var insertedPrefix = new List<Prefix>();
|
||||
|
||||
if ((await service.GetsAsync()).Count() == 0)
|
||||
{
|
||||
// read excels into object
|
||||
var excelFile = "SeedPerson.xlsx";
|
||||
using (var excel = new ExcelPackage(new FileInfo(excelFile)))
|
||||
{
|
||||
// 1. Seed PrefixAsync
|
||||
var workSheet = excel.Workbook.Worksheets.FirstOrDefault(x => x.Name.ToLower() == "prefix");
|
||||
var totalRows = workSheet?.Dimension.Rows;
|
||||
|
||||
int row = 1;
|
||||
|
||||
while (row <= totalRows)
|
||||
{
|
||||
var cell1 = workSheet?.Cells[row, 1]?.GetValue<string>();
|
||||
if (cell1 == "" || cell1 == null) break;
|
||||
|
||||
var prefix = insertedPrefix.Where(x => x.Name == (workSheet?.Cells[row, 1]?.GetValue<string>() ?? "")).FirstOrDefault();
|
||||
if (prefix == null)
|
||||
{
|
||||
var inserted = new Prefix
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
Name = workSheet?.Cells[row, 1]?.GetValue<string>() ?? "",
|
||||
IsActive = true,
|
||||
CreatedFullName = "System Administrator",
|
||||
CreatedAt = DateTime.Now
|
||||
};
|
||||
insertedPrefix.Add(inserted);
|
||||
|
||||
await service.CreateAsync(inserted);
|
||||
}
|
||||
row++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static async Task SeedReligionAsync(WebApplication app)
|
||||
{
|
||||
using var scope = app.Services.CreateScope();
|
||||
var service = scope.ServiceProvider.GetRequiredService<ReligionService>();
|
||||
var insertedReligion = new List<Religion>();
|
||||
|
||||
if ((await service.GetsAsync()).Count() == 0)
|
||||
{
|
||||
// read excels into object
|
||||
var excelFile = "SeedPerson.xlsx";
|
||||
using (var excel = new ExcelPackage(new FileInfo(excelFile)))
|
||||
{
|
||||
// 1. Seed Religion
|
||||
var workSheet = excel.Workbook.Worksheets.FirstOrDefault(x => x.Name.ToLower() == "religion");
|
||||
var totalRows = workSheet?.Dimension.Rows;
|
||||
|
||||
int row = 1;
|
||||
|
||||
while (row <= totalRows)
|
||||
{
|
||||
var cell1 = workSheet?.Cells[row, 1]?.GetValue<string>();
|
||||
if (cell1 == "" || cell1 == null) break;
|
||||
|
||||
var religion = insertedReligion.Where(x => x.Name == (workSheet?.Cells[row, 1]?.GetValue<string>() ?? "")).FirstOrDefault();
|
||||
if (religion == null)
|
||||
{
|
||||
var inserted = new Religion
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
Name = workSheet?.Cells[row, 1]?.GetValue<string>() ?? "",
|
||||
IsActive = true,
|
||||
CreatedFullName = "System Administrator",
|
||||
CreatedAt = DateTime.Now
|
||||
};
|
||||
insertedReligion.Add(inserted);
|
||||
|
||||
await service.CreateAsync(inserted);
|
||||
}
|
||||
row++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static async Task SeedRelationshipAsync(WebApplication app)
|
||||
{
|
||||
using var scope = app.Services.CreateScope();
|
||||
var service = scope.ServiceProvider.GetRequiredService<RelationshipService>();
|
||||
var insertedRelationship = new List<Relationship>();
|
||||
|
||||
if ((await service.GetsAsync()).Count() == 0)
|
||||
{
|
||||
// read excels into object
|
||||
var excelFile = "SeedPerson.xlsx";
|
||||
using (var excel = new ExcelPackage(new FileInfo(excelFile)))
|
||||
{
|
||||
// 1. Seed Relationship
|
||||
var workSheet = excel.Workbook.Worksheets.FirstOrDefault(x => x.Name.ToLower() == "relationship");
|
||||
var totalRows = workSheet?.Dimension.Rows;
|
||||
|
||||
int row = 1;
|
||||
|
||||
while (row <= totalRows)
|
||||
{
|
||||
var cell1 = workSheet?.Cells[row, 1]?.GetValue<string>();
|
||||
if (cell1 == "" || cell1 == null) break;
|
||||
|
||||
var relationship = insertedRelationship.Where(x => x.Name == (workSheet?.Cells[row, 1]?.GetValue<string>() ?? "")).FirstOrDefault();
|
||||
if (relationship == null)
|
||||
{
|
||||
var inserted = new Relationship
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
Name = workSheet?.Cells[row, 1]?.GetValue<string>() ?? "",
|
||||
IsActive = true,
|
||||
CreatedFullName = "System Administrator",
|
||||
CreatedAt = DateTime.Now
|
||||
};
|
||||
insertedRelationship.Add(inserted);
|
||||
|
||||
await service.CreateAsync(inserted);
|
||||
}
|
||||
row++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static async Task SeedEducationLevelAsync(WebApplication app)
|
||||
{
|
||||
using var scope = app.Services.CreateScope();
|
||||
var service = scope.ServiceProvider.GetRequiredService<EducationLevelService>();
|
||||
var insertedEducationLevel = new List<EducationLevel>();
|
||||
|
||||
if ((await service.GetsAsync()).Count() == 0)
|
||||
{
|
||||
// read excels into object
|
||||
var excelFile = "SeedPerson.xlsx";
|
||||
using (var excel = new ExcelPackage(new FileInfo(excelFile)))
|
||||
{
|
||||
// 1. Seed EducationLevel
|
||||
var workSheet = excel.Workbook.Worksheets.FirstOrDefault(x => x.Name.ToLower() == "educationlevel");
|
||||
var totalRows = workSheet?.Dimension.Rows;
|
||||
|
||||
int row = 1;
|
||||
|
||||
while (row <= totalRows)
|
||||
{
|
||||
var cell1 = workSheet?.Cells[row, 1]?.GetValue<string>();
|
||||
if (cell1 == "" || cell1 == null) break;
|
||||
|
||||
var educationLevel = insertedEducationLevel.Where(x => x.Name == (workSheet?.Cells[row, 1]?.GetValue<string>() ?? "")).FirstOrDefault();
|
||||
if (educationLevel == null)
|
||||
{
|
||||
var inserted = new EducationLevel
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
Name = workSheet?.Cells[row, 1]?.GetValue<string>() ?? "",
|
||||
IsActive = true,
|
||||
CreatedFullName = "System Administrator",
|
||||
CreatedAt = DateTime.Now
|
||||
};
|
||||
insertedEducationLevel.Add(inserted);
|
||||
|
||||
await service.CreateAsync(inserted);
|
||||
}
|
||||
row++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static async Task SeedProvinceAsync(WebApplication app)
|
||||
{
|
||||
using var scope = app.Services.CreateScope();
|
||||
var service = scope.ServiceProvider.GetRequiredService<ProvinceService>();
|
||||
var districtService = scope.ServiceProvider.GetRequiredService<DistrictService>();
|
||||
var subDistrictService = scope.ServiceProvider.GetRequiredService<SubDistrictService>();
|
||||
|
||||
var serializeOption = new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore };
|
||||
|
||||
var insertedProvince = new List<Province>();
|
||||
|
||||
if ((await service.GetsAsync()).Count() == 0)
|
||||
{
|
||||
// read excels into object
|
||||
var excelFile = "SeedPerson.xlsx";
|
||||
using (var excel = new ExcelPackage(new FileInfo(excelFile)))
|
||||
{
|
||||
// 1. Seed Province
|
||||
var workSheet = excel.Workbook.Worksheets.FirstOrDefault(x => x.Name.ToLower() == "province");
|
||||
var totalRows = workSheet?.Dimension.Rows;
|
||||
|
||||
int row = 2;
|
||||
|
||||
while (row <= totalRows)
|
||||
{
|
||||
var cell1 = workSheet?.Cells[row, 1]?.GetValue<string>();
|
||||
if (cell1 == "" || cell1 == null) break;
|
||||
|
||||
var inserted = new Province
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
Name = workSheet?.Cells[row, 1]?.GetValue<string>() ?? "",
|
||||
IsActive = true,
|
||||
CreatedFullName = "System Administrator",
|
||||
CreatedAt = DateTime.Now,
|
||||
Districts = new List<District>()
|
||||
};
|
||||
insertedProvince.Add(inserted);
|
||||
|
||||
await service.CreateAsync(inserted);
|
||||
|
||||
row++;
|
||||
}
|
||||
|
||||
// 2. Seed District
|
||||
var d_workSheet = excel.Workbook.Worksheets.FirstOrDefault(x => x.Name.ToLower() == "district");
|
||||
var d_totalRows = d_workSheet?.Dimension.Rows;
|
||||
|
||||
int d_row = 2;
|
||||
|
||||
while (d_row <= d_totalRows)
|
||||
{
|
||||
var cell1 = d_workSheet?.Cells[d_row, 1]?.GetValue<string>();
|
||||
if (cell1 == "" || cell1 == null) break;
|
||||
|
||||
var province = insertedProvince.Where(x => x.Name == cell1).FirstOrDefault();
|
||||
|
||||
var inserted = new District
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
Name = d_workSheet?.Cells[d_row, 2]?.GetValue<string>() ?? "",
|
||||
IsActive = true,
|
||||
CreatedFullName = "System Administrator",
|
||||
CreatedAt = DateTime.Now,
|
||||
SubDistricts = new List<SubDistrict>()
|
||||
};
|
||||
|
||||
province?.Districts.Add(inserted);
|
||||
var provinceId = province == null ? Guid.NewGuid() : province.Id;
|
||||
|
||||
var jsonString = JsonConvert.SerializeObject(inserted, serializeOption);
|
||||
|
||||
await districtService.CreateAsync(inserted, provinceId.ToString("D"));
|
||||
|
||||
d_row++;
|
||||
}
|
||||
|
||||
|
||||
// 3. Seed SubDistrict
|
||||
var s_workSheet = excel.Workbook.Worksheets.FirstOrDefault(x => x.Name.ToLower() == "subdistrict");
|
||||
var s_totalRows = s_workSheet?.Dimension.Rows;
|
||||
|
||||
int s_row = 2;
|
||||
var zipcodes = new List<string>();
|
||||
|
||||
while (s_row <= s_totalRows)
|
||||
{
|
||||
var cell1 = s_workSheet?.Cells[s_row, 1]?.GetValue<string>();
|
||||
var cell2 = s_workSheet?.Cells[s_row, 2]?.GetValue<string>();
|
||||
if (cell1 == "" || cell1 == null) break;
|
||||
|
||||
var province = insertedProvince.Where(x => x.Name == cell1).FirstOrDefault();
|
||||
var district = province?.Districts.Where(x => x.Name == cell2).FirstOrDefault();
|
||||
|
||||
var inserted = new SubDistrict
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
Name = s_workSheet?.Cells[s_row, 3]?.GetValue<string>() ?? "",
|
||||
ZipCode = s_workSheet?.Cells[s_row, 4]?.GetValue<string>() ?? "",
|
||||
IsActive = true,
|
||||
CreatedFullName = "System Administrator",
|
||||
CreatedAt = DateTime.Now,
|
||||
|
||||
};
|
||||
|
||||
if (!zipcodes.Contains(inserted.ZipCode))
|
||||
zipcodes.Add(inserted.ZipCode);
|
||||
|
||||
district?.SubDistricts.Add(inserted);
|
||||
var districtId = district == null ? Guid.NewGuid() : district.Id;
|
||||
|
||||
var jsonString = JsonConvert.SerializeObject(inserted, serializeOption);
|
||||
|
||||
await subDistrictService.CreateAsync(inserted, districtId.ToString("D"));
|
||||
|
||||
s_row++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue