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>(); var userManager = serviceProvider.GetRequiredService>(); var configuration = serviceProvider.GetRequiredService(); var context = serviceProvider.GetRequiredService(); // 1. Master Data (Must be first) await UserSeeder.GenerateDataAsync(userManager, context, configuration); await UnitMeasureSeeder.GenerateDataAsync(context); await WarehouseSeeder.GenerateDataAsync(context); await PaymentMethodSeeder.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 SalesQuotationSeeder.GenerateDataAsync(context); await SalesOrderSeeder.GenerateDataAsync(context); // 5. Purchase Related await PurchaseRequisitionSeeder.GenerateDataAsync(context); await PurchaseOrderSeeder.GenerateDataAsync(context); // 6. Inventory Operations await DeliveryOrderSeeder.GenerateDataAsync(context); await SalesReturnSeeder.GenerateDataAsync(context); await GoodsReceiveSeeder.GenerateDataAsync(context); await PurchaseReturnSeeder.GenerateDataAsync(context); // 7. Finance & Project Related await InvoiceSeeder.GenerateDataAsync(context); await CreditNoteSeeder.GenerateDataAsync(context); await PaymentReceiveSeeder.GenerateDataAsync(context); await BillSeeder.GenerateDataAsync(context); await DebitNoteSeeder.GenerateDataAsync(context); await PaymentDisburseSeeder.GenerateDataAsync(context); await BookingGroupSeeder.GenerateDataAsync(context); await BookingResourceSeeder.GenerateDataAsync(context); await BookingSeeder.GenerateDataAsync(context); await ProgramManagerResourceSeeder.GenerateDataAsync(context); await ProgramManagerSeeder.GenerateDataAsync(context); } }