mirror of
https://gitlab.com/comunic/comunicapiv2
synced 2024-11-22 13:29:22 +00:00
Like system is working
This commit is contained in:
parent
aa21a2a5e6
commit
3eac46ac55
@ -1,4 +1,7 @@
|
|||||||
import { RequestHandler } from "../entities/RequestHandler";
|
import { RequestHandler } from "../entities/RequestHandler";
|
||||||
|
import { LikesType, LikesHelper } from "../helpers/LikesHelper";
|
||||||
|
import { UserHelper } from "../helpers/UserHelper";
|
||||||
|
import { GroupsAccessLevel } from "../entities/Group";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Likes controller
|
* Likes controller
|
||||||
@ -13,7 +16,62 @@ export class LikesController {
|
|||||||
* @param h Request handler
|
* @param h Request handler
|
||||||
*/
|
*/
|
||||||
public static async Update(h: RequestHandler) {
|
public static async Update(h: RequestHandler) {
|
||||||
// TODO : implement
|
const req_type = h.postString("type");
|
||||||
|
const is_linking = h.postBool("like");
|
||||||
|
|
||||||
|
let id: number;
|
||||||
|
let type: LikesType;
|
||||||
|
|
||||||
|
switch(req_type) {
|
||||||
|
|
||||||
|
// In case of user
|
||||||
|
case "user":
|
||||||
|
id = await h.postUserId("id");
|
||||||
|
type = LikesType.USER;
|
||||||
|
|
||||||
|
if(!await UserHelper.CanSeeUserPage(h.getUserId(), id))
|
||||||
|
h.error(401, "You cannot access this user information!")
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
// In case of post
|
||||||
|
case "post":
|
||||||
|
id = await h.postPostIDWithAccess("id");
|
||||||
|
type = LikesType.POST;
|
||||||
|
|
||||||
|
// TODO : delete any notification targetting this user about the post
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
// In case of comment
|
||||||
|
case "comment":
|
||||||
|
id = await h.postCommentIDWithAccess("id");
|
||||||
|
type = LikesType.COMMENT;
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
// In case of group
|
||||||
|
case "group":
|
||||||
|
id = await h.postGroupIDWithAccess("id", GroupsAccessLevel.VIEW_ACCESS);
|
||||||
|
type = LikesType.GROUP;
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
// Default case : throw an error
|
||||||
|
default:
|
||||||
|
throw Error("Unsupported like type : "+req_type+" !");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Update like status
|
||||||
|
await LikesHelper.Update(h.getUserId(), is_linking, id, type);
|
||||||
|
|
||||||
|
|
||||||
|
h.success();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,4 +1,5 @@
|
|||||||
import { DatabaseHelper } from "./DatabaseHelper";
|
import { DatabaseHelper } from "./DatabaseHelper";
|
||||||
|
import { mysql_date } from "../utils/DateUtils";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Likes helper
|
* Likes helper
|
||||||
@ -70,6 +71,42 @@ export class LikesHelper {
|
|||||||
}) == 1;
|
}) == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update like status
|
||||||
|
*
|
||||||
|
* @param userID The ID of the user updating like status
|
||||||
|
* @param isLiking New like status of the user
|
||||||
|
* @param id The ID of the component element to update
|
||||||
|
* @param kind The kind of the element
|
||||||
|
*/
|
||||||
|
public static async Update(userID: number, isLiking: boolean, id: number, kind: LikesType) {
|
||||||
|
|
||||||
|
// If not liking anymore
|
||||||
|
if(!isLiking) {
|
||||||
|
await DatabaseHelper.DeleteRows(LIKES_TABLE, {
|
||||||
|
ID_personne: userID,
|
||||||
|
ID_type: id,
|
||||||
|
type: LikesKindsDB[kind]
|
||||||
|
})
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Else we make the user liking the element
|
||||||
|
|
||||||
|
// Check if the user is already liking the element
|
||||||
|
if(await this.IsLiking(userID, id, kind))
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Insert in the database
|
||||||
|
await DatabaseHelper.InsertRow(LIKES_TABLE, {
|
||||||
|
ID_personne: userID,
|
||||||
|
ID_type: id,
|
||||||
|
Date_envoi: mysql_date(),
|
||||||
|
type: LikesKindsDB[kind]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete all the likes related to an element
|
* Delete all the likes related to an element
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user