Files
2026-07-21 14:14:44 +07:00

86 lines
4.0 KiB
C#

using Indotalent.Data.Entities;
using Indotalent.Infrastructure.Database.Demo;
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
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>();
// Get the Demo Tenant ID (already created in DatabaseSeeder)
var demoTenant = await context.Set<Tenant>().FirstOrDefaultAsync(t => t.Name == "Demo Tenant");
var demoTenantId = demoTenant?.Id;
// 1. Master Data (Must be first)
await UserSeeder.GenerateDataAsync(userManager, context, configuration, demoTenantId);
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 & CRM Related
await SalesTeamSeeder.GenerateDataAsync(context);
await SalesRepresentativeSeeder.GenerateDataAsync(context);
await CampaignSeeder.GenerateDataAsync(context);
await LeadSeeder.GenerateDataAsync(context);
await LeadContactSeeder.GenerateDataAsync(context);
await LeadActivitySeeder.GenerateDataAsync(context);
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);
await TransferOutSeeder.GenerateDataAsync(context);
await TransferInSeeder.GenerateDataAsync(context);
await PositiveAdjustmentSeeder.GenerateDataAsync(context);
await NegativeAdjustmentSeeder.GenerateDataAsync(context);
await ScrappingSeeder.GenerateDataAsync(context);
await StockCountSeeder.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 BudgetSeeder.GenerateDataAsync(context);
await ExpenseSeeder.GenerateDataAsync(context);
await BookingGroupSeeder.GenerateDataAsync(context);
await BookingResourceSeeder.GenerateDataAsync(context);
await BookingSeeder.GenerateDataAsync(context);
await ProgramManagerResourceSeeder.GenerateDataAsync(context);
await ProgramManagerSeeder.GenerateDataAsync(context);
}
}