responseController = new ResponseController(); $this->encController = new EncryptionController(); $this->functionsController = new FunctionsController(); $this->resourcesController = new ResourcesController(); } public function getFailures($user, $line) { $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line); if ($arrResponseCheckUser['error']) { DB::rollBack(); return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401); } try { $arrFailures = DB::table('S002V01TLIFA') ->where('LIFA_NULI', '=', $line) ->get([ 'LIFA_IDFA AS ID_FALLA', 'LIFA_NOFA AS NOMBRE_FALLA', 'LIFA_NIVE AS NIVEL_CRITICIDAD', 'LIFA_CAUS AS CAUSA_FALLA', 'LIFA_SOLU AS SOLICION', 'LIFA_DESC AS DESCRIPCION', 'LIFA_ESTA AS ESTADO', 'LIFA_USRE AS USUARIO_REGISTRA', 'LIFA_FERE AS FECHA_REGISTRA', 'LIFA_USMO AS USUARIO_MODIFICA', 'LIFA_FEMO AS FECHA_MODIFICA', ]); $arrFailures = json_decode(json_encode($arrFailures), true); } catch (\Throwable $th) { return $this->responseController->makeResponse(true, "ERR_FAILURES_GET000: No se pudo realizar la consulta a la base.", $th->getMessage(), 500); } $responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate($arrFailures, $line); if ($responseCheckLatestUpdate['error']) { return $this->responseController->makeResponse(true, $responseCheckLatestUpdate['msg'], [], 500); } $arrFailures = $responseCheckLatestUpdate['response']; return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrFailures); } public function getFailuresActives($user, $line) { try { $getFailures = DB::table('S002V01TLIFA') ->where('LIFA_ESTA', '=', 'Activo') ->where('LIFA_NULI', '=', 1) ->get([ 'LIFA_IDFA AS ID_FALLA', 'LIFA_NOFA AS NOMBRE_FALLA', 'LIFA_NIVE AS NIVEL_CRITICIDAD', 'LIFA_CAUS AS CAUSA_FALLA', 'LIFA_SOLU AS SOLICION', 'LIFA_DESC AS DESCRIPCION', 'LIFA_ESTA AS ESTADO', 'LIFA_USRE AS USUARIO_REGISTRA', 'LIFA_FERE AS FECHA_REGISTRA', 'LIFA_USMO AS USUARIO_MODIFICA', 'LIFA_FEMO AS FECHA_MODIFICA', ]); } catch (\Throwable $th) { return $this->responseController->makeResponse(true, "ERR_FAILURES_GET000: No se pudo realizar la consulta a la base.", $th->getMessage(), 500); } return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $getFailures); } public function getFailureById($idFailure, $user, $line) { $idFailure = $this->encController->decrypt($idFailure); try { $arrFailures = (array) DB::table('S002V01TLIFA') ->where('LIFA_IDFA', '=', $idFailure) ->where('LIFA_NULI', '=', $line) ->where('LIFA_ESTA', '=', 'Activo') ->first([ 'LIFA_IDFA AS ID_FALLA', 'LIFA_NOFA AS NOMBRE_FALLA', 'LIFA_NIVE AS NIVEL_CRITICIDAD', 'LIFA_CAUS AS CAUSA_FALLA', 'LIFA_SOLU AS SOLICION', 'LIFA_DESC AS DESCRIPCION', 'LIFA_ESTA AS ESTADO', 'LIFA_USRE AS USUARIO_REGISTRA', 'LIFA_FERE AS FECHA_REGISTRA', 'LIFA_USMO AS USUARIO_MODIFICA', 'LIFA_FEMO AS FECHA_MODIFICA', ]); } catch (\Throwable $th) { return $this->responseController->makeResponse( true, "ERR_FAILURES_GETBYID000: No se pudo realizar la consulta a la base.", $th->getMessage(), 500 ); } if ( !empty($arrFailures) ) { try { $arrEquipment = DB::table('S002V01TLFEQ') ->where('LFEQ_IDFA', '=', $arrFailures['ID_FALLA']) ->where('LFEQ_NULI', '=', $line) ->where('LFEQ_ESTA', '=', 'Activo') ->where('EQUI_NULI', '=', $line) ->join('S002V01TEQUI', 'EQUI_COEQ', '=', 'LFEQ_COEQ') ->get([ 'EQUI_COEQ AS CODIGO', 'EQUI_TIPO AS TIPO', 'EQUI_MODE AS MODELO', 'EQUI_IDEQ AS ID_EQUIPO', 'EQUI_ESFU AS ESTADO_FUNCIONAMIENTO', // 'EQUI_GAIM AS GALERIA_IMAGENES', 'EQUI_ELOR AS ELEMENTO_ORIGEN', 'EQUI_TICO AS TIPO_CODIGO' ]); } catch (\Throwable $th) { return $this->responseController->makeResponse( true, "ERR_FAILURES_GETBYID001: No se pudo realizar la consulta a la base.", $th->getMessage(), 500 ); } $arrEquipment = json_decode( json_encode($arrEquipment), true ); foreach ($arrEquipment as $keyEquipment => $equipment) { $equipment['ID_EQUIPO'] = strval($equipment['ID_EQUIPO']); $arrEquipment[$keyEquipment] = $equipment; } $arrFailures['EQUIPAMIENTOS'] = $arrEquipment; } return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrFailures); } public function getFailureListByClassification($clasificate, $user, $line) { try { $clasificate = $this->encController->decrypt($clasificate); } catch (\Throwable $th) { return $this->responseController->makeResponse(true, "ERR_FAILURES_GETCLASS000: No se pudo obtener las clasificación.", $th->getMessage(), 500); } try { $getFailures = DB::table('S002V01TLIFA') ->where('LIFA_NIVE', '=', $clasificate) ->where('LIFA_ESTA', '=', 'Activo') ->where('LIFA_NULI', '=', 1) ->get([ 'LIFA_IDFA AS ID_FALLA', 'LIFA_NOFA AS NOMBRE_FALLA', 'LIFA_NIVE AS NIVEL_CRITICIDAD', 'LIFA_CAUS AS CAUSA_FALLA', 'LIFA_SOLU AS SOLICION', 'LIFA_DESC AS DESCRIPCION', 'LIFA_ESTA AS ESTADO', 'LIFA_USRE AS USUARIO_REGISTRA', 'LIFA_FERE AS FECHA_REGISTRA', 'LIFA_USMO AS USUARIO_MODIFICA', 'LIFA_FEMO AS FECHA_MODIFICA', ]); } catch (\Throwable $th) { return $this->responseController->makeResponse(true, "ERR_FAILURES_GETCLASS001: No se pudo realizar la consulta a la base.", $th->getMessage(), 500); } return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $getFailures); } public function registerFailures(Request $request) { $validator = Validator::make($request->all(), [ 'NOMBRE_FALLA' => 'required|string', 'NIVEL' => 'required|string', 'CAUSA' => 'required|string', 'SOLUCION' => 'required|string', 'DESCRIPCION' => 'required|string', 'EQUIPAMIENTOS' => 'required', 'NUMERO_LINEA' => 'required|integer', 'USUARIO' => 'required|string', ]); if ($validator->fails()) { return $this->responseController->makeResponse( true, "ERR_FAILURES_REG000: Se encontraron uno o más errores.", $this->responseController->makeErrors($validator->errors()->messages()), 401 ); } DB::beginTransaction(); $requestData = $request->all(); try { $user = $this->encController->decrypt($requestData['USUARIO']); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_FAILURES_REG001: No se pudo obtener el usuario.", $th->getMessage(), 500); } $now = $this->functionsController->now(); $currentDate = $now->toDateTimeString(); try { $idFailure = DB::table('S002V01TLIFA')->insertGetId([ 'LIFA_NULI' => $requestData['NUMERO_LINEA'], 'LIFA_NOFA' => $requestData['NOMBRE_FALLA'], 'LIFA_NIVE' => $requestData['NIVEL'], 'LIFA_CAUS' => $requestData['CAUSA'], 'LIFA_SOLU' => $requestData['SOLUCION'], 'LIFA_DESC' => $requestData['DESCRIPCION'], 'LIFA_USRE' => $user, 'LIFA_FERE' => $currentDate, 'LIFA_FEAR' => DB::raw('CURRENT_TIMESTAMP'), ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_FAILURES_REG002: Ocurrió un error al registrar el formulario en la lista de falla.", $th->getMessage(), 500 ); } if ( !$idFailure ) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_FAILURES_REG003: No se pudo registrar el formulario en la lista de falla.", [], 500 ); } foreach ($requestData['EQUIPAMIENTOS'] as $keyEquipment => $equipment) { try { $validateRegisterEquipment = DB::table('S002V01TLFEQ')->insert([ 'LFEQ_NULI' => $requestData['NUMERO_LINEA'], 'LFEQ_IDFA' => $idFailure, 'LFEQ_COEQ' => $equipment, 'LFEQ_USRE' => $user, 'LFEQ_FERE' => $currentDate, 'LFEQ_FEAR' => DB::raw('CURRENT_TIMESTAMP'), ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_FAILURES_REG004: Ocurrió un error al registrar el formulario en la lista de falla.", $th->getMessage(), 500 ); } if ( !$validateRegisterEquipment ) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_FAILURES_REG005: No se pudo registrar el equipamiento $equipment en la lista de fallas.", [], 500 ); } } DB::commit(); return $this->responseController->makeResponse(false, "ÉXITO: Registro Exitoso"); } public function updateFailures(Request $request) { $validator = Validator::make($request->all(), [ 'ID_FALLA' => 'required|integer', 'NOMBRE_FALLA' => 'required|string', 'NIVEL' => 'required|string', 'CAUSA' => 'required|string', 'SOLUCION' => 'required|string', 'DESCRIPCION' => 'required|string', 'EQUIPAMIENTOS' => 'required', 'NUMERO_LINEA' => 'required|integer', 'USUARIO' => 'required|string', ]); if ($validator->fails()) { return $this->responseController->makeResponse( true, "ERR_FAILURES_UPD000: Se encontraron uno o más errores.", $this->responseController->makeErrors($validator->errors()->messages()), 401 ); } DB::beginTransaction(); $requestData = $request->all(); try { $user = $this->encController->decrypt($request['USUARIO']); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_FAILURES_UPD001: No se pudo obtener el usuario.", $th->getMessage(), 500); } $now = $this->functionsController->now(); $currentDate = $now->toDateTimeString(); try { $idFailure = DB::table('S002V01TLIFA') ->where('LIFA_NULI', '=', $requestData['NUMERO_LINEA']) ->where('LIFA_IDFA', '=', $requestData['ID_FALLA']) ->update([ 'LIFA_NOFA' => $requestData['NOMBRE_FALLA'], 'LIFA_NIVE' => $requestData['NIVEL'], 'LIFA_CAUS' => $requestData['CAUSA'], 'LIFA_SOLU' => $requestData['SOLUCION'], 'LIFA_DESC' => $requestData['DESCRIPCION'], 'LIFA_USMO' => $user, 'LIFA_FEMO' => $currentDate, 'LIFA_FEAR' => DB::raw('CURRENT_TIMESTAMP'), ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_FAILURES_UPD002: Ocurrió un error al modificar el formulario en la lista de falla.", $th->getMessage(), 500 ); } if ( !$idFailure ) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_FAILURES_UPD003: No se pudo modificar el formulario en la lista de falla.", [], 500 ); } foreach ($requestData['EQUIPAMIENTOS'] as $keyEquipment => $equipment) { try { $validateExists = DB::table('S002V01TLFEQ') ->where('LFEQ_IDFA', '=', $requestData['ID_FALLA']) ->where('LFEQ_NULI', '=', $requestData['NUMERO_LINEA']) ->where('LFEQ_COEQ', '=', $equipment) ->exists(); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_FAILURES_UPD004: Ocurrió un error al consultar el equipamiento.", $th->getMessage(), 500 ); } if ( $validateExists ) { try { $validate = DB::table('S002V01TLFEQ') ->where('LFEQ_NULI', '=', $requestData['NUMERO_LINEA']) ->where('LFEQ_IDFA', '=', $requestData['ID_FALLA']) ->where('LFEQ_COEQ', '=', $equipment) ->update([ 'LFEQ_ESTA' => 'Activo', 'LFEQ_USMO' => $user, 'LFEQ_FEMO' => $currentDate, 'LFEQ_FEAR' => DB::raw('CURRENT_TIMESTAMP'), ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_FAILURES_UPD005: Ocurrió un error al modificar el formulario en la lista de falla el equipamiento $equipment.", $th->getMessage(), 500 ); } } else { try { $validate = DB::table('S002V01TLFEQ')->insert([ 'LFEQ_NULI' => $requestData['NUMERO_LINEA'], 'LFEQ_IDFA' => $requestData['ID_FALLA'], 'LFEQ_COEQ' => $equipment, 'LFEQ_USRE' => $user, 'LFEQ_FERE' => $currentDate, 'LFEQ_FEAR' => DB::raw('CURRENT_TIMESTAMP'), ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_FAILURES_UPD006: Ocurrió un error al registrar el formulario en la lista de falla el equipamiento $equipment.", $th->getMessage(), 500 ); } } if ( !$validate ) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_FAILURES_UPD007: No se pudo modificar el equipamiento $equipment en la lista de fallas.", [], 500 ); } } try { $getListEquipment = DB::table('S002V01TLFEQ') ->where('LFEQ_IDFA', '=', $requestData['ID_FALLA']) ->where('LFEQ_NULI', '=', $requestData['NUMERO_LINEA']) ->get([ 'LFEQ_IDLF', 'LFEQ_IDFA', 'LFEQ_COEQ', 'LFEQ_ESTA', ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_FAILURES_UPD008: Ocurrió un error al consultar la lista de equipamientos.", $th->getMessage(), 500 ); } $arrListEquipment = json_decode( json_encode($getListEquipment), true ); foreach ($arrListEquipment as $keyListEquipment => $listEquipment) { if( !in_array($listEquipment['LFEQ_COEQ'], $requestData['EQUIPAMIENTOS']) ) { try { $validateDelete = DB::table('S002V01TLFEQ') ->where('LFEQ_NULI', '=', $requestData['NUMERO_LINEA']) ->where('LFEQ_IDFA', '=', $requestData['ID_FALLA']) ->where('LFEQ_COEQ', '=', $listEquipment['LFEQ_COEQ']) ->update([ 'LFEQ_ESTA' => 'Eliminado', 'LFEQ_USMO' => $user, 'LFEQ_FEMO' => $currentDate, 'LFEQ_FEAR' => DB::raw('CURRENT_TIMESTAMP'), ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_FAILURES_UPD009: Ocurrió un error al eliminar de la lista de falla el equipamiento ". $listEquipment['LFEQ_COEQ'].".", $th->getMessage(), 500 ); } if ( !$validateDelete ) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_FAILURES_UPD010: No se pudo eliminar de la lista de falla el equipamiento ". $listEquipment['LFEQ_COEQ'].".", [], 500 ); } } } DB::commit(); return $this->responseController->makeResponse(false, "ÉXITO: Modificación Exitosa"); } public function deleteFailures(Request $request) { $validator = Validator::make($request->all(), [ 'ID_FALLA' => 'required|integer', 'NUMERO_LINEA' => 'required|integer', 'USUARIO' => 'required|string', ]); if ($validator->fails()) { return $this->responseController->makeResponse( true, "ERR_FAILURES_DEL000: Se encontraron uno o más errores.", $this->responseController->makeErrors($validator->errors()->messages()), 401 ); } DB::beginTransaction(); $requestData = $request->all(); try { $user = $this->encController->decrypt($request['USUARIO']); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_FAILURES_DEL001: No se pudo obtener el usuario.", $th->getMessage(), 500); } $now = $this->functionsController->now(); $currentDate = $now->toDateTimeString(); try { $exist = DB::table('S002V01TLIFA') ->where('LIFA_IDFA', '=', $requestData['ID_FALLA']) ->where('LIFA_NULI', '=', $requestData['NUMERO_LINEA']) ->exists(); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_FAILURES_DEL002: Ocurrió un error al consultar en la base de datos.", $th->getMessage(), 500); } if (!$exist) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_FAILURES_DEL003: No se pudo encontrar el registro dentro de la base de datos.", [], 500); } try { $validateUpdate = DB::table('S002V01TLIFA') ->where('LIFA_IDFA', '=', $requestData['ID_FALLA']) ->where('LIFA_NULI', '=', $requestData['NUMERO_LINEA']) ->update([ 'LIFA_ESTA' => 'Eliminado', 'LIFA_USMO' => $user, 'LIFA_FEMO' => $currentDate, 'LIFA_FEAR' => DB::raw('CURRENT_TIMESTAMP'), ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_FAILURES_DEL004: Ocurrió un error al modificar el formulario en la base de datos.", $th->getMessage(), 500); } if (!$validateUpdate) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_FAILURES_DEL005: No se pudo modificar el formulario en la base de datos.", [], 500); } try { $validateDelete = DB::table('S002V01TLFEQ') ->where('LFEQ_IDFA', '=', $requestData['ID_FALLA']) ->where('LFEQ_NULI', '=', $requestData['NUMERO_LINEA']) ->update([ 'LFEQ_ESTA' => 'Eliminado', 'LFEQ_USMO' => $user, 'LFEQ_FEMO' => $currentDate, 'LFEQ_FEAR' => DB::raw('CURRENT_TIMESTAMP'), ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_FAILURES_DEL006: Ocurrió un error al eliminar la lista de equipamientos.", $th->getMessage(), 500 ); } if ( !$validateDelete ) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_FAILURES_DEL007: No se pudo eliminar la lista de equipamientos.", [], 500); } DB::commit(); return $this->responseController->makeResponse(false, "ÉXITO: Eliminación Exitosa"); } public function getFailureLog($user, $line) { try { $getFailureLog = DB::table('S002V01TBIFA') ->where('BIFA_NULI', '=', $line) ->where('LIFA_NULI', '=', $line) ->where('LISI_NULI', '=', $line) ->where('LIME_NULI', '=', $line) ->where('LIFA_ESTA', '=', 'Activo') ->where('LISI_ESTA', '=', 'Activo') ->where('LIME_ESTA', '=', 'Activo') ->join('S002V01TLIFA', 'LIFA_IDFA', '=', 'BIFA_IDFA') ->join('S002V01TLISI', 'LISI_IDSI', '=', 'BIFA_IDSI') ->join('S002V01TLIME', 'LIME_IDME', '=', 'BIFA_IDME') ->get([ 'BIFA_NUFA AS NUMERO_FALLA', 'BIFA_COEQ AS CODIGO_EQUIPAMIENTO', 'BIFA_ESFA AS ESTADO_FALLA', 'LIFA_IDFA AS ID_FALLA', 'LIFA_NOFA AS NOMBRE_FALLA', 'LIFA_NIVE AS NIVEL_CRITICIDAD_FALLA', 'LIFA_CAUS AS CAUSA_FALLA', 'LISI_IDSI AS ID_SINTOMA', 'LISI_NOSI AS NOMBRE_SINTOMA', 'LISI_CLAS AS CLASIFICACION_SINTOMA', 'LISI_CAUS AS CAUSA_SINTOMA', 'BIFA_FEFA AS FECHA_FALLA', 'BIFA_REPA AS REPARABLE', 'BIFA_DESO AS SOLUCION', 'BIFA_COME AS COMENTARIOS', 'BIFA_VAOB AS VALOR_OBTENIDO', 'LIME_IDME AS ID_MEDIDA', 'LIME_NOME AS NOMBRE_MEDIDA', 'LIME_ACME AS ACRONIMO_MEDIDA', 'BIFA_ESTA AS ESTADO', 'BIFA_USRE AS USUARIO_REGISTRA', 'BIFA_FERE AS FECHA_REGISTRA', 'BIFA_USMO AS USUARIO_MODIFICA', 'BIFA_FEMO AS FECHA_MODIFICA', ]); } catch (\Throwable $th) { return $this->responseController->makeResponse(true, "ERR_FAILURELOG_GET000: No se pudo realizar la consulta a la base.", $th->getMessage(), 500); } $arrFailureLog = json_decode( json_encode( $getFailureLog ), true ); $arrEquipmentCode = array_column($arrFailureLog, 'CODIGO_EQUIPAMIENTO'); $arrEquipmentCode = array_unique($arrEquipmentCode); $count = 0; $arrEquipmentFailureLog = array(); foreach ($arrEquipmentCode as $keyEquipmentCode => $equipmentCode) { $lastUpdate = ''; $lastUser = ''; $lastState = ''; $lastClassification = ''; $amountFailures = 0; foreach ($arrFailureLog as $keyFailureLog => $failureLog) { if ( $equipmentCode === $failureLog['CODIGO_EQUIPAMIENTO'] ) { $tempLastUpdate = ''; $tempLastUser = ''; if ( is_null($failureLog['FECHA_MODIFICA']) ) { $tempLastUpdate = $failureLog['FECHA_REGISTRA']; $tempLastUser = $failureLog['USUARIO_REGISTRA']; } else { $tempLastUpdate = $failureLog['FECHA_MODIFICA']; $tempLastUser = $failureLog['USUARIO_MODIFICA']; } if ($lastUpdate === '') { $lastUpdate = $tempLastUpdate; $lastUser = $tempLastUser; $lastState = $failureLog['ESTADO_FALLA']; $lastClassification = $failureLog['NIVEL_CRITICIDAD_FALLA']; } else { $carTempLastUpdate = Carbon::create($tempLastUpdate); $carLastState = Carbon::create($lastUpdate); if ($carTempLastUpdate->greaterThan($carLastState)) { $lastUpdate = $tempLastUpdate; $lastUser = $tempLastUser; $lastState = $failureLog['ESTADO_FALLA']; $lastClassification = $failureLog['NIVEL_CRITICIDAD_FALLA']; } } $amountFailures ++; } } $arrEquipmentFailureLog[$count]['CODIGO_EQUIPAMIENTO'] = $equipmentCode; $arrEquipmentFailureLog[$count]['ULTIMA_MODIFICACION'] = $lastUpdate; $arrEquipmentFailureLog[$count]['ULTIMO_USUARIO'] = $lastUser; $arrEquipmentFailureLog[$count]['ESTADO_ACTUAL'] = $lastState; $arrEquipmentFailureLog[$count]['CLASIFICACION_ACTUAL'] = $lastClassification; $arrEquipmentFailureLog[$count]['CANTIDAD_FALLAS'] = $amountFailures; $count++; } return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrEquipmentFailureLog); } public function getHistoryFailureEquipment($equipment, $user, $line) { $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line); if ($arrResponseCheckUser['error']) { DB::rollBack(); return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401); } try { $equipment = $this->encController->decrypt($equipment); } catch (\Throwable $th) { return $this->responseController->makeResponse(true, "ERR_GETHISTORY_GETEQUIPMENT000", $th->getMessage(), 500); } try { $getFailuresLog = DB::table('S002V01TBIFA') ->where('BIFA_COEQ', '=', $equipment) ->where('BIFA_NULI', '=', $line) ->where('BIFA_ESTA', '=', 'Activo') ->where('LIFA_ESTA', '=', 'Activo') ->where('LISI_ESTA', '=', 'Activo') ->where('LIME_ESTA', '=', 'Activo') ->join('S002V01TLIFA', 'LIFA_IDFA', '=', 'BIFA_IDFA') ->join('S002V01TLISI', 'LISI_IDSI', '=', 'BIFA_IDSI') ->join('S002V01TLIME', 'LIME_IDME', '=', 'BIFA_IDME') ->get([ 'BIFA_NUFA AS NUMERO_FALLA', 'BIFA_COEQ AS CODIGO_EQUIPAMIENTO', 'BIFA_ESFA AS ESTADO_FALLA', 'LIFA_IDFA AS ID_FALLA', 'LIFA_NOFA AS NOMBRE_FALLA', 'LIFA_NIVE AS NIVEL_CRITICIDAD_FALLA', 'LIFA_CAUS AS CAUSA_FALLA', 'LISI_IDSI AS ID_SINTOMA', 'LISI_NOSI AS NOMBRE_SINTOMA', 'LISI_CLAS AS CLASIFICACION_SINTOMA', 'LISI_CAUS AS CAUSA_SINTOMA', 'BIFA_FEFA AS FECHA_FALLA', 'BIFA_REPA AS REPARABLE', 'BIFA_DESO AS SOLUCION', 'BIFA_COME AS COMENTARIOS', 'BIFA_VAOB AS VALOR_OBTENIDO', 'LIME_IDME AS ID_MEDIDA', 'LIME_NOME AS NOMBRE_MEDIDA', 'LIME_ACME AS ACRONIMO_MEDIDA', 'BIFA_USRE AS USUARIO_REGISTRA', 'BIFA_FERE AS FECHA_REGISTRA', 'BIFA_USMO AS USUARIO_MODIFICA', 'BIFA_FEMO AS FECHA_MODIFICA', ]); } catch (\Throwable $th) { return $this->responseController->makeResponse(true, "ERR_GETHISTORY_GETEQUIPMENT001: No se pudo realizar la consulta a la base.", $th->getMessage(), 500); } $arrFailureLogTemp = json_decode( json_encode( $getFailuresLog ), true ); $arrFailureLog = array(); foreach ($arrFailureLogTemp as $keyFailureLogTemp => $failureLogTemp) { $numero_falla = $failureLogTemp['NUMERO_FALLA']; $nombre_falla = $failureLogTemp['NOMBRE_FALLA'].' ('.$failureLogTemp['ID_FALLA'].')'; $nivel_criticidad_falla = $failureLogTemp['NIVEL_CRITICIDAD_FALLA']; $nombre_sintoma = $failureLogTemp['NOMBRE_SINTOMA'].' ('.$failureLogTemp['ID_SINTOMA'].')'; $estado_falla = $failureLogTemp['ESTADO_FALLA']; $causa = $failureLogTemp['CAUSA_FALLA']; $fecha_fala = $failureLogTemp['FECHA_FALLA']; $reparable = $failureLogTemp['REPARABLE'] === 1 ? 'Si' : 'No'; $arrFailureLog[] = [ 'NUMERO_FALLA' => $numero_falla, 'NOMBRE_FALLA' => $nombre_falla, 'NIVEL_CRITICIDAD_FALLA' => $nivel_criticidad_falla, 'ESTADO_FALLA' => $estado_falla, 'CAUSA' => $causa, 'FECHA_FALLA' => $fecha_fala, 'REPARABLE' => $reparable, 'USUARIO_REGISTRA' => $failureLogTemp['USUARIO_REGISTRA'], 'FECHA_REGISTRA' => $failureLogTemp['FECHA_REGISTRA'], 'USUARIO_MODIFICA' =>$failureLogTemp['USUARIO_MODIFICA'], 'FECHA_MODIFICA' => $failureLogTemp['FECHA_MODIFICA'], ]; } $responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate($arrFailureLog, $line); if ($responseCheckLatestUpdate['error']) { return $this->responseController->makeResponse(true, $responseCheckLatestUpdate['msg'], [], 500); } $arrFailureLog = $responseCheckLatestUpdate['response']; return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrFailureLog); } public function getDetailsHistoryFailureEquipment($failure, $user, $line) { try { $failure = $this->encController->decrypt($failure); } catch (\Throwable $th) { return $this->responseController->makeResponse(true, "ERR_GETHISTORY_GETEQUIPMENT000", $th->getMessage(), 500); } try { $getFailureLog = DB::table('S002V01TBIFA') ->where('BIFA_NUFA', '=', $failure) ->where('BIFA_NULI', '=', $line) ->where('LIFA_NULI', '=', $line) ->where('LISI_NULI', '=', $line) ->where('LIME_NULI', '=', $line) ->where('BIFA_ESTA', '=', 'Activo') ->where('LIFA_ESTA', '=', 'Activo') ->where('LISI_ESTA', '=', 'Activo') ->where('LIME_ESTA', '=', 'Activo') ->join('S002V01TLIFA', 'LIFA_IDFA', '=', 'BIFA_IDFA') ->join('S002V01TLISI', 'LISI_IDSI', '=', 'BIFA_IDSI') ->join('S002V01TLIME', 'LIME_IDME', '=', 'BIFA_IDME') ->first([ 'BIFA_NUFA AS NUMERO_FALLA', 'BIFA_COEQ AS CODIGO_EQUIPAMIENTO', 'BIFA_ESFA AS ESTADO_FALLA', 'LIFA_IDFA AS ID_FALLA', 'LIFA_NOFA AS NOMBRE_FALLA', 'LIFA_NIVE AS NIVEL_CRITICIDAD_FALLA', 'LIFA_CAUS AS CAUSA_FALLA', 'LISI_IDSI AS ID_SINTOMA', 'LISI_NOSI AS NOMBRE_SINTOMA', 'LISI_CLAS AS CLASIFICACION_SINTOMA', 'LISI_CAUS AS CAUSA_SINTOMA', 'BIFA_FEFA AS FECHA_FALLA', 'BIFA_FERF AS FECHA_RESOLUCION', 'BIFA_REPA AS REPARABLE', 'BIFA_DESO AS SOLUCION', 'BIFA_COME AS COMENTARIOS', 'BIFA_VAOB AS VALOR_OBTENIDO', 'LIME_IDME AS ID_MEDIDA', 'LIME_NOME AS NOMBRE_MEDIDA', 'LIME_ACME AS ACRONIMO_MEDIDA', ]); } catch (\Throwable $th) { return $this->responseController->makeResponse(true, "ERR_FAILURELOG_GETACTIVE000: No se pudo realizar la consulta a la base.", $th->getMessage(), 500); } $arrFailureLog = json_decode( json_encode( $getFailureLog ), true ); return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrFailureLog); } public function getFailureLogActives($user, $line) { try { $getFailureLog = DB::table('S002V01TBIFA') ->where('BIFA_NULI', '=', $line) ->where('LIFA_NULI', '=', $line) ->where('LISI_NULI', '=', $line) ->where('LIME_NULI', '=', $line) ->where('BIFA_ESTA', '=', 'Activo') ->where('LIFA_ESTA', '=', 'Activo') ->where('LISI_ESTA', '=', 'Activo') ->where('LIME_ESTA', '=', 'Activo') ->join('S002V01TLIFA', 'LIFA_IDFA', '=', 'BIFA_IDFA') ->join('S002V01TLISI', 'LISI_IDSI', '=', 'BIFA_IDSI') ->join('S002V01TLIME', 'LIME_IDME', '=', 'BIFA_IDME') ->get([ 'BIFA_NUFA AS NUMERO_FALLA', 'BIFA_COEQ AS CODIGO_EQUIPAMIENTO', 'LIFA_IDFA AS ID_FALLA', 'LIFA_NOFA AS NOMBRE_FALLA', 'LIFA_NIVE AS NIVEL_CRITICIDAD_FALLA', 'LIFA_CAUS AS CAUSA_FALLA', 'LISI_IDSI AS ID_SINTOMA', 'LISI_NOSI AS NOMBRE_SINTOMA', 'LISI_CLAS AS CLASIFICACION_SINTOMA', 'LISI_CAUS AS CAUSA_SINTOMA', 'BIFA_FEFA AS FECHA_FALLA', 'BIFA_REPA AS REPARABLE', 'BIFA_DESO AS SOLUCION', 'BIFA_COME AS COMENTARIOS', 'BIFA_VAOB AS VALOR_OBTENIDO', 'LIME_IDME AS ID_MEDIDA', 'LIME_NOME AS NOMBRE_MEDIDA', 'LIME_ACME AS ACRONIMO_MEDIDA', 'BIFA_USRE AS USUARIO_REGISTRA', 'BIFA_FERE AS FECHA_REGISTRA', 'BIFA_USMO AS USUARIO_MODIFICA', 'BIFA_FEMO AS FECHA_MODIFICA', ]); } catch (\Throwable $th) { return $this->responseController->makeResponse(true, "ERR_FAILURELOG_GETACTIVE000: No se pudo realizar la consulta a la base.", $th->getMessage(), 500); } $arrFailureLog = json_decode( json_encode( $getFailureLog ), true ); return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrFailureLog); } public function getEquipmentByFailure($failure, $user, $line) { try { $failure = $this->encController->decrypt($failure); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_FAILURES_EQUIPMENT000: No se pudo obtener el usuario.", $th->getMessage(), 500); } try { $getEquipmentByFailure = DB::table('S002V01TBIFA') ->where('BIFA_IDFA', '=', $failure) ->where('BIFA_NULI', '=', $line) ->where('BIFA_ESTA', '=', 'Activo') ->join('S002V01TLIME', 'LIME_IDME', '=', 'BIFA_IDME') ->get([ 'BIFA_COEQ AS CODIGO_EQUIPAMIENTO', 'BIFA_ESFA AS ESTADO_FALLA', 'BIFA_FEFA AS FECHA_FALLA', 'BIFA_FERF AS FECHA_REPARACION', 'BIFA_VAOB AS VALOR_OBTENIDO', 'LIME_IDME AS ID_MEDIDA', 'LIME_NOME AS NOMBRE_MEDIDA', 'LIME_ACME AS ACRONIMO_MEDIDA', ]); } catch (\Throwable $th) { return $this->responseController->makeResponse( true, "ERR_FAILURES_EQUIPMENT001: No se pudo realizar la consulta a la base.", $th->getMessage(), 500 ); } $arrFaultyEquipment = json_decode(json_encode($getEquipmentByFailure), true); $arrEquipmentCode = array_column($arrFaultyEquipment, 'CODIGO_EQUIPAMIENTO'); $arrEquipmentCode = array_unique($arrEquipmentCode); $count = 0; $arrEquipmentFailureLog = array(); foreach ($arrEquipmentCode as $keyEquipmentCode => $equipmentCode) { foreach ($arrFaultyEquipment as $keyFaultyEquipment => $faultyEquipment) { if ( $equipmentCode === $faultyEquipment['CODIGO_EQUIPAMIENTO'] ) { $arrEquipmentFailureLog[$count]['CODIGO_EQUIPAMIENTO'] = $faultyEquipment['CODIGO_EQUIPAMIENTO']; $arrEquipmentFailureLog[$count]['DETALLES'][] = [ 'ESTADO_FALLA' => $faultyEquipment['ESTADO_FALLA'], 'FECHA_FALLA' => $faultyEquipment['FECHA_FALLA'], 'FECHA_REPARACION' => $faultyEquipment['FECHA_REPARACION'], 'VALOR_OBTENIDO' => $faultyEquipment['VALOR_OBTENIDO'], 'ID_MEDIDA' => $faultyEquipment['ID_MEDIDA'], 'NOMBRE_MEDIDA' => $faultyEquipment['NOMBRE_MEDIDA'], 'ACRONIMO_MEDIDA' => $faultyEquipment['ACRONIMO_MEDIDA'], ]; } } $count++; } return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrEquipmentFailureLog); } public function getAlarmEmissionFromFailures($user, $line) { try { $getAlarmEmission = DB::table('S002V01TBIFA') ->where('BIFA_NULI', '=', $line) ->where('BIFA_ESTA', '=', 'Activo') ->where('ACTI_NULI', '=', $line) ->join('S002V01TACTI', 'ACTI_IDAC', '=', 'BIFA_IDAC') ->get([ 'BIFA_NUFA AS NUMERO_FALLA', 'BIFA_COEQ AS CODIGO_EQUIPAMIENTO', 'ACTI_IDAC AS ID_ACTIVADOR', 'BIFA_FEFA AS FECHA_FALLA', 'ACTI_PRIO AS PRIORIDAD', 'ACTI_TIAC AS TIPO_ACTIVADOR', 'ACTI_COAC AS CONDICION_ACTIVADOR', ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_FAILURES_ALARM000: No se pudo obtener la información de la base de datos.", $th->getMessage(), 500); } $arrAlarmEmission = json_decode(json_encode($getAlarmEmission), true); foreach ($arrAlarmEmission as $key => $alarmEmission) { switch ($alarmEmission['PRIORIDAD']) { case 1: $alarmEmission['PRIORIDAD'] = 'Muy alta'; break; case 2: $alarmEmission['PRIORIDAD'] = 'Alta'; break; case 3: $alarmEmission['PRIORIDAD'] = 'Media'; break; case 4: $alarmEmission['PRIORIDAD'] = 'Baja'; break; } $arrAlarmEmission[$key] = $alarmEmission; } return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrAlarmEmission); } public function generateSheetFailureXLS($failure, $user, $line) { try { $failure = $this->encController->decrypt($failure); } catch (\Throwable $th) { return $this->responseController->makeResponse(true, "ERR_FAILURELOG_GENERATEXLS000", $th->getMessage(), 500); } try { $user = $this->encController->decrypt($user); } catch (\Throwable $th) { return $this->responseController->makeResponse(true, "ERR_FAILURELOG_GENERATEXLS001", $th->getMessage(), 500); } try { $getFailureLog = DB::table('S002V01TBIFA') ->where('BIFA_NUFA', '=', $failure) ->where('BIFA_NULI', '=', $line) ->where('LIFA_NULI', '=', $line) ->where('LISI_NULI', '=', $line) ->where('LIME_NULI', '=', $line) ->where('BIFA_ESTA', '=', 'Activo') ->where('LIFA_ESTA', '=', 'Activo') ->where('LISI_ESTA', '=', 'Activo') ->where('LIME_ESTA', '=', 'Activo') ->join('S002V01TLIFA', 'LIFA_IDFA', '=', 'BIFA_IDFA') ->join('S002V01TLISI', 'LISI_IDSI', '=', 'BIFA_IDSI') ->join('S002V01TLIME', 'LIME_IDME', '=', 'BIFA_IDME') ->first([ 'BIFA_NUFA AS NUMERO_FALLA', 'BIFA_COEQ AS CODIGO_EQUIPAMIENTO', 'BIFA_ESFA AS ESTADO_FALLA', 'LIFA_IDFA AS ID_FALLA', 'LIFA_NOFA AS NOMBRE_FALLA', 'LIFA_NIVE AS NIVEL_CRITICIDAD_FALLA', 'LIFA_CAUS AS CAUSA_FALLA', 'LISI_IDSI AS ID_SINTOMA', 'LISI_NOSI AS NOMBRE_SINTOMA', 'LISI_CLAS AS CLASIFICACION_SINTOMA', 'LISI_CAUS AS CAUSA_SINTOMA', 'BIFA_FEFA AS FECHA_FALLA', 'BIFA_FERF AS FECHA_RESOLUCION', 'BIFA_REPA AS REPARABLE', 'BIFA_DESO AS SOLUCION', 'BIFA_COME AS COMENTARIOS', 'BIFA_VAOB AS VALOR_OBTENIDO', 'LIME_IDME AS ID_MEDIDA', 'LIME_NOME AS NOMBRE_MEDIDA', 'LIME_ACME AS ACRONIMO_MEDIDA', ]); } catch (\Throwable $th) { return $this->responseController->makeResponse(true, "ERR_FAILURELOG_GENERATEXLS002: No se pudo realizar la consulta a la base.", $th->getMessage(), 500); } $arrFailureLog = json_decode( json_encode( $getFailureLog ), true ); $spreadsheet = new Spreadsheet(); $activeWorksheet = $spreadsheet->getActiveSheet()->setTitle($arrFailureLog['NUMERO_FALLA']); $activeWorksheet->setCellValue("A1", 'Número de Falla'); $activeWorksheet->setCellValue("B1", $arrFailureLog['NUMERO_FALLA']); $activeWorksheet->getStyle( "A1" )->getFont()->setBold(true); $activeWorksheet->setCellValue("A2", 'Número de Equipamiento'); $activeWorksheet->setCellValue("B2", $arrFailureLog['CODIGO_EQUIPAMIENTO']); $activeWorksheet->getStyle( "A2" )->getFont()->setBold(true); $activeWorksheet->setCellValue("A3", 'Estado de la Falla'); $activeWorksheet->setCellValue("B3", $arrFailureLog['ESTADO_FALLA']); $activeWorksheet->getStyle( "A3" )->getFont()->setBold(true); $activeWorksheet->setCellValue("A4", 'Nombre de la Falla'); $activeWorksheet->setCellValue("B4", $arrFailureLog['NOMBRE_FALLA'].' ('.$arrFailureLog['ID_FALLA'].')'); $activeWorksheet->getStyle( "A4" )->getFont()->setBold(true); $activeWorksheet->setCellValue("A5", 'Nivel de Criticidad de la Falla'); $activeWorksheet->setCellValue("B5", $arrFailureLog['NIVEL_CRITICIDAD_FALLA']); $activeWorksheet->getStyle( "A5" )->getFont()->setBold(true); $activeWorksheet->setCellValue("A6", 'Causa de la Falla'); $activeWorksheet->setCellValue("B6", $arrFailureLog['CAUSA_FALLA']); $activeWorksheet->getStyle( "A6" )->getFont()->setBold(true); $activeWorksheet->setCellValue("A7", 'Nombre del Síntoma'); $activeWorksheet->setCellValue("B7", $arrFailureLog['NOMBRE_SINTOMA'].' ('.$arrFailureLog['ID_SINTOMA'].')'); $activeWorksheet->getStyle( "A7" )->getFont()->setBold(true); $activeWorksheet->setCellValue("A8", 'Clasificación del Síntoma'); $activeWorksheet->setCellValue("B8", $arrFailureLog['CLASIFICACION_SINTOMA']); $activeWorksheet->getStyle( "A8" )->getFont()->setBold(true); $activeWorksheet->setCellValue("A9", 'Causa del Síntoma'); $activeWorksheet->setCellValue("B9", $arrFailureLog['CAUSA_SINTOMA']); $activeWorksheet->getStyle( "A9" )->getFont()->setBold(true); $activeWorksheet->setCellValue("A10", 'Fecha de la Falla'); $activeWorksheet->setCellValue("B10", $arrFailureLog['FECHA_FALLA']); $activeWorksheet->getStyle( "A10" )->getFont()->setBold(true); $activeWorksheet->setCellValue("A11", 'Fecha de la Resolución'); $activeWorksheet->setCellValue("B11", $arrFailureLog['FECHA_RESOLUCION']); $activeWorksheet->getStyle( "A11" )->getFont()->setBold(true); $activeWorksheet->setCellValue("A12", 'Reparable'); $activeWorksheet->setCellValue("B12", $arrFailureLog['REPARABLE'] === 1 ? 'Si' : 'No'); $activeWorksheet->getStyle( "A12" )->getFont()->setBold(true); $activeWorksheet->setCellValue("A13", 'Valor Obtenido'); $activeWorksheet->setCellValue("B13", $arrFailureLog['VALOR_OBTENIDO'].' '.$arrFailureLog['ACRONIMO_MEDIDA']); $activeWorksheet->getStyle( "A13" )->getFont()->setBold(true); $activeWorksheet->setCellValue("A14", 'Tipo de Medido'); $activeWorksheet->setCellValue("B14", $arrFailureLog['NOMBRE_MEDIDA']); $activeWorksheet->getStyle( "A14" )->getFont()->setBold(true); $activeWorksheet->setCellValue("A15", 'Solución de la Falla'); $activeWorksheet->setCellValue("B15", $arrFailureLog['SOLUCION'] === null || $arrFailureLog['SOLUCION'] === '' ? '' : $arrFailureLog['SOLUCION']); $activeWorksheet->getStyle( "A15" )->getFont()->setBold(true); $activeWorksheet->setCellValue("A16", 'Comentarios'); $activeWorksheet->setCellValue("B16", $arrFailureLog['COMENTARIOS']); $activeWorksheet->getStyle( "A16" )->getFont()->setBold(true); $activeWorksheet->getColumnDimension("A")->setAutoSize(true); $activeWorksheet->getColumnDimension("B")->setAutoSize(true); $nuli = $this->resourcesController->formatSecuence($line, 2); $como = 'ANFA'; // Código del módulo $cldo = 'IN'; // Código de la clasificación $fecr = date('ymd'); // Fecha en la se carga el archivo try { $arrSecuence = (array) DB::table('S002V01TAFAL') ->where('AFAL_COMO', '=', $como) ->where('AFAL_CLDO', '=', $cldo) ->where('AFAL_NULI', '=', $line) ->orderBy('AFAL_NUSE', 'desc') ->first([ 'AFAL_NUSE' ]); } catch (\Throwable $th) { return $this->responseController->makeResponse( true, "ERR_FAILURELOG_GENERATEXLS003: Ocurrió un error al obtener la información de la secuencia.", $th->getMessage(), 500 ); } $nuse = 1; // Secuencia del documento if ( !empty( $arrSecuence ) && !is_null( $arrSecuence ) ) { $nuse = intval( $arrSecuence['AFAL_NUSE'] ) + 1; } $nuse = $this->resourcesController->formatSecuence($nuse, 6); $nuve = $this->resourcesController->formatSecuence('1', 2); $noar = 'ficha_de_falla_'.$arrFailureLog['NUMERO_FALLA']; $exte = 'xlsx'; $filePath = $this->functionsController->getBasePath() .'/public/public_files/'; // API JEAN $fileName = $nuli.'-'.$como.'-'.$cldo.'-'.$fecr.'-'.$nuse.'='.$nuve.'='.$noar.'.'.$exte; $tempFile = $filePath.$fileName; if ( file_exists( $tempFile ) ) { if ( !unlink( $tempFile ) ) { return $this->responseController->makeResponse( true, "ERR_FAILURELOG_GENERATEXLS004: Ocurrió un error al eliminar el siguiente archivo: " . $tempFile, [], 500 ); } } try { $writer = new Xlsx($spreadsheet); ob_start(); $writer->save('php://output'); $base64 = base64_encode(ob_get_clean()); $validate = \File::put( $tempFile, base64_decode($base64)); } catch (\Throwable $th) { return $this->responseController->makeResponse( true, "ERR_FAILURELOG_GENERATEXLS005: Ocurrió un error al guardar el documento.", $th->getMessage(), 500 ); } $ubic = Storage::putFile('files', new File($tempFile)); $ubic = str_replace("/", "\\", $ubic); $ubic = $this->functionsController->getBasePath() . "\storage\app\\" . $ubic; $tama = filesize($ubic); $usac = json_encode([$user]); $now = $this->functionsController->now(); $currentDate = $now->toDateTimeString(); try { $validateInsert = DB::table('S002V01TAFAL')->insert([ 'AFAL_NULI' => $line, 'AFAL_COMO' => $como, 'AFAL_CLDO' => $cldo, 'AFAL_FECR' => $fecr, 'AFAL_NUSE' => $nuse, 'AFAL_NUVE' => $nuve, 'AFAL_NOAR' => $noar, 'AFAL_EXTE' => $exte, 'AFAL_TAMA' => $tama, 'AFAL_UBIC' => $ubic, 'AFAL_USAC' => $usac, 'AFAL_USRE' => $user, 'AFAL_FERE' => $currentDate, ]); } catch (\Throwable $th) { return $this->responseController->makeResponse( true, "ERR_FAILURELOG_GENERATEXLS006: Ocurrió un error guardar los datos a la tabla final de archivos.", $th->getMessage(), 500 ); } if ( !$validateInsert ) { return $this->responseController->makeResponse( true, "ERR_FAILURELOG_GENERATEXLS007: No se pudo guardar la ficha del proveedor en la base de datos.", [], 500 ); } if ($_SERVER['SERVER_NAME'] === '192.168.100.105') { $urlPublic = 'http://192.168.100.105:8000/public_files/' . $fileName; } else { $urlPublic = $this->functionsController->getApiURI().'sam/public_files/' . $fileName; } return $this->responseController->makeResponse(false, "EXITO: Modificación Exitosa", [ 'url' => $urlPublic ]); return $arrFailureLog; } public function generateSheetFailurePDF($failure, $user, $line){ try { $failure = $this->encController->decrypt($failure); } catch (\Throwable $th) { return $this->responseController->makeResponse(true, "ERR_FAILURELOG_GENERATEPDF000: Ocurrió un error al obtener la falla.", $th->getMessage(), 500); } try { $user = $this->encController->decrypt($user); } catch (\Throwable $th) { return $this->responseController->makeResponse(true, "ERR_FAILURELOG_GENERATEPDF001: Ocurrió un error al obtener el usuario.", $th->getMessage(), 500); } try { $getFailureLog = DB::table('S002V01TBIFA') ->where('BIFA_NUFA', '=', $failure) ->where('BIFA_NULI', '=', $line) ->where('LIFA_NULI', '=', $line) ->where('LISI_NULI', '=', $line) ->where('LIME_NULI', '=', $line) ->where('BIFA_ESTA', '=', 'Activo') ->where('LIFA_ESTA', '=', 'Activo') ->where('LISI_ESTA', '=', 'Activo') ->where('LIME_ESTA', '=', 'Activo') ->join('S002V01TLIFA', 'LIFA_IDFA', '=', 'BIFA_IDFA') ->join('S002V01TLISI', 'LISI_IDSI', '=', 'BIFA_IDSI') ->join('S002V01TLIME', 'LIME_IDME', '=', 'BIFA_IDME') ->first([ 'BIFA_NUFA AS NUMERO_FALLA', 'BIFA_COEQ AS CODIGO_EQUIPAMIENTO', 'BIFA_ESFA AS ESTADO_FALLA', 'LIFA_IDFA AS ID_FALLA', 'LIFA_NOFA AS NOMBRE_FALLA', 'LIFA_NIVE AS NIVEL_CRITICIDAD_FALLA', 'LIFA_CAUS AS CAUSA_FALLA', 'LISI_IDSI AS ID_SINTOMA', 'LISI_NOSI AS NOMBRE_SINTOMA', 'LISI_CLAS AS CLASIFICACION_SINTOMA', 'LISI_CAUS AS CAUSA_SINTOMA', 'BIFA_FEFA AS FECHA_FALLA', 'BIFA_FERF AS FECHA_RESOLUCION', 'BIFA_REPA AS REPARABLE', 'BIFA_DESO AS SOLUCION', 'BIFA_COME AS COMENTARIOS', 'BIFA_VAOB AS VALOR_OBTENIDO', 'LIME_IDME AS ID_MEDIDA', 'LIME_NOME AS NOMBRE_MEDIDA', 'LIME_ACME AS ACRONIMO_MEDIDA', ]); } catch (\Throwable $th) { return $this->responseController->makeResponse(true, "ERR_FAILURELOG_GENERATEPDF002: No se pudo realizar la consulta a la base.", $th->getMessage(), 500); } $arrFailureLog = json_decode( json_encode( $getFailureLog ), true ); // return $arrFailureLog; $html = ' Document
Número de Falla: '.$arrFailureLog['NUMERO_FALLA'].'
Número de Equipamiento: '.$arrFailureLog['CODIGO_EQUIPAMIENTO'].'
Estado de la Falla: '.$arrFailureLog['ESTADO_FALLA'].'
Nombre de la Falla: '.$arrFailureLog['NOMBRE_FALLA'].' ('.$arrFailureLog['ID_FALLA'].')'.'
Nivel de Criticidad de la Falla: '.$arrFailureLog['NIVEL_CRITICIDAD_FALLA'].'
Causa de la Falla: '.$arrFailureLog['CAUSA_FALLA'].'
Nombre del Síntoma: '.$arrFailureLog['NOMBRE_SINTOMA'].' ('.$arrFailureLog['ID_SINTOMA'].')'.'
Clasificación del Síntoma: '.$arrFailureLog['CLASIFICACION_SINTOMA'].'
Causa del Síntoma: '.$arrFailureLog['CAUSA_SINTOMA'].'
Fecha de la Falla: '.$arrFailureLog['FECHA_FALLA'].'
Fecha de la Resolución: '.$arrFailureLog['FECHA_RESOLUCION'].'
Reparable: '.(($arrFailureLog['REPARABLE'] === 1) ? ('Si') : ('No')).'
Valor Obtenido: '.$arrFailureLog['VALOR_OBTENIDO'].' '.$arrFailureLog['ACRONIMO_MEDIDA'].'
Tipo de Medido: '.$arrFailureLog['NOMBRE_MEDIDA'].'
Solución de la Falla: '.(($arrFailureLog['SOLUCION'] === null || $arrFailureLog['SOLUCION'] === '') ? ('') : ($arrFailureLog['SOLUCION'])).'
Comentarios: '.$arrFailureLog['COMENTARIOS'].'
'; $html .= ''; $nuli = $this->resourcesController->formatSecuence($line, 2); $como = 'ANFA'; // Código del módulo $cldo = 'IN'; // Código de la clasificación $fecr = date('ymd'); // Fecha en la se carga el archivo try { $arrSecuence = (array) DB::table('S002V01TAFAL') ->where('AFAL_COMO', '=', $como) ->where('AFAL_CLDO', '=', $cldo) ->where('AFAL_NULI', '=', $line) ->orderBy('AFAL_NUSE', 'desc') ->first([ 'AFAL_NUSE' ]); } catch (\Throwable $th) { return $this->responseController->makeResponse( true, "ERR_FAILURELOG_GENERATEPDF003: Ocurrió un error al obtener la información de la secuencia.", $th->getMessage(), 500 ); } $nuse = 1; // Secuencia del documento if ( !empty( $arrSecuence ) && !is_null( $arrSecuence ) ) { $nuse = intval( $arrSecuence['AFAL_NUSE'] ) + 1; } $nuse = $this->resourcesController->formatSecuence($nuse, 6); $nuve = $this->resourcesController->formatSecuence('1', 2); $noar = 'ficha_de_proveedor_' . $arrFailureLog['NUMERO_FALLA']; $nuli = $this->resourcesController->formatSecuence($line, 2); $como = 'GEAD'; // Código del módulo $cldo = 'IN'; // Código de la clasificación $fecr = date('ymd'); // Fecha en la se carga el archivo try { $arrSecuence = (array) DB::table('S002V01TAFAL') ->where('AFAL_COMO', '=', $como) ->where('AFAL_CLDO', '=', $cldo) ->where('AFAL_NULI', '=', $line) ->orderBy('AFAL_NUSE', 'desc') ->first([ 'AFAL_NUSE' ]); } catch (\Throwable $th) { return $this->responseController->makeResponse( true, "ERR_FAILURELOG_GENERATEPDF004: Ocurrió un error al obtener la información de la secuencia.", $th->getMessage(), 500 ); } $nuse = 1; // Secuencia del documento if ( !empty( $arrSecuence ) && !is_null( $arrSecuence ) ) { $nuse = intval( $arrSecuence['AFAL_NUSE'] ) + 1; } $nuse = $this->resourcesController->formatSecuence($nuse, 6); $nuve = $this->resourcesController->formatSecuence('1', 2); $noar = 'ficha_de_falla_' . $arrFailureLog['NUMERO_FALLA']; $exte = 'pdf'; $filePath = $this->functionsController->getBasePath() . '/public/public_files/'; // API JEAN $fileName = $nuli.'-'.$como.'-'.$cldo.'-'.$fecr.'-'.$nuse.'='.$nuve.'='.$noar.'.'.$exte; $tempFile = $filePath . $fileName; $dompdf = new Dompdf(); $dompdf ->loadHtml($html); $dompdf->setPaper('A4', 'portrait'); $dompdf->render(); $output = $dompdf->output(); file_put_contents($tempFile, $output); $ubic = Storage::putFile('files', new File($tempFile)); $ubic = str_replace("/", "\\", $ubic); $ubic = $this->functionsController->getBasePath() . "\storage\app\\" . $ubic; $tama = filesize($ubic); $usac = json_encode([$user]); $now = $this->functionsController->now(); $currentDate = $now->toDateTimeString(); try { $validateInsert = DB::table('S002V01TAFAL')->insert([ 'AFAL_NULI' => $line, 'AFAL_COMO' => $como, 'AFAL_CLDO' => $cldo, 'AFAL_FECR' => $fecr, 'AFAL_NUSE' => $nuse, 'AFAL_NUVE' => $nuve, 'AFAL_NOAR' => $noar, 'AFAL_EXTE' => $exte, 'AFAL_TAMA' => $tama, 'AFAL_UBIC' => $ubic, 'AFAL_USAC' => $usac, 'AFAL_USRE' => $user, 'AFAL_FERE' => $currentDate, ]); } catch (\Throwable $th) { return $this->responseController->makeResponse( true, "ERR_FAILURELOG_GENERATEPDF005: Ocurrió un error guardar los datos a la tabla final de archivos.", $th->getMessage(), 500 ); } if ( !$validateInsert ) { return $this->responseController->makeResponse( true, "ERR_FAILURELOG_GENERATEPDF006: No se pudo guardar la ficha del proveedor en la base de datos.", [], 500 ); } if ($_SERVER['SERVER_NAME'] === '192.168.100.105') { $urlPublic = 'http://192.168.100.105:8000/public_files/' . $fileName; } else { $urlPublic = $this->functionsController->getApiURI().'sam/public_files/' . $fileName; } return $this->responseController->makeResponse(false, "EXITO: Modificación Exitosa", [ 'url' => $urlPublic ]); } public function registerFailureLog(Request $request) { $validator = Validator::make($request->all(), [ 'CODIGO_EQUIPAMIENTO' => 'required|string', 'ID_FALLA' => 'required|integer', // 'ID_SINTOMA' => 'required|integer', 'FECHA_FALLA' => 'required|string', 'REPARABLE' => 'required|string', 'SOLUCION' => 'required|string', 'COMENTARIOS' => 'required|string', 'VALOR_OBTENIDO' => 'required|string', 'ID_MEDIDA' => 'required|string', 'USUARIO' => 'required|string', 'NUMERO_LINEA' => 'required|integer', ]); if ($validator->fails()) { return $this->responseController->makeResponse( true, "ERR_FAILURELOG_REG000: Se encontraron uno o más errores.", $this->responseController->makeErrors($validator->errors()->messages()), 401 ); } DB::beginTransaction(); $requestData = $request->all(); try { $user = $this->encController->decrypt($requestData['USUARIO']); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_FAILURELOG_REG001: No se pudo obtener el usuario.", $th->getMessage(), 500); } try { $validateExistsFailureList = DB::table('S002V01TLIFA') ->where('LIFA_NULI', '=', $requestData['NUMERO_LINEA']) ->where('LIFA_IDFA', '=', $requestData['ID_FALLA']) ->where('LIFA_ESTA', '=', 'Activo') ->exists(); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_FAILURELOG_REG002: Ocurrió un error al consultar la lista de fallas.", $th->getMessage(), 500); } if ( !$validateExistsFailureList ) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_FAILURELOG_REG003: No existe la falla #".$requestData['ID_FALLA']." en la lista de fallas.", [], 500); } if ( !is_null($requestData['ID_SINTOMA']) && $requestData['ID_SINTOMA'] !== '' ) { try { $validateExistsSymptomList = DB::table('S002V01TLISI') ->where('LISI_NULI', '=', $requestData['NUMERO_LINEA']) ->where('LISI_IDSI', '=', $requestData['ID_SINTOMA']) ->where('LISI_ESTA', '=', 'Activo') ->exists(); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_FAILURELOG_REG004: Ocurrió un error al consultar la lista de síntomas.", $th->getMessage(), 500); } if ( !$validateExistsSymptomList ) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_FAILURELOG_REG005: No existe el síntoma #".$requestData['ID_SINTOMA']." en la lista de síntomas.", [], 500); } } try { $validateExistsMeasure = DB::table('S002V01TLIME') ->where('LIME_NULI', '=', $requestData['NUMERO_LINEA']) ->where('LIME_IDME', '=', $requestData['ID_MEDIDA']) ->where('LIME_ESTA', '=', 'Activo') ->exists(); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_FAILURELOG_REG006: Ocurrió un error al consultar la lista de medidas.", $th->getMessage(), 500); } if ( !$validateExistsMeasure ) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_FAILURELOG_REG007: No existe la medida #".$requestData['ID_MEDIDA']." en la lista de medidas.", [], 500); } try { $validateExistsEquipment = DB::table('S002V01TEQUI') ->where('EQUI_NULI', '=', $requestData['NUMERO_LINEA']) ->where('EQUI_COEQ', '=', $requestData['CODIGO_EQUIPAMIENTO']) ->exists(); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_FAILURELOG_REG008: Ocurrió un error al consultar los equipamientos.", $th->getMessage(), 500); } if ( !$validateExistsEquipment ) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_FAILURELOG_REG009: No existe el equipamiento ".$requestData['CODIGO_EQUIPAMIENTO']." en la lista de equipamientos.", [], 500); } $now = $this->functionsController->now(); $currentDate = $now->toDateTimeString(); try { $validateInsert = DB::table('S002V01TBIFA')->insert([ 'BIFA_NULI' => $requestData['NUMERO_LINEA'], 'BIFA_COEQ' => $requestData['CODIGO_EQUIPAMIENTO'], 'BIFA_IDFA' => $requestData['ID_FALLA'], 'BIFA_IDSI' => $requestData['ID_SINTOMA'], 'BIFA_FEFA' => $requestData['FECHA_FALLA'], 'BIFA_REPA' => $requestData['REPARABLE'], 'BIFA_DESO' => $requestData['SOLUCION'], 'BIFA_COME' => $requestData['COMENTARIOS'], 'BIFA_VAOB' => $requestData['VALOR_OBTENIDO'], 'BIFA_IDME' => $requestData['ID_MEDIDA'], 'BIFA_USRE' => $user, 'BIFA_FERE' => $currentDate, 'BIFA_FEAR' => DB::raw('CURRENT_TIMESTAMP') ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_FAILURELOG_REG010: Ocurrió un error al intentar registrar la falla en la base de datos.", $th->getMessage(), 500); } if ( !$validateInsert ) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_FAILURELOG_REG011: No se pudo registrar la falla.", [], 500); } DB::commit(); return $this->responseController->makeResponse(false, "ÉXITO: Registro Exitoso"); } public function updateFailureLog(Request $request) { $validator = Validator::make($request->all(), [ 'NUMERO_FALLA' => 'required|integer', 'CODIGO_EQUIPAMIENTO' => 'required|string', 'ID_FALLA' => 'required|integer', // 'ID_SINTOMA' => 'required|integer', 'FECHA_FALLA' => 'required|string', 'REPARABLE' => 'required|string', 'SOLUCION' => 'required|string', 'COMENTARIOS' => 'required|string', 'VALOR_OBTENIDO' => 'required|string', 'ID_MEDIDA' => 'required|string', 'USUARIO' => 'required|string', 'NUMERO_LINEA' => 'required|integer', ]); if ($validator->fails()) { return $this->responseController->makeResponse( true, "ERR_FAILURELOG_UPD000: Se encontraron uno o más errores.", $this->responseController->makeErrors($validator->errors()->messages()), 401 ); } DB::beginTransaction(); $requestData = $request->all(); try { $user = $this->encController->decrypt($requestData['USUARIO']); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD001: No se pudo obtener el usuario.", $th->getMessage(), 500); } try { $validateExistsFailureLog = DB::table('S002V01TBIFA') ->where('BIFA_NULI', '=', $requestData['NUMERO_LINEA']) ->where('BIFA_NUFA', '=', $requestData['NUMERO_FALLA']) ->where('BIFA_ESTA', '=', 'Activo') ->exists(); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD002: Ocurrió un error al consultar la bitácora de fallas.", $th->getMessage(), 500); } if ( !$validateExistsFailureLog ) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD003: No existe la falla #".$requestData['NUMERO_FALLA']." en la bitácora de fallas.", [], 500); } try { $validateExistsFailureList = DB::table('S002V01TLIFA') ->where('LIFA_NULI', '=', $requestData['NUMERO_LINEA']) ->where('LIFA_IDFA', '=', $requestData['ID_FALLA']) ->where('LIFA_ESTA', '=', 'Activo') ->exists(); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD004: Ocurrió un error al consultar la lista de fallas.", $th->getMessage(), 500); } if ( !$validateExistsFailureList ) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD005: No existe la falla #".$requestData['ID_FALLA']." en la lista de fallas.", [], 500); } if ( !is_null($requestData['ID_SINTOMA']) && $requestData['ID_SINTOMA'] !== '' ) { try { $validateExistsSymptomList = DB::table('S002V01TLISI') ->where('LISI_NULI', '=', $requestData['NUMERO_LINEA']) ->where('LISI_IDSI', '=', $requestData['ID_SINTOMA']) ->where('LISI_ESTA', '=', 'Activo') ->exists(); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD006: Ocurrió un error al consultar la lista de síntomas.", $th->getMessage(), 500); } if ( !$validateExistsSymptomList ) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD007: No existe el síntoma #".$requestData['ID_SINTOMA']." en la lista de síntomas.", [], 500); } } try { $validateExistsMeasure = DB::table('S002V01TLIME') ->where('LIME_NULI', '=', $requestData['NUMERO_LINEA']) ->where('LIME_IDME', '=', $requestData['ID_MEDIDA']) ->where('LIME_ESTA', '=', 'Activo') ->exists(); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD008: Ocurrió un error al consultar la lista de medidas.", $th->getMessage(), 500); } if ( !$validateExistsMeasure ) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD009: No existe la medida #".$requestData['ID_MEDIDA']." en la lista de medidas.", [], 500); } try { $validateExistsEquipment = DB::table('S002V01TEQUI') ->where('EQUI_NULI', '=', $requestData['NUMERO_LINEA']) ->where('EQUI_COEQ', '=', $requestData['CODIGO_EQUIPAMIENTO']) ->exists(); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD010: Ocurrió un error al consultar los equipamientos.", $th->getMessage(), 500); } if ( !$validateExistsEquipment ) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD011: No existe el equipamiento ".$requestData['CODIGO_EQUIPAMIENTO']." en la lista de equipamientos.", [], 500); } $now = $this->functionsController->now(); $currentDate = $now->toDateTimeString(); try { $validateUpdate = DB::table('S002V01TBIFA') ->where('BIFA_NUFA', '=', $requestData['NUMERO_FALLA']) ->where('BIFA_NULI', '=', $requestData['NUMERO_LINEA']) ->update([ 'BIFA_COEQ' => $requestData['CODIGO_EQUIPAMIENTO'], 'BIFA_IDFA' => $requestData['ID_FALLA'], 'BIFA_IDSI' => $requestData['ID_SINTOMA'], 'BIFA_FEFA' => $requestData['FECHA_FALLA'], 'BIFA_REPA' => $requestData['REPARABLE'], 'BIFA_DESO' => $requestData['SOLUCION'], 'BIFA_COME' => $requestData['COMENTARIOS'], 'BIFA_VAOB' => $requestData['VALOR_OBTENIDO'], 'BIFA_IDME' => $requestData['ID_MEDIDA'], 'BIFA_USMO' => $user, 'BIFA_FEMO' => $currentDate, 'BIFA_FEAR' => DB::raw('CURRENT_TIMESTAMP') ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD012: Ocurrió un error al intentar modificar la falla en la base de datos.", $th->getMessage(), 500); } if ( !$validateUpdate ) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD013: No se pudo modificar la bitácora de falla.", [], 500); } DB::commit(); return $this->responseController->makeResponse(false, "ÉXITO: Modificación Exitosa"); } public function getSymptoms($user, $line) { $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line); if ($arrResponseCheckUser['error']) { DB::rollBack(); return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401); } try { $getSymptom = DB::table('S002V01TLISI') ->where('LISI_NULI', '=', $line) ->where('LIME_NULI', '=', $line) ->where('LIME_ESTA', '=', 'Activo') ->join('S002V01TLIME', 'LIME_IDME', '=', 'LISI_IDME') ->get([ 'LISI_IDSI AS ID_SINTOMA', 'LISI_NOSI AS NOMBRE_SINTOMA', 'LISI_CLAS AS CLASIFICACION', 'LISI_CAUS AS CAUSA', 'LISI_DESC AS DESCRIPCION', 'LISI_SOLU AS SOLUCION', 'LISI_LIVA AS LIMITE_VALOR', 'LIME_IDME AS ID_MEDIDA', 'LIME_NOME AS NOMBRE_MEDIDA', 'LIME_ACME AS ACRONIMO_MEDIDA', 'LISI_ESTA AS ESTADO', 'LISI_USRE AS USUARIO_REGISTRA', 'LISI_FERE AS FECHA_REGISTRA', 'LISI_USMO AS USUARIO_MODIFICA', 'LISI_FEMO AS FECHA_MODIFICA', ]); $arrSymtoms = json_decode( json_encode($getSymptom), true ); } catch (\Throwable $th) { return $this->responseController->makeResponse( true, "ERR_SYMPTOM_GET000: No se pudo realizar la consulta a la base.", $th->getMessage(), 500 ); } $responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate($arrSymtoms, $line); if ($responseCheckLatestUpdate['error']) { return $this->responseController->makeResponse(true, $responseCheckLatestUpdate['msg'], [], 500); } $arrSymtoms = $responseCheckLatestUpdate['response']; return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrSymtoms); } public function getSymptomsActives($user, $line) { try { $getSymptom = DB::table('S002V01TLISI') ->where('LISI_NULI', '=', $line) ->where('LISI_ESTA', '=', 'Activo') ->where('LIME_NULI', '=', $line) ->where('LIME_ESTA', '=', 'Activo') ->join('S002V01TLIME', 'LIME_IDME', '=', 'LISI_IDME') ->get([ 'LISI_IDSI AS ID_SINTOMA', 'LISI_NOSI AS NOMBRE_SINTOMA', 'LISI_CLAS AS CLASIFICACION', 'LISI_CAUS AS CAUSA', 'LISI_DESC AS DESCRIPCION', 'LISI_SOLU AS SOLUCION', 'LISI_LIVA AS LIMITE_VALOR', 'LIME_IDME AS ID_MEDIDA', 'LIME_NOME AS NOMBRE_MEDIDA', 'LIME_ACME AS ACRONIMO_MEDIDA', 'LISI_ESTA AS ESTADO', 'LISI_USRE AS USUARIO_REGISTRA', 'LISI_FERE AS FECHA_REGISTRA', 'LISI_USMO AS USUARIO_MODIFICA', 'LISI_FEMO AS FECHA_MODIFICA', ]); } catch (\Throwable $th) { return $this->responseController->makeResponse( true, "ERR_SYMPTOM_GETACTIVE000: No se pudo realizar la consulta a la base.", $th->getMessage(), 500 ); } $arrSymtoms = json_decode( json_encode($getSymptom), true ); return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrSymtoms); } public function getSymptomsByEquipment($equipment, $user, $line) { try { $equipment = $this->encController->decrypt($equipment); } catch (\Throwable $th) { return $this->responseController->makeResponse(true, "ERR_SYMPTOM_GETBYEQUIPMENT000: No se pudo obtener el equipamiento.", $th->getMessage(), 500); } try { $getSymptom = DB::table('S002V01TLSEQ') ->where('LSEQ_NULI', '=', $line) ->where('LSEQ_ESTA', '=', 'Activo') ->where('LSEQ_COEQ', '=', $equipment) ->where('LISI_NULI', '=', $line) ->where('LISI_ESTA', '=', 'Activo') ->join('S002V01TLISI', 'LISI_IDSI', '=', 'LSEQ_IDSI') ->join('S002V01TLIME', 'LIME_IDME', '=', 'LISI_IDME') ->get([ 'LISI_IDSI AS ID_SINTOMA', 'LISI_NOSI AS NOMBRE_SINTOMA', 'LISI_CLAS AS CLASIFICACION', 'LISI_CAUS AS CAUSA', 'LISI_DESC AS DESCRIPCION', 'LISI_SOLU AS SOLUCION', 'LISI_LIVA AS LIMITE_VALOR', 'LIME_IDME AS ID_MEDIDA', 'LIME_NOME AS NOMBRE_MEDIDA', 'LIME_ACME AS ACRONIMO_MEDIDA', 'LISI_ESTA AS ESTADO', 'LISI_USRE AS USUARIO_REGISTRA', 'LISI_FERE AS FECHA_REGISTRA', 'LISI_USMO AS USUARIO_MODIFICA', 'LISI_FEMO AS FECHA_MODIFICA', ]); } catch (\Throwable $th) { return $this->responseController->makeResponse( true, "ERR_SYMPTOM_GETBYEQUIPMENT001: No se pudo realizar la consulta a la base.", $th->getMessage(), 500 ); } $arrSymtoms = json_decode( json_encode($getSymptom), true ); return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrSymtoms); } public function getSymptomById($idSymptom, $user, $line) { try { $idSymptom = $this->encController->decrypt($idSymptom); } catch (\Throwable $th) { return $this->responseController->makeResponse(true, "ERR_SYMPTOM_GETBYID000: No se pudo obtener el ID del síntoma.", $th->getMessage(), 500); } try { $arrSymptom = (array) DB::table('S002V01TLISI') ->where('LISI_IDSI', '=', $idSymptom) ->where('LISI_NULI', '=', $line) ->where('LISI_ESTA', '=', 'Activo') ->where('LIME_NULI', '=', $line) ->where('LIME_ESTA', '=', 'Activo') ->join('S002V01TLIME', 'LIME_IDME', '=', 'LISI_IDME') ->first([ 'LISI_IDSI AS ID_SINTOMA', 'LISI_NOSI AS NOMBRE_SINTOMA', 'LISI_CLAS AS CLASIFICACION', 'LISI_CAUS AS CAUSA', 'LISI_DESC AS DESCRIPCION', 'LISI_SOLU AS SOLUCION', 'LISI_LIVA AS LIMITE_VALOR', 'LIME_IDME AS ID_MEDIDA', 'LIME_NOME AS NOMBRE_MEDIDA', 'LIME_ACME AS ACRONIMO_MEDIDA', 'LISI_ESTA AS ESTADO', 'LISI_USRE AS USUARIO_REGISTRA', 'LISI_FERE AS FECHA_REGISTRA', 'LISI_USMO AS USUARIO_MODIFICA', 'LISI_FEMO AS FECHA_MODIFICA', ]); } catch (\Throwable $th) { return $this->responseController->makeResponse( true, "ERR_SYMPTOM_GETBYID001: No se pudo realizar la consulta a la base.", $th->getMessage(), 500 ); } if ( !empty($arrSymptom) ) { try { $arrEquipment = DB::table('S002V01TLSEQ') ->where('LSEQ_IDSI', '=', $idSymptom) ->where('LSEQ_NULI', '=', $line) ->where('LSEQ_ESTA', '=', 'Activo') ->where('EQUI_NULI', '=', $line) ->join('S002V01TEQUI', 'EQUI_COEQ', '=', 'LSEQ_COEQ') ->get([ 'EQUI_COEQ AS CODIGO', 'EQUI_TIPO AS TIPO', 'EQUI_MODE AS MODELO', 'EQUI_IDEQ AS ID_EQUIPO', 'EQUI_ESFU AS ESTADO_FUNCIONAMIENTO', 'EQUI_ELOR AS ELEMENTO_ORIGEN', 'EQUI_TICO AS TIPO_CODIGO' ]); } catch (\Throwable $th) { return $this->responseController->makeResponse( true, "ERR_SYMPTOM_GETBYID002: No se pudo realizar la consulta a la base.", $th->getMessage(), 500 ); } $arrEquipment = json_decode( json_encode($arrEquipment), true ); foreach ($arrEquipment as $keyEquipment => $equipment) { $equipment['ID_EQUIPO'] = strval($equipment['ID_EQUIPO']); $arrEquipment[$keyEquipment] = $equipment; } $arrSymptom['EQUIPAMIENTOS'] = $arrEquipment; try { $arrFailure = DB::table('S002V01TLFLS') ->where('LFLS_IDSI', '=', $idSymptom) ->where('LFLS_NULI', '=', $line) ->where('LFLS_ESTA', '=', 'Activo') ->where('LIFA_NULI', '=', $line) ->where('LIFA_ESTA', '=', 'Activo') ->join('S002V01TLIFA', 'LIFA_IDFA', '=', 'LFLS_IDFA') ->get([ 'LIFA_IDFA AS ID_FALLA', 'LIFA_NOFA AS NOMBRE_FALLA', 'LIFA_NIVE AS NIVEL_CRITICIDAD', 'LIFA_CAUS AS CAUSA_FALLA', 'LIFA_SOLU AS SOLICION', 'LIFA_DESC AS DESCRIPCION', ]); } catch (\Throwable $th) { return $this->responseController->makeResponse( true, "ERR_SYMPTOM_GETBYID003: No se pudo realizar la consulta a la base.", $th->getMessage(), 500 ); } $arrFailure = json_decode( json_encode($arrFailure), true ); $arrSymptom['FALLAS'] = $arrFailure; } return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrSymptom); } public function registerSymptom(Request $request) { $validator = Validator::make($request->all(), [ 'NOMBRE_SINTOMA' => 'required|string', 'CLASIFICACION' => 'required|string', 'CAUSA' => 'required|string', 'DESCRIPCION' => 'required|string', 'SOLUCION' => 'required|string', 'LIMITE_VALOR' => 'required|string', 'ID_MEDIDA' => 'required|string', 'FALLAS' => 'required|array', 'EQUIPAMIENTOS' => 'required|array', 'USUARIO' => 'required|string', 'NUMERO_LINEA' => 'required|integer', ]); if ($validator->fails()) { return $this->responseController->makeResponse( true, "ERR_SYMPTOM_REG000: Se encontraron uno o más errores.", $this->responseController->makeErrors($validator->errors()->messages()), 401 ); } DB::beginTransaction(); $requestData = $request->all(); try { $user = $this->encController->decrypt($requestData['USUARIO']); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_SYMPTOM_REG001: No se pudo obtener el usuario.", $th->getMessage(), 500); } $now = $this->functionsController->now(); $currentDate = $now->toDateTimeString(); try { $idSymptom = DB::table('S002V01TLISI')->insertGetId([ 'LISI_NULI' => $requestData['NUMERO_LINEA'], 'LISI_NOSI' => $requestData['NOMBRE_SINTOMA'], 'LISI_CLAS' => $requestData['CLASIFICACION'], 'LISI_CAUS' => $requestData['CAUSA'], 'LISI_SOLU' => $requestData['SOLUCION'], 'LISI_DESC' => $requestData['DESCRIPCION'], 'LISI_LIVA' => $requestData['LIMITE_VALOR'], 'LISI_IDME' => $requestData['ID_MEDIDA'], 'LISI_USRE' => $user, 'LISI_FERE' => $currentDate, 'LISI_FEAR' => DB::raw('CURRENT_TIMESTAMP'), ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_SYMPTOM_REG002: Ocurrió un error en el registro de la lista de síntoma en la base de datos.", $th->getMessage(), 500 ); } if ( !$idSymptom ) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_SYMPTOM_REG003: No se pudo hacer el registro de la lista de síntoma en la base de datos.", [], 500 ); } foreach ($requestData['EQUIPAMIENTOS'] as $keyEquipment => $equipment) { try { $validateRegisterEquipment = DB::table('S002V01TLSEQ')->insert([ 'LSEQ_NULI' => $requestData['NUMERO_LINEA'], 'LSEQ_IDSI' => $idSymptom, 'LSEQ_COEQ' => $equipment, 'LSEQ_USRE' => $user, 'LSEQ_FERE' => $currentDate, 'LSEQ_FEAR' => DB::raw('CURRENT_TIMESTAMP'), ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_SYMPTOM_REG004: Ocurrió un error al registrar el formulario en la lista de síntomas.", $th->getMessage(), 500 ); } if ( !$validateRegisterEquipment ) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_SYMPTOM_REG005: No se pudo registrar el equipamiento $equipment en la lista de síntomas.", [], 500 ); } } foreach ($requestData['FALLAS'] as $keyFailure => $failure) { try { $validateRegisterFailure = DB::table('S002V01TLFLS')->insert([ 'LFLS_NULI' => $requestData['NUMERO_LINEA'], 'LFLS_IDFA' => $failure, 'LFLS_IDSI' => $idSymptom, 'LFLS_USRE' => $user, 'LFLS_FERE' => $currentDate, 'LFLS_FEAR' => DB::raw('CURRENT_TIMESTAMP'), ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_SYMPTOM_REG006: Ocurrió un error al registrar el formulario en la lista de síntomas.", $th->getMessage(), 500 ); } if ( !$validateRegisterFailure ) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_SYMPTOM_REG007: No se pudo registrar el equipamiento $equipment en la lista de síntomas.", [], 500 ); } } DB::commit(); return $this->responseController->makeResponse(false, "ÉXITO: Registro Exitoso"); } public function updateSymptom(Request $request) { $validator = Validator::make($request->all(), [ 'ID_SINTOMA' => 'required|integer', 'NOMBRE_SINTOMA' => 'required|string', 'CLASIFICACION' => 'required|string', 'CAUSA' => 'required|string', 'DESCRIPCION' => 'required|string', 'SOLUCION' => 'required|string', 'LIMITE_VALOR' => 'required|string', 'ID_MEDIDA' => 'required|string', 'FALLAS' => 'required|array', 'EQUIPAMIENTOS' => 'required|array', 'USUARIO' => 'required|string', 'NUMERO_LINEA' => 'required|integer', ]); if ($validator->fails()) { return $this->responseController->makeResponse( true, "ERR_SYMPTOM_UPD000: Se encontraron uno o más errores.", $this->responseController->makeErrors($validator->errors()->messages()), 401 ); } DB::beginTransaction(); $requestData = $request->all(); try { $user = $this->encController->decrypt($requestData['USUARIO']); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_SYMPTOM_UPD001: No se pudo obtener el usuario.", $th->getMessage(), 500); } $now = $this->functionsController->now(); $currentDate = $now->toDateTimeString(); try { $validateUpdate = DB::table('S002V01TLISI') ->where('LISI_IDSI', '=', $requestData['ID_SINTOMA']) ->where('LISI_NULI', '=', $requestData['NUMERO_LINEA']) ->update([ 'LISI_NOSI' => $requestData['NOMBRE_SINTOMA'], 'LISI_CLAS' => $requestData['CLASIFICACION'], 'LISI_CAUS' => $requestData['CAUSA'], 'LISI_SOLU' => $requestData['SOLUCION'], 'LISI_DESC' => $requestData['DESCRIPCION'], 'LISI_LIVA' => $requestData['LIMITE_VALOR'], 'LISI_IDME' => $requestData['ID_MEDIDA'], 'LISI_USMO' => $user, 'LISI_FEMO' => $currentDate, 'LISI_FEAR' => DB::raw('CURRENT_TIMESTAMP'), ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_SYMPTOM_UPD002: Ocurrió un error en el registro de la lista de síntoma en la base de datos.", $th->getMessage(), 500 ); } if ( !$validateUpdate ) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_SYMPTOM_UPD003: Ocurrió un error en la modificación de la lista de síntoma en la base de datos.", [], 500 ); } foreach ($requestData['EQUIPAMIENTOS'] as $keyEquipment => $equipment) { try { $validateExists = DB::table('S002V01TLSEQ') ->where('LSEQ_IDSI', '=', $requestData['ID_SINTOMA']) ->where('LSEQ_NULI', '=', $requestData['NUMERO_LINEA']) ->where('LSEQ_COEQ', '=', $equipment) ->exists(); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_SYMPTOM_UPD004: Ocurrió un error al consultar el equipamiento.", $th->getMessage(), 500 ); } if ( $validateExists ) { try { $validate = DB::table('S002V01TLSEQ') ->where('LSEQ_NULI', '=', $requestData['NUMERO_LINEA']) ->where('LSEQ_IDSI', '=', $requestData['ID_SINTOMA']) ->where('LSEQ_COEQ', '=', $equipment) ->update([ 'LSEQ_ESTA' => 'Activo', 'LSEQ_USMO' => $user, 'LSEQ_FEMO' => $currentDate, 'LSEQ_FEAR' => DB::raw('CURRENT_TIMESTAMP'), ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_SYMPTOM_UPD005: Ocurrió un error al modificar el formulario en la lista de falla el equipamiento $equipment.", $th->getMessage(), 500 ); } } else { try { $validate = DB::table('S002V01TLSEQ')->insert([ 'LSEQ_NULI' => $requestData['NUMERO_LINEA'], 'LSEQ_IDSI' => $requestData['ID_SINTOMA'], 'LSEQ_COEQ' => $equipment, 'LSEQ_USRE' => $user, 'LSEQ_FERE' => $currentDate, 'LSEQ_FEAR' => DB::raw('CURRENT_TIMESTAMP'), ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_SYMPTOM_UPD006: Ocurrió un error al registrar el formulario en la lista de falla el equipamiento $equipment.", $th->getMessage(), 500 ); } } if ( !$validate ) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_SYMPTOM_UPD007: No se pudo modificar el equipamiento $equipment en la lista de fallas.", [], 500 ); } } try { $getListEquipment = DB::table('S002V01TLSEQ') ->where('LSEQ_IDSI', '=', $requestData['ID_SINTOMA']) ->where('LSEQ_NULI', '=', $requestData['NUMERO_LINEA']) ->get([ 'LSEQ_IDLS', 'LSEQ_IDSI', 'LSEQ_COEQ', 'LSEQ_ESTA', ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_SYMPTOM_UPD008: Ocurrió un error al consultar la lista de equipamientos.", $th->getMessage(), 500 ); } $arrListEquipment = json_decode( json_encode($getListEquipment), true ); foreach ($arrListEquipment as $keyListEquipment => $listEquipment) { if( !in_array($listEquipment['LSEQ_COEQ'], $requestData['EQUIPAMIENTOS']) ) { try { $validateDelete = DB::table('S002V01TLSEQ') ->where('LSEQ_NULI', '=', $requestData['NUMERO_LINEA']) ->where('LSEQ_IDSI', '=', $requestData['ID_SINTOMA']) ->where('LSEQ_COEQ', '=', $listEquipment['LSEQ_COEQ']) ->update([ 'LSEQ_ESTA' => 'Eliminado', 'LSEQ_USMO' => $user, 'LSEQ_FEMO' => $currentDate, 'LSEQ_FEAR' => DB::raw('CURRENT_TIMESTAMP'), ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_SYMPTOM_UPD009: Ocurrió un error al eliminar de la lista de falla el equipamiento ". $listEquipment['LSEQ_COEQ'].".", $th->getMessage(), 500 ); } if ( !$validateDelete ) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_SYMPTOM_UPD010: No se pudo eliminar de la lista de falla el equipamiento ". $listEquipment['LFEQ_COEQ'].".", [], 500 ); } } } foreach ($requestData['FALLAS'] as $keyFailure => $failure) { try { $validateExists = DB::table('S002V01TLFLS') ->where('LFLS_IDFA', '=', $failure) ->where('LFLS_IDSI', '=', $requestData['ID_SINTOMA']) ->where('LFLS_NULI', '=', $requestData['NUMERO_LINEA']) ->exists(); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_SYMPTOM_UPD011: Ocurrió un error al consultar la falla.", $th->getMessage(), 500 ); } if ( $validateExists ) { try { $validate = DB::table('S002V01TLFLS') ->where('LFLS_NULI', '=', $requestData['NUMERO_LINEA']) ->where('LFLS_IDFA', '=', $failure) ->where('LFLS_IDSI', '=', $requestData['ID_SINTOMA']) ->update([ 'LFLS_ESTA' => 'Activo', 'LFLS_USMO' => $user, 'LFLS_FEMO' => $currentDate, 'LFLS_FEAR' => DB::raw('CURRENT_TIMESTAMP'), ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_SYMPTOM_UPD012: Ocurrió un error al modificar el formulario en la lista de falla del síntoma.", $th->getMessage(), 500 ); } } else { try { $validate = DB::table('S002V01TLFLS')->insert([ 'LFLS_NULI' => $requestData['NUMERO_LINEA'], 'LFLS_IDSI' => $requestData['ID_SINTOMA'], 'LFLS_IDFA' => $failure, 'LFLS_USRE' => $user, 'LFLS_FERE' => $currentDate, 'LFLS_FEAR' => DB::raw('CURRENT_TIMESTAMP'), ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_SYMPTOM_UPD013: Ocurrió un error al registrar el formulario en la lista de falla del síntoma.", $th->getMessage(), 500 ); } } if ( !$validate ) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_SYMPTOM_UPD014: No se pudo modificar la lista de fallas.", [], 500 ); } } try { $arrListFaliure = DB::table('S002V01TLFLS') ->where('LFLS_IDSI', '=', $requestData['ID_SINTOMA']) ->where('LFLS_NULI', '=', $requestData['NUMERO_LINEA']) ->get([ 'LFLS_IDFA', 'LFLS_IDSI', 'LFLS_ESTA', ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_SYMPTOM_UPD015: Ocurrió un error al consultar la lista de fallas del síntoma.", $th->getMessage(), 500 ); } $arrListFaliure = json_decode( json_encode($arrListFaliure), true ); foreach ($arrListFaliure as $keyListFaliure => $listFaliure) { if( !in_array($listFaliure['LFLS_IDFA'], $requestData['FALLAS']) ) { try { $validateDelete = DB::table('S002V01TLFLS') ->where('LFLS_IDFA', '=', $listFaliure['LFLS_IDFA']) ->where('LFLS_IDSI', '=', $requestData['ID_SINTOMA']) ->where('LFLS_NULI', '=', $requestData['NUMERO_LINEA']) ->update([ 'LFLS_ESTA' => 'Eliminado', 'LFLS_USMO' => $user, 'LFLS_FEMO' => $currentDate, 'LFLS_FEAR' => DB::raw('CURRENT_TIMESTAMP'), ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_SYMPTOM_UPD016: Ocurrió un error al eliminar las falla ".$listFaliure['LFLS_IDFA']." del síntoma.", $th->getMessage(), 500 ); } if ( !$validateDelete ) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_SYMPTOM_UPD017: No se pudo eliminar la falla ".$listFaliure['LFLS_IDFA']." del síntoma.", [], 500 ); } } } DB::commit(); return $this->responseController->makeResponse(false, "ÉXITO: Modificación Exitosa"); } public function deleteSymptom(Request $request) { $validator = Validator::make($request->all(), [ 'ID_SINTOMA' => 'required|string', 'NUMERO_LINEA' => 'required|integer', 'USUARIO' => 'required|string', ]); if ($validator->fails()) { return $this->responseController->makeResponse( true, "ERR_SYMPTOM_DEL000: Se encontraron uno o más errores.", $this->responseController->makeErrors($validator->errors()->messages()), 401 ); } DB::beginTransaction(); $requestData = $request->all(); try { $user = $this->encController->decrypt($requestData['USUARIO']); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_SYMPTOM_DEL001: No se pudo obtener el usuario.", $th->getMessage(), 500); } $now = $this->functionsController->now(); $currentDate = $now->toDateTimeString(); try { $exist = DB::table('S002V01TLISI') ->where('LISI_IDSI', '=', $requestData['ID_SINTOMA']) ->where('LISI_NULI', '=', $requestData['NUMERO_LINEA']) ->exists(); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_SYMPTOM_DEL002: Ocurrió un error al consultar en la base de datos.", $th->getMessage(), 500); } if (!$exist) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_SYMPTOM_DEL003: El archivo no existe.", [], 500); } try { $validateDelete = DB::table('S002V01TLISI') ->where('LISI_IDSI', '=', $requestData['ID_SINTOMA']) ->where('LISI_NULI', '=', $requestData['NUMERO_LINEA']) ->update([ 'LISI_ESTA' => 'Eliminado', 'LISI_USMO' => $user, 'LISI_FEMO' => $currentDate, 'LISI_FEAR' => DB::raw('CURRENT_TIMESTAMP'), ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_SYMPTOM_DEL004: Ocurrió un error al eliminar el síntoma de la base de datos.", $th->getMessage(), 500); } if ( !$validateDelete ) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_SYMPTOM_DEL005: No se pudo eliminar el síntoma de la base de datos.", [], 500); } try { $validateDelete = DB::table('S002V01TLSEQ') ->where('LSEQ_IDSI', '=', $requestData['ID_SINTOMA']) ->where('LSEQ_NULI', '=', $requestData['NUMERO_LINEA']) ->update([ 'LSEQ_ESTA' => 'Eliminado', 'LSEQ_USMO' => $user, 'LSEQ_FEMO' => $currentDate, 'LSEQ_FEAR' => DB::raw('CURRENT_TIMESTAMP'), ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_SYMPTOM_DEL006: Ocurrió un error al eliminar la lista de equipamientos.", $th->getMessage(), 500 ); } if ( !$validateDelete ) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_SYMPTOM_DEL007: No se pudo eliminar la lista de equipamientos.", [], 500); } try { $validateDelete = DB::table('S002V01TLFLS') ->where('LFLS_IDSI', '=', $requestData['ID_SINTOMA']) ->where('LFLS_NULI', '=', $requestData['NUMERO_LINEA']) ->update([ 'LFLS_ESTA' => 'Eliminado', 'LFLS_USMO' => $user, 'LFLS_FEMO' => $currentDate, 'LFLS_FEAR' => DB::raw('CURRENT_TIMESTAMP'), ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_SYMPTOM_DEL008: Ocurrió un error al eliminar la lista de fallas.", $th->getMessage(), 500 ); } if ( !$validateDelete ) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_SYMPTOM_DEL009: No se pudo eliminar la lista de fallas.", [], 500); } DB::commit(); return $this->responseController->makeResponse(false, "ÉXITO: Eliminación Exitosa"); } public function generateMTBF(Request $request) { $validator = Validator::make($request->all(), [ 'ID_FALLA' => 'required|string', 'CODIGO_EQUIPAMIENTO' => 'required|string', 'FECHA_INICIO' => 'required|string', 'FECHA_FINAL' => 'required|string', 'NUMERO_LINEA' => 'required|integer', 'USUARIO' => 'required|string', ]); if ($validator->fails()) { return $this->responseController->makeResponse( true, "Se encontraron uno o más errores.", $this->responseController->makeErrors($validator->errors()->messages()), 401 ); } $requestData = $request->all(); try { $equipment = (array) DB::table('S002V01TEQUI') ->where([ ['EQUI_COEQ', '=', $requestData['CODIGO_EQUIPAMIENTO']], ['EQUI_NULI', '=', $requestData['NUMERO_LINEA']], ]) ->first([ 'EQUI_HICO AS HISTORIAL' ]); } catch (\Throwable $th) { return $th; } $currentCode = $requestData['CODIGO_EQUIPAMIENTO']; $pbs = explode('_', $currentCode)[1]; $status = explode('.', $pbs)[2]; $arrRangeDateOn = array(); $arrRangeDateOff = array(); $arrHistory = json_decode($equipment['HISTORIAL'], true); $isInitOn = true; $isInitOff = true; $indexOn = 0; $indexOff = 0; foreach ($arrHistory as $keyHistory => $history) { $pbs = explode('_', $history['CODIGO'])[1]; $status = explode('.', $pbs)[2]; if ($isInitOn && $status === 'I') { $arrRangeDateOn[$indexOn]['INITIAL'] = $history['FECHA']; $isInitOn = false; } if (!$isInitOn && $status !== 'I') { $arrRangeDateOn[$indexOn]['FINAL'] = $history['FECHA']; $isInitOn = true; $indexOn++; } if ($isInitOff && $status !== 'I') { $arrRangeDateOff[$indexOff]['INITIAL'] = $history['FECHA']; $isInitOff = false; } if (!$isInitOff && $status === 'I') { $arrRangeDateOff[$indexOff]['FINAL'] = $history['FECHA']; $isInitOff = true; $indexOff++; } } $lastIndex = count($arrRangeDateOn)-1; if (!array_key_exists('FINAL', $arrRangeDateOn[$lastIndex])) { $now = $this->functionsController->now(); $currentDate = $now->toDateTimeString(); $arrRangeDateOn[$lastIndex]['FINAL'] = $currentDate; } $rangeInitial = Carbon::parse($requestData['FECHA_INICIO']); $rangeFinal = Carbon::parse($requestData['FECHA_FINAL']); $activeHours = 0; foreach ($arrRangeDateOn as $key => $range) { $dateInitial = Carbon::parse($range['INITIAL']); $dateFinal = Carbon::parse($range['FINAL']); if ($dateInitial->gte($rangeInitial) && $dateFinal->lte($rangeFinal)) { $diffHours = $dateInitial->diffInHours($dateFinal); $activeHours += $diffHours; } else if ($dateInitial->gte($rangeInitial) && $dateFinal->gte($rangeFinal) ) { $dateFinal = $rangeFinal; $diffHours = $dateInitial->diffInHours($dateFinal); $activeHours += $diffHours; } else if ($dateInitial->lte($rangeInitial) && $dateFinal->lte($rangeFinal) ) { $dateInitial = $rangeInitial; $diffHours = $dateInitial->diffInHours($dateFinal); $activeHours += $diffHours; } } $inactiveHours = 0; foreach ($arrRangeDateOff as $key => $range) { $dateInitial = Carbon::parse($range['INITIAL']); $dateFinal = Carbon::parse($range['FINAL']); if ($dateInitial->gte($rangeInitial) && $dateFinal->lte($rangeFinal)) { $diffHours = $dateInitial->diffInHours($dateFinal); $inactiveHours += $diffHours; } else if ($dateInitial->gte($rangeInitial) && $dateFinal->gte($rangeFinal) ) { $dateFinal = $rangeFinal; $diffHours = $dateInitial->diffInHours($dateFinal); $inactiveHours += $diffHours; } else if ($dateInitial->lte($rangeInitial) && $dateFinal->lte($rangeFinal) ) { $dateInitial = $rangeInitial; $diffHours = $dateInitial->diffInHours($dateFinal); $inactiveHours += $diffHours; } } try { $countPrev = DB::table('S002V01TOTPR') ->where([ ['OTPR_EQIN', '=', $requestData['CODIGO_EQUIPAMIENTO']], ['OTPR_NULI', '=', $requestData['NUMERO_LINEA']], ]) ->count(); } catch (\Throwable $th) { return $th; } try { $countCorr = DB::table('S002V01TOTCO') ->where([ ['OTCO_EQIN', '=', $requestData['CODIGO_EQUIPAMIENTO']], ['OTCO_NULI', '=', $requestData['NUMERO_LINEA']], ]) ->count(); } catch (\Throwable $th) { return $th; } $MTBF = $activeHours / $countCorr; $response = [ 'HORAS_FUNCIONAMIENTO' => $activeHours, 'CANTIDAD_MANTENIMIENTO_PREVENTIVO' => $countPrev, 'CANTIDAD_FALLAS_TOTALES' => $countCorr, 'HORAS_INACTIVIDAD' => $inactiveHours, 'MTBF' => $MTBF, ]; return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $response); } }