72 lines
2.2 KiB
TypeScript
72 lines
2.2 KiB
TypeScript
import { Request, Response } from 'express';
|
|
import { ThemeService, ThemeData } from '../services/theme.service';
|
|
|
|
export class ThemeController {
|
|
// Créer un nouveau thème
|
|
static async createTheme(req: Request, res: Response) {
|
|
try {
|
|
const themeData: ThemeData = req.body;
|
|
const theme = await ThemeService.createTheme(themeData);
|
|
res.status(201).json(theme);
|
|
} catch (error) {
|
|
res.status(500).json({ error: 'Erreur lors de la création du thème' });
|
|
}
|
|
}
|
|
|
|
// Récupérer tous les thèmes
|
|
static async getAllThemes(req: Request, res: Response) {
|
|
try {
|
|
const themes = await ThemeService.getAllThemes();
|
|
res.json(themes);
|
|
} catch (error) {
|
|
res.status(500).json({ error: 'Erreur lors de la récupération des thèmes' });
|
|
}
|
|
}
|
|
|
|
// Récupérer le thème actif
|
|
static async getActiveTheme(req: Request, res: Response) {
|
|
try {
|
|
const theme = await ThemeService.getActiveTheme();
|
|
if (!theme) {
|
|
return res.status(404).json({ error: 'Aucun thème actif trouvé' });
|
|
}
|
|
res.json(theme);
|
|
} catch (error) {
|
|
res.status(500).json({ error: 'Erreur lors de la récupération du thème actif' });
|
|
}
|
|
}
|
|
|
|
// Activer un thème
|
|
static async activateTheme(req: Request, res: Response) {
|
|
try {
|
|
const { themeId } = req.params;
|
|
const theme = await ThemeService.activateTheme(themeId);
|
|
res.json(theme);
|
|
} catch (error) {
|
|
res.status(500).json({ error: 'Erreur lors de l\'activation du thème' });
|
|
}
|
|
}
|
|
|
|
// Mettre à jour un thème
|
|
static async updateTheme(req: Request, res: Response) {
|
|
try {
|
|
const { themeId } = req.params;
|
|
const themeData: Partial<ThemeData> = req.body;
|
|
const theme = await ThemeService.updateTheme(themeId, themeData);
|
|
res.json(theme);
|
|
} catch (error) {
|
|
res.status(500).json({ error: 'Erreur lors de la mise à jour du thème' });
|
|
}
|
|
}
|
|
|
|
// Supprimer un thème
|
|
static async deleteTheme(req: Request, res: Response) {
|
|
try {
|
|
const { themeId } = req.params;
|
|
await ThemeService.deleteTheme(themeId);
|
|
res.status(204).send();
|
|
} catch (error) {
|
|
res.status(500).json({ error: 'Erreur lors de la suppression du thème' });
|
|
}
|
|
}
|
|
}
|