@@ -4,12 +4,25 @@ import { Ok, Error } from "../utils/responses";
44import * as template from "../utils/emailtemplates" ;
55import * as email_service from "../services/email.service" ;
66import * as user_service from '../services/user.service'
7+ import path from "path" ;
8+ import fs from "fs" ;
79
810export const createNews = async ( req : Request , res : Response ) => {
11+
12+
913 const { title, description, type, published, target } = req . body ;
14+ const file = req . file ;
1015
1116 try {
12- const news = await news_service . createNews ( title , description , type , published , target ) ;
17+
18+ const image_url = file ? `/uploads/imgnews/${ file . filename } ` : undefined ;
19+ const news = await news_service . createNews (
20+ title ,
21+ description ,
22+ type ,
23+ published ,
24+ target ,
25+ image_url ) ;
1326 Ok ( res , { msg : "Actu créée avec succès" , data : news } ) ;
1427 } catch ( err ) {
1528 console . error ( err ) ;
@@ -51,17 +64,19 @@ export const listPublishedNewsByType = async (req: Request, res: Response) => {
5164} ;
5265
5366export const publishNews = async ( req : Request , res : Response ) => {
54- const { id, title , description , type , target } = req . body ;
67+ const { id} = req . body ;
5568
5669 try {
5770 await news_service . publishNewsandNotify ( id ) ;
5871
72+ const news = await news_service . getNewsById ( Number ( id ) ) ;
73+
5974 // Génération du mail HTML
60- const html = template . compileTemplate ( { title, description } , template . templateNotifyNews ) ;
75+ const html = template . compileTemplate ( { title : news . title } , template . templateNotifyNews ) ;
6176
62- const recipients = target === "Tous"
77+ const recipients = news . target === "Tous"
6378 ? ( await user_service . getUsersAdmin ( ) ) . map ( u => u . email )
64- : ( await user_service . getUsersbyPermission ( target ) ) . map ( u => u . email ) ;
79+ : ( await user_service . getUsersbyPermission ( news . target ) ) . map ( u => u . email ) ;
6580
6681 if ( recipients . length === 0 ) {
6782 Error ( res , { msg : "No recipients" } ) ;
@@ -71,7 +86,7 @@ export const publishNews = async (req: Request, res: Response) => {
7186 const email = {
7287 from : "integration@utt.fr" ,
7388 to : [ ] ,
74- subject : `[INTEGRATION UTT] Nouvelle actu : ${ title } ` ,
89+ subject : `[INTEGRATION UTT] Nouvelle actu : ${ news . title } ` ,
7590 html : html ,
7691 cc : [ ] ,
7792 bcc : recipients ,
@@ -91,9 +106,17 @@ export const deleteNews = async (req: Request, res: Response) => {
91106 const { newsId} = req . query
92107
93108 try {
94- await news_service . deleteNews ( Number ( newsId ) ) ;
95- Ok ( res , { msg : "Actus supprimée avec succès !" } ) ;
96- return ;
109+
110+ const existing = await news_service . getNewsById ( Number ( newsId ) ) ;
111+ if ( existing ?. image_url ) {
112+ const imagePath = path . join ( __dirname , "../../" , existing . image_url ) ;
113+ if ( fs . existsSync ( imagePath ) ) {
114+ fs . unlinkSync ( imagePath ) ;
115+ }
116+ }
117+ await news_service . deleteNews ( Number ( newsId ) ) ;
118+ Ok ( res , { msg : "Actus supprimée avec succès !" } ) ;
119+ return ;
97120
98121 } catch ( error ) {
99122 Error ( res , { msg : "Erreur lors de la suppression de l'actus" } ) ;
@@ -102,25 +125,33 @@ export const deleteNews = async (req: Request, res: Response) => {
102125
103126
104127export const updateNews = async ( req : Request , res : Response ) => {
105- const { id, title, description, type, target } = req . body ;
106-
107- try {
108- const updated = await news_service . updateNews ( Number ( id ) , {
109- title,
110- description,
111- type,
112- target,
113- } ) ;
114-
115- if ( ! updated ) {
116- Error ( res , { msg : "Aucune actu trouvée à modifier" } ) ;
117- return ;
128+ const { id, title, description, type, target } = req . body ;
129+ const file = req . file ;
130+ const image_url = file ? `/uploads/imgnews/${ file . filename } ` : undefined ;
131+
132+ try {
133+ const existing = await news_service . getNewsById ( Number ( id ) ) ;
134+ if ( ! existing ) {
135+ return Error ( res , { msg : "Actu introuvable" } ) ;
136+ }
137+
138+ // Supprimer l'ancienne image si une nouvelle est uploadée
139+ if ( file && existing . image_url ) {
140+ const oldPath = path . join ( __dirname , "../../" , existing . image_url ) ;
141+ if ( fs . existsSync ( oldPath ) ) {
142+ fs . unlinkSync ( oldPath ) ;
118143 }
119-
120- Ok ( res , { msg : "Actu mise à jour avec succès" , data : updated } ) ;
121- } catch ( err ) {
122- console . error ( err ) ;
123- Error ( res , { msg : "Erreur lors de la mise à jour de l'actu" } ) ;
124144 }
145+
146+ const updates : any = { title, description, type, target } ;
147+ if ( image_url ) updates . image_url = image_url ;
148+
149+ const updated = await news_service . updateNews ( Number ( id ) , updates ) ;
150+
151+ Ok ( res , { msg : "Actu mise à jour avec succès" , data : updated } ) ;
152+ } catch ( err ) {
153+ console . error ( err ) ;
154+ Error ( res , { msg : "Erreur lors de la mise à jour de l'actu" } ) ;
155+ }
125156} ;
126157
0 commit comments