hrms-api-backend/BMA.EHR.Infrastructure/Persistence/LeaveSeeder.cs
2023-11-28 13:15:36 +07:00

51 lines
1.9 KiB
C#

using BMA.EHR.Application.Repositories.Leaves.LeaveRequests;
using BMA.EHR.Domain.Models.Leave.Commons;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using OfficeOpenXml;
namespace BMA.EHR.Infrastructure.Persistence
{
public static class LeaveSeeder
{
public static async Task SeedLeaveType(WebApplication app)
{
using var scope = app.Services.CreateScope();
var service = scope.ServiceProvider.GetRequiredService<LeaveTypeRepository>();
if ((await service.GetAllAsync()).Count() == 0)
{
// read excels into object
var excelFile = "SeedLeaveData.xlsx";
using (var excel = new ExcelPackage(new FileInfo(excelFile)))
{
var workSheet = excel.Workbook.Worksheets.FirstOrDefault(x => x.Name.ToLower() == "leavetype");
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 LeaveType
{
Id = Guid.Parse(workSheet?.Cells[row, 1]?.GetValue<string>()!),
Name = workSheet?.Cells[row, 2]?.GetValue<string>()!,
Code = workSheet?.Cells[row, 3]?.GetValue<string>()!,
CreatedFullName = "System Administrator",
CreatedAt = DateTime.Now,
};
await service.AddAsync(inserted);
row++;
}
}
}
}
}
}