ControlPanelController.php 139 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use Illuminate\Support\Facades\DB;
  5. use Illuminate\Support\Facades\Validator;
  6. use Illuminate\Support\Facades\Storage;
  7. use Illuminate\Http\File;
  8. use Illuminate\Support\Carbon;
  9. use Carbon\Exceptions\InvalidFormatException;
  10. use Illuminate\Database\Query\JoinClause;
  11. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  12. use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
  13. use PhpOffice\PhpSpreadsheet\Style\Fill;
  14. use PhpOffice\PhpSpreadsheet\Style\Alignment;
  15. use PhpOffice\PhpSpreadsheet\IOFactory;
  16. class ControlPanelController extends Controller{
  17. private $responseController;
  18. private $encryptionController;
  19. private $functionsController;
  20. private $filesUbic;
  21. public function __construct(){
  22. $this->responseController = new ResponseController();
  23. $this->encryptionController = new EncryptionController();
  24. $this->functionsController = new FunctionsController();
  25. $this->filesUbic = $this->functionsController->getBasePath() . '\storage\app\public\global_resources\\';
  26. }
  27. public function getPanels($idUser, $line) {
  28. DB::enableQueryLog();
  29. $idUser = $this->encryptionController->decrypt($idUser);
  30. if(!$idUser){
  31. return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la solicitud no está encriptado correctamente', [], 400);
  32. }
  33. $usr = DB::table('S002V01TUSUA')->where([
  34. ['USUA_NULI', '=', $line],
  35. ['USUA_IDUS', '=', $idUser],
  36. ])->first();
  37. if(is_null($usr)){
  38. return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
  39. }
  40. $panels = DB::table('S002V01TPACO')->select([
  41. 'PACO_IDPC AS ID_PANEL',
  42. 'PACO_NPCO AS NOMBRE_PANEL',
  43. 'PACO_ORPA AS ORIENTACION',
  44. 'PACO_ESTA AS ESTADO',
  45. 'PACO_USRE AS USRREG',
  46. 'PACO_FERE AS FECREG',
  47. 'PACO_USMO AS USRMOD',
  48. 'PACO_FEMO AS FECMOD'
  49. ])->where('PACO_NULI', '=', $line)->get()->all();
  50. foreach($panels as $key=>$panel){
  51. $relatedUsers = DB::table('S002V01TUSUA')->where([
  52. ['USUA_NULI', '=', $line],
  53. ['USUA_PCRE', '=', $panel->ID_PANEL]
  54. ])->get()->all();
  55. $panel->USUARIOS_RELACIONADOS = count($relatedUsers);
  56. $panel->ID_PANEL = $this->encryptionController->encrypt($panel->ID_PANEL);
  57. $usrReg = DB::table('S002V01TUSUA')->where([
  58. ['USUA_NULI', '=', $line],
  59. ['USUA_IDUS', '=', $panel->USRREG]
  60. ])->first();
  61. $usrRegName = $this->functionsController->joinName($usrReg->USUA_NOMB, $usrReg->USUA_APPA, $usrReg->USUA_APMA);
  62. $panel->USRREG = $usrRegName . " (" . $panel->USRREG . ")";
  63. if(!is_null($panel->USRMOD)){
  64. $usrMod = DB::table('S002V01TUSUA')->where([
  65. ['USUA_NULI', '=', $line],
  66. ['USUA_IDUS', '=', $panel->USRMOD]
  67. ])->first();
  68. $usrModName = $this->functionsController->joinName($usrMod->USUA_NOMB, $usrMod->USUA_APPA, $usrMod->USUA_APMA);
  69. $panel->USRMOD = $usrModName . " (" . $panel->USRMOD . ")";
  70. }
  71. $panels[$key] = $panel;
  72. }
  73. $now = $this->functionsController->now();
  74. $nowStr = $now->toDateTimeString();
  75. $actions = DB::getQueryLog();
  76. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  77. $idac = $this->functionsController->registerActivity(
  78. $line,
  79. 'S002V01M14PCSA',
  80. 'S002V01F04MIIG',
  81. 'S002V01P01PCIN',
  82. 'Consulta',
  83. "El usuario $name (" . $usr->USUA_IDUS . ") consultó los paneles de control registrados.",
  84. $idUser,
  85. $nowStr,
  86. );
  87. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
  88. return $this->responseController->makeResponse(false, 'EXITO.', $panels);
  89. }
  90. public function registerPanel(Request $request) {
  91. DB::enableQueryLog();
  92. $validator = Validator::make($request->all(), [
  93. 'id_user' => 'required|string',
  94. 'linea' => 'required|integer',
  95. 'panel_name' => 'required|string|max:100',
  96. 'orientation' => 'required|string|in:H,V',
  97. ]);
  98. if($validator->fails()){
  99. return $this->responseController->makeResponse(
  100. true,
  101. "Se encontraron uno o más errores.",
  102. $this->responseController->makeErrors(
  103. $validator->errors()->messages()
  104. ),
  105. 401
  106. );
  107. }
  108. $form = $request->all();
  109. $idUser = $this->encryptionController->decrypt($form['id_user']);
  110. if(!$idUser){
  111. return $this->responseController->makeResponse(true, 'El ID de usuario no fue encriptado correctamente.', [], 400);
  112. }
  113. $usr = DB::table('S002V01TUSUA')->where([
  114. ['USUA_NULI', '=', $form['linea']],
  115. ['USUA_IDUS', '=', $idUser]
  116. ])->first();
  117. if(is_null($usr)){
  118. return $this->responseController->makeResponse(true, 'El usuario que realizó la petición no existe.', [], 404);
  119. }
  120. $orientations = ['V' => 'Vertical', 'H' => 'Horizontal'];
  121. $orientation = $orientations[$form['orientation']];
  122. $now = $this->functionsController->now();
  123. $nowStr = $now->toDateTimeString();
  124. $panelID = DB::table('S002V01TPACO')->insertGetId([
  125. 'PACO_NULI' => $form['linea'],
  126. 'PACO_NPCO' => $form['panel_name'],
  127. 'PACO_INRE' => '[]',
  128. 'PACO_ORPA' => $orientation,
  129. 'PACO_USRE' => $idUser,
  130. 'PACO_FERE' => $nowStr,
  131. ]);
  132. $actions = DB::getQueryLog();
  133. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  134. $idac = $this->functionsController->registerActivity(
  135. $form['linea'],
  136. 'S002V01M14PCSA',
  137. 'S002V01F04MIIG',
  138. 'S002V01P01PCIN',
  139. 'Registro',
  140. "El usuario $name (" . $usr->USUA_IDUS . ") registró el panel de control $form[panel_name] ($panelID).",
  141. $idUser,
  142. $nowStr,
  143. );
  144. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $form['linea']);
  145. return $this->responseController->makeResponse(false, 'EXITO.');
  146. }
  147. public function updatePanel(Request $request) {
  148. DB::enableQueryLog();
  149. $validator = Validator::make($request->all(), [
  150. 'id_user' => 'required|string',
  151. 'linea' => 'required|integer',
  152. 'id_panel' => 'required|string',
  153. 'panel_name' => 'required|string|max:100',
  154. 'orientation' => 'required|string|in:H,V',
  155. ]);
  156. if($validator->fails()){
  157. return $this->responseController->makeResponse(
  158. true,
  159. "Se encontraron uno o más errores.",
  160. $this->responseController->makeErrors(
  161. $validator->errors()->messages()
  162. ),
  163. 401
  164. );
  165. }
  166. $form = $request->all();
  167. $idUser = $this->encryptionController->decrypt($form['id_user']);
  168. if(!$idUser){
  169. return $this->responseController->makeResponse(true, 'El ID de usuario no fue encriptado correctamente.', [], 400);
  170. }
  171. $usr = DB::table('S002V01TUSUA')->where([
  172. ['USUA_NULI', '=', $form['linea']],
  173. ['USUA_IDUS', '=', $idUser]
  174. ])->first();
  175. if(is_null($usr)){
  176. return $this->responseController->makeResponse(true, 'El usuario que realizó la petición no existe.', [], 404);
  177. }
  178. $idPanel = $this->encryptionController->decrypt($form['id_panel']);
  179. if(!$idPanel){
  180. return $this->responseController->makeResponse(true, 'El ID del panel que desea acualizar no fue encriptado correctamente.', [], 400);
  181. }
  182. $panel = DB::table('S002V01TPACO')->where([
  183. ['PACO_NULI', '=', $form['linea']],
  184. ['PACO_IDPC', '=', $idPanel]
  185. ])->first();
  186. if(is_null($panel)){
  187. return $this->responseController->makeResponse(true, 'El panel que desea actualizar no existe.', [], 404);
  188. }
  189. $orientations = ['V' => 'Vertical', 'H' => 'Horizontal'];
  190. $orientation = $orientations[$form['orientation']];
  191. $now = $this->functionsController->now();
  192. $nowStr = $now->toDateTimeString();
  193. DB::table('S002V01TPACO')->where([
  194. ['PACO_NULI', '=', $form['linea']],
  195. ['PACO_IDPC', '=', $idPanel]
  196. ])->update([
  197. 'PACO_NPCO' => $form['panel_name'],
  198. 'PACO_ORPA' => $orientation,
  199. 'PACO_USMO' => $idUser,
  200. 'PACO_FEMO' => $nowStr,
  201. ]);
  202. $actions = DB::getQueryLog();
  203. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  204. $idac = $this->functionsController->registerActivity(
  205. $form['linea'],
  206. 'S002V01M14PCSA',
  207. 'S002V01F04MIIG',
  208. 'S002V01P01PCIN',
  209. 'Actualización',
  210. "El usuario $name (" . $usr->USUA_IDUS . ") actualizó el panel de control #$idPanel.",
  211. $idUser,
  212. $nowStr,
  213. );
  214. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $form['linea']);
  215. return $this->responseController->makeResponse(false, 'EXITO.');
  216. }
  217. public function getCountersList($idUser, $line) {
  218. DB::enableQueryLog();
  219. $idUser = $this->encryptionController->decrypt($idUser);
  220. if(!$idUser){
  221. return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la solicitud no está encriptado correctamente', [], 400);
  222. }
  223. $usr = DB::table('S002V01TUSUA')->where([
  224. ['USUA_NULI', '=', $line],
  225. ['USUA_IDUS', '=', $idUser],
  226. ])->first();
  227. if(is_null($usr)){
  228. return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
  229. }
  230. $counters = DB::table('S002V01TCONA')->select([
  231. 'CONA_IDCO AS ID_CONTADOR',
  232. 'CONA_COEQ AS CODIGO_EQUIPAMIENTO',
  233. 'EQUI_IDEQ AS ID_EQUIPAMIENTO',
  234. 'EQUI_TIPO AS TIPO_EQUIPAMIENTO',
  235. 'EQUI_MODE AS MODELO_EQUIPAMIENTO'
  236. ])->join('S002V01TEQUI', 'EQUI_COEQ', '=', 'CONA_COEQ')->where([
  237. ['CONA_NULI', '=', $line],
  238. ])->get()->all();
  239. foreach($counters as $key=>$counter){
  240. $counterLastMeasures = DB::table('S002V01TMEDI')->select([
  241. 'MEDI_IDME AS ID_MEDIDA',
  242. 'MEDI_CORE AS CONTADOR',
  243. 'MEDI_VALO AS VALOR',
  244. 'MEDI_WSRE AS ID_SERVICIO_WEB',
  245. 'LSWE_URLX AS URL_SERVICIO_WEB',
  246. 'MEDI_HORE AS HORA_REGISTRO',
  247. ])->join('S002V01TLSWE', 'LSWE_IDSW', '=', 'MEDI_WSRE')->where([
  248. ['MEDI_NULI', '=', $line],
  249. ['MEDI_CORE', '=', $counter->ID_CONTADOR]
  250. ])->orderBy('MEDI_IDME', 'desc')
  251. ->offset(0)->limit(10)->get()->all();
  252. foreach($counterLastMeasures as $key0=>$measure){
  253. $measure->ID_MEDIDA = $this->encryptionController->encrypt($measure->ID_MEDIDA);
  254. $measure->CONTADOR = $this->encryptionController->encrypt($measure->CONTADOR);
  255. $measure->ID_SERVICIO_WEB = $this->encryptionController->encrypt($measure->ID_SERVICIO_WEB);
  256. $counterLastMeasures[$key0] = $measure;
  257. }
  258. $counter->LAST_MEASURES = $counterLastMeasures;
  259. $counter->ID_CONTADOR = $this->encryptionController->encrypt($counter->ID_CONTADOR);
  260. $counter->CODIGO_EQUIPAMIENTO = $this->encryptionController->encrypt($counter->CODIGO_EQUIPAMIENTO);
  261. $counter->ID_EQUIPAMIENTO = $this->encryptionController->encrypt($counter->ID_EQUIPAMIENTO);
  262. $counters[$key] = $counter;
  263. }
  264. $now = $this->functionsController->now();
  265. $nowStr = $now->toDateTimeString();
  266. $actions = DB::getQueryLog();
  267. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  268. $idac = $this->functionsController->registerActivity(
  269. $line,
  270. 'S002V01M14PCSA',
  271. 'S002V01F04MIIG',
  272. 'S002V01P01PCIN',
  273. 'Consulta',
  274. "El usuario $name (" . $usr->USUA_IDUS . ") consultó los indicadores disponibles.",
  275. $idUser,
  276. $nowStr,
  277. );
  278. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
  279. return $this->responseController->makeResponse(false, 'EXITO.', $counters);
  280. }
  281. public function getPanel($idPanel, $idUser, $line) {
  282. DB::enableQueryLog();
  283. $idUser = $this->encryptionController->decrypt($idUser);
  284. if(!$idUser){
  285. return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la solicitud no está encriptado correctamente', [], 400);
  286. }
  287. $usr = DB::table('S002V01TUSUA')->where([
  288. ['USUA_NULI', '=', $line],
  289. ['USUA_IDUS', '=', $idUser],
  290. ])->first();
  291. if(is_null($usr)){
  292. return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
  293. }
  294. $idPanel = $this->encryptionController->decrypt($idPanel);
  295. if(!$idPanel){
  296. return $this->responseController->makeResponse(true, 'El ID del panel solicitado no está encriptado correctamente', [], 400);
  297. }
  298. $panel = DB::table('S002V01TPACO')->select([
  299. 'PACO_IDPC AS ID_PANEL',
  300. 'PACO_NPCO AS NOMBRE_PANEL',
  301. 'PACO_INRE AS INDICADORES_RELACIONADOS',
  302. 'PACO_ORPA AS ORIENTACION',
  303. 'PACO_ESTA AS ESTADO',
  304. 'PACO_USRE AS USRREG',
  305. 'PACO_FERE AS FECREG',
  306. 'PACO_USMO AS USRMOD',
  307. 'PACO_FEMO AS FECMOD'
  308. ])->where([
  309. ['PACO_NULI', '=', $line],
  310. ['PACO_IDPC', '=', $idPanel]
  311. ])->first();
  312. $panel->ID_PANEL = $this->encryptionController->encrypt($panel->ID_PANEL);
  313. $usrReg = DB::table('S002V01TUSUA')->where([
  314. ['USUA_NULI', '=', $line],
  315. ['USUA_IDUS', '=', $panel->USRREG]
  316. ])->first();
  317. $usrRegName = $this->functionsController->joinName($usrReg->USUA_NOMB, $usrReg->USUA_APPA, $usrReg->USUA_APMA);
  318. $panel->USRREG = $usrRegName . " (" . $panel->USRREG . ")";
  319. if(!is_null($panel->USRMOD)){
  320. $usrMod = DB::table('S002V01TUSUA')->where([
  321. ['USUA_NULI', '=', $line],
  322. ['USUA_IDUS', '=', $panel->USRMOD]
  323. ])->first();
  324. $usrModName = $this->functionsController->joinName($usrMod->USUA_NOMB, $usrMod->USUA_APPA, $usrMod->USUA_APMA);
  325. $panel->USRMOD = $usrModName . " (" . $panel->USRMOD . ")";
  326. }
  327. $panelElementsArr = json_decode($panel->INDICADORES_RELACIONADOS, true);
  328. foreach($panelElementsArr as $key=>$element){
  329. $element['module'] = $this->encryptionController->encrypt($element['module']);
  330. $element['idElement'] = $this->encryptionController->encrypt($element['idElement']);
  331. $panelElementsArr[$key] = $element;
  332. }
  333. $panel->INDICADORES_RELACIONADOS = json_encode($panelElementsArr);
  334. $now = $this->functionsController->now();
  335. $nowStr = $now->toDateTimeString();
  336. $actions = DB::getQueryLog();
  337. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  338. $idac = $this->functionsController->registerActivity(
  339. $line,
  340. 'S002V01M14PCSA',
  341. 'S002V01F04MIIG',
  342. 'S002V01P01PCIN',
  343. 'Consulta',
  344. "El usuario $name (" . $usr->USUA_IDUS . ") consultó el panel de control #$idPanel.",
  345. $idUser,
  346. $nowStr,
  347. );
  348. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
  349. return $this->responseController->makeResponse(false, 'EXITO.', $panel);
  350. }
  351. public function updatePanelElements(Request $request) {
  352. DB::enableQueryLog();
  353. $validator = Validator::make($request->all(), [
  354. 'id_user' => 'required|string',
  355. 'linea' => 'required|integer',
  356. 'id_panel' => 'required|string',
  357. 'elements' => 'required|json',
  358. ]);
  359. if($validator->fails()){
  360. return $this->responseController->makeResponse(
  361. true,
  362. "Se encontraron uno o más errores.",
  363. $this->responseController->makeErrors(
  364. $validator->errors()->messages()
  365. ),
  366. 401
  367. );
  368. }
  369. $form = $request->all();
  370. $idUser = $this->encryptionController->decrypt($form['id_user']);
  371. if(!$idUser){
  372. return $this->responseController->makeResponse(true, 'El ID de usuario no fue encriptado correctamente.', [], 400);
  373. }
  374. $usr = DB::table('S002V01TUSUA')->where([
  375. ['USUA_NULI', '=', $form['linea']],
  376. ['USUA_IDUS', '=', $idUser]
  377. ])->first();
  378. if(is_null($usr)){
  379. return $this->responseController->makeResponse(true, 'El usuario que realizó la petición no existe.', [], 404);
  380. }
  381. $idPanel = $this->encryptionController->decrypt($form['id_panel']);
  382. if(!$idPanel){
  383. return $this->responseController->makeResponse(true, 'El ID del panel que desea acualizar no fue encriptado correctamente.', [], 400);
  384. }
  385. $panel = DB::table('S002V01TPACO')->where([
  386. ['PACO_NULI', '=', $form['linea']],
  387. ['PACO_IDPC', '=', $idPanel]
  388. ])->first();
  389. if(is_null($panel)){
  390. return $this->responseController->makeResponse(true, 'El panel que desea actualizar no existe.', [], 404);
  391. }
  392. $elementsArr = json_decode($form['elements'], true);
  393. foreach($elementsArr as $key=>$element){
  394. if(!isset($element['module']) || !isset($element['idElement'])){
  395. return $this->responseController->makeResponse(true, "El elemento en la posición $key tiene un formato inválido.", [], 400);
  396. }
  397. $element['module'] = $this->encryptionController->decrypt($element['module']);
  398. if(!$element['module']){
  399. return $this->responseController->makeResponse(true, "El módulo del elemento en la posición $key no fue encriptado correctamente.", [], 400);
  400. }
  401. $element['idElement'] = $this->encryptionController->decrypt($element['idElement']);
  402. if(!$element['idElement']){
  403. return $this->responseController->makeResponse(true, "El ID del elemento en la posición $key no fue encriptado correctamente.", [], 400);
  404. }
  405. $elementsArr[$key] = $element;
  406. }
  407. $elementsStr = json_encode($elementsArr);
  408. $now = $this->functionsController->now();
  409. $nowStr = $now->toDateTimeString();
  410. DB::table('S002V01TPACO')->where([
  411. ['PACO_NULI', '=', $form['linea']],
  412. ['PACO_IDPC', '=', $idPanel]
  413. ])->update([
  414. 'PACO_INRE' => $elementsStr,
  415. 'PACO_USMO' => $idUser,
  416. 'PACO_FEMO' => $nowStr,
  417. ]);
  418. $actions = DB::getQueryLog();
  419. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  420. $idac = $this->functionsController->registerActivity(
  421. $form['linea'],
  422. 'S002V01M14PCSA',
  423. 'S002V01F04MIIG',
  424. 'S002V01P01PCIN',
  425. 'Actualización',
  426. "El usuario $name (" . $usr->USUA_IDUS . ") actualizó los elementos del panel de control #$idPanel.",
  427. $idUser,
  428. $nowStr,
  429. );
  430. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $form['linea']);
  431. return $this->responseController->makeResponse(false, 'EXITO.');
  432. }
  433. public function updatePanelAssociations(Request $request) {
  434. DB::enableQueryLog();
  435. $validator = Validator::make($request->all(), [
  436. 'id_user' => 'required|string',
  437. 'linea' => 'required|integer',
  438. 'id_panel' => 'required|string',
  439. 'associated_users' => 'required|json',
  440. ]);
  441. if($validator->fails()){
  442. return $this->responseController->makeResponse(
  443. true,
  444. "Se encontraron uno o más errores.",
  445. $this->responseController->makeErrors(
  446. $validator->errors()->messages()
  447. ),
  448. 401
  449. );
  450. }
  451. $form = $request->all();
  452. $idUser = $this->encryptionController->decrypt($form['id_user']);
  453. if(!$idUser){
  454. return $this->responseController->makeResponse(true, 'El ID de usuario no fue encriptado correctamente.', [], 400);
  455. }
  456. $usr = DB::table('S002V01TUSUA')->where([
  457. ['USUA_NULI', '=', $form['linea']],
  458. ['USUA_IDUS', '=', $idUser]
  459. ])->first();
  460. if(is_null($usr)){
  461. return $this->responseController->makeResponse(true, 'El usuario que realizó la petición no existe.', [], 404);
  462. }
  463. $idPanel = $this->encryptionController->decrypt($form['id_panel']);
  464. if(!$idPanel){
  465. return $this->responseController->makeResponse(true, 'El ID del panel que desea acualizar no fue encriptado correctamente.', [], 400);
  466. }
  467. $panel = DB::table('S002V01TPACO')->where([
  468. ['PACO_NULI', '=', $form['linea']],
  469. ['PACO_IDPC', '=', $idPanel]
  470. ])->first();
  471. if(is_null($panel)){
  472. return $this->responseController->makeResponse(true, 'El panel que desea actualizar no existe.', [], 404);
  473. }
  474. $now = $this->functionsController->now();
  475. $nowStr = $now->toDateTimeString();
  476. $associatedUsersArr = json_decode($form['associated_users'], true);
  477. $associatedUsersArrDec = [];
  478. //Actualizar las asociaciones hechas en el front
  479. foreach($associatedUsersArr as $key=>$idAssociatedUser){
  480. $idAssociatedUserDec = $this->encryptionController->decrypt($idAssociatedUser);
  481. if(!$idAssociatedUserDec){
  482. return $this->responseController->makeResponse(true, "El ID del usuario en la posición $key del arreglo de usuarios asociados no fue encriptado correctamente.", [], 400);
  483. }
  484. $associatedUsersArrDec[] = $idAssociatedUserDec;
  485. $associatedUser = DB::table('S002V01TUSUA')->where([
  486. ['USUA_NULI', '=', $form['linea']],
  487. ['USUA_IDUS', '=', $idAssociatedUserDec]
  488. ])->first();
  489. if(is_null($associatedUser)){
  490. return $this->responseController->makeResponse(true, "El ID del usuario en la posición $key del arreglo de usuarios asociados no existe.", [], 404);
  491. }
  492. DB::table('S002V01TUSUA')->where([
  493. ['USUA_NULI', '=', $form['linea']],
  494. ['USUA_IDUS', '=', $idAssociatedUserDec]
  495. ])->update([
  496. 'USUA_PCRE' => $idPanel,
  497. 'USUA_USMO' => $idUser,
  498. 'USUA_FEMO' => $nowStr,
  499. ]);
  500. }
  501. //Actualizar las asociaciones de los usuarios en la tabla
  502. $users = DB::table('S002V01TUSUA')->where('USUA_NULI', '=', $form['linea'])->get()->all();
  503. foreach($users as $user){
  504. if(!in_array($user->USUA_IDUS, $associatedUsersArrDec)){
  505. if($user->USUA_PCRE == intval($idPanel)){
  506. DB::table('S002V01TUSUA')->where([
  507. ['USUA_NULI', '=', $form['linea']],
  508. ['USUA_IDUS', '=', $user->USUA_IDUS]
  509. ])->update([
  510. 'USUA_PCRE' => 0,
  511. 'USUA_USMO' => $idUser,
  512. 'USUA_FEMO' => $nowStr,
  513. ]);
  514. }
  515. }
  516. }
  517. $actions = DB::getQueryLog();
  518. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  519. $idac = $this->functionsController->registerActivity(
  520. $form['linea'],
  521. 'S002V01M14PCSA',
  522. 'S002V01F04MIIG',
  523. 'S002V01P01PCIN',
  524. 'Actualización',
  525. "El usuario $name (" . $usr->USUA_IDUS . ") actualizó los usuarios asociados al panel #$idPanel.",
  526. $idUser,
  527. $nowStr,
  528. );
  529. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $form['linea']);
  530. return $this->responseController->makeResponse(false, 'EXITO.');
  531. }
  532. public function deletePanel(Request $request) {
  533. DB::enableQueryLog();
  534. $validator = Validator::make($request->all(), [
  535. 'id_user' => 'required|string',
  536. 'linea' => 'required|integer',
  537. 'id_panel' => 'required|string',
  538. ]);
  539. if($validator->fails()){
  540. return $this->responseController->makeResponse(
  541. true,
  542. "Se encontraron uno o más errores.",
  543. $this->responseController->makeErrors(
  544. $validator->errors()->messages()
  545. ),
  546. 401
  547. );
  548. }
  549. $form = $request->all();
  550. $idUser = $this->encryptionController->decrypt($form['id_user']);
  551. if(!$idUser){
  552. return $this->responseController->makeResponse(true, 'El ID de usuario no fue encriptado correctamente.', [], 400);
  553. }
  554. $usr = DB::table('S002V01TUSUA')->where([
  555. ['USUA_NULI', '=', $form['linea']],
  556. ['USUA_IDUS', '=', $idUser]
  557. ])->first();
  558. if(is_null($usr)){
  559. return $this->responseController->makeResponse(true, 'El usuario que realizó la petición no existe.', [], 404);
  560. }
  561. $idPanel = $this->encryptionController->decrypt($form['id_panel']);
  562. if(!$idPanel){
  563. return $this->responseController->makeResponse(true, 'El ID del panel que desea acualizar no fue encriptado correctamente.', [], 400);
  564. }
  565. $panel = DB::table('S002V01TPACO')->where([
  566. ['PACO_NULI', '=', $form['linea']],
  567. ['PACO_IDPC', '=', $idPanel]
  568. ])->first();
  569. if(is_null($panel)){
  570. return $this->responseController->makeResponse(true, 'El panel que desea actualizar no existe.', [], 404);
  571. }
  572. $relatedUsers = DB::table('S002V01TUSUA')->where([
  573. ['USUA_NULI', '=', $form['linea']],
  574. ['USUA_PCRE', '=', $idPanel]
  575. ])->get()->all();
  576. if(count($relatedUsers) > 0){
  577. return $this->responseController->makeResponse(true, 'El panel de control no se peuede eliminar porque tiene usuarios relacionados.', [], 401);
  578. }
  579. $now = $this->functionsController->now();
  580. $nowStr = $now->toDateTimeString();
  581. DB::table('S002V01TPACO')->where([
  582. ['PACO_NULI', '=', $form['linea']],
  583. ['PACO_IDPC', '=', $idPanel]
  584. ])->update([
  585. 'PACO_ESTA' => 'Eliminado',
  586. 'PACO_USMO' => $idUser,
  587. 'PACO_FEMO' => $nowStr
  588. ]);
  589. $actions = DB::getQueryLog();
  590. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  591. $idac = $this->functionsController->registerActivity(
  592. $form['linea'],
  593. 'S002V01M14PCSA',
  594. 'S002V01F04MIIG',
  595. 'S002V01P01PCIN',
  596. 'Actualización',
  597. "El usuario $name (" . $usr->USUA_IDUS . ") actualizó el panel de control #$idPanel.",
  598. $idUser,
  599. $nowStr,
  600. );
  601. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $form['linea']);
  602. return $this->responseController->makeResponse(false, 'EXITO.');
  603. }
  604. public function getInfoToExcel($indicator, $idModule, $idUser, $line) {
  605. DB::enableQueryLog();
  606. $idUser = $this->encryptionController->decrypt($idUser);
  607. if(!$idUser){
  608. return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la solicitud no está encriptado correctamente', [], 400);
  609. }
  610. $usr = DB::table('S002V01TUSUA')->where([
  611. ['USUA_NULI', '=', $line],
  612. ['USUA_IDUS', '=', $idUser],
  613. ])->first();
  614. if(is_null($usr)){
  615. return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
  616. }
  617. $idModule = $this->encryptionController->decrypt($idModule);
  618. if(!$idModule){
  619. return $this->responseController->makeResponse(true, 'El ID del módulo seleccionado no está encriptado correctamente', [], 400);
  620. }
  621. $module = DB::table('S002V01TMODU')->where([
  622. ['MODU_NULI', '=', $line],
  623. ['MODU_IDMO', '=', $idModule]
  624. ])->first();
  625. if(is_null($module)){
  626. return $this->responseController->makeResponse(true, 'El módulo relacionado no está registrado', [], 404);
  627. }
  628. $indicator = $this->encryptionController->decrypt($indicator);
  629. if(!$indicator){
  630. return $this->responseController->makeResponse(true, 'El ID del indicador seleccionado no está encriptado correctamente', [], 400);
  631. }
  632. $spreadsheet = null;
  633. switch($idModule){
  634. case "S002V01M06COAC":
  635. $activator = DB::table('S002V01TACTI')->where([
  636. ['ACTI_NULI', '=', $line],
  637. ['ACTI_CORE', '=', $indicator]
  638. ])->first();
  639. $unitStr = "";
  640. if($activator->ACTI_TIAC == 'Medida' || $activator == 'Valor'){
  641. $configArr = json_decode($activator->ACTI_COAC, true);
  642. $unit = DB::table('S002V01TLIME')->where([
  643. ['LIME_NULI', '=', $line],
  644. ['LIME_IDME', '=', $configArr['unit']],
  645. ['LIME_MAGN', '=', $configArr['magnitude']],
  646. ])->first();
  647. $unitStr = $unit->LIME_ACME;
  648. }else if($activator->ACTI_TIAC == 'Sintoma'){
  649. $configArr = json_decode($activator->ACTI_COAC, true);
  650. $sign = DB::table('S002V01TLISI')->where([
  651. ['LISI_NULI', '=', $line],
  652. ['LISI_IDSI', '=', $configArr['sign']]
  653. ])->first();
  654. $unit = DB::table('S002V01TLIME')->where([
  655. ['LIME_NULI', '=', $line],
  656. ['LIME_IDME', '=', $sign->LISI_IDME],
  657. ])->first();
  658. $unitStr = $unit->LIME_ACME;
  659. }
  660. $measures = DB::table('S002V01TMEDI')->select([
  661. 'MEDI_IDME AS ID_MEDIDA',
  662. 'MEDI_CORE AS CONTADOR',
  663. 'MEDI_VALO AS VALOR',
  664. DB::raw("CONCAT(LSWE_URLX, ' (', MEDI_WSRE, ')') AS SERVICIO_WEB"),
  665. 'MEDI_HORE AS HORA_REGISTRO',
  666. ])->join('S002V01TLSWE', 'LSWE_IDSW', '=', 'MEDI_WSRE')->where([
  667. ['MEDI_NULI', '=', $line],
  668. ['MEDI_CORE', '=', $indicator]
  669. ])->orderBy('MEDI_IDME', 'desc')->get()->all();
  670. foreach($measures as $key=>$measure){
  671. $measure->VALOR = trim($measure->VALOR . " $unitStr");
  672. $measure->HORA_REGISTRO = $this->functionsController->buildProjectDate($measure->HORA_REGISTRO);
  673. $measures[$key] = $measure;
  674. }
  675. $columns = ['ID', 'CONTADOR', 'VALOR', 'WEB SERVICE', 'REGISTRO'];
  676. $spreadsheet = $this->exportExcel($measures, $columns);
  677. break;
  678. }
  679. if(is_null($spreadsheet)){
  680. return $this->responseController->makeResponse(true, 'La hoja de cálculo no pudo ser generada', [], 400);
  681. }
  682. $now = $this->functionsController->now();
  683. $nowStr = $now->toDateTimeString();
  684. $dateTimeArr = explode(" ", $nowStr);
  685. $dateArr = explode("-", $dateTimeArr[0]);
  686. $year = substr($dateArr[0], 2);
  687. $como = 'PCSA';
  688. $cldo = 'IN';
  689. $fecr = $year . $dateArr[1] . $dateArr[2];
  690. $sec = DB::table('S002V01TAFAL')->where([
  691. ['AFAL_NULI', '=', $line],
  692. ['AFAL_COMO', '=', $como],
  693. ['AFAL_CLDO', '=', $cldo],
  694. ])->orderBy('AFAL_NUSE', 'desc')->first();
  695. $nuse = "";
  696. if(is_null($sec)){
  697. $nuse = '000001';
  698. }else{
  699. $secu = "" . intval($sec->AFAL_NUSE) + 1 . "";
  700. $nuse = "";
  701. for($i = strlen($secu); $i < 6; $i++){
  702. $nuse .= "0";
  703. }
  704. $nuse = $nuse . $secu;
  705. }
  706. $timestamp = $now->timestamp;
  707. $noar = "informe_panel_control_$timestamp";
  708. $exte = "xlsx";
  709. $ver = DB::table('S002V01TAFAL')->where([
  710. ['AFAL_NULI', '=', $line],
  711. ['AFAL_COMO', '=', $como],
  712. ['AFAL_CLDO', '=', $cldo],
  713. ['AFAL_NOAR', '=', $noar],
  714. ['AFAL_EXTE', '=', $exte],
  715. ])->orderBy('AFAL_NUVE', 'desc')->first();
  716. $nuve = "";
  717. if(is_null($ver)){
  718. $nuve = "01";
  719. }else{
  720. $vers = intval($ver->AFAL_NUVE) + 1;
  721. $nuve = $vers < 10 ? "0$vers" : "$vers";
  722. }
  723. $line = $line < 10 ? "0$line" : "$line";
  724. $filePath = $this->functionsController->getBasePath() . '\public_files\\';
  725. $fileName = "$line-$como-$cldo-$fecr-$nuse=$nuve=$noar.$exte";
  726. $tempFile = $filePath . $fileName;
  727. if(file_exists($tempFile)){
  728. unlink($tempFile);
  729. }
  730. $writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
  731. $writer->save($tempFile);
  732. $ubic = Storage::putFile('files', new File($tempFile));
  733. $ubic = str_replace("/", "\\", $ubic);
  734. $ubic = $this->functionsController->getBasePath() . "\storage\app\\" . $ubic;
  735. $tama = filesize($ubic);
  736. $usac = json_encode([$idUser]);
  737. unlink($tempFile);
  738. DB::table('S002V01TAFAL')->insert([
  739. 'AFAL_NULI' => $line,
  740. 'AFAL_COMO' => $como,
  741. 'AFAL_CLDO' => $cldo,
  742. 'AFAL_FECR' => $fecr,
  743. 'AFAL_NUSE' => $nuse,
  744. 'AFAL_NUVE' => $nuve,
  745. 'AFAL_NOAR' => $noar,
  746. 'AFAL_EXTE' => $exte,
  747. 'AFAL_TAMA' => $tama,
  748. 'AFAL_UBIC' => $ubic,
  749. 'AFAL_USAC' => $usac,
  750. 'AFAL_USRE' => $idUser,
  751. 'AFAL_FERE' => $nowStr,
  752. ]);
  753. $actions = DB::getQueryLog();
  754. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  755. $idac = $this->functionsController->registerActivity(
  756. $line,
  757. 'S002V01M14PCSA',
  758. 'S002V01F03EDJC',
  759. '-',
  760. 'Registro',
  761. "El usuario $name (" . $usr->USUA_IDUS . ") registró el archivo #$fileName.",
  762. $idUser,
  763. $nowStr,
  764. );
  765. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
  766. return $this->responseController->makeResponse(false, 'EXITO.', ['report' => $this->encryptionController->encrypt($fileName)]);
  767. }
  768. private function exportExcel($data, $columns) : Spreadsheet {
  769. $spreadsheet = new Spreadsheet;
  770. $spreadsheet->getProperties()->setCreator('STC');
  771. $worksheet = $spreadsheet->getActiveSheet();
  772. $startRow = 2;
  773. $startColumn = 2;
  774. $endRow = count($data) + $startRow;
  775. $endColumn = count($columns) + $startColumn;
  776. for($row = $startRow; $row <= $endRow; $row++){
  777. $rowIndex = $row - 2;
  778. $rowInfo = $rowIndex == 0 ? $columns : (array) $data[$rowIndex - 1];
  779. $rowHeaders = array_keys($rowInfo);
  780. for($col = $startColumn; $col < $endColumn; $col++){
  781. $colIndex = $col - 2;
  782. $colName = $rowHeaders[$colIndex];
  783. $colValue = $rowInfo[$colName];
  784. $colStr = Coordinate::stringFromColumnIndex($col);
  785. if($rowIndex == 0){
  786. $worksheet->setCellValue($colStr . $row, $colValue)->getStyle($colStr . $row)->getFill()
  787. ->setFillType(Fill::FILL_SOLID)
  788. ->getStartColor()->setRGB('B7BCC4');
  789. $worksheet->getStyle($colStr . $row)->getFont()->setBold(true);
  790. $worksheet->getStyle($colStr . $row)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
  791. }else{
  792. $worksheet->setCellValue($colStr . $row, $colValue);
  793. }
  794. $worksheet->getColumnDimension($colStr)->setAutoSize(true);
  795. }
  796. }
  797. return $spreadsheet;
  798. }
  799. public function registerBroadcastList(Request $request) {
  800. DB::enableQueryLog();
  801. $validator = Validator::make($request->all(), [
  802. 'id_user' => 'required|string',
  803. 'linea' => 'required|integer',
  804. 'list_name' => 'required|string|max:75',
  805. 'related_users' => 'required|json'
  806. ]);
  807. if($validator->fails()){
  808. return $this->responseController->makeResponse(
  809. true,
  810. "Se encontraron uno o más errores.",
  811. $this->responseController->makeErrors(
  812. $validator->errors()->messages()
  813. ),
  814. 401
  815. );
  816. }
  817. $form = $request->all();
  818. $idUser = $this->encryptionController->decrypt($form['id_user']);
  819. if(!$idUser){
  820. return $this->responseController->makeResponse(true, 'El ID de usuario no fue encriptado correctamente.', [], 400);
  821. }
  822. $usr = DB::table('S002V01TUSUA')->where([
  823. ['USUA_NULI', '=', $form['linea']],
  824. ['USUA_IDUS', '=', $idUser]
  825. ])->first();
  826. if(is_null($usr)){
  827. return $this->responseController->makeResponse(true, 'El usuario que realizó la petición no existe.', [], 404);
  828. }
  829. $relatedUsers = json_decode($form['related_users'], true);
  830. if(count($relatedUsers) < 2){
  831. return $this->responseController->makeResponse(true, 'La lista de difusión debe tener al menos 2 usuarios relacionados.', [], 400);
  832. }
  833. foreach($relatedUsers as $key=>$user){
  834. $user = $this->encryptionController->decrypt($user);
  835. if(!$user){
  836. return $this->responseController->makeResponse(true, "El ID del usuario en la posición $key del arreglo de integrantes no fue encriptado correctamente.", [], 400);
  837. }
  838. $userInfo = DB::table('S002V01TUSUA')->where([
  839. ['USUA_NULI', '=', $form['linea']],
  840. ['USUA_IDUS', '=', $user]
  841. ])->first();
  842. if(is_null($userInfo)){
  843. return $this->responseController->makeResponse(true, "El usuario en la posición $key no existe.", [], 404);
  844. }else if($userInfo->USUA_ESTA == 'Eliminado'){
  845. return $this->responseController->makeResponse(true, "El usuario en la posición $key está eliminado.", [], 404);
  846. }
  847. $relatedUsers[$key] = $user;
  848. }
  849. $relatedUsersStr = json_encode($relatedUsers);
  850. $now = $this->functionsController->now();
  851. $nowStr = $now->toDateTimeString();
  852. $idList = DB::table('S002V01TLIDI')->insertGetId([
  853. 'LIDI_NULI' => $form['linea'],
  854. 'LIDI_NLDI' => $form['list_name'],
  855. 'LIDI_INLI' => $relatedUsersStr,
  856. 'LIDI_USRE' => $idUser,
  857. 'LIDI_FERE' => $nowStr
  858. ]);
  859. $actions = DB::getQueryLog();
  860. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  861. $idac = $this->functionsController->registerActivity(
  862. $form['linea'],
  863. 'S002V01M14PCSA',
  864. 'S002V01F01CLDI',
  865. 'S002V01P01ASPE',
  866. 'Registro',
  867. "El usuario $name (" . $usr->USUA_IDUS . ") registró la lista de difusión #$idList.",
  868. $idUser,
  869. $nowStr,
  870. );
  871. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $form['linea']);
  872. return $this->responseController->makeResponse(false, 'EXITO.');
  873. }
  874. public function getBroadcastLists($idUser, $line) {
  875. DB::enableQueryLog();
  876. $idUser = $this->encryptionController->decrypt($idUser);
  877. if(!$idUser){
  878. return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la solicitud no está encriptado correctamente', [], 400);
  879. }
  880. $usr = DB::table('S002V01TUSUA')->where([
  881. ['USUA_NULI', '=', $line],
  882. ['USUA_IDUS', '=', $idUser],
  883. ])->first();
  884. if(is_null($usr)){
  885. return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
  886. }
  887. $lists = DB::table('S002V01TLIDI')->select([
  888. 'LIDI_IDLD AS ID_LISTA',
  889. 'LIDI_NLDI AS NOMBRE_LISTA',
  890. 'LIDI_ESTA AS ESTADO',
  891. 'LIDI_USRE AS USRREG',
  892. 'LIDI_FERE AS FECREG',
  893. 'LIDI_USMO AS USRMOD',
  894. 'LIDI_FEMO AS FECMOD'
  895. ])->where('LIDI_NULI', '=', $line)->get()->all();
  896. foreach($lists as $key=>$list){
  897. $list->ID_LISTA = $this->encryptionController->encrypt($list->ID_LISTA);
  898. $usrReg = DB::table('S002V01TUSUA')->where([
  899. ['USUA_NULI', '=', $line],
  900. ['USUA_IDUS', '=', $list->USRREG]
  901. ])->first();
  902. $usrRegName = $this->functionsController->joinName($usrReg->USUA_NOMB, $usrReg->USUA_APPA, $usrReg->USUA_APMA);
  903. $list->USRREG = $usrRegName . ' (' . $list->USRREG . ')';
  904. if(!is_null($list->USRMOD)){
  905. $usrMod = DB::table('S002V01TUSUA')->where([
  906. ['USUA_NULI', '=', $line],
  907. ['USUA_IDUS', '=', $list->USRMOD]
  908. ])->first();
  909. $usrModName = $this->functionsController->joinName($usrMod->USUA_NOMB, $usrMod->USUA_APPA, $usrMod->USUA_APMA);
  910. $list->USRMOD = $usrModName . ' (' . $list->USRMOD . ')';
  911. }
  912. $lists[$key] = $list;
  913. }
  914. $now = $this->functionsController->now();
  915. $nowStr = $now->toDateTimeString();
  916. $actions = DB::getQueryLog();
  917. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  918. $idac = $this->functionsController->registerActivity(
  919. $line,
  920. 'S002V01M14PCSA',
  921. 'S002V01F01CLDI',
  922. 'S002V01P01ASPE',
  923. 'Consulta',
  924. "El usuario $name (" . $usr->USUA_IDUS . ") consultó las listas de difusión registradas.",
  925. $idUser,
  926. $nowStr,
  927. );
  928. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
  929. return $this->responseController->makeResponse(false, 'EXITO.', $lists);
  930. }
  931. public function getBroadcastList($idList, $idUser, $line) {
  932. DB::enableQueryLog();
  933. $idUser = $this->encryptionController->decrypt($idUser);
  934. if(!$idUser){
  935. return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la solicitud no está encriptado correctamente', [], 400);
  936. }
  937. $usr = DB::table('S002V01TUSUA')->where([
  938. ['USUA_NULI', '=', $line],
  939. ['USUA_IDUS', '=', $idUser],
  940. ])->first();
  941. if(is_null($usr)){
  942. return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
  943. }
  944. $idList = $this->encryptionController->decrypt($idList);
  945. if(!$idList){
  946. return $this->responseController->makeResponse(true, 'El ID de la lista solicitada no está encriptado correctamente', [], 400);
  947. }
  948. $broadcastList = DB::table('S002V01TLIDI')->select([
  949. 'LIDI_IDLD AS ID_LISTA',
  950. 'LIDI_NLDI AS NOMBRE_LISTA',
  951. 'LIDI_INLI AS INTEGRANTES',
  952. 'LIDI_ESTA AS ESTADO',
  953. 'LIDI_USRE AS USRREG',
  954. 'LIDI_FERE AS FECREG',
  955. 'LIDI_USMO AS USRMOD',
  956. 'LIDI_FEMO AS FECMOD'
  957. ])->where([
  958. ['LIDI_NULI', '=', $line],
  959. ['LIDI_IDLD', '=', $idList]
  960. ])->first();
  961. if(is_null($broadcastList)){
  962. return $this->responseController->makeResponse(true, 'La lista solicitada no existe.', [], 404);
  963. }else if($broadcastList->ESTADO == 'Eliminado'){
  964. return $this->responseController->makeResponse(true, 'La lista solicitada está eliminada.', [], 404);
  965. }
  966. $broadcastList->ID_LISTA = $this->encryptionController->encrypt($broadcastList->ID_LISTA);
  967. $usersList = json_decode($broadcastList->INTEGRANTES, true);
  968. $usersListFn = [];
  969. foreach($usersList as $key=>$userID){
  970. $user = DB::table('S002V01TUSUA')
  971. ->join('S002V01TPERF', 'PERF_IDPE', '=', 'USUA_PERF')->where([
  972. ['USUA_NULI', '=', $line],
  973. ['USUA_IDUS', '=', $userID]
  974. ])->first();
  975. $usersListFn[] = [
  976. 'ID_USUARIO' => $this->encryptionController->encrypt($user->USUA_IDUS),
  977. 'NOMBRE_USUARIO' => $this->functionsController->joinName($user->USUA_NOMB, $user->USUA_APPA, $user->USUA_APMA),
  978. 'ID_PERFIL' => $this->encryptionController->encrypt($user->PERF_IDPE),
  979. 'NOMBRE_PERFIL' => $user->PERF_NOPE
  980. ];
  981. }
  982. $broadcastList->INTEGRANTES = json_encode($usersListFn);
  983. $usrReg = DB::table('S002V01TUSUA')->where([
  984. ['USUA_NULI', '=', $line],
  985. ['USUA_IDUS', '=', $broadcastList->USRREG]
  986. ])->first();
  987. $usrRegName = $this->functionsController->joinName($usrReg->USUA_NOMB, $usrReg->USUA_APPA, $usrReg->USUA_APMA);
  988. $broadcastList->USRREG = $usrRegName . ' (' . $broadcastList->USRREG . ')';
  989. if(!is_null($broadcastList->USRMOD)){
  990. $usrMod = DB::table('S002V01TUSUA')->where([
  991. ['USUA_NULI', '=', $line],
  992. ['USUA_IDUS', '=', $broadcastList->USRMOD]
  993. ])->first();
  994. $usrModName = $this->functionsController->joinName($usrMod->USUA_NOMB, $usrMod->USUA_APPA, $usrMod->USUA_APMA);
  995. $broadcastList->USRMOD = $usrModName . ' (' . $broadcastList->USRMOD . ')';
  996. }
  997. $now = $this->functionsController->now();
  998. $nowStr = $now->toDateTimeString();
  999. $actions = DB::getQueryLog();
  1000. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  1001. $idac = $this->functionsController->registerActivity(
  1002. $line,
  1003. 'S002V01M14PCSA',
  1004. 'S002V01F01CLDI',
  1005. 'S002V01P01ASPE',
  1006. 'Consulta',
  1007. "El usuario $name (" . $usr->USUA_IDUS . ") consultó la lista de difusión #$idList.",
  1008. $idUser,
  1009. $nowStr,
  1010. );
  1011. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
  1012. return $this->responseController->makeResponse(false, 'EXITO.', $broadcastList);
  1013. }
  1014. public function updateBroadcastList(Request $request) {
  1015. DB::enableQueryLog();
  1016. $validator = Validator::make($request->all(), [
  1017. 'id_user' => 'required|string',
  1018. 'linea' => 'required|integer',
  1019. 'list_name' => 'required|string|max:75',
  1020. 'related_users' => 'required|json',
  1021. 'id_list' => 'required|string',
  1022. ]);
  1023. if($validator->fails()){
  1024. return $this->responseController->makeResponse(
  1025. true,
  1026. "Se encontraron uno o más errores.",
  1027. $this->responseController->makeErrors(
  1028. $validator->errors()->messages()
  1029. ),
  1030. 401
  1031. );
  1032. }
  1033. $form = $request->all();
  1034. $idUser = $this->encryptionController->decrypt($form['id_user']);
  1035. if(!$idUser){
  1036. return $this->responseController->makeResponse(true, 'El ID de usuario no fue encriptado correctamente.', [], 400);
  1037. }
  1038. $usr = DB::table('S002V01TUSUA')->where([
  1039. ['USUA_NULI', '=', $form['linea']],
  1040. ['USUA_IDUS', '=', $idUser]
  1041. ])->first();
  1042. if(is_null($usr)){
  1043. return $this->responseController->makeResponse(true, 'El usuario que realizó la petición no existe.', [], 404);
  1044. }
  1045. $idList = $this->encryptionController->decrypt($form['id_list']);
  1046. if(!$idList){
  1047. return $this->responseController->makeResponse(true, 'El ID de la lista solicitada no está encriptado correctamente', [], 400);
  1048. }
  1049. $list = DB::table('S002V01TLIDI')->where([
  1050. ['LIDI_NULI', '=', $form['linea']],
  1051. ['LIDI_IDLD', '=', $idList]
  1052. ])->first();
  1053. if(is_null($list)){
  1054. return $this->responseController->makeResponse(true, 'La lista de difusión solicitada no existe.', [], 404);
  1055. }
  1056. $relatedUsers = json_decode($form['related_users'], true);
  1057. if(count($relatedUsers) < 2){
  1058. return $this->responseController->makeResponse(true, 'La lista de difusión debe tener al menos 2 usuarios relacionados.', [], 400);
  1059. }
  1060. foreach($relatedUsers as $key=>$user){
  1061. $user = $this->encryptionController->decrypt($user);
  1062. if(!$user){
  1063. return $this->responseController->makeResponse(true, "El ID del usuario en la posición $key del arreglo de integrantes no fue encriptado correctamente.", [], 400);
  1064. }
  1065. $userInfo = DB::table('S002V01TUSUA')->where([
  1066. ['USUA_NULI', '=', $form['linea']],
  1067. ['USUA_IDUS', '=', $user]
  1068. ])->first();
  1069. if(is_null($userInfo)){
  1070. return $this->responseController->makeResponse(true, "El usuario en la posición $key no existe.", [], 404);
  1071. }else if($userInfo->USUA_ESTA == 'Eliminado'){
  1072. return $this->responseController->makeResponse(true, "El usuario en la posición $key está eliminado.", [], 404);
  1073. }
  1074. $relatedUsers[$key] = $user;
  1075. }
  1076. $relatedUsersStr = json_encode($relatedUsers);
  1077. $now = $this->functionsController->now();
  1078. $nowStr = $now->toDateTimeString();
  1079. DB::table('S002V01TLIDI')->where([
  1080. ['LIDI_NULI', '=', $form['linea']],
  1081. ['LIDI_IDLD', '=', $idList]
  1082. ])->update([
  1083. 'LIDI_NLDI' => $form['list_name'],
  1084. 'LIDI_INLI' => $relatedUsersStr,
  1085. 'LIDI_USMO' => $idUser,
  1086. 'LIDI_FEMO' => $nowStr
  1087. ]);
  1088. $actions = DB::getQueryLog();
  1089. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  1090. $idac = $this->functionsController->registerActivity(
  1091. $form['linea'],
  1092. 'S002V01M14PCSA',
  1093. 'S002V01F01CLDI',
  1094. 'S002V01P01ASPE',
  1095. 'Actualización',
  1096. "El usuario $name (" . $usr->USUA_IDUS . ") actualizó la lista de difusión #$idList.",
  1097. $idUser,
  1098. $nowStr,
  1099. );
  1100. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $form['linea']);
  1101. return $this->responseController->makeResponse(false, 'EXITO.');
  1102. }
  1103. public function deleteBroadcastList(Request $request) {
  1104. DB::enableQueryLog();
  1105. $validator = Validator::make($request->all(), [
  1106. 'id_user' => 'required|string',
  1107. 'linea' => 'required|integer',
  1108. 'id_list' => 'required|string',
  1109. ]);
  1110. if($validator->fails()){
  1111. return $this->responseController->makeResponse(
  1112. true,
  1113. "Se encontraron uno o más errores.",
  1114. $this->responseController->makeErrors(
  1115. $validator->errors()->messages()
  1116. ),
  1117. 401
  1118. );
  1119. }
  1120. $form = $request->all();
  1121. $idUser = $this->encryptionController->decrypt($form['id_user']);
  1122. if(!$idUser){
  1123. return $this->responseController->makeResponse(true, 'El ID de usuario no fue encriptado correctamente.', [], 400);
  1124. }
  1125. $usr = DB::table('S002V01TUSUA')->where([
  1126. ['USUA_NULI', '=', $form['linea']],
  1127. ['USUA_IDUS', '=', $idUser]
  1128. ])->first();
  1129. if(is_null($usr)){
  1130. return $this->responseController->makeResponse(true, 'El usuario que realizó la petición no existe.', [], 404);
  1131. }
  1132. $idList = $this->encryptionController->decrypt($form['id_list']);
  1133. if(!$idList){
  1134. return $this->responseController->makeResponse(true, 'El ID de la lista solicitada no está encriptado correctamente', [], 400);
  1135. }
  1136. $list = DB::table('S002V01TLIDI')->where([
  1137. ['LIDI_NULI', '=', $form['linea']],
  1138. ['LIDI_IDLD', '=', $idList]
  1139. ])->first();
  1140. if(is_null($list)){
  1141. return $this->responseController->makeResponse(true, 'La lista de difusión solicitada no existe.', [], 404);
  1142. }
  1143. $now = $this->functionsController->now();
  1144. $nowStr = $now->toDateTimeString();
  1145. DB::table('S002V01TLIDI')->where([
  1146. ['LIDI_NULI', '=', $form['linea']],
  1147. ['LIDI_IDLD', '=', $idList]
  1148. ])->update([
  1149. 'LIDI_ESTA' => 'Eliminado',
  1150. 'LIDI_USMO' => $idUser,
  1151. 'LIDI_FEMO' => $nowStr
  1152. ]);
  1153. $actions = DB::getQueryLog();
  1154. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  1155. $idac = $this->functionsController->registerActivity(
  1156. $form['linea'],
  1157. 'S002V01M14PCSA',
  1158. 'S002V01F01CLDI',
  1159. 'S002V01P01ASPE',
  1160. 'Eliminación',
  1161. "El usuario $name (" . $usr->USUA_IDUS . ") eliminó la lista de difusión #$idList.",
  1162. $idUser,
  1163. $nowStr,
  1164. );
  1165. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $form['linea']);
  1166. return $this->responseController->makeResponse(false, 'EXITO.');
  1167. }
  1168. public function saveProfileExportPermissions(Request $request) {
  1169. DB::enableQueryLog();
  1170. $validator = Validator::make($request->all(), [
  1171. 'id_user' => 'required|string',
  1172. 'linea' => 'required|integer',
  1173. 'permissions' => 'required|string',
  1174. 'id_profile' => 'required|string',
  1175. ]);
  1176. if($validator->fails()){
  1177. return $this->responseController->makeResponse(
  1178. true,
  1179. "Se encontraron uno o más errores.",
  1180. $this->responseController->makeErrors(
  1181. $validator->errors()->messages()
  1182. ),
  1183. 401
  1184. );
  1185. }
  1186. $form = $request->all();
  1187. $idUser = $this->encryptionController->decrypt($form['id_user']);
  1188. if(!$idUser){
  1189. return $this->responseController->makeResponse(true, 'El ID de usuario no fue encriptado correctamente.', [], 400);
  1190. }
  1191. $usr = DB::table('S002V01TUSUA')->where([
  1192. ['USUA_NULI', '=', $form['linea']],
  1193. ['USUA_IDUS', '=', $idUser]
  1194. ])->first();
  1195. if(is_null($usr)){
  1196. return $this->responseController->makeResponse(true, 'El usuario que realizó la petición no existe.', [], 404);
  1197. }
  1198. $idProfile = $this->encryptionController->decrypt($form['id_profile']);
  1199. if(!$idProfile){
  1200. return $this->responseController->makeResponse(true, "El ID del perfil no está encriptado correctamente.", [], 401);
  1201. }
  1202. $profile = DB::table('S002V01TPERF')->where([
  1203. ['PERF_IDPE', '=', $idProfile],
  1204. ['PERF_NULI', '=', $form['linea']],
  1205. ])->first();
  1206. if(is_null($profile)){
  1207. return $this->responseController->makeResponse(true, "El perfil consultado no existe.", [], 404);
  1208. }
  1209. $permissions = $this->encryptionController->decrypt($form['permissions']);
  1210. if(!$permissions){
  1211. return $this->responseController->makeResponse(true, "La cadena de permisos no está encriptada correctamente.", [], 400);
  1212. }
  1213. $permissionsArr = json_decode($permissions, true);
  1214. if(count($permissionsArr) == 0){
  1215. return $this->responseController->makeResponse(true, "El arreglo de permisos está vacío.", [], 400);
  1216. }
  1217. $registeredPermissions = DB::table('S002V01TPEHC')->where([
  1218. ['PEHC_NULI', '=', $form['linea']],
  1219. ['PEHC_PERE', '=', $idProfile]
  1220. ])->first();
  1221. $now = $this->functionsController->now();
  1222. $nowStr = $now->toDateTimeString();
  1223. if(is_null($registeredPermissions)){
  1224. DB::table('S002V01TPEHC')->insert([
  1225. 'PEHC_NULI' => $form['linea'],
  1226. 'PEHC_PERE' => $idProfile,
  1227. 'PEHC_COPE' => $permissions,
  1228. 'PEHC_USRE' => $idUser,
  1229. 'PEHC_FERE' => $nowStr
  1230. ]);
  1231. }else{
  1232. DB::table('S002V01TPEHC')->where([
  1233. ['PEHC_NULI', '=', $form['linea']],
  1234. ['PEHC_PERE', '=', $idProfile]
  1235. ])->update([
  1236. 'PEHC_COPE' => $permissions,
  1237. 'PEHC_USMO' => $idUser,
  1238. 'PEHC_FEMO' => $nowStr
  1239. ]);
  1240. }
  1241. $actions = DB::getQueryLog();
  1242. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  1243. $idac = $this->functionsController->registerActivity(
  1244. $form['linea'],
  1245. 'S002V01M14PCSA',
  1246. 'S002V01F02EDES',
  1247. 'S002V01P01ELDA',
  1248. 'Actualización',
  1249. "El usuario $name (" . $usr->USUA_IDUS . ") actualizó los permisos de exportación de datos del perfil #$idProfile.",
  1250. $idUser,
  1251. $nowStr,
  1252. );
  1253. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $form['linea']);
  1254. return $this->responseController->makeResponse(false, 'EXITO.');
  1255. }
  1256. public function getProfileExportPermissions($idProfile, $idUser, $line) {
  1257. DB::enableQueryLog();
  1258. $idUser = $this->encryptionController->decrypt($idUser);
  1259. if(!$idUser){
  1260. return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la solicitud no está encriptado correctamente', [], 400);
  1261. }
  1262. $usr = DB::table('S002V01TUSUA')->where([
  1263. ['USUA_NULI', '=', $line],
  1264. ['USUA_IDUS', '=', $idUser],
  1265. ])->first();
  1266. if(is_null($usr)){
  1267. return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
  1268. }
  1269. $idProfile = $this->encryptionController->decrypt($idProfile);
  1270. if(!$idProfile){
  1271. return $this->responseController->makeResponse(true, 'El ID del perfil solicitado no está encriptado correctamente', [], 400);
  1272. }
  1273. $profile = DB::table('S002V01TPERF')->where([
  1274. ['PERF_NULI', '=', $line],
  1275. ['PERF_IDPE', '=', $idProfile]
  1276. ])->first();
  1277. if(is_null($profile)){
  1278. return $this->responseController->makeResponse(true, 'El perfil consultado no está registrado', [], 404);
  1279. }
  1280. $registeredPermissions = DB::table('S002V01TPEHC')->where([
  1281. ['PEHC_NULI', '=', $line],
  1282. ['PEHC_PERE', '=', $idProfile]
  1283. ])->first();
  1284. $permissionsArrFn = [];
  1285. if(!is_null($registeredPermissions)){
  1286. $permissionsArr = json_decode($registeredPermissions->PEHC_COPE, true);
  1287. foreach($permissionsArr as $key=>$val){
  1288. $permissionsArrFn[] = [
  1289. 'id' => $this->encryptionController->encrypt($key),
  1290. 'value' => $val,
  1291. ];
  1292. }
  1293. }
  1294. $now = $this->functionsController->now();
  1295. $nowStr = $now->toDateTimeString();
  1296. $actions = DB::getQueryLog();
  1297. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  1298. $idac = $this->functionsController->registerActivity(
  1299. $line,
  1300. 'S002V01M14PCSA',
  1301. 'S002V01F02EDES',
  1302. 'S002V01P01ELDA',
  1303. 'Consulta',
  1304. "El usuario $name (" . $usr->USUA_IDUS . ") consultó los permisos de exportación de datos del perfil #$idProfile.",
  1305. $idUser,
  1306. $nowStr,
  1307. );
  1308. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
  1309. return $this->responseController->makeResponse(false, 'EXITO.', $permissionsArrFn);
  1310. }
  1311. public function getExportableSpreadsheets($idUser, $line) {
  1312. DB::enableQueryLog();
  1313. $idUser = $this->encryptionController->decrypt($idUser);
  1314. if(!$idUser){
  1315. return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la solicitud no está encriptado correctamente', [], 400);
  1316. }
  1317. $usr = DB::table('S002V01TUSUA')->where([
  1318. ['USUA_NULI', '=', $line],
  1319. ['USUA_IDUS', '=', $idUser],
  1320. ])->first();
  1321. if(is_null($usr)){
  1322. return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
  1323. }
  1324. $exportableSpreadsheetsExists = file_exists($this->functionsController->getBasePath() . '\storage\app\public\global_resources\spreadsheets.sam');
  1325. if(!$exportableSpreadsheetsExists){
  1326. return $this->responseController->makeResponse(true, 'El archivo de hojas de excel exportables no fue encontrado.', [], 500);
  1327. }
  1328. $exportableSpreadsheetsStr = file_get_contents($this->functionsController->getBasePath() . '\storage\app\public\global_resources\spreadsheets.sam');
  1329. $exportableSpreadsheetsDec = $this->encryptionController->decrypt($exportableSpreadsheetsStr);
  1330. $exportableSpreadsheetsArr = json_decode($exportableSpreadsheetsDec, true);
  1331. $now = $this->functionsController->now();
  1332. $nowStr = $now->toDateTimeString();
  1333. $actions = DB::getQueryLog();
  1334. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  1335. $idac = $this->functionsController->registerActivity(
  1336. $line,
  1337. 'S002V01M14PCSA',
  1338. 'S002V01F02EDES',
  1339. 'S002V01P01ELDA',
  1340. 'Registro',
  1341. "El usuario $name (" . $usr->USUA_IDUS . ") consultó los datos exportables.",
  1342. $idUser,
  1343. $nowStr
  1344. );
  1345. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
  1346. return $this->responseController->makeResponse(false, 'EXITO.', $exportableSpreadsheetsArr);
  1347. }
  1348. public function exportSpreadsheet($idModule, $idSpreadsheet, $startDate, $endDate, $idUser, $line) {
  1349. DB::enableQueryLog();
  1350. $idUser = $this->encryptionController->decrypt($idUser);
  1351. if(!$idUser){
  1352. return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la solicitud no está encriptado correctamente', [], 400);
  1353. }
  1354. $usr = DB::table('S002V01TUSUA')->where([
  1355. ['USUA_NULI', '=', $line],
  1356. ['USUA_IDUS', '=', $idUser],
  1357. ])->first();
  1358. if(is_null($usr)){
  1359. return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
  1360. }
  1361. $idModule = $this->encryptionController->decrypt($idModule);
  1362. if(!$idModule){
  1363. return $this->responseController->makeResponse(true, 'El ID del módulo solicitado no está encriptado correctamente', [], 400);
  1364. }
  1365. $module = DB::table('S002V01TMODU')->where([
  1366. ['MODU_IDMO', '=', $idModule],
  1367. ['MODU_NULI', '=', $line]
  1368. ])->first();
  1369. if(is_null($module)){
  1370. return $this->responseController->makeResponse(true, 'El módulo relacionado no está registrado', [], 404);
  1371. }
  1372. $exportableSpreadsheetsExists = file_exists($this->filesUbic . 'spreadsheets.sam');
  1373. if(!$exportableSpreadsheetsExists){
  1374. return $this->responseController->makeResponse(true, 'El archivo de hojas de excel exportables no fue encontrado.', [], 500);
  1375. }
  1376. $exportableSpreadsheetsStr = file_get_contents($this->filesUbic . 'spreadsheets.sam');
  1377. $exportableSpreadsheetsDec = $this->encryptionController->decrypt($exportableSpreadsheetsStr);
  1378. $exportableSpreadsheetsArr = json_decode($exportableSpreadsheetsDec, true);
  1379. $exportableSpreadsheetsArrDec = [];
  1380. foreach($exportableSpreadsheetsArr as $v0){
  1381. $v0['module'] = $this->encryptionController->decrypt($v0['module']);
  1382. $spreadsheets = [];
  1383. foreach($v0['spreadsheets'] as $spreadsheet){
  1384. $spreadsheet['id'] = $this->encryptionController->decrypt($spreadsheet['id']);
  1385. $spreadsheet['name'] = $this->encryptionController->decrypt($spreadsheet['name']);
  1386. $spreadsheets[] = $spreadsheet;
  1387. }
  1388. $v0['spreadsheets'] = $spreadsheets;
  1389. $exportableSpreadsheetsArrDec[] = $v0;
  1390. }
  1391. $moduleSpreadsheetsFilt = array_filter($exportableSpreadsheetsArrDec, function($v, $k) use($idModule) {
  1392. return $v['module'] == $idModule;
  1393. }, ARRAY_FILTER_USE_BOTH);
  1394. if(count($moduleSpreadsheetsFilt) == 0){
  1395. return $this->responseController->makeResponse(true, 'No fue posible obtener la configuración de hojas de cálculo exportables relacionadas al módulo seleccionado.', [], 500);
  1396. }
  1397. $moduleSpreadsheets = end($moduleSpreadsheetsFilt);
  1398. $idSpreadsheet = $this->encryptionController->decrypt($idSpreadsheet);
  1399. if(!$idSpreadsheet){
  1400. return $this->responseController->makeResponse(true, 'El ID del reporte que desea exportar no está encriptado correctamente', [], 400);
  1401. }
  1402. $spreadsheetFilt = array_filter($moduleSpreadsheets['spreadsheets'], function($v, $k) use($idSpreadsheet) {
  1403. return $v['id'] == $idSpreadsheet;
  1404. }, ARRAY_FILTER_USE_BOTH);
  1405. if(count($spreadsheetFilt) == 0){
  1406. return $this->responseController->makeResponse(true, 'No fue posible obtener la información de la hoja de cálculo que desea exportar.', [], 500);
  1407. }
  1408. $spreadsheetObj = end($spreadsheetFilt);
  1409. $startDateStr = null;
  1410. if($startDate != '-'){
  1411. try{
  1412. $startDateObj = new Carbon("$startDate 00:00:00");
  1413. $startDateStr = $startDateObj->toDateTimeString();
  1414. }catch(InvalidFormatException $e){
  1415. return $this->responseController->makeResponse(true, 'La fecha de inicio tiene un formato inválido.', [], 400);
  1416. }
  1417. }
  1418. $endDateStr = null;
  1419. if($endDate != '-'){
  1420. try{
  1421. $endDateObj = new Carbon("$endDate 23:59:59");
  1422. $endDateStr = $endDateObj->toDateTimeString();
  1423. }catch(InvalidFormatException $e){
  1424. return $this->responseController->makeResponse(true, 'La fecha de término tiene un formato inválido.', [], 400);
  1425. }
  1426. }
  1427. $columns = [];
  1428. $data = [];
  1429. var_dump($idSpreadsheet);
  1430. switch($idSpreadsheet){
  1431. case 'S002V01R01BIAC':
  1432. $qry = DB::table('S002V01TBIAC')->select([
  1433. "BIAC_IDCO AS ID_CONEXION",
  1434. DB::raw("CONCAT(USUA_NOMB, ' ', USUA_APPA, IF(ISNULL(USUA_APMA), '', ' '), IF(ISNULL(USUA_APMA), '', USUA_APMA), ' (', BIAC_IDUS, ')') AS USUARIO"),
  1435. "BIAC_FECO AS FECHA_CONEXION",
  1436. DB::raw("IF(ISNULL(BIAC_IPV6), BIAC_IPV4, BIAC_IPV6) AS DIRECCION_IP"),
  1437. "BIAC_LATI AS LATITUD",
  1438. "BIAC_LONG AS LONGITUD",
  1439. "BIAC_PREC AS PRECISION",
  1440. "BIAC_CIUD AS CIUDAD",
  1441. "BIAC_ESTA AS ESTADO",
  1442. "BIAC_PAIS AS PAIS",
  1443. "BIAC_DISP AS DISPOSITIVO",
  1444. "BIAC_SIOP AS SISTEMA_OPERATIVO",
  1445. "BIAC_VSOP AS VERSION_SISTEMA_OPERATIVO",
  1446. "BIAC_NAVE AS NAVEGADOR"
  1447. ])->join('S002V01TUSUA', 'USUA_IDUS', '=', 'BIAC_IDUS')
  1448. ->orderBy('BIAC_IDCO', 'desc')->where('BIAC_NULI', '=', $line);
  1449. if($startDateStr != null){
  1450. $qry->where('BIAC_FECO', '>=', $startDateStr);
  1451. }
  1452. if($endDateStr != null){
  1453. $qry->where('BIAC_FECO', '<=', $endDateStr);
  1454. }
  1455. $data = $qry->get()->all();
  1456. $columns = [
  1457. 'ID',
  1458. 'USUARIO',
  1459. 'FECHA DE CONEXIÓN',
  1460. 'DIRECCIÓN IP',
  1461. 'LATITUD',
  1462. 'LONGITUD',
  1463. 'PRECISIÓN',
  1464. 'CIUDAD',
  1465. 'ESTADO',
  1466. 'PAIS',
  1467. 'DISPOSITIVO',
  1468. 'SISTEMA OPERATIVO',
  1469. 'VERSIÓN DEL SISTAMA OPERATIVO',
  1470. 'NAVEGADOR'
  1471. ];
  1472. break;
  1473. case 'S002V01R02REAC':
  1474. $qry = DB::table('S002V01TACCI')->select([
  1475. "ACCI_IDAC AS ID_ACCION",
  1476. DB::raw("IF(ISNULL(MODU_NOMO), '-', CONCAT(MODU_NOMO, ' (', MODU_IDMO, ')')) AS MODULO"),
  1477. DB::raw("IF(ISNULL(SUBM_NOMB), '-', CONCAT(SUBM_NOMB, ' (', SUBM_IDSM, ')')) AS SUBMODULO"),
  1478. DB::raw("IF(ISNULL(FUNC_NOMB), '-', CONCAT(FUNC_NOMB, ' (', FUNC_IDFU, ')')) AS FUNCION"),
  1479. DB::raw("IF(ISNULL(PANT_NOMB), '-', CONCAT(PANT_NOMB, ' (', PANT_IDPA, ')')) AS PANTALLA"),
  1480. "ACCI_TIAC AS TIPO_ACCION",
  1481. "ACCI_DESC AS DESCRIPCION",
  1482. DB::raw("CONCAT(USUA_NOMB, ' ', USUA_APPA, IF(ISNULL(USUA_APMA), '', ' '), IF(ISNULL(USUA_APMA), '', USUA_APMA), ' (', ACCI_IDUS, ')') AS USUARIO"),
  1483. "ACCI_FEAC AS FECHA_ACCION",
  1484. ])->leftJoin('S002V01TMODU', 'MODU_IDMO', '=', 'ACCI_IDMO')
  1485. ->leftJoin('S002V01TSUBM', function(JoinClause $join) {
  1486. $join->on('SUBM_IDSM', '=', 'ACCI_IDSM')
  1487. ->on('SUBM_IDMO', '=', 'ACCI_IDMO');
  1488. })->leftJoin('S002V01TFUNC', function(JoinClause $join) {
  1489. $join->on('FUNC_IDFU', '=', 'ACCI_IDFU')
  1490. ->on('FUNC_IDSM', '=', 'ACCI_IDSM')
  1491. ->on('FUNC_IDMO', '=', 'ACCI_IDMO');
  1492. })->leftJoin('S002V01TPANT', function(JoinClause $join) {
  1493. $join->on('PANT_IDPA', '=', 'ACCI_IDPA')
  1494. ->on('PANT_IDFU', '=', 'ACCI_IDFU');
  1495. })->join('S002V01TUSUA', 'USUA_IDUS', '=', 'ACCI_IDUS')
  1496. ->orderBy('ACCI_IDAC', 'desc')->where('ACCI_NULI', '=', $line);
  1497. if($startDateStr != null){
  1498. $qry->where('ACCI_FEAC', '>=', $startDateStr);
  1499. }
  1500. if($endDateStr != null){
  1501. $qry->where('ACCI_FEAC', '<=', $endDateStr);
  1502. }
  1503. $data = $qry->get()->all();
  1504. $columns = [
  1505. 'ID',
  1506. 'MÓDULO',
  1507. 'SUBMÓDULO',
  1508. 'FUNCIÓN',
  1509. 'PANTALLA',
  1510. 'TIPO DE ACCIÓN',
  1511. 'DESCRIPCIÓN',
  1512. 'USUARIO',
  1513. 'FECHA'
  1514. ];
  1515. break;
  1516. case 'S002V01R03HIAV':
  1517. $qry = DB::table('S002V01TAVIS')->select([
  1518. 'AVIS_IDAV AS ID_AVISO',
  1519. 'AVIS_TIAV AS TITULO_AVISO',
  1520. 'AVIS_COAV AS CONTENIDO',
  1521. 'AVIS_ALAV AS AUDIENCIA',
  1522. 'AVIS_ADJU AS ADJUNTOS',
  1523. 'AVIS_CADU AS CADUCIDAD',
  1524. 'AVIS_ESTA AS ESTADO',
  1525. 'AVIS_FERE AS FECHA_REGISTRO',
  1526. DB::raw("CONCAT(USRE.USUA_NOMB, ' ', USRE.USUA_APPA, IF(ISNULL(USRE.USUA_APMA), '', ' '), IF(ISNULL(USRE.USUA_APMA), '', USRE.USUA_APMA), ' (', AVIS_USRE, ')') AS USUARIO_REG"),
  1527. 'AVIS_FEMO AS FECHA_MODIFICACION',
  1528. DB::raw("IF(ISNULL(USMO.USUA_NOMB), '-', CONCAT(USMO.USUA_NOMB, ' ', USMO.USUA_APPA, IF(ISNULL(USMO.USUA_APMA), '', ' '), IF(ISNULL(USMO.USUA_APMA), '', USMO.USUA_APMA), ' (', AVIS_USMO, ')')) AS USUARIO_MOD")
  1529. ])->join(DB::raw('S002V01TUSUA USRE'), 'USRE.USUA_IDUS', '=', 'AVIS_USRE')
  1530. ->leftJoin(DB::raw('S002V01TUSUA USMO'), 'USMO.USUA_IDUS', '=', 'AVIS_USMO')
  1531. ->orderBy('AVIS_IDAV', 'desc')->where('AVIS_NULI', '=', $line);
  1532. if($startDateStr != null){
  1533. $qry->where('AVIS_FERE', '>=', $startDateStr);
  1534. }
  1535. if($endDateStr != null){
  1536. $qry->where('AVIS_FERE', '<=', $endDateStr);
  1537. }
  1538. $data = $qry->get()->all();
  1539. $columns = [
  1540. 'ID',
  1541. 'TÍTULO DEL AVISO',
  1542. 'CONTENIDO HTML',
  1543. 'AUDIENCIA',
  1544. 'ARCHIVOS ADJUNTOS',
  1545. 'FECHA DE CADUCIDAD',
  1546. 'ESTADO DEL AVISO',
  1547. 'FECHA DE REGISTRO',
  1548. 'USUARIO QUE REGISTRÓ',
  1549. 'FECHA DE LA ÚLTIMA ACTUALIZACIÓN',
  1550. 'USUARIO QUE MODIFICÓ'
  1551. ];
  1552. break;
  1553. case 'S002V01R04HIMA':
  1554. $qry = DB::table('S002V01THMSA')->select([
  1555. 'HMSA_IDAC AS ID_ACTIVACION',
  1556. DB::raw("CONCAT(USAC.USUA_NOMB, ' ', USAC.USUA_APPA, IF(ISNULL(USAC.USUA_APMA), '', ' '), IF(ISNULL(USAC.USUA_APMA), '', USAC.USUA_APMA), ' (', HMSA_USAC, ')') AS USUARIO_ACT"),
  1557. 'HMSA_FEAC AS FECHA_ACTIVACION',
  1558. 'HMSA_MOAC AS MOTIVOS_ACTIVACION',
  1559. DB::raw("IF(ISNULL(USDE.USUA_NOMB), '-', CONCAT(USDE.USUA_NOMB, ' ', USDE.USUA_APPA, IF(ISNULL(USDE.USUA_APMA), '', ' '), IF(ISNULL(USDE.USUA_APMA), '', USDE.USUA_APMA), ' (', HMSA_USDE, ')')) AS USUARIO_DES"),
  1560. 'HMSA_FEDE AS FECHA_DESACTIVACION',
  1561. 'HMSA_JUDE AS JUSTIFICACION_DESACTIVACION',
  1562. ])->join(DB::raw('S002V01TUSUA USAC'), 'USAC.USUA_IDUS', '=', 'HMSA_USAC')
  1563. ->leftJoin(DB::raw('S002V01TUSUA USDE'), 'USDE.USUA_IDUS', '=', 'HMSA_USDE')
  1564. ->orderBy('HMSA_IDAC', 'desc')->where('HMSA_NULI', '=', $line);
  1565. if($startDateStr != null){
  1566. $qry->where('HMSA_FEAC', '>=', $startDateStr);
  1567. }
  1568. if($endDateStr != null){
  1569. $qry->where('HMSA_FEAC', '<=', $endDateStr);
  1570. }
  1571. $data = $qry->get()->all();
  1572. $columns = [
  1573. 'ID',
  1574. 'USUARIO QUE ACTIVO',
  1575. 'FECHA DE ACTIVACIÓN',
  1576. 'MOTIVOS DE LA ACTIVACIÓN',
  1577. 'USUARIO QUE DESACTIVÓ',
  1578. 'FECHA DE LA DESACTIVACIÓN',
  1579. 'JUSTIFICACIÓN PARA LA DESACTIVACIÓN'
  1580. ];
  1581. break;
  1582. case 'S002V01R05ASSW':
  1583. $qry = DB::table('S002V01TTASW')->select([
  1584. DB::raw("CONCAT(LISC_NOSC, ' (', LISC_IDSC, ')') AS SCADA"),
  1585. 'LISC_ESTA AS ESTADO_SCADA',
  1586. DB::raw("IF(ISNULL(LSWE_URLX), 'No asignado', CONCAT(LSWE_URLX, ' - ', LSWE_DESC, ' (', LSWE_IDSW, ')')) AS SERVICIO_WEB"),
  1587. 'LSWE_ESTA AS ESTADO_SERVICIO_WEB',
  1588. 'TASW_ESTA AS ESTADO_RELACION',
  1589. DB::raw("CONCAT(USRE.USUA_NOMB, ' ', USRE.USUA_APPA, IF(ISNULL(USRE.USUA_APMA), '', ' '), IF(ISNULL(USRE.USUA_APMA), '', USRE.USUA_APMA), ' (', TASW_USRE, ')') AS USUARIO_REG"),
  1590. 'TASW_FERE AS FECHA_REGISTRO',
  1591. DB::raw("IF(ISNULL(USMO.USUA_NOMB), '-', CONCAT(USMO.USUA_NOMB, ' ', USMO.USUA_APPA, IF(ISNULL(USMO.USUA_APMA), '', ' '), IF(ISNULL(USMO.USUA_APMA), '', USMO.USUA_APMA), ' (', TASW_USMO, ')')) AS USUARIO_MOD"),
  1592. 'TASW_FEMO AS FECHA_MODIFICACION'
  1593. ])->join('S002V01TLISC', 'LISC_IDSC', '=', 'TASW_IDSC')
  1594. ->leftJoin('S002V01TLSWE', 'LSWE_IDSW', '=', 'TASW_IDSW')
  1595. ->join(DB::raw('S002V01TUSUA USRE'), 'USRE.USUA_IDUS', '=', 'TASW_USRE')
  1596. ->leftJoin(DB::raw('S002V01TUSUA USMO'), 'USMO.USUA_IDUS', '=', 'TASW_USMO')
  1597. ->where('TASW_NULI', '=', $line);
  1598. if($startDateStr != null){
  1599. $qry->where('TASW_FERE', '>=', $startDateStr);
  1600. }
  1601. if($endDateStr != null){
  1602. $qry->where('TASW_FERE', '<=', $endDateStr);
  1603. }
  1604. $data = $qry->get()->all();
  1605. $columns = [
  1606. 'SCADA RELACIONADO',
  1607. 'ESTADO DEL SCADA',
  1608. 'SERVICIO WEB RELACIONADO',
  1609. 'ESTADO DEL SERVICIO WEB',
  1610. 'ESTADO DE LA RELACIÓN',
  1611. 'USUARIO QUE REGISTRÓ',
  1612. 'FECHA DEL REGISTRO',
  1613. 'USUARIO QUE REALIZÓ LA ÚLTIMA MODIFICACIÓN',
  1614. 'FECHA DE MODIFICACIÓN'
  1615. ];
  1616. break;
  1617. case 'S002V01R06RSCE':
  1618. $qry = DB::table('S002V01TSCEL')->select([
  1619. 'SCEL_USUA AS USUARIO_ENVIO',
  1620. 'SCEL_HOST AS HOST',
  1621. 'SCEL_PRIO AS PRIORIDAD',
  1622. 'SCEL_SESM AS SMTP',
  1623. 'SCEL_PUER AS PUERTO',
  1624. 'SCEL_CONT AS CONTRASEÑA',
  1625. 'SCEL_TIES AS TIEMPO_ESPERA',
  1626. 'SCEL_AUSM AS AUTORIZACION',
  1627. 'SCEL_ADPO AS MODULOS',
  1628. DB::raw("CONCAT(USAL.USUA_NOMB, ' ', USAL.USUA_APPA, IF(ISNULL(USAL.USUA_APMA), '', ' '), IF(ISNULL(USAL.USUA_APMA), '', USAL.USUA_APMA), ' (', SCEL_USAL, ')') AS USUARIO_REG"),
  1629. 'SCEL_FEAL AS FECHA_REGISTRO',
  1630. DB::raw("IF(ISNULL(USMO.USUA_NOMB), '-', CONCAT(USMO.USUA_NOMB, ' ', USMO.USUA_APPA, IF(ISNULL(USMO.USUA_APMA), '', ' '), IF(ISNULL(USMO.USUA_APMA), '', USMO.USUA_APMA), ' (', SCEL_USMO, ')')) AS USUARIO_MOD"),
  1631. 'SCEL_FEMO AS FECHA_MODIFICACION',
  1632. 'SCEL_ESCO AS ESTADO',
  1633. ])->join(DB::raw('S002V01TUSUA USAL'), 'USAL.USUA_IDUS', '=', 'SCEL_USAL')
  1634. ->leftJoin(DB::raw('S002V01TUSUA USMO'), 'USMO.USUA_IDUS', '=', 'SCEL_USMO');
  1635. if($startDateStr != null){
  1636. $qry->where('SCEL_FEAL', '>=', $startDateStr);
  1637. }
  1638. if($endDateStr != null){
  1639. $qry->where('SCEL_FEAL', '<=', $endDateStr);
  1640. }
  1641. $data = $qry->get()->all();
  1642. $columns = [
  1643. 'USUARIO CONFIGURADO PARA EL ENVÍO',
  1644. 'HOST DEL SERVIDOR',
  1645. 'PRIORIDAD DE USO',
  1646. 'SEGURIDAD SMTP',
  1647. 'PUERTO DE ENVÍO',
  1648. 'CONTRASEÑA DE AUTENTICACIÓN',
  1649. 'TIEMPO DE ESPERA PARA EL ENVÍO',
  1650. 'AUTORIZACIÓN SMTP',
  1651. 'MÓDULOS RELACIONADOS',
  1652. 'USUARIO QUE REGISTRÓ',
  1653. 'FECHA DEL REGISTRO',
  1654. 'USUARIO QUE REALIZÓ LA ÚLTIMA MODIFICACIÓN',
  1655. 'FECHA DE MODIFICACIÓN',
  1656. 'ESTADO DEL SERVIDOR'
  1657. ];
  1658. break;
  1659. case 'S002V01R07RPCE':
  1660. $qry = DB::table('S002V01TPCEL')->select([
  1661. 'PCEL_IDPL AS ID_PLANTILLA',
  1662. DB::raw("CONCAT(MODU_NOMO, ' (', PCEL_IDMO, ')') AS MODULO"),
  1663. DB::raw("IF(ISNULL(SUBM_NOMB), '-', CONCAT(SUBM_NOMB, ' (', SUBM_IDSM, ')')) AS SUBMODULO"),
  1664. DB::raw("CONCAT(FUNC_NOMB, ' (', FUNC_IDFU, ')') AS FUNCION"),
  1665. DB::raw("CONCAT(PANT_NOMB, ' (', PANT_IDPA, ')') AS PANTALLA"),
  1666. 'PCEL_ASCO AS ASUNTO',
  1667. 'PCEL_CUCO AS CUERPO',
  1668. 'PCEL_ESTA AS ESTADO',
  1669. DB::raw("CONCAT(USRE.USUA_NOMB, ' ', USRE.USUA_APPA, IF(ISNULL(USRE.USUA_APMA), '', ' '), IF(ISNULL(USRE.USUA_APMA), '', USRE.USUA_APMA), ' (', PCEL_USRE, ')') AS USUARIO_REG"),
  1670. 'PCEL_FERE AS FECHA_REGISTRO',
  1671. DB::raw("IF(ISNULL(USMO.USUA_NOMB), '-', CONCAT(USMO.USUA_NOMB, ' ', USMO.USUA_APPA, IF(ISNULL(USMO.USUA_APMA), '', ' '), IF(ISNULL(USMO.USUA_APMA), '', USMO.USUA_APMA), ' (', PCEL_USMO, ')')) AS USUARIO_MOD"),
  1672. 'PCEL_FEMO AS FECHA_MODIFICACION'
  1673. ])->join('S002V01TMODU', 'MODU_IDMO', '=', 'PCEL_IDMO')
  1674. ->leftJoin('S002V01TSUBM', function(JoinClause $join) {
  1675. $join->on('SUBM_IDSM', '=', 'PCEL_IDSM')
  1676. ->on('SUBM_IDMO', '=', 'PCEL_IDMO');
  1677. })->leftJoin('S002V01TFUNC', function(JoinClause $join) {
  1678. $join->on('FUNC_IDFU', '=', 'PCEL_IDFU')
  1679. ->on('FUNC_IDMO', '=', 'PCEL_IDMO');
  1680. })->leftJoin('S002V01TPANT', function(JoinClause $join) {
  1681. $join->on('PANT_IDPA', '=', 'PCEL_IDPA')
  1682. ->on('PANT_IDFU', '=', 'PCEL_IDFU');
  1683. })->join(DB::raw('S002V01TUSUA USRE'), 'USRE.USUA_IDUS', '=', 'PCEL_USRE')
  1684. ->leftJoin(DB::raw('S002V01TUSUA USMO'), 'USMO.USUA_IDUS', '=', 'PCEL_USMO')
  1685. ->orderBy('PCEL_IDPL', 'desc')->where('PCEL_NULI', '=', $line);
  1686. if($startDateStr != null){
  1687. $qry->where('PCEL_FERE', '>=', $startDateStr);
  1688. }
  1689. if($endDateStr != null){
  1690. $qry->where('PCEL_FERE', '<=', $endDateStr);
  1691. }
  1692. $data = $qry->get()->all();
  1693. $columns = [
  1694. 'ID',
  1695. 'MÓDULO',
  1696. 'SUBMÓDULO',
  1697. 'FUNCIÓN',
  1698. 'PANTALLA',
  1699. 'ASUNTO DEL CORREO',
  1700. 'CUERPO DEL CORREO HTML',
  1701. 'ESTADO DE LA PLANTILLA',
  1702. 'USUARIO QUE REGISTRÓ',
  1703. 'FECHA DEL REGISTRO',
  1704. 'USUARIO QUE REALIZÓ LA ÚLTIMA MODIFICACIÓN',
  1705. 'FECHA DE MODIFICACIÓN',
  1706. ];
  1707. break;
  1708. case 'S002V01R09HICA':
  1709. $qry = DB::table('S002V01TCATA')->select([
  1710. 'CATA_IDCA AS ID_CATALOGO',
  1711. 'CATA_TICA AS TIPO_CATALOGO',
  1712. 'CATA_VERS AS VERSION',
  1713. 'CATA_ARRE AS DOCUMENTO',
  1714. 'CATA_ESTA AS ESTADO',
  1715. DB::raw("CONCAT(USRE.USUA_NOMB, ' ', USRE.USUA_APPA, IF(ISNULL(USRE.USUA_APMA), '', ' '), IF(ISNULL(USRE.USUA_APMA), '', USRE.USUA_APMA), ' (', CATA_USRE, ')') AS USUARIO_REG"),
  1716. 'CATA_FERE AS FECHA_REGISTRO'
  1717. ])->join(DB::raw('S002V01TUSUA USRE'), 'USRE.USUA_IDUS', '=', 'CATA_USRE')
  1718. ->orderBy('CATA_IDCA', 'desc')->where('CATA_NULI', '=', $line);
  1719. if($startDateStr != null){
  1720. $qry->where('CATA_FERE', '>=', $startDateStr);
  1721. }
  1722. if($endDateStr != null){
  1723. $qry->where('CATA_FERE', '<=', $endDateStr);
  1724. }
  1725. $data = $qry->get()->all();
  1726. $columns = [
  1727. 'ID',
  1728. 'TIPO DE CATÁLOGO',
  1729. 'VERSIÓN DEL CATÁLOGO',
  1730. 'DOCUMENTO RELACIONADO AL CATÁLOGO',
  1731. 'ESTADO',
  1732. 'USUARIO QUE REGISTRÓ',
  1733. 'FECHA DEL REGISTRO',
  1734. ];
  1735. break;
  1736. case 'S002V01R11HIUS':
  1737. $qry = DB::table(DB::raw('S002V01TUSUA USUA'))->select([
  1738. 'USUA.USUA_IDUS AS ID_USUARIO',
  1739. DB::raw("CONCAT(USUA.USUA_NOMB, ' ', USUA.USUA_APPA, IF(ISNULL(USUA.USUA_APMA), '', ' '), IF(ISNULL(USUA.USUA_APMA), '', USUA.USUA_APMA)) AS NOMBRE_USUARIO"),
  1740. DB::raw("CONCAT(PERF_NOPE, ' (', USUA.USUA_PERF, ')') AS PERFIL"),
  1741. DB::raw("IF(ISNULL(USUA.USUA_ULAC), '-', CONCAT(ACCI_DESC, ' (', USUA.USUA_ULAC, ')')) AS ULTIMA_ACCION"),
  1742. DB::raw("IF(ISNULL(USUA.USUA_ULCO), '-', CONCAT(BIAC_FECO, ' (', USUA.USUA_ULCO, ')')) AS ULTIMA_CONEXION"),
  1743. 'USUA.USUA_COEL AS CORREO',
  1744. 'USUA.USUA_FADO AS DOBLE',
  1745. DB::raw("IF(ISNULL(PACO_NPCO), 'Ninguno', CONCAT(PACO_NPCO, ' (', USUA.USUA_PCRE, ')')) AS PANEL"),
  1746. 'USUA.USUA_ESTA AS ESTADO',
  1747. DB::raw("IF(ISNULL(USUA.USUA_USRE), '-', CONCAT(USRE.USUA_NOMB, ' ', USRE.USUA_APPA, IF(ISNULL(USRE.USUA_APMA), '', CONCAT(' ', USRE.USUA_APMA)), ' (', USUA.USUA_USRE, ')')) AS USRREG"),
  1748. DB::raw("IF(ISNULL(USUA.USUA_FERE), '-', USUA.USUA_FERE) AS FECREG"),
  1749. DB::raw("IF(ISNULL(USUA.USUA_USMO), '-', CONCAT(USMO.USUA_NOMB, ' ', USMO.USUA_APPA, IF(ISNULL(USMO.USUA_APMA), '', CONCAT(' ', USMO.USUA_APMA)), ' (', USUA.USUA_USMO, ')')) AS USRMOD"),
  1750. DB::raw("IF(ISNULL(USUA.USUA_FEMO), '-', USUA.USUA_FEMO) AS FECMOD"),
  1751. ])->join('S002V01TPERF', 'PERF_IDPE', '=', 'USUA.USUA_PERF')
  1752. ->leftJoin('S002V01TACCI', 'ACCI_IDAC', '=', 'USUA.USUA_ULAC')
  1753. ->leftJoin('S002V01TBIAC', 'BIAC_IDCO', '=', 'USUA.USUA_ULCO')
  1754. ->leftJoin('S002V01TPACO', 'PACO_IDPC', '=', 'USUA.USUA_PCRE')
  1755. ->leftJoin(DB::raw('S002V01TUSUA USRE'), 'USRE.USUA_IDUS', '=', 'USUA.USUA_USRE')
  1756. ->leftJoin(DB::raw('S002V01TUSUA USMO'), 'USMO.USUA_IDUS', '=', 'USUA.USUA_USMO')
  1757. ->orderBy('USUA.USUA_IDUS', 'desc')->where('USUA.USUA_NULI', '=', $line);
  1758. if($startDateStr != null){
  1759. $qry->where('USUA.USUA_FERE', '>=', $startDateStr);
  1760. }
  1761. if($endDateStr != null){
  1762. $qry->where('USUA.USUA_FERE', '<=', $endDateStr);
  1763. }
  1764. $data = $qry->get()->all();
  1765. $columns = [
  1766. 'ID',
  1767. 'NOMBRE DEL USUARIO',
  1768. 'PERFIL RELACIONADO',
  1769. 'ÚLTIMA ACCIÓN REALIZADA',
  1770. 'ÚLTIMA CONEXIÓN AL SISTEMA',
  1771. 'CORREO ELECTRÓNICO',
  1772. 'USO DE AUTENTICACIÓN DOBLE',
  1773. 'PANEL DE CONTROL ASIGNADO',
  1774. 'ESTADO DEL USUARIO',
  1775. 'USUARIO QUE REGISTRÓ',
  1776. 'FECHA DEL REGISTRO',
  1777. 'USUARIO QUE REALIZÓ LA ÚLTIMA MODIFICACIÓN',
  1778. 'FECHA DE MODIFICACIÓN',
  1779. ];
  1780. break;
  1781. case 'S002V01R12HIPE':
  1782. $qry = DB::table('S002V01TPERF')->select([
  1783. 'PERF_IDPE AS ID_PERFIL',
  1784. 'PERF_NOPE AS NOMBRE',
  1785. 'PERF_ESTA AS ESTADO',
  1786. 'PERF_PERM AS PERMISOS',
  1787. DB::raw("CONCAT(USRE.USUA_NOMB, ' ', USRE.USUA_APPA, IF(ISNULL(USRE.USUA_APMA), '', ' '), IF(ISNULL(USRE.USUA_APMA), '', USRE.USUA_APMA), ' (', PERF_USRE, ')') AS USUARIO_REG"),
  1788. 'PERF_FERE AS FECHA_REGISTRO',
  1789. DB::raw("IF(ISNULL(USMO.USUA_NOMB), '-', CONCAT(USMO.USUA_NOMB, ' ', USMO.USUA_APPA, IF(ISNULL(USMO.USUA_APMA), '', ' '), IF(ISNULL(USMO.USUA_APMA), '', USMO.USUA_APMA), ' (', PERF_USMO, ')')) AS USUARIO_MOD"),
  1790. 'PERF_FEMO AS FECHA_MODIFICACION'
  1791. ])->join(DB::raw('S002V01TUSUA USRE'), 'USRE.USUA_IDUS', '=', 'PERF_USRE')
  1792. ->leftJoin(DB::raw('S002V01TUSUA USMO'), 'USMO.USUA_IDUS', '=', 'PERF_USMO')
  1793. ->orderBy('PERF_IDPE', 'desc')->where('PERF_NULI', '=', $line);
  1794. if($startDateStr != null){
  1795. $qry->where('PERF_FERE', '>=', $startDateStr);
  1796. }
  1797. if($endDateStr != null){
  1798. $qry->where('PERF_FERE', '<=', $endDateStr);
  1799. }
  1800. $data = $qry->get()->all();
  1801. $columns = [
  1802. 'ID',
  1803. 'NOMBRE DEL PERFIL',
  1804. 'ESTADO',
  1805. 'PERMISOS',
  1806. 'USUARIO QUE REGISTRÓ',
  1807. 'FECHA DEL REGISTRO',
  1808. 'USUARIO QUE REALIZÓ LA ÚLTIMA MODIFICACIÓN',
  1809. 'FECHA DE MODIFICACIÓN',
  1810. ];
  1811. break;
  1812. case 'S002V01R13HIDO':
  1813. $qry = DB::table('S002V01TAFAL')->select([
  1814. DB::raw("CONCAT(
  1815. IF(AFAL_NULI < 10, CONCAT('0', AFAL_NULI), AFAL_NULI),
  1816. '-', AFAL_COMO, '-', AFAL_CLDO, '-', AFAL_FECR, '-',
  1817. CONCAT(
  1818. IF(CHAR_LENGTH(AFAL_NUSE) = 1, CONCAT('00000', AFAL_NUSE), ''),
  1819. IF(CHAR_LENGTH(AFAL_NUSE) = 2, CONCAT('0000', AFAL_NUSE), ''),
  1820. IF(CHAR_LENGTH(AFAL_NUSE) = 3, CONCAT('000', AFAL_NUSE), ''),
  1821. IF(CHAR_LENGTH(AFAL_NUSE) = 4, CONCAT('00', AFAL_NUSE), ''),
  1822. IF(CHAR_LENGTH(AFAL_NUSE) = 5, CONCAT('0', AFAL_NUSE), ''),
  1823. IF(CHAR_LENGTH(AFAL_NUSE) = 6, AFAL_NUSE, '')
  1824. )
  1825. ) AS CODIGO"),
  1826. DB::raw("CONCAT(
  1827. IF(CHAR_LENGTH(AFAL_NUVE) = 1, CONCAT('0', AFAL_NUVE), ''),
  1828. IF(CHAR_LENGTH(AFAL_NUVE) = 2, AFAL_NUVE, '')
  1829. ) AS VERSION"),
  1830. DB::raw("CONCAT(AFAL_NOAR, '.', AFAL_EXTE) AS NOMBRE"),
  1831. 'AFAL_TAMA AS TAMANIO',
  1832. 'AFAL_ESTA AS ESTADO',
  1833. 'AFAL_USAC AS ACCESO',
  1834. DB::raw("CONCAT(USRE.USUA_NOMB, ' ', USRE.USUA_APPA, IF(ISNULL(USRE.USUA_APMA), '', ' '), IF(ISNULL(USRE.USUA_APMA), '', USRE.USUA_APMA), ' (', AFAL_USRE, ')') AS USUARIO_REG"),
  1835. 'AFAL_FERE AS FECHA_REGISTRO',
  1836. DB::raw("IF(ISNULL(USMO.USUA_NOMB), '-', CONCAT(USMO.USUA_NOMB, ' ', USMO.USUA_APPA, IF(ISNULL(USMO.USUA_APMA), '', ' '), IF(ISNULL(USMO.USUA_APMA), '', USMO.USUA_APMA), ' (', AFAL_USMO, ')')) AS USUARIO_MOD"),
  1837. 'AFAL_FEMO AS FECHA_MODIFICACION'
  1838. ])->join(DB::raw('S002V01TUSUA USRE'), 'USRE.USUA_IDUS', '=', 'AFAL_USRE')
  1839. ->leftJoin(DB::raw('S002V01TUSUA USMO'), 'USMO.USUA_IDUS', '=', 'AFAL_USMO')
  1840. ->orderBy('AFAL_FERE', 'desc')->where('AFAL_NULI', '=', $line);
  1841. if($startDateStr != null){
  1842. $qry->where('AFAL_FERE', '>=', $startDateStr);
  1843. }
  1844. if($endDateStr != null){
  1845. $qry->where('AFAL_FERE', '<=', $endDateStr);
  1846. }
  1847. $data = $qry->get()->all();
  1848. $columns = [
  1849. 'CÓDIGO',
  1850. 'VERSIÓN',
  1851. 'NOMBRE DEL DOCUMENTO',
  1852. 'TAMAÑO EN BYTES',
  1853. 'ESTADO',
  1854. 'USUARIOS CON ACCESO',
  1855. 'USUARIO QUE REGISTRÓ',
  1856. 'FECHA DEL REGISTRO',
  1857. 'USUARIO QUE REALIZÓ LA ÚLTIMA MODIFICACIÓN',
  1858. 'FECHA DE MODIFICACIÓN',
  1859. ];
  1860. break;
  1861. case 'S002V01R18HICO':
  1862. $qry = DB::table('S002V01TCONA')->select([
  1863. 'CONA_IDCO AS ID_CONTADOR',
  1864. 'CONA_INLE AS INTERVALO',
  1865. 'CONA_UTIL AS UNIDAD_INTERVALO',
  1866. 'CONA_TOIN AS TOLERANCIA',
  1867. 'CONA_UTTI AS UNIDAD_TOLERANCIA',
  1868. DB::raw("CONCAT(LISC_NOSC, ' (', CONA_IDSC, ')') AS SCADA"),
  1869. DB::raw("CONCAT(EQUI_COEQ, ' - ', EQUI_TIPO, ' - ', EQUI_MODE, ' (', EQUI_IDEQ, ')') AS EQUIPAMIENTO"),
  1870. 'CONA_COVI AS VINCULOS',
  1871. 'CONA_ESTA AS ESTADO',
  1872. DB::raw("CONCAT(USRE.USUA_NOMB, ' ', USRE.USUA_APPA, IF(ISNULL(USRE.USUA_APMA), '', ' '), IF(ISNULL(USRE.USUA_APMA), '', USRE.USUA_APMA), ' (', CONA_USRE, ')') AS USUARIO_REG"),
  1873. 'CONA_FERE AS FECHA_REGISTRO',
  1874. DB::raw("IF(ISNULL(USMO.USUA_NOMB), '-', CONCAT(USMO.USUA_NOMB, ' ', USMO.USUA_APPA, IF(ISNULL(USMO.USUA_APMA), '', ' '), IF(ISNULL(USMO.USUA_APMA), '', USMO.USUA_APMA), ' (', CONA_USMO, ')')) AS USUARIO_MOD"),
  1875. 'CONA_FEMO AS FECHA_MODIFICACION'
  1876. ])->join('S002V01TLISC', 'LISC_IDSC', '=', 'CONA_IDSC')
  1877. ->join('S002V01TEQUI', 'EQUI_COEQ', '=', 'CONA_COEQ')
  1878. ->join(DB::raw('S002V01TUSUA USRE'), 'USRE.USUA_IDUS', '=', 'CONA_USRE')
  1879. ->leftJoin(DB::raw('S002V01TUSUA USMO'), 'USMO.USUA_IDUS', '=', 'CONA_USMO')
  1880. ->orderBy('CONA_IDCO', 'desc')->where('CONA_NULI', '=', $line);
  1881. if($startDateStr != null){
  1882. $qry->where('CONA_FERE', '>=', $startDateStr);
  1883. }
  1884. if($endDateStr != null){
  1885. $qry->where('CONA_FERE', '<=', $endDateStr);
  1886. }
  1887. $data = $qry->get()->all();
  1888. $columns = [
  1889. 'ID',
  1890. 'INTERVALO DE REGISTRO DE MEDIDAS',
  1891. 'UNIDAD DE MEDIDA DEL INTERVALO',
  1892. 'TOLERANCIA DEL INTERVALO PARA EL REGISTRO',
  1893. 'UNIDAD DE MEDIDA PARA LA TOLERANCIA',
  1894. 'SCADA RELACIONADO',
  1895. 'EQUIPAMIENTO MEDIDO',
  1896. 'CONTADORES VINCULADOS',
  1897. 'ESTADO DEL CONTADOR',
  1898. 'USUARIO QUE REGISTRÓ',
  1899. 'FECHA DEL REGISTRO',
  1900. 'USUARIO QUE REALIZÓ LA ÚLTIMA MODIFICACIÓN',
  1901. 'FECHA DE MODIFICACIÓN',
  1902. ];
  1903. break;
  1904. case 'S002V01R19HIAC':
  1905. $qry = DB::table('S002V01TACTI')->select([
  1906. 'ACTI_IDAC AS ID_ACTIVADOR',
  1907. 'ACTI_PRIO AS PRIORIDAD',
  1908. 'ACTI_TIAC AS TIPO_ACTIVADOR',
  1909. 'ACTI_COAC AS CONFIGURACION',
  1910. 'ACTI_CORE AS CONTADOR',
  1911. 'ACTI_ESTA AS ESTADO',
  1912. DB::raw("CONCAT(USRE.USUA_NOMB, ' ', USRE.USUA_APPA, IF(ISNULL(USRE.USUA_APMA), '', ' '), IF(ISNULL(USRE.USUA_APMA), '', USRE.USUA_APMA), ' (', ACTI_USRE, ')') AS USUARIO_REG"),
  1913. 'ACTI_FERE AS FECHA_REGISTRO',
  1914. DB::raw("IF(ISNULL(USMO.USUA_NOMB), '-', CONCAT(USMO.USUA_NOMB, ' ', USMO.USUA_APPA, IF(ISNULL(USMO.USUA_APMA), '', ' '), IF(ISNULL(USMO.USUA_APMA), '', USMO.USUA_APMA), ' (', ACTI_USMO, ')')) AS USUARIO_MOD"),
  1915. 'ACTI_FEMO AS FECHA_MODIFICACION'
  1916. ])->join(DB::raw('S002V01TUSUA USRE'), 'USRE.USUA_IDUS', '=', 'ACTI_USRE')
  1917. ->leftJoin(DB::raw('S002V01TUSUA USMO'), 'USMO.USUA_IDUS', '=', 'ACTI_USMO')
  1918. ->orderBy('ACTI_IDAC', 'desc')->where('ACTI_NULI', '=', $line);
  1919. if($startDateStr != null){
  1920. $qry->where('ACTI_FERE', '>=', $startDateStr);
  1921. }
  1922. if($endDateStr != null){
  1923. $qry->where('ACTI_FERE', '<=', $endDateStr);
  1924. }
  1925. $data = $qry->get()->all();
  1926. $columns = [
  1927. 'ID',
  1928. 'PRIORIDAD',
  1929. 'TIPO DE ACTIVADOR',
  1930. 'CONFIGURACIÓN DE ACTIVACIÓN',
  1931. 'CONTADOR RELACIONADO',
  1932. 'ESTADO DEL ACTIVADOR',
  1933. 'USUARIO QUE REGISTRÓ',
  1934. 'FECHA DEL REGISTRO',
  1935. 'USUARIO QUE REALIZÓ LA ÚLTIMA MODIFICACIÓN',
  1936. 'FECHA DE MODIFICACIÓN',
  1937. ];
  1938. break;
  1939. case 'S002V01R20HIEQ':
  1940. $qry = DB::table('S002V01TEQUI')->select([
  1941. DB::raw("CONCAT(FAMI_NOFA, ' (', EQUI_FAMI, ')') AS FAMILIA"),
  1942. DB::raw("CONCAT(SUBF_NOSU, ' (', EQUI_SUBF, ')') AS SUBFAMILIA"),
  1943. 'EQUI_TIPO AS TIPO_EQUIPAMIENTO',
  1944. 'EQUI_MODE AS MODELO',
  1945. 'EQUI_IDEQ AS ID_EQUIPAMIENTO',
  1946. DB::raw("CONCAT(
  1947. IF(EQUI_ESEQ = 'A', 'Adquisición (A)', ''),
  1948. IF(EQUI_ESEQ = 'S', 'Stock (S)', ''),
  1949. IF(EQUI_ESEQ = 'T', 'Traslado (T)', ''),
  1950. IF(EQUI_ESEQ = 'I', 'Instalación (I)', ''),
  1951. IF(EQUI_ESEQ = 'R', 'Reparación (R)', ''),
  1952. IF(EQUI_ESEQ = 'D', 'Disposición (D)', '')
  1953. ) AS ESTADO_EQUIPAMIENTO"),
  1954. 'EQUI_COEQ AS CODIGO',
  1955. 'EQUI_JERA AS JERARQUIA',
  1956. DB::raw("IF(ISNULL(EQUI_EQPA), 'No aplica', EQUI_EQPA) AS PADRE"),
  1957. DB::raw("CONCAT(
  1958. IF(EQUI_TICO = 1, 'General (1)', ''),
  1959. IF(EQUI_TICO = 2, 'PCC (2)', ''),
  1960. IF(EQUI_TICO = 3, 'Origen y destino para líneas y enlaces (3)', ''),
  1961. IF(EQUI_TICO = 4, 'Origen y destino para estaciones y edificios (4)', ''),
  1962. IF(EQUI_TICO = 5, 'Tren (5)', ''),
  1963. IF(EQUI_TICO = 6, 'Origen y destino mixto (6)', ''),
  1964. IF(EQUI_TICO = 7, 'Stock (7)', '')
  1965. ) AS TIPO_CODIGO"),
  1966. DB::raw("IF(ISNULL(EQUI_UBOR), '-', EQUI_UBOR) AS UBICACION_ORIGEN"),
  1967. DB::raw("IF(ISNULL(EQUI_NIOR), '-', EQUI_NIOR) AS NIVEL_ORIGEN"),
  1968. DB::raw("IF(ISNULL(EQUI_OCOR), '-', EQUI_OCOR) AS OCUPACION_ORIGEN"),
  1969. DB::raw("IF(ISNULL(EQUI_ELOR), '-', EQUI_ELOR) AS ELEMENTO_ORIGEN"),
  1970. DB::raw("IF(ISNULL(EQUI_ALMA), '-', EQUI_ALMA) AS ALMACEN"),
  1971. DB::raw("IF(ISNULL(EQUI_AREA), '-', EQUI_AREA) AS AREA"),
  1972. DB::raw("IF(ISNULL(EQUI_NIVE), '-', EQUI_NIVE) AS NIVEL"),
  1973. DB::raw("IF(ISNULL(EQUI_ZONA), '-', EQUI_ZONA) AS ZONA"),
  1974. DB::raw("IF(ISNULL(EQUI_IPCC), '-', EQUI_IPCC) AS INTERSECCION_PCC"),
  1975. DB::raw("IF(ISNULL(EQUI_PPCC), '-', EQUI_PPCC) AS POSICION_PCC"),
  1976. DB::raw("IF(ISNULL(EQUI_KIOR), '-', EQUI_KIOR) AS KILOMETRO_ORIGEN"),
  1977. DB::raw("IF(ISNULL(EQUI_SEOR), '-', EQUI_SEOR) AS SECUENCIA_ORIGEN"),
  1978. DB::raw("IF(ISNULL(EQUI_ARTR), '-', EQUI_ARTR) AS AREA_TREN"),
  1979. DB::raw("IF(ISNULL(EQUI_TCOR), '-', CONCAT(
  1980. IF(EQUI_TCOR = 1, 'General (1)', ''),
  1981. IF(EQUI_TCOR = 2, 'PCC (2)', ''),
  1982. IF(EQUI_TCOR = 3, 'Origen y destino para líneas y enlaces (3)', ''),
  1983. IF(EQUI_TCOR = 4, 'Origen y destino para estaciones y edificios (4)', ''),
  1984. IF(EQUI_TCOR = 5, 'Tren (5)', '')
  1985. )) AS TIPO_CODIGO_ORIGEN"),
  1986. DB::raw("IF(ISNULL(EQUI_CEOR), '-', EQUI_CEOR) AS CODIGO_ORIGEN"),
  1987. DB::raw("IF(ISNULL(EQUI_UBDE), '-', EQUI_UBOR) AS UBICACION_DESTINO"),
  1988. DB::raw("IF(ISNULL(EQUI_NIDE), '-', EQUI_NIDE) AS NIVEL_DESTINO"),
  1989. DB::raw("IF(ISNULL(EQUI_OCDE), '-', EQUI_OCDE) AS OCUPACION_DESTINO"),
  1990. DB::raw("IF(ISNULL(EQUI_ELDE), '-', EQUI_ELDE) AS ELEMENTO_DESTINO"),
  1991. DB::raw("IF(ISNULL(EQUI_KIDE), '-', EQUI_KIDE) AS KILOMETRO_DESTINO"),
  1992. DB::raw("IF(ISNULL(EQUI_SEDE), '-', EQUI_SEDE) AS SECUENCIA_DESTINO"),
  1993. DB::raw("IF(ISNULL(EQUI_TCDE), '-', CONCAT(
  1994. IF(EQUI_TCDE = 1, 'General (1)', ''),
  1995. IF(EQUI_TCDE = 2, 'PCC (2)', ''),
  1996. IF(EQUI_TCDE = 3, 'Origen y destino para líneas y enlaces (3)', ''),
  1997. IF(EQUI_TCDE = 4, 'Origen y destino para estaciones y edificios (4)', ''),
  1998. IF(EQUI_TCDE = 5, 'Tren (5)', '')
  1999. )) AS TIPO_CODIGO_DESTINO"),
  2000. DB::raw("IF(ISNULL(EQUI_CEDE), '-', EQUI_CEDE) AS CODIGO_DESTINO"),
  2001. DB::raw("IF(ISNULL(EQUI_CRSE), '-', EQUI_CRSE) AS CRITICIDAD"),
  2002. 'EQUI_FEAD AS FECHA_ADQUISICION',
  2003. 'EQUI_FIGA AS INICIO_GARANTIA',
  2004. 'EQUI_FTGA AS TERMINO_GARANTIA',
  2005. DB::raw("CONCAT(PROV_NOCO, ' (', EQUI_PREQ, ')') AS PROVEEDOR"),
  2006. 'EQUI_NUSE AS SERIAL',
  2007. DB::raw("IF(ISNULL(EQUI_DESO), '-', EQUI_DESO) AS DENOMINACION_SOFTWARE"),
  2008. DB::raw("IF(ISNULL(EQUI_VESO), '-', EQUI_VESO) AS VERSION_SOFTWARE"),
  2009. 'EQUI_HICO AS HISTORIAL_CODIGOS',
  2010. 'EQUI_GAIM AS IMAGENES',
  2011. 'EQUI_DORE AS DOCUMENTOS',
  2012. DB::raw("CONCAT(
  2013. IF(EQUI_ESFU = 'DE', 'Detenido (DE)', ''),
  2014. IF(EQUI_ESFU = 'DP', 'Detenido parcialmente (DP)', ''),
  2015. IF(EQUI_ESFU = 'EF', 'En funcionamiento (EF)', '')
  2016. ) AS ESTADO_FUNCIONAMIENTO"),
  2017. DB::raw("CONCAT(USRE.USUA_NOMB, ' ', USRE.USUA_APPA, IF(ISNULL(USRE.USUA_APMA), '', ' '), IF(ISNULL(USRE.USUA_APMA), '', USRE.USUA_APMA), ' (', EQUI_USRE, ')') AS USUARIO_REG"),
  2018. 'EQUI_FERE AS FECHA_REGISTRO',
  2019. DB::raw("IF(ISNULL(USMO.USUA_NOMB), '-', CONCAT(USMO.USUA_NOMB, ' ', USMO.USUA_APPA, IF(ISNULL(USMO.USUA_APMA), '', ' '), IF(ISNULL(USMO.USUA_APMA), '', USMO.USUA_APMA), ' (', EQUI_USMO, ')')) AS USUARIO_MOD"),
  2020. 'EQUI_FEMO AS FECHA_MODIFICACION'
  2021. ])->join('S002V01TFAMI', 'FAMI_COFA', '=', 'EQUI_FAMI')
  2022. ->join('S002V01TSUBF', function(JoinClause $join) {
  2023. $join->on('SUBF_COFA', '=', 'EQUI_FAMI')
  2024. ->on('SUBF_COSU', '=', 'EQUI_SUBF');
  2025. })->join('S002V01TPROV', 'PROV_NUPR', '=', 'EQUI_PREQ')
  2026. ->join(DB::raw('S002V01TUSUA USRE'), 'USRE.USUA_IDUS', '=', 'EQUI_USRE')
  2027. ->leftJoin(DB::raw('S002V01TUSUA USMO'), 'USMO.USUA_IDUS', '=', 'EQUI_USMO')
  2028. ->orderBy('EQUI_FERE', 'desc')->where('EQUI_NULI', '=', $line);
  2029. if($startDateStr != null){
  2030. $qry->where('EQUI_FERE', '>=', $startDateStr);
  2031. }
  2032. if($endDateStr != null){
  2033. $qry->where('EQUI_FERE', '<=', $endDateStr);
  2034. }
  2035. $data = $qry->get()->all();
  2036. $columns = [
  2037. 'FAMILIA',
  2038. 'SUBFAMILIA',
  2039. 'TIPO DE EQUIPAMIENTO',
  2040. 'MODELO DEL EQUIPAMIENTO',
  2041. 'ID DEL EQUIPAMIENTO',
  2042. 'ESTADO DEL EQUIPAMIENTO',
  2043. 'CÓDIGO',
  2044. 'JERARQUÍA',
  2045. 'EQUIPAMIENTO PADRE',
  2046. 'TIPO DE CODIFICACIÓN',
  2047. 'UBICACIÓN DE ORIGEN',
  2048. 'NIVEL DE ORIGEN',
  2049. 'OCUPACIÓN DE ORIGEN',
  2050. 'ELEMENTO DE ORIGEN',
  2051. 'ALMACEN',
  2052. 'ÁREA',
  2053. 'NIVEL',
  2054. 'ZONA',
  2055. 'INTERSECCIÓN DENTRO DE PCC',
  2056. 'POSICIÓN OCUPADA EN EL RACK DE PCC',
  2057. 'KILÓMETRO DE ORIGEN',
  2058. 'SECUENCIA DEL ELEMENTO DE ORIGEN',
  2059. 'ÁREA DEL TREN',
  2060. 'TIPO DE CÓDIGO DEL ELEMENTO DE ORIGEN',
  2061. 'CÓDIGO DEL ELEMENTO DE ORIGEN',
  2062. 'UBICACIÓN DE DESTINO',
  2063. 'NIVEL DE DESTINO',
  2064. 'OCUPACIÓN DE DESTINO',
  2065. 'ELEMENTO DE DESTINO',
  2066. 'KILÓMETRO DE DESTINO',
  2067. 'SECUENCIA DEL ELEMENTO DE DESTINO',
  2068. 'TIPO DE CÓDIGO DEL ELEMENTO DE DESTINO',
  2069. 'CÓDIGO DEL ELEMENTO DE DESTINO',
  2070. 'CRITICIDAD',
  2071. 'FECHA DE ADQUISICIÓN',
  2072. 'FECHA DE INICIO DE LA GARANTÍA',
  2073. 'FECHA DEL TÉRMINO DE LA GARANTÍA',
  2074. 'PROVEEDOR',
  2075. 'NÚMERO DE SERIE',
  2076. 'DENOMINACIÓN DEL SOFTWARE REQUERIDO',
  2077. 'VERSIÓN DEL SOFTWARE REQUERIDO',
  2078. 'HISTORIAL DE CÓDIGOS',
  2079. 'GALERÍA DE IMÁGENES',
  2080. 'DOCUMENTOS RELACIONADOS',
  2081. 'ESTADO DEL FUNCIONAMIENTO',
  2082. 'USUARIO QUE REGISTRÓ',
  2083. 'FECHA DEL REGISTRO',
  2084. 'USUARIO QUE REALIZÓ LA ÚLTIMA MODIFICACIÓN',
  2085. 'FECHA DE MODIFICACIÓN',
  2086. ];
  2087. break;
  2088. case 'S002V01R21HFSU':
  2089. $qry1 = DB::table('S002V01TFAMI')->select([
  2090. DB::raw("'Familia' AS TIPO"),
  2091. DB::raw("'No aplica' AS FAMILIA"),
  2092. 'FAMI_COFA AS CODIGO',
  2093. 'FAMI_NOFA AS NOMBRE',
  2094. 'FAMI_ICON AS ICONO',
  2095. 'FAMI_ICPE AS PERSONALIZADO',
  2096. 'FAMI_ESTA AS ESTADO',
  2097. DB::raw("CONCAT(USRE.USUA_NOMB, ' ', USRE.USUA_APPA, IF(ISNULL(USRE.USUA_APMA), '', ' '), IF(ISNULL(USRE.USUA_APMA), '', USRE.USUA_APMA), ' (', FAMI_USRE, ')') AS USUARIO_REG"),
  2098. 'FAMI_FERE AS FECHA_REGISTRO',
  2099. DB::raw("IF(ISNULL(USMO.USUA_NOMB), '-', CONCAT(USMO.USUA_NOMB, ' ', USMO.USUA_APPA, IF(ISNULL(USMO.USUA_APMA), '', ' '), IF(ISNULL(USMO.USUA_APMA), '', USMO.USUA_APMA), ' (', FAMI_USMO, ')')) AS USUARIO_MOD"),
  2100. 'FAMI_FEMO AS FECHA_MODIFICACION'
  2101. ])->join(DB::raw('S002V01TUSUA USRE'), 'USRE.USUA_IDUS', '=', 'FAMI_USRE')
  2102. ->leftJoin(DB::raw('S002V01TUSUA USMO'), 'USMO.USUA_IDUS', '=', 'FAMI_USMO')
  2103. ->orderBy('FAMI_FERE', 'desc')->where('FAMI_NULI', '=', $line);
  2104. if($startDateStr != null){
  2105. $qry1->where('FAMI_FERE', '>=', $startDateStr);
  2106. }
  2107. if($endDateStr != null){
  2108. $qry1->where('FAMI_FERE', '<=', $endDateStr);
  2109. }
  2110. $qry2 = DB::table('S002V01TSUBF')->select([
  2111. DB::raw("'Subfamilia' AS TIPO"),
  2112. DB::raw("CONCAT(FAMI_NOFA, ' (', SUBF_COFA, ')') AS FAMILIA"),
  2113. 'SUBF_COSU AS CODIGO',
  2114. 'SUBF_NOSU AS NOMBRE',
  2115. 'SUBF_ICON AS ICONO',
  2116. 'SUBF_ICPE AS PERSONALIZADO',
  2117. 'SUBF_ESTA AS ESTADO',
  2118. DB::raw("CONCAT(USRE.USUA_NOMB, ' ', USRE.USUA_APPA, IF(ISNULL(USRE.USUA_APMA), '', ' '), IF(ISNULL(USRE.USUA_APMA), '', USRE.USUA_APMA), ' (', SUBF_USRE, ')') AS USUARIO_REG"),
  2119. 'SUBF_FERE AS FECHA_REGISTRO',
  2120. DB::raw("IF(ISNULL(USMO.USUA_NOMB), '-', CONCAT(USMO.USUA_NOMB, ' ', USMO.USUA_APPA, IF(ISNULL(USMO.USUA_APMA), '', ' '), IF(ISNULL(USMO.USUA_APMA), '', USMO.USUA_APMA), ' (', SUBF_USMO, ')')) AS USUARIO_MOD"),
  2121. 'SUBF_FEMO AS FECHA_MODIFICACION'
  2122. ])->join('S002V01TFAMI', 'FAMI_COFA', '=', 'SUBF_COFA')
  2123. ->join(DB::raw('S002V01TUSUA USRE'), 'USRE.USUA_IDUS', '=', 'SUBF_USRE')
  2124. ->leftJoin(DB::raw('S002V01TUSUA USMO'), 'USMO.USUA_IDUS', '=', 'SUBF_USMO')
  2125. ->orderBy('SUBF_FERE', 'desc')->where('SUBF_NULI', '=', $line);
  2126. if($startDateStr != null){
  2127. $qry2->where('SUBF_FERE', '>=', $startDateStr);
  2128. }
  2129. if($endDateStr != null){
  2130. $qry2->where('SUBF_FERE', '<=', $endDateStr);
  2131. }
  2132. $data = $qry2->union($qry1)->get()->all();
  2133. $columns = [
  2134. 'TIPO DE REGISTRO',
  2135. 'FAMILIA RELACIONADA',
  2136. 'CÓDIGO',
  2137. 'NOMBRE',
  2138. 'NOMBRE DEL ICONO',
  2139. 'ICONO PERSONALIZADO',
  2140. 'ESTADO',
  2141. 'USUARIO QUE REGISTRÓ',
  2142. 'FECHA DEL REGISTRO',
  2143. 'USUARIO QUE REALIZÓ LA ÚLTIMA MODIFICACIÓN',
  2144. 'FECHA DE MODIFICACIÓN',
  2145. ];
  2146. break;
  2147. case 'S002V01R22HIUB':
  2148. $locationsFileExists = file_exists($this->filesUbic . 'locations.sam');
  2149. if(!$locationsFileExists){
  2150. return $this->responseController->makeResponse(true, 'El archivo de localizaciones de equipamientos no fue encontrado.', [], 500);
  2151. }
  2152. $locationsEnc = file_get_contents($this->filesUbic . 'locations.sam');
  2153. $locationsDec = $this->encryptionController->decrypt($locationsEnc);
  2154. $locationsArr = json_decode($locationsDec);
  2155. foreach($locationsArr as $k0=>$v0){
  2156. $v0->LOCATION = $this->encryptionController->decrypt($v0->LOCATION);
  2157. $v0->CODE = $this->encryptionController->decrypt($v0->CODE);
  2158. $locationsArr[$k0] = $v0;
  2159. }
  2160. $data = $locationsArr;
  2161. $columns = [
  2162. 'NOMBRE DE LA UBICACIÓN',
  2163. 'CÓDIGO DE LA UBICACIÓN'
  2164. ];
  2165. break;
  2166. case 'S002V01R23HIOC':
  2167. $occupationsFileExists = file_exists($this->filesUbic . 'occupation-areas.sam');
  2168. if(!$occupationsFileExists){
  2169. return $this->responseController->makeResponse(true, 'El archivo de ocupación no fue encontrado.', [], 500);
  2170. }
  2171. $occupationAreasEnc = file_get_contents($this->filesUbic . "occupation-areas.sam");
  2172. $occupationAreasDec = $this->encryptionController->decrypt($occupationAreasEnc);
  2173. $occupationAreasArr = json_decode($occupationAreasDec, true);
  2174. $data = [];
  2175. foreach($occupationAreasArr as $k0=>$v0){
  2176. $v0['CODE'] = $this->encryptionController->decrypt($v0['CODE']);
  2177. $v0['AREA'] = $this->encryptionController->decrypt($v0['AREA']);
  2178. $qry = DB::table('S002V01TOCUP')->select([
  2179. DB::raw("'$v0[AREA] ($v0[CODE])' AS AREA"),
  2180. DB::raw("CONCAT(
  2181. IF(CHAR_LENGTH(OCUP_IDOC) = 1, '000', ''),
  2182. IF(CHAR_LENGTH(OCUP_IDOC) = 2, '00', ''),
  2183. IF(CHAR_LENGTH(OCUP_IDOC) = 3, '0', ''),
  2184. IF(CHAR_LENGTH(OCUP_IDOC) = 4, '', ''),
  2185. OCUP_IDOC
  2186. ) AS OCUPACION"),
  2187. 'OCUP_DESC AS DESCRIPCION',
  2188. 'OCUP_ESTA AS ESTADO',
  2189. DB::raw("CONCAT(USRE.USUA_NOMB, ' ', USRE.USUA_APPA, IF(ISNULL(USRE.USUA_APMA), '', ' '), IF(ISNULL(USRE.USUA_APMA), '', USRE.USUA_APMA), ' (', OCUP_USRE, ')') AS USUARIO_REG"),
  2190. 'OCUP_FERE AS FECHA_REGISTRO',
  2191. DB::raw("IF(ISNULL(USMO.USUA_NOMB), '-', CONCAT(USMO.USUA_NOMB, ' ', USMO.USUA_APPA, IF(ISNULL(USMO.USUA_APMA), '', ' '), IF(ISNULL(USMO.USUA_APMA), '', USMO.USUA_APMA), ' (', OCUP_USMO, ')')) AS USUARIO_MOD"),
  2192. 'OCUP_FEMO AS FECHA_MODIFICACION'
  2193. ])->join(DB::raw('S002V01TUSUA USRE'), 'USRE.USUA_IDUS', '=', 'OCUP_USRE')
  2194. ->leftJoin(DB::raw('S002V01TUSUA USMO'), 'USMO.USUA_IDUS', '=', 'OCUP_USMO')->where([
  2195. ['OCUP_NULI', '=', $line],
  2196. ['OCUP_AREA', '=', $v0['CODE']]
  2197. ])->orderBy('OCUP_AREA', 'asc')->orderBy('OCUP_IDOC', 'desc');
  2198. if($startDateStr != null){
  2199. $qry->where('OCUP_FERE', '>=', $startDateStr);
  2200. }
  2201. if($endDateStr != null){
  2202. $qry->where('OCUP_FERE', '<=', $endDateStr);
  2203. }
  2204. $arr = $qry->get()->all();
  2205. foreach($arr as $obj){
  2206. $data[] = $obj;
  2207. }
  2208. }
  2209. $columns = [
  2210. 'ÁREA DE LA OCUPACIÓN',
  2211. 'ID DE LA OCUPACIÓN',
  2212. 'DESCRIPCIÓN',
  2213. 'ESTADO DE LA OCUPACIÓN',
  2214. 'USUARIO QUE REGISTRÓ',
  2215. 'FECHA DEL REGISTRO',
  2216. 'USUARIO QUE REALIZÓ LA ÚLTIMA MODIFICACIÓN',
  2217. 'FECHA DE MODIFICACIÓN',
  2218. ];
  2219. break;
  2220. case 'S002V01R25HOMC':
  2221. $qry = DB::table('S002V01TOTCO')->select([
  2222. 'OTCO_IDOT AS ID_ORDEN',
  2223. DB::raw("CONCAT(
  2224. USUR.USUA_NOMB, ' ', USUR.USUA_APPA,
  2225. IF(ISNULL(USUR.USUA_APMA), '', CONCAT(
  2226. ' ', USUR.USUA_APMA
  2227. )), ' (', OTCO_IDUR, ')'
  2228. ) USUARIO_RES"),
  2229. DB::raw("IF(OTCO_TURE = 'U', 'Usuario', 'Subcontratista') AS TIPO_RESPONSABLE"),
  2230. 'OTCO_DEIN AS DESCRIPCION',
  2231. DB::raw("CONCAT(OTCO_EQIN, ' -', EQUI_TIPO, ' - ', EQUI_MODE, ' (', EQUI_IDEQ, ')') AS EQUIPAMIENTO"),
  2232. 'OTCO_FIFA AS FECHA_FALLA',
  2233. DB::raw("CONCAT(OTCO_TESO, ' hora(s)') AS TIEMPO_ESTIMADO"),
  2234. 'OTCO_CORE AS CONTADOR',
  2235. 'OTCO_DRCO AS MEDIDAS',
  2236. 'OTCO_PRIO AS PRIORIDAD',
  2237. DB::raw("IF(ISNULL(OTCO_FTIN), 'No finalizado', OTCO_FTIN) AS FECHA_TERMINO"),
  2238. DB::raw("IF(ISNULL(OTCO_DTIN), 'No finalizado', CONCAT(OTCO_DTIN, ' hora(s)')) AS DURACION"),
  2239. 'OTCO_RHUT AS RECURSOS',
  2240. 'OTCO_PEIN AS PERSONAL',
  2241. DB::raw("IF(OTCO_TIAC = 'A', 'Automático', 'Manual') AS TIPO_ACTIVACION"),
  2242. DB::raw("IF(ISNULL(OTCO_ANCO), 'No asignado', OTCO_ANCO) AS ANALISIS"),
  2243. 'OTCO_DORE AS DOCUMENTOS',
  2244. 'OTCO_CLAS AS CLASIFICACION',
  2245. DB::raw("IF(ISNULL(OTCO_COME), '-', OTCO_COME) AS COMENTARIOS"),
  2246. 'OTCO_GESE AS GERENCIA',
  2247. 'OTCO_HIES AS HISTORIAL',
  2248. DB::raw("CONCAT(
  2249. IF(OTCO_ESOR = 'PE', 'Pendiente', ''),
  2250. IF(OTCO_ESOR = 'VA', 'Validado', ''),
  2251. IF(OTCO_ESOR = 'RE', 'Rechazado', ''),
  2252. IF(OTCO_ESOR = 'EP', 'En proceso', ''),
  2253. IF(OTCO_ESOR = 'CE', 'Cerrado', ''),
  2254. IF(OTCO_ESOR = 'CP', 'Cerrado parcialmente', ''),
  2255. IF(OTCO_ESOR = 'CA', 'Cancelado', ''),
  2256. IF(OTCO_ESOR = 'EL', 'Eliminado', '')
  2257. ) AS ESTADO"),
  2258. DB::raw("IF(
  2259. ISNULL(USRE.USUA_APPA),
  2260. CONCAT('Automático (', OTCO_USRE, ')'),
  2261. CONCAT(USRE.USUA_NOMB, ' ', USRE.USUA_APPA, IF(ISNULL(USRE.USUA_APMA), '', CONCAT(' ', USRE.USUA_APMA)), ' (', OTCO_USRE, ')')
  2262. ) AS USUARIO_REG"),
  2263. 'OTCO_FERE AS FECHA_REGISTRO',
  2264. DB::raw("IF(ISNULL(USMO.USUA_NOMB), '-', CONCAT(USMO.USUA_NOMB, ' ', USMO.USUA_APPA, IF(ISNULL(USMO.USUA_APMA), '', ' '), IF(ISNULL(USMO.USUA_APMA), '', USMO.USUA_APMA), ' (', OTCO_USMO, ')')) AS USUARIO_MOD"),
  2265. 'OTCO_FEMO AS FECHA_MODIFICACION'
  2266. ])->join(DB::raw('S002V01TUSUA USUR'), 'USUR.USUA_IDUS', '=', 'OTCO_IDUR')
  2267. ->join('S002V01TEQUI', 'EQUI_COEQ', '=', 'OTCO_EQIN')
  2268. ->leftJoin(DB::raw('S002V01TUSUA USRE'), 'USRE.USUA_IDUS', '=', 'OTCO_USRE')
  2269. ->leftJoin(DB::raw('S002V01TUSUA USMO'), 'USMO.USUA_IDUS', '=', 'OTCO_USMO')
  2270. ->orderBy('OTCO_FERE', 'desc')->where('OTCO_NULI', '=', $line);
  2271. if($startDateStr != null){
  2272. $qry->where('OTCO_FERE', '>=', $startDateStr);
  2273. }
  2274. if($endDateStr != null){
  2275. $qry->where('OTCO_FERE', '<=', $endDateStr);
  2276. }
  2277. $data = $qry->get()->all();
  2278. $columns = [
  2279. 'ID',
  2280. 'USUARIO RESPONSABLE',
  2281. 'TIPO DE USUARIO RESPONSABLE',
  2282. 'DESCRIPCIÓN',
  2283. 'EQUIPAMIENTO RELACIONADO',
  2284. 'FECHA DEL REGISTRO DE LA FALLA',
  2285. 'TIEMPO ESTIMADO PARA LA SOLUCIÓN',
  2286. 'CONTADOR RELACIONADO',
  2287. 'MEDIDAS RECABADAS AL REGISTRO DE LA FALLA',
  2288. 'PRIORIDAD',
  2289. 'FECHA DE LA FINALIZACIÓN',
  2290. 'TIEMPO TOTAL DE LA INTERVENCIÓN',
  2291. 'RECURSOS REQUERIDOS',
  2292. 'PERSONAL INVOLUCRADO',
  2293. 'TIPO DE ACTIVACIÓN',
  2294. 'ANÁLISIS DE COSTOS',
  2295. 'DOCUMENTOS RELACIONADOS',
  2296. 'CLASIFICACIÓN',
  2297. 'COMENTARIOS',
  2298. 'GERENCIA DE SEGURIDAD ASIGNADA',
  2299. 'HISTORIAL DE ESTADOS DE LA ORDEN',
  2300. 'ESTADO ACTUAL DE LA ORDEN',
  2301. 'USUARIO QUE REGISTRÓ',
  2302. 'FECHA DEL REGISTRO',
  2303. 'USUARIO QUE REALIZÓ LA ÚLTIMA MODIFICACIÓN',
  2304. 'FECHA DE MODIFICACIÓN',
  2305. ];
  2306. break;
  2307. case 'S002V01R26HPMC':
  2308. $qry = DB::table('S002V01TPMCO')->select([
  2309. 'PMCO_IDPM AS ID_PLAN',
  2310. DB::raw("CONCAT(PMCO_EQIN, ' - ', EQIN.EQUI_TIPO, ' - ', EQIN.EQUI_MODE, ' (', EQIN.EQUI_IDEQ, ')') AS EQUIPAMIENTO"),
  2311. DB::raw("IF(
  2312. ISNULL(PMCO_LRUI),
  2313. '-',
  2314. CONCAT(PMCO_LRUI, ' - ', LRUI.EQUI_TIPO, ' - ', LRUI.EQUI_MODE, ' (', LRUI.EQUI_IDEQ, ')')
  2315. ) AS LRU"),
  2316. DB::raw("CONCAT(
  2317. IF(PMCO_EFEQ = 'DE', 'Detenido (DE)', ''),
  2318. IF(PMCO_EFEQ = 'DP', 'Detenido parcialmente (DP)', ''),
  2319. IF(PMCO_EFEQ = 'EF', 'En funcionamiento (EF)', '')
  2320. ) AS ESTADO_FUNCIONAMIENTO_EQUIPAMIENTO"),
  2321. DB::raw("IF(
  2322. ISNULL(PMCO_EFLR),
  2323. '-',
  2324. CONCAT(
  2325. IF(PMCO_EFLR = 'DE', 'Detenido (DE)', ''),
  2326. IF(PMCO_EFLR = 'DP', 'Detenido parcialmente (DP)', ''),
  2327. IF(PMCO_EFLR = 'EF', 'En funcionamiento (EF)', '')
  2328. )
  2329. ) AS ESTADO_FUNCIONAMIENTO_LRU"),
  2330. 'PMCO_DESC AS DESCRIPCION',
  2331. DB::raw("CONCAT(PMCO_TIES, ' hora(s)') AS TIEMPO_ESTIMADO"),
  2332. DB::raw("CONCAT(PMCO_DTIN, ' hora(s)') AS DURACION_ESTIMADA"),
  2333. 'PMCO_CLAS AS CLASIFICACION',
  2334. 'PMCO_ESRE AS ESPECIALIDADES',
  2335. 'PMCO_COES AS OPERARIOS',
  2336. DB::raw("IF(ISNULL(PMCO_COME), '-', PMCO_COME) AS COMENTARIOS"),
  2337. 'PMCO_RECU AS RECURSOS',
  2338. DB::raw("IF(ISNULL(PMCO_DEAD), '-', PMCO_DEAD) AS DETALLES"),
  2339. 'PMCO_DORE AS DOCUMENTOS',
  2340. 'PMCO_CORE AS CONTADOR',
  2341. 'PMCO_ESTA AS ESTADO',
  2342. DB::raw("CONCAT(USRE.USUA_NOMB, ' ', USRE.USUA_APPA, IF(ISNULL(USRE.USUA_APMA), '', ' '), IF(ISNULL(USRE.USUA_APMA), '', USRE.USUA_APMA), ' (', PMCO_USRE, ')') AS USUARIO_REG"),
  2343. 'PMCO_FERE AS FECHA_REGISTRO',
  2344. DB::raw("IF(ISNULL(USMO.USUA_NOMB), '-', CONCAT(USMO.USUA_NOMB, ' ', USMO.USUA_APPA, IF(ISNULL(USMO.USUA_APMA), '', ' '), IF(ISNULL(USMO.USUA_APMA), '', USMO.USUA_APMA), ' (', PMCO_USMO, ')')) AS USUARIO_MOD"),
  2345. 'PMCO_FEMO AS FECHA_MODIFICACION'
  2346. ])->join(DB::raw('S002V01TEQUI EQIN'), 'EQIN.EQUI_COEQ', '=', 'PMCO_EQIN')
  2347. ->leftJoin(DB::raw('S002V01TEQUI LRUI'), 'LRUI.EQUI_COEQ', '=', 'PMCO_LRUI')
  2348. ->join(DB::raw('S002V01TUSUA USRE'), 'USRE.USUA_IDUS', '=', 'PMCO_USRE')
  2349. ->leftJoin(DB::raw('S002V01TUSUA USMO'), 'USMO.USUA_IDUS', '=', 'PMCO_USMO')
  2350. ->orderBy('PMCO_FERE', 'desc')->where('PMCO_NULI', '=', $line);
  2351. if($startDateStr != null){
  2352. $qry->where('PMCO_FERE', '>=', $startDateStr);
  2353. }
  2354. if($endDateStr != null){
  2355. $qry->where('PMCO_FERE', '<=', $endDateStr);
  2356. }
  2357. $data = $qry->get()->all();
  2358. $columns = [
  2359. 'ID',
  2360. 'EQUIPAMIENTO INTERVENIDO',
  2361. 'LRU INTERVENIDO',
  2362. 'ESTADO DE FUNCIONAMIENTO DEL EQUIPAMIENTO',
  2363. 'ESTADO DE FUNCIONAMIENTO DEL LRU',
  2364. 'DESCRIPCIÓN',
  2365. 'TIEMPO ESTIMADO DE INMOVILIZACIÓN',
  2366. 'DURACIÓN TOTAL ESTIMADA',
  2367. 'CLASIFICACIÓN',
  2368. 'ESPECIALIDADES REQUERIDAS',
  2369. 'CONFIGURACIÓN DE OPERARIOS POR ESPECIALIDAD',
  2370. 'COMENTARIOS',
  2371. 'RECURSOS NECESARIOS',
  2372. 'DETALLES ADICIONALES',
  2373. 'DOCUMENTOS REQUERIDOS',
  2374. 'CONTADOR RELACIONADO',
  2375. 'ESTADO',
  2376. 'USUARIO QUE REGISTRÓ',
  2377. 'FECHA DEL REGISTRO',
  2378. 'USUARIO QUE REALIZÓ LA ÚLTIMA MODIFICACIÓN',
  2379. 'FECHA DE MODIFICACIÓN',
  2380. ];
  2381. break;
  2382. case 'S002V01R27RGSE':
  2383. $qry = DB::table('S002V01TGESE')->select([
  2384. 'GESE_IDGS AS ID_GERENCIA',
  2385. DB::raw("CONCAT(
  2386. GESE_LAD1, '-', GESE_TEL1,
  2387. IF(ISNULL(GESE_EXT1), '', CONCAT(' ext. ', GESE_EXT1))
  2388. ) AS TELEFONO1"),
  2389. DB::raw("IF(
  2390. ISNULL(GESE_TEL2),
  2391. '-',
  2392. CONCAT(
  2393. GESE_LAD2, '-', GESE_TEL2,
  2394. IF(ISNULL(GESE_EXT2), '', CONCAT(' ext. ', GESE_EXT2))
  2395. )
  2396. ) AS TELEFONO2"),
  2397. 'GESE_COEL AS CORREO',
  2398. DB::raw("CONCAT(GERE.USUA_NOMB, ' ', GERE.USUA_APPA, IF(ISNULL(GERE.USUA_APMA), '', CONCAT(' ', GERE.USUA_APMA)), ' (', GESE_GERE, ')') AS GERENTE"),
  2399. 'GESE_ESTA AS ESTADO',
  2400. DB::raw("CONCAT(USRE.USUA_NOMB, ' ', USRE.USUA_APPA, IF(ISNULL(USRE.USUA_APMA), '', ' '), IF(ISNULL(USRE.USUA_APMA), '', USRE.USUA_APMA), ' (', GESE_USRE, ')') AS USUARIO_REG"),
  2401. 'GESE_FERE AS FECHA_REGISTRO',
  2402. DB::raw("IF(ISNULL(USMO.USUA_NOMB), '-', CONCAT(USMO.USUA_NOMB, ' ', USMO.USUA_APPA, IF(ISNULL(USMO.USUA_APMA), '', ' '), IF(ISNULL(USMO.USUA_APMA), '', USMO.USUA_APMA), ' (', GESE_USMO, ')')) AS USUARIO_MOD"),
  2403. 'GESE_FEMO AS FECHA_MODIFICACION'
  2404. ])->join(DB::raw('S002V01TUSUA GERE'), 'GERE.USUA_IDUS', '=', 'GESE_GERE')
  2405. ->join(DB::raw('S002V01TUSUA USRE'), 'USRE.USUA_IDUS', '=', 'GESE_USRE')
  2406. ->leftJoin(DB::raw('S002V01TUSUA USMO'), 'USMO.USUA_IDUS', '=', 'GESE_USMO')
  2407. ->orderBy('GESE_FERE', 'desc')->where('GESE_NULI', '=', $line);
  2408. if($startDateStr != null){
  2409. $qry->where('GESE_FERE', '>=', $startDateStr);
  2410. }
  2411. if($endDateStr != null){
  2412. $qry->where('GESE_FERE', '<=', $endDateStr);
  2413. }
  2414. $data = $qry->get()->all();
  2415. $columns = [
  2416. 'ID',
  2417. 'TELÉFONO PRINCIPAL',
  2418. 'TELÉFONO SECUNDARIO',
  2419. 'CORREO ELECTRÓNICO',
  2420. 'GERENTE',
  2421. 'ESTADO',
  2422. 'USUARIO QUE REGISTRÓ',
  2423. 'FECHA DEL REGISTRO',
  2424. 'USUARIO QUE REALIZÓ LA ÚLTIMA MODIFICACIÓN',
  2425. 'FECHA DE MODIFICACIÓN',
  2426. ];
  2427. break;
  2428. case 'S002V01R28DRMC':
  2429. $documentsByOrder = DB::table('S002V01TOTCO')->select([
  2430. 'OTCO_IDOT AS ID_ORDEN',
  2431. 'OTCO_DORE AS DOCUMENTOS'
  2432. ])->get()->all();
  2433. $data = [];
  2434. foreach($documentsByOrder as $document){
  2435. $documentsArr = json_decode($document->DOCUMENTOS, true);
  2436. foreach($documentsArr as $file){
  2437. $data[] = (object) [
  2438. 'DOCUMENTO' => $file,
  2439. 'ORDEN' => $document->ID_ORDEN,
  2440. ];
  2441. }
  2442. }
  2443. $columns = [
  2444. 'DOCUMENTO',
  2445. 'ORDEN DE MANTENIMIENTO RELACIONADA'
  2446. ];
  2447. break;
  2448. case 'S002V01R29HIIN':
  2449. $qry = DB::table('S002V01TAFAL')->select([
  2450. DB::raw("CONCAT(
  2451. IF(AFAL_NULI < 10, CONCAT('0', AFAL_NULI), AFAL_NULI),
  2452. '-', AFAL_COMO, '-', AFAL_CLDO, '-', AFAL_FECR, '-',
  2453. CONCAT(
  2454. IF(CHAR_LENGTH(AFAL_NUSE) = 1, CONCAT('00000', AFAL_NUSE), ''),
  2455. IF(CHAR_LENGTH(AFAL_NUSE) = 2, CONCAT('0000', AFAL_NUSE), ''),
  2456. IF(CHAR_LENGTH(AFAL_NUSE) = 3, CONCAT('000', AFAL_NUSE), ''),
  2457. IF(CHAR_LENGTH(AFAL_NUSE) = 4, CONCAT('00', AFAL_NUSE), ''),
  2458. IF(CHAR_LENGTH(AFAL_NUSE) = 5, CONCAT('0', AFAL_NUSE), ''),
  2459. IF(CHAR_LENGTH(AFAL_NUSE) = 6, AFAL_NUSE, '')
  2460. )
  2461. ) AS CODIGO"),
  2462. DB::raw("CONCAT(
  2463. IF(CHAR_LENGTH(AFAL_NUVE) = 1, CONCAT('0', AFAL_NUVE), ''),
  2464. IF(CHAR_LENGTH(AFAL_NUVE) = 2, AFAL_NUVE, '')
  2465. ) AS VERSION"),
  2466. DB::raw("CONCAT(AFAL_NOAR, '.', AFAL_EXTE) AS NOMBRE"),
  2467. 'AFAL_TAMA AS TAMANIO',
  2468. 'AFAL_ESTA AS ESTADO',
  2469. 'AFAL_USAC AS ACCESO',
  2470. DB::raw("CONCAT(USRE.USUA_NOMB, ' ', USRE.USUA_APPA, IF(ISNULL(USRE.USUA_APMA), '', ' '), IF(ISNULL(USRE.USUA_APMA), '', USRE.USUA_APMA), ' (', AFAL_USRE, ')') AS USUARIO_REG"),
  2471. 'AFAL_FERE AS FECHA_REGISTRO',
  2472. DB::raw("IF(ISNULL(USMO.USUA_NOMB), '-', CONCAT(USMO.USUA_NOMB, ' ', USMO.USUA_APPA, IF(ISNULL(USMO.USUA_APMA), '', ' '), IF(ISNULL(USMO.USUA_APMA), '', USMO.USUA_APMA), ' (', AFAL_USMO, ')')) AS USUARIO_MOD"),
  2473. 'AFAL_FEMO AS FECHA_MODIFICACION'
  2474. ])->join(DB::raw('S002V01TUSUA USRE'), 'USRE.USUA_IDUS', '=', 'AFAL_USRE')
  2475. ->leftJoin(DB::raw('S002V01TUSUA USMO'), 'USMO.USUA_IDUS', '=', 'AFAL_USMO')
  2476. ->orderBy('AFAL_FERE', 'desc')->where([
  2477. ['AFAL_NULI', '=', $line],
  2478. ['AFAL_COMO', '=', 'GMCO'],
  2479. ['AFAL_NOAR', 'LIKE', 'informe_ordenes_mantenimiento_correctivo%']
  2480. ]);
  2481. if($startDateStr != null){
  2482. $qry->where('AFAL_FERE', '>=', $startDateStr);
  2483. }
  2484. if($endDateStr != null){
  2485. $qry->where('AFAL_FERE', '<=', $endDateStr);
  2486. }
  2487. $data = $qry->get()->all();
  2488. $columns = [
  2489. 'CÓDIGO',
  2490. 'VERSIÓN',
  2491. 'NOMBRE DEL DOCUMENTO',
  2492. 'TAMAÑO EN BYTES',
  2493. 'ESTADO',
  2494. 'USUARIOS CON ACCESO',
  2495. 'USUARIO QUE REGISTRÓ',
  2496. 'FECHA DEL REGISTRO',
  2497. 'USUARIO QUE REALIZÓ LA ÚLTIMA MODIFICACIÓN',
  2498. 'FECHA DE MODIFICACIÓN',
  2499. ];
  2500. break;
  2501. case 'S002V01R30HGEM':
  2502. $qry = DB::table('S002V01TGMCO')->select([
  2503. 'GMCO_IDGM AS ID_GRUPO',
  2504. 'GMCO_NGMC AS NOMBRE',
  2505. 'GMCO_EQRE AS EQUIPOS',
  2506. 'GMCO_ESPE AS ESPECIALIDAD',
  2507. 'GMCO_ESTA AS ESTADO',
  2508. DB::raw("CONCAT(USRE.USUA_NOMB, ' ', USRE.USUA_APPA, IF(ISNULL(USRE.USUA_APMA), '', ' '), IF(ISNULL(USRE.USUA_APMA), '', USRE.USUA_APMA), ' (', GMCO_USRE, ')') AS USUARIO_REG"),
  2509. 'GMCO_FERE AS FECHA_REGISTRO',
  2510. DB::raw("IF(ISNULL(USMO.USUA_NOMB), '-', CONCAT(USMO.USUA_NOMB, ' ', USMO.USUA_APPA, IF(ISNULL(USMO.USUA_APMA), '', ' '), IF(ISNULL(USMO.USUA_APMA), '', USMO.USUA_APMA), ' (', GMCO_USMO, ')')) AS USUARIO_MOD"),
  2511. 'GMCO_FEMO AS FECHA_MODIFICACION'
  2512. ])->join(DB::raw('S002V01TUSUA USRE'), 'USRE.USUA_IDUS', '=', 'GMCO_USRE')
  2513. ->leftJoin(DB::raw('S002V01TUSUA USMO'), 'USMO.USUA_IDUS', '=', 'GMCO_USMO')
  2514. ->orderBy('GMCO_FERE', 'desc')->where('GMCO_NULI', '=', $line);
  2515. if($startDateStr != null){
  2516. $qry->where('GMCO_FERE', '>=', $startDateStr);
  2517. }
  2518. if($endDateStr != null){
  2519. $qry->where('GMCO_FERE', '<=', $endDateStr);
  2520. }
  2521. $data = $qry->get()->all();
  2522. $columns = [
  2523. 'ID',
  2524. 'NOMBRE DEL GRUPO',
  2525. 'EQUIPOS RELACIONADOS',
  2526. 'ESPECIALIDAD',
  2527. 'ESTADO',
  2528. 'USUARIO QUE REGISTRÓ',
  2529. 'FECHA DEL REGISTRO',
  2530. 'USUARIO QUE REALIZÓ LA ÚLTIMA MODIFICACIÓN',
  2531. 'FECHA DE MODIFICACIÓN',
  2532. ];
  2533. break;
  2534. case 'S002V01R31HOMP':
  2535. $qry = DB::table('S002V01TOTPR')->select([
  2536. 'OTPR_IDOT AS ID_ORDEN',
  2537. 'OTPR_DEIN AS DESCRIPCION',
  2538. 'OTPR_ININ AS INSTRUCCIONES',
  2539. DB::raw("CONCAT(OTPR_EQIN, ' - ', EQIN.EQUI_TIPO, ' - ', EQIN.EQUI_MODE, ' (', EQIN.EQUI_IDEQ, ')') AS EQUIPAMIENTO"),
  2540. 'OTPR_FIAP AS FECHA_INICIO',
  2541. 'OTPR_FTAP AS FECHA_TERMINO',
  2542. DB::raw("IF(ISNULL(OTPR_SEAN), 'No asignado', OTPR_SEAN) AS ANALISIS"),
  2543. DB::raw("CONCAT(OTPR_TIIN, ' hora(s)') AS DURACION_ESTIMADA"),
  2544. 'OTPR_RHRE AS RECURSOS',
  2545. 'OTPR_DONE AS DOCUMENTOS',
  2546. 'OTPR_RECO AS CONTRATOS',
  2547. 'OTPR_ACAS AS ACTIVADOR',
  2548. 'OTPR_CLAS AS CLASIFICACION',
  2549. DB::raw("CONCAT(
  2550. IF(OTPR_ESTA = 'B', 'Borrador', ''),
  2551. IF(OTPR_ESTA = 'R', 'Revisión', ''),
  2552. IF(OTPR_ESTA = 'A', 'Activo', ''),
  2553. IF(OTPR_ESTA = 'E', 'Eliminado', '')
  2554. ) AS ESTADO"),
  2555. DB::raw("CONCAT(USRE.USUA_NOMB, ' ', USRE.USUA_APPA, IF(ISNULL(USRE.USUA_APMA), '', ' '), IF(ISNULL(USRE.USUA_APMA), '', USRE.USUA_APMA), ' (', OTPR_USRE, ')') AS USUARIO_REG"),
  2556. 'OTPR_FERE AS FECHA_REGISTRO',
  2557. DB::raw("IF(ISNULL(USMO.USUA_NOMB), '-', CONCAT(USMO.USUA_NOMB, ' ', USMO.USUA_APPA, IF(ISNULL(USMO.USUA_APMA), '', ' '), IF(ISNULL(USMO.USUA_APMA), '', USMO.USUA_APMA), ' (', OTPR_USMO, ')')) AS USUARIO_MOD"),
  2558. 'OTPR_FEMO AS FECHA_MODIFICACION'
  2559. ])->join(DB::raw('S002V01TEQUI EQIN'), 'EQIN.EQUI_COEQ', '=', 'OTPR_EQIN')
  2560. ->join(DB::raw('S002V01TUSUA USRE'), 'USRE.USUA_IDUS', '=', 'OTPR_USRE')
  2561. ->leftJoin(DB::raw('S002V01TUSUA USMO'), 'USMO.USUA_IDUS', '=', 'OTPR_USMO')
  2562. ->orderBy('OTPR_FERE', 'desc')->where('OTPR_NULI', '=', $line);
  2563. if($startDateStr != null){
  2564. $qry->where('OTPR_FERE', '>=', $startDateStr);
  2565. }
  2566. if($endDateStr != null){
  2567. $qry->where('OTPR_FERE', '<=', $endDateStr);
  2568. }
  2569. $data = $qry->get()->all();
  2570. $columns = [
  2571. 'ID',
  2572. 'DESCRIPCIÓN',
  2573. 'INSTRUCCIONES',
  2574. 'EQUIPAMIENTO RELACIONADO',
  2575. 'FECHA DE INICIO',
  2576. 'FECHA DE TÉRMINO',
  2577. 'ANÁLISIS DE COSTOS',
  2578. 'DURACIÓN TOTAL ESTIMADA',
  2579. 'RECURSOS NECESARIOS',
  2580. 'DOCUMENTOS RELACIONADOS',
  2581. 'CONTRATOS RELACIONADOS',
  2582. 'ACTIVADOR RELACIONADO',
  2583. 'CLASIFICACIÓN',
  2584. 'ESTADO',
  2585. 'USUARIO QUE REGISTRÓ',
  2586. 'FECHA DEL REGISTRO',
  2587. 'USUARIO QUE REALIZÓ LA ÚLTIMA MODIFICACIÓN',
  2588. 'FECHA DE MODIFICACIÓN',
  2589. ];
  2590. break;
  2591. case 'S002V01R32HSPM':
  2592. $qry = DB::table('S002V01TAFAL')->select([
  2593. DB::raw("CONCAT(
  2594. IF(AFAL_NULI < 10, CONCAT('0', AFAL_NULI), AFAL_NULI),
  2595. '-', AFAL_COMO, '-', AFAL_CLDO, '-', AFAL_FECR, '-',
  2596. CONCAT(
  2597. IF(CHAR_LENGTH(AFAL_NUSE) = 1, CONCAT('00000', AFAL_NUSE), ''),
  2598. IF(CHAR_LENGTH(AFAL_NUSE) = 2, CONCAT('0000', AFAL_NUSE), ''),
  2599. IF(CHAR_LENGTH(AFAL_NUSE) = 3, CONCAT('000', AFAL_NUSE), ''),
  2600. IF(CHAR_LENGTH(AFAL_NUSE) = 4, CONCAT('00', AFAL_NUSE), ''),
  2601. IF(CHAR_LENGTH(AFAL_NUSE) = 5, CONCAT('0', AFAL_NUSE), ''),
  2602. IF(CHAR_LENGTH(AFAL_NUSE) = 6, AFAL_NUSE, '')
  2603. )
  2604. ) AS CODIGO"),
  2605. DB::raw("CONCAT(
  2606. IF(CHAR_LENGTH(AFAL_NUVE) = 1, CONCAT('0', AFAL_NUVE), ''),
  2607. IF(CHAR_LENGTH(AFAL_NUVE) = 2, AFAL_NUVE, '')
  2608. ) AS VERSION"),
  2609. DB::raw("CONCAT(AFAL_NOAR, '.', AFAL_EXTE) AS NOMBRE"),
  2610. 'AFAL_TAMA AS TAMANIO',
  2611. 'AFAL_ESTA AS ESTADO',
  2612. 'AFAL_USAC AS ACCESO',
  2613. DB::raw("CONCAT(USRE.USUA_NOMB, ' ', USRE.USUA_APPA, IF(ISNULL(USRE.USUA_APMA), '', ' '), IF(ISNULL(USRE.USUA_APMA), '', USRE.USUA_APMA), ' (', AFAL_USRE, ')') AS USUARIO_REG"),
  2614. 'AFAL_FERE AS FECHA_REGISTRO',
  2615. DB::raw("IF(ISNULL(USMO.USUA_NOMB), '-', CONCAT(USMO.USUA_NOMB, ' ', USMO.USUA_APPA, IF(ISNULL(USMO.USUA_APMA), '', ' '), IF(ISNULL(USMO.USUA_APMA), '', USMO.USUA_APMA), ' (', AFAL_USMO, ')')) AS USUARIO_MOD"),
  2616. 'AFAL_FEMO AS FECHA_MODIFICACION'
  2617. ])->join(DB::raw('S002V01TUSUA USRE'), 'USRE.USUA_IDUS', '=', 'AFAL_USRE')
  2618. ->leftJoin(DB::raw('S002V01TUSUA USMO'), 'USMO.USUA_IDUS', '=', 'AFAL_USMO')
  2619. ->orderBy('AFAL_FERE', 'desc')->where([
  2620. ['AFAL_NULI', '=', $line],
  2621. ['AFAL_COMO', '=', 'GMPR'],
  2622. ['AFAL_NOAR', 'LIKE', 'simulacion_orden%']
  2623. ]);
  2624. if($startDateStr != null){
  2625. $qry->where('AFAL_FERE', '>=', $startDateStr);
  2626. }
  2627. if($endDateStr != null){
  2628. $qry->where('AFAL_FERE', '<=', $endDateStr);
  2629. }
  2630. $data = $qry->get()->all();
  2631. $columns = [
  2632. 'CÓDIGO',
  2633. 'VERSIÓN',
  2634. 'NOMBRE DEL DOCUMENTO',
  2635. 'TAMAÑO EN BYTES',
  2636. 'ESTADO',
  2637. 'USUARIOS CON ACCESO',
  2638. 'USUARIO QUE REGISTRÓ',
  2639. 'FECHA DEL REGISTRO',
  2640. 'USUARIO QUE REALIZÓ LA ÚLTIMA MODIFICACIÓN',
  2641. 'FECHA DE MODIFICACIÓN',
  2642. ];
  2643. break;
  2644. case 'S002V01R33HVTN':
  2645. $qry = DB::table('S002V01TRVTN')->select([
  2646. 'RVTN_IDVI AS ID_VISITA',
  2647. DB::raw("CONCAT(RVTN_EQRE, ' - ', EQRE.EQUI_TIPO, ' - ', EQRE.EQUI_MODE, ' (', EQRE.EQUI_IDEQ, ')') AS EQUIPAMIENTO"),
  2648. ])->join(DB::raw('S002V01TEQUI EQRE'), 'EQRE.EQUI_COEQ', '=', 'RVTN_EQRE');
  2649. $data = $qry->get()->all();
  2650. var_dump($data);
  2651. break;
  2652. }
  2653. $spreadsheet = $this->exportExcel($data, $columns);
  2654. if(is_null($spreadsheet)){
  2655. return $this->responseController->makeResponse(true, 'La hoja de cálculo no pudo ser generada', [], 500);
  2656. }
  2657. $now = $this->functionsController->now();
  2658. $nowStr = $now->toDateTimeString();
  2659. $dateTimeArr = explode(" ", $nowStr);
  2660. $dateArr = explode("-", $dateTimeArr[0]);
  2661. $year = substr($dateArr[0], 2);
  2662. $como = 'PCSA';
  2663. $cldo = 'IN';
  2664. $fecr = $year . $dateArr[1] . $dateArr[2];
  2665. $sec = DB::table('S002V01TAFAL')->where([
  2666. ['AFAL_NULI', '=', $line],
  2667. ['AFAL_COMO', '=', $como],
  2668. ['AFAL_CLDO', '=', $cldo],
  2669. ])->orderBy('AFAL_NUSE', 'desc')->first();
  2670. $nuse = "";
  2671. if(is_null($sec)){
  2672. $nuse = '000001';
  2673. }else{
  2674. $secu = "" . intval($sec->AFAL_NUSE) + 1 . "";
  2675. $nuse = "";
  2676. for($i = strlen($secu); $i < 6; $i++){
  2677. $nuse .= "0";
  2678. }
  2679. $nuse = $nuse . $secu;
  2680. }
  2681. $noar = str_replace(' ', '_',$spreadsheetObj['name']);
  2682. $exte = "xlsx";
  2683. $ver = DB::table('S002V01TAFAL')->where([
  2684. ['AFAL_NULI', '=', $line],
  2685. ['AFAL_COMO', '=', $como],
  2686. ['AFAL_CLDO', '=', $cldo],
  2687. ['AFAL_NOAR', '=', $noar],
  2688. ['AFAL_EXTE', '=', $exte],
  2689. ])->orderBy('AFAL_NUVE', 'desc')->first();
  2690. $nuve = "";
  2691. if(is_null($ver)){
  2692. $nuve = "01";
  2693. }else{
  2694. $vers = intval($ver->AFAL_NUVE) + 1;
  2695. $nuve = $vers < 10 ? "0$vers" : "$vers";
  2696. }
  2697. $line = $line < 10 ? "0$line" : "$line";
  2698. $filePath = $this->functionsController->getBasePath() . '\public_files\\';
  2699. $fileName = "$line-$como-$cldo-$fecr-$nuse=$nuve=$noar.$exte";
  2700. $tempFile = $filePath . $fileName;
  2701. if(file_exists($tempFile)){
  2702. unlink($tempFile);
  2703. }
  2704. //$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
  2705. //$writer->save($tempFile);
  2706. var_dump($tempFile);
  2707. }
  2708. }