import type { Subscription, SubscriptionSettings, SubscriptionStatus } from "@/types";
import { subscription, subscribers } from "@/features/_mock/extra";
import { SUBSCRIPTION, SUBSCRIPTION_PLANS } from "@/config/subscription";

let current: Subscription | null = subscription;
let settings: SubscriptionSettings = { ...SUBSCRIPTION.defaultSettings };
let subs = [...subscribers];

export const subscriptionsService = {
  plans() { return SUBSCRIPTION_PLANS; },
  async me() { return current; },
  async settings() { return settings; },
  async saveSettings(next: SubscriptionSettings) { settings = next; return settings; },
  async cancelAutoRenew() { if (current) current.autoRenew = false; return current; },
  async listSubscribers() { return [...subs]; },
  async updateSubscriber(id: string, patch: Partial<Subscription>) {
    subs = subs.map((s) => s.id === id ? { ...s, ...patch } : s);
    return subs.find((s) => s.id === id)!;
  },
  async setStatus(id: string, status: SubscriptionStatus) {
    return this.updateSubscriber(id, { status });
  },
};