Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 2x 2x 2x 2x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x | import {authenticate, AuthenticationBindings} from '@loopback/authentication'; import {UserRepository} from '@loopback/authentication-jwt'; import {inject} from '@loopback/core'; import {repository} from '@loopback/repository'; import {del, get, param, post, requestBody, response, Response, RestBindings} from '@loopback/rest'; import {roles} from '../config'; import {ConsultantDetailsRepository} from '../repositories'; import errorMessages from '../utils/errorMessages'; import {log} from "../utils/logMethod"; import successMessages from '../utils/successMessages'; import {failureHandler, getUID, isAdmin, successHandler, validatePayload} from './components'; import {baseResponse, consultantDetails} from "./requestSpecs"; import {currentUserType} from './types'; import {CreateType} from './types/consultant-details.controller.types'; @authenticate("jwt") export class ConsultantDetailsController { constructor( @repository(ConsultantDetailsRepository) public consultantDetailsRepository: ConsultantDetailsRepository, @inject(RestBindings.Http.RESPONSE) protected res: Response, @inject(AuthenticationBindings.CURRENT_USER) public currentUser: currentUserType, @repository(UserRepository) public userRepository: UserRepository, ) { } @post('/consultant') @log() @response(200, consultantDetails) async create(@requestBody(consultantDetails) consultant: CreateType,): Promise<Response> { let methodName = "create" try { validatePayload(consultant, consultantDetails) Eif (!isAdmin(this.currentUser)) throw {code: 403, message: errorMessages.permissionDenied, methodName} const foundConsultant = await this.userRepository.findOne({where: {UID: consultant.consultantUID}, include: ['role']}) if (!foundConsultant || foundConsultant.role.roleType !== roles.consultant) throw {code: 422, message: errorMessages.dataNotFound, methodName} let ifBadgeExist = await this.consultantDetailsRepository.findOne({where: {consultantUID: consultant.consultantUID, badgeName: consultant.badgeName, }}); if (ifBadgeExist) throw {code: 422, message: errorMessages.dataAlreadyExist, methodName} consultant.UID = getUID() const newBadge = await this.consultantDetailsRepository.create(consultant); return successHandler(this.res, 200, newBadge) } catch (error) { return this.failureHandler(this.res, 403, error) } } @get('/getConsultantBadges/{UID}') @response(200, baseResponse) @log() async getConsultantBadges(@param.path.string('UID') UID: string): Promise<any> { let methodName = "getConsultantBadges" try { Iif (!UID) { throw {code: 400, message: errorMessages.requiredFieldIsMissing, methodName} } const badges = await this.consultantDetailsRepository.find({where: {consultantUID: UID}}) return successHandler(this.res, 200, badges) } catch (error) { return this.failureHandler(this.res, 422, error) } } // @del('/consultant/{UID}') // @log() // async deleteById(@param.path.string('UID') UID: string): Promise<Response> { // try { // await this.consultantDetailsRepository.deleteAll({UID}); // return successHandler(this.res, 200, successMessages.deletedSuccessfully) // } catch (error) { // return this.failureHandler(this.res, 403, error) // } // } private failureHandler(res: Response, code: number, error: any): Promise<Response> { return failureHandler(res, code, error, ConsultantDetailsController.name) } } |