Included user-information in employee Model.
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
|
||||
import Employee from 'App/Models/Employee'
|
||||
import User from 'App/Models/User'
|
||||
import UpdateEmployeeValidator from 'App/Validators/UpdateEmployeeValidator'
|
||||
import CreateEmployeeValidator from 'App/Validators/CreateEmployeeValidator'
|
||||
|
||||
@@ -8,22 +7,18 @@ import Database from '@ioc:Adonis/Lucid/Database'
|
||||
import Logger from '@ioc:Adonis/Core/Logger'
|
||||
|
||||
type ResultShow = {
|
||||
employee: {
|
||||
id: number,
|
||||
firstName: string,
|
||||
lastName: string,
|
||||
shorthand: string,
|
||||
phone: string,
|
||||
mobile: string,
|
||||
email: string,
|
||||
contractHours: number,
|
||||
hasUser: Boolean,
|
||||
},
|
||||
user: {
|
||||
id?: number,
|
||||
username?: string
|
||||
}
|
||||
}
|
||||
id: number,
|
||||
firstName: string,
|
||||
lastName: string | undefined,
|
||||
shorthand: string,
|
||||
phone: string | undefined,
|
||||
mobile: string | undefined,
|
||||
email: string | undefined,
|
||||
contractHours: number | undefined,
|
||||
username: string | undefined,
|
||||
role: string,
|
||||
isActive: boolean
|
||||
}
|
||||
|
||||
export default class EmployeesController {
|
||||
public async index ({bouncer, request}: HttpContextContract) {
|
||||
@@ -51,75 +46,56 @@ export default class EmployeesController {
|
||||
|
||||
public async store ({request}: HttpContextContract) {
|
||||
try {
|
||||
const payload = await request.validate(CreateEmployeeValidator)
|
||||
|
||||
return await Employee.create({
|
||||
firstName: payload.firstName,
|
||||
lastName: payload.lastName,
|
||||
shorthand: payload.shorthand,
|
||||
email: payload.email,
|
||||
phone: payload.phone,
|
||||
mobile: payload.mobile,
|
||||
contractHours: payload.contractHours,
|
||||
})
|
||||
const payload = await request.validate(CreateEmployeeValidator)
|
||||
|
||||
return await Employee.create({
|
||||
firstName: payload.firstName,
|
||||
lastName: payload.lastName,
|
||||
shorthand: payload.shorthand,
|
||||
email: payload.email,
|
||||
phone: payload.phone,
|
||||
mobile: payload.mobile,
|
||||
contractHours: payload.contractHours,
|
||||
username: payload.username,
|
||||
password: payload.password,
|
||||
role: payload.role,
|
||||
isActive: payload.isActive
|
||||
})
|
||||
} catch (error) {
|
||||
return error
|
||||
return error
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public async show ({params, bouncer, auth}: HttpContextContract) {
|
||||
let result : ResultShow = {
|
||||
employee: {
|
||||
id: NaN,
|
||||
firstName: '',
|
||||
lastName: '',
|
||||
shorthand: '',
|
||||
phone: '',
|
||||
mobile: '',
|
||||
email: '',
|
||||
contractHours: NaN,
|
||||
hasUser: false
|
||||
},
|
||||
user: {}
|
||||
}
|
||||
let emp
|
||||
let user
|
||||
public async show ({params, bouncer, auth}: HttpContextContract) : Promise<ResultShow> {
|
||||
let emp: Employee
|
||||
|
||||
if(params.id === 'me' && auth.isLoggedIn && auth.user !== undefined){
|
||||
user = auth.user
|
||||
emp = (await auth.user.related('employeeProfile').query().limit(1))[0]
|
||||
emp = auth.user
|
||||
}
|
||||
else {
|
||||
emp = await Employee.findOrFail(params.id)
|
||||
user = (await User.find(emp.userId)) ?? undefined
|
||||
}
|
||||
|
||||
if(emp !== undefined){
|
||||
result.employee.id = emp.id
|
||||
result.employee.firstName = emp.firstName
|
||||
result.employee.lastName = emp.lastName
|
||||
result.employee.shorthand = emp.shorthand
|
||||
result.employee.phone = emp.phone
|
||||
result.employee.mobile = emp.mobile
|
||||
result.employee.email = emp.email
|
||||
result.employee.contractHours = emp.contractHours
|
||||
}
|
||||
if(user !== undefined){
|
||||
result.employee.hasUser = true
|
||||
result.user.username = user.username
|
||||
result.user.id = user.id
|
||||
}
|
||||
|
||||
await bouncer.authorize('employees.show', emp)
|
||||
|
||||
return result
|
||||
return {
|
||||
id: emp.id,
|
||||
firstName: emp.firstName,
|
||||
lastName: emp.lastName,
|
||||
shorthand: emp.shorthand,
|
||||
phone: emp.phone,
|
||||
mobile: emp.mobile,
|
||||
email: emp.email,
|
||||
contractHours: emp.contractHours,
|
||||
role: emp.role,
|
||||
username: emp.username,
|
||||
isActive: emp.isActive
|
||||
}
|
||||
}
|
||||
|
||||
public async update ({params, bouncer, response, request}: HttpContextContract) {
|
||||
|
||||
|
||||
const employee : Employee = await Employee.findOrFail(params.id)
|
||||
const editContractHours : boolean = employee.contractHours !== request.input('contractHours')
|
||||
|
||||
@@ -128,7 +104,7 @@ export default class EmployeesController {
|
||||
const payload = await request.validate(UpdateEmployeeValidator)
|
||||
|
||||
if (editContractHours){
|
||||
employee.contractHours = payload.contractHours ?? 0
|
||||
employee.contractHours = payload.contractHours ?? 0
|
||||
}
|
||||
|
||||
employee.firstName = payload.firstName
|
||||
@@ -137,6 +113,12 @@ export default class EmployeesController {
|
||||
employee.email = payload.email ?? ''
|
||||
employee.phone = payload.phone ?? ''
|
||||
employee.mobile = payload.mobile ?? ''
|
||||
employee.isActive = payload.isActive ?? false
|
||||
|
||||
if (payload.username !== undefined && payload.password !== undefined ) {
|
||||
employee.username = payload.username
|
||||
employee.password = payload.password
|
||||
}
|
||||
|
||||
await employee.save()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user