FailureLogController.php 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546
  1. <?php
  2. /*
  3. Desarrollador: Ing. Jean Jairo Benitez Meza
  4. Ultima Modificación: 11/04/2023
  5. Módulo: Analisis de Fallas
  6. */
  7. namespace App\Http\Controllers;
  8. use App\Http\Controllers\Controller;
  9. use App\Http\Controllers\ResponseController;
  10. use App\Http\Controllers\EncryptionController;
  11. use Illuminate\Http\Request;
  12. use Illuminate\Support\Carbon;
  13. use Illuminate\Support\Facades\DB;
  14. use Illuminate\Support\Facades\Validator;
  15. use App\Http\Controllers\FunctionsController;
  16. class FailureLogController extends Controller
  17. {
  18. private $responseController;
  19. private $encController;
  20. private $functionsController;
  21. public function __construct( ) {
  22. $this->responseController = new ResponseController();
  23. $this->encController = new EncryptionController();
  24. $this->functionsController = new FunctionsController();
  25. }
  26. public function getFailureLog($user, $line) {
  27. try {
  28. $getFailureLog = DB::table('S002V01TBIFA')
  29. ->where('BIFA_NULI', '=', $line)
  30. ->where('LIFA_NULI', '=', $line)
  31. ->where('LISI_NULI', '=', $line)
  32. ->where('LIME_NULI', '=', $line)
  33. ->where('LIFA_ESTA', '=', 'Activo')
  34. ->where('LISI_ESTA', '=', 'Activo')
  35. ->where('LIME_ESTA', '=', 'Activo')
  36. ->join('S002V01TLIFA', 'LIFA_IDFA', '=', 'BIFA_IDFA')
  37. ->join('S002V01TLISI', 'LISI_IDSI', '=', 'BIFA_IDSI')
  38. ->join('S002V01TLIME', 'LIME_IDME', '=', 'BIFA_IDME')
  39. ->get([
  40. 'BIFA_NUFA AS NUMERO_FALLA',
  41. 'BIFA_COEQ AS CODIGO_EQUIPAMIENTO',
  42. 'BIFA_ESFA AS ESTADO_FALLA',
  43. 'LIFA_IDFA AS ID_FALLA',
  44. 'LIFA_NOFA AS NOMBRE_FALLA',
  45. 'LIFA_NIVE AS NIVEL_CRITICIDAD_FALLA',
  46. 'LIFA_CAUS AS CAUSA_FALLA',
  47. 'LISI_IDSI AS ID_SINTOMA',
  48. 'LISI_NOSI AS NOMBRE_SINTOMA',
  49. 'LISI_CLAS AS CLASIFICACION_SINTOMA',
  50. 'LISI_CAUS AS CAUSA_SINTOMA',
  51. 'BIFA_CAUS AS CAUSA',
  52. 'BIFA_FEFA AS FECHA_FALA',
  53. 'BIFA_CLAS AS CLASIFICACION',
  54. 'BIFA_REPA AS REPARABLE',
  55. 'BIFA_DESO AS SOLUCION',
  56. 'BIFA_COME AS COMENTARIOS',
  57. 'BIFA_VAOB AS VALOR_OBTENIDO',
  58. 'LIME_IDME AS ID_MEDIDA',
  59. 'LIME_NOME AS NOMBRE_MEDIDA',
  60. 'LIME_ACME AS ACRONIMO_MEDIDA',
  61. 'BIFA_ESTA AS ESTADO',
  62. 'BIFA_USRE AS USUARIO_REGISTRA',
  63. 'BIFA_FERE AS FECHA_REGISTRA',
  64. 'BIFA_USMO AS USUARIO_MODIFICA',
  65. 'BIFA_FEMO AS FECHA_MODIFICA',
  66. ]);
  67. } catch (\Throwable $th) {
  68. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_GET000: No se pudo realizar la consulta a la base.", $th->getMessage(), 500);
  69. }
  70. $arrFailureLog = json_decode( json_encode( $getFailureLog ), true );
  71. $arrEquipmentCode = array_column($arrFailureLog, 'CODIGO_EQUIPAMIENTO');
  72. $arrEquipmentCode = array_unique($arrEquipmentCode);
  73. $count = 0;
  74. $arrEquipmentFailureLog = array();
  75. foreach ($arrEquipmentCode as $keyEquipmentCode => $equipmentCode) {
  76. $lastUpdate = '';
  77. $lastUser = '';
  78. $lastState = '';
  79. $lastClassification = '';
  80. $amountFailures = 0;
  81. foreach ($arrFailureLog as $keyFailureLog => $failureLog) {
  82. if ( $equipmentCode === $failureLog['CODIGO_EQUIPAMIENTO'] ) {
  83. $tempLastUpdate = '';
  84. $tempLastUser = '';
  85. if ( is_null($failureLog['FECHA_MODIFICA']) ) {
  86. $tempLastUpdate = $failureLog['FECHA_REGISTRA'];
  87. $tempLastUser = $failureLog['USUARIO_REGISTRA'];
  88. } else {
  89. $tempLastUpdate = $failureLog['FECHA_MODIFICA'];
  90. $tempLastUser = $failureLog['USUARIO_MODIFICA'];
  91. }
  92. if ($lastUpdate === '') {
  93. $lastUpdate = $tempLastUpdate;
  94. $lastUser = $tempLastUser;
  95. $lastState = $failureLog['ESTADO_FALLA'];
  96. $lastClassification = $failureLog['CLASIFICACION'];
  97. } else {
  98. $carTempLastUpdate = Carbon::create($tempLastUpdate);
  99. $carLastState = Carbon::create($lastUpdate);
  100. if ($carTempLastUpdate->greaterThan($carLastState)) {
  101. $lastUpdate = $tempLastUpdate;
  102. $lastUser = $tempLastUser;
  103. $lastState = $failureLog['ESTADO_FALLA'];
  104. $lastClassification = $failureLog['CLASIFICACION'];
  105. }
  106. }
  107. $amountFailures ++;
  108. }
  109. }
  110. $arrEquipmentFailureLog[$count]['CODIGO_EQUIPAMIENTO'] = $equipmentCode;
  111. $arrEquipmentFailureLog[$count]['ULTIMA_MODIFICACION'] = $lastUpdate;
  112. $arrEquipmentFailureLog[$count]['ULTIMO_USUARIO'] = $lastUser;
  113. $arrEquipmentFailureLog[$count]['ESTADO_ACTUAL'] = $lastState;
  114. $arrEquipmentFailureLog[$count]['CLASIFICACION_ACTUAL'] = $lastClassification;
  115. $arrEquipmentFailureLog[$count]['CANTIDAD_FALLAS'] = $amountFailures;
  116. $count++;
  117. }
  118. return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrEquipmentFailureLog);
  119. }
  120. public function getHistoryFailureEquipment($equipment, $user, $line) {
  121. try {
  122. $equipment = $this->encController->decrypt($equipment);
  123. } catch (\Throwable $th) {
  124. return $this->responseController->makeResponse(true, "ERR_GETHISTORY_GETEQUIPMENT000", $th->getMessage(), 500);
  125. }
  126. try {
  127. $getFailuresLog = DB::table('S002V01TBIFA')
  128. ->where('BIFA_COEQ', '=', $equipment)
  129. ->where('BIFA_NULI', '=', $line)
  130. ->where('BIFA_ESTA', '=', 'Activo')
  131. ->where('LIFA_ESTA', '=', 'Activo')
  132. ->where('LISI_ESTA', '=', 'Activo')
  133. ->where('LIME_ESTA', '=', 'Activo')
  134. ->join('S002V01TLIFA', 'LIFA_IDFA', '=', 'BIFA_IDFA')
  135. ->join('S002V01TLISI', 'LISI_IDSI', '=', 'BIFA_IDSI')
  136. ->join('S002V01TLIME', 'LIME_IDME', '=', 'BIFA_IDME')
  137. ->get([
  138. 'BIFA_NUFA AS NUMERO_FALLA',
  139. 'LIFA_IDFA AS ID_FALLA',
  140. 'LIFA_NOFA AS NOMBRE_FALLA',
  141. 'LIFA_NIVE AS NIVEL_CRITICIDAD_FALLA',
  142. 'LISI_IDSI AS ID_SINTOMA',
  143. 'LISI_NOSI AS NOMBRE_SINTOMA',
  144. 'LISI_CLAS AS CLASIFICACION_SINTOMA',
  145. 'BIFA_CAUS AS CAUSA',
  146. 'BIFA_FEFA AS FECHA_FALA',
  147. 'BIFA_CLAS AS CLASIFICACION',
  148. 'BIFA_REPA AS REPARABLE',
  149. 'BIFA_USRE AS USUARIO_REGISTRA',
  150. 'BIFA_FERE AS FECHA_REGISTRA',
  151. 'BIFA_USMO AS USUARIO_MODIFICA',
  152. 'BIFA_FEMO AS FECHA_MODIFICA',
  153. ]);
  154. } catch (\Throwable $th) {
  155. return $this->responseController->makeResponse(true, "ERR_GETHISTORY_GETEQUIPMENT001: No se pudo realizar la consulta a la base.", $th->getMessage(), 500);
  156. }
  157. $arrFailureLogTemp = json_decode( json_encode( $getFailuresLog ), true );
  158. $arrFailureLog = array();
  159. foreach ($arrFailureLogTemp as $keyFailureLogTemp => $failureLogTemp) {
  160. $numero_falla = $failureLogTemp['NUMERO_FALLA'];
  161. $nombre_falla = $failureLogTemp['NOMBRE_FALLA'].' ('.$failureLogTemp['ID_FALLA'].')';
  162. $nivel_criticidad_falla = $failureLogTemp['NUMERO_FALLA'];
  163. $nombre_sintoma = $failureLogTemp['NUMERO_FALLA'];
  164. $clasificacion_sintoma = $failureLogTemp['NUMERO_FALLA'];
  165. $causa = $failureLogTemp['NUMERO_FALLA'];
  166. $fecha_fala = $failureLogTemp['NUMERO_FALLA'];
  167. $clasificacion = $failureLogTemp['NUMERO_FALLA'];
  168. $reparable = $failureLogTemp['NUMERO_FALLA'];
  169. $usuario_registra = $failureLogTemp['NUMERO_FALLA'];
  170. $fecha_registra = $failureLogTemp['NUMERO_FALLA'];
  171. $arrFailureLog[] = [
  172. 'NUMERO_FALLA' => $numero_falla,
  173. 'NOMBRE_FALLA' => $nombre_falla,
  174. 'NIVEL_CRITICIDAD_FALLA' => $nivel_criticidad_falla,
  175. 'NOMBRE_SINTOMA' => $nombre_sintoma,
  176. 'CLASIFICACION_SINTOMA' => $clasificacion_sintoma,
  177. 'CAUSA' => $causa,
  178. 'FECHA_FALA' => $fecha_fala,
  179. 'CLASIFICACION' => $clasificacion,
  180. 'REPARABLE' => $reparable,
  181. 'USUARIO_REGISTRA' => $usuario_registra,
  182. 'FECHA_REGISTRA' => $fecha_registra,
  183. ];
  184. }
  185. return $arrFailureLog;
  186. }
  187. public function getFailureLogActives($user, $line) {
  188. try {
  189. $getFailureLog = DB::table('S002V01TBIFA')
  190. ->where('BIFA_NULI', '=', $line)
  191. ->where('LIFA_NULI', '=', $line)
  192. ->where('LISI_NULI', '=', $line)
  193. ->where('LIME_NULI', '=', $line)
  194. ->where('BIFA_ESTA', '=', 'Activo')
  195. ->where('LIFA_ESTA', '=', 'Activo')
  196. ->where('LISI_ESTA', '=', 'Activo')
  197. ->where('LIME_ESTA', '=', 'Activo')
  198. ->join('S002V01TLIFA', 'LIFA_IDFA', '=', 'BIFA_IDFA')
  199. ->join('S002V01TLISI', 'LISI_IDSI', '=', 'BIFA_IDSI')
  200. ->join('S002V01TLIME', 'LIME_IDME', '=', 'BIFA_IDME')
  201. ->get([
  202. 'BIFA_NUFA AS NUMERO_FALLA',
  203. 'BIFA_COEQ AS CODIGO_EQUIPAMIENTO',
  204. 'LIFA_IDFA AS ID_FALLA',
  205. 'LIFA_NOFA AS NOMBRE_FALLA',
  206. 'LIFA_NIVE AS NIVEL_CRITICIDAD_FALLA',
  207. 'LIFA_CAUS AS CAUSA_FALLA',
  208. 'LISI_IDSI AS ID_SINTOMA',
  209. 'LISI_NOSI AS NOMBRE_SINTOMA',
  210. 'LISI_CLAS AS CLASIFICACION_SINTOMA',
  211. 'LISI_CAUS AS CAUSA_SINTOMA',
  212. 'BIFA_CAUS AS CAUSA',
  213. 'BIFA_FEFA AS FECHA_FALA',
  214. 'BIFA_CLAS AS CLASIFICACION',
  215. 'BIFA_REPA AS REPARABLE',
  216. 'BIFA_DESO AS SOLUCION',
  217. 'BIFA_COME AS COMENTARIOS',
  218. 'BIFA_VAOB AS VALOR_OBTENIDO',
  219. 'LIME_IDME AS ID_MEDIDA',
  220. 'LIME_NOME AS NOMBRE_MEDIDA',
  221. 'LIME_ACME AS ACRONIMO_MEDIDA',
  222. 'BIFA_USRE AS USUARIO_REGISTRA',
  223. 'BIFA_FERE AS FECHA_REGISTRA',
  224. 'BIFA_USMO AS USUARIO_MODIFICA',
  225. 'BIFA_FEMO AS FECHA_MODIFICA',
  226. ]);
  227. } catch (\Throwable $th) {
  228. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_GETACTIVE000: No se pudo realizar la consulta a la base.", $th->getMessage(), 500);
  229. }
  230. $arrFailureLog = json_decode( json_encode( $getFailureLog ), true );
  231. return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrFailureLog);
  232. }
  233. public function registerFailureLog(Request $request) {
  234. $validator = Validator::make($request->all(), [
  235. 'CODIGO_EQUIPAMIENTO' => 'required|string',
  236. 'ID_FALLA' => 'required|integer',
  237. // 'ID_SINTOMA' => 'required|integer',
  238. 'CAUSA' => 'required|string',
  239. 'FECHA_FALA' => 'required|string',
  240. 'CLASIFICACION' => 'required|string',
  241. 'REPARABLE' => 'required|string',
  242. 'SOLUCION' => 'required|string',
  243. 'COMENTARIOS' => 'required|string',
  244. 'VALOR_OBTENIDO' => 'required|string',
  245. 'ID_MEDIDA' => 'required|string',
  246. 'USUARIO' => 'required|string',
  247. 'NUMERO_LINEA' => 'required|string',
  248. ]);
  249. if ($validator->fails()) {
  250. return $this->responseController->makeResponse(
  251. true,
  252. "ERR_FAILURELOG_REG000: Se encontraron uno o más errores.",
  253. $this->responseController->makeErrors($validator->errors()->messages()),
  254. 401
  255. );
  256. }
  257. DB::beginTransaction();
  258. $requestData = $request->all();
  259. try {
  260. $user = $this->encController->decrypt($requestData['USUARIO']);
  261. } catch (\Throwable $th) {
  262. DB::rollBack();
  263. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_REG001: No se pudo obtener el usuario.", $th->getMessage(), 500);
  264. }
  265. try {
  266. $validateExistsFailureList = DB::table('S002V01TLIFA')
  267. ->where('LIFA_NULI', '=', $requestData['NUMERO_LINEA'])
  268. ->where('LIFA_IDFA', '=', $requestData['ID_FALLA'])
  269. ->where('LIFA_ESTA', '=', 'Activo')
  270. ->exists();
  271. } catch (\Throwable $th) {
  272. DB::rollBack();
  273. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_REG002: Ocurrió un error al consultar la lista de fallas.", $th->getMessage(), 500);
  274. }
  275. if ( !$validateExistsFailureList ) {
  276. DB::rollBack();
  277. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_REG003: No existe la falla #".$requestData['ID_FALLA']." en la lista de fallas.", [], 500);
  278. }
  279. if ( !is_null($requestData['ID_SINTOMA']) && $requestData['ID_SINTOMA'] !== '' ) {
  280. try {
  281. $validateExistsSymptomList = DB::table('S002V01TLISI')
  282. ->where('LISI_NULI', '=', $requestData['NUMERO_LINEA'])
  283. ->where('LISI_IDSI', '=', $requestData['ID_SINTOMA'])
  284. ->where('LISI_ESTA', '=', 'Activo')
  285. ->exists();
  286. } catch (\Throwable $th) {
  287. DB::rollBack();
  288. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_REG004: Ocurrió un error al consultar la lista de síntomas.", $th->getMessage(), 500);
  289. }
  290. if ( !$validateExistsSymptomList ) {
  291. DB::rollBack();
  292. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_REG005: No existe el síntoma #".$requestData['ID_SINTOMA']." en la lista de síntomas.", [], 500);
  293. }
  294. }
  295. try {
  296. $validateExistsMeasure = DB::table('S002V01TLIME')
  297. ->where('LIME_NULI', '=', $requestData['NUMERO_LINEA'])
  298. ->where('LIME_IDME', '=', $requestData['ID_MEDIDA'])
  299. ->where('LIME_ESTA', '=', 'Activo')
  300. ->exists();
  301. } catch (\Throwable $th) {
  302. DB::rollBack();
  303. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_REG006: Ocurrió un error al consultar la lista de medidas.", $th->getMessage(), 500);
  304. }
  305. if ( !$validateExistsMeasure ) {
  306. DB::rollBack();
  307. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_REG007: No existe la medida #".$requestData['ID_MEDIDA']." en la lista de medidas.", [], 500);
  308. }
  309. try {
  310. $validateExistsEquipment = DB::table('S002V01TEQUI')
  311. ->where('EQUI_NULI', '=', $requestData['NUMERO_LINEA'])
  312. ->where('EQUI_COEQ', '=', $requestData['CODIGO_EQUIPAMIENTO'])
  313. ->exists();
  314. } catch (\Throwable $th) {
  315. DB::rollBack();
  316. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_REG008: Ocurrió un error al consultar los equipamientos.", $th->getMessage(), 500);
  317. }
  318. if ( !$validateExistsEquipment ) {
  319. DB::rollBack();
  320. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_REG009: No existe el equipamiento ".$requestData['CODIGO_EQUIPAMIENTO']." en la lista de equipamientos.", [], 500);
  321. }
  322. $now = $this->functionsController->now();
  323. $currentDate = $now->toDateTimeString();
  324. try {
  325. $validateInsert = DB::table('S002V01TBIFA')->insert([
  326. 'BIFA_NULI' => $requestData['NUMERO_LINEA'],
  327. 'BIFA_COEQ' => $requestData['CODIGO_EQUIPAMIENTO'],
  328. 'BIFA_IDFA' => $requestData['ID_FALLA'],
  329. 'BIFA_IDSI' => $requestData['ID_SINTOMA'],
  330. 'BIFA_CAUS' => $requestData['CAUSA'],
  331. 'BIFA_FEFA' => $requestData['FECHA_FALA'],
  332. 'BIFA_CLAS' => $requestData['CLASIFICACION'],
  333. 'BIFA_REPA' => $requestData['REPARABLE'],
  334. 'BIFA_DESO' => $requestData['SOLUCION'],
  335. 'BIFA_COME' => $requestData['COMENTARIOS'],
  336. 'BIFA_VAOB' => $requestData['VALOR_OBTENIDO'],
  337. 'BIFA_IDME' => $requestData['ID_MEDIDA'],
  338. 'BIFA_USRE' => $user,
  339. 'BIFA_FERE' => $currentDate,
  340. 'BIFA_FEAR' => DB::raw('CURRENT_TIMESTAMP')
  341. ]);
  342. } catch (\Throwable $th) {
  343. DB::rollBack();
  344. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_REG010: Ocurrió un error al intentar registrar la falla en la base de datos.", $th->getMessage(), 500);
  345. }
  346. if ( !$validateInsert ) {
  347. DB::rollBack();
  348. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_REG011: No se pudo registrar la falla.", [], 500);
  349. }
  350. DB::commit();
  351. return $this->responseController->makeResponse(false, "ÉXITO: Registro Exitoso");
  352. }
  353. public function updateFailureLog(Request $request) {
  354. $validator = Validator::make($request->all(), [
  355. 'NUMERO_FALLA' => 'required|integer',
  356. 'CODIGO_EQUIPAMIENTO' => 'required|string',
  357. 'ID_FALLA' => 'required|integer',
  358. // 'ID_SINTOMA' => 'required|integer',
  359. 'CAUSA' => 'required|string',
  360. 'FECHA_FALA' => 'required|string',
  361. 'CLASIFICACION' => 'required|string',
  362. 'REPARABLE' => 'required|string',
  363. 'SOLUCION' => 'required|string',
  364. 'COMENTARIOS' => 'required|string',
  365. 'VALOR_OBTENIDO' => 'required|string',
  366. 'ID_MEDIDA' => 'required|string',
  367. 'USUARIO' => 'required|string',
  368. 'NUMERO_LINEA' => 'required|string',
  369. ]);
  370. if ($validator->fails()) {
  371. return $this->responseController->makeResponse(
  372. true,
  373. "ERR_FAILURELOG_UPD000: Se encontraron uno o más errores.",
  374. $this->responseController->makeErrors($validator->errors()->messages()),
  375. 401
  376. );
  377. }
  378. DB::beginTransaction();
  379. $requestData = $request->all();
  380. try {
  381. $user = $this->encController->decrypt($requestData['USUARIO']);
  382. } catch (\Throwable $th) {
  383. DB::rollBack();
  384. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD001: No se pudo obtener el usuario.", $th->getMessage(), 500);
  385. }
  386. try {
  387. $validateExistsFailureLog = DB::table('S002V01TBIFA')
  388. ->where('BIFA_NULI', '=', $requestData['NUMERO_LINEA'])
  389. ->where('BIFA_NUFA', '=', $requestData['NUMERO_FALLA'])
  390. ->where('BIFA_ESTA', '=', 'Activo')
  391. ->exists();
  392. } catch (\Throwable $th) {
  393. DB::rollBack();
  394. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD002: Ocurrió un error al consultar la bitácora de fallas.", $th->getMessage(), 500);
  395. }
  396. if ( !$validateExistsFailureLog ) {
  397. DB::rollBack();
  398. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD003: No existe la falla #".$requestData['NUMERO_FALLA']." en la bitácora de fallas.", [], 500);
  399. }
  400. try {
  401. $validateExistsFailureList = DB::table('S002V01TLIFA')
  402. ->where('LIFA_NULI', '=', $requestData['NUMERO_LINEA'])
  403. ->where('LIFA_IDFA', '=', $requestData['ID_FALLA'])
  404. ->where('LIFA_ESTA', '=', 'Activo')
  405. ->exists();
  406. } catch (\Throwable $th) {
  407. DB::rollBack();
  408. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD004: Ocurrió un error al consultar la lista de fallas.", $th->getMessage(), 500);
  409. }
  410. if ( !$validateExistsFailureList ) {
  411. DB::rollBack();
  412. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD005: No existe la falla #".$requestData['ID_FALLA']." en la lista de fallas.", [], 500);
  413. }
  414. if ( !is_null($requestData['ID_SINTOMA']) && $requestData['ID_SINTOMA'] !== '' ) {
  415. try {
  416. $validateExistsSymptomList = DB::table('S002V01TLISI')
  417. ->where('LISI_NULI', '=', $requestData['NUMERO_LINEA'])
  418. ->where('LISI_IDSI', '=', $requestData['ID_SINTOMA'])
  419. ->where('LISI_ESTA', '=', 'Activo')
  420. ->exists();
  421. } catch (\Throwable $th) {
  422. DB::rollBack();
  423. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD006: Ocurrió un error al consultar la lista de síntomas.", $th->getMessage(), 500);
  424. }
  425. if ( !$validateExistsSymptomList ) {
  426. DB::rollBack();
  427. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD007: No existe el síntoma #".$requestData['ID_SINTOMA']." en la lista de síntomas.", [], 500);
  428. }
  429. }
  430. try {
  431. $validateExistsMeasure = DB::table('S002V01TLIME')
  432. ->where('LIME_NULI', '=', $requestData['NUMERO_LINEA'])
  433. ->where('LIME_IDME', '=', $requestData['ID_MEDIDA'])
  434. ->where('LIME_ESTA', '=', 'Activo')
  435. ->exists();
  436. } catch (\Throwable $th) {
  437. DB::rollBack();
  438. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD008: Ocurrió un error al consultar la lista de medidas.", $th->getMessage(), 500);
  439. }
  440. if ( !$validateExistsMeasure ) {
  441. DB::rollBack();
  442. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD009: No existe la medida #".$requestData['ID_MEDIDA']." en la lista de medidas.", [], 500);
  443. }
  444. try {
  445. $validateExistsEquipment = DB::table('S002V01TEQUI')
  446. ->where('EQUI_NULI', '=', $requestData['NUMERO_LINEA'])
  447. ->where('EQUI_COEQ', '=', $requestData['CODIGO_EQUIPAMIENTO'])
  448. ->exists();
  449. } catch (\Throwable $th) {
  450. DB::rollBack();
  451. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD010: Ocurrió un error al consultar los equipamientos.", $th->getMessage(), 500);
  452. }
  453. if ( !$validateExistsEquipment ) {
  454. DB::rollBack();
  455. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD011: No existe el equipamiento ".$requestData['CODIGO_EQUIPAMIENTO']." en la lista de equipamientos.", [], 500);
  456. }
  457. $now = $this->functionsController->now();
  458. $currentDate = $now->toDateTimeString();
  459. try {
  460. $validateUpdate = DB::table('S002V01TBIFA')
  461. ->where('BIFA_NUFA', '=', $requestData['NUMERO_FALLA'])
  462. ->where('BIFA_NULI', '=', $requestData['NUMERO_LINEA'])
  463. ->update([
  464. 'BIFA_COEQ' => $requestData['CODIGO_EQUIPAMIENTO'],
  465. 'BIFA_IDFA' => $requestData['ID_FALLA'],
  466. 'BIFA_IDSI' => $requestData['ID_SINTOMA'],
  467. 'BIFA_CAUS' => $requestData['CAUSA'],
  468. 'BIFA_FEFA' => $requestData['FECHA_FALA'],
  469. 'BIFA_CLAS' => $requestData['CLASIFICACION'],
  470. 'BIFA_REPA' => $requestData['REPARABLE'],
  471. 'BIFA_DESO' => $requestData['SOLUCION'],
  472. 'BIFA_COME' => $requestData['COMENTARIOS'],
  473. 'BIFA_VAOB' => $requestData['VALOR_OBTENIDO'],
  474. 'BIFA_IDME' => $requestData['ID_MEDIDA'],
  475. 'BIFA_USMO' => $user,
  476. 'BIFA_FEMO' => $currentDate,
  477. 'BIFA_FEAR' => DB::raw('CURRENT_TIMESTAMP')
  478. ]);
  479. } catch (\Throwable $th) {
  480. DB::rollBack();
  481. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD012: Ocurrió un error al intentar modificar la falla en la base de datos.", $th->getMessage(), 500);
  482. }
  483. if ( !$validateUpdate ) {
  484. DB::rollBack();
  485. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD013: No se pudo modificar la bitácora de falla.", [], 500);
  486. }
  487. DB::commit();
  488. return $this->responseController->makeResponse(false, "ÉXITO: Modificación Exitosa");
  489. }
  490. }