initial commit

This commit is contained in:
2026-07-21 13:52:43 +07:00
commit f0e6f38940
881 changed files with 66309 additions and 0 deletions
@@ -0,0 +1,91 @@
using Indotalent.ConfigBackEnd.Extensions;
using Indotalent.Data.Entities;
using Microsoft.EntityFrameworkCore;
namespace Indotalent.Infrastructure.Database.Demo;
public static class EmployeeSeeder
{
public static async Task GenerateDataAsync(AppDbContext context)
{
if (await context.Employee.AnyAsync()) return;
var categories = await context.EmployeeCategory.ToListAsync();
var groups = await context.EmployeeGroup.ToListAsync();
if (!categories.Any() || !groups.Any()) return;
var streets = new string[] { "Main St", "Broadway", "Oak Avenue", "Maple Drive", "Park Avenue", "Washington Blvd", "Lakeview Dr", "Sunset Blvd" };
var cities = new string[] { "New York", "Los Angeles", "Chicago", "Miami", "Seattle" };
var states = new string[] { "NY", "CA", "IL", "FL", "WA" };
var zipCodes = new string[] { "10001", "90210", "60601", "33101", "98101" };
var random = new Random();
var entityName = nameof(Employee);
var employeeData = new List<(string Name, string Title, string GroupName, string CategoryName, decimal Commission)>
{
("Dr. Robert Sterling", "Chief Medical Officer", "Medical Doctors & Specialists", "Medical & Clinical Professionals", 0.00m),
("Dr. Jennifer Adams", "General Practitioner", "Medical Doctors & Specialists", "Medical & Clinical Professionals", 0.15m),
("Dr. David Miller", "Orthopedic Surgeon", "Medical Doctors & Specialists", "Medical & Clinical Professionals", 0.20m),
("Sarah Mitchell", "Head Nurse", "Registered Nurses & Care Staff", "Nursing & Clinical Support", 0.00m),
("Jessica Taylor", "ER Triage Nurse", "Registered Nurses & Care Staff", "Nursing & Clinical Support", 0.00m),
("Michael Vance", "Senior Pharmacist", "Pharmacy & Dispensing Team", "Allied Health & Diagnostics", 0.00m),
("Amanda Williams", "Pharmacy Technician", "Pharmacy & Dispensing Team", "Allied Health & Diagnostics", 0.00m),
("Christopher Moore", "Lead Phlebotomist", "Laboratory & Diagnostic Technicians", "Allied Health & Diagnostics", 0.00m),
("Kevin Anderson", "Clinical Lab Scientist", "Laboratory & Diagnostic Technicians", "Allied Health & Diagnostics", 0.00m),
("Samantha White", "MRI Technologist", "Radiology & Imaging Technicians", "Allied Health & Diagnostics", 0.00m),
("Dr. Ashley Johnson", "Chief Dentist", "Dental & Allied Health Professionals", "Medical & Clinical Professionals", 0.15m),
("Matthew Davis", "Dental Hygienist", "Dental & Allied Health Professionals", "Allied Health & Diagnostics", 0.05m),
("Lauren Martinez", "Receptionist Lead", "Patient Reception & Front Desk", "Administrative & Management", 0.00m),
("Jonathan Wilson", "Admissions Coordinator", "Patient Reception & Front Desk", "Administrative & Management", 0.00m),
("Stephanie Rodriguez", "Billing Specialist", "Medical Billing & Insurance", "Administrative & Management", 0.00m),
("Nicholas Thomas", "Insurance Coordinator", "Medical Billing & Insurance", "Administrative & Management", 0.00m),
("Jason Hernandez", "Clinic Administrator", "Clinic Administration & Management", "Administrative & Management", 0.00m),
("Olivia Jackson", "HR Manager", "Clinic Administration & Management", "Administrative & Management", 0.00m),
("Alexander Smith", "Facility Supervisor", "Facility Maintenance & Security", "Operations & Facility Support", 0.00m),
("Elizabeth Brown", "Security Lead", "Facility Maintenance & Security", "Operations & Facility Support", 0.00m)
};
foreach (var data in employeeData)
{
var group = groups.FirstOrDefault(x => x.Name == data.GroupName);
var category = categories.FirstOrDefault(x => x.Name == data.CategoryName);
var autoNo = await context.GenerateAutoNumberAsync(
entityName: entityName,
prefixTemplate: $"EMP-{{Year}}-"
);
var emailPrefix = data.Name.Replace("Dr. ", "").Replace(" ", ".").ToLower();
var employee = new Employee
{
Name = data.Name,
AutoNumber = autoNo,
EmployeeNumber = $"ID-{random.Next(1000, 9999)}",
JobTitle = data.Title,
CommissionRate = data.Commission,
EmployeeGroupId = group?.Id,
EmployeeCategoryId = category?.Id,
Street = $"{random.Next(100, 999)} {GetRandomString(streets, random)}",
City = GetRandomString(cities, random),
State = GetRandomString(states, random),
ZipCode = GetRandomString(zipCodes, random),
Country = "United States",
PhoneNumber = $"+1-{random.Next(200, 999)}-{random.Next(100, 999)}-{random.Next(1000, 9999)}",
EmailAddress = $"{emailPrefix}@med-clinic.us",
Description = $"Professional {data.Title} based in the {data.CategoryName} division."
};
await context.Employee.AddAsync(employee);
}
await context.SaveChangesAsync();
}
private static string GetRandomString(string[] array, Random random)
{
return array[random.Next(array.Length)];
}
}