1
0
mirror of https://github.com/xuthus83/pigallery2.git synced 2024-11-03 21:04:03 +08:00
pigallery2/backend/middlewares/PersonMWs.ts
2019-03-03 21:26:50 +01:00

105 lines
2.8 KiB
TypeScript

import {NextFunction, Request, Response} from 'express';
import {ErrorCodes, ErrorDTO} from '../../common/entities/Error';
import {ObjectManagers} from '../model/ObjectManagers';
import {PersonDTO} from '../../common/entities/PersonDTO';
import {PhotoDTO} from '../../common/entities/PhotoDTO';
const LOG_TAG = '[PersonMWs]';
export class PersonMWs {
public static async updatePerson(req: Request, res: Response, next: NextFunction) {
if (!req.params.name) {
return next();
}
try {
req.resultPipe = await ObjectManagers.getInstance()
.PersonManager.updatePerson(req.params.name as string,
req.body as PersonDTO);
return next();
} catch (err) {
return next(new ErrorDTO(ErrorCodes.PERSON_ERROR, 'Error during updating a person', err));
}
}
public static async listPersons(req: Request, res: Response, next: NextFunction) {
try {
req.resultPipe = await ObjectManagers.getInstance()
.PersonManager.getAll();
return next();
} catch (err) {
return next(new ErrorDTO(ErrorCodes.PERSON_ERROR, 'Error during listing persons', err));
}
}
public static async addSamplePhotoForAll(req: Request, res: Response, next: NextFunction) {
if (!req.resultPipe) {
return next();
}
try {
const persons = (req.resultPipe as PersonWithPhoto[]);
for (let i = 0; i < persons.length; i++) {
persons[i].samplePhoto = await ObjectManagers.getInstance()
.PersonManager.getSamplePhoto(persons[i].name);
}
req.resultPipe = persons;
return next();
} catch (err) {
return next(new ErrorDTO(ErrorCodes.PERSON_ERROR, 'Error during adding sample photo for all persons', err));
}
}
public static async removeSamplePhotoForAll(req: Request, res: Response, next: NextFunction) {
if (!req.resultPipe) {
return next();
}
try {
const persons = (req.resultPipe as PersonWithPhoto[]);
for (let i = 0; i < persons.length; i++) {
delete persons[i].samplePhoto;
}
req.resultPipe = persons;
return next();
} catch (err) {
return next(new ErrorDTO(ErrorCodes.PERSON_ERROR, 'Error during removing sample photo from all persons', err));
}
}
public static async getSamplePhoto(req: Request, res: Response, next: NextFunction) {
if (!req.params.name) {
return next();
}
const name = req.params.name;
try {
const photo = await ObjectManagers.getInstance()
.PersonManager.getSamplePhoto(name);
if (photo === null) {
return next();
}
req.resultPipe = photo;
return next();
} catch (err) {
return next(new ErrorDTO(ErrorCodes.PERSON_ERROR, 'Error during getting sample photo for a person', err));
}
}
}
export interface PersonWithPhoto extends PersonDTO {
samplePhoto: PhotoDTO;
}