|
|
@@ -1,9 +1,4 @@
|
|
|
<?php
|
|
|
-/*
|
|
|
-Nombre del programador: Cordourier Rojas Mathew
|
|
|
-Ultima fecha de modificación: [ 24 / Abril / 2023 ]
|
|
|
-Descripción: Controlador del submodulo Personal. Perteneciente al Módulo 13 - Gestion del Personal de Mantenimiento
|
|
|
-*/
|
|
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
|
|
@@ -13,1632 +8,1271 @@ use Illuminate\Support\Facades\DB;
|
|
|
use Illuminate\Support\Facades\Storage;
|
|
|
use Illuminate\Support\Facades\Validator;
|
|
|
use PhpOffice\PhpSpreadsheet\IOFactory;
|
|
|
+use Illuminate\Database\Query\Builder;
|
|
|
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
|
|
use stdClass;
|
|
|
use Throwable;
|
|
|
|
|
|
-class EmployeeController extends Controller
|
|
|
-{
|
|
|
-
|
|
|
- private $response_controller;
|
|
|
- private $encrypt_controller;
|
|
|
- private $documents_controller;
|
|
|
-
|
|
|
- public function __construct()
|
|
|
- {
|
|
|
- $this->response_controller = new ResponseController();
|
|
|
- $this->encrypt_controller = new EncryptionController();
|
|
|
- $this->documents_controller = new DocumentsController();
|
|
|
-
|
|
|
+class EmployeeController extends Controller{
|
|
|
+ private $responseController;
|
|
|
+ private $encryptionController;
|
|
|
+ private $documentManagementController;
|
|
|
+ private $functionsController;
|
|
|
+
|
|
|
+ public function __construct(){
|
|
|
+ $this->responseController = new ResponseController();
|
|
|
+ $this->encryptionController = new EncryptionController();
|
|
|
+ $this->documentManagementController = new DocumentManagementController();
|
|
|
+ $this->functionsController = new FunctionsController();
|
|
|
}
|
|
|
|
|
|
- // Metodo para obtener datos del personal
|
|
|
- public function getConsultOfEmployees($line_number)
|
|
|
- {
|
|
|
- try {
|
|
|
- $employees = DB::table('S002V01TPERS')
|
|
|
- ->select(
|
|
|
- 'S002V01TPERS.PERS_IDPE as ID_EMPLOYEE',
|
|
|
- DB::raw('TRIM(CONCAT(S002V01TUSUA.USUA_NOMB, " " , S002V01TUSUA.USUA_APPA, " ", COALESCE(S002V01TUSUA.USUA_APMA,""))) as NAME'),
|
|
|
- 'S002V01TPERS.PERS_TICO as CONTRACT_TYPE',
|
|
|
- 'S002V01TPERS.PERS_ESPE as SPECIALITY',
|
|
|
- 'S002V01TPERS.PERS_FERE as REGISTER_DATE',
|
|
|
- 'S002V01TPERS.PERS_USRE as REGISTERED_BY_USER',
|
|
|
- 'S002V01TPERS.PERS_FEMO as UPDATE_DATE',
|
|
|
- 'S002V01TPERS.PERS_USMO as UPDATED_BY_USER',
|
|
|
- 'S002V01TPERS.PERS_ESTA as STATUS'
|
|
|
- )
|
|
|
- // ->where('S002V01TPERS.PERS_ESTA', '=', 'Activo')
|
|
|
- ->where('S002V01TPERS.PERS_NULI', '=', $line_number)
|
|
|
- ->where('S002V01TUSUA.USUA_NULI', '=', $line_number)
|
|
|
- ->join('S002V01TUSUA', 'S002V01TPERS.PERS_IDUS', '=', 'S002V01TUSUA.USUA_IDUS')
|
|
|
- ->get();
|
|
|
-
|
|
|
- $users = DB::table('S002V01TUSUA')
|
|
|
- ->select('USUA_IDUS as ID', DB::raw('TRIM(CONCAT(USUA_NOMB, " " , USUA_APPA, " ", COALESCE(USUA_APMA,""))) as NAME'))
|
|
|
- ->where('USUA_NULI', '=', $line_number)
|
|
|
- ->get();
|
|
|
-
|
|
|
- $workteams = DB::table('S002V01TEQMA')
|
|
|
- ->select('S002V01TEQMA.EQMA_NOMB as NAME', 'S002V01TPEEM.PEEM_IDPE as ID_EMPLOYEE')
|
|
|
- ->where('S002V01TEQMA.EQMA_NULI', '=', $line_number)
|
|
|
- ->where('S002V01TPEEM.PEEM_NULI', '=', $line_number)
|
|
|
- ->join('S002V01TPEEM', 'S002V01TEQMA.EQMA_IDEQ', '=', 'S002V01TPEEM.PEEM_IDEM')
|
|
|
- ->get();
|
|
|
-
|
|
|
- foreach ($employees as $employee) {
|
|
|
-
|
|
|
- // Introduce los equipos de trabajo a los que pertenece
|
|
|
- foreach ($workteams as $workteam) {
|
|
|
- if ($employee->ID_EMPLOYEE == $workteam->ID_EMPLOYEE) {
|
|
|
- $employee->WORKTEAMS = $workteam->NAME;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // Introduce la persona que lo registro
|
|
|
- foreach ($users as $user) {
|
|
|
- if ($employee->REGISTERED_BY_USER == $user->ID) {
|
|
|
- $employee->REGISTERED_BY_USER = $user->NAME;
|
|
|
- }
|
|
|
-
|
|
|
- // Si hubo actualización, introduce a la persona que lo actualizo
|
|
|
- if ($employee->UPDATED_BY_USER != null) {
|
|
|
- if ($employee->UPDATED_BY_USER == $user->ID) {
|
|
|
- $employee->UPDATED_BY_USER = $user->NAME;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // Introduce la fecha en que se registro y actualizo al empleado (si hubo actualización)
|
|
|
- $employee->REGISTER_DATE = Carbon::create($employee->REGISTER_DATE)->format("d-m-Y h:i:s A");
|
|
|
- if ($employee->UPDATE_DATE != null) {
|
|
|
- $employee->UPDATE_DATE = Carbon::create($employee->UPDATE_DATE)->format("d-m-Y h:i:s A");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(FALSE, "Consulta exitosa", $employees);
|
|
|
+ public function getConsultOfEmployees($idUser, $line) {
|
|
|
+ DB::enableQueryLog();
|
|
|
|
|
|
-
|
|
|
- } catch (Throwable $th) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_PERSONAL_REG001: Error inesperado', strtoupper($th->getMessage()), 500);
|
|
|
+ $idUser = $this->encryptionController->decrypt($idUser);
|
|
|
+ if(!$idUser){
|
|
|
+ return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la solicitud no está encriptado correctamente', [], 400);
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- // Metodo para ver el listado de documentos de un empleado
|
|
|
- public function getDocumentsByEmployee($id_employee, $line_number)
|
|
|
- {
|
|
|
- try {
|
|
|
-
|
|
|
- // Busca si existe el empleado
|
|
|
- $employee_found = DB::table('S002V01TPERS')
|
|
|
- ->select('PERS_IDPE')
|
|
|
- ->where('PERS_IDPE', '=', $id_employee)
|
|
|
- ->where('PERS_NULI', '=', $line_number)
|
|
|
- ->first();
|
|
|
-
|
|
|
- // Verifica si el objeto esta vacio
|
|
|
- if (!isset($employee_found) && empty($employee_found)) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_PERSONAL_REG001: No se encontró al empleado', [], 500);
|
|
|
- }
|
|
|
-
|
|
|
- // Busca si el empleado tiene documentos
|
|
|
- $documents_by_employee = DB::table('S002V01TDOCU_P')
|
|
|
- ->select('DOCU_LIDO as DOCUMENT_LINK')
|
|
|
- ->where('DOCU_IDPE', '=', $id_employee)
|
|
|
- ->where('DOCU_NULI', '=', $line_number)
|
|
|
- ->get();
|
|
|
-
|
|
|
- // Encripta la liga de cada documento
|
|
|
- foreach ($documents_by_employee as $doc) {
|
|
|
-
|
|
|
- $doc->DOCUMENT_NAME = $doc->DOCUMENT_LINK;
|
|
|
- $doc->DOCUMENT_LINK = Storage::disk('pdf')->url($doc->DOCUMENT_LINK);
|
|
|
- $doc->DOCUMENT_LINK = $this->encrypt_controller->encrypt($doc->DOCUMENT_LINK);
|
|
|
- }
|
|
|
-
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(FALSE, "Consulta exitosa", $documents_by_employee);
|
|
|
+ $usr = DB::table('S002V01TUSUA')->where([
|
|
|
+ ['USUA_NULI', '=', $line],
|
|
|
+ ['USUA_IDUS', '=', $idUser],
|
|
|
+ ])->first();
|
|
|
|
|
|
-
|
|
|
- } catch (Throwable $th) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_PERSONAL_REG002: Error inesperado', strtoupper($th->getMessage()), 500);
|
|
|
+ if(is_null($usr)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
- public function getLastDocumentsByEmployee($id_employee, $line_number)
|
|
|
- {
|
|
|
- try {
|
|
|
-
|
|
|
- // Busca si existe el empleado
|
|
|
- $employee_found = DB::table('S002V01TPERS')
|
|
|
- ->select('PERS_IDPE')
|
|
|
- ->where('PERS_IDPE', '=', $id_employee)
|
|
|
- ->where('PERS_NULI', '=', $line_number)
|
|
|
- ->first();
|
|
|
-
|
|
|
- // Verifica si el objeto esta vacio
|
|
|
- if (!isset($employee_found) && empty($employee_found)) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_PERSONAL_REG001: No se encontró al empleado', [], 500);
|
|
|
- }
|
|
|
-
|
|
|
- // Busca si el empleado tiene documentos
|
|
|
- $documents_by_employee = DB::table('S002V01TDOCU_P')
|
|
|
- ->select('DOCU_LIDO as DOCUMENT_LINK', 'DOCU_NUSE as SEQUENCE')
|
|
|
- ->where('DOCU_IDPE', '=', $id_employee)
|
|
|
- ->where('DOCU_NULI', '=', $line_number)
|
|
|
- ->get();
|
|
|
-
|
|
|
- // Busca los numeros de secuencia
|
|
|
- $documents_sequence = DB::table('S002V01TDOCU_P')
|
|
|
- ->select('DOCU_NUSE as SEQUENCE')
|
|
|
- ->where('DOCU_IDPE', '=', $id_employee)
|
|
|
- ->where('DOCU_NULI', '=', $line_number)
|
|
|
- ->groupBy('DOCU_NUSE')
|
|
|
- ->get();
|
|
|
-
|
|
|
- $test = [];
|
|
|
-
|
|
|
- for ($i = 0; $i < sizeof($documents_sequence); $i++) {
|
|
|
- foreach ($documents_by_employee as $doc) {
|
|
|
- if ($doc->SEQUENCE == $documents_sequence[$i]->SEQUENCE) {
|
|
|
- if (isset($test[$i]) && !empty($test[$i])) {
|
|
|
- if (substr($doc->DOCUMENT_LINK, 25, 2) > substr($test[$i], 25, 2)) {
|
|
|
- $test[$i] = $doc->DOCUMENT_LINK;
|
|
|
- }
|
|
|
- } else {
|
|
|
- $test[$i] = $doc->DOCUMENT_LINK;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(FALSE, "Consulta exitosa", $test);
|
|
|
-
|
|
|
|
|
|
- } catch (Throwable $th) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_PERSONAL_REG003: Error inesperado', strtoupper($th->getMessage()), 500);
|
|
|
- }
|
|
|
+ $employees = DB::table('S002V01TPERS')->select([
|
|
|
+ 'PERS_IDPE AS ID_EMPLOYEE',
|
|
|
+ DB::raw('TRIM(CONCAT(USUA_NOMB, " " , USUA_APPA, " ", COALESCE(USUA_APMA,""))) as NAME'),
|
|
|
+ 'PERS_TICO AS CONTRACT_TYPE',
|
|
|
+ 'PERS_ESPE AS SPECIALITY',
|
|
|
+ 'PERS_EQTR AS TEAM_ID',
|
|
|
+ 'EQMA_NOMB AS TEAM_NAME',
|
|
|
+ 'PERS_FERE AS REGISTER_DATE',
|
|
|
+ 'PERS_USRE AS REGISTERED_BY_USER',
|
|
|
+ 'PERS_FEMO AS UPDATE_DATE',
|
|
|
+ 'PERS_USMO AS UPDATED_BY_USER',
|
|
|
+ 'PERS_ESTA AS STATUS'
|
|
|
+ ])->join('S002V01TUSUA', 'PERS_IDUS', '=', 'USUA_IDUS')
|
|
|
+ ->leftJoin('S002V01TEQMA', 'PERS_EQTR', '=', 'EQMA_IDEQ')
|
|
|
+ ->where('USUA_NULI', '=', $line)->get()->all();
|
|
|
+
|
|
|
+ $now = $this->functionsController->now();
|
|
|
+ $nowStr = $now->toDateTimeString();
|
|
|
+ $actions = DB::getQueryLog();
|
|
|
+ $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
|
|
|
+
|
|
|
+ $idac = $this->functionsController->registerActivity(
|
|
|
+ $line,
|
|
|
+ 'S002V01M11GPRS',
|
|
|
+ 'S002V01F01GEPE',
|
|
|
+ 'S002V01P01COEM',
|
|
|
+ 'Consulta',
|
|
|
+ "El usuario $name (" . $usr->USUA_IDUS . ") consultó los empleados registrados.",
|
|
|
+ $idUser,
|
|
|
+ $nowStr,
|
|
|
+ 'S002V01S02GEPE'
|
|
|
+ );
|
|
|
+
|
|
|
+ $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
|
|
|
+ return $this->responseController->makeResponse(false, 'EXITO', $employees);
|
|
|
}
|
|
|
|
|
|
- // Metodo para obtener todas las intervenciones relacionadas a un empleado
|
|
|
- public function getInterventionsByEmployee($id_employee, $line_number)
|
|
|
- {
|
|
|
- try {
|
|
|
-
|
|
|
- // Verifica si el empleado existe
|
|
|
- $employee_exist = DB::table('S002V01TPERS')
|
|
|
- ->select('PERS_IDPE')
|
|
|
- ->where('PERS_IDPE', '=', $id_employee)
|
|
|
- ->where('PERS_NULI', '=', $line_number)
|
|
|
- ->first();
|
|
|
-
|
|
|
- // Verifica si el objeto esta vacio
|
|
|
- if (!isset($employee_exist) && empty($employee_exist)) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_PERSONAL_REG001: No se encontró al empleado', [], 500);
|
|
|
- }
|
|
|
-
|
|
|
- // Obtiene las intervenciones del empleado
|
|
|
- $employee_interventions = DB::table('S002V01TPERS')
|
|
|
- ->select(
|
|
|
- 'S002V01TEQMA.EQMA_NOMB as WORKTEAM_NAME',
|
|
|
- 'S002V01TINTE_P.INTE_NOMB as INTERVENTION_NAME',
|
|
|
- 'S002V01TEQMA.EQMA_NOMB as WORKTEAM_NAME',
|
|
|
- 'S002V01TINTE_P.INTE_IDIN as INTERVENTION_ID',
|
|
|
- 'S002V01TINTE_P.INTE_DESC as INTERVENTION_DESCRIPTION',
|
|
|
- )
|
|
|
- ->where('S002V01TPERS.PERS_IDPE', '=', $id_employee)
|
|
|
- ->where('S002V01TPERS.PERS_NULI', '=', $line_number)
|
|
|
- ->where('S002V01TPEEM.PEEM_NULI', '=', $line_number)
|
|
|
- ->where('S002V01TEQMA.EQMA_NULI', '=', $line_number)
|
|
|
- ->where('S002V01TEMIN.EMIN_NULI', '=', $line_number)
|
|
|
- ->where('S002V01TINTE_P.INTE_NULI', '=', $line_number)
|
|
|
- ->join('S002V01TPEEM', 'S002V01TPERS.PERS_IDPE', '=', 'S002V01TPEEM.PEEM_IDPE')
|
|
|
- ->join('S002V01TEQMA', 'S002V01TPEEM.PEEM_IDEM', '=', 'S002V01TEQMA.EQMA_IDEQ')
|
|
|
- ->join('S002V01TEMIN', 'S002V01TEQMA.EQMA_IDEQ', '=', 'S002V01TEMIN.EMIN_IDEM')
|
|
|
- ->join('S002V01TINTE_P', 'S002V01TEMIN.EMIN_IDIN', '=', 'S002V01TINTE_P.INTE_IDIN')
|
|
|
- ->get();
|
|
|
-
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(FALSE, "Consulta exitosa", $employee_interventions);
|
|
|
-
|
|
|
- } catch (Throwable $th) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_PERSONAL_REG002: Error inesperado', strtoupper($th->getMessage()), 500);
|
|
|
+ public function storeEmployee(Request $request) {
|
|
|
+ DB::enableQueryLog();
|
|
|
+
|
|
|
+ $request['RFC'] = $this->encryptionController->decrypt($request->RFC) ? $this->encryptionController->decrypt($request->RFC) : 'ENC_ERR';
|
|
|
+ $request['TAX'] = $this->encryptionController->decrypt($request->TAX) ? $this->encryptionController->decrypt($request->TAX) : 'ENC_ERR';
|
|
|
+ $request['CONTACT_NAME'] = $this->encryptionController->decrypt($request->CONTACT_NAME) ? $this->encryptionController->decrypt($request->CONTACT_NAME) : 'ENC_ERR';
|
|
|
+ $request['CONTACT_TELEPHONE'] = $this->encryptionController->decrypt($request->CONTACT_TELEPHONE) ? $this->encryptionController->decrypt($request->CONTACT_TELEPHONE) : 'ENC_ERR';
|
|
|
+ $request['CONTACT_LADA'] = $this->encryptionController->decrypt($request->CONTACT_LADA) ? $this->encryptionController->decrypt($request->CONTACT_LADA) : 'ENC_ERR';
|
|
|
+ $request['CONTACT_ADDRESS'] = $this->encryptionController->decrypt($request->CONTACT_ADDRESS) ? $this->encryptionController->decrypt($request->CONTACT_ADDRESS) : 'ENC_ERR';
|
|
|
+
|
|
|
+ $validator = Validator::make($request->all(), [
|
|
|
+ 'id_user' => 'required|string',
|
|
|
+ 'linea' => 'required|integer',
|
|
|
+ 'USER_ID' => 'required|string',
|
|
|
+ 'WORKTEAM_ID' => 'required|string',
|
|
|
+ 'CONTRACT_TYPE' => 'required|string|in:Subcontratista,Interno',
|
|
|
+ 'SUBCONTRATIST_ID' => 'required_if:CONTRACT_TYPE,=,Subcontratista|string',
|
|
|
+ 'SPECIALITY' => 'required|string|max:75',
|
|
|
+ 'FOREIGNER' => 'required|string|in:Si,No',
|
|
|
+ 'RFC' => 'required_if:FOREIGNER,=,No|string|max:13',
|
|
|
+ 'TAX' => 'required_if:FOREIGNER,=,Si|string|max:13',
|
|
|
+ 'COUNTRY' => 'required|string|max:75',
|
|
|
+ 'FEDERAL_ENTITY' => 'required|string|max:75',
|
|
|
+ 'CITY' => 'string|max:75',
|
|
|
+ 'TOWN' => 'string|max:75',
|
|
|
+ 'SUBURB' => 'required|string|max:75',
|
|
|
+ 'POSTAL_CODE' => 'required|string|max:5',
|
|
|
+ 'STREET' => 'required|string|max:150',
|
|
|
+ 'EXTERIOR_NUMBER' => 'required|integer',
|
|
|
+ 'INTERIOR_NUMBER' => 'integer',
|
|
|
+ 'CONTACT_NAME' => 'required|string|max:150',
|
|
|
+ 'CONTACT_LADA' => 'required|string|max:10',
|
|
|
+ 'CONTACT_TELEPHONE' => 'required|string|max:11',
|
|
|
+ 'CONTACT_ADDRESS' => 'required|string|max:250',
|
|
|
+ 'ATTACHED' => 'required|json',
|
|
|
+ ]);
|
|
|
+
|
|
|
+ if($validator->fails()){
|
|
|
+ return $this->responseController->makeResponse(
|
|
|
+ TRUE,
|
|
|
+ 'ERR_PERSONAL_REG001: Uno o más errores encontrados',
|
|
|
+ $this->responseController->makeErrors($validator->errors()->messages()),
|
|
|
+ 400
|
|
|
+ );
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
- // Metodo para la eliminación logica de un empleado
|
|
|
- public function updateToInactiveStatus(Request $request, $id_employee)
|
|
|
- {
|
|
|
- try {
|
|
|
- $request['SAVED_BY_USER'] = $this->encrypt_controller->decrypt($request->SAVED_BY_USER);
|
|
|
- $validator = Validator::make($request->all(), [
|
|
|
- "SAVED_BY_USER" => ['required', 'digits:10']
|
|
|
- ]);
|
|
|
-
|
|
|
- if ($validator->fails()) {
|
|
|
- return $this->response_controller->makeResponse(
|
|
|
- TRUE,
|
|
|
- 'ERR_PERSONAL_REG001: Uno o más errores encontrados',
|
|
|
- $this->response_controller->makeErrors($validator->errors()->messages()),
|
|
|
- 400
|
|
|
- );
|
|
|
- }
|
|
|
-
|
|
|
- // Busca si el empleado existe
|
|
|
- $search_employee = DB::table("S002V01TPERS")
|
|
|
- ->select("PERS_IDPE")
|
|
|
- ->where("PERS_IDPE", "=", $id_employee)
|
|
|
- ->where('PERS_NULI', '=', $request->LINE_NUMBER)
|
|
|
- ->first();
|
|
|
-
|
|
|
- // Verifica si el objeto esta vacio
|
|
|
- if (!isset($search_employee) && empty($search_employee)) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, "ERR_PERSONAL_REG002: No se encontró al empleado", $search_employee, 500);
|
|
|
- }
|
|
|
-
|
|
|
- $user_register = DB::table('S002V01TUSUA')
|
|
|
- ->select('USUA_IDUS as ID_USER')
|
|
|
- ->where('USUA_IDUS', '=', $request->SAVED_BY_USER)
|
|
|
- ->where('USUA_NULI', '=', $request->LINE_NUMBER)
|
|
|
- ->first();
|
|
|
|
|
|
- // Verifica si el objeto esta vacio
|
|
|
- if (!isset($user_register) && empty($user_register)) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, "ERR_USUARIO_REG003: Tu usuario no es válido para eliminar empleados", [], 500);
|
|
|
+ $form = $request->all();
|
|
|
+ foreach($form as $k=>$v){
|
|
|
+ if($k == 'INTERIOR_NUMBER' && $v == '0'){
|
|
|
+ unset($form[$k]);
|
|
|
+ }else if($v == '-'){
|
|
|
+ unset($form[$k]);
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- // Busca si el empleado tiene intervenciones activas
|
|
|
- $search_employee = DB::table("S002V01TPERS")
|
|
|
- ->select("S002V01TINTE_P.INTE_NOMB")
|
|
|
- ->where("S002V01TPERS.PERS_IDPE", "=", $id_employee)
|
|
|
- ->where("S002V01TINTE_P.INTE_ESTA", "=", "Activo")
|
|
|
- ->where("S002V01TEMIN.EMIN_ESTA", "=", "Activo")
|
|
|
- ->where("S002V01TPERS.PERS_NULI", "=", $request->LINE_NUMBER)
|
|
|
- ->where('S002V01TPEEM.PEEM_NULI', '=', $request->LINE_NUMBER)
|
|
|
- ->where('S002V01TEQMA.EQMA_NULI', '=', $request->LINE_NUMBER)
|
|
|
- ->where('S002V01TEMIN.EMIN_NULI', '=', $request->LINE_NUMBER)
|
|
|
- ->where('S002V01TINTE_P.INTE_NULI', '=', $request->LINE_NUMBER)
|
|
|
- ->groupBy('S002V01TINTE_P.INTE_NOMB')
|
|
|
- ->join("S002V01TPEEM", "S002V01TPERS.PERS_IDPE", "=", "S002V01TPEEM.PEEM_IDPE")
|
|
|
- ->join("S002V01TEQMA", "S002V01TPEEM.PEEM_IDEM", "=", "S002V01TEQMA.EQMA_IDEQ")
|
|
|
- ->join("S002V01TEMIN", "S002V01TEQMA.EQMA_IDEQ", "=", "S002V01TEMIN.EMIN_IDEM")
|
|
|
- ->join("S002V01TINTE_P", "S002V01TEMIN.EMIN_IDIN", "=", "S002V01TINTE_P.INTE_IDIN")
|
|
|
- ->get();
|
|
|
-
|
|
|
-
|
|
|
- // Verifica si el objeto contiene algo
|
|
|
- if (isset($search_employee[0]) && !empty($search_employee[0])) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, "ERR_PERSONAL_REG004: Empleado ocupado con intervenciones", $search_employee, 500);
|
|
|
- } else {
|
|
|
-
|
|
|
- DB::beginTransaction(); # Para impedir que las actualizaciones queden incompletas
|
|
|
-
|
|
|
- $UPDATE_DATE = Carbon::now()->timezone('America/Mexico_City')->toDateTimeString();
|
|
|
-
|
|
|
- $delete_employee = DB::table('S002V01TPERS')
|
|
|
- ->where('PERS_IDPE', $id_employee)
|
|
|
- ->where('PERS_NULI', '=', $request->LINE_NUMBER)
|
|
|
- ->update([
|
|
|
- "PERS_ESTA" => "Eliminado",
|
|
|
- "PERS_USMO" => trim($request->SAVED_BY_USER),
|
|
|
- "PERS_FEMO" => $UPDATE_DATE,
|
|
|
- "PERS_FEAR" => DB::raw('CURRENT_TIMESTAMP')
|
|
|
- ]);
|
|
|
-
|
|
|
- // Verifica que la actualización fuera exitosa
|
|
|
- if ($delete_employee < 1) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_PERSONAL_REG005: Algo salió mal, error eliminando al empleado', [], 500);
|
|
|
- }
|
|
|
+ $idUser = $this->encryptionController->decrypt($form['id_user']);
|
|
|
+ if(!$idUser){
|
|
|
+ return $this->responseController->makeResponse(true, 'El ID de usuario no fue encriptado correctamente.', [], 400);
|
|
|
+ }
|
|
|
|
|
|
- $delete_employee = DB::table('S002V01TPEEM')
|
|
|
- ->where('PEEM_IDPE', $id_employee)
|
|
|
- ->where('PEEM_NULI', '=', $request->LINE_NUMBER)
|
|
|
- ->update([
|
|
|
- "PEEM_ESTA" => "Eliminado",
|
|
|
- "PEEM_USMO" => trim($request->SAVED_BY_USER),
|
|
|
- "PEEM_FEMO" => $UPDATE_DATE,
|
|
|
- "PEEM_FEAR" => DB::raw('CURRENT_TIMESTAMP')
|
|
|
- ]);
|
|
|
-
|
|
|
- // Verifica que la actualización fuera exitosa
|
|
|
- if ($delete_employee < 1) {
|
|
|
- DB::rollBack(); # Si no se logra eliminar al empleado en el equipo, se revierten los cambios previos
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_PERSONAL_REG006: Algo salió mal, error eliminando al empleado del equipo', [], 500);
|
|
|
- }
|
|
|
- }
|
|
|
- DB::commit(); # Para guardar los cambios en la base de datos
|
|
|
- return $this->response_controller->makeResponse(FALSE, "Eliminado exitoso");
|
|
|
+ $usr = DB::table('S002V01TUSUA')->where([
|
|
|
+ ['USUA_NULI', '=', $form['linea']],
|
|
|
+ ['USUA_IDUS', '=', $idUser]
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($usr)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El usuario que realizó la petición no existe.', [], 404);
|
|
|
+ }
|
|
|
|
|
|
- } catch (Throwable $th) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_PERSONAL_REG007: Error inesperado', strtoupper($th->getMessage()), 500);
|
|
|
+ $idUserReg = $this->encryptionController->decrypt($form['USER_ID']);
|
|
|
+ if(!$idUserReg){
|
|
|
+ return $this->responseController->makeResponse(true, 'El ID del usuario seleccionado no fue encriptado correctamente.', [], 400);
|
|
|
+ }else if($idUser == $idUserReg){
|
|
|
+ return $this->responseController->makeResponse(true, 'El usuario no puede registrarse a sí mismo.', [], 400);
|
|
|
+ }
|
|
|
+
|
|
|
+ $usrReg = DB::table('S002V01TUSUA')->where([
|
|
|
+ ['USUA_NULI', '=', $form['linea']],
|
|
|
+ ['USUA_IDUS', '=', $idUserReg]
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($usrReg)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El usuario seleccionado no existe.', [], 404);
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- // Metodo para la activación logica de un empleado
|
|
|
- public function updateToActiveStatus(Request $request, $id_employee)
|
|
|
- {
|
|
|
- try {
|
|
|
- $request['SAVED_BY_USER'] = $this->encrypt_controller->decrypt($request->SAVED_BY_USER);
|
|
|
- $validator = Validator::make($request->all(), [
|
|
|
- "SAVED_BY_USER" => ['required', 'digits:10']
|
|
|
- ]);
|
|
|
-
|
|
|
- if ($validator->fails()) {
|
|
|
- return $this->response_controller->makeResponse(
|
|
|
- TRUE,
|
|
|
- 'ERR_PERSONAL_REG001: Uno o más errores encontrados',
|
|
|
- $this->response_controller->makeErrors($validator->errors()->messages()),
|
|
|
- 400
|
|
|
- );
|
|
|
+ $idTeam = null;
|
|
|
+ if(isset($form['WORKTEAM_ID'])){
|
|
|
+ $idTeam = $this->encryptionController->decrypt($form['WORKTEAM_ID']);
|
|
|
+ if(!$idTeam){
|
|
|
+ return $this->responseController->makeResponse(true, 'El ID del equipo seleccionado encriptado correctamente.', [], 400);
|
|
|
}
|
|
|
|
|
|
- // Busca si el empleado existe
|
|
|
- $search_employee = DB::table("S002V01TPERS")
|
|
|
- ->select("PERS_IDPE")
|
|
|
- ->where("PERS_IDPE", "=", $id_employee)
|
|
|
- ->where('PERS_NULI', '=', $request->LINE_NUMBER)
|
|
|
- ->first();
|
|
|
-
|
|
|
- // Verifica si el objeto esta vacio
|
|
|
- if (!isset($search_employee) && empty($search_employee)) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, "ERR_PERSONAL_REG002: No se encontró al empleado", $search_employee, 500);
|
|
|
+ $team = DB::table('S002V01TEQMA')->where([
|
|
|
+ ['EQMA_IDEQ', '=', $idTeam],
|
|
|
+ ['EQMA_NULI', '=', $form['linea']],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($team)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El equipo seleccionado no existe.', [], 404);
|
|
|
+ }else if($team->EQMA_ESTA == 'Eliminado'){
|
|
|
+ return $this->responseController->makeResponse(true, 'El equipo seleccionado está eliminado.', [], 404);
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- $user_register = DB::table('S002V01TUSUA')
|
|
|
- ->select('USUA_IDUS as ID_USER')
|
|
|
- ->where('USUA_IDUS', '=', $request->SAVED_BY_USER)
|
|
|
- ->where('USUA_NULI', '=', $request->LINE_NUMBER)
|
|
|
- ->first();
|
|
|
-
|
|
|
- // Verifica si el objeto esta vacio
|
|
|
- if (!isset($user_register) && empty($user_register)) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, "ERR_USUARIO_REG003: Tu usuario no es válido para activar empleados", [], 500);
|
|
|
+ $idSubcontratist = null;
|
|
|
+ if(isset($form['SUBCONTRATIST_ID'])){
|
|
|
+ $idSubcontratist = $this->encryptionController->decrypt($form['SUBCONTRATIST_ID']);
|
|
|
+ if(!$idSubcontratist){
|
|
|
+ return $this->responseController->makeResponse(true, 'El ID del subcontratista seleccionado no fue encriptado correctamente.', [], 400);
|
|
|
}
|
|
|
|
|
|
- $check_workteam = DB::table("S002V01TEQMA")
|
|
|
- ->select("S002V01TEQMA.EQMA_ESTA as STATUS")
|
|
|
- ->where("S002V01TPEEM.PEEM_IDPE", '=', $id_employee)
|
|
|
- ->join('S002V01TPEEM', 'S002V01TEQMA.EQMA_IDEQ', '=', 'S002V01TPEEM.PEEM_IDEM')
|
|
|
- ->first();
|
|
|
-
|
|
|
- if ($check_workteam->STATUS == "Eliminado") {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, "ERR_EQUIPO_TRABAJO_REG004: El equipo de trabajo no esta activo", [], 500);
|
|
|
+ $subcontratist = DB::table('S002V01TPESU')->where([
|
|
|
+ ['PESU_IDPS', '=', $idSubcontratist],
|
|
|
+ ['PESU_NULI', '=', $form['linea']],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($subcontratist)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El subcontratista seleccionado no existe.', [], 404);
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- DB::beginTransaction(); # Para impedir que las actualizaciones queden incompletas
|
|
|
-
|
|
|
- $UPDATE_DATE = Carbon::now()->timezone('America/Mexico_City')->toDateTimeString();
|
|
|
-
|
|
|
- $activate_employee = DB::table('S002V01TPERS')
|
|
|
- ->where('PERS_IDPE', $id_employee)
|
|
|
- ->where('PERS_NULI', '=', $request->LINE_NUMBER)
|
|
|
- ->update([
|
|
|
- "PERS_ESTA" => "Activo",
|
|
|
- "PERS_USMO" => trim($request->SAVED_BY_USER),
|
|
|
- "PERS_FEMO" => $UPDATE_DATE,
|
|
|
- "PERS_FEAR" => DB::raw('CURRENT_TIMESTAMP')
|
|
|
- ]);
|
|
|
+ $rfcx = null;
|
|
|
+ if(isset($form['RFC']) && $form['FOREIGNER'] == 'No' && $form['RFC'] == 'ENC_ERR'){
|
|
|
+ return $this->responseController->makeResponse(true, 'El RFC no fue encriptado correctamente.', [], 400);
|
|
|
+ }else if(isset($form['RFC']) && $form['RFC'] != 'ENC_ERR'){
|
|
|
+ $rfcx = $form['RFC'];
|
|
|
+ }
|
|
|
|
|
|
- // Verifica que la actualización fuera exitosa
|
|
|
- if ($activate_employee < 1) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_PERSONAL_REG005: Algo salió mal, error activando al empleado', [], 500);
|
|
|
- }
|
|
|
+ $taid = null;
|
|
|
+ if(isset($form['TAX']) && $form['FOREIGNER'] == 'Si' && $form['TAX'] == 'ENC_ERR'){
|
|
|
+ return $this->responseController->makeResponse(true, 'El TAX ID no fue encriptado correctamente.', [], 400);
|
|
|
+ }else if(isset($form['TAX']) && $form['TAX'] != 'ENC_ERR'){
|
|
|
+ $taid = $form['TAX'];
|
|
|
+ }
|
|
|
+
|
|
|
+ $country = DB::table('S002V01TPAIS')->where([
|
|
|
+ ['PAIS_NULI', '=', $form['linea']],
|
|
|
+ ['PAIS_IDPA', '=', $form['COUNTRY']],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($country)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El país seleccionado no existe.', [], 404);
|
|
|
+ }
|
|
|
|
|
|
- $activate_employee = DB::table('S002V01TPEEM')
|
|
|
- ->where('PEEM_IDPE', $id_employee)
|
|
|
- ->where('PEEM_NULI', '=', $request->LINE_NUMBER)
|
|
|
- ->update([
|
|
|
- "PEEM_ESTA" => "Activo",
|
|
|
- "PEEM_USMO" => trim($request->SAVED_BY_USER),
|
|
|
- "PEEM_FEMO" => $UPDATE_DATE,
|
|
|
- "PEEM_FEAR" => DB::raw('CURRENT_TIMESTAMP')
|
|
|
- ]);
|
|
|
-
|
|
|
- // Verifica que la actualización fuera exitosa
|
|
|
- if ($activate_employee < 1) {
|
|
|
- DB::rollBack(); # Si no se logra eliminar al empleado en el equipo, se revierten los cambios previos
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_PERSONAL_REG006: Algo salió mal, error activando al empleado del equipo', [], 500);
|
|
|
+ $colo = null;
|
|
|
+ $ciud = null;
|
|
|
+ $loca = null;
|
|
|
+ if($form['COUNTRY'] == 'MEX' || $form['COUNTRY'] == 'USA' || $form['COUNTRY'] == 'CAN'){
|
|
|
+ $state = DB::table('S002V01TESTA')->where([
|
|
|
+ ['ESTA_NULI', '=', $form['linea']],
|
|
|
+ ['ESTA_COES', '=', $form['FEDERAL_ENTITY']],
|
|
|
+ ['ESTA_COPA', '=', $form['COUNTRY']],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($state)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El estado seleccionado no existe.', [], 404);
|
|
|
}
|
|
|
|
|
|
- DB::commit(); # Para guardar los cambios en la base de datos
|
|
|
- return $this->response_controller->makeResponse(FALSE, "Activación exitosa");
|
|
|
-
|
|
|
- } catch (Throwable $th) {
|
|
|
- return $this->response_controller->
|
|
|
- makeResponse(TRUE, 'ERR_PERSONAL_REG007: Error inesperado', strtoupper($th->getMessage()), 500);
|
|
|
- }
|
|
|
- }
|
|
|
+ if($form['COUNTRY'] == 'MEX'){
|
|
|
+ if(isset($form['CITY'])){
|
|
|
+ $city = DB::table('S002V01TMUNI')->where([
|
|
|
+ ['MUNI_NULI', '=', $form['linea']],
|
|
|
+ ['MUNI_COMU', '=', $form['CITY']],
|
|
|
+ ['MUNI_COES', '=', $form['FEDERAL_ENTITY']],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($city)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El municipio seleccionado no existe.', [], 404);
|
|
|
+ }else{
|
|
|
+ $ciud = $form['CITY'];
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- // Metodo para obtener a los usuarios que no son empleados y el enviado por path
|
|
|
- public function getAvaibleUsers($id_employee, $line_number)
|
|
|
- {
|
|
|
-
|
|
|
- try {
|
|
|
-
|
|
|
- // Busca en la base si existe otro empleado con ese usuario
|
|
|
- $users = DB::table('S002V01TUSUA')
|
|
|
- ->select(
|
|
|
- DB::raw('TRIM(CONCAT(USUA_NOMB, " " , USUA_APPA, " ", COALESCE(USUA_APMA,""))) as NAME'),
|
|
|
- "USUA_IDUS as ID_USER"
|
|
|
- )
|
|
|
- ->orderBy('NAME', 'asc')
|
|
|
- ->where('USUA_NULI', '=', $line_number)
|
|
|
- ->where('USUA_ESTA', '=', "Activo")
|
|
|
- ->get();
|
|
|
-
|
|
|
- $employees = DB::table('S002V01TPERS')
|
|
|
- ->select("PERS_IDUS as ID_USER")
|
|
|
- ->where('PERS_NULI', '=', $line_number)
|
|
|
- ->get();
|
|
|
-
|
|
|
- $avaibleUsers = [];
|
|
|
-
|
|
|
- foreach ($users as $user) {
|
|
|
- foreach ($employees as $employee) {
|
|
|
- if ($user->ID_USER == $employee->ID_USER) {
|
|
|
- $user->ID_USER = "XXXX";
|
|
|
+ if(isset($form['TOWN'])){
|
|
|
+ $town = DB::table('S002V01TLOCA')->where([
|
|
|
+ ['LOCA_NULI', '=', $form['linea']],
|
|
|
+ ['LOCA_COLO', '=', $form['TOWN']],
|
|
|
+ ['LOCA_COES', '=', $form['FEDERAL_ENTITY']],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($town)){
|
|
|
+ return $this->responseController->makeResponse(true, 'La localidad seleccionada no existe.', [], 404);
|
|
|
+ }else{
|
|
|
+ $loca = $form['TOWN'];
|
|
|
}
|
|
|
}
|
|
|
- if ($user->ID_USER != "XXXX") {
|
|
|
- $avaibleUsers[] = $user;
|
|
|
+
|
|
|
+ $setting = DB::table('S002V01TCOLO')->where([
|
|
|
+ ['COLO_NULI', '=', $form['linea']],
|
|
|
+ ['COLO_COCO', '=', $form['SUBURB']],
|
|
|
+ ['COLO_COPO', '=', $form['POSTAL_CODE']],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($setting)){
|
|
|
+ return $this->responseController->makeResponse(true, 'La colonia seleccionada no existe.', [], 404);
|
|
|
+ }else{
|
|
|
+ $colo = $form['SUBURB'];
|
|
|
}
|
|
|
+
|
|
|
+ $zipCode = DB::table('S002V01TCOPO')->where([
|
|
|
+ ['COPO_NULI', '=', $form['linea']],
|
|
|
+ ['COPO_COPO', '=', $form['POSTAL_CODE']],
|
|
|
+ ['COPO_COES', '=', $form['FEDERAL_ENTITY']],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($zipCode)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El código postal seleccionado no existe.', [], 404);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ $colo = $form['SUBURB'];
|
|
|
+ $ciud = $form['CITY'];
|
|
|
+ $loca = isset($form['TOWN']) ? $form['TOWN'] : null;
|
|
|
}
|
|
|
-
|
|
|
- // Busca en la base el empleado requerido
|
|
|
- if ($id_employee != "0") {
|
|
|
- $employeSelected = DB::table('S002V01TPERS')
|
|
|
- ->select(
|
|
|
- DB::raw('TRIM(CONCAT(S002V01TUSUA.USUA_NOMB, " " , S002V01TUSUA.USUA_APPA, " ", COALESCE(S002V01TUSUA.USUA_APMA,""))) as NAME'),
|
|
|
- "S002V01TUSUA.USUA_IDUS as ID_USER"
|
|
|
- )
|
|
|
- ->where('S002V01TUSUA.USUA_NULI', '=', $line_number)
|
|
|
- ->where('S002V01TPERS.PERS_NULI', '=', $line_number)
|
|
|
- ->where('S002V01TPERS.PERS_IDPE', '=', $id_employee)
|
|
|
- ->join('S002V01TUSUA', 'S002V01TPERS.PERS_IDUS', '=', 'S002V01TUSUA.USUA_IDUS')
|
|
|
- ->first();
|
|
|
-
|
|
|
- $avaibleUsers[] = $employeSelected;
|
|
|
- }
|
|
|
-
|
|
|
- return $this->response_controller->makeResponse(FALSE, 'Usuarios obtenidos', $avaibleUsers, 200);
|
|
|
-
|
|
|
- } catch (Throwable $th) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_PERSONAL_REG001: Error inesperado', strtoupper($th), 500);
|
|
|
+ }else{
|
|
|
+ $colo = $form['SUBURB'];
|
|
|
+ $ciud = $form['CITY'];
|
|
|
+ $loca = isset($form['TOWN']) ? $form['TOWN'] : null;
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
- // Metodo para guardar un nuevo empleado
|
|
|
- public function storeEmployee(Request $request)
|
|
|
- {
|
|
|
-
|
|
|
- try {
|
|
|
- $REGISTER_DATE = Carbon::now()->timezone('America/Mexico_City')->toDateTimeString();
|
|
|
- $request['SAVED_BY_USER'] = $this->encrypt_controller->decrypt($request->SAVED_BY_USER);
|
|
|
- $request['CONTACT_NAME'] = $this->encrypt_controller->decrypt($request->CONTACT_NAME);
|
|
|
- $request['CONTACT_TELEPHONE'] = $this->encrypt_controller->decrypt($request->CONTACT_TELEPHONE);
|
|
|
- $request['CONTACT_LADA'] = $this->encrypt_controller->decrypt($request->CONTACT_LADA);
|
|
|
- $request['CONTACT_ADDRESS'] = $this->encrypt_controller->decrypt($request->CONTACT_ADDRESS);
|
|
|
-
|
|
|
- $validator = Validator::make($request->all(), [
|
|
|
- "USER_ID" => ['required', 'digits:10'],
|
|
|
- "WORKTEAM_ID" => ['required', 'digits:10'],
|
|
|
- "CONTACT_NAME" => ['required', 'max:150'],
|
|
|
- "CONTACT_TELEPHONE" => ['required', 'max:11'],
|
|
|
- "CONTACT_LADA" => ['required', 'max:5'],
|
|
|
- "CONTACT_ADDRESS" => ['required', 'max:100'],
|
|
|
- "CONTRACT_TYPE" => ['required'],
|
|
|
- "SPECIALITY" => ['required', 'max:75'],
|
|
|
- "SUBCONTRATIST_ID" => ['max:10'],
|
|
|
- "SAVED_BY_USER" => ['required', 'digits:10'],
|
|
|
- "LINE_NUMBER" => ['required', 'digits:1']
|
|
|
- ]);
|
|
|
-
|
|
|
-
|
|
|
- if ($validator->fails()) {
|
|
|
- return $this->response_controller->makeResponse(
|
|
|
- TRUE,
|
|
|
- 'ERR_PERSONAL_REG001: Uno o más errores encontrados',
|
|
|
- $this->response_controller->makeErrors($validator->errors()->messages()),
|
|
|
- 400
|
|
|
- );
|
|
|
- }
|
|
|
-
|
|
|
- // Busca en la base si existe otro empleado con ese usuario
|
|
|
- $uniq_user = DB::table('S002V01TPERS')
|
|
|
- ->select("PERS_IDPE")
|
|
|
- ->where('PERS_IDUS', '=', $request->USER_ID)
|
|
|
- ->where('PERS_NULI', '=', $request->LINE_NUMBER)
|
|
|
- ->first();
|
|
|
-
|
|
|
- // Verifica si el objeto contiene algo
|
|
|
- if (isset($uniq_user) && !empty($uniq_user)) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_PERSONAL_REG002: El usuario ya está registrado como empleado', [], 500);
|
|
|
- }
|
|
|
-
|
|
|
- // Busca si el usuario existe
|
|
|
- $user_exist = DB::table('S002V01TUSUA')
|
|
|
- ->select("USUA_IDUS")
|
|
|
- ->where('USUA_IDUS', '=', $request->USER_ID)
|
|
|
- ->where('USUA_NULI', '=', $request->LINE_NUMBER)
|
|
|
- ->first();
|
|
|
-
|
|
|
- // Verifica si el objeto esta vacio
|
|
|
- if (!isset($user_exist) && empty($user_exist)) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_PERSONAL_REG003: No se encontró al usuario', [], 500);
|
|
|
- }
|
|
|
-
|
|
|
- // Busca si el equipo de trabajo existe
|
|
|
- $team_found = DB::table('S002V01TEQMA')
|
|
|
- ->select('EQMA_NOMB')
|
|
|
- ->where('EQMA_IDEQ', '=', $request->WORKTEAM_ID)
|
|
|
- ->where('EQMA_NULI', '=', $request->LINE_NUMBER)
|
|
|
- ->first();
|
|
|
-
|
|
|
- // Verifica si el objeto esta vacio
|
|
|
- if (!isset($team_found) && empty($team_found)) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG004: No se encontró al equipo de trabajo', [], 500);
|
|
|
- }
|
|
|
-
|
|
|
- $user_register = DB::table('S002V01TUSUA')
|
|
|
- ->select('USUA_IDUS as ID_USER')
|
|
|
- ->where('USUA_IDUS', '=', $request->SAVED_BY_USER)
|
|
|
- ->where('USUA_NULI', '=', $request->LINE_NUMBER)
|
|
|
- ->first();
|
|
|
|
|
|
- // Verifica si el objeto esta vacio
|
|
|
- if (!isset($user_register) && empty($user_register)) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, "ERR_USUARIO_REG005: Tu usuario no es válido para registrar empleados", [], 500);
|
|
|
- }
|
|
|
-
|
|
|
- DB::beginTransaction(); # Para impedir que las actualizaciones queden a incompletas
|
|
|
-
|
|
|
- $insert_employee = DB::table('S002V01TPERS')
|
|
|
- ->insert([
|
|
|
- "PERS_IDUS" => $request->USER_ID,
|
|
|
- "PERS_NOCE" => trim($request->CONTACT_NAME),
|
|
|
- "PERS_NUTC" => $request->CONTACT_TELEPHONE,
|
|
|
- "PERS_LATC" => $request->CONTACT_LADA,
|
|
|
- "PERS_DICE" => trim($request->CONTACT_ADDRESS),
|
|
|
- "PERS_TICO" => trim($request->CONTRACT_TYPE),
|
|
|
- "PERS_ESPE" => trim($request->SPECIALITY),
|
|
|
- "PERS_IDPS" => $request->SUBCONTRATIST_ID,
|
|
|
- "PERS_NULI" => $request->LINE_NUMBER,
|
|
|
- "PERS_ESTA" => "Activo",
|
|
|
- "PERS_USRE" => $request->SAVED_BY_USER,
|
|
|
- "PERS_FERE" => $REGISTER_DATE,
|
|
|
- "PERS_FEAR" => DB::raw('CURRENT_TIMESTAMP')
|
|
|
- ]);
|
|
|
-
|
|
|
- // Verifica que la inserción del empleado se haya hecho correctamente
|
|
|
- if (!$insert_employee) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_PERSONAL_REG006: Algo salió mal, error registrando al empleado', [], 500);
|
|
|
- }
|
|
|
-
|
|
|
- // Obtiene el ID del empleado registrado
|
|
|
- $employee_id = DB::table('S002V01TPERS')
|
|
|
- ->select('PERS_IDPE as EMPLOYEE_ID')
|
|
|
- ->where('PERS_IDUS', '=', $request->USER_ID)
|
|
|
- ->where('PERS_NULI', '=', $request->LINE_NUMBER)
|
|
|
- ->first();
|
|
|
-
|
|
|
- // Saca el ID del objeto
|
|
|
- $employee_id = $employee_id->EMPLOYEE_ID;
|
|
|
-
|
|
|
- $insert_employee_on_workteam = DB::table('S002V01TPEEM')
|
|
|
- ->insert([
|
|
|
- "PEEM_IDPE" => $employee_id,
|
|
|
- "PEEM_IDEM" => $request->WORKTEAM_ID,
|
|
|
- "PEEM_NULI" => $request->LINE_NUMBER,
|
|
|
- "PEEM_ESTA" => "Activo",
|
|
|
- "PEEM_USRE" => $request->SAVED_BY_USER,
|
|
|
- "PEEM_FERE" => $REGISTER_DATE,
|
|
|
- "PEEM_FEAR" => DB::raw('CURRENT_TIMESTAMP'),
|
|
|
- ]);
|
|
|
-
|
|
|
- // Verifica que la inserción del empleado en el equipo de trabajo se haya hecho correctamente
|
|
|
- if (!$insert_employee_on_workteam) {
|
|
|
- DB::rollBack(); # Si no se logra insertar al equipo, se revierten los cambios previos
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG007: Algo salió mal, error registrando al empleado en el equipo', [], 500);
|
|
|
- }
|
|
|
-
|
|
|
- // Verifica si el objeto esta vacio
|
|
|
- if (isset($request->DOCUMENTS_AUTHO) && !empty($request->DOCUMENTS_AUTHO)) {
|
|
|
- $doc = $request->DOCUMENTS_AUTHO;
|
|
|
-
|
|
|
-
|
|
|
- // Se obtiene el nombre del archivo con su extensión
|
|
|
- $completeFileName = $doc->getClientOriginalName();
|
|
|
- // Se obtiene únicamente el nombre
|
|
|
- $fileNameOnly = pathinfo($completeFileName, PATHINFO_FILENAME) . '-' . $employee_id;
|
|
|
-
|
|
|
- // Se obtiene la extensión del archivo
|
|
|
- $extension = $doc->getClientOriginalExtension();
|
|
|
- if ($extension != "pdf") {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_DOCUMENTO_REG007: Solo se permiten archivos PDF', [], 500);
|
|
|
- }
|
|
|
-
|
|
|
- // Se quitan los espacios y se concatena datos para ser guardado
|
|
|
- $final_part_name_document = str_replace(' ', '_', $fileNameOnly) . '.' . $extension;
|
|
|
-
|
|
|
- $name_document = $this->documents_controller->createDocument(
|
|
|
- "GPRS",
|
|
|
- "IN",
|
|
|
- $final_part_name_document,
|
|
|
- $employee_id,
|
|
|
- 'pdf',
|
|
|
- $request->LINE_NUMBER,
|
|
|
- $request->SAVED_BY_USER
|
|
|
- );
|
|
|
-
|
|
|
- // El documento es guardado en el storage
|
|
|
- $doc->storeAs('public/pdf_documents', $name_document);
|
|
|
+ $subArr = DB::table('S002V01TPERS')->where('PERS_NULI', '=', $form['linea'])->where(function(Builder $query) use ($form, $idUserReg) {
|
|
|
+ $query->where('PERS_IDUS', '=', $idUserReg)
|
|
|
+ ->orWhere('PERS_XRFC', '=', $form['RFC']);
|
|
|
+ })->where('PERS_ESTA', '=', 'Activo')->get()->all();
|
|
|
|
|
|
+ if(count($subArr) > 0){
|
|
|
+ return $this->responseController->makeResponse(true, 'La razón social, el RFC o el correo electrónico ya fueron registrados.', [], 401);
|
|
|
+ }
|
|
|
|
|
|
+ $ladasValues = [];
|
|
|
+ $ladas = DB::table('S002V01TPAIS')->select([
|
|
|
+ 'PAIS_LADA AS LADA'
|
|
|
+ ])->where('PAIS_NULI', '=', $form['linea'])->get()->all();
|
|
|
|
|
|
+ foreach($ladas as $lada){
|
|
|
+ if($lada->LADA != '' && $lada->LADA != '0'){
|
|
|
+ $ladasValues[] = $lada->LADA;
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- // Verifica si el objeto esta vacio
|
|
|
- if (isset($request->DOCUMENTS_AUTHO2) && !empty($request->DOCUMENTS_AUTHO2)) {
|
|
|
- $doc = $request->DOCUMENTS_AUTHO2;
|
|
|
-
|
|
|
- // Se obtiene el nombre del archivo con su extensión
|
|
|
- $completeFileName = $doc->getClientOriginalName();
|
|
|
- // Se obtiene únicamente el nombre
|
|
|
- $fileNameOnly = pathinfo($completeFileName, PATHINFO_FILENAME) . '-' . $employee_id;
|
|
|
+ if($form['CONTACT_LADA'] == 'ENC_ERR'){
|
|
|
+ return $this->responseController->makeResponse(true, "La lada del contacto de emergencia no fue encriptada correctamente.", [], 400);
|
|
|
+ }else if(!in_array($form['CONTACT_LADA'], $ladasValues)){
|
|
|
+ return $this->responseController->makeResponse(true, "La lada $form[CONTACT_LADA] no está relacionada a ningún país.", [], 400);
|
|
|
+ }else if($form['CONTACT_TELEPHONE'] == 'ENC_ERR'){
|
|
|
+ return $this->responseController->makeResponse(true, 'El número telefónico del contacto de emergencia no fue encriptado correctamente.', [], 400);
|
|
|
+ }
|
|
|
|
|
|
- // Se obtiene la extensión del archivo
|
|
|
- $extension = $doc->getClientOriginalExtension();
|
|
|
- if ($extension != "pdf") {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_DOCUMENTO_REG008: Solo se permiten archivos PDF', [], 500);
|
|
|
- }
|
|
|
+ if($form['CONTACT_ADDRESS'] == 'ENC_ERR'){
|
|
|
+ return $this->responseController->makeResponse(true, "La dirección del contacto de emergencia no fue encriptada correctamente.", [], 400);
|
|
|
+ }
|
|
|
|
|
|
- // Se quitan los espacios y se concatena datos para ser guardado
|
|
|
- $final_part_name_document = str_replace(' ', '_', $fileNameOnly) . '.' . $extension;
|
|
|
+ if($form['CONTACT_NAME'] == 'ENC_ERR'){
|
|
|
+ return $this->responseController->makeResponse(true, "El nombre del contacto de emergencia no fue encriptada correctamente.", [], 400);
|
|
|
+ }
|
|
|
|
|
|
- $name_document = $this->documents_controller->createDocument(
|
|
|
- "GPRS",
|
|
|
- "IN",
|
|
|
- $final_part_name_document,
|
|
|
- $employee_id,
|
|
|
- 'pdf',
|
|
|
- $request->LINE_NUMBER,
|
|
|
- $request->SAVED_BY_USER
|
|
|
- );
|
|
|
+ $docsArr = json_decode($form['ATTACHED'], true);
|
|
|
+ if(count($docsArr) == 0){
|
|
|
+ return $this->responseController->makeResponse(true, "El arreglo de archivos adjuntos está vacío.", [], 400);
|
|
|
+ }
|
|
|
|
|
|
- // El documento es guardado en el storage
|
|
|
- $doc->storeAs('public/pdf_documents', $name_document);
|
|
|
+ $authCont = 0;
|
|
|
+ foreach($docsArr as $doc){
|
|
|
+ if($doc['type'] == 'AU') $authCont++;
|
|
|
+ }
|
|
|
|
|
|
+ if($authCont < 1){
|
|
|
+ return $this->responseController->makeResponse(true, "El arreglo de archivos adjuntos debe contener al menos un documento de autorización.", [], 400);
|
|
|
+ }
|
|
|
|
|
|
+ $finalDocsArr = [];
|
|
|
+ foreach($docsArr as $doc){
|
|
|
+ $idFileDec = $this->encryptionController->decrypt($doc['id']);
|
|
|
+ $tempFile = DB::table('S002V01TARTE')->where([
|
|
|
+ ['ARTE_NULI', '=', $form['linea']],
|
|
|
+ ['ARTE_IDAR', '=', $idFileDec],
|
|
|
+ ])->first();
|
|
|
|
|
|
+ if(is_null($tempFile)){
|
|
|
+ return $this->responseController->makeResponse(true, "El archivo $doc[name] no está registrado.", [], 404);
|
|
|
}
|
|
|
|
|
|
- // Verifica si el objeto esta vacio
|
|
|
- if (isset($request->DOCUMENTS_CERT) && !empty($request->DOCUMENTS_CERT)) {
|
|
|
- $doc = $request->DOCUMENTS_CERT;
|
|
|
-
|
|
|
- // Se obtiene el nombre del archivo con su extensión
|
|
|
- $completeFileName = $doc->getClientOriginalName();
|
|
|
- // Se obtiene únicamente el nombre
|
|
|
- $fileNameOnly = pathinfo($completeFileName, PATHINFO_FILENAME) . '-' . $employee_id;
|
|
|
-
|
|
|
- // Se obtiene la extensión del archivo
|
|
|
- $extension = $doc->getClientOriginalExtension();
|
|
|
- if ($extension != "pdf") {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_DOCUMENTO_REG009: Solo se permiten archivos PDF', [], 500);
|
|
|
- }
|
|
|
-
|
|
|
- // Se quitan los espacios y se concatena datos para ser guardado
|
|
|
- $final_part_name_document = str_replace(' ', '_', $fileNameOnly) . '.' . $extension;
|
|
|
-
|
|
|
- $name_document = $this->documents_controller->createDocument(
|
|
|
- "GPRS",
|
|
|
- "CE",
|
|
|
- $final_part_name_document,
|
|
|
- $employee_id,
|
|
|
- 'pdf',
|
|
|
- $request->LINE_NUMBER,
|
|
|
- $request->SAVED_BY_USER
|
|
|
- );
|
|
|
-
|
|
|
- // El documento es guardado en el storage
|
|
|
- $doc->storeAs('public/pdf_documents', $name_document);
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+ $classifications = ["AU" => "IN", "OF" => "CO", "CE" => "CE"];
|
|
|
+ $cldo = $classifications[$doc['type']];
|
|
|
+ $finalFile = $this->documentManagementController->moveFinalFile($form['linea'], "GPRS", $cldo, $tempFile, $idUser);
|
|
|
+
|
|
|
+ if(!$finalFile[0]){
|
|
|
+ return $this->responseController->makeResponse(true, $finalFile[1], [], 400);
|
|
|
+ }else{
|
|
|
+ $finalDocsArr[] = [
|
|
|
+ 'CODE' => $finalFile[1],
|
|
|
+ 'TYPE' => $doc['type']
|
|
|
+ ];
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- // Verifica si el objeto esta vacio
|
|
|
- if (isset($request->DOCUMENTS_CERT2) && !empty($request->DOCUMENTS_CERT2)) {
|
|
|
- $doc = $request->DOCUMENTS_CERT2;
|
|
|
-
|
|
|
- // Se obtiene el nombre del archivo con su extensión
|
|
|
- $completeFileName = $doc->getClientOriginalName();
|
|
|
- // Se obtiene únicamente el nombre
|
|
|
- $fileNameOnly = pathinfo($completeFileName, PATHINFO_FILENAME) . '-' . $employee_id;
|
|
|
-
|
|
|
- // Se obtiene la extensión del archivo
|
|
|
- $extension = $doc->getClientOriginalExtension();
|
|
|
- if ($extension != "pdf") {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_DOCUMENTO_REG010: Solo se permiten archivos PDF', [], 500);
|
|
|
- }
|
|
|
-
|
|
|
- // Se quitan los espacios y se concatena datos para ser guardado
|
|
|
- $final_part_name_document = str_replace(' ', '_', $fileNameOnly) . '.' . $extension;
|
|
|
-
|
|
|
- $name_document = $this->documents_controller->createDocument(
|
|
|
- "GPRS",
|
|
|
- "CE",
|
|
|
- $final_part_name_document,
|
|
|
- $employee_id,
|
|
|
- 'pdf',
|
|
|
- $request->LINE_NUMBER,
|
|
|
- $request->SAVED_BY_USER
|
|
|
- );
|
|
|
-
|
|
|
- // El documento es guardado en el storage
|
|
|
- $doc->storeAs('public/pdf_documents', $name_document);
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- }
|
|
|
+ $now = $this->functionsController->now();
|
|
|
+ $nowStr = $now->toDateTimeString();
|
|
|
+ $doas = json_encode($finalDocsArr);
|
|
|
+ $nuin = isset($form['INTERIOR_NUMBER']) ? $form['INTERIOR_NUMBER'] : null;
|
|
|
+ $employeeID = DB::table('S002V01TPERS')->insertGetId([
|
|
|
+ 'PERS_NULI' => $form['linea'],
|
|
|
+ 'PERS_IDUS' => $idUserReg,
|
|
|
+ 'PERS_EQTR' => $idTeam,
|
|
|
+ 'PERS_TICO' => $form['CONTRACT_TYPE'],
|
|
|
+ 'PERS_IDPS' => $idSubcontratist,
|
|
|
+ 'PERS_ESPE' => $form['SPECIALITY'],
|
|
|
+ 'PERS_EXTR' => $form['FOREIGNER'],
|
|
|
+ 'PERS_XRFC' => $rfcx,
|
|
|
+ 'PERS_TAID' => $taid,
|
|
|
+ 'PERS_IDPA' => $form['COUNTRY'],
|
|
|
+ 'PERS_ENFE' => $form['FEDERAL_ENTITY'],
|
|
|
+ 'PERS_CIUD' => $ciud,
|
|
|
+ 'PERS_LOCA' => $loca,
|
|
|
+ 'PERS_COLO' => $colo,
|
|
|
+ 'PERS_COPO' => $form['POSTAL_CODE'],
|
|
|
+ 'PERS_CALL' => $form['STREET'],
|
|
|
+ 'PERS_NUEX' => $form['EXTERIOR_NUMBER'],
|
|
|
+ 'PERS_NUIN' => $nuin,
|
|
|
+ 'PERS_NOCE' => $form['CONTACT_NAME'],
|
|
|
+ 'PERS_LCEM' => $form['CONTACT_LADA'],
|
|
|
+ 'PERS_NUTC' => $form['CONTACT_TELEPHONE'],
|
|
|
+ 'PERS_DCEM' => $form['CONTACT_ADDRESS'],
|
|
|
+ 'PERS_DOAS' => $doas,
|
|
|
+ 'PERS_USRE' => $idUser,
|
|
|
+ 'PERS_FERE' => $nowStr,
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $actions = DB::getQueryLog();
|
|
|
+ $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
|
|
|
+ $nameEmp = $this->functionsController->joinName($usrReg->USUA_NOMB, $usrReg->USUA_APPA, $usrReg->USUA_APMA);
|
|
|
+
|
|
|
+ $idac = $this->functionsController->registerActivity(
|
|
|
+ $form['linea'],
|
|
|
+ 'S002V01M11GPRS',
|
|
|
+ 'S002V01F01GEPE',
|
|
|
+ 'S002V01P02REEM',
|
|
|
+ 'Registro',
|
|
|
+ "El usuario $name (" . $usr->USUA_IDUS . ") registró al empleado " . $nameEmp . "($employeeID).",
|
|
|
+ $idUser,
|
|
|
+ $nowStr,
|
|
|
+ 'S002V01S02GEPE'
|
|
|
+ );
|
|
|
+
|
|
|
+ $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $form['linea']);
|
|
|
+ return $this->responseController->makeResponse(false, 'EXITO');
|
|
|
+ }
|
|
|
|
|
|
- // Verifica si el objeto esta vacio
|
|
|
- if (isset($request->DOCUMENT_OFFICE) && !empty($request->DOCUMENT_OFFICE)) {
|
|
|
- $doc = $request->DOCUMENT_OFFICE;
|
|
|
+ public function getEmployeeById($idEmployee, $idUser, $line) {
|
|
|
+ DB::enableQueryLog();
|
|
|
|
|
|
- // Se obtiene el nombre del archivo con su extensión
|
|
|
- $completeFileName = $doc->getClientOriginalName();
|
|
|
- // Se obtiene únicamente el nombre
|
|
|
- $fileNameOnly = pathinfo($completeFileName, PATHINFO_FILENAME) . '-' . $employee_id;
|
|
|
+ $idUser = $this->encryptionController->decrypt($idUser);
|
|
|
+ if(!$idUser){
|
|
|
+ return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la solicitud no está encriptado correctamente', [], 400);
|
|
|
+ }
|
|
|
|
|
|
- // Se obtiene la extensión del archivo
|
|
|
- $extension = $doc->getClientOriginalExtension();
|
|
|
- if ($extension != "pdf") {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_DOCUMENTO_REG011: Solo se permiten archivos PDF', [], 500);
|
|
|
- }
|
|
|
+ $usr = DB::table('S002V01TUSUA')->where([
|
|
|
+ ['USUA_NULI', '=', $line],
|
|
|
+ ['USUA_IDUS', '=', $idUser],
|
|
|
+ ])->first();
|
|
|
|
|
|
- // Se quitan los espacios y se concatena datos para ser guardado
|
|
|
- $final_part_name_document = str_replace(' ', '_', $fileNameOnly) . '.' . $extension;
|
|
|
+ if(is_null($usr)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
|
|
|
+ }
|
|
|
|
|
|
- $name_document = $this->documents_controller->createDocument(
|
|
|
- "GPRS",
|
|
|
- "CO",
|
|
|
- $final_part_name_document,
|
|
|
- $employee_id,
|
|
|
- 'pdf',
|
|
|
- $request->LINE_NUMBER,
|
|
|
- $request->SAVED_BY_USER
|
|
|
- );
|
|
|
+ $idEmployee = $this->encryptionController->decrypt($idEmployee);
|
|
|
+ if(!$idEmployee){
|
|
|
+ return $this->responseController->makeResponse(true, 'El ID del empleado solicitado no está encriptado correctamente', [], 400);
|
|
|
+ }
|
|
|
|
|
|
- // El documento es guardado en el storage
|
|
|
- $doc->storeAs('public/pdf_documents', $name_document);
|
|
|
+ $employee = DB::table('S002V01TPERS')->select([
|
|
|
+ 'PERS_IDPE AS ID_EMPLOYEE',
|
|
|
+ DB::raw('TRIM(CONCAT(USUA_NOMB, " " , USUA_APPA, " ", COALESCE(USUA_APMA,""))) as EMPLOYEE_NAME'),
|
|
|
+ 'PERS_IDUS AS USER_ID',
|
|
|
+ 'EQMA_IDEQ AS WORKTEAM_ID',
|
|
|
+ 'EQMA_NOMB AS WORKTEAM_NAME',
|
|
|
+ 'PERS_TICO AS CONTRACT_TYPE',
|
|
|
+ 'PERS_IDPS AS SUBCONTRATIST_ID',
|
|
|
+ 'PESU_RASO AS SUBCONTRATIST_NAME',
|
|
|
+ 'PESU_REFI AS TAX_REGIME',
|
|
|
+ 'REFI_DRFI AS TAX_REGIME_DESCRIPTION',
|
|
|
+ 'PERS_ESPE AS SPECIALITY',
|
|
|
+ 'PERS_EXTR AS FOREIGNER',
|
|
|
+ 'PERS_XRFC AS RFC',
|
|
|
+ 'PERS_TAID AS TAX_ID',
|
|
|
+ 'PERS_IDPA AS COUNTRY',
|
|
|
+ 'PERS_ENFE AS STATE',
|
|
|
+ 'PERS_CIUD AS CITY',
|
|
|
+ 'PERS_LOCA AS TOWN',
|
|
|
+ 'PERS_COLO AS SETTING',
|
|
|
+ 'PERS_COPO AS ZIP_CODE',
|
|
|
+ 'PERS_CALL AS STREET',
|
|
|
+ 'PERS_NUEX AS EXTERIOR_NUMBER',
|
|
|
+ 'PERS_NUIN AS INTERIOR_NUMBER',
|
|
|
+ 'PERS_NOCE AS CONTACT_NAME',
|
|
|
+ 'PERS_LCEM AS CONTACT_LADA',
|
|
|
+ 'PERS_NUTC AS CONTACT_TELEPHONE',
|
|
|
+ 'PERS_DCEM AS CONTACT_ADDRESS',
|
|
|
+ 'PERS_DOAS AS DOCUMENTS',
|
|
|
+ 'PERS_ESTA AS STATUS',
|
|
|
+ 'PERS_USRE AS USRREG',
|
|
|
+ 'PERS_USMO AS USRMOD',
|
|
|
+ 'PERS_FERE AS FECREG',
|
|
|
+ 'PERS_FEMO AS FECMOD',
|
|
|
+ ])->leftJoin('S002V01TEQMA', 'EQMA_IDEQ', '=', 'PERS_EQTR')
|
|
|
+ ->leftJoin('S002V01TPESU', 'PESU_IDPS', '=', 'PERS_IDPS')
|
|
|
+ ->leftJoin('S002V01TREFI', 'REFI_CRFI', '=', 'PESU_REFI')
|
|
|
+ ->join('S002V01TUSUA', 'PERS_IDUS', '=', 'USUA_IDUS')->where([
|
|
|
+ ['PERS_NULI', '=', $line],
|
|
|
+ ['PERS_IDPE', '=', $idEmployee],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ $attached = [];
|
|
|
+ $docsArr = json_decode($employee->DOCUMENTS, true);
|
|
|
+ foreach($docsArr as $doc){
|
|
|
+ $docArr = explode('=', $doc['CODE']);
|
|
|
+ $codeArr = explode('-', $docArr[0]);
|
|
|
+
|
|
|
+ $document = DB::table('S002V01TAFAL')->select([
|
|
|
+ 'AFAL_NOAR AS FILE_NAME',
|
|
|
+ 'AFAL_EXTE AS FILE_EXTENSION',
|
|
|
+ 'AFAL_TAMA AS FILE_SIZE',
|
|
|
+ 'AFAL_ESTA AS FILE_STATUS'
|
|
|
+ ])->where([
|
|
|
+ ['AFAL_NULI', '=', $line],
|
|
|
+ ['AFAL_COMO', '=', $codeArr[1]],
|
|
|
+ ['AFAL_CLDO', '=', $codeArr[2]],
|
|
|
+ ['AFAL_FECR', '=', $codeArr[3]],
|
|
|
+ ['AFAL_NUSE', '=', $codeArr[4]],
|
|
|
+ ['AFAL_NUVE', '=', $docArr[1]],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ $document->FILE_ID = $this->encryptionController->encrypt($doc['CODE']);
|
|
|
+ $document->FILE_TYPE = $doc['TYPE'];
|
|
|
+ $attached[] = $document;
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
+ $employee->DOCUMENTS = json_encode($attached);
|
|
|
+ $country = DB::table('S002V01TPAIS')->where([
|
|
|
+ ['PAIS_NULI', '=', $line],
|
|
|
+ ['PAIS_IDPA', '=', $employee->COUNTRY]
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ $state = DB::table('S002V01TESTA')->where([
|
|
|
+ ['ESTA_NULI', '=', $line],
|
|
|
+ ['ESTA_COES', '=', $employee->STATE],
|
|
|
+ ['ESTA_COPA', '=', $employee->COUNTRY]
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ $city = DB::table('S002V01TMUNI')->where([
|
|
|
+ ['MUNI_NULI', '=', $line],
|
|
|
+ ['MUNI_COMU', '=', $employee->CITY],
|
|
|
+ ['MUNI_COES', '=', $employee->STATE],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ $town = DB::table('S002V01TLOCA')->where([
|
|
|
+ ['LOCA_NULI', '=', $line],
|
|
|
+ ['LOCA_COLO', '=', $employee->TOWN],
|
|
|
+ ['LOCA_COES', '=', $employee->STATE],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ $setting = DB::table('S002V01TCOLO')->where([
|
|
|
+ ['COLO_NULI', '=', $line],
|
|
|
+ ['COLO_COCO', '=', $employee->SETTING],
|
|
|
+ ['COLO_COPO', '=', $employee->ZIP_CODE],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ $employee->COUNTRY = $country->PAIS_NOMB . " (" . $employee->COUNTRY . ")";
|
|
|
+ $employee->STATE = is_null($state) ? $employee->STATE : $state->ESTA_NOES . " (" . $employee->STATE . ")";
|
|
|
+ $employee->CITY = is_null($city) ? $employee->CITY : $city->MUNI_NOMU . " (" . $employee->CITY . ")";
|
|
|
+ $employee->TOWN = is_null($town) ? $employee->TOWN : $town->LOCA_NOLO . " (" . $employee->TOWN . ")";
|
|
|
+ $employee->SETTING = is_null($setting) ? $employee->SETTING : $setting->COLO_NOCO . " (" . $employee->SETTING . ")";
|
|
|
+
|
|
|
+ $usrReg = DB::table('S002V01TUSUA')->where([
|
|
|
+ ['USUA_NULI', '=', $line],
|
|
|
+ ['USUA_IDUS', '=', $employee->USRREG]
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ $nameReg = $this->functionsController->joinName($usrReg->USUA_NOMB, $usrReg->USUA_APPA, $usrReg->USUA_APMA);
|
|
|
+ $employee->USRREG = "$nameReg (" . $employee->USRREG . ")";
|
|
|
+
|
|
|
+ if(!is_null($employee->USRMOD)){
|
|
|
+ $usrMod = DB::table('S002V01TUSUA')->where([
|
|
|
+ ['USUA_NULI', '=', $line],
|
|
|
+ ['USUA_IDUS', '=', $employee->USRMOD]
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ $nameMod = $this->functionsController->joinName($usrMod->USUA_NOMB, $usrMod->USUA_APPA, $usrMod->USUA_APMA);
|
|
|
+ $employee->USRMOD = "$nameMod (" . $employee->USRMOD . ")";
|
|
|
+ }
|
|
|
|
|
|
- DB::commit(); # Para guardar los cambios en la base de datos
|
|
|
- return $this->response_controller->makeResponse(FALSE, 'Creación exitosa', 200);
|
|
|
+ $now = $this->functionsController->now();
|
|
|
+ $nowStr = $now->toDateTimeString();
|
|
|
+ $actions = DB::getQueryLog();
|
|
|
+ $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
|
|
|
+
|
|
|
+ $idac = $this->functionsController->registerActivity(
|
|
|
+ $line,
|
|
|
+ 'S002V01M11GPRS',
|
|
|
+ 'S002V01F01GEPE',
|
|
|
+ 'S002V01P03DEEM',
|
|
|
+ 'Consulta',
|
|
|
+ "El usuario $name (" . $usr->USUA_IDUS . ") consultó al empleado " . $employee->EMPLOYEE_NAME . " ($idEmployee).",
|
|
|
+ $idUser,
|
|
|
+ $nowStr,
|
|
|
+ 'S002V01S02GEPE'
|
|
|
+ );
|
|
|
+
|
|
|
+ $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
|
|
|
+ return $this->responseController->makeResponse(false, 'EXITO', $employee);
|
|
|
+ }
|
|
|
|
|
|
- } catch (Throwable $th) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_PERSONAL_REG012: Error inesperado', strtoupper($th), 500);
|
|
|
+ public function updateEmployee(Request $request) {
|
|
|
+ DB::enableQueryLog();
|
|
|
+
|
|
|
+ $request['RFC'] = $this->encryptionController->decrypt($request->RFC) ? $this->encryptionController->decrypt($request->RFC) : 'ENC_ERR';
|
|
|
+ $request['TAX'] = $this->encryptionController->decrypt($request->TAX) ? $this->encryptionController->decrypt($request->TAX) : 'ENC_ERR';
|
|
|
+ $request['CONTACT_NAME'] = $this->encryptionController->decrypt($request->CONTACT_NAME) ? $this->encryptionController->decrypt($request->CONTACT_NAME) : 'ENC_ERR';
|
|
|
+ $request['CONTACT_TELEPHONE'] = $this->encryptionController->decrypt($request->CONTACT_TELEPHONE) ? $this->encryptionController->decrypt($request->CONTACT_TELEPHONE) : 'ENC_ERR';
|
|
|
+ $request['CONTACT_LADA'] = $this->encryptionController->decrypt($request->CONTACT_LADA) ? $this->encryptionController->decrypt($request->CONTACT_LADA) : 'ENC_ERR';
|
|
|
+ $request['CONTACT_ADDRESS'] = $this->encryptionController->decrypt($request->CONTACT_ADDRESS) ? $this->encryptionController->decrypt($request->CONTACT_ADDRESS) : 'ENC_ERR';
|
|
|
+
|
|
|
+ $validator = Validator::make($request->all(), [
|
|
|
+ 'id_user' => 'required|string',
|
|
|
+ 'linea' => 'required|integer',
|
|
|
+ 'id_employee' => 'required|string',
|
|
|
+ 'USER_ID' => 'required|string',
|
|
|
+ 'WORKTEAM_ID' => 'required|string',
|
|
|
+ 'CONTRACT_TYPE' => 'required|string|in:Subcontratista,Interno',
|
|
|
+ 'SUBCONTRATIST_ID' => 'required_if:CONTRACT_TYPE,=,Subcontratista|string',
|
|
|
+ 'SPECIALITY' => 'required|string|max:75',
|
|
|
+ 'FOREIGNER' => 'required|string|in:Si,No',
|
|
|
+ 'RFC' => 'required_if:FOREIGNER,=,No|string|max:13',
|
|
|
+ 'TAX' => 'required_if:FOREIGNER,=,Si|string|max:13',
|
|
|
+ 'COUNTRY' => 'required|string|max:75',
|
|
|
+ 'FEDERAL_ENTITY' => 'required|string|max:75',
|
|
|
+ 'CITY' => 'string|max:75',
|
|
|
+ 'TOWN' => 'string|max:75',
|
|
|
+ 'SUBURB' => 'required|string|max:75',
|
|
|
+ 'POSTAL_CODE' => 'required|string|max:5',
|
|
|
+ 'STREET' => 'required|string|max:150',
|
|
|
+ 'EXTERIOR_NUMBER' => 'required|integer',
|
|
|
+ 'INTERIOR_NUMBER' => 'integer',
|
|
|
+ 'CONTACT_NAME' => 'required|string|max:150',
|
|
|
+ 'CONTACT_LADA' => 'required|string|max:10',
|
|
|
+ 'CONTACT_TELEPHONE' => 'required|string|max:11',
|
|
|
+ 'CONTACT_ADDRESS' => 'required|string|max:250',
|
|
|
+ 'ATTACHED' => 'required|json',
|
|
|
+ ]);
|
|
|
+
|
|
|
+ if($validator->fails()){
|
|
|
+ return $this->responseController->makeResponse(
|
|
|
+ TRUE,
|
|
|
+ 'ERR_PERSONAL_REG001: Uno o más errores encontrados',
|
|
|
+ $this->responseController->makeErrors($validator->errors()->messages()),
|
|
|
+ 400
|
|
|
+ );
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- // Metodo para obtener un empleado por id con sus documentos (Pensado: 1 empleado solo tiene un equipo de trabajo)
|
|
|
- public function getEmployeeById($id_employee, $line_number)
|
|
|
- {
|
|
|
- try {
|
|
|
-
|
|
|
- $employee = DB::table('S002V01TPERS')
|
|
|
- ->select(
|
|
|
- 'S002V01TPERS.PERS_IDPE as ID_EMPLOYEE',
|
|
|
- 'S002V01TPERS.PERS_IDUS as USER_ID',
|
|
|
- 'S002V01TEQMA.EQMA_IDEQ as WORKTEAM_ID',
|
|
|
- 'S002V01TPERS.PERS_IDPS as SUBCONTRATIST_ID',
|
|
|
- 'S002V01TEQMA.EQMA_NOMB as WORKTEAM_NAME',
|
|
|
- 'S002V01TPERS.PERS_NOCE as CONTACT_NAME',
|
|
|
- 'S002V01TPERS.PERS_NUTC as CONTACT_TELEPHONE',
|
|
|
- 'S002V01TPERS.PERS_LATC as CONTACT_LADA',
|
|
|
- 'S002V01TPERS.PERS_DICE as CONTACT_ADDRESS',
|
|
|
- 'S002V01TPERS.PERS_TICO as CONTRACT_TYPE',
|
|
|
- 'S002V01TPERS.PERS_ESPE as SPECIALITY',
|
|
|
- 'S002V01TPERS.PERS_NULI as LINE_NUMBER',
|
|
|
- DB::raw('TRIM(CONCAT(S002V01TUSUA.USUA_NOMB, " " , S002V01TUSUA.USUA_APPA, " ", COALESCE(S002V01TUSUA.USUA_APMA,""))) as EMPLOYEE_NAME')
|
|
|
- )
|
|
|
- ->where('S002V01TPERS.PERS_IDPE', '=', $id_employee)
|
|
|
- ->where('S002V01TPERS.PERS_NULI', '=', $line_number)
|
|
|
- ->where('s002v01TPEEM.PEEM_NULI', '=', $line_number)
|
|
|
- ->where('s002v01TEQMA.EQMA_NULI', '=', $line_number)
|
|
|
- ->where('s002v01TUSUA.USUA_NULI', '=', $line_number)
|
|
|
- ->join('S002V01TPEEM', 'S002V01TPERS.PERS_IDPE', '=', 'S002V01TPEEM.PEEM_IDPE')
|
|
|
- ->join('S002V01TEQMA', 'S002V01TPEEM.PEEM_IDEM', '=', 'S002V01TEQMA.EQMA_IDEQ')
|
|
|
- ->join('S002V01TUSUA', 'S002V01TPERS.PERS_IDUS', '=', 'S002V01TUSUA.USUA_IDUS')
|
|
|
- ->first();
|
|
|
-
|
|
|
- // Verifica si el objeto esta vacio
|
|
|
- if (!isset($employee) && empty($employee)) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_PERSONAL_REG001: No se encontró al empleado', [], 500);
|
|
|
+ $form = $request->all();
|
|
|
+ foreach($form as $k=>$v){
|
|
|
+ if($k == 'INTERIOR_NUMBER' && $v == '0'){
|
|
|
+ unset($form[$k]);
|
|
|
+ }else if($v == '-'){
|
|
|
+ unset($form[$k]);
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- $employee->CONTACT_NAME = $this->encrypt_controller->encrypt($employee->CONTACT_NAME);
|
|
|
- $employee->CONTACT_TELEPHONE = $this->encrypt_controller->encrypt($employee->CONTACT_TELEPHONE);
|
|
|
- $employee->CONTACT_LADA = $this->encrypt_controller->encrypt($employee->CONTACT_LADA);
|
|
|
- $employee->CONTACT_ADDRESS = $this->encrypt_controller->encrypt($employee->CONTACT_ADDRESS);
|
|
|
-
|
|
|
- $employee->DOCUMENTS = [];
|
|
|
-
|
|
|
- // Obtiene los documentos de un empleado
|
|
|
- $documents_of_employee = DB::table('S002V01TDOCU_P')
|
|
|
- ->select('DOCU_LIDO as DOCUMENT')
|
|
|
- ->where('DOCU_IDPE', '=', $id_employee)
|
|
|
- ->where('DOCU_NULI', '=', $line_number)
|
|
|
- ->get();
|
|
|
+ $idUser = $this->encryptionController->decrypt($form['id_user']);
|
|
|
+ if(!$idUser){
|
|
|
+ return $this->responseController->makeResponse(true, 'El ID de usuario no fue encriptado correctamente.', [], 400);
|
|
|
+ }
|
|
|
|
|
|
- // Verifica si el objeto contiene algo
|
|
|
- if (isset($documents_of_employee[0]) && !empty($documents_of_employee[0])) {
|
|
|
- foreach ($documents_of_employee as $doc) {
|
|
|
- $employee->DOCUMENTS[] = $this->encrypt_controller->encrypt($doc->DOCUMENT);
|
|
|
- }
|
|
|
- }
|
|
|
+ $usr = DB::table('S002V01TUSUA')->where([
|
|
|
+ ['USUA_NULI', '=', $form['linea']],
|
|
|
+ ['USUA_IDUS', '=', $idUser]
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($usr)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El usuario que realizó la petición no existe.', [], 404);
|
|
|
+ }
|
|
|
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(FALSE, "Consulta exitosa", $employee);
|
|
|
+ $idEmployee = $this->encryptionController->decrypt($form['id_employee']);
|
|
|
+ if(!$idEmployee){
|
|
|
+ return $this->responseController->makeResponse(true, 'El ID del empleado que desea actualizar no fue encriptado correctamente.', [], 400);
|
|
|
+ }
|
|
|
|
|
|
+ $employee = DB::table('S002V01TPERS')->where([
|
|
|
+ ['PERS_NULI', '=', $form['linea']],
|
|
|
+ ['PERS_IDPE', '=', $idEmployee]
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($employee)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El empleado que desea actualizar no existe.', [], 404);
|
|
|
+ }
|
|
|
|
|
|
- } catch (Throwable $th) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_PERSONAL_REG002: Error inesperado', strtoupper($th->getMessage()), 500);
|
|
|
+ $idUserReg = $this->encryptionController->decrypt($form['USER_ID']);
|
|
|
+ if(!$idUserReg){
|
|
|
+ return $this->responseController->makeResponse(true, 'El ID del usuario seleccionado no fue encriptado correctamente.', [], 400);
|
|
|
+ }else if($idUser == $idUserReg){
|
|
|
+ return $this->responseController->makeResponse(true, 'El usuario no puede registrarse a sí mismo.', [], 400);
|
|
|
+ }
|
|
|
+
|
|
|
+ $usrReg = DB::table('S002V01TUSUA')->where([
|
|
|
+ ['USUA_NULI', '=', $form['linea']],
|
|
|
+ ['USUA_IDUS', '=', $idUserReg]
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($usrReg)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El usuario seleccionado no existe.', [], 404);
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- // Metodo para obtener todos los empleados con sus documentos (Pensado: 1 empleado solo tiene un equipo de trabajo)
|
|
|
- public function getAllEmployees($line_number)
|
|
|
- {
|
|
|
- try {
|
|
|
-
|
|
|
- $employees = DB::table('S002V01TPERS')
|
|
|
- ->select(
|
|
|
- 'S002V01TPERS.PERS_IDPE as EMPLOYEE_ID',
|
|
|
- 'S002V01TPERS.PERS_IDUS as USER_ID',
|
|
|
- 'S002V01TEQMA.EQMA_IDEQ as WORKTEAM_ID',
|
|
|
- 'S002V01TPERS.PERS_NOCE as CONTACT_NAME',
|
|
|
- 'S002V01TPERS.PERS_NUTC as CONTACT_TELEPHONE',
|
|
|
- 'S002V01TPERS.PERS_LATC as CONTACT_LADA',
|
|
|
- 'S002V01TPERS.PERS_DICE as CONTACT_ADDRESS',
|
|
|
- 'S002V01TPERS.PERS_TICO as CONTRACT_TYPE',
|
|
|
- 'S002V01TPERS.PERS_ESPE as SPECIALITY',
|
|
|
- )
|
|
|
- ->where('S002V01TPERS.PERS_NULI', '=', $line_number)
|
|
|
- ->where('S002V01TPEEM.PEEM_NULI', '=', $line_number)
|
|
|
- ->where('S002V01TEQMA.EQMA_NULI', '=', $line_number)
|
|
|
- ->join('S002V01TPEEM', 'S002V01TPERS.PERS_IDPE', '=', 'S002V01TPEEM.PEEM_IDPE')
|
|
|
- ->join('S002V01TEQMA', 'S002V01TPEEM.PEEM_IDEM', '=', 'S002V01TEQMA.EQMA_IDEQ')
|
|
|
- ->get();
|
|
|
-
|
|
|
- foreach ($employees as $employee) {
|
|
|
- $employee->CONTACT_NAME = $this->encrypt_controller->encrypt($employee->CONTACT_NAME);
|
|
|
- $employee->CONTACT_TELEPHONE = $this->encrypt_controller->encrypt($employee->CONTACT_TELEPHONE);
|
|
|
- $employee->CONTACT_LADA = $this->encrypt_controller->encrypt($employee->CONTACT_LADA);
|
|
|
- $employee->CONTACT_ADDRESS = $this->encrypt_controller->encrypt($employee->CONTACT_ADDRESS);
|
|
|
- $employee->DOCUMENTS = [];
|
|
|
+ $idTeam = null;
|
|
|
+ if(isset($form['WORKTEAM_ID'])){
|
|
|
+ $idTeam = $this->encryptionController->decrypt($form['WORKTEAM_ID']);
|
|
|
+ if(!$idTeam){
|
|
|
+ return $this->responseController->makeResponse(true, 'El ID del equipo seleccionado encriptado correctamente.', [], 400);
|
|
|
}
|
|
|
|
|
|
- // Obtiene los documentos
|
|
|
- $documents_of_employees = DB::table('S002V01TDOCU_P')
|
|
|
- ->select('DOCU_LIDO as DOCUMENT', 'DOCU_IDPE as EMPLOYEE_ID')
|
|
|
- ->where('DOCU_NULI', '=', $line_number)
|
|
|
- ->get();
|
|
|
-
|
|
|
- // Verifica si el objeto esta vacio
|
|
|
- if (isset($documents_of_employees[0]) && !empty($documents_of_employees[0])) {
|
|
|
-
|
|
|
- // Asigna al empleado los documentos que le pertenezcan
|
|
|
- foreach ($employees as $employee) {
|
|
|
- foreach ($documents_of_employees as $doc) {
|
|
|
- if ($employee->EMPLOYEE_ID == $doc->EMPLOYEE_ID) {
|
|
|
- $employee->DOCUMENTS[] = $this->encrypt_controller->encrypt($doc->DOCUMENT);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ $team = DB::table('S002V01TEQMA')->where([
|
|
|
+ ['EQMA_IDEQ', '=', $idTeam],
|
|
|
+ ['EQMA_NULI', '=', $form['linea']],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($team)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El equipo seleccionado no existe.', [], 404);
|
|
|
+ }else if($team->EQMA_ESTA == 'Eliminado'){
|
|
|
+ return $this->responseController->makeResponse(true, 'El equipo seleccionado está eliminado.', [], 404);
|
|
|
}
|
|
|
-
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(FALSE, "Consulta exitosa", $employees);
|
|
|
-
|
|
|
- } catch (Throwable $th) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_PERSONAL_REG001: Error inesperado', strtoupper($th->getMessage()), 500);
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
- // Metodo para actualizar un empleado
|
|
|
- public function updateEmployee(Request $request, $id_employee)
|
|
|
- {
|
|
|
-
|
|
|
- try {
|
|
|
- $save_option = $request->UPLOAD_NEW_DOCUMENTS != "N";
|
|
|
- $request['SAVED_BY_USER'] = $this->encrypt_controller->decrypt($request->SAVED_BY_USER);
|
|
|
- $UPDATE_DATE = Carbon::now()->timezone('America/Mexico_City')->toDateTimeString();
|
|
|
- $request['CONTACT_NAME'] = $this->encrypt_controller->decrypt($request->CONTACT_NAME);
|
|
|
- $request['CONTACT_TELEPHONE'] = $this->encrypt_controller->decrypt($request->CONTACT_TELEPHONE);
|
|
|
- $request['CONTACT_LADA'] = $this->encrypt_controller->decrypt($request->CONTACT_LADA);
|
|
|
- $request['CONTACT_ADDRESS'] = $this->encrypt_controller->decrypt($request->CONTACT_ADDRESS);
|
|
|
-
|
|
|
- $validator = Validator::make($request->all(), [
|
|
|
- "USER_ID" => ['required', 'digits:10'],
|
|
|
- "WORKTEAM_ID" => ['required', 'digits:10'],
|
|
|
- "CONTACT_NAME" => ['required', 'max:150'],
|
|
|
- "CONTACT_TELEPHONE" => ['required', 'max:11'],
|
|
|
- "CONTACT_LADA" => ['required', 'max:5'],
|
|
|
- "CONTACT_ADDRESS" => ['required', 'max:100'],
|
|
|
- "CONTRACT_TYPE" => ['required'],
|
|
|
- "SPECIALITY" => ['required', 'max:75'],
|
|
|
- "SUBCONTRATIST_ID" => ['max:10'],
|
|
|
- "SAVED_BY_USER" => ['required', 'digits:10'],
|
|
|
- "LINE_NUMBER" => ['required', 'digits:1']
|
|
|
- ]);
|
|
|
-
|
|
|
- if ($validator->fails()) {
|
|
|
- return $this->response_controller->makeResponse(
|
|
|
- TRUE,
|
|
|
- 'ERR_PERSONAL_REG001: Uno o más errores encontrados',
|
|
|
- $this->response_controller->makeErrors($validator->errors()->messages()),
|
|
|
- 400
|
|
|
- );
|
|
|
- }
|
|
|
|
|
|
- // Busca al empleado si existe
|
|
|
- $employee_exist = DB::table('S002V01TPERS')
|
|
|
- ->select('PERS_IDPE')
|
|
|
- ->where('PERS_IDPE', '=', $id_employee)
|
|
|
- ->where('PERS_NULI', '=', $request->LINE_NUMBER)
|
|
|
- ->first();
|
|
|
-
|
|
|
- // Verifica si el objeto esta vacio
|
|
|
- if (!isset($employee_exist) && empty($employee_exist)) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_PERSONAL_REG002: No se encontró al empleado', [], 500);
|
|
|
+ $idSubcontratist = null;
|
|
|
+ if(isset($form['SUBCONTRATIST_ID'])){
|
|
|
+ $idSubcontratist = $this->encryptionController->decrypt($form['SUBCONTRATIST_ID']);
|
|
|
+ if(!$idSubcontratist){
|
|
|
+ return $this->responseController->makeResponse(true, 'El ID del subcontratista seleccionado no fue encriptado correctamente.', [], 400);
|
|
|
}
|
|
|
|
|
|
- // Busca al equipo de trabajo si existe
|
|
|
- $team_found = DB::table('S002V01TEQMA')
|
|
|
- ->select('EQMA_NOMB')
|
|
|
- ->where('EQMA_IDEQ', '=', $request->WORKTEAM_ID)
|
|
|
- ->where('EQMA_NULI', '=', $request->LINE_NUMBER)
|
|
|
- ->first();
|
|
|
-
|
|
|
- // Verifica si el objeto esta vacio
|
|
|
- if (!isset($team_found) && empty($team_found)) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG003: No se encontró al equipo de trabajo', [], 500);
|
|
|
+ $subcontratist = DB::table('S002V01TPESU')->where([
|
|
|
+ ['PESU_IDPS', '=', $idSubcontratist],
|
|
|
+ ['PESU_NULI', '=', $form['linea']],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($subcontratist)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El subcontratista seleccionado no existe.', [], 404);
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- $user_register = DB::table('S002V01TUSUA')
|
|
|
- ->select('USUA_IDUS as ID_USER')
|
|
|
- ->where('USUA_IDUS', '=', $request->SAVED_BY_USER)
|
|
|
- ->where('USUA_NULI', '=', $request->LINE_NUMBER)
|
|
|
- ->first();
|
|
|
-
|
|
|
- // Verifica si el objeto esta vacio
|
|
|
- if (!isset($user_register) && empty($user_register)) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, "ERR_USUARIO_REG004: Tu usuario no es válido para actualizar empleados", [], 500);
|
|
|
- }
|
|
|
+ $rfcx = null;
|
|
|
+ if(isset($form['RFC']) && $form['FOREIGNER'] == 'No' && $form['RFC'] == 'ENC_ERR'){
|
|
|
+ return $this->responseController->makeResponse(true, 'El RFC no fue encriptado correctamente.', [], 400);
|
|
|
+ }else if(isset($form['RFC']) && $form['RFC'] != 'ENC_ERR'){
|
|
|
+ $rfcx = $form['RFC'];
|
|
|
+ }
|
|
|
|
|
|
- DB::beginTransaction(); # Para impedir que las actualizaciones queden incompletas
|
|
|
-
|
|
|
- $update_employee = DB::table('S002V01TPERS')
|
|
|
- ->where('PERS_IDPE', '=', $id_employee)
|
|
|
- ->where('PERS_NULI', '=', $request->LINE_NUMBER)
|
|
|
- ->update([
|
|
|
- "PERS_IDUS" => $request->USER_ID,
|
|
|
- "PERS_NOCE" => trim($request->CONTACT_NAME),
|
|
|
- "PERS_NUTC" => $request->CONTACT_TELEPHONE,
|
|
|
- "PERS_LATC" => $request->CONTACT_LADA,
|
|
|
- "PERS_DICE" => trim($request->CONTACT_ADDRESS),
|
|
|
- "PERS_TICO" => trim($request->CONTRACT_TYPE),
|
|
|
- "PERS_ESPE" => trim($request->SPECIALITY),
|
|
|
- "PERS_IDPS" => $request->SUBCONTRATIST_ID,
|
|
|
- "PERS_ESTA" => "Activo",
|
|
|
- "PERS_USMO" => $request->SAVED_BY_USER,
|
|
|
- "PERS_FEMO" => $UPDATE_DATE,
|
|
|
- "PERS_FEAR" => DB::raw('CURRENT_TIMESTAMP')
|
|
|
- ]);
|
|
|
-
|
|
|
- // Verifica que la actualización del empleado haya sido satisfactoria
|
|
|
- if ($update_employee < 1) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_PERSONAL_REG005: Algo salió mal, error actualizando al empleado', [], 500);
|
|
|
- }
|
|
|
+ $taid = null;
|
|
|
+ if(isset($form['TAX']) && $form['FOREIGNER'] == 'Si' && $form['TAX'] == 'ENC_ERR'){
|
|
|
+ return $this->responseController->makeResponse(true, 'El TAX ID no fue encriptado correctamente.', [], 400);
|
|
|
+ }else if(isset($form['TAX']) && $form['TAX'] != 'ENC_ERR'){
|
|
|
+ $taid = $form['TAX'];
|
|
|
+ }
|
|
|
+
|
|
|
+ $country = DB::table('S002V01TPAIS')->where([
|
|
|
+ ['PAIS_NULI', '=', $form['linea']],
|
|
|
+ ['PAIS_IDPA', '=', $form['COUNTRY']],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($country)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El país seleccionado no existe.', [], 404);
|
|
|
+ }
|
|
|
|
|
|
- $update_employee_on_workteam = DB::table('S002V01TPEEM')
|
|
|
- ->where('PEEM_IDPE', '=', $id_employee)
|
|
|
- ->where('PEEM_NULI', '=', $request->LINE_NUMBER)
|
|
|
- ->update([
|
|
|
- "PEEM_IDEM" => $request->WORKTEAM_ID,
|
|
|
- "PEEM_ESTA" => "Activo",
|
|
|
- "PEEM_USRE" => $request->SAVED_BY_USER,
|
|
|
- "PEEM_FERE" => $UPDATE_DATE,
|
|
|
- "PEEM_FEAR" => DB::raw('CURRENT_TIMESTAMP'),
|
|
|
- ]);
|
|
|
-
|
|
|
- // Verifica que la actualización del cambio de equipo del empleado haya sido satisfactoria
|
|
|
- if ($update_employee_on_workteam < 1) {
|
|
|
- DB::rollBack(); # Si no se logra actualizar el equipo, se revierten los cambios previos
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG006: Algo salió mal, error cambiando al empleado de equipo', [], 500);
|
|
|
+ $colo = null;
|
|
|
+ $ciud = null;
|
|
|
+ $loca = null;
|
|
|
+ if($form['COUNTRY'] == 'MEX' || $form['COUNTRY'] == 'USA' || $form['COUNTRY'] == 'CAN'){
|
|
|
+ $state = DB::table('S002V01TESTA')->where([
|
|
|
+ ['ESTA_NULI', '=', $form['linea']],
|
|
|
+ ['ESTA_COES', '=', $form['FEDERAL_ENTITY']],
|
|
|
+ ['ESTA_COPA', '=', $form['COUNTRY']],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($state)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El estado seleccionado no existe.', [], 404);
|
|
|
}
|
|
|
|
|
|
- // Verifica si el objeto esta vacio
|
|
|
- if (isset($request->DOCUMENTS_AUTHO) && !empty($request->DOCUMENTS_AUTHO)) {
|
|
|
- $doc = $request->DOCUMENTS_AUTHO;
|
|
|
-
|
|
|
- // Se obtiene el nombre del archivo con su extensión
|
|
|
- $completeFileName = $doc->getClientOriginalName();
|
|
|
- // Se obtiene únicamente el nombre
|
|
|
- $fileNameOnly = pathinfo($completeFileName, PATHINFO_FILENAME) . '-' . $id_employee;
|
|
|
-
|
|
|
- // Se obtiene la extensión del archivo
|
|
|
- $extension = $doc->getClientOriginalExtension();
|
|
|
- if ($extension != "pdf") {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_DOCUMENTO_REG007: Solo se permiten archivos PDF', [], 500);
|
|
|
+ if($form['COUNTRY'] == 'MEX'){
|
|
|
+ if(isset($form['CITY'])){
|
|
|
+ $city = DB::table('S002V01TMUNI')->where([
|
|
|
+ ['MUNI_NULI', '=', $form['linea']],
|
|
|
+ ['MUNI_COMU', '=', $form['CITY']],
|
|
|
+ ['MUNI_COES', '=', $form['FEDERAL_ENTITY']],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($city)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El municipio seleccionado no existe.', [], 404);
|
|
|
+ }else{
|
|
|
+ $ciud = $form['CITY'];
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- // Se quitan los espacios y se concatena datos para ser guardado
|
|
|
- $final_part_name_document = str_replace(' ', '_', $fileNameOnly) . '.' . $extension;
|
|
|
-
|
|
|
- $final_part_name_document = $this->documents_controller->deleteCodificationStructureName($final_part_name_document, "01", "GPRS");
|
|
|
-
|
|
|
- $name_document = $this->documents_controller->createDocument(
|
|
|
- "GPRS",
|
|
|
- "IN",
|
|
|
- $final_part_name_document,
|
|
|
- $id_employee,
|
|
|
- 'pdf',
|
|
|
- $request->LINE_NUMBER,
|
|
|
- $request->SAVED_BY_USER,
|
|
|
- $request->DOCUMENTS_AUTHO_UPDATE
|
|
|
- );
|
|
|
-
|
|
|
- // El documento es guardado en el storage
|
|
|
- $doc->storeAs('public/pdf_documents', $name_document);
|
|
|
-
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- // Verifica si el objeto esta vacio
|
|
|
- if (isset($request->DOCUMENTS_AUTHO2) && !empty($request->DOCUMENTS_AUTHO2)) {
|
|
|
- $doc = $request->DOCUMENTS_AUTHO2;
|
|
|
-
|
|
|
- // Se obtiene el nombre del archivo con su extensión
|
|
|
- $completeFileName = $doc->getClientOriginalName();
|
|
|
- // Se obtiene únicamente el nombre
|
|
|
- $fileNameOnly = pathinfo($completeFileName, PATHINFO_FILENAME) . '-' . $id_employee;
|
|
|
-
|
|
|
- // Se obtiene la extensión del archivo
|
|
|
- $extension = $doc->getClientOriginalExtension();
|
|
|
- if ($extension != "pdf") {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_DOCUMENTO_REG008: Solo se permiten archivos PDF', [], 500);
|
|
|
+ if(isset($form['TOWN'])){
|
|
|
+ $town = DB::table('S002V01TLOCA')->where([
|
|
|
+ ['LOCA_NULI', '=', $form['linea']],
|
|
|
+ ['LOCA_COLO', '=', $form['TOWN']],
|
|
|
+ ['LOCA_COES', '=', $form['FEDERAL_ENTITY']],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($town)){
|
|
|
+ return $this->responseController->makeResponse(true, 'La localidad seleccionada no existe.', [], 404);
|
|
|
+ }else{
|
|
|
+ $loca = $form['TOWN'];
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
- // Se quitan los espacios y se concatena datos para ser guardado
|
|
|
- $final_part_name_document = str_replace(' ', '_', $fileNameOnly) . '.' . $extension;
|
|
|
-
|
|
|
- $final_part_name_document = $this->documents_controller->deleteCodificationStructureName($final_part_name_document, "01", "GPRS");
|
|
|
-
|
|
|
- $name_document = $this->documents_controller->createDocument(
|
|
|
- "GPRS",
|
|
|
- "IN",
|
|
|
- $final_part_name_document,
|
|
|
- $id_employee,
|
|
|
- 'pdf',
|
|
|
- $request->LINE_NUMBER,
|
|
|
- $request->SAVED_BY_USER,
|
|
|
- $request->DOCUMENTS_AUTHO2_UPDATE
|
|
|
- );
|
|
|
-
|
|
|
- // El documento es guardado en el storage
|
|
|
- $doc->storeAs('public/pdf_documents', $name_document);
|
|
|
-
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- // Verifica si el objeto esta vacio
|
|
|
- if (isset($request->DOCUMENTS_CERT) && !empty($request->DOCUMENTS_CERT)) {
|
|
|
- $doc = $request->DOCUMENTS_CERT;
|
|
|
-
|
|
|
- // Se obtiene el nombre del archivo con su extensión
|
|
|
- $completeFileName = $doc->getClientOriginalName();
|
|
|
- // Se obtiene únicamente el nombre
|
|
|
- $fileNameOnly = pathinfo($completeFileName, PATHINFO_FILENAME) . '-' . $id_employee;
|
|
|
-
|
|
|
- // Se obtiene la extensión del archivo
|
|
|
- $extension = $doc->getClientOriginalExtension();
|
|
|
- if ($extension != "pdf") {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_DOCUMENTO_REG009: Solo se permiten archivos PDF', [], 500);
|
|
|
+
|
|
|
+ $setting = DB::table('S002V01TCOLO')->where([
|
|
|
+ ['COLO_NULI', '=', $form['linea']],
|
|
|
+ ['COLO_COCO', '=', $form['SUBURB']],
|
|
|
+ ['COLO_COPO', '=', $form['POSTAL_CODE']],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($setting)){
|
|
|
+ return $this->responseController->makeResponse(true, 'La colonia seleccionada no existe.', [], 404);
|
|
|
+ }else{
|
|
|
+ $colo = $form['SUBURB'];
|
|
|
}
|
|
|
-
|
|
|
- // Se quitan los espacios y se concatena datos para ser guardado
|
|
|
- $final_part_name_document = str_replace(' ', '_', $fileNameOnly) . '.' . $extension;
|
|
|
-
|
|
|
- $final_part_name_document = $this->documents_controller->deleteCodificationStructureName($final_part_name_document, "01", "GPRS");
|
|
|
-
|
|
|
- $name_document = $this->documents_controller->createDocument(
|
|
|
- "GPRS",
|
|
|
- "CE",
|
|
|
- $final_part_name_document,
|
|
|
- $id_employee,
|
|
|
- 'pdf',
|
|
|
- $request->LINE_NUMBER,
|
|
|
- $request->SAVED_BY_USER,
|
|
|
- $request->DOCUMENTS_CERT_UPDATE
|
|
|
- );
|
|
|
-
|
|
|
- // El documento es guardado en el storage
|
|
|
- $doc->storeAs('public/pdf_documents', $name_document);
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- // Verifica si el objeto esta vacio
|
|
|
- if (isset($request->DOCUMENTS_CERT2) && !empty($request->DOCUMENTS_CERT2)) {
|
|
|
- $doc = $request->DOCUMENTS_CERT2;
|
|
|
-
|
|
|
- // Se obtiene el nombre del archivo con su extensión
|
|
|
- $completeFileName = $doc->getClientOriginalName();
|
|
|
- // Se obtiene únicamente el nombre
|
|
|
- $fileNameOnly = pathinfo($completeFileName, PATHINFO_FILENAME) . '-' . $id_employee;
|
|
|
-
|
|
|
- // Se obtiene la extensión del archivo
|
|
|
- $extension = $doc->getClientOriginalExtension();
|
|
|
- if ($extension != "pdf") {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_DOCUMENTO_REG010: Solo se permiten archivos PDF', [], 500);
|
|
|
+
|
|
|
+ $zipCode = DB::table('S002V01TCOPO')->where([
|
|
|
+ ['COPO_NULI', '=', $form['linea']],
|
|
|
+ ['COPO_COPO', '=', $form['POSTAL_CODE']],
|
|
|
+ ['COPO_COES', '=', $form['FEDERAL_ENTITY']],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($zipCode)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El código postal seleccionado no existe.', [], 404);
|
|
|
}
|
|
|
-
|
|
|
- // Se quitan los espacios y se concatena datos para ser guardado
|
|
|
- $final_part_name_document = str_replace(' ', '_', $fileNameOnly) . '.' . $extension;
|
|
|
-
|
|
|
- $final_part_name_document = $this->documents_controller->deleteCodificationStructureName($final_part_name_document, "01", "GPRS");
|
|
|
-
|
|
|
- $name_document = $this->documents_controller->createDocument(
|
|
|
- "GPRS",
|
|
|
- "CE",
|
|
|
- $final_part_name_document,
|
|
|
- $id_employee,
|
|
|
- 'pdf',
|
|
|
- $request->LINE_NUMBER,
|
|
|
- $request->SAVED_BY_USER,
|
|
|
- $request->DOCUMENTS_CERT2_UPDATE
|
|
|
- );
|
|
|
-
|
|
|
- // El documento es guardado en el storage
|
|
|
- $doc->storeAs('public/pdf_documents', $name_document);
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+ }else{
|
|
|
+ $colo = $form['SUBURB'];
|
|
|
+ $ciud = $form['CITY'];
|
|
|
+ $loca = isset($form['TOWN']) ? $form['TOWN'] : null;
|
|
|
}
|
|
|
+ }else{
|
|
|
+ $colo = $form['SUBURB'];
|
|
|
+ $ciud = $form['CITY'];
|
|
|
+ $loca = isset($form['TOWN']) ? $form['TOWN'] : null;
|
|
|
+ }
|
|
|
|
|
|
- // Verifica si el objeto esta vacio
|
|
|
- if (isset($request->DOCUMENT_OFFICE) && !empty($request->DOCUMENT_OFFICE)) {
|
|
|
- $doc = $request->DOCUMENT_OFFICE;
|
|
|
-
|
|
|
- // Se obtiene el nombre del archivo con su extensión
|
|
|
- $completeFileName = $doc->getClientOriginalName();
|
|
|
- // Se obtiene únicamente el nombre
|
|
|
- $fileNameOnly = pathinfo($completeFileName, PATHINFO_FILENAME) . '-' . $id_employee;
|
|
|
+ $subArr = DB::table('S002V01TPERS')->where('PERS_NULI', '=', $form['linea'])->where(function(Builder $query) use ($form, $idUserReg) {
|
|
|
+ $query->where('PERS_IDUS', '=', $idUserReg)
|
|
|
+ ->orWhere('PERS_XRFC', '=', $form['RFC']);
|
|
|
+ })->where([
|
|
|
+ ['PERS_ESTA', '=', 'Activo'],
|
|
|
+ ['PERS_IDPE', '!=', $idEmployee],
|
|
|
+ ])->get()->all();
|
|
|
|
|
|
- // Se obtiene la extensión del archivo
|
|
|
- $extension = $doc->getClientOriginalExtension();
|
|
|
- if ($extension != "pdf") {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_DOCUMENTO_REG011: Solo se permiten archivos PDF', [], 500);
|
|
|
- }
|
|
|
+ if(count($subArr) > 0){
|
|
|
+ return $this->responseController->makeResponse(true, 'La razón social, el RFC o el correo electrónico ya fueron registrados.', [], 401);
|
|
|
+ }
|
|
|
|
|
|
- // Se quitan los espacios y se concatena datos para ser guardado
|
|
|
- $final_part_name_document = str_replace(' ', '_', $fileNameOnly) . '.' . $extension;
|
|
|
+ $ladasValues = [];
|
|
|
+ $ladas = DB::table('S002V01TPAIS')->select([
|
|
|
+ 'PAIS_LADA AS LADA'
|
|
|
+ ])->where('PAIS_NULI', '=', $form['linea'])->get()->all();
|
|
|
|
|
|
- $final_part_name_document = $this->documents_controller->deleteCodificationStructureName($final_part_name_document, "01", "GPRS");
|
|
|
+ foreach($ladas as $lada){
|
|
|
+ if($lada->LADA != '' && $lada->LADA != '0'){
|
|
|
+ $ladasValues[] = $lada->LADA;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- $name_document = $this->documents_controller->createDocument(
|
|
|
- "GPRS",
|
|
|
- "CO",
|
|
|
- $final_part_name_document,
|
|
|
- $id_employee,
|
|
|
- 'pdf',
|
|
|
- $request->LINE_NUMBER,
|
|
|
- $request->SAVED_BY_USER,
|
|
|
- $request->DOCUMENT_OFFICE_UPDATE
|
|
|
- );
|
|
|
+ if($form['CONTACT_LADA'] == 'ENC_ERR'){
|
|
|
+ return $this->responseController->makeResponse(true, "La lada del contacto de emergencia no fue encriptada correctamente.", [], 400);
|
|
|
+ }else if(!in_array($form['CONTACT_LADA'], $ladasValues)){
|
|
|
+ return $this->responseController->makeResponse(true, "La lada $form[CONTACT_LADA] no está relacionada a ningún país.", [], 400);
|
|
|
+ }else if($form['CONTACT_TELEPHONE'] == 'ENC_ERR'){
|
|
|
+ return $this->responseController->makeResponse(true, 'El número telefónico del contacto de emergencia no fue encriptado correctamente.', [], 400);
|
|
|
+ }
|
|
|
|
|
|
- // El documento es guardado en el storage
|
|
|
- $doc->storeAs('public/pdf_documents', $name_document);
|
|
|
+ if($form['CONTACT_ADDRESS'] == 'ENC_ERR'){
|
|
|
+ return $this->responseController->makeResponse(true, "La dirección del contacto de emergencia no fue encriptada correctamente.", [], 400);
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
+ if($form['CONTACT_NAME'] == 'ENC_ERR'){
|
|
|
+ return $this->responseController->makeResponse(true, "El nombre del contacto de emergencia no fue encriptada correctamente.", [], 400);
|
|
|
+ }
|
|
|
|
|
|
- DB::commit(); # Para guardar los cambios en la base de datos
|
|
|
- return $this->response_controller->makeResponse(FALSE, 'Actualización exitosa', 200);
|
|
|
+ $docsArr = json_decode($form['ATTACHED'], true);
|
|
|
+ if(count($docsArr) == 0){
|
|
|
+ return $this->responseController->makeResponse(true, "El arreglo de archivos adjuntos está vacío.", [], 400);
|
|
|
+ }
|
|
|
|
|
|
- } catch (Throwable $th) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_PERSONAL_REG012: Error inesperado', strtoupper($th), 500);
|
|
|
+ $authCont = 0;
|
|
|
+ foreach($docsArr as $doc){
|
|
|
+ if($doc['type'] == 'AU') $authCont++;
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- // Metodo para obtener la cantidad de contratos otorgados a cada empleado
|
|
|
- public function getContractsOfEveryEmployee($line_number)
|
|
|
- {
|
|
|
- try {
|
|
|
-
|
|
|
- // Obtiene la cantidad de contratos que tiene cada empleado
|
|
|
- $contracts_by_employee = DB::table('S002V01TPERS')
|
|
|
- ->select(
|
|
|
- 'S002V01TPERS.PERS_IDPE as ID_EMPLOYEE',
|
|
|
- DB::raw('TRIM(CONCAT(S002V01TUSUA.USUA_NOMB, " " , S002V01TUSUA.USUA_APPA, " ", COALESCE(S002V01TUSUA.USUA_APMA,""))) AS NAME'),
|
|
|
- DB::raw(
|
|
|
- 'COUNT(S002V01TPECO.PECO_IDPE) AS CONTRACTS_COUNT',
|
|
|
- )
|
|
|
- )
|
|
|
- ->where('S002V01TPERS.PERS_NULI', '=', $line_number)
|
|
|
- ->where('S002V01TUSUA.USUA_NULI', '=', $line_number)
|
|
|
- ->where('S002V01TPECO.PECO_NULI', '=', $line_number)
|
|
|
- ->where('S002V01TCONT.CONT_NULI', '=', $line_number)
|
|
|
- ->groupBy('S002V01TPERS.PERS_IDPE', 'NAME', 'S002V01TPECO.PECO_IDPE')
|
|
|
- ->join('S002V01TUSUA', 'S002V01TPERS.PERS_IDUS', '=', 'S002V01TUSUA.USUA_IDUS')
|
|
|
- ->join('S002V01TPECO', 'S002V01TPERS.PERS_IDPE', '=', 'S002V01TPECO.PECO_IDPE')
|
|
|
- ->join('S002V01TCONT', 'S002V01TPECO.PECO_IDCO', '=', 'S002V01TCONT.CONT_IDCO')
|
|
|
- ->get();
|
|
|
-
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(FALSE, "Consulta exitosa", $contracts_by_employee);
|
|
|
-
|
|
|
- } catch (Throwable $th) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_PERSONAL_REG001: Error inesperado', strtoupper($th->getMessage()), 500);
|
|
|
+ if($authCont < 1){
|
|
|
+ return $this->responseController->makeResponse(true, "El arreglo de archivos adjuntos debe contener al menos un documento de autorización.", [], 400);
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- // Metodo para obtener detalles acerca de los contratos otorgados al empleado
|
|
|
- public function getDetailsOfContractsByEmployee($id_employee, $line_number)
|
|
|
- {
|
|
|
- try {
|
|
|
-
|
|
|
- // Busca al empleado si existe
|
|
|
- $employee_exist = DB::table('S002V01TPERS')
|
|
|
- ->select('PERS_IDPE')
|
|
|
- ->where('PERS_IDPE', '=', $id_employee)
|
|
|
- ->where('PERS_NULI', '=', $line_number)
|
|
|
- ->first();
|
|
|
-
|
|
|
- // Verifica si el objeto esta vacio
|
|
|
- if (!isset($employee_exist) && empty($employee_exist)) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_PERSONAL_REG001: No se encontró al empleado', [], 500);
|
|
|
+ $finalDocsArr = [];
|
|
|
+ foreach($docsArr as $doc){
|
|
|
+ if(!array_key_exists('isFinalFile', $doc)){
|
|
|
+ return $this->responseController->makeResponse(true, "La información del archivo $doc[name] no tiene un formato correcto.", [], 400);
|
|
|
}
|
|
|
|
|
|
- //Obtiene los contratos pertenecientes al subcontratista deseado
|
|
|
- $contracts_by_employee = DB::table('S002V01TPERS')
|
|
|
- ->orderBy("S002V01TCONT.CONT_FEIN", 'desc')
|
|
|
- ->where('S002V01TPERS.PERS_IDPE', '=', $id_employee)
|
|
|
- ->where('S002V01TPERS.PERS_NULI', '=', $line_number)
|
|
|
- ->where('S002V01TPECO.PECO_NULI', '=', $line_number)
|
|
|
- ->where('S002V01TCONT.CONT_NULI', '=', $line_number)
|
|
|
- ->select('S002V01TCONT.CONT_FEIN as START_DATE', 'S002V01TCONT.CONT_FEFI as END_DATE', 'S002V01TCONT.CONT_COST as CONTRACT_COST', 'S002V01TCONT.CONT_NOMB as CONTRACT_NAME')
|
|
|
- ->join('S002V01TPECO', 'S002V01TPERS.PERS_IDPE', '=', 'S002V01TPECO.PECO_IDPE')
|
|
|
- ->join('S002V01TCONT', 'S002V01TPECO.PECO_IDCO', '=', 'S002V01TCONT.CONT_IDCO')
|
|
|
- ->get();
|
|
|
-
|
|
|
- foreach ($contracts_by_employee as $contract) {
|
|
|
- $contract->START_DATE = Carbon::create($contract->START_DATE)->format("d-m-Y h:i:s A");
|
|
|
- $contract->END_DATE = Carbon::create($contract->END_DATE)->format("d-m-Y h:i:s A");
|
|
|
- $contract->CONTRACT_COST = $this->encrypt_controller->encrypt($contract->CONTRACT_COST);
|
|
|
+ if($doc['isFinalFile']){
|
|
|
+ $finalDocsArr[] = [
|
|
|
+ 'CODE' => $doc['name'],
|
|
|
+ 'TYPE' => $doc['type']
|
|
|
+ ];
|
|
|
+ }else{
|
|
|
+ $idFileDec = $this->encryptionController->decrypt($doc['id']);
|
|
|
+ $tempFile = DB::table('S002V01TARTE')->where([
|
|
|
+ ['ARTE_NULI', '=', $form['linea']],
|
|
|
+ ['ARTE_IDAR', '=', $idFileDec],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($tempFile)){
|
|
|
+ return $this->responseController->makeResponse(true, "El archivo $doc[name] no está registrado.", [], 404);
|
|
|
+ }
|
|
|
+
|
|
|
+ $classifications = ["AU" => "IN", "OF" => "CO", "CE" => "CE"];
|
|
|
+ $cldo = $classifications[$doc['type']];
|
|
|
+ $finalFile = $this->documentManagementController->moveFinalFile($form['linea'], "GPRS", $cldo, $tempFile, $idUser);
|
|
|
+
|
|
|
+ if(!$finalFile[0]){
|
|
|
+ return $this->responseController->makeResponse(true, $finalFile[1], [], 400);
|
|
|
+ }else{
|
|
|
+ $finalDocsArr[] = [
|
|
|
+ 'CODE' => $finalFile[1],
|
|
|
+ 'TYPE' => $doc['type']
|
|
|
+ ];
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(FALSE, "Consulta exitosa", $contracts_by_employee);
|
|
|
-
|
|
|
- } catch (Throwable $th) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_PERSONAL_REG002: Error inesperado', strtoupper($th->getMessage()), 500);
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
- // Metodo para la descarga de archivo excel con los detalles del empleado
|
|
|
- public function downoloadEmployeeInfoOnExcel(Request $request)
|
|
|
- {
|
|
|
|
|
|
- try {
|
|
|
- $request['SAVED_BY_USER'] = $this->encrypt_controller->decrypt($request->SAVED_BY_USER);
|
|
|
- $employee_id = $request->EMPLOYEE['ID_EMPLOYEE'];
|
|
|
+ $doas = json_encode($finalDocsArr);
|
|
|
+ $nuin = isset($form['INTERIOR_NUMBER']) ? $form['INTERIOR_NUMBER'] : null;
|
|
|
+
|
|
|
+ $now = $this->functionsController->now();
|
|
|
+ $nowStr = $now->toDateTimeString();
|
|
|
+ DB::table('S002V01TPERS')->where([
|
|
|
+ ['PERS_NULI', '=', $form['linea']],
|
|
|
+ ['PERS_IDPE', '=', $idEmployee]
|
|
|
+ ])->update([
|
|
|
+ 'PERS_EQTR' => $idTeam,
|
|
|
+ 'PERS_TICO' => $form['CONTRACT_TYPE'],
|
|
|
+ 'PERS_IDPS' => $idSubcontratist,
|
|
|
+ 'PERS_ESPE' => $form['SPECIALITY'],
|
|
|
+ 'PERS_EXTR' => $form['FOREIGNER'],
|
|
|
+ 'PERS_XRFC' => $rfcx,
|
|
|
+ 'PERS_TAID' => $taid,
|
|
|
+ 'PERS_IDPA' => $form['COUNTRY'],
|
|
|
+ 'PERS_ENFE' => $form['FEDERAL_ENTITY'],
|
|
|
+ 'PERS_CIUD' => $ciud,
|
|
|
+ 'PERS_LOCA' => $loca,
|
|
|
+ 'PERS_COLO' => $colo,
|
|
|
+ 'PERS_COPO' => $form['POSTAL_CODE'],
|
|
|
+ 'PERS_CALL' => $form['STREET'],
|
|
|
+ 'PERS_NUEX' => $form['EXTERIOR_NUMBER'],
|
|
|
+ 'PERS_NUIN' => $nuin,
|
|
|
+ 'PERS_NOCE' => $form['CONTACT_NAME'],
|
|
|
+ 'PERS_LCEM' => $form['CONTACT_LADA'],
|
|
|
+ 'PERS_NUTC' => $form['CONTACT_TELEPHONE'],
|
|
|
+ 'PERS_DCEM' => $form['CONTACT_ADDRESS'],
|
|
|
+ 'PERS_DOAS' => $doas,
|
|
|
+ 'PERS_USMO' => $idUser,
|
|
|
+ 'PERS_FEMO' => $nowStr,
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $actions = DB::getQueryLog();
|
|
|
+ $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
|
|
|
+ $nameEmp = $this->functionsController->joinName($usrReg->USUA_NOMB, $usrReg->USUA_APPA, $usrReg->USUA_APMA);
|
|
|
+
|
|
|
+ $idac = $this->functionsController->registerActivity(
|
|
|
+ $form['linea'],
|
|
|
+ 'S002V01M11GPRS',
|
|
|
+ 'S002V01F01GEPE',
|
|
|
+ 'S002V01P02REEM',
|
|
|
+ 'Actualización',
|
|
|
+ "El usuario $name (" . $usr->USUA_IDUS . ") actualizó al empleado " . $nameEmp . "($idEmployee).",
|
|
|
+ $idUser,
|
|
|
+ $nowStr,
|
|
|
+ 'S002V01S02GEPE'
|
|
|
+ );
|
|
|
+
|
|
|
+ $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $form['linea']);
|
|
|
+ return $this->responseController->makeResponse(false, 'EXITO');
|
|
|
+ }
|
|
|
|
|
|
- $final_part_name_document = "Details_Of_Employee_" . $employee_id . ".xlsx";
|
|
|
+ public function updateToInactiveStatus(Request $request) {
|
|
|
+ DB::enableQueryLog();
|
|
|
+
|
|
|
+ $validator = Validator::make($request->all(), [
|
|
|
+ 'id_user' => 'required|string',
|
|
|
+ 'linea' => 'required|integer',
|
|
|
+ 'id_employee' => 'required|string',
|
|
|
+ ]);
|
|
|
+
|
|
|
+ if($validator->fails()){
|
|
|
+ return $this->responseController->makeResponse(
|
|
|
+ true,
|
|
|
+ "Se encontraron uno o más errores.",
|
|
|
+ $this->responseController->makeErrors(
|
|
|
+ $validator->errors()->messages()
|
|
|
+ ),
|
|
|
+ 401
|
|
|
+ );
|
|
|
+ }
|
|
|
|
|
|
- // Crea el documento con los datos del request
|
|
|
- $document = $this->createDocument($request);
|
|
|
+ $form = $request->all();
|
|
|
+ $idUser = $this->encryptionController->decrypt($form['id_user']);
|
|
|
+ if(!$idUser){
|
|
|
+ return $this->responseController->makeResponse(true, 'El ID de usuario no fue encriptado correctamente.', [], 400);
|
|
|
+ }
|
|
|
|
|
|
- // Busca la ultima versión del documento que se haya insertado
|
|
|
- $old_document_name = $this->documents_controller->getDocumentsWithSameName($final_part_name_document, 'excel');
|
|
|
+ $usr = DB::table('S002V01TUSUA')->where([
|
|
|
+ ['USUA_NULI', '=', $form['linea']],
|
|
|
+ ['USUA_IDUS', '=', $idUser]
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($usr)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El usuario que realizó la petición no existe.', [], 404);
|
|
|
+ }
|
|
|
|
|
|
- if ($old_document_name != null) {
|
|
|
+ $idEmployee = $this->encryptionController->decrypt($form['id_employee']);
|
|
|
+ if(!$idEmployee){
|
|
|
+ return $this->responseController->makeResponse(true, 'El ID del empleado que desea actualizar no fue encriptado correctamente.', [], 400);
|
|
|
+ }
|
|
|
|
|
|
- // Obtiene el nombre del documento que tiene el mismo contenido
|
|
|
- $old_document_name = $this->documents_controller->sameDocumentsExcel($document, $old_document_name);
|
|
|
+ $employee = DB::table('S002V01TPERS')->where([
|
|
|
+ ['PERS_NULI', '=', $form['linea']],
|
|
|
+ ['PERS_IDPE', '=', $idEmployee]
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($employee)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El empleado que desea actualizar no existe.', [], 404);
|
|
|
+ }
|
|
|
+
|
|
|
+ if($idUser == $employee->PERS_IDUS){
|
|
|
+ return $this->responseController->makeResponse(true, 'El usuario no puede eliminarse a sí mismo.', [], 400);
|
|
|
+ }
|
|
|
|
|
|
- // Si no hay ningun cambio en el documento, se descarga la ultima versión
|
|
|
- if ($old_document_name != null) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(False, 'Éxito', Storage::disk('excel')->url($old_document_name), 200);
|
|
|
- }
|
|
|
- }
|
|
|
+ $now = $this->functionsController->now();
|
|
|
+ $nowStr = $now->toDateTimeString();
|
|
|
+ DB::table('S002V01TPERS')->where([
|
|
|
+ ['PERS_NULI', '=', $form['linea']],
|
|
|
+ ['PERS_IDPE', '=', $idEmployee]
|
|
|
+ ])->update([
|
|
|
+ 'PERS_ESTA' => 'Eliminado',
|
|
|
+ 'PERS_USMO' => $idUser,
|
|
|
+ 'PERS_FEMO' => $nowStr,
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $actions = DB::getQueryLog();
|
|
|
+ $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
|
|
|
+ $idac = $this->functionsController->registerActivity(
|
|
|
+ $form['linea'],
|
|
|
+ 'S002V01M11GPRS',
|
|
|
+ 'S002V01F01GEPE',
|
|
|
+ 'S002V01P02REEM',
|
|
|
+ 'Eliminación',
|
|
|
+ "El usuario $name (" . $usr->USUA_IDUS . ") eliminó al empleado $idEmployee.",
|
|
|
+ $idUser,
|
|
|
+ $nowStr,
|
|
|
+ 'S002V01S02GEPE'
|
|
|
+ );
|
|
|
+
|
|
|
+ $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $form['linea']);
|
|
|
+ return $this->responseController->makeResponse(false, 'EXITO');
|
|
|
+ }
|
|
|
|
|
|
- // Guarda el documento creado en la variable
|
|
|
- $writer = IOFactory::createWriter($document, 'Xlsx');
|
|
|
- $content = tmpfile();
|
|
|
- $writer->save($content);
|
|
|
+ public function getContractsOfEveryEmployee($idUser, $line) {
|
|
|
+ DB::enableQueryLog();
|
|
|
|
|
|
- // Inserta la nueva version del documento en la base de datos y en el storage
|
|
|
- $name_document = $this->documents_controller->createDocument("GPRS", "IN", $final_part_name_document, $employee_id, "excel", $request->EMPLOYEE['LINE_NUMBER'], $request->SAVED_BY_USER);
|
|
|
+ $idUser = $this->encryptionController->decrypt($idUser);
|
|
|
+ if(!$idUser){
|
|
|
+ return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la solicitud no está encriptado correctamente', [], 400);
|
|
|
+ }
|
|
|
|
|
|
- Storage::disk('excel')->put(
|
|
|
- $name_document,
|
|
|
- $content
|
|
|
- );
|
|
|
+ $usr = DB::table('S002V01TUSUA')->where([
|
|
|
+ ['USUA_NULI', '=', $line],
|
|
|
+ ['USUA_IDUS', '=', $idUser],
|
|
|
+ ])->first();
|
|
|
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(False, 'Éxito', Storage::disk('excel')->url($name_document), 200);
|
|
|
+ if(is_null($usr)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
|
|
|
+ }
|
|
|
|
|
|
- } catch (Throwable $th) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_EXCEL_REG001: Error inesperado', strtoupper($th), 500);
|
|
|
+ $contractsByEmployees = DB::table('S002V01TPERS')->select([
|
|
|
+ DB::raw("
|
|
|
+ TRIM(CONCAT(
|
|
|
+ USUA_NOMB,
|
|
|
+ ' ',
|
|
|
+ USUA_APPA,
|
|
|
+ IF(ISNULL(USUA_APMA), '', CONCAT(' ', USUA_APMA)),
|
|
|
+ ' <(',
|
|
|
+ PERS_IDPE,
|
|
|
+ ')> (',
|
|
|
+ PERS_IDUS,
|
|
|
+ ')'
|
|
|
+ )) AS EMPLOYEE
|
|
|
+ "),
|
|
|
+ DB::raw("COUNT(CONT_IDCO) AS CONTRACTS")
|
|
|
+ ])->leftJoin('S002V01TCONT', 'CONT_IDEM', '=', 'PERS_IDPE')
|
|
|
+ ->join('S002V01TUSUA', 'USUA_IDUS', '=', 'PERS_IDUS')
|
|
|
+ ->groupBy('EMPLOYEE')->where([
|
|
|
+ ['PERS_NULI', '=', $line],
|
|
|
+ ['PERS_TICO', '=', 'Interno'],
|
|
|
+ ])->get()->all();
|
|
|
+
|
|
|
+ foreach($contractsByEmployees as $key=>$val){
|
|
|
+ $employeeArr = explode('<', $val->EMPLOYEE);
|
|
|
+ $employeeName = $employeeArr[0];
|
|
|
+ $employeeArr = array_reverse($employeeArr);
|
|
|
+ $employeeArr = explode('>', $employeeArr[0]);
|
|
|
+
|
|
|
+ $employeeID = str_replace('(', '', $employeeArr[0]);
|
|
|
+ $employeeID = str_replace(')', '', $employeeID);
|
|
|
+
|
|
|
+ $val->ID_EMPLOYEE = $this->encryptionController->encrypt($employeeID);
|
|
|
+ $val->EMPLOYEE = $employeeName . join('', $employeeArr);
|
|
|
+
|
|
|
+ $contractsByEmployees[$key] = $val;
|
|
|
}
|
|
|
+
|
|
|
+ $now = $this->functionsController->now();
|
|
|
+ $nowStr = $now->toDateTimeString();
|
|
|
+ $actions = DB::getQueryLog();
|
|
|
+ $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
|
|
|
+
|
|
|
+ $idac = $this->functionsController->registerActivity(
|
|
|
+ $line,
|
|
|
+ 'S002V01M11GPRS',
|
|
|
+ 'S002V01F02ACEM',
|
|
|
+ 'S002V01P01HCEM',
|
|
|
+ 'Consulta',
|
|
|
+ "El usuario $name (" . $usr->USUA_IDUS . ") consultó los contratos por empleados.",
|
|
|
+ $idUser,
|
|
|
+ $nowStr,
|
|
|
+ 'S002V01S02GEPE'
|
|
|
+ );
|
|
|
+
|
|
|
+ $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
|
|
|
+ return $this->responseController->makeResponse(false, 'EXITO', $contractsByEmployees);
|
|
|
}
|
|
|
|
|
|
- // Metodo para la descarga de archivo pdf con los detalles del empleado
|
|
|
- public function downoloadEmployeeInfoOnPdf(Request $request)
|
|
|
- {
|
|
|
+ public function getDetailsOfContractsByEmployee($idEmployee, $idUser, $line) {
|
|
|
+ DB::enableQueryLog();
|
|
|
|
|
|
- try {
|
|
|
- $request['SAVED_BY_USER'] = $this->encrypt_controller->decrypt($request->SAVED_BY_USER);
|
|
|
- $employee_id = $request->EMPLOYEE['ID_EMPLOYEE'];
|
|
|
+ $idUser = $this->encryptionController->decrypt($idUser);
|
|
|
+ if(!$idUser){
|
|
|
+ return $this->responseController->makeResponse(true, 'El ID de usuario no fue encriptado correctamente.', [], 400);
|
|
|
+ }
|
|
|
|
|
|
- $final_part_name_document = "Details_Of_Employee_" . $employee_id . ".pdf";
|
|
|
+ $usr = DB::table('S002V01TUSUA')->where([
|
|
|
+ ['USUA_NULI', '=', $line],
|
|
|
+ ['USUA_IDUS', '=', $idUser]
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($usr)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El usuario que realizó la petición no existe.', [], 404);
|
|
|
+ }
|
|
|
|
|
|
- // Crea el documento
|
|
|
- $document = $this->createDocument($request);
|
|
|
- $writer = IOFactory::createWriter($document, 'Mpdf');
|
|
|
- $content = tmpfile();
|
|
|
+ $idEmployee = $this->encryptionController->decrypt($idEmployee);
|
|
|
+ if(!$idEmployee){
|
|
|
+ return $this->responseController->makeResponse(true, 'El ID del empleado no fue encriptado correctamente.', [], 400);
|
|
|
+ }
|
|
|
|
|
|
- // Busca la ultima versión del documento que se haya insertado
|
|
|
- $old_document_name = $this->documents_controller->getDocumentsWithSameName($final_part_name_document, 'pdf');
|
|
|
+ $sub = DB::table('S002V01TPERS')->where([
|
|
|
+ ['PERS_NULI', '=', $line],
|
|
|
+ ['PERS_IDPE', '=', $idEmployee],
|
|
|
+ ['PERS_TICO', '=', 'Interno'],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($sub)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El empleado solicitado no existe.', [], 404);
|
|
|
+ }
|
|
|
|
|
|
- $writer->save($content);
|
|
|
- if ($old_document_name != null) {
|
|
|
+ $contracts = DB::table('S002V01TCONT')->select([
|
|
|
+ 'CONT_NOCO AS CONTRACT_NAME',
|
|
|
+ 'CONT_FEIN AS START_DATE',
|
|
|
+ 'CONT_FEFI AS END_DATE',
|
|
|
+ 'CONT_COST AS COST',
|
|
|
+ ])->where([
|
|
|
+ ['CONT_NULI', '=', $line],
|
|
|
+ ['CONT_IDEM', '=', $idEmployee],
|
|
|
+ ['CONT_TIPO', '=', 'Interno'],
|
|
|
+ ])->get()->all();
|
|
|
+
|
|
|
+ $now = $this->functionsController->now();
|
|
|
+ $nowStr = $now->toDateTimeString();
|
|
|
+ $actions = DB::getQueryLog();
|
|
|
+ $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
|
|
|
+
|
|
|
+ $idac = $this->functionsController->registerActivity(
|
|
|
+ $line,
|
|
|
+ 'S002V01M11GPRS',
|
|
|
+ 'S002V01F02ACEM',
|
|
|
+ 'S002V01P01HCEM',
|
|
|
+ 'Consulta',
|
|
|
+ "El usuario $name (" . $usr->USUA_IDUS . ") consultó los contratos del empleado #$idEmployee.",
|
|
|
+ $idUser,
|
|
|
+ $nowStr,
|
|
|
+ 'S002V01S02GEPE'
|
|
|
+ );
|
|
|
+
|
|
|
+ $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
|
|
|
+ return $this->responseController->makeResponse(false, 'EXITO', $contracts);
|
|
|
+ }
|
|
|
|
|
|
- // Obtiene el nombre del documento que tiene el mismo contenido
|
|
|
- $old_document_name = $this->documents_controller->sameDocumentsPdf($content, $old_document_name);
|
|
|
+ public function getInterventionsByEmployee($idEmployee, $idUser, $line) {
|
|
|
+ DB::enableQueryLog();
|
|
|
|
|
|
- // Si no hay ningun cambio en el documento, se descarga la ultima versión
|
|
|
- if ($old_document_name != null) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(False, 'Éxito', Storage::disk('pdf')->url($old_document_name), 200);
|
|
|
- }
|
|
|
- }
|
|
|
+ $idUser = $this->encryptionController->decrypt($idUser);
|
|
|
+ if(!$idUser){
|
|
|
+ return $this->responseController->makeResponse(true, 'El ID de usuario no fue encriptado correctamente.', [], 400);
|
|
|
+ }
|
|
|
|
|
|
- // Inserta la nueva version del documento en la base de datos y en el storage
|
|
|
- $name_document = $this->documents_controller->createDocument("GPRS", "IN", $final_part_name_document, $employee_id, "pdf", $request->EMPLOYEE['LINE_NUMBER'], $request->SAVED_BY_USER);
|
|
|
- Storage::disk('pdf')->put(
|
|
|
- $name_document,
|
|
|
- $content
|
|
|
- );
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(False, 'Éxito', Storage::disk('pdf')->url($name_document), 200);
|
|
|
+ $usr = DB::table('S002V01TUSUA')->where([
|
|
|
+ ['USUA_NULI', '=', $line],
|
|
|
+ ['USUA_IDUS', '=', $idUser]
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($usr)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El usuario que realizó la petición no existe.', [], 404);
|
|
|
+ }
|
|
|
|
|
|
- } catch (Throwable $th) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_PDF_REG001: Error inesperado', strtoupper($th), 500);
|
|
|
+ $idEmployee = $this->encryptionController->decrypt($idEmployee);
|
|
|
+ if(!$idEmployee){
|
|
|
+ return $this->responseController->makeResponse(true, 'El ID del empleado no fue encriptado correctamente.', [], 400);
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- // Metodo para la creación de archivo
|
|
|
- public function createDocument(Request $request)
|
|
|
- {
|
|
|
- try {
|
|
|
- $employee = $request->EMPLOYEE;
|
|
|
- $document = new Spreadsheet();
|
|
|
-
|
|
|
- // Propiedades del documento
|
|
|
- $document->getProperties()
|
|
|
- ->setCreator("ITTEC")
|
|
|
- ->setTitle("Detalles del empleado")
|
|
|
- ->setDescription("Detalles de solo un empleado.")
|
|
|
- ->setKeywords("Empleado Detalles")
|
|
|
- ->setCategory("Empleado Detalles Pdf");
|
|
|
- // Cambia la hoja a horizontal par que se observen mejor los datos
|
|
|
- $document->getActiveSheet()->getPageSetup()->setOrientation("landscape");
|
|
|
-
|
|
|
- // Hace la escritura dentro del archivo
|
|
|
- $start_row = 2; # Indica desde que fila inicia la tabla
|
|
|
- $start_col = "B"; # Indica desde que columna inicia la tabla
|
|
|
-
|
|
|
- $col = $start_col;
|
|
|
- $row = $start_row;
|
|
|
- $col++;
|
|
|
- $second_col = $col;
|
|
|
- $col++;
|
|
|
- $third_col = $col;
|
|
|
- $col++;
|
|
|
- $fourth_col = $col;
|
|
|
- $col++;
|
|
|
- $fifth_col = $col;
|
|
|
- $col++;
|
|
|
- $sixth_col = $col;
|
|
|
- $col++;
|
|
|
- $seventh_col = $col;
|
|
|
- $col++;
|
|
|
- $eight_col = $col;
|
|
|
- $col = $start_col;
|
|
|
- $final_col = "";
|
|
|
-
|
|
|
- for ($i = 0; $i < 9; $i++) {
|
|
|
- $final_col = $col;
|
|
|
- $col++;
|
|
|
- }
|
|
|
- $col = $start_col;
|
|
|
-
|
|
|
- // Titulo del documento
|
|
|
- $document->getActiveSheet()->mergeCells($start_col . $row . ":" . $final_col . $row);
|
|
|
- $document->getActiveSheet()->setCellValue($start_col . $row, 'DETALLES DEL EMPLEADO')->getStyle($start_col . $row)->getFill()
|
|
|
- ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
|
|
|
- ->getStartColor()->setRGB('FFCC88');
|
|
|
- $document->getActiveSheet()->getStyle($start_col . $row)->getFont()->setBold(true);
|
|
|
- $row++;
|
|
|
-
|
|
|
- //Cuerpo del documento
|
|
|
- $document->getActiveSheet()->setCellValue($col . $row, 'ID EMPLEADO')->getStyle($col . $row)->getFill()
|
|
|
- ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
|
|
|
- ->getStartColor()->setRGB('38D9CE');
|
|
|
- $col++;
|
|
|
-
|
|
|
- $document->getActiveSheet()->setCellValue($col . $row, 'NOMBRE EMPLEADO')->getStyle($col . $row)->getFill()
|
|
|
- ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
|
|
|
- ->getStartColor()->setRGB('38D9CE');
|
|
|
- $col++;
|
|
|
-
|
|
|
- $document->getActiveSheet()->setCellValue($col . $row, 'NOMBRE EQUIPO')->getStyle($col . $row)->getFill()
|
|
|
- ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
|
|
|
- ->getStartColor()->setRGB('38D9CE');
|
|
|
- $col++;
|
|
|
-
|
|
|
- $document->getActiveSheet()->setCellValue($col . $row, 'NOMBRE CONTACTO DE EMERGENCIA')->getStyle($col . $row)->getFill()
|
|
|
- ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
|
|
|
- ->getStartColor()->setRGB('38D9CE');
|
|
|
- $col++;
|
|
|
-
|
|
|
- $document->getActiveSheet()->setCellValue($col . $row, 'TELEFONO CONTACTO DE EMERGENCIA')->getStyle($col . $row)->getFill()
|
|
|
- ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
|
|
|
- ->getStartColor()->setRGB('38D9CE');
|
|
|
- $col++;
|
|
|
-
|
|
|
- $document->getActiveSheet()->setCellValue($col . $row, 'DIRECCIÓN CONTACTO DE EMERGENCIA')->getStyle($col . $row)->getFill()
|
|
|
- ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
|
|
|
- ->getStartColor()->setRGB('38D9CE');
|
|
|
- $col++;
|
|
|
-
|
|
|
- $document->getActiveSheet()->setCellValue($col . $row, 'TIPO DE CONTRATO')->getStyle($col . $row)->getFill()
|
|
|
- ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
|
|
|
- ->getStartColor()->setRGB('38D9CE');
|
|
|
- $col++;
|
|
|
-
|
|
|
- $document->getActiveSheet()->setCellValue($col . $row, 'ESPECIALIDAD DEL EMPLEADO')->getStyle($col . $row)->getFill()
|
|
|
- ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
|
|
|
- ->getStartColor()->setRGB('38D9CE');
|
|
|
- $col++;
|
|
|
-
|
|
|
- $document->getActiveSheet()->setCellValue($col . $row, 'DOCUMENTOS')->getStyle($col . $row)->getFill()
|
|
|
- ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
|
|
|
- ->getStartColor()->setRGB('38D9CE');
|
|
|
-
|
|
|
- $row++;
|
|
|
- $col = $start_col;
|
|
|
-
|
|
|
- $document->getActiveSheet()->setCellValue($col . $row, "#" . $employee['ID_EMPLOYEE']);
|
|
|
- $col++;
|
|
|
-
|
|
|
- $document->getActiveSheet()->setCellValue($col . $row, $employee['EMPLOYEE_NAME']);
|
|
|
- $col++;
|
|
|
-
|
|
|
- $document->getActiveSheet()->setCellValue($col . $row, $employee['WORKTEAM_NAME']);
|
|
|
- $col++;
|
|
|
-
|
|
|
- $document->getActiveSheet()->setCellValue($col . $row, $this->encrypt_controller->decrypt($employee['CONTACT_NAME']));
|
|
|
- $col++;
|
|
|
-
|
|
|
- $document->getActiveSheet()->setCellValue($col . $row, $this->encrypt_controller->decrypt($employee['CONTACT_LADA']) . $this->encrypt_controller->decrypt($employee['CONTACT_TELEPHONE']));
|
|
|
- $col++;
|
|
|
-
|
|
|
- $document->getActiveSheet()->setCellValue($col . $row, $this->encrypt_controller->decrypt($employee['CONTACT_ADDRESS']));
|
|
|
- $col++;
|
|
|
-
|
|
|
- $document->getActiveSheet()->setCellValue($col . $row, $employee['CONTRACT_TYPE']);
|
|
|
- $col++;
|
|
|
-
|
|
|
- $document->getActiveSheet()->setCellValue($col . $row, $employee['SPECIALITY']);
|
|
|
- $col++;
|
|
|
-
|
|
|
- // Verifica si el empleado tiene documentos
|
|
|
- if (isset($employee['DOCUMENTS'][0]) && !empty($employee['DOCUMENTS'][0])) {
|
|
|
- foreach ($employee['DOCUMENTS'] as $doc) {
|
|
|
- $document->getActiveSheet()->setCellValue($col . $row, $this->encrypt_controller->decrypt($doc));
|
|
|
- $row++;
|
|
|
- }
|
|
|
- } else {
|
|
|
- $document->getActiveSheet()->setCellValue($col . $row, 'SIN DOCUMENTOS...');
|
|
|
- $document->getActiveSheet()->getStyle($col . $row)->getFont()->setBold(true);
|
|
|
- $row++;
|
|
|
- }
|
|
|
+ $employee = DB::table('S002V01TPERS')->where([
|
|
|
+ ['PERS_NULI', '=', $line],
|
|
|
+ ['PERS_IDPE', '=', $idEmployee],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($employee)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El empleado solicitado no existe.', [], 404);
|
|
|
+ }
|
|
|
|
|
|
- //Ajusta las celdas a su contenido y da estilo
|
|
|
- $document->getActiveSheet()->mergeCells($start_col . $start_row + 2 . ":" . $start_col . $row - 1);
|
|
|
- $document->getActiveSheet()->mergeCells($second_col . $start_row + 2 . ":" . $second_col . $row - 1);
|
|
|
- $document->getActiveSheet()->mergeCells($third_col . $start_row + 2 . ":" . $third_col . $row - 1);
|
|
|
- $document->getActiveSheet()->mergeCells($fourth_col . $start_row + 2 . ":" . $fourth_col . $row - 1);
|
|
|
- $document->getActiveSheet()->mergeCells($fifth_col . $start_row + 2 . ":" . $fifth_col . $row - 1);
|
|
|
- $document->getActiveSheet()->mergeCells($sixth_col . $start_row + 2 . ":" . $sixth_col . $row - 1);
|
|
|
- $document->getActiveSheet()->mergeCells($seventh_col . $start_row + 2 . ":" . $seventh_col . $row - 1);
|
|
|
- $document->getActiveSheet()->mergeCells($eight_col . $start_row + 2 . ":" . $eight_col . $row - 1);
|
|
|
-
|
|
|
- $col = $start_col;
|
|
|
- for ($i = 0; $i < 9; $i++) {
|
|
|
- $document->getActiveSheet()->getColumnDimension($col)->setAutoSize(true);
|
|
|
- $col++;
|
|
|
+ $preventiveOrders = DB::select("
|
|
|
+ SELECT
|
|
|
+ DISTINCT(S002V01TOTPR.OTPR_IDOT) AS IDORDEN,
|
|
|
+ S002V01TOTPR.OTPR_DEIN AS DESCRIPCION,
|
|
|
+ 'Preventivo' AS TIPOORDEN
|
|
|
+ FROM
|
|
|
+ S002V01TOTPR,
|
|
|
+ JSON_TABLE(OTPR_OPPR, '$[*]' COLUMNS(
|
|
|
+ OTPR_OPPR_ID INT PATH '$.ID',
|
|
|
+ OTPR_OPPR_TYPE VARCHAR(100) PATH '$.TYPE'
|
|
|
+ )) OPPR
|
|
|
+ WHERE
|
|
|
+ (OTPR_OPPR_ID = :emp_id AND OTPR_OPPR_TYPE = 'EM')
|
|
|
+ OR (OTPR_OPPR_ID = :sub_id AND OTPR_OPPR_TYPE = 'SU')
|
|
|
+ OR (OTPR_OPPR_ID = :team_id AND OTPR_OPPR_TYPE = 'EQ')
|
|
|
+ ", [
|
|
|
+ 'emp_id' => $employee->PERS_IDPE,
|
|
|
+ 'sub_id' => $employee->PERS_IDPS,
|
|
|
+ 'team_id' => $employee->PERS_EQTR
|
|
|
+ ]);
|
|
|
+
|
|
|
+ //PENDIENTE MANTENIMIENTO CORRECTIVO
|
|
|
+
|
|
|
+ $ordersFN = [];
|
|
|
+ $relatedOrders = [];
|
|
|
+ foreach($preventiveOrders as $order){
|
|
|
+ if(!in_array($order->IDORDEN, $relatedOrders)){
|
|
|
+ $relatedOrders[] = $order->IDORDEN;
|
|
|
+
|
|
|
+ $order->IDORDEN = $this->encryptionController->encrypt($order->IDORDEN);
|
|
|
+ $ordersFN[] = $order;
|
|
|
}
|
|
|
-
|
|
|
- $document->getActiveSheet()->getStyle($start_col . $start_row . ':' . $final_col . $row)->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER);
|
|
|
- $document->getActiveSheet()->getStyle($start_col . $start_row . ':' . $final_col . $row)->getAlignment()->setVertical(\PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER);
|
|
|
- $document->getActiveSheet()->getStyle($start_col . $start_row . ':' . $final_col . $row - 1)->getBorders()->getAllBorders()->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_MEDIUM);
|
|
|
-
|
|
|
- return $document;
|
|
|
-
|
|
|
- } catch (Throwable $th) {
|
|
|
- return $this->response_controller
|
|
|
- ->makeResponse(TRUE, 'ERR_CREACIÓN_DOCUMENTO_REG001: Error inesperado', strtoupper($th->getMessage()), 500);
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
-}
|
|
|
+ $now = $this->functionsController->now();
|
|
|
+ $nowStr = $now->toDateTimeString();
|
|
|
+ $actions = DB::getQueryLog();
|
|
|
+ $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
|
|
|
+
|
|
|
+ $idac = $this->functionsController->registerActivity(
|
|
|
+ $line,
|
|
|
+ 'S002V01M11GPRS',
|
|
|
+ 'S002V01F01GEPE',
|
|
|
+ 'S002V01P03DEEM',
|
|
|
+ 'Consulta',
|
|
|
+ "El usuario $name (" . $usr->USUA_IDUS . ") consultó las órdenes de trabajo relacionadas al empleado #$idEmployee.",
|
|
|
+ $idUser,
|
|
|
+ $nowStr,
|
|
|
+ 'S002V01S02GEPE'
|
|
|
+ );
|
|
|
+
|
|
|
+ $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
|
|
|
+ return $this->responseController->makeResponse(false, 'EXITO', $ordersFN);
|
|
|
+ }
|
|
|
+}
|