1
0
mirror of https://gitlab.com/comunic/comunicapiv2 synced 2024-11-22 05:19:22 +00:00

Can block creation of new choices in survey

This commit is contained in:
Pierre HUBERT 2020-05-17 18:59:59 +02:00
parent c4a507e25c
commit 6e5f166b84
3 changed files with 37 additions and 2 deletions

View File

@ -280,6 +280,8 @@ export const Routes : Route[] = [
{path: "/surveys/cancel_response", cb: (h) => SurveyController.CancelResponse(h)}, {path: "/surveys/cancel_response", cb: (h) => SurveyController.CancelResponse(h)},
{path: "/survey/block_new_choices_creation", cb: (h) => SurveyController.BlockNewChoicesCreation(h)},
// Notifications controller // Notifications controller
{path: "/notifications/count_unread", cb: (h) => NotificationsController.CountUnread(h)}, {path: "/notifications/count_unread", cb: (h) => NotificationsController.CountUnread(h)},

View File

@ -2,6 +2,7 @@ import { Survey, SurveyChoice } from "../entities/Survey";
import { RequestHandler } from "../entities/RequestHandler"; import { RequestHandler } from "../entities/RequestHandler";
import { SurveyHelper } from "../helpers/SurveyHelper"; import { SurveyHelper } from "../helpers/SurveyHelper";
import { SurveyResponse } from "../entities/SurveyResponse"; import { SurveyResponse } from "../entities/SurveyResponse";
import { PostAccessLevel } from "../entities/Post";
/** /**
* Survey controller * Survey controller
@ -43,6 +44,19 @@ export class SurveyController {
h.success(); h.success();
} }
/**
* Block the creation of new survey choices
*
* @param h Request handler
*/
public static async BlockNewChoicesCreation(h: RequestHandler) {
const surveyID = await this.PostSurveyIDFromPostID(h, "postID", PostAccessLevel.FULL_ACCESS);
await SurveyHelper.BlockNewChoicesCreation(surveyID);
h.success();
}
/** /**
* Turn a survey into an API entry * Turn a survey into an API entry
@ -76,9 +90,11 @@ export class SurveyController {
* @param h Request handler * @param h Request handler
* @param field The name of the POST field containing the * @param field The name of the POST field containing the
* POST id * POST id
* @param minLevel Minimal access level to the post
*/ */
private static async PostSurveyIDFromPostID(h: RequestHandler, field: string) : Promise<number> { private static async PostSurveyIDFromPostID(h: RequestHandler, field: string,
const postID = await h.postPostIDWithAccess(field); minLevel?: PostAccessLevel) : Promise<number> {
const postID = await h.postPostIDWithAccess(field, minLevel);
return await SurveyHelper.GetID(postID); return await SurveyHelper.GetID(postID);
} }

View File

@ -135,6 +135,23 @@ export class SurveyHelper {
}); });
} }
/**
* Block new survey choices from being created
*
* @param surveyID Target survey ID
*/
public static async BlockNewChoicesCreation(surveyID: number) {
await DatabaseHelper.UpdateRows({
table: SURVEY_INFO_TABLE,
where: {
"ID": surveyID
},
set: {
allow_new_choices: 0
}
})
}
/** /**
* Delete the survey associated to a post * Delete the survey associated to a post
* *