import { Injectable } from '@nestjs/common'; import { PrismaService } from '../prisma/prisma.service'; import { UpdateSettingsDto } from './dto/settings.dto'; @Injectable() export class SettingsService { constructor(private readonly prisma: PrismaService) {} async get() { const settings = await this.ensureDefaults(); return this.map(settings); } async update(dto: UpdateSettingsDto) { await this.ensureDefaults(); const settings = await this.prisma.systemSettings.update({ where: { id: 'default' }, data: { maxMeteragePerInvoice: dto.maxMeteragePerInvoice, cashInvoiceValidityHours: dto.cashInvoiceValidityHours, defaultSettlementCheck: dto.defaultSettlementCheck, defaultSettlementCash: dto.defaultSettlementCash, smsOrderRegistered: dto.smsOrderRegistered, smsPaymentReminder: dto.smsPaymentReminder, smsCheckReview: dto.smsCheckReview, smsShippingUpdate: dto.smsShippingUpdate, supportPhone: dto.supportPhone === undefined ? undefined : dto.supportPhone?.trim() || null, supportEmail: dto.supportEmail === undefined ? undefined : dto.supportEmail?.trim() || null, }, }); return this.map(settings); } private async ensureDefaults() { return this.prisma.systemSettings.upsert({ where: { id: 'default' }, create: { id: 'default' }, update: {}, }); } private map(settings: { id: string; maxMeteragePerInvoice: number; cashInvoiceValidityHours: number; defaultSettlementCheck: boolean; defaultSettlementCash: boolean; smsOrderRegistered: boolean; smsPaymentReminder: boolean; smsCheckReview: boolean; smsShippingUpdate: boolean; supportPhone: string | null; supportEmail: string | null; updatedAt: Date; }) { return { id: settings.id, maxMeteragePerInvoice: settings.maxMeteragePerInvoice, cashInvoiceValidityHours: settings.cashInvoiceValidityHours, defaultSettlementCheck: settings.defaultSettlementCheck, defaultSettlementCash: settings.defaultSettlementCash, smsOrderRegistered: settings.smsOrderRegistered, smsPaymentReminder: settings.smsPaymentReminder, smsCheckReview: settings.smsCheckReview, smsShippingUpdate: settings.smsShippingUpdate, supportPhone: settings.supportPhone, supportEmail: settings.supportEmail, updatedAt: settings.updatedAt.toISOString(), }; } }