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

61 lines
2.5 KiB
C#

using Indotalent.Data.Entities;
using Indotalent.Infrastructure.Database.Demo;
using Microsoft.AspNetCore.Identity;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
namespace Indotalent.Infrastructure.Database;
public static class DatabaseSeederDemo
{
public static async Task SeedAsync(IServiceProvider serviceProvider)
{
var roleManager = serviceProvider.GetRequiredService<RoleManager<IdentityRole>>();
var userManager = serviceProvider.GetRequiredService<UserManager<ApplicationUser>>();
var configuration = serviceProvider.GetRequiredService<IConfiguration>();
var context = serviceProvider.GetRequiredService<AppDbContext>();
// 1. Master Data (Must be first)
await UserSeeder.GenerateDataAsync(userManager, context, configuration);
await UnitMeasureSeeder.GenerateDataAsync(context);
await WarehouseSeeder.GenerateDataAsync(context);
await PaymentMethodSeeder.GenerateDataAsync(context);
await EmployeeGroupSeeder.GenerateDataAsync(context);
await EmployeeCategorySeeder.GenerateDataAsync(context);
await EmployeeSeeder.GenerateDataAsync(context);
// 2. Customer & Vendor Related
await CustomerCategorySeeder.GenerateDataAsync(context);
await CustomerGroupSeeder.GenerateDataAsync(context);
await CustomerSeeder.GenerateDataAsync(context);
await CustomerContactSeeder.GenerateDataAsync(context);
await VendorCategorySeeder.GenerateDataAsync(context);
await VendorGroupSeeder.GenerateDataAsync(context);
await VendorSeeder.GenerateDataAsync(context);
await VendorContactSeeder.GenerateDataAsync(context);
// 3. Product Related
await ProductGroupSeeder.GenerateDataAsync(context);
await ProductSeeder.GenerateDataAsync(context);
// 4. Sales Related
await SalesOrderSeeder.GenerateDataAsync(context);
// 5. Purchase Related
await PurchaseOrderSeeder.GenerateDataAsync(context);
// 6. Inventory Operations
// 7. Finance & Project Related
await InvoiceSeeder.GenerateDataAsync(context);
await PaymentReceiveSeeder.GenerateDataAsync(context);
await BillSeeder.GenerateDataAsync(context);
await PaymentDisburseSeeder.GenerateDataAsync(context);
await BookingGroupSeeder.GenerateDataAsync(context);
await BookingResourceSeeder.GenerateDataAsync(context);
await BookingSeeder.GenerateDataAsync(context);
}
}