FailureAnalysisController.php 118 KB

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