backend-roadreport-main/app/Controllers/Http/User/RoleController.ts
2024-12-31 10:16:45 +07:00

91 lines
3.0 KiB
TypeScript

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)
}
}
}