initial commit
This commit is contained in:
@@ -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)];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user