using PowderCoating.Core.Entities;
namespace PowderCoating.Application.Interfaces;
public interface ISeedDataService
{
///
/// Seeds only lookup tables for a new company (called automatically on company creation).
/// This includes job statuses, priorities, and quote statuses.
///
/// The company to seed lookup data for
/// Result message indicating what was seeded
Task SeedCompanyLookupsAsync(int companyId);
///
/// Seeds initial data for a specific company
///
/// The company to seed data for
/// Result message indicating what was seeded
Task SeedCompanyDataAsync(int companyId);
///
/// Seeds system-level data (roles, default company, SuperAdmins)
///
/// Result message indicating what was seeded
Task SeedSystemDataAsync();
///
/// Removes seeded demo data for a company based on the selected options.
/// Matches records by their known seed identifiers (emails, SKUs, serial numbers, etc.).
///
Task RemoveSeedDataAsync(int companyId, RemoveSeedDataOptions options);
///
/// Gets a list of all companies for seeding
///
Task> GetCompaniesAsync();
}
public class RemoveSeedDataOptions
{
public bool Customers { get; set; }
public bool InventoryItems { get; set; }
public bool Equipment { get; set; }
public bool Catalog { get; set; }
public bool PricingTiers { get; set; }
public bool OperatingCosts { get; set; }
}
public class SeedDataResult
{
public bool Success { get; set; }
public string Message { get; set; } = string.Empty;
public List Details { get; set; } = new();
public List Warnings { get; set; } = new();
public int ItemsSeeded { get; set; }
public int ItemsSkipped { get; set; }
}