| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846 |
- <?php
- namespace App\Http\Controllers;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Validator;
- use Illuminate\Support\Carbon;
- class CountersActivatorsController extends Controller{
- private $responseController;
- private $encryptionController;
- private $functionsController;
- public function __construct(){
- $this->responseController = new ResponseController();
- $this->encryptionController = new EncryptionController();
- $this->functionsController = new FunctionsController();
- }
- public function getActivators($idUser, $line) {
- DB::enableQueryLog();
- $idUser = $this->encryptionController->decrypt($idUser);
- if(!$idUser){
- return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición no está encriptado correctamente.', [], 400);
- }
- $usr = DB::table('S002V01TUSUA')->where([
- ['USUA_NULI', '=', $line],
- ['USUA_IDUS', '=', $idUser],
- ])->first();
- if(is_null($usr)){
- return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado.', [], 404);
- }
-
- $activators = DB::table('S002V01TACTI')->select([
- 'ACTI_IDAC AS ID_ACTIVADOR',
- 'ACTI_PRIO AS PRIORIDAD',
- 'ACTI_TIAC AS TIPO_ACTIVADOR',
- 'ACTI_CORE AS ID_CONTADOR',
- 'ACTI_ESTA AS ESTADO'
- ])->get()->all();
- foreach($activators as $key=>$activator){
- $activator->ID_ACTIVADOR = $this->encryptionController->encrypt($activator->ID_ACTIVADOR);
- $activator->ID_CONTADOR = $this->encryptionController->encrypt($activator->ID_CONTADOR);
- $activators[$key] = $activator;
- }
- $now = $this->functionsController->now();
- $nowStr = $now->toDateTimeString();
- $actions = DB::getQueryLog();
- $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
- $idac = $this->functionsController->registerActivity(
- $line,
- 'S002V01M06COAC',
- 'S002V01F01GEAC',
- 'S002V01P01COAC',
- 'Consulta',
- "El usuario $name (" . $usr->USUA_IDUS . ") consultó los activadores registrados.",
- $idUser,
- $nowStr,
- 'S002V01S02ACTI'
- );
- $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
- return $this->responseController->makeresponse(false, "EXITO", $activators);
- }
- public function getActivatorsByType($type, $idUser, $line){
- DB::enableQueryLog();
- $idUser = $this->encryptionController->decrypt($idUser);
- if(!$idUser){
- return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición no está encriptado correctamente.', [], 400);
- }
- $usr = DB::table('S002V01TUSUA')->where([
- ['USUA_NULI', '=', $line],
- ['USUA_IDUS', '=', $idUser],
- ])->first();
- if(is_null($usr)){
- return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado.', [], 404);
- }
-
- $activators = DB::table('S002V01TACTI')->select([
- 'ACTI_IDAC AS IDACTIVADOR',
- 'ACTI_PRIO AS PRIORIDAD',
- 'ACTI_TIAC AS TIPOACTIVACION',
- 'ACTI_COAC AS CONDICIONES',
- 'CONA_COEQ AS CODIGO_EQUIPAMIENTO',
- ])->where([
- ['ACTI_NULI', '=', $line],
- ['ACTI_TIAC', '=', $type]
- ])->join('S002V01TCONA', 'CONA_IDCO', '=', 'ACTI_CORE')->get()->all();
- foreach($activators as $key=>$activator){
- $activator->IDACTIVADOR = $this->encryptionController->encrypt($activator->IDACTIVADOR);
- $activator->PRIORIDAD = $this->encryptionController->encrypt($activator->PRIORIDAD);
- $activator->CODIGO_EQUIPAMIENTO = $this->encryptionController->encrypt($activator->CODIGO_EQUIPAMIENTO);
- if($activator->TIPOACTIVACION == 'Medida' || $activator->TIPOACTIVACION == 'Valor'){
- $activationConfigArr = json_decode($activator->CONDICIONES, true);
- $magnitude = DB::table('S002V01TMAGN')->where([
- ['MAGN_NULI', '=', $line],
- ['MAGN_IDMA', '=', $activationConfigArr['magnitude']]
- ])->first();
- $unit = DB::table('S002V01TLIME')->where([
- ['LIME_NULI', '=', $line],
- ['LIME_IDME', '=', $activationConfigArr['unit']],
- ['LIME_MAGN', '=', $activationConfigArr['magnitude']],
- ])->first();
- $activationConfigArr['magnitude'] = $magnitude->MAGN_MAGN . " (" . $activationConfigArr['magnitude'] . ")";
- $activationConfigArr['unit'] = $unit->LIME_ACME . " - " . $unit->LIME_NOME . " (" . $activationConfigArr['unit'] . ")";
- $activator->CONDICIONES = json_encode($activationConfigArr);
- }
- $activators[$key] = $activator;
- }
- $now = $this->functionsController->now();
- $nowStr = $now->toDateTimeString();
- $actions = DB::getQueryLog();
- $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
- $idac = $this->functionsController->registerActivity(
- $line,
- 'S002V01M06COAC',
- 'S002V01F01GEAC',
- 'S002V01P01COAC',
- 'Consulta',
- "El usuario $name (" . $usr->USUA_IDUS . ") consultó los contadores de tipo $type.",
- $idUser,
- $nowStr,
- 'S002V01S02ACTI'
- );
- $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
- return $this->responseController->makeresponse(false, "EXITO", $activators);
- }
- public function registerActivator(Request $request){
- DB::enableQueryLog();
- $validator = Validator::make($request->all(), [
- 'id_user' => 'required|string',
- 'linea' => 'required|integer',
- 'priority' => 'required|string|in:1,2,3,4',
- 'type' => 'required|string|in:CA,SI,ME,VA',
- 'condition' => 'required|json',
- 'counter' => 'required|string'
- ]);
- if($validator->fails()){
- return $this->responseController->makeResponse(
- true,
- "Se encontraron uno o más errores.",
- $this->responseController->makeErrors(
- $validator->errors()->messages()
- ),
- 401
- );
- }
- //$priorities = ['MA' => '1', 'AL' => '2', 'ME' => '3', 'BA' => '4'];
- $types = ['CA' => 'Calendario', 'SI' => 'Sintoma', 'ME' => 'Medida', 'VA' => 'Valor'];
- $form = $request->all();
- $idUser = $this->encryptionController->decrypt($form['id_user']);
- if(!$idUser){
- return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición no está encriptado correctamente.', [], 400);
- }
- $usr = DB::table('S002V01TUSUA')->where([
- ['USUA_NULI', '=', $form['linea']],
- ['USUA_IDUS', '=', $idUser],
- ])->first();
- if(is_null($usr)){
- return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado.', [], 404);
- }
- $idCounter = $this->encryptionController->decrypt($form['counter']);
- if(!$idCounter){
- return $this->responseController->makeResponse(true, 'El ID del contador relacionado no está encriptado correctamente.', [], 400);
- }
- $counter = DB::table('S002V01TCONA')->where([
- ['CONA_NULI', '=', $form['linea']],
- ['CONA_IDCO', '=', $idCounter]
- ])->first();
- if(is_null($counter)){
- return $this->responseController->makeResponse(true, 'El contador relacionado no está registrado.', [], 404);
- }
- $priority = $form['priority'];
- $type = $types[$form['type']];
- $conditionArr = json_decode($form['condition'], true);
- if(count($conditionArr) == 0){
- return $this->responseController->makeResponse(true, 'El arreglo de la condición de activación está vació.', [], 400);
- }else{
- switch($form['type']){
- case 'CA':
- if(count($conditionArr) != 5){
- return $this->responseController->makeResponse(true, 'El arreglo de la condición tiene un formato inválido.', [], 400);
- }
- $keysCA = ['startDate', 'startHour', 'repeat', 'customRepeat', 'color'];
- foreach($keysCA as $key){
- if(!array_key_exists($key, $conditionArr)){
- return $this->responseController->makeResponse(true, "El arreglo de la condición no contiene el elemento '$key'.", [], 400);
- }
- }
- break;
- case 'SI':
- if(count($conditionArr) != 6){
- return $this->responseController->makeResponse(true, 'El arreglo de la condición tiene un formato inválido.', [], 400);
- }
- $keysSI = ['sign', 'startDate', 'startHour', 'repeat', 'customRepeat', 'color'];
- foreach($keysSI as $key){
- if(!array_key_exists($key, $conditionArr)){
- return $this->responseController->makeResponse(true, "El arreglo de la condición no contiene el elemento '$key'.", [], 400);
- }
- }
- $idSymptom = $this->encryptionController->decrypt($conditionArr['sign']);
- if(!$idSymptom){
- return $this->responseController->makeResponse(true, 'El ID del síntoma relacionado no está encriptado correctamente.', [], 400);
- }
- $symptom = DB::table('S002V01TLISI')->where([
- ['LISI_IDSI', '=', $idSymptom],
- ['LISI_NULI', '=', $form['linea']]
- ])->first();
- if(is_null($symptom)){
- return $this->responseController->makeResponse(true, 'El síntoma relacionado no está registrado.', [], 404);
- }else if($symptom->LISI_ESTA == 'Eliminado'){
- return $this->responseController->makeResponse(true, 'El síntoma relacionado está eliminado.', [], 404);
- }
- $conditionArr['sign'] = $idSymptom;
- break;
- case 'ME':
- if(count($conditionArr) != 7){
- return $this->responseController->makeResponse(true, 'El arreglo de la condición tiene un formato inválido.', [], 400);
- }
- $keysSI = ['minValue', 'maxValue', 'magnitude', 'customMagnitude', 'unit', 'customUnit', 'color'];
- foreach($keysSI as $key){
- if(!array_key_exists($key, $conditionArr)){
- return $this->responseController->makeResponse(true, "El arreglo de la condición no contiene el elemento '$key'.", [], 400);
- }
- }
- $idMagnitude = $this->encryptionController->decrypt($conditionArr['magnitude']);
- if(!$idMagnitude){
- return $this->responseController->makeResponse(true, 'El ID de la magnitud relacionada no está encriptado correctamente.', [], 400);
- }
- $magnitude = DB::table('S002V01TMAGN')->where([
- ['MAGN_NULI', '=', $form['linea']],
- ['MAGN_IDMA', '=', $idMagnitude]
- ])->first();
- if(is_null($magnitude)){
- return $this->responseController->makeResponse(true, 'La magnitud relacionada no está registrado.', [], 404);
- }else if($magnitude->MAGN_ESTA == 'Eliminado'){
- return $this->responseController->makeResponse(true, 'La magnitud relacionada está eliminada.', [], 404);
- }
- $idUnit = $this->encryptionController->decrypt($conditionArr['unit']);
- if(!$idUnit){
- return $this->responseController->makeResponse(true, 'El ID de la unidad relacionada no está encriptado correctamente.', [], 400);
- }
- $unit = DB::table('S002V01TLIME')->where([
- ['LIME_IDME', '=', $idUnit],
- ['LIME_NULI', '=', $form['linea']],
- ['LIME_MAGN', '=', $idMagnitude],
- ])->first();
- if(is_null($unit)){
- return $this->responseController->makeResponse(true, 'La unidad relacionada no está registrado.', [], 404);
- }else if($unit->LIME_ESTA == 'Eliminado'){
- return $this->responseController->makeResponse(true, 'La unidad relacionada está eliminada.', [], 404);
- }
- $conditionArr['magnitude'] = $idMagnitude ;
- $conditionArr['unit'] = $idUnit;
- break;
- case 'VA':
- if(count($conditionArr) != 7){
- return $this->responseController->makeResponse(true, 'El arreglo de la condición tiene un formato inválido.', [], 400);
- }
- $keysVA = ['comparison', 'limitValue', 'magnitude', 'customMagnitude', 'unit', 'customUnit', 'color'];
- foreach($keysVA as $key){
- if(!array_key_exists($key, $conditionArr)){
- return $this->responseController->makeResponse(true, "El arreglo de la condición no contiene el elemento '$key'.", [], 400);
- }
- }
- $idMagnitude = $this->encryptionController->decrypt($conditionArr['magnitude']);
- if(!$idMagnitude){
- return $this->responseController->makeResponse(true, 'El ID de la magnitud relacionada no está encriptado correctamente.', [], 400);
- }
- $magnitude = DB::table('S002V01TMAGN')->where([
- ['MAGN_NULI', '=', $form['linea']],
- ['MAGN_IDMA', '=', $idMagnitude]
- ])->first();
- if(is_null($magnitude)){
- return $this->responseController->makeResponse(true, 'La magnitud relacionada no está registrado.', [], 404);
- }else if($magnitude->MAGN_ESTA == 'Eliminado'){
- return $this->responseController->makeResponse(true, 'La magnitud relacionada está eliminada.', [], 404);
- }
- $idUnit = $this->encryptionController->decrypt($conditionArr['unit']);
- if(!$idUnit){
- return $this->responseController->makeResponse(true, 'El ID de la unidad relacionada no está encriptado correctamente.', [], 400);
- }
- $unit = DB::table('S002V01TLIME')->where([
- ['LIME_IDME', '=', $idUnit],
- ['LIME_NULI', '=', $form['linea']],
- ['LIME_MAGN', '=', $idMagnitude],
- ])->first();
- if(is_null($unit)){
- return $this->responseController->makeResponse(true, 'La unidad relacionada no está registrado.', [], 404);
- }else if($unit->LIME_ESTA == 'Eliminado'){
- return $this->responseController->makeResponse(true, 'La unidad relacionada está eliminada.', [], 404);
- }
- $conditionArr['magnitude'] = $idMagnitude ;
- $conditionArr['unit'] = $idUnit;
- break;
- default:
- return $this->responseController->makeResponse(true, 'El tipo de contador es inválido.', [], 400);
- break;
- }
- }
- $conditionStr = json_encode($conditionArr);
- $now = $this->functionsController->now();
- $nowStr = $now->toDateTimeString();
- $idCont = DB::table('S002V01TACTI')->insertGetId([
- 'ACTI_NULI' => $form['linea'],
- 'ACTI_PRIO' => $priority,
- 'ACTI_TIAC' => $type,
- 'ACTI_COAC' => $conditionStr,
- 'ACTI_CORE' => $idCounter,
- 'ACTI_USRE' => $idUser,
- 'ACTI_FERE' => $nowStr
- ]);
- $actions = DB::getQueryLog();
- $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
-
- $idac = $this->functionsController->registerActivity(
- $form['linea'],
- 'S002V01M06COAC',
- 'S002V01F01GEAC',
- 'S002V01P02REAC',
- 'Registro',
- "El usuario $name (" . $usr->USUA_IDUS . ") registró el contador #$idCont.",
- $idUser,
- $nowStr,
- 'S002V01S02ACTI'
- );
- $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $form['linea']);
- return $this->responseController->makeResponse(false, 'EXITO.', ['IDCONT' => $idCont]);
- }
- public function getActivator($idActivator, $idUser, $line){
- DB::enableQueryLog();
- $idUser = $this->encryptionController->decrypt($idUser);
- if(!$idUser){
- return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición no está encriptado correctamente.', [], 400);
- }
- $usr = DB::table('S002V01TUSUA')->where([
- ['USUA_NULI', '=', $line],
- ['USUA_IDUS', '=', $idUser],
- ])->first();
- if(is_null($usr)){
- return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado.', [], 404);
- }
-
- $idActivator = $this->encryptionController->decrypt($idActivator);
- if(!$idActivator){
- return $this->responseController->makeResponse(true, 'El ID del activador solicitado no está encriptado correctamente.', [], 400);
- }
-
- $activator = DB::table('S002V01TACTI')->select([
- 'ACTI_IDAC AS IDACTIVADOR',
- 'ACTI_PRIO AS PRIORIDAD',
- 'ACTI_TIAC AS TIPOACTIVADOR',
- 'ACTI_COAC AS CONDICIONES',
- 'ACTI_CORE AS CONTADOR',
- 'ACTI_ESTA AS ESTADO',
- 'ACTI_USRE AS USRREG',
- 'ACTI_FERE AS FECREG',
- 'ACTI_USMO AS USRMOD',
- 'ACTI_FEMO AS FECMOD',
- ])->where([
- ['ACTI_IDAC', '=', $idActivator],
- ['ACTI_NULI', '=', $line],
- ])->first();
- if(is_null($activator)){
- return $this->responseController->makeResponse(true, 'El activador solicitado no está registrado.', [], 404);
- }
- $activator->IDACTIVADOR = $this->encryptionController->encrypt($activator->IDACTIVADOR);
- $activator->CONTADOR = $this->encryptionController->encrypt($activator->CONTADOR);
-
- $conditionsArr = json_decode($activator->CONDICIONES, true);
- foreach($conditionsArr as $key=>$val){
- $encryptedParams = ['sign', 'magnitude', 'unit'];
- if(in_array($key, $encryptedParams)){
- switch($key){
- case 'sign':
- $symptom = DB::table('S002V01TLISI')->where([
- ['LISI_NULI', '=', $line],
- ['LISI_IDSI', '=', $val]
- ])->first();
- $conditionsArr[$key] = $symptom->LISI_NOSI . " (" . $val . ")";
- break;
- case 'magnitude':
- $magnitude = DB::table('S002V01TMAGN')->where([
- ['MAGN_NULI', '=', $line],
- ['MAGN_IDMA', '=', $val]
- ])->first();
- $conditionsArr[$key] = $magnitude->MAGN_MAGN . " (" . $val . ")";
- break;
- case 'unit':
- $unit = DB::table('S002V01TLIME')->where([
- ['LIME_NULI', '=', $line],
- ['LIME_IDME', '=', $val]
- ])->first();
- $conditionsArr[$key] = $unit->LIME_NOME . " (" . $val . ") - " . $unit->LIME_ACME;
- break;
- }
- }
- }
- $activator->CONDICIONES = json_encode($conditionsArr);
- $usrReg = DB::table('S002V01TUSUA')->where([
- ['USUA_NULI', '=', $line],
- ['USUA_IDUS', '=', $activator->USRREG]
- ])->first();
- $nameReg = $this->functionsController->joinName($usrReg->USUA_NOMB, $usrReg->USUA_APPA, $usrReg->USUA_APMA);
- $activator->USRREG = $nameReg . " (" . $activator->USRREG . ")";
- if(!is_null($activator->USRMOD)){
- $usrMod = DB::table('S002V01TUSUA')->where([
- ['USUA_NULI', '=', $line],
- ['USUA_IDUS', '=', $activator->USRMOD]
- ])->first();
-
- $nameMod = $this->functionsController->joinName($usrMod->USUA_NOMB, $usrMod->USUA_APPA, $usrMod->USUA_APMA);
- $activator->USRMOD = $nameMod . " (" . $activator->USRMOD . ")";
- }
- $now = $this->functionsController->now();
- $nowStr = $now->toDateTimeString();
- $actions = DB::getQueryLog();
- $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
- $idac = $this->functionsController->registerActivity(
- $line,
- 'S002V01M06COAC',
- 'S002V01F01GEAC',
- 'S002V01P01COAC',
- 'Consulta',
- "El usuario $name (" . $usr->USUA_IDUS . ") consultó la información del activador #$idActivator",
- $idUser,
- $nowStr,
- 'S002V01S02ACTI'
- );
- $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
- return $this->responseController->makeresponse(false, "EXITO", $activator);
- }
- public function registerCounter(Request $request) {
- DB::enableQueryLog();
- $validator = Validator::make($request->all(), [
- 'id_user' => 'required|string',
- 'linea' => 'required|integer',
- 'scada' => 'required|string',
- 'equipment' => 'required|string',
- 'time_interval' => 'required|numeric',
- 'time_interval_unit' => 'required|string|in:seg,min,hor,dia',
- 'time_interval_tolerance' => 'required|numeric',
- 'time_interval_tolerance_unit' => 'required|string|in:seg,min,hor,dia'
- ]);
- if($validator->fails()){
- return $this->responseController->makeResponse(
- true,
- "Se encontraron uno o más errores.",
- $this->responseController->makeErrors(
- $validator->errors()->messages()
- ),
- 401
- );
- }
- $form = $request->all();
- $idUser = $this->encryptionController->decrypt($form['id_user']);
- if(!$idUser){
- return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición no está encriptado correctamente.', [], 400);
- }
- $usr = DB::table('S002V01TUSUA')->where([
- ['USUA_NULI', '=', $form['linea']],
- ['USUA_IDUS', '=', $idUser],
- ])->first();
- if(is_null($usr)){
- return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado.', [], 404);
- }
- $idSCADA = $this->encryptionController->decrypt($form['scada']);
- if(!$idSCADA){
- return $this->responseController->makeResponse(true, 'El ID del SCADA relacionado no está encriptado correctamente.', [], 400);
- }
- $scada = DB::table('S002V01TLISC')->where([
- ['LISC_IDSC', '=', $idSCADA],
- ['LISC_NULI', '=', $form['linea']],
- ])->first();
- if(is_null($scada)){
- return $this->responseController->makeResponse(true, 'El SCADA relacionado no está registrado.', [], 404);
- }
- $equipmentCode = $this->encryptionController->decrypt($form['equipment']);
- if(!$equipmentCode){
- return $this->responseController->makeResponse(true, 'El código del equipamiento relacionado no está encriptado correctamente.', [], 400);
- }
- $equipment = DB::table('S002V01TEQUI')->where([
- ['EQUI_NULI', '=', $form['linea']],
- ['EQUI_COEQ', '=', $equipmentCode],
- ])->first();
- if(is_null($equipment)){
- return $this->responseController->makeResponse(true, 'El equipamiento relacionado no está registrado.', [], 404);
- }
- $now = $this->functionsController->now();
- $nowStr = $now->toDateTimeString();
- $idCont = DB::table('S002V01TCONA')->insertGetId([
- 'CONA_NULI' => $form['linea'],
- 'CONA_INLE' => $form['time_interval'],
- 'CONA_UTIL' => $form['time_interval_unit'],
- 'CONA_TOIN' => $form['time_interval_tolerance'],
- 'CONA_UTTI' => $form['time_interval_tolerance_unit'],
- 'CONA_IDSC' => $idSCADA,
- 'CONA_COEQ' => $equipmentCode,
- 'CONA_COVI' => '[]',
- 'CONA_USRE' => $idUser,
- 'CONA_FERE' => $nowStr,
- ]);
- $actions = DB::getQueryLog();
- $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
-
- $idac = $this->functionsController->registerActivity(
- $form['linea'],
- 'S002V01M06COAC',
- 'S002V01F01GECO',
- 'S002V01P02RECO',
- 'Registro',
- "El usuario $name (" . $usr->USUA_IDUS . ") registró el contador #$idCont.",
- $idUser,
- $nowStr,
- 'S002V01S01CONT'
- );
- $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $form['linea']);
- return $this->responseController->makeResponse(false, 'EXITO.');
- }
- public function getCounters($idUser, $line) {
- DB::enableQueryLog();
- $idUser = $this->encryptionController->decrypt($idUser);
- if(!$idUser){
- return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición no está encriptado correctamente.', [], 400);
- }
- $usr = DB::table('S002V01TUSUA')->where([
- ['USUA_NULI', '=', $line],
- ['USUA_IDUS', '=', $idUser],
- ])->first();
- if(is_null($usr)){
- return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado.', [], 404);
- }
- $counters = DB::table('S002V01TCONA')->select([
- 'CONA_IDCO AS ID_CONTADOR',
- 'CONA_IDSC AS ID_SCADA',
- 'LISC_NOSC AS SCADA',
- 'CONA_COEQ AS CODIGO_EQUIPAMIENTO',
- 'EQUI_TIPO AS TIPO_EQUIPAMIENTO',
- 'EQUI_MODE AS MODELO_EQUIPAMIENTO',
- 'EQUI_IDEQ AS ID_EQUIPAMIENTO',
- 'CONA_ESTA AS ESTADO',
- ])->join('S002V01TLISC', 'LISC_IDSC', '=', 'CONA_IDSC')
- ->join('S002V01TEQUI', 'EQUI_COEQ', '=', 'CONA_COEQ')
- ->get()->all();
- foreach($counters as $key=>$counter){
- $activators = DB::table('S002V01TACTI')->where([
- ['ACTI_NULI', '=', $line],
- ['ACTI_CORE', '=', $counter->ID_CONTADOR]
- ])->get()->all();
- $counter->ID_CONTADOR = $this->encryptionController->encrypt($counter->ID_CONTADOR);
- $counter->ID_SCADA = $this->encryptionController->encrypt($counter->ID_SCADA);
- $counter->CODIGO_EQUIPAMIENTO = $this->encryptionController->encrypt($counter->CODIGO_EQUIPAMIENTO);
- $counter->ID_EQUIPAMIENTO = $this->encryptionController->encrypt($counter->ID_EQUIPAMIENTO);
- $counter->TIENE_ACTIVADOR = count($activators) > 0;
- $counter->ACTIVADOR = count($activators) > 0 ? $this->encryptionController->encrypt($activators[0]->ACTI_IDAC) : null;
- $counters[$key] = $counter;
- }
- $now = $this->functionsController->now();
- $nowStr = $now->toDateTimeString();
- $actions = DB::getQueryLog();
- $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
- $idac = $this->functionsController->registerActivity(
- $line,
- 'S002V01M06COAC',
- 'S002V01F01GECO',
- 'S002V01P01COCO',
- 'Consulta',
- "El usuario $name (" . $usr->USUA_IDUS . ") consultó los contadores registrados.",
- $idUser,
- $nowStr,
- 'S002V01S01CONT'
- );
- $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
- return $this->responseController->makeresponse(false, "EXITO", $counters);
- }
- public function getCounter($idCounter, $idUser, $line) {
- DB::enableQueryLog();
- $idUser = $this->encryptionController->decrypt($idUser);
- if(!$idUser){
- return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición no está encriptado correctamente.', [], 400);
- }
- $usr = DB::table('S002V01TUSUA')->where([
- ['USUA_NULI', '=', $line],
- ['USUA_IDUS', '=', $idUser],
- ])->first();
- if(is_null($usr)){
- return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado.', [], 404);
- }
- $idCounter = $this->encryptionController->decrypt($idCounter);
- if(!$idCounter){
- return $this->responseController->makeResponse(true, 'El ID del contador no está encriptado correctamente.', [], 400);
- }
- $counter = DB::table('S002V01TCONA')->select([
- 'CONA_IDCO AS ID_CONTADOR',
- 'CONA_IDSC AS ID_SCADA',
- 'LISC_NOSC AS SCADA',
- 'CONA_COEQ AS CODIGO_EQUIPAMIENTO',
- 'EQUI_TIPO AS TIPO_EQUIPAMIENTO',
- 'EQUI_MODE AS MODELO_EQUIPAMIENTO',
- 'EQUI_IDEQ AS ID_EQUIPAMIENTO',
- 'CONA_INLE AS INTERVALO',
- 'CONA_UTIL AS UNIDAD_INTERVALO',
- 'CONA_TOIN AS TOLERANCIA_INTERVALO',
- 'CONA_UTTI AS UNIDAD_TOLERANCIA_INTERVALO',
- 'CONA_COVI AS CONTADORES_VINCULADOS',
- 'CONA_ESTA AS ESTADO',
- 'CONA_USRE AS USRREG',
- 'CONA_FERE AS FECREG',
- 'CONA_USMO AS USRMOD',
- 'CONA_FEMO AS FECMOD',
- ])->join('S002V01TLISC', 'LISC_IDSC', '=', 'CONA_IDSC')
- ->join('S002V01TEQUI', 'EQUI_COEQ', '=', 'CONA_COEQ')
- ->where([
- ['CONA_IDCO', '=', $idCounter],
- ['CONA_NULI', '=', $line]
- ])->first();
- if(is_null($counter)){
- return $this->responseController->makeResponse(true, 'El contador solicitado no está registrado.', [], 404);
- }
- $counter->ID_CONTADOR = $this->encryptionController->encrypt($counter->ID_CONTADOR);
- $counter->ID_SCADA = $this->encryptionController->encrypt($counter->ID_SCADA);
- $counter->CODIGO_EQUIPAMIENTO = $this->encryptionController->encrypt($counter->CODIGO_EQUIPAMIENTO);
- $counter->ID_EQUIPAMIENTO = $this->encryptionController->encrypt($counter->ID_EQUIPAMIENTO);
- $relatedCountersArr = json_decode($counter->CONTADORES_VINCULADOS, true);
- foreach($relatedCountersArr as $key=>$counterStr){
- $counterStr = $this->encryptionController->encrypt($counterStr);
- $relatedCountersArr[$key] = $counterStr;
- }
- $relatedCountersStr = json_encode($relatedCountersArr);
- $counter->CONTADORES_VINCULADOS = $relatedCountersStr;
- $usrReg = DB::table('S002V01TUSUA')->where([
- ['USUA_IDUS', '=', $counter->USRREG],
- ['USUA_NULI', '=', $line]
- ])->first();
- $nameReg = $this->functionsController->joinName($usrReg->USUA_NOMB, $usrReg->USUA_APPA, $usrReg->USUA_APMA);
- $counter->USRREG = $nameReg . " (" . $counter->USRREG . ")";
- if(!is_null($counter->USRMOD)){
- $usrMod = DB::table('S002V01TUSUA')->where([
- ['USUA_IDUS', '=', $counter->USRMOD],
- ['USUA_NULI', '=', $line]
- ])->first();
-
- $nameMod = $this->functionsController->joinName($usrMod->USUA_NOMB, $usrMod->USUA_APPA, $usrMod->USUA_APMA);
- $counter->USRMOD = $nameMod . " (" . $counter->USRMOD . ")";
- }
- $now = $this->functionsController->now();
- $nowStr = $now->toDateTimeString();
- $actions = DB::getQueryLog();
- $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
- $idac = $this->functionsController->registerActivity(
- $line,
- 'S002V01M06COAC',
- 'S002V01F01GECO',
- 'S002V01P01COCO',
- 'Consulta',
- "El usuario $name (" . $usr->USUA_IDUS . ") consultó el contador #$idCounter.",
- $idUser,
- $nowStr,
- 'S002V01S01CONT'
- );
- $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
- return $this->responseController->makeresponse(false, "EXITO", $counter);
- }
- public function updateCounter(Request $request) {
- DB::enableQueryLog();
- $validator = Validator::make($request->all(), [
- 'id_user' => 'required|string',
- 'linea' => 'required|integer',
- 'scada' => 'required|string',
- 'equipment' => 'required|string',
- 'id_counter' => 'required|string',
- 'time_interval' => 'required|numeric',
- 'time_interval_unit' => 'required|string|in:seg,min,hor,dia',
- 'time_interval_tolerance' => 'required|numeric',
- 'time_interval_tolerance_unit' => 'required|string|in:seg,min,hor,dia'
- ]);
- if($validator->fails()){
- return $this->responseController->makeResponse(
- true,
- "Se encontraron uno o más errores.",
- $this->responseController->makeErrors(
- $validator->errors()->messages()
- ),
- 401
- );
- }
- $form = $request->all();
- $idUser = $this->encryptionController->decrypt($form['id_user']);
- if(!$idUser){
- return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición no está encriptado correctamente.', [], 400);
- }
- $usr = DB::table('S002V01TUSUA')->where([
- ['USUA_NULI', '=', $form['linea']],
- ['USUA_IDUS', '=', $idUser],
- ])->first();
- if(is_null($usr)){
- return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado.', [], 404);
- }
- $idSCADA = $this->encryptionController->decrypt($form['scada']);
- if(!$idSCADA){
- return $this->responseController->makeResponse(true, 'El ID del SCADA relacionado no está encriptado correctamente.', [], 400);
- }
- $scada = DB::table('S002V01TLISC')->where([
- ['LISC_IDSC', '=', $idSCADA],
- ['LISC_NULI', '=', $form['linea']],
- ])->first();
- if(is_null($scada)){
- return $this->responseController->makeResponse(true, 'El SCADA relacionado no está registrado.', [], 404);
- }
- $equipmentCode = $this->encryptionController->decrypt($form['equipment']);
- if(!$equipmentCode){
- return $this->responseController->makeResponse(true, 'El código del equipamiento relacionado no está encriptado correctamente.', [], 400);
- }
- $equipment = DB::table('S002V01TEQUI')->where([
- ['EQUI_NULI', '=', $form['linea']],
- ['EQUI_COEQ', '=', $equipmentCode],
- ])->first();
- if(is_null($equipment)){
- return $this->responseController->makeResponse(true, 'El equipamiento relacionado no está registrado.', [], 404);
- }
- $idCounter = $this->encryptionController->decrypt($form['id_counter']);
- if(!$idCounter){
- return $this->responseController->makeResponse(true, 'El ID del contador seleccionado no está encriptado correctamente.', [], 400);
- }
- $counter = DB::table('S002V01TCONA')->where([
- ['CONA_NULI', '=', $form['linea']],
- ['CONA_IDCO', '=', $idCounter]
- ])->first();
- if(is_null($counter)){
- return $this->responseController->makeResponse(true, 'El contador seleccionado no está registrado.', [], 404);
- }
- $now = $this->functionsController->now();
- $nowStr = $now->toDateTimeString();
- DB::table('S002V01TCONA')->where([
- ['CONA_IDCO', '=', $idCounter],
- ['CONA_NULI', '=', $form['linea']]
- ])->update([
- 'CONA_INLE' => $form['time_interval'],
- 'CONA_UTIL' => $form['time_interval_unit'],
- 'CONA_TOIN' => $form['time_interval_tolerance'],
- 'CONA_UTTI' => $form['time_interval_tolerance_unit'],
- 'CONA_IDSC' => $idSCADA,
- 'CONA_USMO' => $idUser,
- 'CONA_FEMO' => $nowStr
- ]);
- $actions = DB::getQueryLog();
- $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
-
- $idac = $this->functionsController->registerActivity(
- $form['linea'],
- 'S002V01M06COAC',
- 'S002V01F01GECO',
- 'S002V01P02RECO',
- 'Actualización',
- "El usuario $name (" . $usr->USUA_IDUS . ") actualizó el contador #$idCounter.",
- $idUser,
- $nowStr,
- 'S002V01S01CONT'
- );
- $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $form['linea']);
- return $this->responseController->makeResponse(false, 'EXITO.');
- }
- public function deleteCounter(Request $request) {
- DB::enableQueryLog();
- $validator = Validator::make($request->all(), [
- 'id_user' => 'required|string',
- 'linea' => 'required|integer',
- 'id_counter' => 'required|string'
- ]);
- if($validator->fails()){
- return $this->responseController->makeResponse(
- true,
- "Se encontraron uno o más errores.",
- $this->responseController->makeErrors(
- $validator->errors()->messages()
- ),
- 401
- );
- }
- $form = $request->all();
- $idUser = $this->encryptionController->decrypt($form['id_user']);
- if(!$idUser){
- return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición no está encriptado correctamente.', [], 400);
- }
- $usr = DB::table('S002V01TUSUA')->where([
- ['USUA_NULI', '=', $form['linea']],
- ['USUA_IDUS', '=', $idUser],
- ])->first();
- if(is_null($usr)){
- return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado.', [], 404);
- }
- $idCounter = $this->encryptionController->decrypt($form['id_counter']);
- if(!$idCounter){
- return $this->responseController->makeResponse(true, 'El ID del contador seleccionado no está encriptado correctamente.', [], 400);
- }
- $counter = DB::table('S002V01TCONA')->where([
- ['CONA_NULI', '=', $form['linea']],
- ['CONA_IDCO', '=', $idCounter]
- ])->first();
- if(is_null($counter)){
- return $this->responseController->makeResponse(true, 'El contador seleccionado no está registrado.', [], 404);
- }
- $now = $this->functionsController->now();
- $nowStr = $now->toDateTimeString();
- DB::table('S002V01TCONA')->where([
- ['CONA_IDCO', '=', $idCounter],
- ['CONA_NULI', '=', $form['linea']]
- ])->update([
- 'CONA_ESTA' => 'Eliminado',
- 'CONA_USMO' => $idUser,
- 'CONA_FEMO' => $nowStr
- ]);
- $actions = DB::getQueryLog();
- $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
-
- $idac = $this->functionsController->registerActivity(
- $form['linea'],
- 'S002V01M06COAC',
- 'S002V01F02ELCO',
- '-',
- 'Eliminación',
- "El usuario $name (" . $usr->USUA_IDUS . ") eliminó el contador #$idCounter.",
- $idUser,
- $nowStr,
- 'S002V01S01CONT'
- );
- $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $form['linea']);
- return $this->responseController->makeResponse(false, 'EXITO.');
- }
- public function updateActivator(Request $request) {
- DB::enableQueryLog();
- $validator = Validator::make($request->all(), [
- 'id_user' => 'required|string',
- 'linea' => 'required|integer',
- 'priority' => 'required|string|in:1,2,3,4',
- 'type' => 'required|string|in:CA,SI,ME,VA',
- 'condition' => 'required|json',
- 'counter' => 'required|string',
- 'id_activator' => 'required|string'
- ]);
- if($validator->fails()){
- return $this->responseController->makeResponse(
- true,
- "Se encontraron uno o más errores.",
- $this->responseController->makeErrors(
- $validator->errors()->messages()
- ),
- 401
- );
- }
- //$priorities = ['MA' => '1', 'AL' => '2', 'ME' => '3', 'BA' => '4'];
- $types = ['CA' => 'Calendario', 'SI' => 'Sintoma', 'ME' => 'Medida', 'VA' => 'Valor'];
- $form = $request->all();
- $idUser = $this->encryptionController->decrypt($form['id_user']);
- if(!$idUser){
- return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición no está encriptado correctamente.', [], 400);
- }
- $usr = DB::table('S002V01TUSUA')->where([
- ['USUA_NULI', '=', $form['linea']],
- ['USUA_IDUS', '=', $idUser],
- ])->first();
- if(is_null($usr)){
- return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado.', [], 404);
- }
- $idCounter = $this->encryptionController->decrypt($form['counter']);
- if(!$idCounter){
- return $this->responseController->makeResponse(true, 'El ID del contador relacionado no está encriptado correctamente.', [], 400);
- }
- $counter = DB::table('S002V01TCONA')->where([
- ['CONA_NULI', '=', $form['linea']],
- ['CONA_IDCO', '=', $idCounter]
- ])->first();
- if(is_null($counter)){
- return $this->responseController->makeResponse(true, 'El contador relacionado no está registrado.', [], 404);
- }
- $idActivator = $this->encryptionController->decrypt($form['id_activator']);
- if(!$idActivator){
- return $this->responseController->makeResponse(true, 'El ID del activador seleccionado no está encriptado correctamente.', [], 400);
- }
- $activator = DB::table('S002V01TACTI')->where([
- ['ACTI_IDAC', '=', $idActivator],
- ['ACTI_NULI', '=', $form['linea']]
- ])->first();
- if(is_null($activator)){
- return $this->responseController->makeResponse(true, 'El activador seleccionado no está registrado.', [], 404);
- }
- $priority = $form['priority'];
- $type = $types[$form['type']];
- $conditionArr = json_decode($form['condition'], true);
- if(count($conditionArr) == 0){
- return $this->responseController->makeResponse(true, 'El arreglo de la condición de activación está vació.', [], 400);
- }else{
- switch($form['type']){
- case 'CA':
- if(count($conditionArr) != 5){
- return $this->responseController->makeResponse(true, 'El arreglo de la condición tiene un formato inválido.', [], 400);
- }
- $keysCA = ['startDate', 'startHour', 'repeat', 'customRepeat', 'color'];
- foreach($keysCA as $key){
- if(!array_key_exists($key, $conditionArr)){
- return $this->responseController->makeResponse(true, "El arreglo de la condición no contiene el elemento '$key'.", [], 400);
- }
- }
- break;
- case 'SI':
- if(count($conditionArr) != 6){
- return $this->responseController->makeResponse(true, 'El arreglo de la condición tiene un formato inválido.', [], 400);
- }
- $keysSI = ['sign', 'startDate', 'startHour', 'repeat', 'customRepeat', 'color'];
- foreach($keysSI as $key){
- if(!array_key_exists($key, $conditionArr)){
- return $this->responseController->makeResponse(true, "El arreglo de la condición no contiene el elemento '$key'.", [], 400);
- }
- }
- $idSymptom = $this->encryptionController->decrypt($conditionArr['sign']);
- if(!$idSymptom){
- return $this->responseController->makeResponse(true, 'El ID del síntoma relacionado no está encriptado correctamente.', [], 400);
- }
- $symptom = DB::table('S002V01TLISI')->where([
- ['LISI_IDSI', '=', $idSymptom],
- ['LISI_NULI', '=', $form['linea']]
- ])->first();
- if(is_null($symptom)){
- return $this->responseController->makeResponse(true, 'El síntoma relacionado no está registrado.', [], 404);
- }else if($symptom->LISI_ESTA == 'Eliminado'){
- return $this->responseController->makeResponse(true, 'El síntoma relacionado está eliminado.', [], 404);
- }
- $conditionArr['sign'] = $idSymptom;
- break;
- case 'ME':
- if(count($conditionArr) != 7){
- return $this->responseController->makeResponse(true, 'El arreglo de la condición tiene un formato inválido.', [], 400);
- }
- $keysSI = ['minValue', 'maxValue', 'magnitude', 'customMagnitude', 'unit', 'customUnit', 'color'];
- foreach($keysSI as $key){
- if(!array_key_exists($key, $conditionArr)){
- return $this->responseController->makeResponse(true, "El arreglo de la condición no contiene el elemento '$key'.", [], 400);
- }
- }
- $idMagnitude = $this->encryptionController->decrypt($conditionArr['magnitude']);
- if(!$idMagnitude){
- return $this->responseController->makeResponse(true, 'El ID de la magnitud relacionada no está encriptado correctamente.', [], 400);
- }
- $magnitude = DB::table('S002V01TMAGN')->where([
- ['MAGN_NULI', '=', $form['linea']],
- ['MAGN_IDMA', '=', $idMagnitude]
- ])->first();
- if(is_null($magnitude)){
- return $this->responseController->makeResponse(true, 'La magnitud relacionada no está registrado.', [], 404);
- }else if($magnitude->MAGN_ESTA == 'Eliminado'){
- return $this->responseController->makeResponse(true, 'La magnitud relacionada está eliminada.', [], 404);
- }
- $idUnit = $this->encryptionController->decrypt($conditionArr['unit']);
- if(!$idUnit){
- return $this->responseController->makeResponse(true, 'El ID de la unidad relacionada no está encriptado correctamente.', [], 400);
- }
- $unit = DB::table('S002V01TLIME')->where([
- ['LIME_IDME', '=', $idUnit],
- ['LIME_NULI', '=', $form['linea']],
- ['LIME_MAGN', '=', $idMagnitude],
- ])->first();
- if(is_null($unit)){
- return $this->responseController->makeResponse(true, 'La unidad relacionada no está registrado.', [], 404);
- }else if($unit->LIME_ESTA == 'Eliminado'){
- return $this->responseController->makeResponse(true, 'La unidad relacionada está eliminada.', [], 404);
- }
- $conditionArr['magnitude'] = $idMagnitude ;
- $conditionArr['unit'] = $idUnit;
- break;
- case 'VA':
- if(count($conditionArr) != 7){
- return $this->responseController->makeResponse(true, 'El arreglo de la condición tiene un formato inválido.', [], 400);
- }
- $keysVA = ['comparison', 'limitValue', 'magnitude', 'customMagnitude', 'unit', 'customUnit', 'color'];
- foreach($keysVA as $key){
- if(!array_key_exists($key, $conditionArr)){
- return $this->responseController->makeResponse(true, "El arreglo de la condición no contiene el elemento '$key'.", [], 400);
- }
- }
- $idMagnitude = $this->encryptionController->decrypt($conditionArr['magnitude']);
- if(!$idMagnitude){
- return $this->responseController->makeResponse(true, 'El ID de la magnitud relacionada no está encriptado correctamente.', [], 400);
- }
- $magnitude = DB::table('S002V01TMAGN')->where([
- ['MAGN_NULI', '=', $form['linea']],
- ['MAGN_IDMA', '=', $idMagnitude]
- ])->first();
- if(is_null($magnitude)){
- return $this->responseController->makeResponse(true, 'La magnitud relacionada no está registrado.', [], 404);
- }else if($magnitude->MAGN_ESTA == 'Eliminado'){
- return $this->responseController->makeResponse(true, 'La magnitud relacionada está eliminada.', [], 404);
- }
- $idUnit = $this->encryptionController->decrypt($conditionArr['unit']);
- if(!$idUnit){
- return $this->responseController->makeResponse(true, 'El ID de la unidad relacionada no está encriptado correctamente.', [], 400);
- }
- $unit = DB::table('S002V01TLIME')->where([
- ['LIME_IDME', '=', $idUnit],
- ['LIME_NULI', '=', $form['linea']],
- ['LIME_MAGN', '=', $idMagnitude],
- ])->first();
- if(is_null($unit)){
- return $this->responseController->makeResponse(true, 'La unidad relacionada no está registrado.', [], 404);
- }else if($unit->LIME_ESTA == 'Eliminado'){
- return $this->responseController->makeResponse(true, 'La unidad relacionada está eliminada.', [], 404);
- }
- $conditionArr['magnitude'] = $idMagnitude ;
- $conditionArr['unit'] = $idUnit;
- break;
- default:
- return $this->responseController->makeResponse(true, 'El tipo de contador es inválido.', [], 400);
- break;
- }
- }
- $activationConfig = $form['condition'];
- $activationConfigArr = json_decode($activationConfig, true);
- $startDateObj = new Carbon($activationConfigArr['startDate']);
- $startDateStr = $startDateObj->toDateString();
- $startDateTimeObj = new Carbon("$startDateStr $activationConfigArr[startHour]");
- $startDateTimeStr = $startDateTimeObj->toDateTimeString();
- $now = $this->functionsController->now();
- $nowStr = $now->toDateTimeString();
- $preventiveOrdersRelated = DB::table('S002V01TOTPR')->where([
- ['OTPR_NULI', '=', $form['linea']],
- ['OTPR_ACAS', '=', $idActivator]
- ])->get()->all();
- foreach($preventiveOrdersRelated as $preventiveOrder){
- DB::table('S002V01TOTPR')->where([
- ['OTPR_NULI', '=', $form['linea']],
- ['OTPR_IDOT', '=', $preventiveOrder->OTPR_IDOT],
- ])->update([
- "OTPR_FIAP" => $startDateTimeStr,
- "OTPR_USMO" => $idUser,
- "OTPR_FEMO" => $nowStr
- ]);
- }
- $conditionStr = json_encode($conditionArr);
- DB::table('S002V01TACTI')->where([
- ['ACTI_IDAC', '=', $idActivator],
- ['ACTI_NULI', '=', $form['linea']]
- ])->update([
- 'ACTI_PRIO' => $priority,
- 'ACTI_TIAC' => $type,
- 'ACTI_COAC' => $conditionStr,
- 'ACTI_CORE' => $idCounter,
- 'ACTI_USMO' => $idUser,
- 'ACTI_FEMO' => $nowStr
- ]);
- $actions = DB::getQueryLog();
- $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
-
- $idac = $this->functionsController->registerActivity(
- $form['linea'],
- 'S002V01M06COAC',
- 'S002V01F01GEAC',
- 'S002V01P02REAC',
- 'Actualización',
- "El usuario $name (" . $usr->USUA_IDUS . ") actualizó el activador #$idActivator.",
- $idUser,
- $nowStr,
- 'S002V01S02ACTI'
- );
- $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $form['linea']);
- return $this->responseController->makeResponse(false, 'EXITO.');
- }
- public function deleteActivator(Request $request) {
- DB::enableQueryLog();
- $validator = Validator::make($request->all(), [
- 'id_user' => 'required|string',
- 'linea' => 'required|integer',
- 'id_activator' => 'required|string'
- ]);
- if($validator->fails()){
- return $this->responseController->makeResponse(
- true,
- "Se encontraron uno o más errores.",
- $this->responseController->makeErrors(
- $validator->errors()->messages()
- ),
- 401
- );
- }
- $form = $request->all();
- $idUser = $this->encryptionController->decrypt($form['id_user']);
- if(!$idUser){
- return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición no está encriptado correctamente.', [], 400);
- }
- $usr = DB::table('S002V01TUSUA')->where([
- ['USUA_NULI', '=', $form['linea']],
- ['USUA_IDUS', '=', $idUser],
- ])->first();
- if(is_null($usr)){
- return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado.', [], 404);
- }
- $idActivator = $this->encryptionController->decrypt($form['id_activator']);
- if(!$idActivator){
- return $this->responseController->makeResponse(true, 'El ID del activador seleccionado no está encriptado correctamente.', [], 400);
- }
- $activator = DB::table('S002V01TACTI')->where([
- ['ACTI_IDAC', '=', $idActivator],
- ['ACTI_NULI', '=', $form['linea']]
- ])->first();
- if(is_null($activator)){
- return $this->responseController->makeResponse(true, 'El activador seleccionado no está registrado.', [], 404);
- }
- $now = $this->functionsController->now();
- $nowStr = $now->toDateTimeString();
- DB::table('S002V01TACTI')->where([
- ['ACTI_IDAC', '=', $idActivator],
- ['ACTI_NULI', '=', $form['linea']]
- ])->update([
- 'ACTI_ESTA' => 'Eliminado',
- 'ACTI_USMO' => $idUser,
- 'ACTI_FEMO' => $nowStr
- ]);
- $actions = DB::getQueryLog();
- $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
-
- $idac = $this->functionsController->registerActivity(
- $form['linea'],
- 'S002V01M06COAC',
- 'S002V01F01GEAC',
- 'S002V01P02REAC',
- 'Eliminación',
- "El usuario $name (" . $usr->USUA_IDUS . ") eliminó el activador #$idActivator.",
- $idUser,
- $nowStr,
- 'S002V01S02ACTI'
- );
- $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $form['linea']);
- return $this->responseController->makeResponse(false, 'EXITO.');
- }
- public function getCountersByEquipment($equipmentCode, $idUser, $line) {
- DB::enableQueryLog();
- $idUser = $this->encryptionController->decrypt($idUser);
- if(!$idUser){
- return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición no está encriptado correctamente.', [], 400);
- }
- $usr = DB::table('S002V01TUSUA')->where([
- ['USUA_NULI', '=', $line],
- ['USUA_IDUS', '=', $idUser],
- ])->first();
- if(is_null($usr)){
- return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado.', [], 404);
- }
- $equipmentCode = $this->encryptionController->decrypt($equipmentCode);
- if(!$equipmentCode){
- return $this->responseController->makeResponse(true, 'El código del equipamiento relacionado no está encriptado correctamente.', [], 400);
- }
- $equipment = DB::table('S002V01TEQUI')->where([
- ['EQUI_COEQ', '=', $equipmentCode],
- ['EQUI_NULI', '=', $line]
- ])->first();
- if(is_null($equipment)){
- return $this->responseController->makeResponse(true, 'El equipamiento relacionado no está registrado.', [], 404);
- }
- $counters = DB::table('S002V01TCONA')->select([
- 'CONA_IDCO AS ID_CONTADOR',
- 'ACTI_IDAC AS ID_ACTIVADOR',
- 'ACTI_PRIO AS PRIORIDAD',
- 'CONA_IDSC AS ID_SCADA',
- 'LISC_NOSC AS NOMBRE_SCADA',
- 'CONA_ESTA AS ESTADO',
- 'CONA_FERE AS FECREG',
- 'CONA_USRE AS USRREG',
- 'CONA_FEMO AS FECMOD',
- 'CONA_USMO AS USRMOD'
- ])->join('S002V01TACTI', 'ACTI_CORE', '=', 'CONA_IDCO')->where([
- ['CONA_NULI', '=', $line],
- ['CONA_COEQ', '=', $equipmentCode]
- ])->join('S002V01TLISC', 'LISC_IDSC', '=', 'CONA_IDSC')->orderBy('CONA_IDCO', 'asc')->get()->all();
- foreach($counters as $key=>$counter){
- $counter->ID_CONTADOR = $this->encryptionController->encrypt($counter->ID_CONTADOR);
- if(!is_null($counter->ID_ACTIVADOR)){
- $counter->ID_ACTIVADOR = $this->encryptionController->encrypt($counter->ID_ACTIVADOR);
- }
- $counter->ID_SCADA = $this->encryptionController->encrypt($counter->ID_SCADA);
- $usrReg = DB::table('S002V01TUSUA')->where([
- ['USUA_NULI', '=', $line],
- ['USUA_IDUS', '=', $counter->USRREG]
- ])->first();
- $nameReg = $this->functionsController->joinName($usrReg->USUA_NOMB, $usrReg->USUA_APPA, $usrReg->USUA_APMA);
- $counter->USRREG = $nameReg . " (" . $counter->USRREG . ")";
- if(!is_null($counter->USRMOD)){
- $usrMod = DB::table('S002V01TUSUA')->where([
- ['USUA_NULI', '=', $line],
- ['USUA_IDUS', '=', $counter->USRMOD]
- ])->first();
- $nameMod = $this->functionsController->joinName($usrMod->USUA_NOMB, $usrMod->USUA_APPA, $usrMod->USUA_APMA);
- $counter->USRMOD = $nameMod . " (" . $counter->USRMOD . ")";
- }
- $counters[$key] = $counter;
- }
- $now = $this->functionsController->now();
- $nowStr = $now->toDateTimeString();
- $actions = DB::getQueryLog();
- $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
- $idac = $this->functionsController->registerActivity(
- $line,
- 'S002V01M06COAC',
- 'S002V01F01GECO',
- 'S002V01P01COCO',
- 'Consulta',
- "El usuario $name (" . $usr->USUA_IDUS . ") consultó los contadores relacionados al equipamiento $equipmentCode.",
- $idUser,
- $nowStr,
- 'S002V01S01CONT'
- );
- $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
- return $this->responseController->makeresponse(false, "EXITO", $counters);
- }
- public function getCounterLastMeasure($idCounter, $idUser, $line) {
- DB::enableQueryLog();
- $idUser = $this->encryptionController->decrypt($idUser);
- if(!$idUser){
- return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición no está encriptado correctamente.', [], 400);
- }
- $usr = DB::table('S002V01TUSUA')->where([
- ['USUA_NULI', '=', $line],
- ['USUA_IDUS', '=', $idUser],
- ])->first();
- if(is_null($usr)){
- return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado.', [], 404);
- }
- $idCounter = $this->encryptionController->decrypt($idCounter);
- if(!$idCounter){
- return $this->responseController->makeResponse(true, 'El ID del contador no está encriptado correctamente.', [], 400);
- }
- $counter = DB::table('S002V01TCONA')->where([
- ['CONA_IDCO', '=', $idCounter],
- ['CONA_NULI', '=', $line]
- ])->first();
- if(is_null($counter)){
- return $this->responseController->makeResponse(true, 'El contador solicitado no está registrado.', [], 404);
- }
- $measure = DB::table('S002V01TMEDI')->select([
- 'MEDI_IDME AS ID_MEDIDA',
- 'MEDI_CORE AS CONTADOR',
- 'MEDI_VALO AS VALOR',
- 'MEDI_WSRE AS ID_SERVICIO_WEB',
- 'LSWE_URLX AS URL_SERVICIO_WEB',
- 'MEDI_HORE AS HORA_REGISTRO',
- ])->join('S002V01TLSWE', 'LSWE_IDSW', '=', 'MEDI_WSRE')->where([
- ['MEDI_NULI', '=', $line],
- ['MEDI_CORE', '=', $idCounter]
- ])->orderBy('MEDI_HORE', 'desc')->first();
- if(!is_null($measure)){
- $measure->ID_MEDIDA = $this->encryptionController->encrypt($measure->ID_MEDIDA);
- $measure->CONTADOR = $this->encryptionController->encrypt($measure->CONTADOR);
- $measure->ID_SERVICIO_WEB = $this->encryptionController->encrypt($measure->ID_SERVICIO_WEB);
- }
- $now = $this->functionsController->now();
- $nowStr = $now->toDateTimeString();
- $actions = DB::getQueryLog();
- $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
- $idac = $this->functionsController->registerActivity(
- $line,
- 'S002V01M06COAC',
- 'S002V01F01GECO',
- 'S002V01P01COCO',
- 'Consulta',
- "El usuario $name (" . $usr->USUA_IDUS . ") consultó las medidas relacionadas al contador #$idCounter.",
- $idUser,
- $nowStr,
- 'S002V01S01CONT'
- );
- $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
- return $this->responseController->makeresponse(false, "EXITO", is_null($measure) ? [] : [$measure]);
- }
- public function getCounterMeasures($idCounter, $order, $direction, $limit, $offset, $idUser, $line) {
- DB::enableQueryLog();
- $idUser = $this->encryptionController->decrypt($idUser);
- if(!$idUser){
- return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición no está encriptado correctamente.', [], 400);
- }
- $usr = DB::table('S002V01TUSUA')->where([
- ['USUA_NULI', '=', $line],
- ['USUA_IDUS', '=', $idUser],
- ])->first();
- if(is_null($usr)){
- return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado.', [], 404);
- }
- $idCounter = $this->encryptionController->decrypt($idCounter);
- if(!$idCounter){
- return $this->responseController->makeResponse(true, 'El ID del contador no está encriptado correctamente.', [], 400);
- }
- $counter = DB::table('S002V01TCONA')->where([
- ['CONA_IDCO', '=', $idCounter],
- ['CONA_NULI', '=', $line]
- ])->first();
- if(is_null($counter)){
- return $this->responseController->makeResponse(true, 'El contador solicitado no está registrado.', [], 404);
- }
-
- $enabledOrders = [
- 'ID_MEDIDA' => 'MEDI_IDME',
- 'VALOR' => 'MEDI_VALO',
- 'FECREG' => 'MEDI_HORE'
- ];
- if(!isset($enabledOrders[$order])){
- return $this->responseController->makeResponse(true, 'El orden solicitado para los registros es inválido.', [], 404);
- }
- $orderDB = $enabledOrders[$order];
- $enbaledDirections = [
- 'D' => 'desc',
- 'A' => 'asc'
- ];
- if(!isset($enbaledDirections[$direction])){
- return $this->responseController->makeResponse(true, 'La dirección del orden solicitado para los registros es inválida.', [], 404);
- }
- $directionDB = $enbaledDirections[$direction];
- $limit = intval($limit);
- $offset = intval($offset);
- $measures = DB::table('S002V01TMEDI')->select([
- 'MEDI_IDME AS ID_MEDIDA',
- 'MEDI_CORE AS CONTADOR',
- 'MEDI_VALO AS VALOR',
- 'MEDI_WSRE AS ID_SERVICIO_WEB',
- 'LSWE_URLX AS URL_SERVICIO_WEB',
- 'MEDI_HORE AS HORA_REGISTRO',
- ])->join('S002V01TLSWE', 'LSWE_IDSW', '=', 'MEDI_WSRE')->where([
- ['MEDI_NULI', '=', $line],
- ['MEDI_CORE', '=', $idCounter]
- ])->orderBy($orderDB, $directionDB)
- ->offset($offset)->limit($limit)->get()->all();
- foreach($measures as $key=>$measure){
- $measure->ID_MEDIDA = $this->encryptionController->encrypt($measure->ID_MEDIDA);
- $measure->CONTADOR = $this->encryptionController->encrypt($measure->CONTADOR);
- $measure->ID_SERVICIO_WEB = $this->encryptionController->encrypt($measure->ID_SERVICIO_WEB);
- $measures[$key];
- }
- $now = $this->functionsController->now();
- $nowStr = $now->toDateTimeString();
- $actions = DB::getQueryLog();
- $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
- $idac = $this->functionsController->registerActivity(
- $line,
- 'S002V01M06COAC',
- 'S002V01F01GECO',
- 'S002V01P01COCO',
- 'Consulta',
- "El usuario $name (" . $usr->USUA_IDUS . ") consultó las medidas relacionadas al contador #$idCounter.",
- $idUser,
- $nowStr,
- 'S002V01S01CONT'
- );
- $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
- return $this->responseController->makeresponse(false, "EXITO", $measures);
- }
- public function getCounterMeasuresLength($idCounter, $idUser, $line) {
- DB::enableQueryLog();
- $idUser = $this->encryptionController->decrypt($idUser);
- if(!$idUser){
- return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición no está encriptado correctamente.', [], 400);
- }
- $usr = DB::table('S002V01TUSUA')->where([
- ['USUA_NULI', '=', $line],
- ['USUA_IDUS', '=', $idUser],
- ])->first();
- if(is_null($usr)){
- return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado.', [], 404);
- }
- $idCounter = $this->encryptionController->decrypt($idCounter);
- if(!$idCounter){
- return $this->responseController->makeResponse(true, 'El ID del contador no está encriptado correctamente.', [], 400);
- }
- $counter = DB::table('S002V01TCONA')->where([
- ['CONA_IDCO', '=', $idCounter],
- ['CONA_NULI', '=', $line]
- ])->first();
- if(is_null($counter)){
- return $this->responseController->makeResponse(true, 'El contador solicitado no está registrado.', [], 404);
- }
- $measures = DB::table('S002V01TMEDI')->select([
- 'MEDI_IDME AS ID_MEDIDA',
- 'MEDI_CORE AS CONTADOR',
- 'MEDI_VALO AS VALOR',
- 'MEDI_WSRE AS ID_SERVICIO_WEB',
- 'LSWE_URLX AS URL_SERVICIO_WEB',
- 'MEDI_HORE AS HORA_REGISTRO',
- ])->join('S002V01TLSWE', 'LSWE_IDSW', '=', 'MEDI_WSRE')->where([
- ['MEDI_NULI', '=', $line],
- ['MEDI_CORE', '=', $idCounter]
- ])->get()->all();
- $now = $this->functionsController->now();
- $nowStr = $now->toDateTimeString();
- $actions = DB::getQueryLog();
- $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
- $idac = $this->functionsController->registerActivity(
- $line,
- 'S002V01M06COAC',
- 'S002V01F01GECO',
- 'S002V01P01COCO',
- 'Consulta',
- "El usuario $name (" . $usr->USUA_IDUS . ") consultó las medidas relacionadas al contador #$idCounter.",
- $idUser,
- $nowStr,
- 'S002V01S01CONT'
- );
- $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
- return $this->responseController->makeresponse(false, "EXITO", ['MEASURES_LENGTH' => count($measures)]);
- }
- public function getRelatedCounters($idCounter, $idUser, $line) {
- DB::enableQueryLog();
- $idUser = $this->encryptionController->decrypt($idUser);
- if(!$idUser){
- return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición no está encriptado correctamente.', [], 400);
- }
- $usr = DB::table('S002V01TUSUA')->where([
- ['USUA_NULI', '=', $line],
- ['USUA_IDUS', '=', $idUser],
- ])->first();
- if(is_null($usr)){
- return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado.', [], 404);
- }
- $idCounter = $this->encryptionController->decrypt($idCounter);
- if(!$idCounter){
- return $this->responseController->makeResponse(true, 'El ID del contador no está encriptado correctamente.', [], 400);
- }
- $counter = DB::table('S002V01TCONA')->where([
- ['CONA_IDCO', '=', $idCounter],
- ['CONA_NULI', '=', $line]
- ])->first();
- if(is_null($counter)){
- return $this->responseController->makeResponse(true, 'El contador solicitado no está registrado.', [], 404);
- }
- var_dump($idCounter);
- }
- public function relateCounters(Request $request) {
- DB::enableQueryLog();
- $validator = Validator::make($request->all(), [
- 'id_user' => 'required|string',
- 'linea' => 'required|integer',
- 'id_counter' => 'required|string',
- 'related_counters' => 'required|json'
- ]);
- if($validator->fails()){
- return $this->responseController->makeResponse(
- true,
- "Se encontraron uno o más errores.",
- $this->responseController->makeErrors(
- $validator->errors()->messages()
- ),
- 401
- );
- }
- $form = $request->all();
- $idUser = $this->encryptionController->decrypt($form['id_user']);
- if(!$idUser){
- return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición no está encriptado correctamente.', [], 400);
- }
- $usr = DB::table('S002V01TUSUA')->where([
- ['USUA_NULI', '=', $form['linea']],
- ['USUA_IDUS', '=', $idUser],
- ])->first();
- if(is_null($usr)){
- return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado.', [], 404);
- }
- $idCounter = $this->encryptionController->decrypt($form['id_counter']);
- if(!$idCounter){
- return $this->responseController->makeResponse(true, 'El ID del contador seleccionado no está encriptado correctamente.', [], 400);
- }
- $counter = DB::table('S002V01TCONA')->where([
- ['CONA_NULI', '=', $form['linea']],
- ['CONA_IDCO', '=', $idCounter]
- ])->first();
- if(is_null($counter)){
- return $this->responseController->makeResponse(true, 'El contador seleccionado no está registrado.', [], 404);
- }
- $relatedCountersRegisteredArr = json_decode($counter->CONA_COVI, true);
- $relatedCountersArr = json_decode($form['related_counters'], true);
- if(!is_array($relatedCountersArr)){
- return $this->responseController->makeResponse(true, 'El campo de contadores vinculados no es un arreglo.', [], 400);
- }
- $now = $this->functionsController->now();
- $nowStr = $now->toDateTimeString();
- $relatedCountersArrDec = [];
- foreach($relatedCountersArr as $relatedCounterEnc){
- $relatedCounterDec = $this->encryptionController->decrypt($relatedCounterEnc);
- $relatedCounter = DB::table('S002V01TCONA')->where([
- ['CONA_IDCO', '=', $relatedCounterDec],
- ['CONA_NULI', '=', $form['linea']]
- ])->first();
- if(is_null($relatedCounter)){
- return $this->responseController->makeResponse(true, "El contador #$relatedCounterDec no está registrado.", [], 404);
- }
- if(!in_array($relatedCounter, $relatedCountersRegisteredArr)){
- $relatedCountersRegisteredArr[] = $relatedCounterDec;
- }
- $relatedCounterRelatedCountersArr = json_decode($relatedCounter->CONA_COVI);
- if(!in_array($idCounter, $relatedCounterRelatedCountersArr)){
- $relatedCounterRelatedCountersArr[] = $idCounter;
- }
- $relatedCounterCOVI = json_encode($relatedCounterRelatedCountersArr);
- DB::table('S002V01TCONA')->where([
- ['CONA_IDCO', '=', $relatedCounterDec],
- ['CONA_NULI', '=', $form['linea']]
- ])->update([
- 'CONA_COVI' => $relatedCounterCOVI,
- 'CONA_USMO' => $idUser,
- 'CONA_FEMO' => $nowStr
- ]);
- $relatedCountersArrDec[] = $relatedCounterDec;
- }
- $countersWithRelation = DB::table('S002V01TCONA')->where('CONA_NULI', '=', $form['linea'])
- ->whereJsonContains('CONA_COVI', $idCounter)->get()->all();
- foreach($countersWithRelation as $counterWithRelation){
- if(!in_array($counterWithRelation->CONA_IDCO, $relatedCountersArrDec)){
- $counterWithRelationRelatedCounters = json_decode($counterWithRelation->CONA_COVI, true);
- $counterWithRelationRelatedCountersFn = [];
-
- foreach($counterWithRelationRelatedCounters as $counterWithRelationRelatedCounter){
- if($idCounter != $counterWithRelationRelatedCounter){
- $counterWithRelationRelatedCountersFn[] = $counterWithRelationRelatedCounter;
- }
- }
- $counterWithRelationCOVI = json_encode($counterWithRelationRelatedCountersFn);
- DB::table('S002V01TCONA')->where([
- ['CONA_IDCO', '=', $counterWithRelation->CONA_IDCO],
- ['CONA_NULI', '=', $form['linea']]
- ])->update([
- 'CONA_COVI' => $counterWithRelationCOVI,
- 'CONA_USMO' => $idUser,
- 'CONA_FEMO' => $nowStr
- ]);
- }
- }
- $relatedCountersFn = [];
- foreach($relatedCountersRegisteredArr as $relatedCounterRegistered){
- if(in_array($relatedCounterRegistered, $relatedCountersArrDec) && !in_array($relatedCounterRegistered, $relatedCountersFn)){
- $relatedCountersFn[] = $relatedCounterRegistered;
- }
- }
- $covi = json_encode($relatedCountersFn);
- DB::table('S002V01TCONA')->where([
- ['CONA_IDCO', '=', $idCounter],
- ['CONA_NULI', '=', $form['linea']]
- ])->update([
- 'CONA_COVI' => $covi,
- 'CONA_USMO' => $idUser,
- 'CONA_FEMO' => $nowStr
- ]);
- $actions = DB::getQueryLog();
- $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
-
- $idac = $this->functionsController->registerActivity(
- $form['linea'],
- 'S002V01M06COAC',
- 'S002V01F01GECO',
- 'S002V01P02RECO',
- 'Actualización',
- "El usuario $name (" . $usr->USUA_IDUS . ") actualizó los contadores vinculados al contador #$idCounter.",
- $idUser,
- $nowStr,
- 'S002V01S01CONT'
- );
- $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $form['linea']);
- return $this->responseController->makeResponse(false, 'EXITO.');
- }
- }
|