Files
2026-07-21 14:35:37 +07:00

82 lines
3.8 KiB
C#

using Indotalent.ConfigBackEnd.Extensions;
using Indotalent.Data.Entities;
using Microsoft.EntityFrameworkCore;
namespace Indotalent.Infrastructure.Database.Demo;
public static class CustomerSeeder
{
public static async Task GenerateDataAsync(AppDbContext context)
{
if (await context.Customer.AnyAsync()) return;
var groups = await context.CustomerGroup.Select(x => x.Id).ToArrayAsync();
var categories = await context.CustomerCategory.Select(x => x.Id).ToArrayAsync();
var cities = new string[] { "New York", "Los Angeles", "Chicago", "Houston", "Phoenix", "Philadelphia", "Miami", "Seattle", "Austin", "Denver" };
var streets = new string[] { "Broadway Ave", "Sunset Blvd", "Michigan Ave", "Fifth Ave", "Market St", "Peachtree St", "Ocean Dr", "Cedar Rd", "Oak St", "Washington Blvd" };
var states = new string[] { "NY", "CA", "IL", "TX", "AZ", "PA", "FL", "WA", "CO", "MA" };
var zipCodes = new string[] { "10001", "90210", "60601", "77001", "85001", "19101", "33101", "98101", "73301", "80201" };
var phoneNumbers = new string[] { "212-555-0101", "310-555-0102", "312-555-0103", "713-555-0104", "602-555-0105", "305-555-0106" };
var emailDomains = new string[] { "gmail.com", "outlook.com", "icloud.com", "yahoo.com", "wellness-member.us" };
var random = new Random();
var entityName = nameof(Customer);
var customers = new List<Customer>
{
new Customer { Name = "Samantha Reed" },
new Customer { Name = "Marcus Thompson" },
new Customer { Name = "Elite Athletics Group" },
new Customer { Name = "Michael Chen" },
new Customer { Name = "Central Park Yoga Club" },
new Customer { Name = "Jennifer Lopez-Davis" },
new Customer { Name = "Manhattan Corporate Wellness" },
new Customer { Name = "Robert Fitzgerald" },
new Customer { Name = "Seattle Rowing Team" },
new Customer { Name = "Emily Whitehouse" },
new Customer { Name = "Texas Oil Corporate Health" },
new Customer { Name = "David Miller" },
new Customer { Name = "Silicon Valley Tech Retreats" },
new Customer { Name = "Linda Montgomery" },
new Customer { Name = "Beverly Hills Social Club" },
new Customer { Name = "Christopher Vance" },
new Customer { Name = "Miami Beach Resort Partners" },
new Customer { Name = "Sarah Jenkins" },
new Customer { Name = "Aspen Ski Lodge Staff" },
new Customer { Name = "William Harrison" }
};
foreach (var customer in customers)
{
var autoNo = await context.GenerateAutoNumberAsync(
entityName: entityName,
prefixTemplate: $"{entityName.ToShortNameConsonant(3)}/{{Year}}/"
);
customer.AutoNumber = autoNo;
customer.CustomerGroupId = GetRandomValue(groups, random);
customer.CustomerCategoryId = GetRandomValue(categories, random);
customer.City = GetRandomString(cities, random);
customer.Street = GetRandomString(streets, random);
customer.State = GetRandomString(states, random);
customer.ZipCode = GetRandomString(zipCodes, random);
customer.PhoneNumber = GetRandomString(phoneNumbers, random);
customer.EmailAddress = $"{customer.Name?.Replace(" ", ".").ToLower()}@{GetRandomString(emailDomains, random)}";
await context.Customer.AddAsync(customer);
}
await context.SaveChangesAsync();
}
private static T GetRandomValue<T>(T[] array, Random random)
{
return array[random.Next(array.Length)];
}
private static string GetRandomString(string[] array, Random random)
{
return array[random.Next(array.Length)];
}
}