import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' import RoleService from 'App/Services/User/RoleService' import CreateRoleValidator from 'App/Validators/User/CreateRoleValidator' import UpdateRoleValidator from 'App/Validators/User/UpdateRoleValidator' import { ValidationException } from '@ioc:Adonis/Core/Validator' export default class RoleController { service = new RoleService() FETCHED_ATTRIBUTE = [ 'code', 'name', ] public async index ({ request, response }: HttpContextContract) { try { const options = request.parseParams(request.all()) const result = await this.service.getAll(options) return response.api(result, 'OK', 200, request) } catch (error) { return response.error(error.message) } } public async store ({ request, response }: HttpContextContract) { try { await request.validate(CreateRoleValidator) const data = request.only(this.FETCHED_ATTRIBUTE) const result = await this.service.store(data) return response.api(result, 'Role created!', 201) } catch (error) { if (error instanceof ValidationException) { const errorValidation: any = error return response.error(errorValidation.message, errorValidation.messages.errors, 422) } return response.error(error.message) } } public async show ({ params, request, response }: HttpContextContract) { try { const options = request.parseParams(request.all()) const result = await this.service.show(params.id, options) if (!result) { return response.api(null, `Role with id: ${params.id} not found`) } return response.api(result) } catch (error) { return response.error(error.message) } } public async update ({ params, request, response }: HttpContextContract) { try { await request.validate(UpdateRoleValidator) const data = request.only(this.FETCHED_ATTRIBUTE) const result = await this.service.update(params.id, data) if (!result) { return response.api(null, `Role with id: ${params.id} not found`) } return response.api(result, 'Role updated!') } catch (error) { if (error instanceof ValidationException) { const errorValidation: any = error return response.error(errorValidation.message, errorValidation.messages.errors, 422) } return response.error(error.message) } } public async destroy ({ params, response }: HttpContextContract) { try { const result = await this.service.delete(params.id) if (!result) { return response.api(null, `Role with id: ${params.id} not found`) } return response.api(null, 'Role deleted!') } catch (error) { return response.error(error.message) } } public async destroyAll ({ response }: HttpContextContract) { try { await this.service.deleteAll() return response.api(null, 'All Role deleted!') } catch (error) { return response.error(error.message) } } }