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; } }