import { PrismaClient } from '@prisma/client'; const prisma = new PrismaClient(); export interface ThemeData { name: string; primaryColor: string; secondaryColor: string; backgroundColor: string; textColor: string; } export class ThemeService { // Créer un nouveau thème static async createTheme(data: ThemeData) { return prisma.theme.create({ data: { ...data, isActive: false, }, }); } // Récupérer tous les thèmes static async getAllThemes() { return prisma.theme.findMany(); } // Récupérer le thème actif static async getActiveTheme() { const settings = await prisma.appSettings.findFirst({ include: { currentTheme: true, }, }); return settings?.currentTheme; } // Activer un thème static async activateTheme(themeId: string) { // Désactiver tous les thèmes await prisma.theme.updateMany({ where: { isActive: true }, data: { isActive: false }, }); // Activer le thème sélectionné const updatedTheme = await prisma.theme.update({ where: { id: themeId }, data: { isActive: true }, }); // Mettre à jour les paramètres de l'application await prisma.appSettings.upsert({ where: { id: '1' }, update: { currentThemeId: themeId }, create: { id: '1', currentThemeId: themeId }, }); return updatedTheme; } // Mettre à jour un thème static async updateTheme(themeId: string, data: Partial) { return prisma.theme.update({ where: { id: themeId }, data, }); } // Supprimer un thème static async deleteTheme(themeId: string) { return prisma.theme.delete({ where: { id: themeId }, }); } }