FailureAnalysisController.php 119 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Support\Facades\Validator;
  4. use Illuminate\Support\Facades\DB;
  5. use Illuminate\Http\Request;
  6. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  7. use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
  8. use Dompdf\Dompdf;
  9. use Illuminate\Http\File;
  10. use Illuminate\Support\Facades\Storage;
  11. use Illuminate\Support\Carbon;
  12. class FailureAnalysisController extends Controller
  13. {
  14. private $responseController;
  15. private $encController;
  16. private $functionsController;
  17. private $resourcesController;
  18. public function __construct( ) {
  19. $this->responseController = new ResponseController();
  20. $this->encController = new EncryptionController();
  21. $this->functionsController = new FunctionsController();
  22. $this->resourcesController = new ResourcesController();
  23. }
  24. public function getFailures($user, $line) {
  25. $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
  26. if ($arrResponseCheckUser['error']) {
  27. DB::rollBack();
  28. return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
  29. }
  30. try {
  31. $arrFailures = DB::table('S002V01TLIFA')
  32. ->where('LIFA_NULI', '=', $line)
  33. ->get([
  34. 'LIFA_IDFA AS ID_FALLA',
  35. 'LIFA_NOFA AS NOMBRE_FALLA',
  36. 'LIFA_NIVE AS NIVEL_CRITICIDAD',
  37. 'LIFA_CAUS AS CAUSA_FALLA',
  38. 'LIFA_SOLU AS SOLICION',
  39. 'LIFA_DESC AS DESCRIPCION',
  40. 'LIFA_ESTA AS ESTADO',
  41. 'LIFA_USRE AS USUARIO_REGISTRA',
  42. 'LIFA_FERE AS FECHA_REGISTRA',
  43. 'LIFA_USMO AS USUARIO_MODIFICA',
  44. 'LIFA_FEMO AS FECHA_MODIFICA',
  45. ]);
  46. $arrFailures = json_decode(json_encode($arrFailures), true);
  47. } catch (\Throwable $th) {
  48. return $this->responseController->makeResponse(true, "ERR_FAILURES_GET000: No se pudo realizar la consulta a la base.", $th->getMessage(), 500);
  49. }
  50. $responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate($arrFailures, $line);
  51. if ($responseCheckLatestUpdate['error']) {
  52. return $this->responseController->makeResponse(true, $responseCheckLatestUpdate['msg'], [], 500);
  53. }
  54. $arrFailures = $responseCheckLatestUpdate['response'];
  55. return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrFailures);
  56. }
  57. public function getFailuresActives($user, $line) {
  58. try {
  59. $getFailures = DB::table('S002V01TLIFA')
  60. ->where('LIFA_ESTA', '=', 'Activo')
  61. ->where('LIFA_NULI', '=', 1)
  62. ->get([
  63. 'LIFA_IDFA AS ID_FALLA',
  64. 'LIFA_NOFA AS NOMBRE_FALLA',
  65. 'LIFA_NIVE AS NIVEL_CRITICIDAD',
  66. 'LIFA_CAUS AS CAUSA_FALLA',
  67. 'LIFA_SOLU AS SOLICION',
  68. 'LIFA_DESC AS DESCRIPCION',
  69. 'LIFA_ESTA AS ESTADO',
  70. 'LIFA_USRE AS USUARIO_REGISTRA',
  71. 'LIFA_FERE AS FECHA_REGISTRA',
  72. 'LIFA_USMO AS USUARIO_MODIFICA',
  73. 'LIFA_FEMO AS FECHA_MODIFICA',
  74. ]);
  75. } catch (\Throwable $th) {
  76. return $this->responseController->makeResponse(true, "ERR_FAILURES_GET000: No se pudo realizar la consulta a la base.", $th->getMessage(), 500);
  77. }
  78. return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $getFailures);
  79. }
  80. public function getFailureById($idFailure, $user, $line) {
  81. $idFailure = $this->encController->decrypt($idFailure);
  82. try {
  83. $arrFailures = (array) DB::table('S002V01TLIFA')
  84. ->where('LIFA_IDFA', '=', $idFailure)
  85. ->where('LIFA_NULI', '=', $line)
  86. ->where('LIFA_ESTA', '=', 'Activo')
  87. ->first([
  88. 'LIFA_IDFA AS ID_FALLA',
  89. 'LIFA_NOFA AS NOMBRE_FALLA',
  90. 'LIFA_NIVE AS NIVEL_CRITICIDAD',
  91. 'LIFA_CAUS AS CAUSA_FALLA',
  92. 'LIFA_SOLU AS SOLICION',
  93. 'LIFA_DESC AS DESCRIPCION',
  94. 'LIFA_ESTA AS ESTADO',
  95. 'LIFA_USRE AS USUARIO_REGISTRA',
  96. 'LIFA_FERE AS FECHA_REGISTRA',
  97. 'LIFA_USMO AS USUARIO_MODIFICA',
  98. 'LIFA_FEMO AS FECHA_MODIFICA',
  99. ]);
  100. } catch (\Throwable $th) {
  101. return $this->responseController->makeResponse(
  102. true,
  103. "ERR_FAILURES_GETBYID000: No se pudo realizar la consulta a la base.",
  104. $th->getMessage(),
  105. 500
  106. );
  107. }
  108. if ( !empty($arrFailures) ) {
  109. try {
  110. $arrEquipment = DB::table('S002V01TLFEQ')
  111. ->where('LFEQ_IDFA', '=', $arrFailures['ID_FALLA'])
  112. ->where('LFEQ_NULI', '=', $line)
  113. ->where('LFEQ_ESTA', '=', 'Activo')
  114. ->where('EQUI_NULI', '=', $line)
  115. ->join('S002V01TEQUI', 'EQUI_COEQ', '=', 'LFEQ_COEQ')
  116. ->get([
  117. 'EQUI_COEQ AS CODIGO',
  118. 'EQUI_TIPO AS TIPO',
  119. 'EQUI_MODE AS MODELO',
  120. 'EQUI_IDEQ AS ID_EQUIPO',
  121. 'EQUI_ESFU AS ESTADO_FUNCIONAMIENTO',
  122. // 'EQUI_GAIM AS GALERIA_IMAGENES',
  123. 'EQUI_ELOR AS ELEMENTO_ORIGEN',
  124. 'EQUI_TICO AS TIPO_CODIGO'
  125. ]);
  126. } catch (\Throwable $th) {
  127. return $this->responseController->makeResponse(
  128. true,
  129. "ERR_FAILURES_GETBYID001: No se pudo realizar la consulta a la base.",
  130. $th->getMessage(),
  131. 500
  132. );
  133. }
  134. $arrEquipment = json_decode( json_encode($arrEquipment), true );
  135. foreach ($arrEquipment as $keyEquipment => $equipment) {
  136. $equipment['ID_EQUIPO'] = strval($equipment['ID_EQUIPO']);
  137. $arrEquipment[$keyEquipment] = $equipment;
  138. }
  139. $arrFailures['EQUIPAMIENTOS'] = $arrEquipment;
  140. }
  141. return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrFailures);
  142. }
  143. public function getFailureListByClassification($clasificate, $user, $line) {
  144. try {
  145. $clasificate = $this->encController->decrypt($clasificate);
  146. } catch (\Throwable $th) {
  147. return $this->responseController->makeResponse(true, "ERR_FAILURES_GETCLASS000: No se pudo obtener las clasificación.", $th->getMessage(), 500);
  148. }
  149. try {
  150. $getFailures = DB::table('S002V01TLIFA')
  151. ->where('LIFA_NIVE', '=', $clasificate)
  152. ->where('LIFA_ESTA', '=', 'Activo')
  153. ->where('LIFA_NULI', '=', 1)
  154. ->get([
  155. 'LIFA_IDFA AS ID_FALLA',
  156. 'LIFA_NOFA AS NOMBRE_FALLA',
  157. 'LIFA_NIVE AS NIVEL_CRITICIDAD',
  158. 'LIFA_CAUS AS CAUSA_FALLA',
  159. 'LIFA_SOLU AS SOLICION',
  160. 'LIFA_DESC AS DESCRIPCION',
  161. 'LIFA_ESTA AS ESTADO',
  162. 'LIFA_USRE AS USUARIO_REGISTRA',
  163. 'LIFA_FERE AS FECHA_REGISTRA',
  164. 'LIFA_USMO AS USUARIO_MODIFICA',
  165. 'LIFA_FEMO AS FECHA_MODIFICA',
  166. ]);
  167. } catch (\Throwable $th) {
  168. return $this->responseController->makeResponse(true, "ERR_FAILURES_GETCLASS001: No se pudo realizar la consulta a la base.", $th->getMessage(), 500);
  169. }
  170. return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $getFailures);
  171. }
  172. public function registerFailures(Request $request) {
  173. $validator = Validator::make($request->all(), [
  174. 'NOMBRE_FALLA' => 'required|string',
  175. 'NIVEL' => 'required|string',
  176. 'CAUSA' => 'required|string',
  177. 'SOLUCION' => 'required|string',
  178. 'DESCRIPCION' => 'required|string',
  179. 'EQUIPAMIENTOS' => 'required',
  180. 'NUMERO_LINEA' => 'required|integer',
  181. 'USUARIO' => 'required|string',
  182. ]);
  183. if ($validator->fails()) {
  184. return $this->responseController->makeResponse(
  185. true,
  186. "ERR_FAILURES_REG000: Se encontraron uno o más errores.",
  187. $this->responseController->makeErrors($validator->errors()->messages()),
  188. 401
  189. );
  190. }
  191. DB::beginTransaction();
  192. $requestData = $request->all();
  193. try {
  194. $user = $this->encController->decrypt($requestData['USUARIO']);
  195. } catch (\Throwable $th) {
  196. DB::rollBack();
  197. return $this->responseController->makeResponse(true, "ERR_FAILURES_REG001: No se pudo obtener el usuario.", $th->getMessage(), 500);
  198. }
  199. $now = $this->functionsController->now();
  200. $currentDate = $now->toDateTimeString();
  201. try {
  202. $idFailure = DB::table('S002V01TLIFA')->insertGetId([
  203. 'LIFA_NULI' => $requestData['NUMERO_LINEA'],
  204. 'LIFA_NOFA' => $requestData['NOMBRE_FALLA'],
  205. 'LIFA_NIVE' => $requestData['NIVEL'],
  206. 'LIFA_CAUS' => $requestData['CAUSA'],
  207. 'LIFA_SOLU' => $requestData['SOLUCION'],
  208. 'LIFA_DESC' => $requestData['DESCRIPCION'],
  209. 'LIFA_USRE' => $user,
  210. 'LIFA_FERE' => $currentDate,
  211. 'LIFA_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
  212. ]);
  213. } catch (\Throwable $th) {
  214. DB::rollBack();
  215. return $this->responseController->makeResponse(
  216. true,
  217. "ERR_FAILURES_REG002: Ocurrió un error al registrar el formulario en la lista de falla.",
  218. $th->getMessage(),
  219. 500
  220. );
  221. }
  222. if ( !$idFailure ) {
  223. DB::rollBack();
  224. return $this->responseController->makeResponse(
  225. true,
  226. "ERR_FAILURES_REG003: No se pudo registrar el formulario en la lista de falla.",
  227. [],
  228. 500
  229. );
  230. }
  231. foreach ($requestData['EQUIPAMIENTOS'] as $keyEquipment => $equipment) {
  232. try {
  233. $validateRegisterEquipment = DB::table('S002V01TLFEQ')->insert([
  234. 'LFEQ_NULI' => $requestData['NUMERO_LINEA'],
  235. 'LFEQ_IDFA' => $idFailure,
  236. 'LFEQ_COEQ' => $equipment,
  237. 'LFEQ_USRE' => $user,
  238. 'LFEQ_FERE' => $currentDate,
  239. 'LFEQ_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
  240. ]);
  241. } catch (\Throwable $th) {
  242. DB::rollBack();
  243. return $this->responseController->makeResponse(
  244. true,
  245. "ERR_FAILURES_REG004: Ocurrió un error al registrar el formulario en la lista de falla.",
  246. $th->getMessage(),
  247. 500
  248. );
  249. }
  250. if ( !$validateRegisterEquipment ) {
  251. DB::rollBack();
  252. return $this->responseController->makeResponse(
  253. true,
  254. "ERR_FAILURES_REG005: No se pudo registrar el equipamiento $equipment en la lista de fallas.",
  255. [],
  256. 500
  257. );
  258. }
  259. }
  260. DB::commit();
  261. return $this->responseController->makeResponse(false, "ÉXITO: Registro Exitoso");
  262. }
  263. public function updateFailures(Request $request) {
  264. $validator = Validator::make($request->all(), [
  265. 'ID_FALLA' => 'required|integer',
  266. 'NOMBRE_FALLA' => 'required|string',
  267. 'NIVEL' => 'required|string',
  268. 'CAUSA' => 'required|string',
  269. 'SOLUCION' => 'required|string',
  270. 'DESCRIPCION' => 'required|string',
  271. 'EQUIPAMIENTOS' => 'required',
  272. 'NUMERO_LINEA' => 'required|integer',
  273. 'USUARIO' => 'required|string',
  274. ]);
  275. if ($validator->fails()) {
  276. return $this->responseController->makeResponse(
  277. true,
  278. "ERR_FAILURES_UPD000: Se encontraron uno o más errores.",
  279. $this->responseController->makeErrors($validator->errors()->messages()),
  280. 401
  281. );
  282. }
  283. DB::beginTransaction();
  284. $requestData = $request->all();
  285. try {
  286. $user = $this->encController->decrypt($request['USUARIO']);
  287. } catch (\Throwable $th) {
  288. DB::rollBack();
  289. return $this->responseController->makeResponse(true, "ERR_FAILURES_UPD001: No se pudo obtener el usuario.", $th->getMessage(), 500);
  290. }
  291. $now = $this->functionsController->now();
  292. $currentDate = $now->toDateTimeString();
  293. try {
  294. $idFailure = DB::table('S002V01TLIFA')
  295. ->where('LIFA_NULI', '=', $requestData['NUMERO_LINEA'])
  296. ->where('LIFA_IDFA', '=', $requestData['ID_FALLA'])
  297. ->update([
  298. 'LIFA_NOFA' => $requestData['NOMBRE_FALLA'],
  299. 'LIFA_NIVE' => $requestData['NIVEL'],
  300. 'LIFA_CAUS' => $requestData['CAUSA'],
  301. 'LIFA_SOLU' => $requestData['SOLUCION'],
  302. 'LIFA_DESC' => $requestData['DESCRIPCION'],
  303. 'LIFA_USMO' => $user,
  304. 'LIFA_FEMO' => $currentDate,
  305. 'LIFA_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
  306. ]);
  307. } catch (\Throwable $th) {
  308. DB::rollBack();
  309. return $this->responseController->makeResponse(
  310. true,
  311. "ERR_FAILURES_UPD002: Ocurrió un error al modificar el formulario en la lista de falla.",
  312. $th->getMessage(),
  313. 500
  314. );
  315. }
  316. if ( !$idFailure ) {
  317. DB::rollBack();
  318. return $this->responseController->makeResponse(
  319. true,
  320. "ERR_FAILURES_UPD003: No se pudo modificar el formulario en la lista de falla.",
  321. [],
  322. 500
  323. );
  324. }
  325. foreach ($requestData['EQUIPAMIENTOS'] as $keyEquipment => $equipment) {
  326. try {
  327. $validateExists = DB::table('S002V01TLFEQ')
  328. ->where('LFEQ_IDFA', '=', $requestData['ID_FALLA'])
  329. ->where('LFEQ_NULI', '=', $requestData['NUMERO_LINEA'])
  330. ->where('LFEQ_COEQ', '=', $equipment)
  331. ->exists();
  332. } catch (\Throwable $th) {
  333. DB::rollBack();
  334. return $this->responseController->makeResponse(
  335. true,
  336. "ERR_FAILURES_UPD004: Ocurrió un error al consultar el equipamiento.",
  337. $th->getMessage(),
  338. 500
  339. );
  340. }
  341. if ( $validateExists ) {
  342. try {
  343. $validate = DB::table('S002V01TLFEQ')
  344. ->where('LFEQ_NULI', '=', $requestData['NUMERO_LINEA'])
  345. ->where('LFEQ_IDFA', '=', $requestData['ID_FALLA'])
  346. ->where('LFEQ_COEQ', '=', $equipment)
  347. ->update([
  348. 'LFEQ_ESTA' => 'Activo',
  349. 'LFEQ_USMO' => $user,
  350. 'LFEQ_FEMO' => $currentDate,
  351. 'LFEQ_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
  352. ]);
  353. } catch (\Throwable $th) {
  354. DB::rollBack();
  355. return $this->responseController->makeResponse(
  356. true,
  357. "ERR_FAILURES_UPD005: Ocurrió un error al modificar el formulario en la lista de falla el equipamiento $equipment.",
  358. $th->getMessage(),
  359. 500
  360. );
  361. }
  362. } else {
  363. try {
  364. $validate = DB::table('S002V01TLFEQ')->insert([
  365. 'LFEQ_NULI' => $requestData['NUMERO_LINEA'],
  366. 'LFEQ_IDFA' => $requestData['ID_FALLA'],
  367. 'LFEQ_COEQ' => $equipment,
  368. 'LFEQ_USRE' => $user,
  369. 'LFEQ_FERE' => $currentDate,
  370. 'LFEQ_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
  371. ]);
  372. } catch (\Throwable $th) {
  373. DB::rollBack();
  374. return $this->responseController->makeResponse(
  375. true,
  376. "ERR_FAILURES_UPD006: Ocurrió un error al registrar el formulario en la lista de falla el equipamiento $equipment.",
  377. $th->getMessage(),
  378. 500
  379. );
  380. }
  381. }
  382. if ( !$validate ) {
  383. DB::rollBack();
  384. return $this->responseController->makeResponse(
  385. true,
  386. "ERR_FAILURES_UPD007: No se pudo modificar el equipamiento $equipment en la lista de fallas.",
  387. [],
  388. 500
  389. );
  390. }
  391. }
  392. try {
  393. $getListEquipment = DB::table('S002V01TLFEQ')
  394. ->where('LFEQ_IDFA', '=', $requestData['ID_FALLA'])
  395. ->where('LFEQ_NULI', '=', $requestData['NUMERO_LINEA'])
  396. ->get([
  397. 'LFEQ_IDLF',
  398. 'LFEQ_IDFA',
  399. 'LFEQ_COEQ',
  400. 'LFEQ_ESTA',
  401. ]);
  402. } catch (\Throwable $th) {
  403. DB::rollBack();
  404. return $this->responseController->makeResponse(
  405. true,
  406. "ERR_FAILURES_UPD008: Ocurrió un error al consultar la lista de equipamientos.",
  407. $th->getMessage(),
  408. 500
  409. );
  410. }
  411. $arrListEquipment = json_decode( json_encode($getListEquipment), true );
  412. foreach ($arrListEquipment as $keyListEquipment => $listEquipment) {
  413. if( !in_array($listEquipment['LFEQ_COEQ'], $requestData['EQUIPAMIENTOS']) ) {
  414. try {
  415. $validateDelete = DB::table('S002V01TLFEQ')
  416. ->where('LFEQ_NULI', '=', $requestData['NUMERO_LINEA'])
  417. ->where('LFEQ_IDFA', '=', $requestData['ID_FALLA'])
  418. ->where('LFEQ_COEQ', '=', $listEquipment['LFEQ_COEQ'])
  419. ->update([
  420. 'LFEQ_ESTA' => 'Eliminado',
  421. 'LFEQ_USMO' => $user,
  422. 'LFEQ_FEMO' => $currentDate,
  423. 'LFEQ_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
  424. ]);
  425. } catch (\Throwable $th) {
  426. DB::rollBack();
  427. return $this->responseController->makeResponse(
  428. true,
  429. "ERR_FAILURES_UPD009: Ocurrió un error al eliminar de la lista de falla el equipamiento ". $listEquipment['LFEQ_COEQ'].".",
  430. $th->getMessage(),
  431. 500
  432. );
  433. }
  434. if ( !$validateDelete ) {
  435. DB::rollBack();
  436. return $this->responseController->makeResponse(
  437. true,
  438. "ERR_FAILURES_UPD010: No se pudo eliminar de la lista de falla el equipamiento ". $listEquipment['LFEQ_COEQ'].".",
  439. [],
  440. 500
  441. );
  442. }
  443. }
  444. }
  445. DB::commit();
  446. return $this->responseController->makeResponse(false, "ÉXITO: Modificación Exitosa");
  447. }
  448. public function deleteFailures(Request $request) {
  449. $validator = Validator::make($request->all(), [
  450. 'ID_FALLA' => 'required|integer',
  451. 'NUMERO_LINEA' => 'required|integer',
  452. 'USUARIO' => 'required|string',
  453. ]);
  454. if ($validator->fails()) {
  455. return $this->responseController->makeResponse(
  456. true,
  457. "ERR_FAILURES_DEL000: Se encontraron uno o más errores.",
  458. $this->responseController->makeErrors($validator->errors()->messages()),
  459. 401
  460. );
  461. }
  462. DB::beginTransaction();
  463. $requestData = $request->all();
  464. try {
  465. $user = $this->encController->decrypt($request['USUARIO']);
  466. } catch (\Throwable $th) {
  467. DB::rollBack();
  468. return $this->responseController->makeResponse(true, "ERR_FAILURES_DEL001: No se pudo obtener el usuario.", $th->getMessage(), 500);
  469. }
  470. $now = $this->functionsController->now();
  471. $currentDate = $now->toDateTimeString();
  472. try {
  473. $exist = DB::table('S002V01TLIFA')
  474. ->where('LIFA_IDFA', '=', $requestData['ID_FALLA'])
  475. ->where('LIFA_NULI', '=', $requestData['NUMERO_LINEA'])
  476. ->exists();
  477. } catch (\Throwable $th) {
  478. DB::rollBack();
  479. return $this->responseController->makeResponse(true, "ERR_FAILURES_DEL002: Ocurrió un error al consultar en la base de datos.", $th->getMessage(), 500);
  480. }
  481. if (!$exist) {
  482. DB::rollBack();
  483. return $this->responseController->makeResponse(true, "ERR_FAILURES_DEL003: No se pudo encontrar el registro dentro de la base de datos.", [], 500);
  484. }
  485. try {
  486. $validateUpdate = DB::table('S002V01TLIFA')
  487. ->where('LIFA_IDFA', '=', $requestData['ID_FALLA'])
  488. ->where('LIFA_NULI', '=', $requestData['NUMERO_LINEA'])
  489. ->update([
  490. 'LIFA_ESTA' => 'Eliminado',
  491. 'LIFA_USMO' => $user,
  492. 'LIFA_FEMO' => $currentDate,
  493. 'LIFA_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
  494. ]);
  495. } catch (\Throwable $th) {
  496. DB::rollBack();
  497. return $this->responseController->makeResponse(true, "ERR_FAILURES_DEL004: Ocurrió un error al modificar el formulario en la base de datos.", $th->getMessage(), 500);
  498. }
  499. if (!$validateUpdate) {
  500. DB::rollBack();
  501. return $this->responseController->makeResponse(true, "ERR_FAILURES_DEL005: No se pudo modificar el formulario en la base de datos.", [], 500);
  502. }
  503. try {
  504. $validateDelete = DB::table('S002V01TLFEQ')
  505. ->where('LFEQ_IDFA', '=', $requestData['ID_FALLA'])
  506. ->where('LFEQ_NULI', '=', $requestData['NUMERO_LINEA'])
  507. ->update([
  508. 'LFEQ_ESTA' => 'Eliminado',
  509. 'LFEQ_USMO' => $user,
  510. 'LFEQ_FEMO' => $currentDate,
  511. 'LFEQ_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
  512. ]);
  513. } catch (\Throwable $th) {
  514. DB::rollBack();
  515. return $this->responseController->makeResponse(
  516. true,
  517. "ERR_FAILURES_DEL006: Ocurrió un error al eliminar la lista de equipamientos.",
  518. $th->getMessage(),
  519. 500
  520. );
  521. }
  522. if ( !$validateDelete ) {
  523. DB::rollBack();
  524. return $this->responseController->makeResponse(true, "ERR_FAILURES_DEL007: No se pudo eliminar la lista de equipamientos.", [], 500);
  525. }
  526. DB::commit();
  527. return $this->responseController->makeResponse(false, "ÉXITO: Eliminación Exitosa");
  528. }
  529. public function getFailureLog($user, $line) {
  530. try {
  531. $getFailureLog = DB::table('S002V01TBIFA')
  532. ->where('BIFA_NULI', '=', $line)
  533. ->where('LIFA_NULI', '=', $line)
  534. ->where('LISI_NULI', '=', $line)
  535. ->where('LIME_NULI', '=', $line)
  536. ->where('LIFA_ESTA', '=', 'Activo')
  537. ->where('LISI_ESTA', '=', 'Activo')
  538. ->where('LIME_ESTA', '=', 'Activo')
  539. ->join('S002V01TLIFA', 'LIFA_IDFA', '=', 'BIFA_IDFA')
  540. ->join('S002V01TLISI', 'LISI_IDSI', '=', 'BIFA_IDSI')
  541. ->join('S002V01TLIME', 'LIME_IDME', '=', 'BIFA_IDME')
  542. ->get([
  543. 'BIFA_NUFA AS NUMERO_FALLA',
  544. 'BIFA_COEQ AS CODIGO_EQUIPAMIENTO',
  545. 'BIFA_ESFA AS ESTADO_FALLA',
  546. 'LIFA_IDFA AS ID_FALLA',
  547. 'LIFA_NOFA AS NOMBRE_FALLA',
  548. 'LIFA_NIVE AS NIVEL_CRITICIDAD_FALLA',
  549. 'LIFA_CAUS AS CAUSA_FALLA',
  550. 'LISI_IDSI AS ID_SINTOMA',
  551. 'LISI_NOSI AS NOMBRE_SINTOMA',
  552. 'LISI_CLAS AS CLASIFICACION_SINTOMA',
  553. 'LISI_CAUS AS CAUSA_SINTOMA',
  554. 'BIFA_FEFA AS FECHA_FALLA',
  555. 'BIFA_REPA AS REPARABLE',
  556. 'BIFA_DESO AS SOLUCION',
  557. 'BIFA_COME AS COMENTARIOS',
  558. 'BIFA_VAOB AS VALOR_OBTENIDO',
  559. 'LIME_IDME AS ID_MEDIDA',
  560. 'LIME_NOME AS NOMBRE_MEDIDA',
  561. 'LIME_ACME AS ACRONIMO_MEDIDA',
  562. 'BIFA_ESTA AS ESTADO',
  563. 'BIFA_USRE AS USUARIO_REGISTRA',
  564. 'BIFA_FERE AS FECHA_REGISTRA',
  565. 'BIFA_USMO AS USUARIO_MODIFICA',
  566. 'BIFA_FEMO AS FECHA_MODIFICA',
  567. ]);
  568. } catch (\Throwable $th) {
  569. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_GET000: No se pudo realizar la consulta a la base.", $th->getMessage(), 500);
  570. }
  571. $arrFailureLog = json_decode( json_encode( $getFailureLog ), true );
  572. $arrEquipmentCode = array_column($arrFailureLog, 'CODIGO_EQUIPAMIENTO');
  573. $arrEquipmentCode = array_unique($arrEquipmentCode);
  574. $count = 0;
  575. $arrEquipmentFailureLog = array();
  576. foreach ($arrEquipmentCode as $keyEquipmentCode => $equipmentCode) {
  577. $lastUpdate = '';
  578. $lastUser = '';
  579. $lastState = '';
  580. $lastClassification = '';
  581. $amountFailures = 0;
  582. foreach ($arrFailureLog as $keyFailureLog => $failureLog) {
  583. if ( $equipmentCode === $failureLog['CODIGO_EQUIPAMIENTO'] ) {
  584. $tempLastUpdate = '';
  585. $tempLastUser = '';
  586. if ( is_null($failureLog['FECHA_MODIFICA']) ) {
  587. $tempLastUpdate = $failureLog['FECHA_REGISTRA'];
  588. $tempLastUser = $failureLog['USUARIO_REGISTRA'];
  589. } else {
  590. $tempLastUpdate = $failureLog['FECHA_MODIFICA'];
  591. $tempLastUser = $failureLog['USUARIO_MODIFICA'];
  592. }
  593. if ($lastUpdate === '') {
  594. $lastUpdate = $tempLastUpdate;
  595. $lastUser = $tempLastUser;
  596. $lastState = $failureLog['ESTADO_FALLA'];
  597. $lastClassification = $failureLog['NIVEL_CRITICIDAD_FALLA'];
  598. } else {
  599. $carTempLastUpdate = Carbon::create($tempLastUpdate);
  600. $carLastState = Carbon::create($lastUpdate);
  601. if ($carTempLastUpdate->greaterThan($carLastState)) {
  602. $lastUpdate = $tempLastUpdate;
  603. $lastUser = $tempLastUser;
  604. $lastState = $failureLog['ESTADO_FALLA'];
  605. $lastClassification = $failureLog['NIVEL_CRITICIDAD_FALLA'];
  606. }
  607. }
  608. $amountFailures ++;
  609. }
  610. }
  611. $arrEquipmentFailureLog[$count]['CODIGO_EQUIPAMIENTO'] = $equipmentCode;
  612. $arrEquipmentFailureLog[$count]['ULTIMA_MODIFICACION'] = $lastUpdate;
  613. $arrEquipmentFailureLog[$count]['ULTIMO_USUARIO'] = $lastUser;
  614. $arrEquipmentFailureLog[$count]['ESTADO_ACTUAL'] = $lastState;
  615. $arrEquipmentFailureLog[$count]['CLASIFICACION_ACTUAL'] = $lastClassification;
  616. $arrEquipmentFailureLog[$count]['CANTIDAD_FALLAS'] = $amountFailures;
  617. $count++;
  618. }
  619. return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrEquipmentFailureLog);
  620. }
  621. public function getHistoryFailureEquipment($equipment, $user, $line) {
  622. $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
  623. if ($arrResponseCheckUser['error']) {
  624. DB::rollBack();
  625. return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
  626. }
  627. try {
  628. $equipment = $this->encController->decrypt($equipment);
  629. } catch (\Throwable $th) {
  630. return $this->responseController->makeResponse(true, "ERR_GETHISTORY_GETEQUIPMENT000", $th->getMessage(), 500);
  631. }
  632. try {
  633. $getFailuresLog = DB::table('S002V01TBIFA')
  634. ->where('BIFA_COEQ', '=', $equipment)
  635. ->where('BIFA_NULI', '=', $line)
  636. ->where('BIFA_ESTA', '=', 'Activo')
  637. ->where('LIFA_ESTA', '=', 'Activo')
  638. ->where('LISI_ESTA', '=', 'Activo')
  639. ->where('LIME_ESTA', '=', 'Activo')
  640. ->join('S002V01TLIFA', 'LIFA_IDFA', '=', 'BIFA_IDFA')
  641. ->join('S002V01TLISI', 'LISI_IDSI', '=', 'BIFA_IDSI')
  642. ->join('S002V01TLIME', 'LIME_IDME', '=', 'BIFA_IDME')
  643. ->get([
  644. 'BIFA_NUFA AS NUMERO_FALLA',
  645. 'BIFA_COEQ AS CODIGO_EQUIPAMIENTO',
  646. 'BIFA_ESFA AS ESTADO_FALLA',
  647. 'LIFA_IDFA AS ID_FALLA',
  648. 'LIFA_NOFA AS NOMBRE_FALLA',
  649. 'LIFA_NIVE AS NIVEL_CRITICIDAD_FALLA',
  650. 'LIFA_CAUS AS CAUSA_FALLA',
  651. 'LISI_IDSI AS ID_SINTOMA',
  652. 'LISI_NOSI AS NOMBRE_SINTOMA',
  653. 'LISI_CLAS AS CLASIFICACION_SINTOMA',
  654. 'LISI_CAUS AS CAUSA_SINTOMA',
  655. 'BIFA_FEFA AS FECHA_FALLA',
  656. 'BIFA_REPA AS REPARABLE',
  657. 'BIFA_DESO AS SOLUCION',
  658. 'BIFA_COME AS COMENTARIOS',
  659. 'BIFA_VAOB AS VALOR_OBTENIDO',
  660. 'LIME_IDME AS ID_MEDIDA',
  661. 'LIME_NOME AS NOMBRE_MEDIDA',
  662. 'LIME_ACME AS ACRONIMO_MEDIDA',
  663. 'BIFA_USRE AS USUARIO_REGISTRA',
  664. 'BIFA_FERE AS FECHA_REGISTRA',
  665. 'BIFA_USMO AS USUARIO_MODIFICA',
  666. 'BIFA_FEMO AS FECHA_MODIFICA',
  667. ]);
  668. } catch (\Throwable $th) {
  669. return $this->responseController->makeResponse(true, "ERR_GETHISTORY_GETEQUIPMENT001: No se pudo realizar la consulta a la base.", $th->getMessage(), 500);
  670. }
  671. $arrFailureLogTemp = json_decode( json_encode( $getFailuresLog ), true );
  672. $arrFailureLog = array();
  673. foreach ($arrFailureLogTemp as $keyFailureLogTemp => $failureLogTemp) {
  674. $numero_falla = $failureLogTemp['NUMERO_FALLA'];
  675. $nombre_falla = $failureLogTemp['NOMBRE_FALLA'].' ('.$failureLogTemp['ID_FALLA'].')';
  676. $nivel_criticidad_falla = $failureLogTemp['NIVEL_CRITICIDAD_FALLA'];
  677. $nombre_sintoma = $failureLogTemp['NOMBRE_SINTOMA'].' ('.$failureLogTemp['ID_SINTOMA'].')';
  678. $estado_falla = $failureLogTemp['ESTADO_FALLA'];
  679. $causa = $failureLogTemp['CAUSA_FALLA'];
  680. $fecha_fala = $failureLogTemp['FECHA_FALLA'];
  681. $reparable = $failureLogTemp['REPARABLE'] === 1 ? 'Si' : 'No';
  682. $arrFailureLog[] = [
  683. 'NUMERO_FALLA' => $numero_falla,
  684. 'NOMBRE_FALLA' => $nombre_falla,
  685. 'NIVEL_CRITICIDAD_FALLA' => $nivel_criticidad_falla,
  686. 'ESTADO_FALLA' => $estado_falla,
  687. 'CAUSA' => $causa,
  688. 'FECHA_FALLA' => $fecha_fala,
  689. 'REPARABLE' => $reparable,
  690. 'USUARIO_REGISTRA' => $failureLogTemp['USUARIO_REGISTRA'],
  691. 'FECHA_REGISTRA' => $failureLogTemp['FECHA_REGISTRA'],
  692. 'USUARIO_MODIFICA' =>$failureLogTemp['USUARIO_MODIFICA'],
  693. 'FECHA_MODIFICA' => $failureLogTemp['FECHA_MODIFICA'],
  694. ];
  695. }
  696. $responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate($arrFailureLog, $line);
  697. if ($responseCheckLatestUpdate['error']) {
  698. return $this->responseController->makeResponse(true, $responseCheckLatestUpdate['msg'], [], 500);
  699. }
  700. $arrFailureLog = $responseCheckLatestUpdate['response'];
  701. return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrFailureLog);
  702. }
  703. public function getDetailsHistoryFailureEquipment($failure, $user, $line) {
  704. try {
  705. $failure = $this->encController->decrypt($failure);
  706. } catch (\Throwable $th) {
  707. return $this->responseController->makeResponse(true, "ERR_GETHISTORY_GETEQUIPMENT000", $th->getMessage(), 500);
  708. }
  709. try {
  710. $getFailureLog = DB::table('S002V01TBIFA')
  711. ->where('BIFA_NUFA', '=', $failure)
  712. ->where('BIFA_NULI', '=', $line)
  713. ->where('LIFA_NULI', '=', $line)
  714. ->where('LISI_NULI', '=', $line)
  715. ->where('LIME_NULI', '=', $line)
  716. ->where('BIFA_ESTA', '=', 'Activo')
  717. ->where('LIFA_ESTA', '=', 'Activo')
  718. ->where('LISI_ESTA', '=', 'Activo')
  719. ->where('LIME_ESTA', '=', 'Activo')
  720. ->join('S002V01TLIFA', 'LIFA_IDFA', '=', 'BIFA_IDFA')
  721. ->join('S002V01TLISI', 'LISI_IDSI', '=', 'BIFA_IDSI')
  722. ->join('S002V01TLIME', 'LIME_IDME', '=', 'BIFA_IDME')
  723. ->first([
  724. 'BIFA_NUFA AS NUMERO_FALLA',
  725. 'BIFA_COEQ AS CODIGO_EQUIPAMIENTO',
  726. 'BIFA_ESFA AS ESTADO_FALLA',
  727. 'LIFA_IDFA AS ID_FALLA',
  728. 'LIFA_NOFA AS NOMBRE_FALLA',
  729. 'LIFA_NIVE AS NIVEL_CRITICIDAD_FALLA',
  730. 'LIFA_CAUS AS CAUSA_FALLA',
  731. 'LISI_IDSI AS ID_SINTOMA',
  732. 'LISI_NOSI AS NOMBRE_SINTOMA',
  733. 'LISI_CLAS AS CLASIFICACION_SINTOMA',
  734. 'LISI_CAUS AS CAUSA_SINTOMA',
  735. 'BIFA_FEFA AS FECHA_FALLA',
  736. 'BIFA_FERF AS FECHA_RESOLUCION',
  737. 'BIFA_REPA AS REPARABLE',
  738. 'BIFA_DESO AS SOLUCION',
  739. 'BIFA_COME AS COMENTARIOS',
  740. 'BIFA_VAOB AS VALOR_OBTENIDO',
  741. 'LIME_IDME AS ID_MEDIDA',
  742. 'LIME_NOME AS NOMBRE_MEDIDA',
  743. 'LIME_ACME AS ACRONIMO_MEDIDA',
  744. ]);
  745. } catch (\Throwable $th) {
  746. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_GETACTIVE000: No se pudo realizar la consulta a la base.", $th->getMessage(), 500);
  747. }
  748. $arrFailureLog = json_decode( json_encode( $getFailureLog ), true );
  749. return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrFailureLog);
  750. }
  751. public function getFailureLogActives($user, $line) {
  752. try {
  753. $getFailureLog = DB::table('S002V01TBIFA')
  754. ->where('BIFA_NULI', '=', $line)
  755. ->where('LIFA_NULI', '=', $line)
  756. ->where('LISI_NULI', '=', $line)
  757. ->where('LIME_NULI', '=', $line)
  758. ->where('BIFA_ESTA', '=', 'Activo')
  759. ->where('LIFA_ESTA', '=', 'Activo')
  760. ->where('LISI_ESTA', '=', 'Activo')
  761. ->where('LIME_ESTA', '=', 'Activo')
  762. ->join('S002V01TLIFA', 'LIFA_IDFA', '=', 'BIFA_IDFA')
  763. ->join('S002V01TLISI', 'LISI_IDSI', '=', 'BIFA_IDSI')
  764. ->join('S002V01TLIME', 'LIME_IDME', '=', 'BIFA_IDME')
  765. ->get([
  766. 'BIFA_NUFA AS NUMERO_FALLA',
  767. 'BIFA_COEQ AS CODIGO_EQUIPAMIENTO',
  768. 'LIFA_IDFA AS ID_FALLA',
  769. 'LIFA_NOFA AS NOMBRE_FALLA',
  770. 'LIFA_NIVE AS NIVEL_CRITICIDAD_FALLA',
  771. 'LIFA_CAUS AS CAUSA_FALLA',
  772. 'LISI_IDSI AS ID_SINTOMA',
  773. 'LISI_NOSI AS NOMBRE_SINTOMA',
  774. 'LISI_CLAS AS CLASIFICACION_SINTOMA',
  775. 'LISI_CAUS AS CAUSA_SINTOMA',
  776. 'BIFA_FEFA AS FECHA_FALLA',
  777. 'BIFA_REPA AS REPARABLE',
  778. 'BIFA_DESO AS SOLUCION',
  779. 'BIFA_COME AS COMENTARIOS',
  780. 'BIFA_VAOB AS VALOR_OBTENIDO',
  781. 'LIME_IDME AS ID_MEDIDA',
  782. 'LIME_NOME AS NOMBRE_MEDIDA',
  783. 'LIME_ACME AS ACRONIMO_MEDIDA',
  784. 'BIFA_USRE AS USUARIO_REGISTRA',
  785. 'BIFA_FERE AS FECHA_REGISTRA',
  786. 'BIFA_USMO AS USUARIO_MODIFICA',
  787. 'BIFA_FEMO AS FECHA_MODIFICA',
  788. ]);
  789. } catch (\Throwable $th) {
  790. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_GETACTIVE000: No se pudo realizar la consulta a la base.", $th->getMessage(), 500);
  791. }
  792. $arrFailureLog = json_decode( json_encode( $getFailureLog ), true );
  793. return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrFailureLog);
  794. }
  795. public function getEquipmentByFailure($failure, $user, $line) {
  796. try {
  797. $failure = $this->encController->decrypt($failure);
  798. } catch (\Throwable $th) {
  799. DB::rollBack();
  800. return $this->responseController->makeResponse(true, "ERR_FAILURES_EQUIPMENT000: No se pudo obtener el usuario.", $th->getMessage(), 500);
  801. }
  802. try {
  803. $getEquipmentByFailure = DB::table('S002V01TBIFA')
  804. ->where('BIFA_IDFA', '=', $failure)
  805. ->where('BIFA_NULI', '=', $line)
  806. ->where('BIFA_ESTA', '=', 'Activo')
  807. ->join('S002V01TLIME', 'LIME_IDME', '=', 'BIFA_IDME')
  808. ->get([
  809. 'BIFA_COEQ AS CODIGO_EQUIPAMIENTO',
  810. 'BIFA_ESFA AS ESTADO_FALLA',
  811. 'BIFA_FEFA AS FECHA_FALLA',
  812. 'BIFA_FERF AS FECHA_REPARACION',
  813. 'BIFA_VAOB AS VALOR_OBTENIDO',
  814. 'LIME_IDME AS ID_MEDIDA',
  815. 'LIME_NOME AS NOMBRE_MEDIDA',
  816. 'LIME_ACME AS ACRONIMO_MEDIDA',
  817. ]);
  818. } catch (\Throwable $th) {
  819. return $this->responseController->makeResponse(
  820. true,
  821. "ERR_FAILURES_EQUIPMENT001: No se pudo realizar la consulta a la base.",
  822. $th->getMessage(),
  823. 500
  824. );
  825. }
  826. $arrFaultyEquipment = json_decode(json_encode($getEquipmentByFailure), true);
  827. $arrEquipmentCode = array_column($arrFaultyEquipment, 'CODIGO_EQUIPAMIENTO');
  828. $arrEquipmentCode = array_unique($arrEquipmentCode);
  829. $count = 0;
  830. $arrEquipmentFailureLog = array();
  831. foreach ($arrEquipmentCode as $keyEquipmentCode => $equipmentCode) {
  832. foreach ($arrFaultyEquipment as $keyFaultyEquipment => $faultyEquipment) {
  833. if ( $equipmentCode === $faultyEquipment['CODIGO_EQUIPAMIENTO'] ) {
  834. $arrEquipmentFailureLog[$count]['CODIGO_EQUIPAMIENTO'] = $faultyEquipment['CODIGO_EQUIPAMIENTO'];
  835. $arrEquipmentFailureLog[$count]['DETALLES'][] = [
  836. 'ESTADO_FALLA' => $faultyEquipment['ESTADO_FALLA'],
  837. 'FECHA_FALLA' => $faultyEquipment['FECHA_FALLA'],
  838. 'FECHA_REPARACION' => $faultyEquipment['FECHA_REPARACION'],
  839. 'VALOR_OBTENIDO' => $faultyEquipment['VALOR_OBTENIDO'],
  840. 'ID_MEDIDA' => $faultyEquipment['ID_MEDIDA'],
  841. 'NOMBRE_MEDIDA' => $faultyEquipment['NOMBRE_MEDIDA'],
  842. 'ACRONIMO_MEDIDA' => $faultyEquipment['ACRONIMO_MEDIDA'],
  843. ];
  844. }
  845. }
  846. $count++;
  847. }
  848. return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrEquipmentFailureLog);
  849. }
  850. public function getAlarmEmissionFromFailures($user, $line) {
  851. try {
  852. $getAlarmEmission = DB::table('S002V01TBIFA')
  853. ->where('BIFA_NULI', '=', $line)
  854. ->where('BIFA_ESTA', '=', 'Activo')
  855. ->where('ACTI_NULI', '=', $line)
  856. ->join('S002V01TACTI', 'ACTI_IDAC', '=', 'BIFA_IDAC')
  857. ->get([
  858. 'BIFA_NUFA AS NUMERO_FALLA',
  859. 'BIFA_COEQ AS CODIGO_EQUIPAMIENTO',
  860. 'ACTI_IDAC AS ID_ACTIVADOR',
  861. 'BIFA_FEFA AS FECHA_FALLA',
  862. 'ACTI_PRIO AS PRIORIDAD',
  863. 'ACTI_TIAC AS TIPO_ACTIVADOR',
  864. 'ACTI_COAC AS CONDICION_ACTIVADOR',
  865. ]);
  866. } catch (\Throwable $th) {
  867. DB::rollBack();
  868. return $this->responseController->makeResponse(true, "ERR_FAILURES_ALARM000: No se pudo obtener la información de la base de datos.", $th->getMessage(), 500);
  869. }
  870. $arrAlarmEmission = json_decode(json_encode($getAlarmEmission), true);
  871. foreach ($arrAlarmEmission as $key => $alarmEmission) {
  872. switch ($alarmEmission['PRIORIDAD']) {
  873. case 1:
  874. $alarmEmission['PRIORIDAD'] = 'Muy alta';
  875. break;
  876. case 2:
  877. $alarmEmission['PRIORIDAD'] = 'Alta';
  878. break;
  879. case 3:
  880. $alarmEmission['PRIORIDAD'] = 'Media';
  881. break;
  882. case 4:
  883. $alarmEmission['PRIORIDAD'] = 'Baja';
  884. break;
  885. }
  886. $arrAlarmEmission[$key] = $alarmEmission;
  887. }
  888. return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrAlarmEmission);
  889. }
  890. public function generateSheetFailureXLS($failure, $user, $line) {
  891. try {
  892. $failure = $this->encController->decrypt($failure);
  893. } catch (\Throwable $th) {
  894. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_GENERATEXLS000", $th->getMessage(), 500);
  895. }
  896. try {
  897. $user = $this->encController->decrypt($user);
  898. } catch (\Throwable $th) {
  899. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_GENERATEXLS001", $th->getMessage(), 500);
  900. }
  901. try {
  902. $getFailureLog = DB::table('S002V01TBIFA')
  903. ->where('BIFA_NUFA', '=', $failure)
  904. ->where('BIFA_NULI', '=', $line)
  905. ->where('LIFA_NULI', '=', $line)
  906. ->where('LISI_NULI', '=', $line)
  907. ->where('LIME_NULI', '=', $line)
  908. ->where('BIFA_ESTA', '=', 'Activo')
  909. ->where('LIFA_ESTA', '=', 'Activo')
  910. ->where('LISI_ESTA', '=', 'Activo')
  911. ->where('LIME_ESTA', '=', 'Activo')
  912. ->join('S002V01TLIFA', 'LIFA_IDFA', '=', 'BIFA_IDFA')
  913. ->join('S002V01TLISI', 'LISI_IDSI', '=', 'BIFA_IDSI')
  914. ->join('S002V01TLIME', 'LIME_IDME', '=', 'BIFA_IDME')
  915. ->first([
  916. 'BIFA_NUFA AS NUMERO_FALLA',
  917. 'BIFA_COEQ AS CODIGO_EQUIPAMIENTO',
  918. 'BIFA_ESFA AS ESTADO_FALLA',
  919. 'LIFA_IDFA AS ID_FALLA',
  920. 'LIFA_NOFA AS NOMBRE_FALLA',
  921. 'LIFA_NIVE AS NIVEL_CRITICIDAD_FALLA',
  922. 'LIFA_CAUS AS CAUSA_FALLA',
  923. 'LISI_IDSI AS ID_SINTOMA',
  924. 'LISI_NOSI AS NOMBRE_SINTOMA',
  925. 'LISI_CLAS AS CLASIFICACION_SINTOMA',
  926. 'LISI_CAUS AS CAUSA_SINTOMA',
  927. 'BIFA_FEFA AS FECHA_FALLA',
  928. 'BIFA_FERF AS FECHA_RESOLUCION',
  929. 'BIFA_REPA AS REPARABLE',
  930. 'BIFA_DESO AS SOLUCION',
  931. 'BIFA_COME AS COMENTARIOS',
  932. 'BIFA_VAOB AS VALOR_OBTENIDO',
  933. 'LIME_IDME AS ID_MEDIDA',
  934. 'LIME_NOME AS NOMBRE_MEDIDA',
  935. 'LIME_ACME AS ACRONIMO_MEDIDA',
  936. ]);
  937. } catch (\Throwable $th) {
  938. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_GENERATEXLS002: No se pudo realizar la consulta a la base.", $th->getMessage(), 500);
  939. }
  940. $arrFailureLog = json_decode( json_encode( $getFailureLog ), true );
  941. $spreadsheet = new Spreadsheet();
  942. $activeWorksheet = $spreadsheet->getActiveSheet()->setTitle($arrFailureLog['NUMERO_FALLA']);
  943. $activeWorksheet->setCellValue("A1", 'Número de Falla');
  944. $activeWorksheet->setCellValue("B1", $arrFailureLog['NUMERO_FALLA']);
  945. $activeWorksheet->getStyle( "A1" )->getFont()->setBold(true);
  946. $activeWorksheet->setCellValue("A2", 'Número de Equipamiento');
  947. $activeWorksheet->setCellValue("B2", $arrFailureLog['CODIGO_EQUIPAMIENTO']);
  948. $activeWorksheet->getStyle( "A2" )->getFont()->setBold(true);
  949. $activeWorksheet->setCellValue("A3", 'Estado de la Falla');
  950. $activeWorksheet->setCellValue("B3", $arrFailureLog['ESTADO_FALLA']);
  951. $activeWorksheet->getStyle( "A3" )->getFont()->setBold(true);
  952. $activeWorksheet->setCellValue("A4", 'Nombre de la Falla');
  953. $activeWorksheet->setCellValue("B4", $arrFailureLog['NOMBRE_FALLA'].' ('.$arrFailureLog['ID_FALLA'].')');
  954. $activeWorksheet->getStyle( "A4" )->getFont()->setBold(true);
  955. $activeWorksheet->setCellValue("A5", 'Nivel de Criticidad de la Falla');
  956. $activeWorksheet->setCellValue("B5", $arrFailureLog['NIVEL_CRITICIDAD_FALLA']);
  957. $activeWorksheet->getStyle( "A5" )->getFont()->setBold(true);
  958. $activeWorksheet->setCellValue("A6", 'Causa de la Falla');
  959. $activeWorksheet->setCellValue("B6", $arrFailureLog['CAUSA_FALLA']);
  960. $activeWorksheet->getStyle( "A6" )->getFont()->setBold(true);
  961. $activeWorksheet->setCellValue("A7", 'Nombre del Síntoma');
  962. $activeWorksheet->setCellValue("B7", $arrFailureLog['NOMBRE_SINTOMA'].' ('.$arrFailureLog['ID_SINTOMA'].')');
  963. $activeWorksheet->getStyle( "A7" )->getFont()->setBold(true);
  964. $activeWorksheet->setCellValue("A8", 'Clasificación del Síntoma');
  965. $activeWorksheet->setCellValue("B8", $arrFailureLog['CLASIFICACION_SINTOMA']);
  966. $activeWorksheet->getStyle( "A8" )->getFont()->setBold(true);
  967. $activeWorksheet->setCellValue("A9", 'Causa del Síntoma');
  968. $activeWorksheet->setCellValue("B9", $arrFailureLog['CAUSA_SINTOMA']);
  969. $activeWorksheet->getStyle( "A9" )->getFont()->setBold(true);
  970. $activeWorksheet->setCellValue("A10", 'Fecha de la Falla');
  971. $activeWorksheet->setCellValue("B10", $arrFailureLog['FECHA_FALLA']);
  972. $activeWorksheet->getStyle( "A10" )->getFont()->setBold(true);
  973. $activeWorksheet->setCellValue("A11", 'Fecha de la Resolución');
  974. $activeWorksheet->setCellValue("B11", $arrFailureLog['FECHA_RESOLUCION']);
  975. $activeWorksheet->getStyle( "A11" )->getFont()->setBold(true);
  976. $activeWorksheet->setCellValue("A12", 'Reparable');
  977. $activeWorksheet->setCellValue("B12", $arrFailureLog['REPARABLE'] === 1 ? 'Si' : 'No');
  978. $activeWorksheet->getStyle( "A12" )->getFont()->setBold(true);
  979. $activeWorksheet->setCellValue("A13", 'Valor Obtenido');
  980. $activeWorksheet->setCellValue("B13", $arrFailureLog['VALOR_OBTENIDO'].' '.$arrFailureLog['ACRONIMO_MEDIDA']);
  981. $activeWorksheet->getStyle( "A13" )->getFont()->setBold(true);
  982. $activeWorksheet->setCellValue("A14", 'Tipo de Medido');
  983. $activeWorksheet->setCellValue("B14", $arrFailureLog['NOMBRE_MEDIDA']);
  984. $activeWorksheet->getStyle( "A14" )->getFont()->setBold(true);
  985. $activeWorksheet->setCellValue("A15", 'Solución de la Falla');
  986. $activeWorksheet->setCellValue("B15", $arrFailureLog['SOLUCION'] === null || $arrFailureLog['SOLUCION'] === '' ? '' : $arrFailureLog['SOLUCION']);
  987. $activeWorksheet->getStyle( "A15" )->getFont()->setBold(true);
  988. $activeWorksheet->setCellValue("A16", 'Comentarios');
  989. $activeWorksheet->setCellValue("B16", $arrFailureLog['COMENTARIOS']);
  990. $activeWorksheet->getStyle( "A16" )->getFont()->setBold(true);
  991. $activeWorksheet->getColumnDimension("A")->setAutoSize(true);
  992. $activeWorksheet->getColumnDimension("B")->setAutoSize(true);
  993. $nuli = $this->resourcesController->formatSecuence($line, 2);
  994. $como = 'ANFA'; // Código del módulo
  995. $cldo = 'IN'; // Código de la clasificación
  996. $fecr = date('ymd'); // Fecha en la se carga el archivo
  997. try {
  998. $arrSecuence = (array) DB::table('S002V01TAFAL')
  999. ->where('AFAL_COMO', '=', $como)
  1000. ->where('AFAL_CLDO', '=', $cldo)
  1001. ->where('AFAL_NULI', '=', $line)
  1002. ->orderBy('AFAL_NUSE', 'desc')
  1003. ->first([ 'AFAL_NUSE' ]);
  1004. } catch (\Throwable $th) {
  1005. return $this->responseController->makeResponse(
  1006. true,
  1007. "ERR_FAILURELOG_GENERATEXLS003: Ocurrió un error al obtener la información de la secuencia.",
  1008. $th->getMessage(),
  1009. 500
  1010. );
  1011. }
  1012. $nuse = 1; // Secuencia del documento
  1013. if ( !empty( $arrSecuence ) && !is_null( $arrSecuence ) ) {
  1014. $nuse = intval( $arrSecuence['AFAL_NUSE'] ) + 1;
  1015. }
  1016. $nuse = $this->resourcesController->formatSecuence($nuse, 6);
  1017. $nuve = $this->resourcesController->formatSecuence('1', 2);
  1018. $noar = 'ficha_de_falla_'.$arrFailureLog['NUMERO_FALLA'];
  1019. $exte = 'xlsx';
  1020. if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
  1021. $filePath = 'C:/ITTEC/SAM/Dev/SistemaMantenimiento/sistema-mantenimiento-back/public/public_files/'; // API JEAN
  1022. } else {
  1023. $filePath = 'C:\ITTEC\SAM\Dev\SistemaMantenimiento\sistema-mantenimiento-back\public_files\\'; // API QA
  1024. }
  1025. $fileName = $nuli.'-'.$como.'-'.$cldo.'-'.$fecr.'-'.$nuse.'='.$nuve.'='.$noar.'.'.$exte;
  1026. $tempFile = $filePath.$fileName;
  1027. if ( file_exists( $tempFile ) ) {
  1028. if ( !unlink( $tempFile ) ) {
  1029. return $this->responseController->makeResponse(
  1030. true,
  1031. "ERR_FAILURELOG_GENERATEXLS004: Ocurrió un error al eliminar el siguiente archivo: " . $tempFile,
  1032. [],
  1033. 500
  1034. );
  1035. }
  1036. }
  1037. try {
  1038. $writer = new Xlsx($spreadsheet);
  1039. ob_start();
  1040. $writer->save('php://output');
  1041. $base64 = base64_encode(ob_get_clean());
  1042. $validate = \File::put( $tempFile, base64_decode($base64));
  1043. } catch (\Throwable $th) {
  1044. return $this->responseController->makeResponse(
  1045. true,
  1046. "ERR_FAILURELOG_GENERATEXLS005: Ocurrió un error al guardar el documento.",
  1047. $th->getMessage(),
  1048. 500
  1049. );
  1050. }
  1051. $ubic = Storage::putFile('files', new File($tempFile));
  1052. $ubic = str_replace("/", "\\", $ubic);
  1053. if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
  1054. $ubic = "C:\ITTEC\SAM\Dev\SistemaMantenimiento\sistema-mantenimiento-back\storage\app\\" . $ubic;
  1055. } else {
  1056. $ubic = "C:\ITTEC\SAM\Dev\SistemaMantenimiento\sistema-mantenimiento-back\storage\app\\" . $ubic;
  1057. }
  1058. $tama = filesize($ubic);
  1059. $usac = json_encode([$user]);
  1060. $now = $this->functionsController->now();
  1061. $currentDate = $now->toDateTimeString();
  1062. try {
  1063. $validateInsert = DB::table('S002V01TAFAL')->insert([
  1064. 'AFAL_NULI' => $line,
  1065. 'AFAL_COMO' => $como,
  1066. 'AFAL_CLDO' => $cldo,
  1067. 'AFAL_FECR' => $fecr,
  1068. 'AFAL_NUSE' => $nuse,
  1069. 'AFAL_NUVE' => $nuve,
  1070. 'AFAL_NOAR' => $noar,
  1071. 'AFAL_EXTE' => $exte,
  1072. 'AFAL_TAMA' => $tama,
  1073. 'AFAL_UBIC' => $ubic,
  1074. 'AFAL_USAC' => $usac,
  1075. 'AFAL_USRE' => $user,
  1076. 'AFAL_FERE' => $currentDate,
  1077. ]);
  1078. } catch (\Throwable $th) {
  1079. return $this->responseController->makeResponse(
  1080. true,
  1081. "ERR_FAILURELOG_GENERATEXLS006: Ocurrió un error guardar los datos a la tabla final de archivos.",
  1082. $th->getMessage(),
  1083. 500
  1084. );
  1085. }
  1086. if ( !$validateInsert ) {
  1087. return $this->responseController->makeResponse(
  1088. true,
  1089. "ERR_FAILURELOG_GENERATEXLS007: No se pudo guardar la ficha del proveedor en la base de datos.",
  1090. [],
  1091. 500
  1092. );
  1093. }
  1094. if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
  1095. $urlPublic = 'http://192.168.100.105:8000/public_files/' . $fileName;
  1096. } else {
  1097. $urlPublic = $this->functionsController->getApiURI().'sam/public_files/' . $fileName;
  1098. }
  1099. return $this->responseController->makeResponse(false, "EXITO: Modificación Exitosa", [ 'url' => $urlPublic ]);
  1100. return $arrFailureLog;
  1101. }
  1102. public function generateSheetFailurePDF($failure, $user, $line){
  1103. try {
  1104. $failure = $this->encController->decrypt($failure);
  1105. } catch (\Throwable $th) {
  1106. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_GENERATEPDF000: Ocurrió un error al obtener la falla.", $th->getMessage(), 500);
  1107. }
  1108. try {
  1109. $user = $this->encController->decrypt($user);
  1110. } catch (\Throwable $th) {
  1111. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_GENERATEPDF001: Ocurrió un error al obtener el usuario.", $th->getMessage(), 500);
  1112. }
  1113. try {
  1114. $getFailureLog = DB::table('S002V01TBIFA')
  1115. ->where('BIFA_NUFA', '=', $failure)
  1116. ->where('BIFA_NULI', '=', $line)
  1117. ->where('LIFA_NULI', '=', $line)
  1118. ->where('LISI_NULI', '=', $line)
  1119. ->where('LIME_NULI', '=', $line)
  1120. ->where('BIFA_ESTA', '=', 'Activo')
  1121. ->where('LIFA_ESTA', '=', 'Activo')
  1122. ->where('LISI_ESTA', '=', 'Activo')
  1123. ->where('LIME_ESTA', '=', 'Activo')
  1124. ->join('S002V01TLIFA', 'LIFA_IDFA', '=', 'BIFA_IDFA')
  1125. ->join('S002V01TLISI', 'LISI_IDSI', '=', 'BIFA_IDSI')
  1126. ->join('S002V01TLIME', 'LIME_IDME', '=', 'BIFA_IDME')
  1127. ->first([
  1128. 'BIFA_NUFA AS NUMERO_FALLA',
  1129. 'BIFA_COEQ AS CODIGO_EQUIPAMIENTO',
  1130. 'BIFA_ESFA AS ESTADO_FALLA',
  1131. 'LIFA_IDFA AS ID_FALLA',
  1132. 'LIFA_NOFA AS NOMBRE_FALLA',
  1133. 'LIFA_NIVE AS NIVEL_CRITICIDAD_FALLA',
  1134. 'LIFA_CAUS AS CAUSA_FALLA',
  1135. 'LISI_IDSI AS ID_SINTOMA',
  1136. 'LISI_NOSI AS NOMBRE_SINTOMA',
  1137. 'LISI_CLAS AS CLASIFICACION_SINTOMA',
  1138. 'LISI_CAUS AS CAUSA_SINTOMA',
  1139. 'BIFA_FEFA AS FECHA_FALLA',
  1140. 'BIFA_FERF AS FECHA_RESOLUCION',
  1141. 'BIFA_REPA AS REPARABLE',
  1142. 'BIFA_DESO AS SOLUCION',
  1143. 'BIFA_COME AS COMENTARIOS',
  1144. 'BIFA_VAOB AS VALOR_OBTENIDO',
  1145. 'LIME_IDME AS ID_MEDIDA',
  1146. 'LIME_NOME AS NOMBRE_MEDIDA',
  1147. 'LIME_ACME AS ACRONIMO_MEDIDA',
  1148. ]);
  1149. } catch (\Throwable $th) {
  1150. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_GENERATEPDF002: No se pudo realizar la consulta a la base.", $th->getMessage(), 500);
  1151. }
  1152. $arrFailureLog = json_decode( json_encode( $getFailureLog ), true );
  1153. // return $arrFailureLog;
  1154. $html = '<!DOCTYPE html>
  1155. <html lang="en">
  1156. <head>
  1157. <meta charset="UTF-8">
  1158. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  1159. <title>Document</title>
  1160. <style>
  1161. body {
  1162. font-family: Arial, Helvetica, sans-serif;
  1163. font-size: 8pt;
  1164. }
  1165. .section-title {
  1166. margin: 20px 0;
  1167. font-size: 12pt;
  1168. }
  1169. table {
  1170. width: 100%;
  1171. }
  1172. thead tr th {
  1173. text-align: start;
  1174. padding: 0 16px;
  1175. height: 52px;
  1176. border-bottom-width: 1px;
  1177. border-bottom-style: solid;
  1178. border-bottom-color: #CCC;
  1179. }
  1180. tbody tr td {
  1181. padding: 0 16px;
  1182. height: 52px;
  1183. border-bottom-width: 1px;
  1184. border-bottom-style: solid;
  1185. border-bottom-color: #CCC;
  1186. }
  1187. p {
  1188. text-align: justify;
  1189. }
  1190. </style>
  1191. </head>
  1192. <body>
  1193. <div class="item">
  1194. <b>Número de Falla: </b>
  1195. <span>'.$arrFailureLog['NUMERO_FALLA'].'</span>
  1196. </div>
  1197. <div class="item">
  1198. <b>Número de Equipamiento: </b>
  1199. <span>'.$arrFailureLog['CODIGO_EQUIPAMIENTO'].'</span>
  1200. </div>
  1201. <div class="item">
  1202. <b>Estado de la Falla: </b>
  1203. <span>'.$arrFailureLog['ESTADO_FALLA'].'</span>
  1204. </div>
  1205. <div class="item">
  1206. <b>Nombre de la Falla: </b>
  1207. <span>'.$arrFailureLog['NOMBRE_FALLA'].' ('.$arrFailureLog['ID_FALLA'].')'.'</span>
  1208. </div>
  1209. <div class="item">
  1210. <b>Nivel de Criticidad de la Falla: </b>
  1211. <span>'.$arrFailureLog['NIVEL_CRITICIDAD_FALLA'].'</span>
  1212. </div>
  1213. <div class="item">
  1214. <b>Causa de la Falla: </b>
  1215. <span>'.$arrFailureLog['CAUSA_FALLA'].'</span>
  1216. </div>
  1217. <div class="item">
  1218. <b>Nombre del Síntoma: </b>
  1219. <span>'.$arrFailureLog['NOMBRE_SINTOMA'].' ('.$arrFailureLog['ID_SINTOMA'].')'.'</span>
  1220. </div>
  1221. <div class="item">
  1222. <b>Clasificación del Síntoma: </b>
  1223. <span>'.$arrFailureLog['CLASIFICACION_SINTOMA'].'</span>
  1224. </div>
  1225. <div class="item">
  1226. <b>Causa del Síntoma: </b>
  1227. <span>'.$arrFailureLog['CAUSA_SINTOMA'].'</span>
  1228. </div>
  1229. <div class="item">
  1230. <b>Fecha de la Falla: </b>
  1231. <span>'.$arrFailureLog['FECHA_FALLA'].'</span>
  1232. </div>
  1233. <div class="item">
  1234. <b>Fecha de la Resolución: </b>
  1235. <span>'.$arrFailureLog['FECHA_RESOLUCION'].'</span>
  1236. </div>
  1237. <div class="item">
  1238. <b>Reparable: </b>
  1239. <span>'.(($arrFailureLog['REPARABLE'] === 1) ? ('Si') : ('No')).'</span>
  1240. </div>
  1241. <div class="item">
  1242. <b>Valor Obtenido: </b>
  1243. <span>'.$arrFailureLog['VALOR_OBTENIDO'].' '.$arrFailureLog['ACRONIMO_MEDIDA'].'</span>
  1244. </div>
  1245. <div class="item">
  1246. <b>Tipo de Medido: </b>
  1247. <span>'.$arrFailureLog['NOMBRE_MEDIDA'].'</span>
  1248. </div>
  1249. <div class="item">
  1250. <b>Solución de la Falla: </b>
  1251. <span>'.(($arrFailureLog['SOLUCION'] === null || $arrFailureLog['SOLUCION'] === '') ? ('') : ($arrFailureLog['SOLUCION'])).'</span>
  1252. </div>
  1253. <div class="item">
  1254. <b>Comentarios: </b>
  1255. <span>'.$arrFailureLog['COMENTARIOS'].'</span>
  1256. </div>';
  1257. $html .= '</body></html>';
  1258. $nuli = $this->resourcesController->formatSecuence($line, 2);
  1259. $como = 'ANFA'; // Código del módulo
  1260. $cldo = 'IN'; // Código de la clasificación
  1261. $fecr = date('ymd'); // Fecha en la se carga el archivo
  1262. try {
  1263. $arrSecuence = (array) DB::table('S002V01TAFAL')
  1264. ->where('AFAL_COMO', '=', $como)
  1265. ->where('AFAL_CLDO', '=', $cldo)
  1266. ->where('AFAL_NULI', '=', $line)
  1267. ->orderBy('AFAL_NUSE', 'desc')
  1268. ->first([ 'AFAL_NUSE' ]);
  1269. } catch (\Throwable $th) {
  1270. return $this->responseController->makeResponse(
  1271. true,
  1272. "ERR_FAILURELOG_GENERATEPDF003: Ocurrió un error al obtener la información de la secuencia.",
  1273. $th->getMessage(),
  1274. 500
  1275. );
  1276. }
  1277. $nuse = 1; // Secuencia del documento
  1278. if ( !empty( $arrSecuence ) && !is_null( $arrSecuence ) ) {
  1279. $nuse = intval( $arrSecuence['AFAL_NUSE'] ) + 1;
  1280. }
  1281. $nuse = $this->resourcesController->formatSecuence($nuse, 6);
  1282. $nuve = $this->resourcesController->formatSecuence('1', 2);
  1283. $noar = 'ficha_de_proveedor_' . $arrFailureLog['NUMERO_FALLA'];
  1284. $nuli = $this->resourcesController->formatSecuence($line, 2);
  1285. $como = 'GEAD'; // Código del módulo
  1286. $cldo = 'IN'; // Código de la clasificación
  1287. $fecr = date('ymd'); // Fecha en la se carga el archivo
  1288. try {
  1289. $arrSecuence = (array) DB::table('S002V01TAFAL')
  1290. ->where('AFAL_COMO', '=', $como)
  1291. ->where('AFAL_CLDO', '=', $cldo)
  1292. ->where('AFAL_NULI', '=', $line)
  1293. ->orderBy('AFAL_NUSE', 'desc')
  1294. ->first([ 'AFAL_NUSE' ]);
  1295. } catch (\Throwable $th) {
  1296. return $this->responseController->makeResponse(
  1297. true,
  1298. "ERR_FAILURELOG_GENERATEPDF004: Ocurrió un error al obtener la información de la secuencia.",
  1299. $th->getMessage(),
  1300. 500
  1301. );
  1302. }
  1303. $nuse = 1; // Secuencia del documento
  1304. if ( !empty( $arrSecuence ) && !is_null( $arrSecuence ) ) {
  1305. $nuse = intval( $arrSecuence['AFAL_NUSE'] ) + 1;
  1306. }
  1307. $nuse = $this->resourcesController->formatSecuence($nuse, 6);
  1308. $nuve = $this->resourcesController->formatSecuence('1', 2);
  1309. $noar = 'ficha_de_falla_' . $arrFailureLog['NUMERO_FALLA'];
  1310. $exte = 'pdf';
  1311. if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
  1312. $filePath = 'C:/ITTEC/SAM/Dev/SistemaMantenimiento/sistema-mantenimiento-back/public/public_files/'; // API JEAN
  1313. } else {
  1314. $filePath = 'C:\ITTEC\SAM\Dev\SistemaMantenimiento\sistema-mantenimiento-back\public_files\\'; // API QA
  1315. }
  1316. $fileName = $nuli.'-'.$como.'-'.$cldo.'-'.$fecr.'-'.$nuse.'='.$nuve.'='.$noar.'.'.$exte;
  1317. $tempFile = $filePath . $fileName;
  1318. $dompdf = new Dompdf();
  1319. $dompdf ->loadHtml($html);
  1320. $dompdf->setPaper('A4', 'portrait');
  1321. $dompdf->render();
  1322. $output = $dompdf->output();
  1323. file_put_contents($tempFile, $output);
  1324. $ubic = Storage::putFile('files', new File($tempFile));
  1325. $ubic = str_replace("/", "\\", $ubic);
  1326. if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
  1327. $ubic = "C:\ITTEC\SAM\Dev\SistemaMantenimiento\sistema-mantenimiento-back\storage\app\\" . $ubic;
  1328. } else {
  1329. $ubic = "C:\ITTEC\SAM\Dev\SistemaMantenimiento\sistema-mantenimiento-back\storage\app\\" . $ubic;
  1330. }
  1331. $tama = filesize($ubic);
  1332. $usac = json_encode([$user]);
  1333. $now = $this->functionsController->now();
  1334. $currentDate = $now->toDateTimeString();
  1335. try {
  1336. $validateInsert = DB::table('S002V01TAFAL')->insert([
  1337. 'AFAL_NULI' => $line,
  1338. 'AFAL_COMO' => $como,
  1339. 'AFAL_CLDO' => $cldo,
  1340. 'AFAL_FECR' => $fecr,
  1341. 'AFAL_NUSE' => $nuse,
  1342. 'AFAL_NUVE' => $nuve,
  1343. 'AFAL_NOAR' => $noar,
  1344. 'AFAL_EXTE' => $exte,
  1345. 'AFAL_TAMA' => $tama,
  1346. 'AFAL_UBIC' => $ubic,
  1347. 'AFAL_USAC' => $usac,
  1348. 'AFAL_USRE' => $user,
  1349. 'AFAL_FERE' => $currentDate,
  1350. ]);
  1351. } catch (\Throwable $th) {
  1352. return $this->responseController->makeResponse(
  1353. true,
  1354. "ERR_FAILURELOG_GENERATEPDF005: Ocurrió un error guardar los datos a la tabla final de archivos.",
  1355. $th->getMessage(),
  1356. 500
  1357. );
  1358. }
  1359. if ( !$validateInsert ) {
  1360. return $this->responseController->makeResponse(
  1361. true,
  1362. "ERR_FAILURELOG_GENERATEPDF006: No se pudo guardar la ficha del proveedor en la base de datos.",
  1363. [],
  1364. 500
  1365. );
  1366. }
  1367. if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
  1368. $urlPublic = 'http://192.168.100.105:8000/public_files/' . $fileName;
  1369. } else {
  1370. $urlPublic = $this->functionsController->getApiURI().'sam/public_files/' . $fileName;
  1371. }
  1372. return $this->responseController->makeResponse(false, "EXITO: Modificación Exitosa", [ 'url' => $urlPublic ]);
  1373. }
  1374. public function registerFailureLog(Request $request) {
  1375. $validator = Validator::make($request->all(), [
  1376. 'CODIGO_EQUIPAMIENTO' => 'required|string',
  1377. 'ID_FALLA' => 'required|integer',
  1378. // 'ID_SINTOMA' => 'required|integer',
  1379. 'FECHA_FALLA' => 'required|string',
  1380. 'REPARABLE' => 'required|string',
  1381. 'SOLUCION' => 'required|string',
  1382. 'COMENTARIOS' => 'required|string',
  1383. 'VALOR_OBTENIDO' => 'required|string',
  1384. 'ID_MEDIDA' => 'required|string',
  1385. 'USUARIO' => 'required|string',
  1386. 'NUMERO_LINEA' => 'required|integer',
  1387. ]);
  1388. if ($validator->fails()) {
  1389. return $this->responseController->makeResponse(
  1390. true,
  1391. "ERR_FAILURELOG_REG000: Se encontraron uno o más errores.",
  1392. $this->responseController->makeErrors($validator->errors()->messages()),
  1393. 401
  1394. );
  1395. }
  1396. DB::beginTransaction();
  1397. $requestData = $request->all();
  1398. try {
  1399. $user = $this->encController->decrypt($requestData['USUARIO']);
  1400. } catch (\Throwable $th) {
  1401. DB::rollBack();
  1402. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_REG001: No se pudo obtener el usuario.", $th->getMessage(), 500);
  1403. }
  1404. try {
  1405. $validateExistsFailureList = DB::table('S002V01TLIFA')
  1406. ->where('LIFA_NULI', '=', $requestData['NUMERO_LINEA'])
  1407. ->where('LIFA_IDFA', '=', $requestData['ID_FALLA'])
  1408. ->where('LIFA_ESTA', '=', 'Activo')
  1409. ->exists();
  1410. } catch (\Throwable $th) {
  1411. DB::rollBack();
  1412. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_REG002: Ocurrió un error al consultar la lista de fallas.", $th->getMessage(), 500);
  1413. }
  1414. if ( !$validateExistsFailureList ) {
  1415. DB::rollBack();
  1416. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_REG003: No existe la falla #".$requestData['ID_FALLA']." en la lista de fallas.", [], 500);
  1417. }
  1418. if ( !is_null($requestData['ID_SINTOMA']) && $requestData['ID_SINTOMA'] !== '' ) {
  1419. try {
  1420. $validateExistsSymptomList = DB::table('S002V01TLISI')
  1421. ->where('LISI_NULI', '=', $requestData['NUMERO_LINEA'])
  1422. ->where('LISI_IDSI', '=', $requestData['ID_SINTOMA'])
  1423. ->where('LISI_ESTA', '=', 'Activo')
  1424. ->exists();
  1425. } catch (\Throwable $th) {
  1426. DB::rollBack();
  1427. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_REG004: Ocurrió un error al consultar la lista de síntomas.", $th->getMessage(), 500);
  1428. }
  1429. if ( !$validateExistsSymptomList ) {
  1430. DB::rollBack();
  1431. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_REG005: No existe el síntoma #".$requestData['ID_SINTOMA']." en la lista de síntomas.", [], 500);
  1432. }
  1433. }
  1434. try {
  1435. $validateExistsMeasure = DB::table('S002V01TLIME')
  1436. ->where('LIME_NULI', '=', $requestData['NUMERO_LINEA'])
  1437. ->where('LIME_IDME', '=', $requestData['ID_MEDIDA'])
  1438. ->where('LIME_ESTA', '=', 'Activo')
  1439. ->exists();
  1440. } catch (\Throwable $th) {
  1441. DB::rollBack();
  1442. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_REG006: Ocurrió un error al consultar la lista de medidas.", $th->getMessage(), 500);
  1443. }
  1444. if ( !$validateExistsMeasure ) {
  1445. DB::rollBack();
  1446. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_REG007: No existe la medida #".$requestData['ID_MEDIDA']." en la lista de medidas.", [], 500);
  1447. }
  1448. try {
  1449. $validateExistsEquipment = DB::table('S002V01TEQUI')
  1450. ->where('EQUI_NULI', '=', $requestData['NUMERO_LINEA'])
  1451. ->where('EQUI_COEQ', '=', $requestData['CODIGO_EQUIPAMIENTO'])
  1452. ->exists();
  1453. } catch (\Throwable $th) {
  1454. DB::rollBack();
  1455. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_REG008: Ocurrió un error al consultar los equipamientos.", $th->getMessage(), 500);
  1456. }
  1457. if ( !$validateExistsEquipment ) {
  1458. DB::rollBack();
  1459. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_REG009: No existe el equipamiento ".$requestData['CODIGO_EQUIPAMIENTO']." en la lista de equipamientos.", [], 500);
  1460. }
  1461. $now = $this->functionsController->now();
  1462. $currentDate = $now->toDateTimeString();
  1463. try {
  1464. $validateInsert = DB::table('S002V01TBIFA')->insert([
  1465. 'BIFA_NULI' => $requestData['NUMERO_LINEA'],
  1466. 'BIFA_COEQ' => $requestData['CODIGO_EQUIPAMIENTO'],
  1467. 'BIFA_IDFA' => $requestData['ID_FALLA'],
  1468. 'BIFA_IDSI' => $requestData['ID_SINTOMA'],
  1469. 'BIFA_FEFA' => $requestData['FECHA_FALLA'],
  1470. 'BIFA_REPA' => $requestData['REPARABLE'],
  1471. 'BIFA_DESO' => $requestData['SOLUCION'],
  1472. 'BIFA_COME' => $requestData['COMENTARIOS'],
  1473. 'BIFA_VAOB' => $requestData['VALOR_OBTENIDO'],
  1474. 'BIFA_IDME' => $requestData['ID_MEDIDA'],
  1475. 'BIFA_USRE' => $user,
  1476. 'BIFA_FERE' => $currentDate,
  1477. 'BIFA_FEAR' => DB::raw('CURRENT_TIMESTAMP')
  1478. ]);
  1479. } catch (\Throwable $th) {
  1480. DB::rollBack();
  1481. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_REG010: Ocurrió un error al intentar registrar la falla en la base de datos.", $th->getMessage(), 500);
  1482. }
  1483. if ( !$validateInsert ) {
  1484. DB::rollBack();
  1485. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_REG011: No se pudo registrar la falla.", [], 500);
  1486. }
  1487. DB::commit();
  1488. return $this->responseController->makeResponse(false, "ÉXITO: Registro Exitoso");
  1489. }
  1490. public function updateFailureLog(Request $request) {
  1491. $validator = Validator::make($request->all(), [
  1492. 'NUMERO_FALLA' => 'required|integer',
  1493. 'CODIGO_EQUIPAMIENTO' => 'required|string',
  1494. 'ID_FALLA' => 'required|integer',
  1495. // 'ID_SINTOMA' => 'required|integer',
  1496. 'FECHA_FALLA' => 'required|string',
  1497. 'REPARABLE' => 'required|string',
  1498. 'SOLUCION' => 'required|string',
  1499. 'COMENTARIOS' => 'required|string',
  1500. 'VALOR_OBTENIDO' => 'required|string',
  1501. 'ID_MEDIDA' => 'required|string',
  1502. 'USUARIO' => 'required|string',
  1503. 'NUMERO_LINEA' => 'required|integer',
  1504. ]);
  1505. if ($validator->fails()) {
  1506. return $this->responseController->makeResponse(
  1507. true,
  1508. "ERR_FAILURELOG_UPD000: Se encontraron uno o más errores.",
  1509. $this->responseController->makeErrors($validator->errors()->messages()),
  1510. 401
  1511. );
  1512. }
  1513. DB::beginTransaction();
  1514. $requestData = $request->all();
  1515. try {
  1516. $user = $this->encController->decrypt($requestData['USUARIO']);
  1517. } catch (\Throwable $th) {
  1518. DB::rollBack();
  1519. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD001: No se pudo obtener el usuario.", $th->getMessage(), 500);
  1520. }
  1521. try {
  1522. $validateExistsFailureLog = DB::table('S002V01TBIFA')
  1523. ->where('BIFA_NULI', '=', $requestData['NUMERO_LINEA'])
  1524. ->where('BIFA_NUFA', '=', $requestData['NUMERO_FALLA'])
  1525. ->where('BIFA_ESTA', '=', 'Activo')
  1526. ->exists();
  1527. } catch (\Throwable $th) {
  1528. DB::rollBack();
  1529. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD002: Ocurrió un error al consultar la bitácora de fallas.", $th->getMessage(), 500);
  1530. }
  1531. if ( !$validateExistsFailureLog ) {
  1532. DB::rollBack();
  1533. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD003: No existe la falla #".$requestData['NUMERO_FALLA']." en la bitácora de fallas.", [], 500);
  1534. }
  1535. try {
  1536. $validateExistsFailureList = DB::table('S002V01TLIFA')
  1537. ->where('LIFA_NULI', '=', $requestData['NUMERO_LINEA'])
  1538. ->where('LIFA_IDFA', '=', $requestData['ID_FALLA'])
  1539. ->where('LIFA_ESTA', '=', 'Activo')
  1540. ->exists();
  1541. } catch (\Throwable $th) {
  1542. DB::rollBack();
  1543. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD004: Ocurrió un error al consultar la lista de fallas.", $th->getMessage(), 500);
  1544. }
  1545. if ( !$validateExistsFailureList ) {
  1546. DB::rollBack();
  1547. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD005: No existe la falla #".$requestData['ID_FALLA']." en la lista de fallas.", [], 500);
  1548. }
  1549. if ( !is_null($requestData['ID_SINTOMA']) && $requestData['ID_SINTOMA'] !== '' ) {
  1550. try {
  1551. $validateExistsSymptomList = DB::table('S002V01TLISI')
  1552. ->where('LISI_NULI', '=', $requestData['NUMERO_LINEA'])
  1553. ->where('LISI_IDSI', '=', $requestData['ID_SINTOMA'])
  1554. ->where('LISI_ESTA', '=', 'Activo')
  1555. ->exists();
  1556. } catch (\Throwable $th) {
  1557. DB::rollBack();
  1558. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD006: Ocurrió un error al consultar la lista de síntomas.", $th->getMessage(), 500);
  1559. }
  1560. if ( !$validateExistsSymptomList ) {
  1561. DB::rollBack();
  1562. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD007: No existe el síntoma #".$requestData['ID_SINTOMA']." en la lista de síntomas.", [], 500);
  1563. }
  1564. }
  1565. try {
  1566. $validateExistsMeasure = DB::table('S002V01TLIME')
  1567. ->where('LIME_NULI', '=', $requestData['NUMERO_LINEA'])
  1568. ->where('LIME_IDME', '=', $requestData['ID_MEDIDA'])
  1569. ->where('LIME_ESTA', '=', 'Activo')
  1570. ->exists();
  1571. } catch (\Throwable $th) {
  1572. DB::rollBack();
  1573. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD008: Ocurrió un error al consultar la lista de medidas.", $th->getMessage(), 500);
  1574. }
  1575. if ( !$validateExistsMeasure ) {
  1576. DB::rollBack();
  1577. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD009: No existe la medida #".$requestData['ID_MEDIDA']." en la lista de medidas.", [], 500);
  1578. }
  1579. try {
  1580. $validateExistsEquipment = DB::table('S002V01TEQUI')
  1581. ->where('EQUI_NULI', '=', $requestData['NUMERO_LINEA'])
  1582. ->where('EQUI_COEQ', '=', $requestData['CODIGO_EQUIPAMIENTO'])
  1583. ->exists();
  1584. } catch (\Throwable $th) {
  1585. DB::rollBack();
  1586. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD010: Ocurrió un error al consultar los equipamientos.", $th->getMessage(), 500);
  1587. }
  1588. if ( !$validateExistsEquipment ) {
  1589. DB::rollBack();
  1590. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD011: No existe el equipamiento ".$requestData['CODIGO_EQUIPAMIENTO']." en la lista de equipamientos.", [], 500);
  1591. }
  1592. $now = $this->functionsController->now();
  1593. $currentDate = $now->toDateTimeString();
  1594. try {
  1595. $validateUpdate = DB::table('S002V01TBIFA')
  1596. ->where('BIFA_NUFA', '=', $requestData['NUMERO_FALLA'])
  1597. ->where('BIFA_NULI', '=', $requestData['NUMERO_LINEA'])
  1598. ->update([
  1599. 'BIFA_COEQ' => $requestData['CODIGO_EQUIPAMIENTO'],
  1600. 'BIFA_IDFA' => $requestData['ID_FALLA'],
  1601. 'BIFA_IDSI' => $requestData['ID_SINTOMA'],
  1602. 'BIFA_FEFA' => $requestData['FECHA_FALLA'],
  1603. 'BIFA_REPA' => $requestData['REPARABLE'],
  1604. 'BIFA_DESO' => $requestData['SOLUCION'],
  1605. 'BIFA_COME' => $requestData['COMENTARIOS'],
  1606. 'BIFA_VAOB' => $requestData['VALOR_OBTENIDO'],
  1607. 'BIFA_IDME' => $requestData['ID_MEDIDA'],
  1608. 'BIFA_USMO' => $user,
  1609. 'BIFA_FEMO' => $currentDate,
  1610. 'BIFA_FEAR' => DB::raw('CURRENT_TIMESTAMP')
  1611. ]);
  1612. } catch (\Throwable $th) {
  1613. DB::rollBack();
  1614. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD012: Ocurrió un error al intentar modificar la falla en la base de datos.", $th->getMessage(), 500);
  1615. }
  1616. if ( !$validateUpdate ) {
  1617. DB::rollBack();
  1618. return $this->responseController->makeResponse(true, "ERR_FAILURELOG_UPD013: No se pudo modificar la bitácora de falla.", [], 500);
  1619. }
  1620. DB::commit();
  1621. return $this->responseController->makeResponse(false, "ÉXITO: Modificación Exitosa");
  1622. }
  1623. public function getSymptoms($user, $line) {
  1624. $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
  1625. if ($arrResponseCheckUser['error']) {
  1626. DB::rollBack();
  1627. return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
  1628. }
  1629. try {
  1630. $getSymptom = DB::table('S002V01TLISI')
  1631. ->where('LISI_NULI', '=', $line)
  1632. ->where('LIME_NULI', '=', $line)
  1633. ->where('LIME_ESTA', '=', 'Activo')
  1634. ->join('S002V01TLIME', 'LIME_IDME', '=', 'LISI_IDME')
  1635. ->get([
  1636. 'LISI_IDSI AS ID_SINTOMA',
  1637. 'LISI_NOSI AS NOMBRE_SINTOMA',
  1638. 'LISI_CLAS AS CLASIFICACION',
  1639. 'LISI_CAUS AS CAUSA',
  1640. 'LISI_DESC AS DESCRIPCION',
  1641. 'LISI_SOLU AS SOLUCION',
  1642. 'LISI_LIVA AS LIMITE_VALOR',
  1643. 'LIME_IDME AS ID_MEDIDA',
  1644. 'LIME_NOME AS NOMBRE_MEDIDA',
  1645. 'LIME_ACME AS ACRONIMO_MEDIDA',
  1646. 'LISI_ESTA AS ESTADO',
  1647. 'LISI_USRE AS USUARIO_REGISTRA',
  1648. 'LISI_FERE AS FECHA_REGISTRA',
  1649. 'LISI_USMO AS USUARIO_MODIFICA',
  1650. 'LISI_FEMO AS FECHA_MODIFICA',
  1651. ]);
  1652. $arrSymtoms = json_decode( json_encode($getSymptom), true );
  1653. } catch (\Throwable $th) {
  1654. return $this->responseController->makeResponse(
  1655. true,
  1656. "ERR_SYMPTOM_GET000: No se pudo realizar la consulta a la base.",
  1657. $th->getMessage(),
  1658. 500
  1659. );
  1660. }
  1661. $responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate($arrSymtoms, $line);
  1662. if ($responseCheckLatestUpdate['error']) {
  1663. return $this->responseController->makeResponse(true, $responseCheckLatestUpdate['msg'], [], 500);
  1664. }
  1665. $arrSymtoms = $responseCheckLatestUpdate['response'];
  1666. return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrSymtoms);
  1667. }
  1668. public function getSymptomsActives($user, $line) {
  1669. try {
  1670. $getSymptom = DB::table('S002V01TLISI')
  1671. ->where('LISI_NULI', '=', $line)
  1672. ->where('LISI_ESTA', '=', 'Activo')
  1673. ->where('LIME_NULI', '=', $line)
  1674. ->where('LIME_ESTA', '=', 'Activo')
  1675. ->join('S002V01TLIME', 'LIME_IDME', '=', 'LISI_IDME')
  1676. ->get([
  1677. 'LISI_IDSI AS ID_SINTOMA',
  1678. 'LISI_NOSI AS NOMBRE_SINTOMA',
  1679. 'LISI_CLAS AS CLASIFICACION',
  1680. 'LISI_CAUS AS CAUSA',
  1681. 'LISI_DESC AS DESCRIPCION',
  1682. 'LISI_SOLU AS SOLUCION',
  1683. 'LISI_LIVA AS LIMITE_VALOR',
  1684. 'LIME_IDME AS ID_MEDIDA',
  1685. 'LIME_NOME AS NOMBRE_MEDIDA',
  1686. 'LIME_ACME AS ACRONIMO_MEDIDA',
  1687. 'LISI_ESTA AS ESTADO',
  1688. 'LISI_USRE AS USUARIO_REGISTRA',
  1689. 'LISI_FERE AS FECHA_REGISTRA',
  1690. 'LISI_USMO AS USUARIO_MODIFICA',
  1691. 'LISI_FEMO AS FECHA_MODIFICA',
  1692. ]);
  1693. } catch (\Throwable $th) {
  1694. return $this->responseController->makeResponse(
  1695. true,
  1696. "ERR_SYMPTOM_GETACTIVE000: No se pudo realizar la consulta a la base.",
  1697. $th->getMessage(),
  1698. 500
  1699. );
  1700. }
  1701. $arrSymtoms = json_decode( json_encode($getSymptom), true );
  1702. return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrSymtoms);
  1703. }
  1704. public function getSymptomsByEquipment($equipment, $user, $line) {
  1705. try {
  1706. $equipment = $this->encController->decrypt($equipment);
  1707. } catch (\Throwable $th) {
  1708. return $this->responseController->makeResponse(true, "ERR_SYMPTOM_GETBYEQUIPMENT000: No se pudo obtener el equipamiento.", $th->getMessage(), 500);
  1709. }
  1710. try {
  1711. $getSymptom = DB::table('S002V01TLSEQ')
  1712. ->where('LSEQ_NULI', '=', $line)
  1713. ->where('LSEQ_ESTA', '=', 'Activo')
  1714. ->where('LSEQ_COEQ', '=', $equipment)
  1715. ->where('LISI_NULI', '=', $line)
  1716. ->where('LISI_ESTA', '=', 'Activo')
  1717. ->join('S002V01TLISI', 'LISI_IDSI', '=', 'LSEQ_IDSI')
  1718. ->join('S002V01TLIME', 'LIME_IDME', '=', 'LISI_IDME')
  1719. ->get([
  1720. 'LISI_IDSI AS ID_SINTOMA',
  1721. 'LISI_NOSI AS NOMBRE_SINTOMA',
  1722. 'LISI_CLAS AS CLASIFICACION',
  1723. 'LISI_CAUS AS CAUSA',
  1724. 'LISI_DESC AS DESCRIPCION',
  1725. 'LISI_SOLU AS SOLUCION',
  1726. 'LISI_LIVA AS LIMITE_VALOR',
  1727. 'LIME_IDME AS ID_MEDIDA',
  1728. 'LIME_NOME AS NOMBRE_MEDIDA',
  1729. 'LIME_ACME AS ACRONIMO_MEDIDA',
  1730. 'LISI_ESTA AS ESTADO',
  1731. 'LISI_USRE AS USUARIO_REGISTRA',
  1732. 'LISI_FERE AS FECHA_REGISTRA',
  1733. 'LISI_USMO AS USUARIO_MODIFICA',
  1734. 'LISI_FEMO AS FECHA_MODIFICA',
  1735. ]);
  1736. } catch (\Throwable $th) {
  1737. return $this->responseController->makeResponse(
  1738. true,
  1739. "ERR_SYMPTOM_GETBYEQUIPMENT001: No se pudo realizar la consulta a la base.",
  1740. $th->getMessage(),
  1741. 500
  1742. );
  1743. }
  1744. $arrSymtoms = json_decode( json_encode($getSymptom), true );
  1745. return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrSymtoms);
  1746. }
  1747. public function getSymptomById($idSymptom, $user, $line) {
  1748. try {
  1749. $idSymptom = $this->encController->decrypt($idSymptom);
  1750. } catch (\Throwable $th) {
  1751. return $this->responseController->makeResponse(true, "ERR_SYMPTOM_GETBYID000: No se pudo obtener el ID del síntoma.", $th->getMessage(), 500);
  1752. }
  1753. try {
  1754. $arrSymptom = (array) DB::table('S002V01TLISI')
  1755. ->where('LISI_IDSI', '=', $idSymptom)
  1756. ->where('LISI_NULI', '=', $line)
  1757. ->where('LISI_ESTA', '=', 'Activo')
  1758. ->where('LIME_NULI', '=', $line)
  1759. ->where('LIME_ESTA', '=', 'Activo')
  1760. ->join('S002V01TLIME', 'LIME_IDME', '=', 'LISI_IDME')
  1761. ->first([
  1762. 'LISI_IDSI AS ID_SINTOMA',
  1763. 'LISI_NOSI AS NOMBRE_SINTOMA',
  1764. 'LISI_CLAS AS CLASIFICACION',
  1765. 'LISI_CAUS AS CAUSA',
  1766. 'LISI_DESC AS DESCRIPCION',
  1767. 'LISI_SOLU AS SOLUCION',
  1768. 'LISI_LIVA AS LIMITE_VALOR',
  1769. 'LIME_IDME AS ID_MEDIDA',
  1770. 'LIME_NOME AS NOMBRE_MEDIDA',
  1771. 'LIME_ACME AS ACRONIMO_MEDIDA',
  1772. 'LISI_ESTA AS ESTADO',
  1773. 'LISI_USRE AS USUARIO_REGISTRA',
  1774. 'LISI_FERE AS FECHA_REGISTRA',
  1775. 'LISI_USMO AS USUARIO_MODIFICA',
  1776. 'LISI_FEMO AS FECHA_MODIFICA',
  1777. ]);
  1778. } catch (\Throwable $th) {
  1779. return $this->responseController->makeResponse(
  1780. true,
  1781. "ERR_SYMPTOM_GETBYID001: No se pudo realizar la consulta a la base.",
  1782. $th->getMessage(),
  1783. 500
  1784. );
  1785. }
  1786. if ( !empty($arrSymptom) ) {
  1787. try {
  1788. $arrEquipment = DB::table('S002V01TLSEQ')
  1789. ->where('LSEQ_IDSI', '=', $idSymptom)
  1790. ->where('LSEQ_NULI', '=', $line)
  1791. ->where('LSEQ_ESTA', '=', 'Activo')
  1792. ->where('EQUI_NULI', '=', $line)
  1793. ->join('S002V01TEQUI', 'EQUI_COEQ', '=', 'LSEQ_COEQ')
  1794. ->get([
  1795. 'EQUI_COEQ AS CODIGO',
  1796. 'EQUI_TIPO AS TIPO',
  1797. 'EQUI_MODE AS MODELO',
  1798. 'EQUI_IDEQ AS ID_EQUIPO',
  1799. 'EQUI_ESFU AS ESTADO_FUNCIONAMIENTO',
  1800. 'EQUI_ELOR AS ELEMENTO_ORIGEN',
  1801. 'EQUI_TICO AS TIPO_CODIGO'
  1802. ]);
  1803. } catch (\Throwable $th) {
  1804. return $this->responseController->makeResponse(
  1805. true,
  1806. "ERR_SYMPTOM_GETBYID002: No se pudo realizar la consulta a la base.",
  1807. $th->getMessage(),
  1808. 500
  1809. );
  1810. }
  1811. $arrEquipment = json_decode( json_encode($arrEquipment), true );
  1812. foreach ($arrEquipment as $keyEquipment => $equipment) {
  1813. $equipment['ID_EQUIPO'] = strval($equipment['ID_EQUIPO']);
  1814. $arrEquipment[$keyEquipment] = $equipment;
  1815. }
  1816. $arrSymptom['EQUIPAMIENTOS'] = $arrEquipment;
  1817. try {
  1818. $arrFailure = DB::table('S002V01TLFLS')
  1819. ->where('LFLS_IDSI', '=', $idSymptom)
  1820. ->where('LFLS_NULI', '=', $line)
  1821. ->where('LFLS_ESTA', '=', 'Activo')
  1822. ->where('LIFA_NULI', '=', $line)
  1823. ->where('LIFA_ESTA', '=', 'Activo')
  1824. ->join('S002V01TLIFA', 'LIFA_IDFA', '=', 'LFLS_IDFA')
  1825. ->get([
  1826. 'LIFA_IDFA AS ID_FALLA',
  1827. 'LIFA_NOFA AS NOMBRE_FALLA',
  1828. 'LIFA_NIVE AS NIVEL_CRITICIDAD',
  1829. 'LIFA_CAUS AS CAUSA_FALLA',
  1830. 'LIFA_SOLU AS SOLICION',
  1831. 'LIFA_DESC AS DESCRIPCION',
  1832. ]);
  1833. } catch (\Throwable $th) {
  1834. return $this->responseController->makeResponse(
  1835. true,
  1836. "ERR_SYMPTOM_GETBYID003: No se pudo realizar la consulta a la base.",
  1837. $th->getMessage(),
  1838. 500
  1839. );
  1840. }
  1841. $arrFailure = json_decode( json_encode($arrFailure), true );
  1842. $arrSymptom['FALLAS'] = $arrFailure;
  1843. }
  1844. return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrSymptom);
  1845. }
  1846. public function registerSymptom(Request $request) {
  1847. $validator = Validator::make($request->all(), [
  1848. 'NOMBRE_SINTOMA' => 'required|string',
  1849. 'CLASIFICACION' => 'required|string',
  1850. 'CAUSA' => 'required|string',
  1851. 'DESCRIPCION' => 'required|string',
  1852. 'SOLUCION' => 'required|string',
  1853. 'LIMITE_VALOR' => 'required|string',
  1854. 'ID_MEDIDA' => 'required|string',
  1855. 'FALLAS' => 'required|array',
  1856. 'EQUIPAMIENTOS' => 'required|array',
  1857. 'USUARIO' => 'required|string',
  1858. 'NUMERO_LINEA' => 'required|integer',
  1859. ]);
  1860. if ($validator->fails()) {
  1861. return $this->responseController->makeResponse(
  1862. true,
  1863. "ERR_SYMPTOM_REG000: Se encontraron uno o más errores.",
  1864. $this->responseController->makeErrors($validator->errors()->messages()),
  1865. 401
  1866. );
  1867. }
  1868. DB::beginTransaction();
  1869. $requestData = $request->all();
  1870. try {
  1871. $user = $this->encController->decrypt($requestData['USUARIO']);
  1872. } catch (\Throwable $th) {
  1873. DB::rollBack();
  1874. return $this->responseController->makeResponse(true, "ERR_SYMPTOM_REG001: No se pudo obtener el usuario.", $th->getMessage(), 500);
  1875. }
  1876. $now = $this->functionsController->now();
  1877. $currentDate = $now->toDateTimeString();
  1878. try {
  1879. $idSymptom = DB::table('S002V01TLISI')->insertGetId([
  1880. 'LISI_NULI' => $requestData['NUMERO_LINEA'],
  1881. 'LISI_NOSI' => $requestData['NOMBRE_SINTOMA'],
  1882. 'LISI_CLAS' => $requestData['CLASIFICACION'],
  1883. 'LISI_CAUS' => $requestData['CAUSA'],
  1884. 'LISI_SOLU' => $requestData['SOLUCION'],
  1885. 'LISI_DESC' => $requestData['DESCRIPCION'],
  1886. 'LISI_LIVA' => $requestData['LIMITE_VALOR'],
  1887. 'LISI_IDME' => $requestData['ID_MEDIDA'],
  1888. 'LISI_USRE' => $user,
  1889. 'LISI_FERE' => $currentDate,
  1890. 'LISI_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
  1891. ]);
  1892. } catch (\Throwable $th) {
  1893. DB::rollBack();
  1894. return $this->responseController->makeResponse(
  1895. true,
  1896. "ERR_SYMPTOM_REG002: Ocurrió un error en el registro de la lista de síntoma en la base de datos.",
  1897. $th->getMessage(),
  1898. 500
  1899. );
  1900. }
  1901. if ( !$idSymptom ) {
  1902. DB::rollBack();
  1903. return $this->responseController->makeResponse(
  1904. true,
  1905. "ERR_SYMPTOM_REG003: No se pudo hacer el registro de la lista de síntoma en la base de datos.",
  1906. [],
  1907. 500
  1908. );
  1909. }
  1910. foreach ($requestData['EQUIPAMIENTOS'] as $keyEquipment => $equipment) {
  1911. try {
  1912. $validateRegisterEquipment = DB::table('S002V01TLSEQ')->insert([
  1913. 'LSEQ_NULI' => $requestData['NUMERO_LINEA'],
  1914. 'LSEQ_IDSI' => $idSymptom,
  1915. 'LSEQ_COEQ' => $equipment,
  1916. 'LSEQ_USRE' => $user,
  1917. 'LSEQ_FERE' => $currentDate,
  1918. 'LSEQ_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
  1919. ]);
  1920. } catch (\Throwable $th) {
  1921. DB::rollBack();
  1922. return $this->responseController->makeResponse(
  1923. true,
  1924. "ERR_SYMPTOM_REG004: Ocurrió un error al registrar el formulario en la lista de síntomas.",
  1925. $th->getMessage(),
  1926. 500
  1927. );
  1928. }
  1929. if ( !$validateRegisterEquipment ) {
  1930. DB::rollBack();
  1931. return $this->responseController->makeResponse(
  1932. true,
  1933. "ERR_SYMPTOM_REG005: No se pudo registrar el equipamiento $equipment en la lista de síntomas.",
  1934. [],
  1935. 500
  1936. );
  1937. }
  1938. }
  1939. foreach ($requestData['FALLAS'] as $keyFailure => $failure) {
  1940. try {
  1941. $validateRegisterFailure = DB::table('S002V01TLFLS')->insert([
  1942. 'LFLS_NULI' => $requestData['NUMERO_LINEA'],
  1943. 'LFLS_IDFA' => $failure,
  1944. 'LFLS_IDSI' => $idSymptom,
  1945. 'LFLS_USRE' => $user,
  1946. 'LFLS_FERE' => $currentDate,
  1947. 'LFLS_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
  1948. ]);
  1949. } catch (\Throwable $th) {
  1950. DB::rollBack();
  1951. return $this->responseController->makeResponse(
  1952. true,
  1953. "ERR_SYMPTOM_REG006: Ocurrió un error al registrar el formulario en la lista de síntomas.",
  1954. $th->getMessage(),
  1955. 500
  1956. );
  1957. }
  1958. if ( !$validateRegisterFailure ) {
  1959. DB::rollBack();
  1960. return $this->responseController->makeResponse(
  1961. true,
  1962. "ERR_SYMPTOM_REG007: No se pudo registrar el equipamiento $equipment en la lista de síntomas.",
  1963. [],
  1964. 500
  1965. );
  1966. }
  1967. }
  1968. DB::commit();
  1969. return $this->responseController->makeResponse(false, "ÉXITO: Registro Exitoso");
  1970. }
  1971. public function updateSymptom(Request $request) {
  1972. $validator = Validator::make($request->all(), [
  1973. 'ID_SINTOMA' => 'required|integer',
  1974. 'NOMBRE_SINTOMA' => 'required|string',
  1975. 'CLASIFICACION' => 'required|string',
  1976. 'CAUSA' => 'required|string',
  1977. 'DESCRIPCION' => 'required|string',
  1978. 'SOLUCION' => 'required|string',
  1979. 'LIMITE_VALOR' => 'required|string',
  1980. 'ID_MEDIDA' => 'required|string',
  1981. 'FALLAS' => 'required|array',
  1982. 'EQUIPAMIENTOS' => 'required|array',
  1983. 'USUARIO' => 'required|string',
  1984. 'NUMERO_LINEA' => 'required|integer',
  1985. ]);
  1986. if ($validator->fails()) {
  1987. return $this->responseController->makeResponse(
  1988. true,
  1989. "ERR_SYMPTOM_UPD000: Se encontraron uno o más errores.",
  1990. $this->responseController->makeErrors($validator->errors()->messages()),
  1991. 401
  1992. );
  1993. }
  1994. DB::beginTransaction();
  1995. $requestData = $request->all();
  1996. try {
  1997. $user = $this->encController->decrypt($requestData['USUARIO']);
  1998. } catch (\Throwable $th) {
  1999. DB::rollBack();
  2000. return $this->responseController->makeResponse(true, "ERR_SYMPTOM_UPD001: No se pudo obtener el usuario.", $th->getMessage(), 500);
  2001. }
  2002. $now = $this->functionsController->now();
  2003. $currentDate = $now->toDateTimeString();
  2004. try {
  2005. $validateUpdate = DB::table('S002V01TLISI')
  2006. ->where('LISI_IDSI', '=', $requestData['ID_SINTOMA'])
  2007. ->where('LISI_NULI', '=', $requestData['NUMERO_LINEA'])
  2008. ->update([
  2009. 'LISI_NOSI' => $requestData['NOMBRE_SINTOMA'],
  2010. 'LISI_CLAS' => $requestData['CLASIFICACION'],
  2011. 'LISI_CAUS' => $requestData['CAUSA'],
  2012. 'LISI_SOLU' => $requestData['SOLUCION'],
  2013. 'LISI_DESC' => $requestData['DESCRIPCION'],
  2014. 'LISI_LIVA' => $requestData['LIMITE_VALOR'],
  2015. 'LISI_IDME' => $requestData['ID_MEDIDA'],
  2016. 'LISI_USMO' => $user,
  2017. 'LISI_FEMO' => $currentDate,
  2018. 'LISI_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
  2019. ]);
  2020. } catch (\Throwable $th) {
  2021. DB::rollBack();
  2022. return $this->responseController->makeResponse(
  2023. true,
  2024. "ERR_SYMPTOM_UPD002: Ocurrió un error en el registro de la lista de síntoma en la base de datos.",
  2025. $th->getMessage(),
  2026. 500
  2027. );
  2028. }
  2029. if ( !$validateUpdate ) {
  2030. DB::rollBack();
  2031. return $this->responseController->makeResponse(
  2032. true,
  2033. "ERR_SYMPTOM_UPD003: Ocurrió un error en la modificación de la lista de síntoma en la base de datos.",
  2034. [],
  2035. 500
  2036. );
  2037. }
  2038. foreach ($requestData['EQUIPAMIENTOS'] as $keyEquipment => $equipment) {
  2039. try {
  2040. $validateExists = DB::table('S002V01TLSEQ')
  2041. ->where('LSEQ_IDSI', '=', $requestData['ID_SINTOMA'])
  2042. ->where('LSEQ_NULI', '=', $requestData['NUMERO_LINEA'])
  2043. ->where('LSEQ_COEQ', '=', $equipment)
  2044. ->exists();
  2045. } catch (\Throwable $th) {
  2046. DB::rollBack();
  2047. return $this->responseController->makeResponse(
  2048. true,
  2049. "ERR_SYMPTOM_UPD004: Ocurrió un error al consultar el equipamiento.",
  2050. $th->getMessage(),
  2051. 500
  2052. );
  2053. }
  2054. if ( $validateExists ) {
  2055. try {
  2056. $validate = DB::table('S002V01TLSEQ')
  2057. ->where('LSEQ_NULI', '=', $requestData['NUMERO_LINEA'])
  2058. ->where('LSEQ_IDSI', '=', $requestData['ID_SINTOMA'])
  2059. ->where('LSEQ_COEQ', '=', $equipment)
  2060. ->update([
  2061. 'LSEQ_ESTA' => 'Activo',
  2062. 'LSEQ_USMO' => $user,
  2063. 'LSEQ_FEMO' => $currentDate,
  2064. 'LSEQ_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
  2065. ]);
  2066. } catch (\Throwable $th) {
  2067. DB::rollBack();
  2068. return $this->responseController->makeResponse(
  2069. true,
  2070. "ERR_SYMPTOM_UPD005: Ocurrió un error al modificar el formulario en la lista de falla el equipamiento $equipment.",
  2071. $th->getMessage(),
  2072. 500
  2073. );
  2074. }
  2075. } else {
  2076. try {
  2077. $validate = DB::table('S002V01TLSEQ')->insert([
  2078. 'LSEQ_NULI' => $requestData['NUMERO_LINEA'],
  2079. 'LSEQ_IDSI' => $requestData['ID_SINTOMA'],
  2080. 'LSEQ_COEQ' => $equipment,
  2081. 'LSEQ_USRE' => $user,
  2082. 'LSEQ_FERE' => $currentDate,
  2083. 'LSEQ_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
  2084. ]);
  2085. } catch (\Throwable $th) {
  2086. DB::rollBack();
  2087. return $this->responseController->makeResponse(
  2088. true,
  2089. "ERR_SYMPTOM_UPD006: Ocurrió un error al registrar el formulario en la lista de falla el equipamiento $equipment.",
  2090. $th->getMessage(),
  2091. 500
  2092. );
  2093. }
  2094. }
  2095. if ( !$validate ) {
  2096. DB::rollBack();
  2097. return $this->responseController->makeResponse(
  2098. true,
  2099. "ERR_SYMPTOM_UPD007: No se pudo modificar el equipamiento $equipment en la lista de fallas.",
  2100. [],
  2101. 500
  2102. );
  2103. }
  2104. }
  2105. try {
  2106. $getListEquipment = DB::table('S002V01TLSEQ')
  2107. ->where('LSEQ_IDSI', '=', $requestData['ID_SINTOMA'])
  2108. ->where('LSEQ_NULI', '=', $requestData['NUMERO_LINEA'])
  2109. ->get([
  2110. 'LSEQ_IDLS',
  2111. 'LSEQ_IDSI',
  2112. 'LSEQ_COEQ',
  2113. 'LSEQ_ESTA',
  2114. ]);
  2115. } catch (\Throwable $th) {
  2116. DB::rollBack();
  2117. return $this->responseController->makeResponse(
  2118. true,
  2119. "ERR_SYMPTOM_UPD008: Ocurrió un error al consultar la lista de equipamientos.",
  2120. $th->getMessage(),
  2121. 500
  2122. );
  2123. }
  2124. $arrListEquipment = json_decode( json_encode($getListEquipment), true );
  2125. foreach ($arrListEquipment as $keyListEquipment => $listEquipment) {
  2126. if( !in_array($listEquipment['LSEQ_COEQ'], $requestData['EQUIPAMIENTOS']) ) {
  2127. try {
  2128. $validateDelete = DB::table('S002V01TLSEQ')
  2129. ->where('LSEQ_NULI', '=', $requestData['NUMERO_LINEA'])
  2130. ->where('LSEQ_IDSI', '=', $requestData['ID_SINTOMA'])
  2131. ->where('LSEQ_COEQ', '=', $listEquipment['LSEQ_COEQ'])
  2132. ->update([
  2133. 'LSEQ_ESTA' => 'Eliminado',
  2134. 'LSEQ_USMO' => $user,
  2135. 'LSEQ_FEMO' => $currentDate,
  2136. 'LSEQ_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
  2137. ]);
  2138. } catch (\Throwable $th) {
  2139. DB::rollBack();
  2140. return $this->responseController->makeResponse(
  2141. true,
  2142. "ERR_SYMPTOM_UPD009: Ocurrió un error al eliminar de la lista de falla el equipamiento ". $listEquipment['LSEQ_COEQ'].".",
  2143. $th->getMessage(),
  2144. 500
  2145. );
  2146. }
  2147. if ( !$validateDelete ) {
  2148. DB::rollBack();
  2149. return $this->responseController->makeResponse(
  2150. true,
  2151. "ERR_SYMPTOM_UPD010: No se pudo eliminar de la lista de falla el equipamiento ". $listEquipment['LFEQ_COEQ'].".",
  2152. [],
  2153. 500
  2154. );
  2155. }
  2156. }
  2157. }
  2158. foreach ($requestData['FALLAS'] as $keyFailure => $failure) {
  2159. try {
  2160. $validateExists = DB::table('S002V01TLFLS')
  2161. ->where('LFLS_IDFA', '=', $failure)
  2162. ->where('LFLS_IDSI', '=', $requestData['ID_SINTOMA'])
  2163. ->where('LFLS_NULI', '=', $requestData['NUMERO_LINEA'])
  2164. ->exists();
  2165. } catch (\Throwable $th) {
  2166. DB::rollBack();
  2167. return $this->responseController->makeResponse(
  2168. true,
  2169. "ERR_SYMPTOM_UPD011: Ocurrió un error al consultar la falla.",
  2170. $th->getMessage(),
  2171. 500
  2172. );
  2173. }
  2174. if ( $validateExists ) {
  2175. try {
  2176. $validate = DB::table('S002V01TLFLS')
  2177. ->where('LFLS_NULI', '=', $requestData['NUMERO_LINEA'])
  2178. ->where('LFLS_IDFA', '=', $failure)
  2179. ->where('LFLS_IDSI', '=', $requestData['ID_SINTOMA'])
  2180. ->update([
  2181. 'LFLS_ESTA' => 'Activo',
  2182. 'LFLS_USMO' => $user,
  2183. 'LFLS_FEMO' => $currentDate,
  2184. 'LFLS_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
  2185. ]);
  2186. } catch (\Throwable $th) {
  2187. DB::rollBack();
  2188. return $this->responseController->makeResponse(
  2189. true,
  2190. "ERR_SYMPTOM_UPD012: Ocurrió un error al modificar el formulario en la lista de falla del síntoma.",
  2191. $th->getMessage(),
  2192. 500
  2193. );
  2194. }
  2195. } else {
  2196. try {
  2197. $validate = DB::table('S002V01TLFLS')->insert([
  2198. 'LFLS_NULI' => $requestData['NUMERO_LINEA'],
  2199. 'LFLS_IDSI' => $requestData['ID_SINTOMA'],
  2200. 'LFLS_IDFA' => $failure,
  2201. 'LFLS_USRE' => $user,
  2202. 'LFLS_FERE' => $currentDate,
  2203. 'LFLS_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
  2204. ]);
  2205. } catch (\Throwable $th) {
  2206. DB::rollBack();
  2207. return $this->responseController->makeResponse(
  2208. true,
  2209. "ERR_SYMPTOM_UPD013: Ocurrió un error al registrar el formulario en la lista de falla del síntoma.",
  2210. $th->getMessage(),
  2211. 500
  2212. );
  2213. }
  2214. }
  2215. if ( !$validate ) {
  2216. DB::rollBack();
  2217. return $this->responseController->makeResponse(
  2218. true,
  2219. "ERR_SYMPTOM_UPD014: No se pudo modificar la lista de fallas.",
  2220. [],
  2221. 500
  2222. );
  2223. }
  2224. }
  2225. try {
  2226. $arrListFaliure = DB::table('S002V01TLFLS')
  2227. ->where('LFLS_IDSI', '=', $requestData['ID_SINTOMA'])
  2228. ->where('LFLS_NULI', '=', $requestData['NUMERO_LINEA'])
  2229. ->get([
  2230. 'LFLS_IDFA',
  2231. 'LFLS_IDSI',
  2232. 'LFLS_ESTA',
  2233. ]);
  2234. } catch (\Throwable $th) {
  2235. DB::rollBack();
  2236. return $this->responseController->makeResponse(
  2237. true,
  2238. "ERR_SYMPTOM_UPD015: Ocurrió un error al consultar la lista de fallas del síntoma.",
  2239. $th->getMessage(),
  2240. 500
  2241. );
  2242. }
  2243. $arrListFaliure = json_decode( json_encode($arrListFaliure), true );
  2244. foreach ($arrListFaliure as $keyListFaliure => $listFaliure) {
  2245. if( !in_array($listFaliure['LFLS_IDFA'], $requestData['FALLAS']) ) {
  2246. try {
  2247. $validateDelete = DB::table('S002V01TLFLS')
  2248. ->where('LFLS_IDFA', '=', $listFaliure['LFLS_IDFA'])
  2249. ->where('LFLS_IDSI', '=', $requestData['ID_SINTOMA'])
  2250. ->where('LFLS_NULI', '=', $requestData['NUMERO_LINEA'])
  2251. ->update([
  2252. 'LFLS_ESTA' => 'Eliminado',
  2253. 'LFLS_USMO' => $user,
  2254. 'LFLS_FEMO' => $currentDate,
  2255. 'LFLS_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
  2256. ]);
  2257. } catch (\Throwable $th) {
  2258. DB::rollBack();
  2259. return $this->responseController->makeResponse(
  2260. true,
  2261. "ERR_SYMPTOM_UPD016: Ocurrió un error al eliminar las falla ".$listFaliure['LFLS_IDFA']." del síntoma.",
  2262. $th->getMessage(),
  2263. 500
  2264. );
  2265. }
  2266. if ( !$validateDelete ) {
  2267. DB::rollBack();
  2268. return $this->responseController->makeResponse(
  2269. true,
  2270. "ERR_SYMPTOM_UPD017: No se pudo eliminar la falla ".$listFaliure['LFLS_IDFA']." del síntoma.",
  2271. [],
  2272. 500
  2273. );
  2274. }
  2275. }
  2276. }
  2277. DB::commit();
  2278. return $this->responseController->makeResponse(false, "ÉXITO: Modificación Exitosa");
  2279. }
  2280. public function deleteSymptom(Request $request) {
  2281. $validator = Validator::make($request->all(), [
  2282. 'ID_SINTOMA' => 'required|string',
  2283. 'NUMERO_LINEA' => 'required|integer',
  2284. 'USUARIO' => 'required|string',
  2285. ]);
  2286. if ($validator->fails()) {
  2287. return $this->responseController->makeResponse(
  2288. true,
  2289. "ERR_SYMPTOM_DEL000: Se encontraron uno o más errores.",
  2290. $this->responseController->makeErrors($validator->errors()->messages()),
  2291. 401
  2292. );
  2293. }
  2294. DB::beginTransaction();
  2295. $requestData = $request->all();
  2296. try {
  2297. $user = $this->encController->decrypt($requestData['USUARIO']);
  2298. } catch (\Throwable $th) {
  2299. DB::rollBack();
  2300. return $this->responseController->makeResponse(true, "ERR_SYMPTOM_DEL001: No se pudo obtener el usuario.", $th->getMessage(), 500);
  2301. }
  2302. $now = $this->functionsController->now();
  2303. $currentDate = $now->toDateTimeString();
  2304. try {
  2305. $exist = DB::table('S002V01TLISI')
  2306. ->where('LISI_IDSI', '=', $requestData['ID_SINTOMA'])
  2307. ->where('LISI_NULI', '=', $requestData['NUMERO_LINEA'])
  2308. ->exists();
  2309. } catch (\Throwable $th) {
  2310. DB::rollBack();
  2311. return $this->responseController->makeResponse(true, "ERR_SYMPTOM_DEL002: Ocurrió un error al consultar en la base de datos.", $th->getMessage(), 500);
  2312. }
  2313. if (!$exist) {
  2314. DB::rollBack();
  2315. return $this->responseController->makeResponse(true, "ERR_SYMPTOM_DEL003: El archivo no existe.", [], 500);
  2316. }
  2317. try {
  2318. $validateDelete = DB::table('S002V01TLISI')
  2319. ->where('LISI_IDSI', '=', $requestData['ID_SINTOMA'])
  2320. ->where('LISI_NULI', '=', $requestData['NUMERO_LINEA'])
  2321. ->update([
  2322. 'LISI_ESTA' => 'Eliminado',
  2323. 'LISI_USMO' => $user,
  2324. 'LISI_FEMO' => $currentDate,
  2325. 'LISI_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
  2326. ]);
  2327. } catch (\Throwable $th) {
  2328. DB::rollBack();
  2329. return $this->responseController->makeResponse(true, "ERR_SYMPTOM_DEL004: Ocurrió un error al eliminar el síntoma de la base de datos.", $th->getMessage(), 500);
  2330. }
  2331. if ( !$validateDelete ) {
  2332. DB::rollBack();
  2333. return $this->responseController->makeResponse(true, "ERR_SYMPTOM_DEL005: No se pudo eliminar el síntoma de la base de datos.", [], 500);
  2334. }
  2335. try {
  2336. $validateDelete = DB::table('S002V01TLSEQ')
  2337. ->where('LSEQ_IDSI', '=', $requestData['ID_SINTOMA'])
  2338. ->where('LSEQ_NULI', '=', $requestData['NUMERO_LINEA'])
  2339. ->update([
  2340. 'LSEQ_ESTA' => 'Eliminado',
  2341. 'LSEQ_USMO' => $user,
  2342. 'LSEQ_FEMO' => $currentDate,
  2343. 'LSEQ_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
  2344. ]);
  2345. } catch (\Throwable $th) {
  2346. DB::rollBack();
  2347. return $this->responseController->makeResponse(
  2348. true,
  2349. "ERR_SYMPTOM_DEL006: Ocurrió un error al eliminar la lista de equipamientos.",
  2350. $th->getMessage(),
  2351. 500
  2352. );
  2353. }
  2354. if ( !$validateDelete ) {
  2355. DB::rollBack();
  2356. return $this->responseController->makeResponse(true, "ERR_SYMPTOM_DEL007: No se pudo eliminar la lista de equipamientos.", [], 500);
  2357. }
  2358. try {
  2359. $validateDelete = DB::table('S002V01TLFLS')
  2360. ->where('LFLS_IDSI', '=', $requestData['ID_SINTOMA'])
  2361. ->where('LFLS_NULI', '=', $requestData['NUMERO_LINEA'])
  2362. ->update([
  2363. 'LFLS_ESTA' => 'Eliminado',
  2364. 'LFLS_USMO' => $user,
  2365. 'LFLS_FEMO' => $currentDate,
  2366. 'LFLS_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
  2367. ]);
  2368. } catch (\Throwable $th) {
  2369. DB::rollBack();
  2370. return $this->responseController->makeResponse(
  2371. true,
  2372. "ERR_SYMPTOM_DEL008: Ocurrió un error al eliminar la lista de fallas.",
  2373. $th->getMessage(),
  2374. 500
  2375. );
  2376. }
  2377. if ( !$validateDelete ) {
  2378. DB::rollBack();
  2379. return $this->responseController->makeResponse(true, "ERR_SYMPTOM_DEL009: No se pudo eliminar la lista de fallas.", [], 500);
  2380. }
  2381. DB::commit();
  2382. return $this->responseController->makeResponse(false, "ÉXITO: Eliminación Exitosa");
  2383. }
  2384. public function generateMTBF(Request $request) {
  2385. $validator = Validator::make($request->all(), [
  2386. 'ID_FALLA' => 'required|string',
  2387. 'CODIGO_EQUIPAMIENTO' => 'required|string',
  2388. 'FECHA_INICIO' => 'required|string',
  2389. 'FECHA_FINAL' => 'required|string',
  2390. 'NUMERO_LINEA' => 'required|integer',
  2391. 'USUARIO' => 'required|string',
  2392. ]);
  2393. if ($validator->fails()) {
  2394. return $this->responseController->makeResponse(
  2395. true,
  2396. "Se encontraron uno o más errores.",
  2397. $this->responseController->makeErrors($validator->errors()->messages()),
  2398. 401
  2399. );
  2400. }
  2401. $requestData = $request->all();
  2402. try {
  2403. $equipment = (array) DB::table('S002V01TEQUI')
  2404. ->where([
  2405. ['EQUI_COEQ', '=', $requestData['CODIGO_EQUIPAMIENTO']],
  2406. ['EQUI_NULI', '=', $requestData['NUMERO_LINEA']],
  2407. ])
  2408. ->first([
  2409. 'EQUI_HICO AS HISTORIAL'
  2410. ]);
  2411. } catch (\Throwable $th) {
  2412. return $th;
  2413. }
  2414. $currentCode = $requestData['CODIGO_EQUIPAMIENTO'];
  2415. $pbs = explode('_', $currentCode)[1];
  2416. $status = explode('.', $pbs)[2];
  2417. $arrRangeDateOn = array();
  2418. $arrRangeDateOff = array();
  2419. $arrHistory = json_decode($equipment['HISTORIAL'], true);
  2420. $isInitOn = true;
  2421. $isInitOff = true;
  2422. $indexOn = 0;
  2423. $indexOff = 0;
  2424. foreach ($arrHistory as $keyHistory => $history) {
  2425. $pbs = explode('_', $history['CODIGO'])[1];
  2426. $status = explode('.', $pbs)[2];
  2427. if ($isInitOn && $status === 'I') {
  2428. $arrRangeDateOn[$indexOn]['INITIAL'] = $history['FECHA'];
  2429. $isInitOn = false;
  2430. }
  2431. if (!$isInitOn && $status !== 'I') {
  2432. $arrRangeDateOn[$indexOn]['FINAL'] = $history['FECHA'];
  2433. $isInitOn = true;
  2434. $indexOn++;
  2435. }
  2436. if ($isInitOff && $status !== 'I') {
  2437. $arrRangeDateOff[$indexOff]['INITIAL'] = $history['FECHA'];
  2438. $isInitOff = false;
  2439. }
  2440. if (!$isInitOff && $status === 'I') {
  2441. $arrRangeDateOff[$indexOff]['FINAL'] = $history['FECHA'];
  2442. $isInitOff = true;
  2443. $indexOff++;
  2444. }
  2445. }
  2446. $lastIndex = count($arrRangeDateOn)-1;
  2447. if (!array_key_exists('FINAL', $arrRangeDateOn[$lastIndex])) {
  2448. $now = $this->functionsController->now();
  2449. $currentDate = $now->toDateTimeString();
  2450. $arrRangeDateOn[$lastIndex]['FINAL'] = $currentDate;
  2451. }
  2452. $rangeInitial = Carbon::parse($requestData['FECHA_INICIO']);
  2453. $rangeFinal = Carbon::parse($requestData['FECHA_FINAL']);
  2454. $activeHours = 0;
  2455. foreach ($arrRangeDateOn as $key => $range) {
  2456. $dateInitial = Carbon::parse($range['INITIAL']);
  2457. $dateFinal = Carbon::parse($range['FINAL']);
  2458. if ($dateInitial->gte($rangeInitial) && $dateFinal->lte($rangeFinal)) {
  2459. $diffHours = $dateInitial->diffInHours($dateFinal);
  2460. $activeHours += $diffHours;
  2461. } else if ($dateInitial->gte($rangeInitial) && $dateFinal->gte($rangeFinal) ) {
  2462. $dateFinal = $rangeFinal;
  2463. $diffHours = $dateInitial->diffInHours($dateFinal);
  2464. $activeHours += $diffHours;
  2465. } else if ($dateInitial->lte($rangeInitial) && $dateFinal->lte($rangeFinal) ) {
  2466. $dateInitial = $rangeInitial;
  2467. $diffHours = $dateInitial->diffInHours($dateFinal);
  2468. $activeHours += $diffHours;
  2469. }
  2470. }
  2471. $inactiveHours = 0;
  2472. foreach ($arrRangeDateOff as $key => $range) {
  2473. $dateInitial = Carbon::parse($range['INITIAL']);
  2474. $dateFinal = Carbon::parse($range['FINAL']);
  2475. if ($dateInitial->gte($rangeInitial) && $dateFinal->lte($rangeFinal)) {
  2476. $diffHours = $dateInitial->diffInHours($dateFinal);
  2477. $inactiveHours += $diffHours;
  2478. } else if ($dateInitial->gte($rangeInitial) && $dateFinal->gte($rangeFinal) ) {
  2479. $dateFinal = $rangeFinal;
  2480. $diffHours = $dateInitial->diffInHours($dateFinal);
  2481. $inactiveHours += $diffHours;
  2482. } else if ($dateInitial->lte($rangeInitial) && $dateFinal->lte($rangeFinal) ) {
  2483. $dateInitial = $rangeInitial;
  2484. $diffHours = $dateInitial->diffInHours($dateFinal);
  2485. $inactiveHours += $diffHours;
  2486. }
  2487. }
  2488. try {
  2489. $countPrev = DB::table('S002V01TOTPR')
  2490. ->where([
  2491. ['OTPR_EQIN', '=', $requestData['CODIGO_EQUIPAMIENTO']],
  2492. ['OTPR_NULI', '=', $requestData['NUMERO_LINEA']],
  2493. ])
  2494. ->count();
  2495. } catch (\Throwable $th) {
  2496. return $th;
  2497. }
  2498. try {
  2499. $countCorr = DB::table('S002V01TOTCO')
  2500. ->where([
  2501. ['OTCO_EQIN', '=', $requestData['CODIGO_EQUIPAMIENTO']],
  2502. ['OTCO_NULI', '=', $requestData['NUMERO_LINEA']],
  2503. ])
  2504. ->count();
  2505. } catch (\Throwable $th) {
  2506. return $th;
  2507. }
  2508. $MTBF = $activeHours / $countCorr;
  2509. $response = [
  2510. 'HORAS_FUNCIONAMIENTO' => $activeHours,
  2511. 'CANTIDAD_MANTENIMIENTO_PREVENTIVO' => $countPrev,
  2512. 'CANTIDAD_FALLAS_TOTALES' => $countCorr,
  2513. 'HORAS_INACTIVIDAD' => $inactiveHours,
  2514. 'MTBF' => $MTBF,
  2515. ];
  2516. return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $response);
  2517. }
  2518. }