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(); 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(); if (cell1 == "" || cell1 == null) break; var inserted = new LeaveType { Id = Guid.Parse(workSheet?.Cells[row, 1]?.GetValue()!), Name = workSheet?.Cells[row, 2]?.GetValue()!, Code = workSheet?.Cells[row, 3]?.GetValue()!, CreatedFullName = "System Administrator", CreatedAt = DateTime.Now, }; await service.AddAsync(inserted); row++; } } } } } }