diff --git a/src/controllers/auth.ts b/src/controllers/auth.ts index d9afedb..a90182e 100644 --- a/src/controllers/auth.ts +++ b/src/controllers/auth.ts @@ -47,7 +47,7 @@ export class AuthController { const userRefreshTokenRepository = OrmHelper.DB.getRepository(UserRefreshToken) const user = await userRepository.findOne({ - relations: ["roles", "roles.application", "employee", "employee.department", "employee.position","employee.airport"], + relations: ["roles", "roles.application", "employee", "employee.department", "employee.position","employee.airport","employee.shift"], select: ["id", "email", "name", "password", "username", "roles"], where: { username: param.username }, }) diff --git a/src/controllers/user.ts b/src/controllers/user.ts index f213636..333f2cd 100644 --- a/src/controllers/user.ts +++ b/src/controllers/user.ts @@ -1,17 +1,20 @@ -import axios from "axios" -import config from "config" -import { HrmsEmployee, Paging, User, UserRefreshToken, UserRole } from "entity" -import exceljs from "exceljs" -import { NextFunction, Response } from "express" -import { Request } from "express-jwt" -import Joi from "joi" -import { ILogObj, Logger } from "tslog" -import CommonHelper from "../helpers/common" -import { ReturnHelper } from "../helpers/express/return" -import { OrmHelper } from "../helpers/orm" -import { Language } from "../langs/lang" +import axios from "axios"; +import config from "config"; +import {HrmsEmployee, Paging, User, UserRefreshToken, UserRole} from "entity"; +import exceljs from "exceljs"; +import {NextFunction, Response} from "express"; +import {Request} from "express-jwt"; +import Joi from "joi"; +import {ILogObj, Logger} from "tslog"; +import CommonHelper from "../helpers/common"; +import {ReturnHelper} from "../helpers/express/return"; +import {OrmHelper} from "../helpers/orm"; +import {Language} from "../langs/lang"; -const log: Logger = new Logger({ name: "[UserController]", type: "pretty" }) +const log: Logger = new Logger({ + name: "[UserController]", + type: "pretty", +}); export class UserController { static async list(req: Request, res: Response, next: NextFunction): Promise { @@ -59,21 +62,21 @@ export class UserController { with_deleted: Joi.bool().required().label("With Deleted"), order_field: Joi.string().required().label("Order Field"), order_direction: Joi.string().allow("asc", "desc").required().label("Order Direction"), - }) + }); - const param: Paging = await schema.validateAsync(req.query) + const param: Paging = await schema.validateAsync(req.query); - const userRepository = OrmHelper.DB.getRepository(User) + const userRepository = OrmHelper.DB.getRepository(User); - const offset = (param.page - 1) * param.limit + const offset = (param.page - 1) * param.limit; - const { whereAttr, whereVal } = CommonHelper.handleFilter({ + const {whereAttr, whereVal} = CommonHelper.handleFilter({ filter: param.filter, col_any_eq: ["email"], col_any_like: ["User.name", "User.username"], - }) + }); - const res_count = userRepository.createQueryBuilder().where(whereAttr, whereVal) + const res_count = userRepository.createQueryBuilder().where(whereAttr, whereVal); const subquery = userRepository .createQueryBuilder("User") @@ -81,7 +84,7 @@ export class UserController { .where(whereAttr, whereVal) .orderBy("User." + param.order_field, param.order_direction) .offset(offset) - .limit(param.limit) + .limit(param.limit); const res_list = userRepository .createQueryBuilder("User") @@ -89,7 +92,7 @@ export class UserController { .setParameters(subquery.getParameters()) .leftJoinAndSelect("User.roles", "roles") .leftJoinAndSelect("roles.application", "application") - .orderBy("User." + param.order_field, param.order_direction) + .orderBy("User." + param.order_field, param.order_direction); // const subquery = userRepository // .createQueryBuilder() @@ -115,21 +118,29 @@ export class UserController { // .limit(param.limit); if (param.with_deleted) { - res_count.withDeleted() - res_list.withDeleted() + res_count.withDeleted(); + res_list.withDeleted(); } - const current_page = param.page - const total_count_data = await res_count.getCount() - const list_data = await res_list.getMany() - const count_data = CommonHelper.countObject(list_data) + const current_page = param.page; + const total_count_data = await res_count.getCount(); + const list_data = await res_list.getMany(); + const count_data = CommonHelper.countObject(list_data); - return ReturnHelper.successResponselist(res, 200, Language.lang.success_view, count_data, current_page, total_count_data, list_data) + return ReturnHelper.successResponselist( + res, + 200, + Language.lang.success_view, + count_data, + current_page, + total_count_data, + list_data, + ); } catch (e: unknown) { - log.error(e) - const err = e as Error + log.error(e); + const err = e as Error; - return ReturnHelper.errorResponse(res, 400, 401, Language.lang.failed_view, err.message) + return ReturnHelper.errorResponse(res, 400, 401, Language.lang.failed_view, err.message); } } @@ -164,60 +175,81 @@ export class UserController { filter: Joi.array().allow("").optional().label("Filter"), order_field: Joi.string().required().label("Order Field"), order_direction: Joi.string().allow("asc", "desc").required().label("Order Direction"), - }) + }); - const param: Paging = await schema.validateAsync(req.query) + const param: Paging = await schema.validateAsync(req.query); - const userRepository = OrmHelper.DB.getRepository(User) + const userRepository = OrmHelper.DB.getRepository(User); - const { whereAttr, whereVal } = CommonHelper.handleFilter({ + const {whereAttr, whereVal} = CommonHelper.handleFilter({ filter: param.filter, col_any_eq: ["email"], col_any_like: ["name", "username"], - }) + }); - const filename = "user.xlsx" + const filename = "user.xlsx"; - res.setHeader("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") - res.setHeader("Content-Disposition", "attachment; filename=" + filename) + res.setHeader( + "Content-Type", + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + ); + res.setHeader("Content-Disposition", "attachment; filename=" + filename); - const workbook = new exceljs.stream.xlsx.WorkbookWriter({ stream: res }) - const sheet = workbook.addWorksheet("Data") + const workbook = new exceljs.stream.xlsx.WorkbookWriter({stream: res}); + const sheet = workbook.addWorksheet("Data"); sheet.columns = [ - { header: "ID", key: "id", width: 10 }, - { header: "Name", key: "name", width: 20 }, - { header: "Email", key: "email", width: 20 }, - { header: "Username", key: "username", width: 20 }, - { header: "Status", key: "status", width: 10 }, - { header: "Created At", key: "created_at", width: 15 }, - { header: "Roles", key: "role_name", width: 15 }, - { header: "Application", key: "application", width: 15 }, - ] + {header: "ID", key: "id", width: 10}, + {header: "Name", key: "name", width: 20}, + {header: "Email", key: "email", width: 20}, + {header: "Username", key: "username", width: 20}, + {header: "Status", key: "status", width: 10}, + {header: "Created At", key: "created_at", width: 15}, + {header: "Roles", key: "role_name", width: 15}, + {header: "Application", key: "application", width: 15}, + ]; - const limit = 50 + const limit = 50; const fetchAndWrite = async (page: any) => { - const offset = (page - 1) * limit + const offset = (page - 1) * limit; - const data = await userRepository.createQueryBuilder().where(whereAttr, whereVal).select(["User.id as id", "User.name as name", "User.email as email", "User.username as username", "User.status as status", "User.created_at as created_at", "roles.name as role_name", "application.id as application"]).leftJoin("User.roles", "roles").leftJoin("roles.application", "application").orderBy(param.order_field, param.order_direction).offset(offset).limit(limit).getRawMany() + const data = await userRepository + .createQueryBuilder() + .where(whereAttr, whereVal) + .select([ + "User.id as id", + "User.name as name", + "User.email as email", + "User.username as username", + "User.status as status", + "User.created_at as created_at", + "roles.name as role_name", + "application.id as application", + ]) + .leftJoin("User.roles", "roles") + .leftJoin("roles.application", "application") + .orderBy(param.order_field, param.order_direction) + .offset(offset) + .limit(limit) + .getRawMany(); - data.forEach((item: any) => sheet.addRow(item).commit()) + data.forEach((item: any) => sheet.addRow(item).commit()); if (CommonHelper.countObject(data) == limit) { - fetchAndWrite(page + 1) + fetchAndWrite(page + 1); } else { - sheet.commit() - workbook.commit() + sheet.commit(); + workbook.commit(); } - } + }; - fetchAndWrite(1) + fetchAndWrite(1); } catch (e: unknown) { - log.error(e) - const err = e as Error + log.error(e); + const err = e as Error; - return ReturnHelper.errorResponse(res, 400, 401, Language.lang.failed_view, err.message) + return ReturnHelper.errorResponse(res, 400, 401, Language.lang.failed_view, err.message); } } @@ -244,41 +276,48 @@ export class UserController { const schema = Joi.object().keys({ email: Joi.string().email().max(64).required().label("Email"), username: Joi.string().max(64).required().label("Username"), - password: Joi.string().pattern(new RegExp("^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$")).min(8).required().label("Password"), + password: Joi.string() + .pattern(new RegExp("^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$")) + .min(8) + .required() + .label("Password"), retype_password: Joi.ref("password"), name: Joi.string().max(64).required().label("Name"), employee_id: Joi.string().uuid().optional().allow("").label("Employee ID"), status: Joi.string().required().label("Status"), - }) + }); - const param: any = await schema.validateAsync(req.body) + const param: any = await schema.validateAsync(req.body); - const data = new User() - data.name = param.name - data.username = param.username - data.password = param.password - data.email = param.email - data.status = param.status + const data = new User(); + data.name = param.name; + data.username = param.username; + data.password = param.password; + data.email = param.email; + data.status = param.status; + data.created_by = req.auth.data.name; if (param.employee_id && param.employee_id != "") { - const employee = await OrmHelper.DB.manager.getRepository(HrmsEmployee).findOneByOrFail({ id: param.employee_id }) - data.employee = employee + const employee = await OrmHelper.DB.manager + .getRepository(HrmsEmployee) + .findOneByOrFail({id: param.employee_id}); + data.employee = employee; } else { - data.employee = null + data.employee = null; } - data.hashPassword() - data.created_by = req.auth.data.name - data.created_at = new Date() + data.hashPassword(); + data.created_by = req.auth.data.name; + data.created_at = new Date(); - await OrmHelper.DB.manager.save(data) + await OrmHelper.DB.manager.save(data); - return ReturnHelper.successResponseAny(res, 200, Language.lang.success_insert, data) + return ReturnHelper.successResponseAny(res, 200, Language.lang.success_insert, data); } catch (e: unknown) { - log.error(e) - const err = e as Error + log.error(e); + const err = e as Error; - return ReturnHelper.errorResponse(res, 500, 401, Language.lang.failed_insert, err.message) + return ReturnHelper.errorResponse(res, 500, 401, Language.lang.failed_insert, err.message); } } @@ -308,17 +347,17 @@ export class UserController { const schema = Joi.object().keys({ id: Joi.string().uuid().required().label("ID"), id_role: Joi.string().uuid().required().label("ID"), - }) + }); - const param: { id: string; id_role: string } = await schema.validateAsync(req.params) + const param: {id: string; id_role: string} = await schema.validateAsync(req.params); - const userRepository = OrmHelper.DB.getRepository(User) - const repo_role = OrmHelper.DB.getRepository(UserRole) + const userRepository = OrmHelper.DB.getRepository(User); + const repo_role = OrmHelper.DB.getRepository(UserRole); const data = await userRepository.findOne({ relations: ["roles", "roles.application"], - where: { id: param.id }, - }) + where: {id: param.id}, + }); if (data != null) { // const new_role = await repo_role.findOneBy({ id: param.id_role }); @@ -326,39 +365,51 @@ export class UserController { relations: { application: true, }, - where: { id: param.id_role }, - }) + where: {id: param.id_role}, + }); if (data.roles) { for (let r of data.roles) { if (r.id == param.id_role) { //already added - return ReturnHelper.errorResponse(res, 409, 401, Language.lang.failed_insert + ", roles already exists ", "") + return ReturnHelper.errorResponse( + res, + 409, + 401, + Language.lang.failed_insert + ", roles already exists ", + "", + ); } if (r.application.id == new_role.application.id) { - return ReturnHelper.errorResponse(res, 409, 402, Language.lang.failed_insert + ", roles in this application already exists ", "") + return ReturnHelper.errorResponse( + res, + 409, + 402, + Language.lang.failed_insert + ", roles in this application already exists ", + "", + ); } } } if (!data.roles) { - data.roles = [] + data.roles = []; } - data.roles.push(new_role) + data.roles.push(new_role); - await userRepository.save(data) + await userRepository.save(data); - return ReturnHelper.successResponseAny(res, 200, Language.lang.success_update, data) + return ReturnHelper.successResponseAny(res, 200, Language.lang.success_update, data); } else { - return ReturnHelper.errorResponse(res, 404, 403, Language.lang.failed_not_found, "") + return ReturnHelper.errorResponse(res, 404, 403, Language.lang.failed_not_found, ""); } } catch (e: unknown) { - log.error(e) - const err = e as Error + log.error(e); + const err = e as Error; - return ReturnHelper.errorResponse(res, 500, 404, Language.lang.failed_update, err.message) + return ReturnHelper.errorResponse(res, 500, 404, Language.lang.failed_update, err.message); } } @@ -388,48 +439,54 @@ export class UserController { const schema = Joi.object().keys({ id: Joi.string().uuid().required().label("ID"), id_role: Joi.string().uuid().required().label("ID"), - }) + }); - const param: { id: string; id_role: string } = await schema.validateAsync(req.params) + const param: {id: string; id_role: string} = await schema.validateAsync(req.params); - const userRepository = OrmHelper.DB.getRepository(User) + const userRepository = OrmHelper.DB.getRepository(User); const data = await userRepository.findOne({ relations: { roles: true, }, - where: { id: param.id }, - }) + where: {id: param.id}, + }); if (data != null && data.roles) { - let found = false - let new_roles: UserRole[] = [] + let found = false; + let new_roles: UserRole[] = []; for (let r of data.roles) { if (r.id != param.id_role) { - new_roles.push(r) + new_roles.push(r); } else if (r.id == param.id_role) { - found = true + found = true; } } - data.roles = new_roles + data.roles = new_roles; if (found) { - await userRepository.save(data) + await userRepository.save(data); - return ReturnHelper.successResponseAny(res, 200, Language.lang.success_delete, data) + return ReturnHelper.successResponseAny(res, 200, Language.lang.success_delete, data); } else { - return ReturnHelper.errorResponse(res, 404, 401, Language.lang.failed_not_found + ", role not found", "") + return ReturnHelper.errorResponse( + res, + 404, + 401, + Language.lang.failed_not_found + ", role not found", + "", + ); } } else { - return ReturnHelper.errorResponse(res, 404, 402, Language.lang.failed_not_found, "") + return ReturnHelper.errorResponse(res, 404, 402, Language.lang.failed_not_found, ""); } } catch (e: unknown) { - log.error(e) - const err = e as Error + log.error(e); + const err = e as Error; - return ReturnHelper.errorResponse(res, 500, 403, Language.lang.failed_delete, err.message) + return ReturnHelper.errorResponse(res, 500, 403, Language.lang.failed_delete, err.message); } } @@ -459,32 +516,33 @@ export class UserController { email: Joi.string().email().max(64).required().label("Email"), username: Joi.string().max(64).required().label("Username"), name: Joi.string().max(64).required().label("Name"), - }) + }); - req.body.id = req.auth.data.id + req.body.id = req.auth.data.id; - const param: User = await schema.validateAsync(req.body) + const param: User = await schema.validateAsync(req.body); - const userRepository = OrmHelper.DB.getRepository(User) + const userRepository = OrmHelper.DB.getRepository(User); - const data = await userRepository.findOneBy({ id: param.id }) + const data = await userRepository.findOneBy({id: param.id}); if (data != null) { - data.name = param.name - data.username = param.username - data.email = param.email + data.name = param.name; + data.username = param.username; + data.email = param.email; + data.updated_by = req.auth.data.name; - await userRepository.save(data) + await userRepository.save(data); - return ReturnHelper.successResponseAny(res, 200, Language.lang.success_update, data) + return ReturnHelper.successResponseAny(res, 200, Language.lang.success_update, data); } else { - return ReturnHelper.errorResponse(res, 404, 401, Language.lang.failed_not_found, "") + return ReturnHelper.errorResponse(res, 404, 401, Language.lang.failed_not_found, ""); } } catch (e: unknown) { - log.error(e) - const err = e as Error + log.error(e); + const err = e as Error; - return ReturnHelper.errorResponse(res, 500, 402, Language.lang.failed_update, err.message) + return ReturnHelper.errorResponse(res, 500, 402, Language.lang.failed_update, err.message); } } @@ -511,35 +569,39 @@ export class UserController { try { const schema = Joi.object().keys({ id: Joi.string().uuid().required().label("ID"), - password: Joi.string().pattern(new RegExp("^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$")).min(8).required().label("Password"), + password: Joi.string() + .pattern(new RegExp("^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$")) + .min(8) + .required() + .label("Password"), retype_password: Joi.ref("password"), - }) + }); - req.body.id = req.auth.data.id + req.body.id = req.auth.data.id; - const param: User = await schema.validateAsync(req.body) + const param: User = await schema.validateAsync(req.body); - const userRepository = OrmHelper.DB.getRepository(User) + const userRepository = OrmHelper.DB.getRepository(User); - const data = await userRepository.findOneBy({ id: param.id }) + const data = await userRepository.findOneBy({id: param.id}); if (data != null) { if (param.password) { - data.password = param.password - data.hashPassword() + data.password = param.password; + data.hashPassword(); } - await userRepository.save(data) + await userRepository.save(data); - return ReturnHelper.successResponseAny(res, 200, Language.lang.success_update, data) + return ReturnHelper.successResponseAny(res, 200, Language.lang.success_update, data); } else { - return ReturnHelper.errorResponse(res, 404, 401, Language.lang.failed_not_found, "") + return ReturnHelper.errorResponse(res, 404, 401, Language.lang.failed_not_found, ""); } } catch (e: unknown) { - log.error(e) - const err = e as Error + log.error(e); + const err = e as Error; - return ReturnHelper.errorResponse(res, 500, 402, Language.lang.failed_update, err.message) + return ReturnHelper.errorResponse(res, 500, 402, Language.lang.failed_update, err.message); } } @@ -578,47 +640,49 @@ export class UserController { name: Joi.string().max(64).required().label("Name"), employee_id: Joi.string().uuid().optional().allow("").label("Employee ID"), status: Joi.string().required().label("Status"), - }) + }); - req.body.id = req.params["id"] + req.body.id = req.params["id"]; - const param: any = await schema.validateAsync(req.body) + const param: any = await schema.validateAsync(req.body); - const userRepository = OrmHelper.DB.getRepository(User) + const userRepository = OrmHelper.DB.getRepository(User); - const data = await userRepository.findOneBy({ id: param.id }) + const data = await userRepository.findOneBy({id: param.id}); if (data != null) { - data.name = param.name - data.username = param.username - data.email = param.email - data.status = param.status - data.updated_by = req.auth.data.name - data.updated_at = new Date() + data.name = param.name; + data.username = param.username; + data.email = param.email; + data.status = param.status; + data.updated_by = req.auth.data.name; + data.updated_at = new Date(); if (param.employee_id && param.employee_id != "") { - const employee = await OrmHelper.DB.manager.getRepository(HrmsEmployee).findOneByOrFail({ id: param.employee_id }) - data.employee = employee + const employee = await OrmHelper.DB.manager + .getRepository(HrmsEmployee) + .findOneByOrFail({id: param.employee_id}); + data.employee = employee; } else { - data.employee = null + data.employee = null; } if (param.password) { - data.password = param.password - data.hashPassword() + data.password = param.password; + data.hashPassword(); } - await userRepository.save(data) + await userRepository.save(data); - return ReturnHelper.successResponseAny(res, 200, Language.lang.success_update, data) + return ReturnHelper.successResponseAny(res, 200, Language.lang.success_update, data); } else { - return ReturnHelper.errorResponse(res, 404, 401, Language.lang.failed_not_found, "") + return ReturnHelper.errorResponse(res, 404, 401, Language.lang.failed_not_found, ""); } } catch (e: unknown) { - log.error(e) - const err = e as Error + log.error(e); + const err = e as Error; - return ReturnHelper.errorResponse(res, 500, 402, Language.lang.failed_update, err.message) + return ReturnHelper.errorResponse(res, 500, 402, Language.lang.failed_update, err.message); } } @@ -645,26 +709,34 @@ export class UserController { const schema = Joi.object().keys({ id: Joi.string().uuid().required().label("ID"), hard: Joi.bool().optional().allow("").label("Is hard delete?"), - }) + }); - const param: { id: string; hard: boolean } = await schema.validateAsync(req.params) + const param: {id: string; hard: boolean} = await schema.validateAsync(req.params); - const userRepository = OrmHelper.DB.getRepository(User) - const userRTRepository = OrmHelper.DB.getRepository(UserRefreshToken) + const userRepository = OrmHelper.DB.getRepository(User); + const userRTRepository = OrmHelper.DB.getRepository(UserRefreshToken); - const affected = (!param.hard ? await userRepository.softDelete({ id: param.id }) : await userRepository.delete({ id: param.id })).affected - const affected_rt = (!param.hard ? await userRTRepository.softDelete({ id_user: param.id }) : await userRTRepository.delete({ id_user: param.id })).affected + const affected = ( + !param.hard + ? await userRepository.softDelete({id: param.id}) + : await userRepository.delete({id: param.id}) + ).affected; + const affected_rt = ( + !param.hard + ? await userRTRepository.softDelete({id_user: param.id}) + : await userRTRepository.delete({id_user: param.id}) + ).affected; if (affected > 0) { - return ReturnHelper.successResponseAny(res, 200, Language.lang.success_delete, {}) + return ReturnHelper.successResponseAny(res, 200, Language.lang.success_delete, {}); } else { - return ReturnHelper.errorResponse(res, 404, 401, Language.lang.failed_not_found, "") + return ReturnHelper.errorResponse(res, 404, 401, Language.lang.failed_not_found, ""); } } catch (e: unknown) { - log.error(e) - const err = e as Error + log.error(e); + const err = e as Error; - return ReturnHelper.errorResponse(res, 500, 402, Language.lang.failed_delete, err.message) + return ReturnHelper.errorResponse(res, 500, 402, Language.lang.failed_delete, err.message); } } @@ -684,45 +756,44 @@ export class UserController { try { const schema = Joi.object().keys({ id: Joi.string().uuid().required().label("ID"), - }) + }); - const param: User = await schema.validateAsync(req.params) + const param: User = await schema.validateAsync(req.params); - const userRepository = OrmHelper.DB.getRepository(User) + const userRepository = OrmHelper.DB.getRepository(User); const detail = await userRepository.findOne({ - relations: ["roles", "roles.application"], - where: { id: param.id }, - }) - - var hrms = { - uuid: null, - idx: null, - nik: null, - name: null, - title: null, - department_id: null, - departement_uuid: null, - department_name: null, - level_id: null, - level_name: null, - } + relations: [ + "roles", + "roles.application", + "employee", + "employee.department", + "employee.position", + "employee.airport", + "employee.shift", + "employee.nationality", + "employee.aldeia", + "employee.suco", + "employee.administrativu", + "employee.munisipo", + ], + where: {id: param.id}, + }); const data = { ...detail, - hrms, - } + }; if (data != null) { - return ReturnHelper.successResponseAny(res, 200, Language.lang.success_view, data) + return ReturnHelper.successResponseAny(res, 200, Language.lang.success_view, data); } else { - return ReturnHelper.errorResponse(res, 404, 401, Language.lang.failed_not_found, "") + return ReturnHelper.errorResponse(res, 404, 401, Language.lang.failed_not_found, ""); } } catch (e: unknown) { - log.error(e) - const err = e as Error + log.error(e); + const err = e as Error; - return ReturnHelper.errorResponse(res, 500, 402, Language.lang.failed_view, err.message) + return ReturnHelper.errorResponse(res, 500, 402, Language.lang.failed_view, err.message); } } @@ -743,26 +814,29 @@ export class UserController { try { const schema = Joi.object().keys({ id: Joi.string().uuid().required().label("ID"), - }) + }); - const param: User = await schema.validateAsync(req.params) + const param: User = await schema.validateAsync(req.params); - const userRepository = OrmHelper.DB.getRepository(User) - const userRTRepository = OrmHelper.DB.getRepository(UserRefreshToken) + const userRepository = OrmHelper.DB.getRepository(User); + const userRTRepository = OrmHelper.DB.getRepository(UserRefreshToken); - const affected = (await userRepository.restore({ id: param.id })).affected - const affected_rt = (await userRTRepository.restore({ id_user: param.id })).affected + const affected = (await userRepository.restore({id: param.id})).affected; + const affected_rt = (await userRTRepository.restore({id_user: param.id})).affected; if (affected > 0) { - return ReturnHelper.successResponseAny(res, 200, Language.lang.success_restore, {}) + return ReturnHelper.successResponseAny(res, 200, Language.lang.success_restore, {}); } else { - return ReturnHelper.errorResponse(res, 404, 401, Language.lang.failed_not_found, "") + return ReturnHelper.errorResponse(res, 404, 401, Language.lang.failed_not_found, ""); } } catch (e: unknown) { - log.error(e) - const err = e as Error + log.error(e); + const err = e as Error; - return ReturnHelper.errorResponse(res, 500, 402, Language.lang.failed_restore, err.message) + return ReturnHelper.errorResponse(res, 500, 402, Language.lang.failed_restore, err.message); } } } +function moment() { + throw new Error("Function not implemented."); +}