import { getPrisma } from '../infrastructure/database/PrismaSingleton';

const OTP_DEBUG_KEY = 'leaves.otp_debug_enabled';
const SHIFT_CURRENT_MONTH_KEY = 'leaves.shift_current_month_enabled';

export class LeavesAppSettingsService {
  private prisma = getPrisma();

  private async getBool(key: string): Promise<boolean> {
    const row = await this.prisma.app_settings.findUnique({ where: { key } });
    return row?.value === 'true';
  }

  private async setBool(key: string, enabled: boolean): Promise<{ enabled: boolean }> {
    await this.prisma.app_settings.upsert({
      where: { key },
      create: { key, value: enabled ? 'true' : 'false', updated_at: new Date() },
      update: { value: enabled ? 'true' : 'false', updated_at: new Date() },
    });
    return { enabled };
  }

  isOtpDebugEnabled(): Promise<boolean> {
    return this.getBool(OTP_DEBUG_KEY);
  }

  setOtpDebugEnabled(enabled: boolean): Promise<{ enabled: boolean }> {
    return this.setBool(OTP_DEBUG_KEY, enabled);
  }

  isShiftCurrentMonthEnabled(): Promise<boolean> {
    return this.getBool(SHIFT_CURRENT_MONTH_KEY);
  }

  setShiftCurrentMonthEnabled(enabled: boolean): Promise<{ enabled: boolean }> {
    return this.setBool(SHIFT_CURRENT_MONTH_KEY, enabled);
  }
}
