/**
 * Create Tenant Subscription DTO
 */

import { BillingCycle, SubscriptionStatus } from '../entities';

export class CreateTenantSubscriptionDto {
  tenantId: string;
  planId: string;
  billingCycle?: BillingCycle;
  currentPeriodStart?: Date;
  currentPeriodEnd?: Date;
  billingEmail?: string;
  billingName?: string;
  billingAddress?: Record<string, any>;
  taxId?: string;
  currentPrice: number;
  discountPercent?: number;
  discountReason?: string;
  contractedUsers?: number;
  contractedBranches?: number;
  autoRenew?: boolean;
  // Trial
  startWithTrial?: boolean;
  trialDays?: number;
}

export class UpdateTenantSubscriptionDto {
  planId?: string;
  billingCycle?: BillingCycle;
  billingEmail?: string;
  billingName?: string;
  billingAddress?: Record<string, any>;
  taxId?: string;
  currentPrice?: number;
  discountPercent?: number;
  discountReason?: string;
  contractedUsers?: number;
  contractedBranches?: number;
  autoRenew?: boolean;
}

export class CancelSubscriptionDto {
  reason?: string;
  cancelImmediately?: boolean;
}

export class ChangePlanDto {
  newPlanId: string;
  effectiveDate?: Date;
  prorateBilling?: boolean;
}

export class SetPaymentMethodDto {
  paymentMethodId: string;
  paymentProvider: string;
}
