response_controller = new ResponseController(); $this->encrypt_controller = new EncryptionController(); } // Metodo para la consulta de equipos de trabajo public function getConsultOfWorkteams($line_number) { try { $workteams = DB::table('S002V01TEQMA') ->select( 'EQMA_IDEQ as WORKTEAM_ID', 'EQMA_NOMB as NAME', 'EQMA_ESPE as SPECIALITY', 'EQMA_ESTA as STATUS' ) ->where('EQMA_NULI', '=', $line_number) ->get(); // Verifica si el objeto esta vacio if (!isset($workteams[0]) && empty($workteams[0])) { return $this->response_controller ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG001: No se encontraron datos', $workteams, 500); } return $this->response_controller->makeResponse(FALSE, 'Consulta exitosa', $workteams, 200); } catch (Throwable $th) { return $this->response_controller ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG002: Error inesperado', strtoupper($th->getMessage()), 500); } } // Metodo para la consulta de equipos de trabajo public function getActiveWorkteams($line_number) { try { $workteams = DB::table('S002V01TEQMA') ->select( 'EQMA_IDEQ as WORKTEAM_ID', 'EQMA_NOMB as NAME', ) ->orderBy('NAME', 'asc') ->where('EQMA_ESTA', '=', 'Activo') ->where('EQMA_NULI', '=', $line_number) ->get(); // Verifica si el objeto esta vacio if (!isset($workteams[0]) && empty($workteams[0])) { return $this->response_controller ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG001: No se encontraron datos', $workteams, 500); } return $this->response_controller->makeResponse(FALSE, 'Consulta exitosa', $workteams, 200); } catch (Throwable $th) { return $this->response_controller ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG002: Error inesperado', strtoupper($th->getMessage()), 500); } } // Metodo para la consulta de un equipo de trabajo por medio de su id public function getWorkteamById($id_workteam, $line_number) { try { $workteams = DB::table('S002V01TEQMA') ->select( 'EQMA_IDEQ as WORKTEAM_ID', 'EQMA_NOMB as NAME', 'EQMA_ESPE as SPECIALITY', 'EQMA_ESTA as STATUS' ) ->where('EQMA_IDEQ', '=', $id_workteam) ->where('EQMA_NULI', '=', $line_number) ->first(); // Verifica si el objeto esta vacio if (!isset($workteams) && empty($workteams)) { return $this->response_controller ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG001: No se encontró al equipo de trabajo', $workteams, 500); } return $this->response_controller->makeResponse(FALSE, 'Consulta exitosa', $workteams, 200); } catch (Throwable $th) { return $this->response_controller ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG002: Error inesperado', strtoupper($th->getMessage()), 500); } } // Metodo para obtener los integrantes de un equipo public function getMembersOfWorkteamById($id_workteam, $line_number) { try { // Obtiene las intervenciones del empleado $workteam_members = DB::table('S002V01TPERS') ->select( DB::raw('TRIM(CONCAT(S002V01TUSUA.USUA_NOMB, " " , S002V01TUSUA.USUA_APPA, " ", COALESCE(S002V01TUSUA.USUA_APMA,""))) as NAME') ) ->where('S002V01TPEEM.PEEM_IDEM', '=', $id_workteam) ->where('S002V01TPERS.PERS_NULI', '=', $line_number) ->where('S002V01TPEEM.PEEM_NULI', '=', $line_number) ->join('S002V01TPEEM', 'S002V01TPERS.PERS_IDPE', '=', 'S002V01TPEEM.PEEM_IDPE') ->join('S002V01TUSUA', 'S002V01TPERS.PERS_IDUS', '=', 'S002V01TUSUA.USUA_IDUS') ->get(); return $this->response_controller->makeResponse(FALSE, 'Consulta exitosa', $workteam_members, 200); } catch (Throwable $th) { return $this->response_controller ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG002: Error inesperado', strtoupper($th->getMessage()), 500); } } // Metodo para obtener los detalles de un equipo de trabajo por el id public function getDetailsOfWorkteamById($id_workteam, $line_number) { try { $workteam = DB::table("S002V01TEQMA") ->select( 'EQMA_IDEQ as WORKTEAM_ID', 'EQMA_NOMB as NAME', 'EQMA_ESPE as SPECIALITY', "EQMA_FERE as REGISTER_DATE", "EQMA_USRE as REGISTERED_BY", "EQMA_FEMO as UPDATE_DATE", "EQMA_USMO as UPDATED_BY" ) ->where("EQMA_IDEQ", '=', $id_workteam) ->where("EQMA_NULI", '=', $line_number) ->first(); // Verifica si el objeto esta vacio if (!isset($workteam) && empty($workteam)) { return $this->response_controller ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG001: No se encontró al equipo de trabajo', [], 500); } $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(); // Verifica si el objeto esta vacio if (!isset($users[0]) && empty($users[0])) { return $this->response_controller ->makeResponse(TRUE, 'ERR_USUARIO_REG002: No se encontraron datos', [], 500); } foreach ($users as $user) { // Inserta el nombre del usuario que lo registro y actualizó si hubo alguno. if ($workteam->REGISTERED_BY == $user->ID) { $workteam->REGISTERED_BY = $user->NAME; } if ($workteam->UPDATED_BY == $user->ID) { $workteam->UPDATED_BY = $user->NAME; } } // Inserta la fecha de registro y actualización si hubo alguna. $workteam->REGISTER_DATE = Carbon::create($workteam->REGISTER_DATE)->format("d-m-Y h:i:s A"); if ($workteam->UPDATE_DATE != null) { $workteam->UPDATE_DATE = Carbon::create($workteam->UPDATE_DATE)->format("d-m-Y h:i:s A"); } else { $workteam->UPDATE_DATE = "-"; } if ($workteam->UPDATED_BY == null) { $workteam->UPDATED_BY = "-"; } return $this->response_controller->makeResponse(FALSE, 'Consulta exitosa', $workteam, 200); } catch (Throwable $th) { return $this->response_controller ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG003: Error inesperado', strtoupper($th->getMessage()), 500); } } // Metodo para la eliminación lógica de un equipo de trabajo public function updateToInactiveStatus(Request $request, $id_workteam) { 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_EQUIPO_TRABAJO_REG001: Uno o más errores encontrados', $this->response_controller->makeErrors($validator->errors()->messages()), 400 ); } $workteam = DB::table('S002V01TEQMA') ->select("EQMA_IDEQ") ->where("EQMA_IDEQ", '=', $id_workteam) ->first(); // Verifica si el objeto esta vacio if (!isset($workteam) && empty($workteam)) { return $this->response_controller ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG002: No se encontró al equipo de trabajo', [], 500); } $workteam_has_employees = DB::table("S002V01TPEEM") ->select(DB::raw("COUNT(PEEM_IDEM) as MEMBERS_QUANTITY")) ->where("PEEM_IDEM", '=', $id_workteam) ->where("PEEM_ESTA", '=', 'Activo') ->where('PEEM_NULI', '=', $request->LINE_NUMBER) ->first(); // Verifica que el equipo no tenga empleados activos if ($workteam_has_employees->MEMBERS_QUANTITY > 0) { return $this->response_controller ->makeResponse(TRUE, 'ERR_EQUIPO_PERSONAL_REG003: El equipo de trabajo tiene miembros activos', $workteam_has_employees, 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_EQUIPO_TRABAJO_REG004: Tu usuario no es válido para eliminar equipos de trabajo", [], 500); } $UPDATE_DATE = Carbon::now()->timezone('America/Mexico_City')->toDateTimeString(); $delete_workteam = DB::table('S002V01TEQMA') ->where("EQMA_IDEQ", '=', $id_workteam) ->where('EQMA_NULI', '=', $request->LINE_NUMBER) ->update([ "EQMA_ESTA" => "Eliminado", "EQMA_USMO" => trim($request->SAVED_BY_USER), "EQMA_FEMO" => $UPDATE_DATE, "EQMA_FEAR" => DB::raw('CURRENT_TIMESTAMP') ]); if (!$delete_workteam) { return $this->response_controller ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG005: Algo salió mal, error eliminando al equipo de trabajo', [], 500); } return $this->response_controller ->makeResponse(FALSE, 'Eliminación exitosa'); } catch (Throwable $th) { return $this->response_controller ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG006: Error inesperado', strtoupper($th->getMessage()), 500); } } // Metodo para la activación lógica de un equipo de trabajo public function updateToActiveStatus(Request $request, $id_workteam) { 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_EQUIPO_TRABAJO_REG001: Uno o más errores encontrados', $this->response_controller->makeErrors($validator->errors()->messages()), 400 ); } $workteam = DB::table('S002V01TEQMA') ->select("EQMA_IDEQ") ->where("EQMA_IDEQ", '=', $id_workteam) ->first(); // Verifica si el objeto esta vacio if (!isset($workteam) && empty($workteam)) { return $this->response_controller ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG002: 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_EQUIPO_TRABAJO_REG003: Tu usuario no es válido para activar equipos de trabajo", [], 500); } $UPDATE_DATE = Carbon::now()->timezone('America/Mexico_City')->toDateTimeString(); $activate_workteam = DB::table('S002V01TEQMA') ->where("EQMA_IDEQ", '=', $id_workteam) ->where('EQMA_NULI', '=', $request->LINE_NUMBER) ->update([ "EQMA_ESTA" => "Activo", "EQMA_USMO" => trim($request->SAVED_BY_USER), "EQMA_FEMO" => $UPDATE_DATE, "EQMA_FEAR" => DB::raw('CURRENT_TIMESTAMP') ]); if (!$activate_workteam) { return $this->response_controller ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG004: Algo salió mal, error activando al equipo de trabajo', [], 500); } return $this->response_controller ->makeResponse(FALSE, 'Activación exitosa'); } catch (Throwable $th) { return $this->response_controller ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG005: Error inesperado', strtoupper($th->getMessage()), 500); } } // Metodo para guardar un equipo de trabajo public function storeWorkteam(Request $request) { try { $REGISTER_DATE = Carbon::now()->timezone('America/Mexico_City')->toDateTimeString(); $request['SAVED_BY_USER'] = $this->encrypt_controller->decrypt($request->SAVED_BY_USER); $validator = Validator::make($request->all(), [ "NAME" => ['required', 'max:100'], "SPECIALITY" => ['required', 'max:100'], "SAVED_BY_USER" => ['required', 'digits:10'], "LINE_NUMBER" => ['required', 'digits:1'] ]); if ($validator->fails()) { return $this->response_controller->makeResponse( TRUE, 'ERR_EQUIPO_TRABAJO_REG001: Uno o más errores encontrados', $this->response_controller->makeErrors($validator->errors()->messages()), 400 ); } $search_workteam_name = DB::table('S002V01TEQMA') ->select("EQMA_NOMB") ->where("EQMA_NOMB", '=', $request->NAME) ->where('EQMA_NULI', '=', $request->LINE_NUMBER) ->first(); // Verifica si el objeto tiene algo if (isset($search_workteam_name) && !empty($search_workteam_name)) { return $this->response_controller ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG002: El nombre ya fue tomado', [], 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 registrar equipos de trabajo", [], 500); } $insert_workteam = DB::table('S002V01TEQMA') ->insert([ "EQMA_NOMB" => $request->NAME, "EQMA_ESPE" => $request->SPECIALITY, "EQMA_NULI" => $request->LINE_NUMBER, "EQMA_ESTA" => "Activo", "EQMA_USRE" => $request->SAVED_BY_USER, "EQMA_FERE" => $REGISTER_DATE, "EQMA_FEAR" => DB::raw('CURRENT_TIMESTAMP') ]); if (!$insert_workteam) { return $this->response_controller ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG004: Algo salió mal, error registrando al equipo de trabajo', [], 500); } return $this->response_controller ->makeResponse(FALSE, 'CREACIÓN EXITOSA'); } catch (Throwable $th) { return $this->response_controller ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG005: Error inesperado', strtoupper($th->getMessage()), 500); } } // Metodo para actualizar un equipo de trabajo public function updateWorkteam(Request $request, $id_workteam) { try { $UPDATE_DATE = Carbon::now()->timezone('America/Mexico_City')->toDateTimeString(); $request['SAVED_BY_USER'] = $this->encrypt_controller->decrypt($request->SAVED_BY_USER); $validator = Validator::make($request->all(), [ "NAME" => ['required', 'max:100'], "SPECIALITY" => ['required', 'max:100'], "SAVED_BY_USER" => ['required', 'digits:10'], "LINE_NUMBER" => ['required', 'digits:1'] ]); if ($validator->fails()) { return $this->response_controller->makeResponse( TRUE, 'ERR_EQUIPO_TRABAJO_REG001: Uno o más errores encontrados', $this->response_controller->makeErrors($validator->errors()->messages()), 400 ); } $search_workteam = DB::table('S002V01TEQMA') ->select("EQMA_IDEQ") ->where("EQMA_IDEQ", '=', $id_workteam) ->where('EQMA_NULI', '=', $request->LINE_NUMBER) ->first(); // Verifica si el objeto esta vacio if (!isset($search_workteam) && empty($search_workteam)) { return $this->response_controller ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG002: No se encontró al equipo de trabajo', [], 500); } $search_workteam_name = DB::table('S002V01TEQMA') ->select("EQMA_NOMB") ->where("EQMA_NOMB", '=', $request->NAME) ->where("EQMA_IDEQ", '<>', $id_workteam) ->where('EQMA_NULI', '=', $request->LINE_NUMBER) ->first(); // Verifica si el objeto tiene algo if (isset($search_workteam_name) && !empty($search_workteam_name)) { return $this->response_controller ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG003: El nombre ya fue tomado', [], 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_REG004: Tu usuario no es válido para actualizar equipos de trabajo", [], 500); } $update_workteam = DB::table('S002V01TEQMA') ->where("EQMA_IDEQ", '=', $id_workteam) ->where('EQMA_NULI', '=', $request->LINE_NUMBER) ->update([ "EQMA_NOMB" => $request->NAME, "EQMA_ESPE" => $request->SPECIALITY, "EQMA_ESTA" => "Activo", "EQMA_USMO" => $request->SAVED_BY_USER, "EQMA_FEMO" => $UPDATE_DATE, "EQMA_FEAR" => DB::raw('CURRENT_TIMESTAMP') ]); if (!$update_workteam) { return $this->response_controller ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG005: Algo salió mal, error actualizando al equipo de trabajo', [], 500); } return $this->response_controller ->makeResponse(FALSE, 'Actualización exitosa'); } catch (Throwable $th) { return $this->response_controller ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG006: Error inesperado', strtoupper($th->getMessage()), 500); } } }