fix(employees): added optional employee_email to findDetailedProfile
This commit is contained in:
parent
6b0763f277
commit
0f509a920f
|
|
@ -1,4 +1,4 @@
|
||||||
type Modules =
|
export type Modules =
|
||||||
| 'timesheets'
|
| 'timesheets'
|
||||||
| 'timesheets_approval'
|
| 'timesheets_approval'
|
||||||
| 'employee_list'
|
| 'employee_list'
|
||||||
|
|
@ -35,9 +35,9 @@ export const toBooleanFromString = (arr?: readonly string[] | null): Record<Modu
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const toStringFromBoolean = (map: Record<Modules, boolean>): Record<Modules, string | null> => {
|
export const toStringFromBoolean = (map: Record<Modules, boolean>): Record<Modules, Modules | null> => {
|
||||||
return module_list.reduce((acc, mod) => {
|
return module_list.reduce((acc, mod) => {
|
||||||
acc[mod] = map[mod] ? mod : null;
|
acc[mod] = map[mod] ? mod : null;
|
||||||
return acc;
|
return acc;
|
||||||
}, {} as Record<Modules, string | null>);
|
}, {} as Record<Modules, Modules | null>);
|
||||||
}
|
}
|
||||||
|
|
@ -16,16 +16,14 @@ export class EmployeesController {
|
||||||
) { }
|
) { }
|
||||||
|
|
||||||
@Get('profile')
|
@Get('profile')
|
||||||
async findProfile(
|
async findProfile(@Access('email') email: string, @Query('employee_email') employee_email?: string,
|
||||||
@Access('email')email: string,
|
|
||||||
@Query('employee_email') employee_email?: string,
|
|
||||||
): Promise<Result<Partial<EmployeeDetailedDto>, string>> {
|
): Promise<Result<Partial<EmployeeDetailedDto>, string>> {
|
||||||
const granted_access = await this.accessGetService.findModuleAccess(email);
|
const granted_access = await this.accessGetService.findModuleAccess(email);
|
||||||
if (!granted_access.success) return { success: false, error: 'INVALID_USER' };
|
if (!granted_access.success) return { success: false, error: 'INVALID_USER' };
|
||||||
if (!granted_access.data.employee_management) {
|
if (!granted_access.data.employee_management) {
|
||||||
return await this.employeesService.findOwnProfile(email);
|
return await this.employeesService.findOwnProfile(email);
|
||||||
} else if (granted_access.data.employee_management) {
|
} else if (granted_access.data.employee_management) {
|
||||||
return await this.employeesService.findOneDetailedProfile(employee_email ?? email);
|
return await this.employeesService.findOneDetailedProfile(email,employee_email);
|
||||||
} else {
|
} else {
|
||||||
return { success: false, error: 'INVALID_USER' }
|
return { success: false, error: 'INVALID_USER' }
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import { Injectable } from "@nestjs/common";
|
||||||
import { Users } from "@prisma/client";
|
import { Users } from "@prisma/client";
|
||||||
import { Result } from "src/common/errors/result-error.factory";
|
import { Result } from "src/common/errors/result-error.factory";
|
||||||
import { EmailToIdResolver } from "src/common/mappers/email-id.mapper";
|
import { EmailToIdResolver } from "src/common/mappers/email-id.mapper";
|
||||||
import { module_list, toBooleanFromString, toStringFromBoolean } from "src/common/mappers/module-access.mapper";
|
import { module_list, Modules, toBooleanFromString, toStringFromBoolean } from "src/common/mappers/module-access.mapper";
|
||||||
import { toStringFromDate } from "src/common/utils/date-utils";
|
import { toStringFromDate } from "src/common/utils/date-utils";
|
||||||
import { EmployeeDetailedDto } from "src/identity-and-account/employees/dtos/employee-detailed.dto";
|
import { EmployeeDetailedDto } from "src/identity-and-account/employees/dtos/employee-detailed.dto";
|
||||||
import { EmployeeDto } from "src/identity-and-account/employees/dtos/employee.dto";
|
import { EmployeeDto } from "src/identity-and-account/employees/dtos/employee.dto";
|
||||||
|
|
@ -109,8 +109,9 @@ export class EmployeesService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async findOneDetailedProfile(email: string): Promise<Result<EmployeeDetailedDto, string>> {
|
async findOneDetailedProfile(email: string, employee_email?: string): Promise<Result<EmployeeDetailedDto, string>> {
|
||||||
const user_id = await this.emailResolver.resolveUserIdWithEmail(email);
|
const account_email = employee_email ?? email;
|
||||||
|
const user_id = await this.emailResolver.resolveUserIdWithEmail(account_email);
|
||||||
if (!user_id.success) return { success: false, error: 'INVALID_USER' };
|
if (!user_id.success) return { success: false, error: 'INVALID_USER' };
|
||||||
|
|
||||||
const employee = await this.prisma.employees.findUnique({
|
const employee = await this.prisma.employees.findUnique({
|
||||||
|
|
@ -155,17 +156,19 @@ export class EmployeesService {
|
||||||
});
|
});
|
||||||
if (!employee) return { success: false, error: `EMPLOYEE_NOT_FOUND` };
|
if (!employee) return { success: false, error: `EMPLOYEE_NOT_FOUND` };
|
||||||
if (!employee.user) return { success: false, error: 'USER_NOT_FOUND' };
|
if (!employee.user) return { success: false, error: 'USER_NOT_FOUND' };
|
||||||
if (!employee.user.user_module_access) return { success: false, error: 'UNAUTHORIZED_ACCESS' };
|
|
||||||
|
let module_access_array: Modules[] = [];
|
||||||
|
if (employee.user.user_module_access) {
|
||||||
|
const stringfy_module_access = toStringFromBoolean(employee.user.user_module_access);
|
||||||
|
module_access_array = module_list
|
||||||
|
.map(mod => stringfy_module_access[mod])
|
||||||
|
.filter((value): value is Modules => value !== null && value !== undefined);
|
||||||
|
}
|
||||||
|
|
||||||
let company_name = 'Solucom';
|
let company_name = 'Solucom';
|
||||||
if (employee.company_code === 271583) {
|
if (employee.company_code === 271583) {
|
||||||
company_name = 'Targo';
|
company_name = 'Targo';
|
||||||
}
|
}
|
||||||
const stringfy_module_access = toStringFromBoolean(employee.user.user_module_access);
|
|
||||||
const user_module_access_array = module_list
|
|
||||||
.map(mod => stringfy_module_access[mod])
|
|
||||||
.filter((value): value is string => value !== null && value !== undefined && value !== '');
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
success: true,
|
success: true,
|
||||||
data: {
|
data: {
|
||||||
|
|
@ -182,7 +185,7 @@ export class EmployeesService {
|
||||||
first_work_day: toStringFromDate(employee.first_work_day),
|
first_work_day: toStringFromDate(employee.first_work_day),
|
||||||
last_work_day: employee.last_work_day ? toStringFromDate(employee.last_work_day) : undefined,
|
last_work_day: employee.last_work_day ? toStringFromDate(employee.last_work_day) : undefined,
|
||||||
supervisor_full_name: employee.supervisor ? `${employee.supervisor?.user.first_name}, ${employee.supervisor?.user.last_name}` : '',
|
supervisor_full_name: employee.supervisor ? `${employee.supervisor?.user.first_name}, ${employee.supervisor?.user.last_name}` : '',
|
||||||
user_module_access: user_module_access_array
|
user_module_access: module_access_array
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
@ -227,4 +230,8 @@ export class EmployeesService {
|
||||||
});
|
});
|
||||||
return { success: true, data: true }
|
return { success: true, data: true }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// async updateEmployeeProfile = () => {
|
||||||
|
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user