diff --git a/src/controllers/CommentsController.ts b/src/controllers/CommentsController.ts index e59f7ae..a80379c 100644 --- a/src/controllers/CommentsController.ts +++ b/src/controllers/CommentsController.ts @@ -1,6 +1,9 @@ import { RequestHandler } from "../entities/RequestHandler"; import { Comment } from "../entities/Comment"; import { LikesHelper, LikesType } from "../helpers/LikesHelper"; +import { check_string_before_insert, removeHTMLNodes } from "../utils/StringUtils"; +import { time } from "../utils/DateUtils"; +import { CommentsHelper } from "../helpers/CommentsHelper"; /** * Comments controller @@ -18,7 +21,49 @@ export class CommentsController { public static async Create(h: RequestHandler) { const postID = await h.postPostIDWithAccess("postID"); + let content: string, image_path: string; + + // Check if an image was included in the request or not + if(h.hasFile("image")) { + content = this.GetCommentContent(h, "content", false); + image_path = await h.savePostImage("image", "imgcommentaire", 700, 700); + } + + else + content = this.GetCommentContent(h, "content", true); + + const newComment = new Comment({ + id: -1, + timeSent: time(), + postID: postID, + userID: h.getUserId(), + content: content, + imagePath: image_path + }); + + const commentID = await CommentsHelper.Create(newComment); + + // TODO : Create notifications + + // TODO : Delete any notifications targetting this user about the post + + h.send({success: true, commentID: commentID}); + } + + /** + * Get the content of a comment included in a POST field + * + * @param h Request handler + * @param name The name of the post field + * @param need_check True if the comment must have valid content / false else + */ + private static GetCommentContent(h: RequestHandler, name: string, need_check = true) : string { + const content = h.postContent(name); + + if(need_check && !check_string_before_insert(content)) + h.error(400, "Please check new comment content!"); + return content; } diff --git a/src/helpers/CommentsHelper.ts b/src/helpers/CommentsHelper.ts index 56d7e2c..6145a26 100644 --- a/src/helpers/CommentsHelper.ts +++ b/src/helpers/CommentsHelper.ts @@ -2,6 +2,7 @@ import { Comment } from "../entities/Comment"; import { DatabaseHelper } from "./DatabaseHelper"; import { unlinkSync, existsSync } from "fs"; import { LikesHelper, LikesType } from "./LikesHelper"; +import { mysql_date, time } from "../utils/DateUtils"; /** * Comments helper @@ -13,6 +14,22 @@ const COMMENTS_TABLE = "commentaires"; export class CommentsHelper { + /** + * Create a new comment + * + * @param comment Information about the comment to create + */ + public static async Create(comment: Comment) : Promise { + return await DatabaseHelper.InsertRow(COMMENTS_TABLE, { + ID_texte: comment.postID, + ID_personne: comment.userID, + date_envoi: mysql_date(), + time_insert: time(), + commentaire: comment.content, + image_commentaire: comment.hasImage ? comment.imagePath : "" + }); + } + /** * Get the comments of a POST *