Controllers_AdminsController.js
const CrudController = require("./CrudController");
const AdminsService = require("../Services/AdminsService");
const JsonResponse = require("./JsonResponse");
const AdminValidator = require("../Validators/AdminValidator");
const logger = require("../Logger");
const AdminDto = require("../database/dto/AdminDto");
/**
* @extends Myintranet.Controllers.CrudController
* @memberOf Myintranet.Controllers
* @inheritDoc
*/
class AdminsController extends CrudController {
constructor(db) {
let service = new AdminsService(db);
super(service, AdminValidator, db);
}
/**
* Ajoute un administrateur a la base de données
* @param {*} request
* @param {*} response
*/
add(request, response) {
let errors = this.isValidForAdd(request);
if (errors.length === 0) {
this.service.add(request).then(data => {
response.json(new JsonResponse(true, data, ""));
}).catch(err => {
if (err.parent && err.parent.code === "ER_DUP_ENTRY") {
response.json(new JsonResponse(false, err, err.errors[0].path + "=>" + err.errors[0].value + " exist deja"));
} else {
response.json(new JsonResponse(false, err, err.message));
}
})
} else {
logger.error(errors);
let e = errors.map((err) => {
return err.message;
})
response.json(new JsonResponse(false, e, errors[0].message));
}
}
/**
* Associe Emloyeurs aux utilisateurs de type administrateur
* @param request
* @param response
*/
setAssociatedEmployeurs(request, response) {
//sets the ids of associated ESNS
this.service.updateAttributions(request).then(data => {
response.json(new JsonResponse(true, data, ""));
}).catch(err => {
response.json(new JsonResponse(false, err, err.message));
})
}
/**
* Transform un object model a un Dto
* @param {*} data
* @returns {AdminDto} the Data transformed into a DTO
*/
toDto(data) {
return new AdminDto(data);
}
}
module.exports = AdminsController;