FailureAnalysisController.php 118 KB

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