namespace OTSSignsOrchestrator.Server.Data.Entities;

public enum CustomerPlan
{
    Essentials,
    Pro
}

public enum CustomerStatus
{
    PendingPayment,
    Provisioning,
    Active,
    Suspended,
    Decommissioned
}

public class Customer
{
    public Guid Id { get; set; }
    public string Abbreviation { get; set; } = string.Empty;
    public string CompanyName { get; set; } = string.Empty;
    public string AdminEmail { get; set; } = string.Empty;
    public string AdminFirstName { get; set; } = string.Empty;
    public string AdminLastName { get; set; } = string.Empty;
    public CustomerPlan Plan { get; set; }
    public int ScreenCount { get; set; }
    public string? StripeCustomerId { get; set; }
    public string? StripeSubscriptionId { get; set; }
    public string? StripeCheckoutSessionId { get; set; }
    public CustomerStatus Status { get; set; }
    public int FailedPaymentCount { get; set; }
    public DateTime? FirstPaymentFailedAt { get; set; }
    public DateTime CreatedAt { get; set; }

    public ICollection<Instance> Instances { get; set; } = [];
    public ICollection<Job> Jobs { get; set; } = [];
}
