| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601 |
- <?php
- namespace App\Http\Controllers;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Validator;
- use ElephantIO\Client;
- use Illuminate\Support\Carbon;
- use Illuminate\Support\Facades\Log;
- use App\Services\TaskConfigurationService;
- class ProcessManagementController extends Controller
- {
- private $responseController;
- private $encController;
- private $resourcesController;
- private $documentManagementController;
- private $functionsController;
- private $notificationsController;
- private $socketClient;
- public function __construct()
- {
- $this->responseController = new ResponseController();
- $this->encController = new EncryptionController();
- $this->resourcesController = new ResourcesController();
- $this->documentManagementController = new DocumentManagementController();
- $this->functionsController = new FunctionsController();
- $this->notificationsController = new NotificationsController();
- $url = 'http://localhost:3200';
- $this->socketClient = new Client(Client::engine(Client::CLIENT_4X, $url));
- $this->socketClient->initialize();
- $this->socketClient->of('/');
- }
- //Submódulo de gestión de workflows
- public function registerWorkflow(Request $request)
- {
- $validator = Validator::make($request->all(), [
- 'NOMBRE_WORKFLOW' => 'required|string|max:50',
- 'DESCRIPCION' => 'required|string',
- 'USUARIO' => 'required|string',
- 'NUMERO_LINEA' => 'required|integer',
- ]);
- if ($validator->fails()) {
- return $this->responseController->makeResponse(
- true,
- "Se encontraron uno o más errores.",
- $this->responseController->makeErrors($validator->errors()->messages()),
- 401
- );
- }
- DB::beginTransaction();
- $requestData = $request->all();
- $arrResponseCheckUser = $this->resourcesController->checkUserEnc($requestData['USUARIO'], $requestData['NUMERO_LINEA']);
- if ($arrResponseCheckUser['error']) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
- }
- $user = $arrResponseCheckUser['response'];
- $now = $this->functionsController->now();
- $currentDate = $now->toDateTimeString();
- try {
- $workflowId = DB::table('S002V01TWORK')->insertGetId([
- 'WORK_NULI' => $requestData['NUMERO_LINEA'],
- 'WORK_NOWO' => $requestData['NOMBRE_WORKFLOW'],
- 'WORK_DESC' => $requestData['DESCRIPCION'],
- 'WORK_PRED' => false,
- 'WORK_ESTA' => 'Borrador',
- 'WORK_VERS' => 1,
- 'WORK_USRE' => $user,
- 'WORK_FERE' => $currentDate,
- 'WORK_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
- ]);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "Ocurrió un error al registrar el workflow.", $th->getMessage(), 500);
- }
- DB::commit();
- return $this->responseController->makeResponse(false, "ÉXITO: Workflow registrado exitosamente", ['ID_WORKFLOW' => $workflowId]);
- }
- public function registerWorkflowTask(Request $request)
- {
- $validator = Validator::make($request->all(), [
- 'ID_WORKFLOW' => 'required|integer',
- 'NOMBRE_TAREA' => 'required|string',
- 'DESCRIPCION' => 'required|string',
- 'SECUENCIA' => 'required|integer',
- 'REQUIERE_VALIDACION' => 'nullable|boolean',
- 'USUARIOS_NOTIFICAR' => 'array',
- 'USUARIO_VALIDADOR' => 'nullable|string',
- 'REGLAS_VALIDACION' => 'string|in:Esperar,Ejecutar,NA',
- 'ID_FUNCION' => 'nullable|string',
- 'ID_MODULO' => 'nullable|string',
- 'ID_SUBMODULO' => 'nullable|string',
- 'ID_WORKFLOW_EJECUTAR' => 'nullable|integer',
- 'INTERVALO' => 'nullable|integer',
- 'UNIDAD' => 'nullable|string',
- 'USUARIO' => 'required|string',
- 'NUMERO_LINEA' => 'required|integer',
- ]);
- Log::info($request);
- if ($validator->fails()) {
- return $this->responseController->makeResponse(
- true,
- "Se encontraron uno o más errores.",
- $this->responseController->makeErrors($validator->errors()->messages()),
- 401
- );
- }
- DB::beginTransaction();
- $requestData = $request->all();
- $arrResponseCheckUser = $this->resourcesController->checkUserEnc($requestData['USUARIO'], $requestData['NUMERO_LINEA']);
- if ($arrResponseCheckUser['error']) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
- }
- $decryptMod = $this->encController->decrypt($requestData['ID_MODULO']);
- if (!$decryptMod) {
- return $this->responseController->makeResponse(true, "ID_MODULO no fue desencriptada correctamente", [], 400);
- }
- $decryptSubMod = null;
- if (!empty($requestData['ID_SUBMODULO'])) {
- $decryptSubMod = $this->encController->decrypt($requestData['ID_SUBMODULO']);
- if (!$decryptSubMod) {
- return $this->responseController->makeResponse(true, "ID_SUBMODULO no fue desencriptada correctamente", [], 400);
- }
- }
- $user = $arrResponseCheckUser['response'];
- $now = $this->functionsController->now();
- $currentDate = $now->toDateTimeString();
- Log::info($requestData);
- $informacionExtra = TaskConfigurationService::processExtraInfo(
- $requestData['REGLAS_VALIDACION'],
- $requestData
- );
- try {
- $taskId = DB::table('S002V01TTAWO')->insertGetId([
- 'TAWO_NULI' => $requestData['NUMERO_LINEA'],
- 'TAWO_IDWO' => $requestData['ID_WORKFLOW'],
- 'TAWO_NOTA' => $requestData['NOMBRE_TAREA'],
- 'TAWO_DESC' => $requestData['DESCRIPCION'],
- 'TAWO_SECU' => $requestData['SECUENCIA'],
- 'TAWO_RQVA' => $requestData['REQUIERE_VALIDACION'],
- 'TAWO_USAN' => json_encode($requestData['USUARIOS_NOTIFICAR']),
- 'TAWO_USAV' => $requestData['USUARIO_VALIDADOR'],
- 'TAWO_REVA' => $requestData['REGLAS_VALIDACION'],
- 'TAWO_IDFU' => $requestData['ID_FUNCION'],
- 'TAWO_IDMO' => $decryptMod,
- 'TAWO_IDSM' => $decryptSubMod,
- 'TAWO_INEX' => $informacionExtra,
- 'TAWO_ESTA' => 'Borrador',
- 'TAWO_USRE' => $user,
- 'TAWO_FERE' => $currentDate,
- 'TAWO_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
- ]);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "Ocurrió un error al registrar la tarea.", $th->getMessage(), 500);
- }
- DB::commit();
- return $this->responseController->makeResponse(false, "ÉXITO: Tarea registrada exitosamente", ['ID_TAREA' => $taskId]);
- }
- public function getWorkflows($user, $line)
- {
- $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
- if ($arrResponseCheckUser['error']) {
- return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
- }
- try {
- $arrWorkflows = DB::Table('v_workflows_modulos_simple')->get();
- $arrWorkflows = json_decode(json_encode($arrWorkflows), true);
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, "Ocurrió un error al obtener los flujos de trabajo.", $th->getMessage(), 500);
- }
- return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrWorkflows);
- }
- public function getActiveWorkflows($user, $line)
- {
- $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
- if ($arrResponseCheckUser['error']) {
- return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
- }
- try {
- $arrWorkflows = DB::table('S002V01TWORK')
- ->where('WORK_NULI', '=', $line)
- ->where('WORK_ESTA', '=', 'Activo')
- ->get([
- 'WORK_IDWO AS ID_WORKFLOW',
- 'WORK_NOWO AS NOMBRE_WORKFLOW',
- 'WORK_DESC AS DESCRIPCION'
- ]);
- $arrWorkflows = json_decode(json_encode($arrWorkflows), true);
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, "Ocurrió un error al obtener los flujos de trabajo activos.", $th->getMessage(), 500);
- }
- return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrWorkflows);
- }
- public function getWorkflowById($idWorkflow, $user, $line)
- {
- $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
- if ($arrResponseCheckUser['error']) {
- return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
- }
- /*
- try {
- $idWorkflow = $this->encController->decrypt($idWorkflow);
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, 'ERR_AREA_GETBY000: Ocurrió un error al desencriptar el ID del almacen', $th->getMessage(), 406);
- }*/
- try {
- $result = DB::select("SELECT fn_get_workflow_by_id(?) as workflow_data", [$idWorkflow]);
- $workflowData = json_decode($result[0]->workflow_data, true);
- $workflow = $workflowData['workflow'];
- $formattedWorkflow = [
- 'ID_WORKFLOW' => $workflow['ID_WORKFLOW'],
- 'NOMBRE_WORKFLOW' => $workflow['NOMBRE_WORKFLOW'],
- 'DESCRIPCION' => $workflow['DESCRIPCION'],
- 'PREDETERMINADO' => $workflow['PREDETERMINADO'],
- 'ESTADO' => $workflow['ESTADO'],
- 'VERSION' => $workflow['VERSION'],
- 'INFORMACION_EXTRA' => json_encode($workflow['INFORMACION_EXTRA']),
- 'MODULOS' => $workflowData['MODULOS'],
- 'USUARIO_REGISTRO' => $workflow['USUARIO_REGISTRO'],
- 'FECHA_REGISTRO' => $workflow['FECHA_REGISTRO'],
- 'USUARIO_MODIFICA' => $workflow['USUARIO_MODIFICA'],
- 'FECHA_MODIFICA' => $workflow['FECHA_MODIFICA']
- ];
- $responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate([$formattedWorkflow], $line);
- if ($responseCheckLatestUpdate['error']) {
- return $this->responseController->makeResponse(true, $responseCheckLatestUpdate['msg'], [], 500);
- }
- $formattedWorkflow = $responseCheckLatestUpdate['response'][0];
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, "Ocurrió un error al obtener los flujos de trabajo.", $th->getMessage(), 500);
- }
- return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $formattedWorkflow);
- }
- public function updateWorkflow(Request $request, $idWorkflow)
- {
- $validator = Validator::make($request->all(), [
- 'NOMBRE_WORKFLOW' => 'required|string|max:50',
- 'DESCRIPCION' => 'required|string',
- 'COMENTARIO_CAMBIO' => 'nullable|string',
- 'USUARIO' => 'required|string',
- 'NUMERO_LINEA' => 'required|integer',
- ]);
- if ($validator->fails()) {
- return $this->responseController->makeResponse(
- true,
- "Se encontraron uno o más errores.",
- $this->responseController->makeErrors($validator->errors()->messages()),
- 401
- );
- }
- DB::beginTransaction();
- $requestData = $request->all();
- $arrResponseCheckUser = $this->resourcesController->checkUserEnc($requestData['USUARIO'], $requestData['NUMERO_LINEA']);
- if ($arrResponseCheckUser['error']) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
- }
- $user = $arrResponseCheckUser['response'];
- /*
- try {
- $idWorkflow = $this->encController->decrypt($idWorkflow);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, 'Ocurrió un error al desencriptar el ID del workflow', $th->getMessage(), 406);
- }*/
- try {
- $currentWorkflow = (array) DB::table('S002V01TWORK')
- ->where('WORK_IDWO', '=', $idWorkflow)
- ->where('WORK_NULI', '=', $requestData['NUMERO_LINEA'])
- ->first([
- 'WORK_NOWO',
- 'WORK_DESC',
- 'WORK_VERS'
- ]);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "Ocurrió un error al obtener el workflow.", $th->getMessage(), 500);
- }
- if (empty($currentWorkflow)) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "El workflow no existe.", [], 404);
- }
- $now = $this->functionsController->now();
- $currentDate = $now->toDateTimeString();
- $newVersion = $currentWorkflow['WORK_VERS'] + 1;
- // try {
- // DB::table('S002V01THWORK')->insert([
- // 'HWORK_IDWO' => $idWorkflow,
- // 'HWORK_VERS' => $currentWorkflow['WORK_VERS'],
- // 'HWORK_NOWO' => $currentWorkflow['WORK_NOWO'],
- // 'HWORK_DESC' => $currentWorkflow['WORK_DESC'],
- // 'HWORK_COME' => $requestData['COMENTARIO_CAMBIO'],
- // 'HWORK_USRE' => $user,
- // 'HWORK_FERE' => $currentDate,
- // 'HWORK_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
- // ]);
- // } catch (\Throwable $th) {
- // DB::rollBack();
- // return $this->responseController->makeResponse(true, "Ocurrió un error al registrar el historial.", $th->getMessage(), 500);
- // }
- try {
- $validateUpdate = DB::table('S002V01TWORK')
- ->where('WORK_IDWO', '=', $idWorkflow)
- ->where('WORK_NULI', '=', $requestData['NUMERO_LINEA'])
- ->update([
- 'WORK_NOWO' => $requestData['NOMBRE_WORKFLOW'],
- 'WORK_DESC' => $requestData['DESCRIPCION'],
- 'WORK_VERS' => $newVersion,
- 'WORK_USMO' => $user,
- 'WORK_FEMO' => $currentDate,
- 'WORK_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
- ]);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "Ocurrió un error al actualizar el workflow.", $th->getMessage(), 500);
- }
- if (!$validateUpdate) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "No se pudo actualizar el workflow.", [], 500);
- }
- DB::commit();
- return $this->responseController->makeResponse(false, "ÉXITO: Workflow actualizado exitosamente");
- }
- public function changeWorkflowStatus(Request $request)
- {
- $validator = Validator::make($request->all(), [
- 'ESTADO' => 'required|string|in:Activo,Eliminado',
- 'COMENTARIO_CAMBIO' => 'nullable|string',
- 'USUARIO' => 'required|string',
- 'NUMERO_LINEA' => 'required|integer',
- 'ID_WORKFLOW' => 'required|integer'
- ]);
- if ($validator->fails()) {
- return $this->responseController->makeResponse(
- true,
- "Se encontraron uno o más errores.",
- $this->responseController->makeErrors($validator->errors()->messages()),
- 401
- );
- }
- DB::beginTransaction();
- $requestData = $request->all();
- $arrResponseCheckUser = $this->resourcesController->checkUserEnc($requestData['USUARIO'], $requestData['NUMERO_LINEA']);
- if ($arrResponseCheckUser['error']) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
- }
- $user = $arrResponseCheckUser['response'];
- try {
- $currentWorkflow = (array) DB::table('S002V01TWORK')
- ->where('WORK_IDWO', '=', $requestData['ID_WORKFLOW'])
- ->where('WORK_NULI', '=', $requestData['NUMERO_LINEA'])
- ->first([
- 'WORK_NOWO',
- 'WORK_DESC',
- 'WORK_ESTA',
- 'WORK_VERS'
- ]);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "Ocurrió un error al obtener el workflow.", $th->getMessage(), 500);
- }
- if (empty($currentWorkflow)) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "El workflow no existe.", [], 404);
- }
- if ($currentWorkflow['WORK_ESTA'] === $requestData['ESTADO']) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "El workflow ya tiene el estado solicitado.", [], 400);
- }
- $now = $this->functionsController->now();
- $currentDate = $now->toDateTimeString();
- // try {
- // DB::table('S002V01THWORK')->insert([
- // 'HWORK_IDWO' => $requestData['ID_WORKFLOW'],
- // 'HWORK_VERS' => $currentWorkflow['WORK_VERS'],
- // 'HWORK_NOWO' => $currentWorkflow['WORK_NOWO'],
- // 'HWORK_DESC' => $currentWorkflow['WORK_DESC'],
- // 'HWORK_COME' => $requestData['COMENTARIO_CAMBIO'] ?? 'Cambio de estado a: ' . $requestData['ESTADO'],
- // 'HWORK_USRE' => $user,
- // 'HWORK_FERE' => $currentDate,
- // 'HWORK_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
- // ]);
- // } catch (\Throwable $th) {
- // DB::rollBack();
- // return $this->responseController->makeResponse(true, "Ocurrió un error al registrar el historial.", $th->getMessage(), 500);
- // }
- // try {
- // DB::table('S002V01THEWO')->insert([
- // 'HEWO_IDWO' => $requestData['ID_WORKFLOW'],
- // 'HEWO_ESTA' => $requestData['ESTADO'],
- // 'HEWO_USRE' => $user,
- // 'HEWO_FECH' => $currentDate,
- // 'HEWO_COME' => $requestData['COMENTARIO_CAMBIO'],
- // ]);
- // } catch (\Throwable $th) {
- // DB::rollBack();
- // return $this->responseController->makeResponse(true, "Ocurrió un error al registrar el historial de estados.", $th->getMessage(), 500);
- // }
- // Actualizar estado del workflow
- try {
- $validateUpdate = DB::table('S002V01TWORK')
- ->where('WORK_IDWO', '=', $requestData['ID_WORKFLOW'])
- ->where('WORK_NULI', '=', $requestData['NUMERO_LINEA'])
- ->update([
- 'WORK_ESTA' => $requestData['ESTADO'],
- 'WORK_USMO' => $user,
- 'WORK_FEMO' => $currentDate,
- 'WORK_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
- ]);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "Ocurrió un error al cambiar el estado del workflow.", $th->getMessage(), 500);
- }
- if (!$validateUpdate) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "No se pudo cambiar el estado del workflow.", [], 500);
- }
- // Actualizar estado de las tareas relacionadas
- $taskStatus = null;
- if ($currentWorkflow['WORK_ESTA'] === 'Borrador' && $requestData['ESTADO'] === 'Activo') {
- $taskStatus = 'Activo';
- } elseif ($currentWorkflow['WORK_ESTA'] === 'Activo' && $requestData['ESTADO'] === 'Eliminado') {
- $taskStatus = 'Eliminado';
- }
- if ($taskStatus) {
- try {
- DB::table('S002V01TTAWO')
- ->where('TAWO_IDWO', '=', $requestData['ID_WORKFLOW'])
- ->where('TAWO_NULI', '=', $requestData['NUMERO_LINEA'])
- ->update([
- 'TAWO_ESTA' => $taskStatus,
- 'TAWO_USMO' => $user,
- 'TAWO_FEMO' => $currentDate,
- 'TAWO_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
- ]);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "Ocurrió un error al actualizar el estado de las tareas.", $th->getMessage(), 500);
- }
- }
- DB::commit();
- return $this->responseController->makeResponse(false, "ÉXITO: Estado del workflow cambiado exitosamente");
- }
- public function getWorkflowHistory($idWorkflow, $user, $line)
- {
- $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
- if ($arrResponseCheckUser['error']) {
- return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
- }
- /*
- try {
- $idWorkflow = $this->encController->decrypt($idWorkflow);
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, 'Ocurrió un error al desencriptar el ID del workflow', $th->getMessage(), 406);
- }*/
- try {
- $arrHistory = DB::table('S002V01THWORK')
- ->where('HWORK_IDWO', '=', $idWorkflow)
- ->orderBy('HWORK_VERS', 'DESC')
- ->get([
- 'HWORK_VERS AS VERSION',
- 'HWORK_NOWO AS NOMBRE',
- 'HWORK_DESC AS DESCRIPCION',
- 'HWORK_COME AS COMENTARIO',
- 'HWORK_USRE AS USUARIO_CAMBIO',
- 'HWORK_FERE AS FECHA_CAMBIO'
- ]);
- $arrHistory = json_decode(json_encode($arrHistory), true);
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, "Ocurrió un error al obtener el historial del workflow.", $th->getMessage(), 500);
- }
- $responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate($arrHistory, $line);
- if ($responseCheckLatestUpdate['error']) {
- return $this->responseController->makeResponse(true, $responseCheckLatestUpdate['msg'], [], 500);
- }
- $arrHistory = $responseCheckLatestUpdate['response'];
- return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrHistory);
- }
- public function getTaskByWorkflow($idWorkflow, $user, $line)
- {
- $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
- if ($arrResponseCheckUser['error']) {
- return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
- }
- /*
- $idWorkflow = $this->encController->decrypt($idWorkflow);
- if (is_null($idWorkflow)) {
- return $this->responseController->makeResponse(true, 'El flujo de trabajo no está encriptado correctamente.', [], 500);
- }*/
- try {
- $arrTask = DB::table('S002V01TTAWO')->select([
- 'TAWO_IDTA AS ID_TAREA',
- 'TAWO_NOTA AS NOMBRE_TAREA',
- 'TAWO_DESC AS DESCRIPCION',
- 'TAWO_SECU AS SECUENCIA',
- 'TAWO_RQVA AS REQUIERE_VALIDACION',
- 'TAWO_REVA AS REGLA_VALIDACION',
- 'TAWO_ESTA AS ESTADO'
- ])->where([
- ['TAWO_IDWO', '=', $idWorkflow],
- ['TAWO_NULI', '=', $line],
- ])->get()->all();
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, 'Ocurrió un error al obtener las tareas del flujo de trabajo.', [], 500);
- }
- return $this->responseController->makeResponse(false, "ÉXITO: Consulta exitosa", $arrTask);
- }
- public function getTaskById($idTask, $user, $line)
- {
- $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
- if ($arrResponseCheckUser['error']) {
- return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
- }
- /*
- $idTask = $this->encController->decrypt($idTask);
- if (is_null($idTask)) {
- return $this->responseController->makeResponse(true, 'El identificador no se encuentra encriptado correctamente.', [], 401);
- }*/
- try {
- $arrTask = (array) DB::select("
- SELECT
- TAWO.TAWO_IDTA AS ID_TAREA,
- TAWO.TAWO_NULI AS NUMERO_LINEA,
- TAWO.TAWO_IDWO AS ID_WORKFLOW,
- TAWO.TAWO_NOTA AS NOMBRE_TAREA,
- TAWO.TAWO_DESC AS DESCRIPCION,
- TAWO.TAWO_SECU AS SECUENCIA,
- TAWO.TAWO_RQVA AS REQUIERE_VALIDACION,
- TAWO.TAWO_USAN AS USUARIOS_NOTIFICAR,
- CONCAT(TUSUA.USUA_NOMB, ' (', TUSUA.USUA_IDUS, ')') AS USUARIO_VALIDADOR,
- TAWO.TAWO_REVA AS REGLAS_VALIDACION,
- TFUNC.FUNC_NOMB AS ID_FUNCION,
- TMODU.MODU_NOMO AS ID_MODULO,
- TSUBM.SUBM_NOMB AS ID_SUBMODULO,
- TAWO.TAWO_ESTA AS ESTADO,
- TAWO.TAWO_INEX AS INFORMACION_EXTRA,
- TAWO.TAWO_USRE AS USUARIO_REGISTRO,
- TAWO.TAWO_FERE AS FECHA_REGISTRO,
- TAWO.TAWO_USMO AS USUARIO_MODIFICA,
- TAWO.TAWO_FEMO AS FECHA_MODIFICA,
- TAWO.TAWO_FEAR AS FECHA_ACTUALIZACION
- FROM S002V01TTAWO AS TAWO
- LEFT JOIN S002V01TUSUA AS TUSUA ON TUSUA.USUA_IDUS = TAWO.TAWO_USAV
- LEFT JOIN S002V01TMODU AS TMODU ON TMODU.MODU_IDMO = TAWO.TAWO_IDMO
- LEFT JOIN S002V01TFUNC AS TFUNC ON TFUNC.FUNC_IDFU = TAWO.TAWO_IDFU
- LEFT JOIN S002V01TSUBM AS TSUBM ON TSUBM.SUBM_IDSM = TAWO.TAWO_IDSM
- WHERE TAWO.TAWO_IDTA = ?
- AND TAWO.TAWO_NULI = ?
- ", [$idTask, $line]);
- $responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate($arrTask, $line);
- if ($responseCheckLatestUpdate['error']) {
- return $this->responseController->makeResponse(true, $responseCheckLatestUpdate['msg'], [], 500);
- }
- $arrTask = $responseCheckLatestUpdate['response'][0];
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, "Ocurrió un error al obtener las tareas.", $th->getMessage(), 500);
- }
- if (empty($arrTask)) {
- return $this->responseController->makeResponse(true, "La tarea no existe.", [], 500);
- }
- // Formatear información extra para el frontend
- $arrTask['INFORMACION_EXTRA_FORMATEADA'] = TaskConfigurationService::formatExtraInfoForFrontend(
- $arrTask['INFORMACION_EXTRA'],
- $arrTask['REGLAS_VALIDACION']
- );
- return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrTask);
- }
- public function getTaskConfiguration($idTask, $user, $line)
- {
- $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
- if ($arrResponseCheckUser['error']) {
- return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
- }
- // $idTask = $this->encController->decrypt($idTask);
- // if (is_null($idTask)) {
- // return $this->responseController->makeResponse(true, 'El identificador no se encuentra encriptado correctamente.', [], 401);
- // }
- try {
- $arrTask = (array) DB::select("
- SELECT
- TAWO.TAWO_RQVA AS REQUIERE_VALIDACION,
- TAWO.TAWO_USAN AS USUARIOS_NOTIFICAR,
- TAWO.TAWO_USAV AS USUARIO_VALIDADOR,
- TAWO.TAWO_REVA AS REGLAS_VALIDACION,
- TAWO.TAWO_IDFU AS ID_FUNCION,
- TFUNC.FUNC_NOMB AS NOMBRE_FUNCION,
- TAWO.TAWO_IDMO AS ID_MODULO,
- TMODU.MODU_NOMO AS NOMBRE_MODULO,
- TAWO.TAWO_IDSM AS ID_SUBMODULO,
- TSUBM.SUBM_NOMB AS NOMBRE_SUBMODULO,
- TAWO.TAWO_INEX AS INFORMACION_EXTRA
- FROM S002V01TTAWO AS TAWO
- LEFT JOIN S002V01TFUNC AS TFUNC ON TFUNC.FUNC_IDFU = TAWO.TAWO_IDFU
- LEFT JOIN S002V01TMODU AS TMODU ON TMODU.MODU_IDMO = TAWO.TAWO_IDMO
- LEFT JOIN S002V01TSUBM AS TSUBM ON TSUBM.SUBM_IDSM = TAWO.TAWO_IDSM
- WHERE TAWO.TAWO_IDTA = ?
- AND TAWO.TAWO_NULI = ?
- ", [$idTask, $line]);
- $arrTask = !empty($arrTask) ? (array) $arrTask[0] : [];
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, "Ocurrió un error al obtener la configuración de la tarea.", $th->getMessage(), 500);
- }
- if (empty($arrTask)) {
- return $this->responseController->makeResponse(true, "La tarea no existe.", [], 404);
- }
- // Formatear respuesta
- $response = [
- 'REQUIERE_VALIDACION' => $arrTask['REQUIERE_VALIDACION'],
- 'USUARIOS_NOTIFICAR' => json_decode($arrTask['USUARIOS_NOTIFICAR'], true) ?: [],
- 'USUARIO_VALIDADOR' => $arrTask['USUARIO_VALIDADOR'],
- 'REGLAS_VALIDACION' => $arrTask['REGLAS_VALIDACION'],
- 'MODULO' => [
- 'id' => $arrTask['ID_MODULO'] ? $this->encController->encrypt($arrTask['ID_MODULO']) : null,
- 'nombre' => $arrTask['NOMBRE_MODULO']
- ],
- 'SUBMODULO' => $arrTask['ID_SUBMODULO'] ? [
- 'id' => $this->encController->encrypt($arrTask['ID_SUBMODULO']),
- 'nombre' => $arrTask['NOMBRE_SUBMODULO']
- ] : null,
- 'FUNCION' => [
- 'id' => $arrTask['ID_FUNCION'],
- 'nombre' => $arrTask['NOMBRE_FUNCION']
- ],
- 'CONFIGURACION_EXTRA' => TaskConfigurationService::formatExtraInfoForFrontend(
- $arrTask['INFORMACION_EXTRA'],
- $arrTask['REGLAS_VALIDACION']
- )
- ];
- return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $response);
- }
- public function updateWorkflowTask(Request $request, $idTask)
- {
- $validator = Validator::make($request->all(), [
- 'NOMBRE_TAREA' => 'required|string',
- 'DESCRIPCION' => 'required|string',
- 'SECUENCIA' => 'required|integer',
- 'REQUIERE_VALIDACION' => 'nullable|boolean',
- 'USUARIOS_NOTIFICAR' => 'array',
- 'USUARIO_VALIDADOR' => 'nullable|string',
- 'REGLAS_VALIDACION' => 'string|in:Esperar,Ejecutar,NA',
- 'ID_FUNCION' => 'nullable|string',
- 'ID_MODULO' => 'nullable|string',
- 'ID_SUBMODULO' => 'nullable|string',
- 'ID_WORKFLOW_EJECUTAR' => 'nullable|integer',
- 'INTERVALO' => 'nullable|integer',
- 'UNIDAD' => 'nullable|string',
- 'USUARIO' => 'required|string',
- 'NUMERO_LINEA' => 'required|integer',
- ]);
- if ($validator->fails()) {
- return $this->responseController->makeResponse(
- true,
- "Se encontraron uno o más errores.",
- $this->responseController->makeErrors($validator->errors()->messages()),
- 401
- );
- }
- DB::beginTransaction();
- $requestData = $request->all();
- $arrResponseCheckUser = $this->resourcesController->checkUserEnc($requestData['USUARIO'], $requestData['NUMERO_LINEA']);
- if ($arrResponseCheckUser['error']) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
- }
- $user = $arrResponseCheckUser['response'];
- $decryptMod = $this->encController->decrypt($requestData['ID_MODULO']);
- if (!$decryptMod) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "ID_MODULO no fue desencriptada correctamente", [], 400);
- }
- $decryptSubMod = null;
- if (!empty($requestData['ID_SUBMODULO'])) {
- $decryptSubMod = $this->encController->decrypt($requestData['ID_SUBMODULO']);
- if (!$decryptSubMod) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "ID_SUBMODULO no fue desencriptada correctamente", [], 400);
- }
- }
- $now = $this->functionsController->now();
- $currentDate = $now->toDateTimeString();
- $informacionExtra = TaskConfigurationService::processExtraInfo(
- $requestData['REGLAS_VALIDACION'],
- $requestData
- );
- try {
- $validateUpdate = DB::table('S002V01TTAWO')
- ->where('TAWO_IDTA', '=', $idTask)
- ->where('TAWO_NULI', '=', $requestData['NUMERO_LINEA'])
- ->update([
- 'TAWO_NOTA' => $requestData['NOMBRE_TAREA'],
- 'TAWO_DESC' => $requestData['DESCRIPCION'],
- 'TAWO_SECU' => $requestData['SECUENCIA'],
- 'TAWO_RQVA' => $requestData['REQUIERE_VALIDACION'],
- 'TAWO_USAN' => json_encode($requestData['USUARIOS_NOTIFICAR']),
- 'TAWO_USAV' => $requestData['USUARIO_VALIDADOR'],
- 'TAWO_REVA' => $requestData['REGLAS_VALIDACION'],
- 'TAWO_IDFU' => $requestData['ID_FUNCION'],
- 'TAWO_IDMO' => $decryptMod,
- 'TAWO_IDSM' => $decryptSubMod,
- 'TAWO_INEX' => $informacionExtra,
- 'TAWO_USMO' => $user,
- 'TAWO_FEMO' => $currentDate,
- 'TAWO_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
- ]);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "Ocurrió un error al actualizar la tarea.", $th->getMessage(), 500);
- }
- if (!$validateUpdate) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "No se pudo actualizar la tarea.", [], 404);
- }
- DB::commit();
- return $this->responseController->makeResponse(false, "ÉXITO: Tarea actualizada exitosamente");
- }
- public function deleteTask(Request $request, $idTask)
- {
- $validator = Validator::make($request->all(), [
- 'USUARIO' => 'required|string',
- 'NUMERO_LINEA' => 'required|integer',
- ]);
- if ($validator->fails()) {
- return $this->responseController->makeResponse(
- true,
- "Se encontraron uno o más errores.",
- $this->responseController->makeErrors($validator->errors()->messages()),
- 401
- );
- }
- $idTask = $this->encController->decrypt($idTask);
- if (is_null($idTask)) {
- return $this->responseController->makeResponse(true, 'El identificador de la tarea no está encriptado correctamente.', [], 400);
- }
- DB::beginTransaction();
- $requestData = $request->all();
- $arrResponseCheckUser = $this->resourcesController->checkUserEnc($requestData['USUARIO'], $requestData['NUMERO_LINEA']);
- if ($arrResponseCheckUser['error']) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
- }
- $user = $arrResponseCheckUser['response'];
- try {
- $task = (array) DB::table('S002V01TTAWO')
- ->where('TAWO_IDTA', '=', $idTask)
- ->where('TAWO_NULI', '=', $requestData['NUMERO_LINEA'])
- ->first(['TAWO_IDWO', 'TAWO_SECU']);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "Ocurrió un error al obtener la tarea.", $th->getMessage(), 500);
- }
- if (empty($task)) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "La tarea no existe.", [], 404);
- }
- $now = $this->functionsController->now();
- $currentDate = $now->toDateTimeString();
- try {
- DB::table('S002V01TTAWO')
- ->where('TAWO_IDTA', '=', $idTask)
- ->where('TAWO_NULI', '=', $requestData['NUMERO_LINEA'])
- ->delete();
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "Ocurrió un error al eliminar la tarea.", $th->getMessage(), 500);
- }
- try {
- DB::table('S002V01TTAWO')
- ->where('TAWO_IDWO', '=', $task['TAWO_IDWO'])
- ->where('TAWO_NULI', '=', $requestData['NUMERO_LINEA'])
- ->where('TAWO_SECU', '>', $task['TAWO_SECU'])
- ->decrement('TAWO_SECU');
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "Ocurrió un error al reordenar las secuencias.", $th->getMessage(), 500);
- }
- DB::commit();
- return $this->responseController->makeResponse(false, "ÉXITO: Tarea eliminada exitosamente");
- }
- public function updateTaskConfiguration(Request $request, $idTask)
- {
- $validator = Validator::make($request->all(), [
- 'REQUIERE_VALIDACION' => 'nullable|boolean',
- 'USUARIOS_NOTIFICAR' => 'array',
- 'USUARIO_VALIDADOR' => 'nullable|string',
- 'REGLAS_VALIDACION' => 'string|in:Esperar,Ejecutar,NA',
- 'ID_FUNCION' => 'nullable|string',
- 'ID_MODULO' => 'nullable|string',
- 'ID_SUBMODULO' => 'nullable|string',
- 'ID_WORKFLOW_EJECUTAR' => 'nullable|integer',
- 'INTERVALO' => 'nullable|integer',
- 'UNIDAD' => 'nullable|string',
- 'USUARIO' => 'required|string',
- 'NUMERO_LINEA' => 'required|integer',
- ]);
- Log::info($request);
- if ($validator->fails()) {
- return $this->responseController->makeResponse(
- true,
- "Se encontraron uno o más errores.",
- $this->responseController->makeErrors($validator->errors()->messages()),
- 401
- );
- }
- DB::beginTransaction();
- $requestData = $request->all();
- $arrResponseCheckUser = $this->resourcesController->checkUserEnc($requestData['USUARIO'], $requestData['NUMERO_LINEA']);
- if ($arrResponseCheckUser['error']) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
- }
- $idTask = $this->encController->decrypt($idTask);
- if (is_null($idTask)) {
- return $this->responseController->makeResponse(true, 'El identificador de la tarea no se encuentra encriptado correctamente.', [], 401);
- }
- $idmod = $this->encController->decrypt($request['ID_MODULO']);
- if (is_null($idmod)) {
- return $this->responseController->makeResponse(true, 'El identificador deL modulo no se encuentra encriptado correctamente.', [], 401);
- }
- $user = $arrResponseCheckUser['response'];
- $decryptSubmod = null;
- if (!empty($requestData['ID_SUBMODULO'])) {
- $decryptSubmod = $this->encController->decrypt($requestData['ID_SUBMODULO']);
- if (!$decryptSubmod) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "ID_SUBMODULO no fue desencriptada correctamente", [], 400);
- }
- }
- $now = $this->functionsController->now();
- $currentDate = $now->toDateTimeString();
- $informacionExtra = TaskConfigurationService::processExtraInfo(
- $requestData['REGLAS_VALIDACION'],
- $requestData
- );
- try {
- $validateUpdate = DB::table('S002V01TTAWO')
- ->where('TAWO_IDTA', '=', $idTask)
- ->where('TAWO_NULI', '=', $requestData['NUMERO_LINEA'])
- ->update([
- 'TAWO_RQVA' => $requestData['REQUIERE_VALIDACION'],
- 'TAWO_USAN' => json_encode($requestData['USUARIOS_NOTIFICAR']),
- 'TAWO_USAV' => $requestData['USUARIO_VALIDADOR'],
- 'TAWO_REVA' => $requestData['REGLAS_VALIDACION'],
- 'TAWO_IDFU' => $requestData['ID_FUNCION'],
- 'TAWO_IDMO' => $idmod,
- 'TAWO_IDSM' => $decryptSubmod,
- 'TAWO_INEX' => $informacionExtra,
- 'TAWO_USMO' => $user,
- 'TAWO_FEMO' => $currentDate,
- 'TAWO_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
- ]);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "Ocurrió un error al actualizar la configuración de la tarea.", $th->getMessage(), 500);
- }
- if (!$validateUpdate) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "No se pudo actualizar la configuración de la tarea.", [], 404);
- }
- DB::commit();
- return $this->responseController->makeResponse(false, "ÉXITO: Configuración de tarea actualizada exitosamente");
- }
- //Submodulo de auditoria: Busqueda de flujos de trabajo y solicitudes de validacion
- public function getProcessWorkflow($user, $line)
- {
- $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
- if ($arrResponseCheckUser['error']) {
- return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
- }
- try {
- $arrProcessWorkflow = DB::table('S002V01TPRWO')
- ->where('PRWO_NULI', '=', $line)
- ->get([
- 'PRWO_IDPR AS ID_PROCESO',
- 'PRWO_IDMO AS ID_MODULO',
- 'PRWO_NOPR AS NOMBRE_PROCESO',
- 'PRWO_ESTA AS ESTADO',
- ]);
- $arrProcessWorkflow = json_decode(json_encode($arrProcessWorkflow), true);
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, "Ocurrió un error al obtener el proceso del flujo de trabajo.", $th->getMessage(), 500);
- }
- return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrProcessWorkflow);
- }
- public function getExecuteWorkflow($user, $line)
- {
- $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
- if ($arrResponseCheckUser['error']) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
- }
- $user = $arrResponseCheckUser['response'];
- try {
- $arrExecuteWorkflow = DB::table('S002V01TEJWO')
- ->where('EJWO_NULI', '=', $line)
- ->where('WORK_NULI', '=', $line)
- ->join('S002V01TWORK', 'WORK_IDWO', '=', 'EJWO_IDWO')
- ->get([
- 'EJWO_IDEW AS ID_EJECUCION_WORKFLOW',
- DB::raw('CONCAT(WORK_NOWO, " (", WORK_IDWO, ")") AS NOMBRE_WORKFLOW'),
- 'WORK_AUTO AS AUTOMATICO',
- 'EJWO_ESTA AS ESTADO',
- 'EJWO_USRE AS USUARIO_REGISTRA',
- 'EJWO_FERE AS FECHA_REGISTRA',
- 'EJWO_USMO AS USUARIO_MODIFICA',
- 'EJWO_FEMO AS FECHA_MODIFICA',
- ]);
- $arrExecuteWorkflow = json_decode(json_encode($arrExecuteWorkflow), true);
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, "Ocurrió un error al obtener las ejecuciones de los flujos de trabajo.", $th->getMessage(), 500);
- }
- $responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate($arrExecuteWorkflow, $line);
- if ($responseCheckLatestUpdate['error']) {
- return $this->responseController->makeResponse(true, $responseCheckLatestUpdate['msg'], [], 500);
- }
- $arrExecuteWorkflow = $responseCheckLatestUpdate['response'];
- $arrDataExecuteWorkflow = array();
- foreach ($arrExecuteWorkflow as $key => $executeWorkflow) {
- try {
- $arrExecuteTask = DB::table('S002V01TEJTW')
- ->where('EJTW_IDEW', '=', $executeWorkflow['ID_EJECUCION_WORKFLOW'])
- ->where('EJTW_NULI', '=', $line)
- ->get([
- 'EJTW_IDET AS ID_EJECUCION_TAREA',
- 'EJTW_IDTA AS ID_TAREA',
- 'EJTW_ESTA AS ESTADO',
- ]);
- $arrExecuteTask = json_decode(json_encode($arrExecuteTask), true);
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, "Ocurrió un error al obtener las tareas en ejecución", $th->getMessage(), 500);
- }
- $executeWorkflow['AUTOMATICO'] = $executeWorkflow['AUTOMATICO'] == 1 ? 'Si' : 'No';
- $existsUser = false;
- $quantityProcesses = 0;
- $quantityCompleted = 0;
- foreach ($arrExecuteTask as $executeTask) {
- if ($executeTask['ESTADO'] === 'Aceptado') {
- $quantityCompleted++;
- }
- $quantityProcesses++;
- try {
- $validateExists = DB::table('S002V01TEJNO')
- ->where('EJNO_IDET', '=', $executeTask['ID_EJECUCION_TAREA'])
- ->where('EJNO_NULI', '=', $line)
- ->where('EJNO_USNO', '=', $user)
- ->exists();
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, "Ocurrió un error al obtener los usuarios de notificación.", $th->getMessage(), 500);
- }
- if ($validateExists) {
- $existsUser = true;
- }
- }
- $progress = ($quantityCompleted * 100) / $quantityProcesses;
- $executeWorkflow['PROGRESO'] = $progress;
- if ($existsUser) {
- $arrDataExecuteWorkflow[] = $executeWorkflow;
- }
- }
- return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrDataExecuteWorkflow);
- }
- public function getExecuteTask($idExecute, $user, $line)
- {
- $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
- if ($arrResponseCheckUser['error']) {
- return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
- }
- $idExecute = $this->encController->decrypt($idExecute);
- if ($idExecute === null) {
- return $this->responseController->makeResponse(true, "La ejecución no está desencriptado correctamente.", [], 500);
- }
- try {
- $validateExists = DB::table('S002V01TEJWO')
- ->where('EJWO_IDEW', '=', $idExecute)
- ->where('EJWO_NULI', '=', $line)
- ->exists();
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, "Ocurrió un error al verificar si la ejecución existe.", $th->getMessage(), 500);
- }
- if (!$validateExists) {
- return $this->responseController->makeResponse(true, "La ejecución no existe.", [], 500);
- }
- try {
- $arrExecute = DB::table('S002V01TEJTW')
- ->where('EJTW_IDEW', '=', $idExecute)
- ->where('EJTW_NULI', '=', $line)
- ->where('TAWO_NULI', '=', $line)
- ->where('PRWO_NULI', '=', $line)
- ->join('S002V01TTAWO', 'TAWO_IDTA', '=', 'EJTW_IDTA')
- ->join('S002V01TPRWO', 'PRWO_IDPR', '=', 'TAWO_IDPR')
- ->join('S002V01TWORK', 'WORK_IDWO', '=', 'TAWO_IDWO')
- ->get([
- 'EJTW_IDEW AS ID_EJECUCION_WORKFLOW',
- 'EJTW_IDET AS ID_EJECUCION_TAREA',
- DB::raw('CONCAT(TAWO_NOTA, " (", TAWO_IDTA, ")") AS NOMBRE_TAREA'),
- DB::raw('CONCAT(PRWO_NOPR, " (", PRWO_IDPR, ")") AS NOMBRE_PROCESO'),
- DB::raw('CONCAT(WORK_NOWO, " (", WORK_IDWO, ")") AS NOMBRE_WORKFLOW'),
- 'EJTW_INFO AS INFORMACION_FORMULARIO',
- 'EJTW_INRE AS INFORMACION_REGISTRO',
- 'EJTW_ESTA AS ESTADO',
- 'EJTW_USRE AS USUARIO_REGISTRA',
- 'EJTW_FERE AS FECHA_REGISTRA',
- 'EJTW_USMO AS USUARIO_MODIFICA',
- 'EJTW_FEMO AS FECHA_MODIFICA',
- ]);
- $arrExecute = json_decode(json_encode($arrExecute), true);
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, "Ocurrió un error al obtener las ejecuciones.", $th->getMessage(), 500);
- }
- foreach ($arrExecute as $keyExecute => $execute) {
- try {
- $notificate = (array) DB::table('S002V01TEJNO')
- ->where('EJNO_IDET', '=', $execute['ID_EJECUCION_TAREA'])
- ->where('EJNO_NULI', '=', $line)
- ->where('EJNO_TINO', '=', 'V')
- ->where('EJNO_ESTA', '=', 'Notificado')
- ->orderBy('EJNO_SECU', 'ASC')
- ->join('S002V01TUSUA', 'USUA_IDUS', '=', 'EJNO_USNO')
- ->first([
- DB::raw('CONCAT(USUA_NOMB, " ", USUA_APPA, IF(ISNULL(USUA_APMA), "", CONCAT(" ", USUA_APMA)), " (", USUA_IDUS, ")") AS USUARIO_RESPONSABLE'),
- 'EJNO_ESTA AS ESTADO_NOTIFICACION',
- ]);
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, "Ocurrió un error al obtener las notificaciones de las tareas de ejecución.", $th->getMessage(), 500);
- }
- if (!empty($notificate)) {
- $execute['USUARIO_RESPONSABLE'] = $notificate['USUARIO_RESPONSABLE'];
- } else if ($execute['ESTADO'] == 'Aceptado') {
- $execute['USUARIO_RESPONSABLE'] = 'Asignación terminada';
- } else {
- $execute['USUARIO_RESPONSABLE'] = 'Sin asignar';
- }
- try {
- $arrNotificate = DB::table('S002V01TEJNO')
- ->where('EJNO_IDET', '=', $execute['ID_EJECUCION_TAREA'])
- ->where('EJNO_TINO', '=', 'V')
- ->where('EJNO_NULI', '=', $line)
- ->get([
- 'EJNO_ESTA AS ESTADO_NOTIFICACION'
- ]);
- $arrNotificate = json_decode(json_encode($arrNotificate), true);
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, "Ocurrió un error al obtener las notificaciones de las tareas de ejecución.", $th->getMessage(), 500);
- }
- if (!empty($arrNotificate)) {
- $quantityProcesses = 0;
- $quantityCompleted = 0;
- foreach ($arrNotificate as $notificate) {
- if ($notificate['ESTADO_NOTIFICACION'] === 'Aceptado') {
- $quantityCompleted++;
- }
- if ($notificate['ESTADO_NOTIFICACION'] !== 'Obsoleto') {
- $quantityProcesses++;
- }
- }
- $progress = ($quantityCompleted * 100) / $quantityProcesses;
- $execute['PROGRESO'] = $progress;
- } else {
- $execute['PROGRESO'] = 0;
- }
- $arrExecute[$keyExecute] = $execute;
- }
- $responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate($arrExecute, $line);
- if ($responseCheckLatestUpdate['error']) {
- return $this->responseController->makeResponse(true, $responseCheckLatestUpdate['msg'], [], 500);
- }
- $arrExecute = $responseCheckLatestUpdate['response'];
- return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrExecute);
- }
- public function updateRequestWorkflow(Request $request, $idExecuteTask)
- {
- $validator = Validator::make($request->all(), [
- 'ESTADO' => 'required|string|in:Aceptado,Rechazado',
- 'MENSAJE_RECHAZO' => 'nullable|string',
- 'USUARIO' => 'required|string',
- 'NUMERO_LINEA' => 'required|integer',
- ]);
- if ($validator->fails()) {
- return $this->responseController->makeResponse(
- true,
- "Se encontraron uno o más errores.",
- $this->responseController->makeErrors($validator->errors()->messages()),
- 401
- );
- }
- DB::beginTransaction();
- $requestData = $request->all();
- // Se desencripta el identificador de la ejecución de la tarea
- $idExecute = $this->encController->decrypt($idExecuteTask);
- if (is_null($idExecute)) {
- return $this->responseController->makeResponse(true, "No se pudo desencriptar el proceso de ejecución.", [], 500);
- }
- // Se recupera el identificador del usuario
- $arrResponseCheckUser = $this->resourcesController->checkUserEnc($requestData['USUARIO'], $requestData['NUMERO_LINEA']);
- if ($arrResponseCheckUser['error']) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
- }
- $user = $arrResponseCheckUser['response'];
- // Se valida que el usuario sea para la validación
- try {
- $validate = DB::table('S002V01TEJNO')
- ->where('EJNO_NULI', '=', $requestData['NUMERO_LINEA'])
- ->where('EJNO_USNO', '=', $user)
- ->where('EJNO_TINO', '=', 'V')
- ->where('EJNO_ESTA', '=', 'Notificado')
- ->exists();
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, 'Ocurrió un error al verificar la validación del usuario', $th->getMessage(), 500);
- }
- if (!$validate) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, 'El usuario no está autorizado para modificar el estado de la solicitud.', [], 500);
- }
- // Se obtiene la información del workflow
- try {
- $arrExecute = (array) DB::table('S002V01TEJTW')
- ->where('EJTW_IDET', '=', $idExecute)
- ->where('EJTW_NULI', '=', $requestData['NUMERO_LINEA'])
- ->join('S002V01TEJWO', 'EJWO_IDEW', '=', 'EJTW_IDEW')
- ->join('S002V01TTAWO', 'TAWO_IDTA', '=', 'EJTW_IDTA')
- ->first([
- 'EJWO_IDEW AS ID_EJECUCION_WORKFLOW',
- 'EJWO_IDWO AS ID_WORKFLOW',
- 'EJTW_IDTA AS ID_TAREA',
- 'EJTW_INFO AS INFORMACION_FORMULARIO',
- 'EJTW_INRE AS INFORMACION_REGISTRO',
- 'EJTW_ESTA AS ESTADO',
- 'TAWO_SECU AS SECUENCIA',
- ]);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, 'Ocurrió un error al obtener los datos del proceso de ejecución.', $th->getMessage(), 500);
- }
- if (empty($arrExecute)) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, '', [], 500);
- }
- // Se obtiene la información del proceso
- try {
- $procesoWorkflow = (array) DB::table('S002V01TTAWO')
- ->where('TAWO_IDTA', '=', $arrExecute['ID_TAREA'])
- ->join('S002V01TPRWO', 'TAWO_IDPR', '=', 'PRWO_IDPR')
- ->first([
- 'PRWO_IDPR AS ID_PROCESO',
- 'PRWO_IDMO AS ID_MODELO',
- 'PRWO_NOPR AS NOMBRE_PROCESO',
- 'PRWO_FVMR AS FORMATO_VALIDACION',
- ]);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, 'Ocurrió un error al obtener los datos del proceso del flujo de trabajo.', $th->getMessage(), 500);
- }
- if (empty($procesoWorkflow)) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, 'No se encontró el proceso del flujo de trabajo.', [], 500);
- }
- $now = $this->functionsController->now();
- $currentDate = $now->toDateTimeString();
- if ($requestData['ESTADO'] === 'Aceptado') {
- try {
- $validateUdpdate = DB::table('S002V01TEJNO')
- ->where('EJNO_NULI', '=', $requestData['NUMERO_LINEA'])
- ->where('EJNO_USNO', '=', $user)
- ->where('EJNO_TINO', '=', 'V')
- ->where('EJNO_ESTA', '=', 'Notificado')
- ->where('EJNO_IDET', '=', $idExecute)
- ->update([
- 'EJNO_ESTA' => 'Aceptado',
- 'EJNO_USMO' => $user,
- 'EJNO_FEMO' => $currentDate,
- 'EJNO_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
- ]);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, 'Ocurrió un error al modificar el estado de la notificación. 1', $th->getMessage(), 500);
- }
- if (!$validateUdpdate) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, 'No se pudo modificar el estado de la notificación.', [], 500);
- }
- try {
- $arrNextNotificate = (array) DB::table('S002V01TEJNO')
- ->where('EJNO_NULI', '=', $requestData['NUMERO_LINEA'])
- ->where('EJNO_TINO', '=', 'V')
- ->where('EJNO_ESTA', '=', 'En espera')
- ->where('EJNO_IDET', '=', $idExecute)
- ->where('EJTW_NULI', '=', $requestData['NUMERO_LINEA'])
- ->where('TAWO_NULI', '=', $requestData['NUMERO_LINEA'])
- ->where('PRWO_NULI', '=', $requestData['NUMERO_LINEA'])
- ->join('S002V01TEJTW', 'EJTW_IDET', '=', 'EJNO_IDET')
- ->join('S002V01TEJWO', 'EJWO_IDEW', '=', 'EJTW_IDEW')
- ->join('S002V01TTAWO', 'TAWO_IDTA', '=', 'EJTW_IDTA')
- ->join('S002V01TPRWO', 'TAWO_IDPR', '=', 'PRWO_IDPR')
- ->orderBy('EJNO_SECU', 'ASC')
- ->first([
- 'EJNO_IDEN AS ID_EJECUCION_NOTIFICACION',
- 'EJNO_IDET AS ID_EJECUCION_TAREA',
- 'EJNO_USNO AS USUARIO_NOTIFICACION',
- 'EJWO_IDEW AS ID_EJECUCION_WORKFLOW',
- 'TAWO_IDTA AS ID_TAREA',
- 'TAWO_NOTA AS NOMBRE_TAREA',
- 'PRWO_IDPR AS ID_PROCESO',
- 'PRWO_NOPR AS NOMBRE_PROCESO',
- ]);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, 'Ocurrió un error al obtener el siguiente usuario para validación.', $th->getMessage(), 500);
- }
- if (!empty($arrNextNotificate)) {
- $objExecute = ['ID' => $arrNextNotificate['ID_EJECUCION_WORKFLOW'], 'TYPE' => 'VALIDATE'];
- $strExecuteWorkflow = json_encode($objExecute);
- $encExecuteWorkflow = $this->encController->encrypt($strExecuteWorkflow);
- $this->notificationsController->emitNotification(
- 'S002V01M03GEPR',
- 'Nuevo flujo de procesos creado',
- "El usuario $user ha creado un nuevo flujo de trabajo: " . $arrNextNotificate['NOMBRE_PROCESO'] . ". La tarea: " . $arrNextNotificate['NOMBRE_TAREA'] . " requiere de su validación.",
- [[
- 'BOTON' => 'Ver solicitud',
- 'FUNCION' => 'openModule',
- 'PARAMETROS' => json_encode([$this->encController->encrypt("GEPR/SFTR/GSFT/" . $encExecuteWorkflow)]),
- ]],
- [$arrNextNotificate['USUARIO_NOTIFICACION']],
- $user,
- $requestData['NUMERO_LINEA'],
- $this->socketClient,
- );
- try {
- $validateUpdate = DB::table('S002V01TEJNO')
- ->where('EJNO_NULI', '=', $requestData['NUMERO_LINEA'])
- ->where('EJNO_TINO', '=', 'V')
- ->where('EJNO_ESTA', '=', 'En espera')
- ->where('EJNO_IDET', '=', $idExecute)
- ->where('EJNO_IDEN', '=', $arrNextNotificate['ID_EJECUCION_NOTIFICACION'])
- ->update([
- 'EJNO_ESTA' => 'Notificado',
- 'EJNO_USMO' => $user,
- 'EJNO_FEMO' => $currentDate,
- 'EJNO_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
- ]);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, 'Ocurrió un error registrar la notificación de siguiente usuario.', $th->getMessage(), 500);
- }
- if (!$validateUpdate) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, 'No se pudo registrar la siguiente notificación del usuario.', [], 500);
- }
- }
- } else {
- try {
- $validateUpdate = DB::table('S002V01TEJNO')
- ->where('EJNO_IDET', '=', $idExecute)
- ->where('EJNO_USNO', '=', $user)
- ->where('EJNO_NULI', '=', $requestData['NUMERO_LINEA'])
- ->where('EJNO_ESTA', '=', 'Notificado')
- ->where('EJNO_TINO', '=', 'V')
- ->update([
- 'EJNO_ESTA' => 'Rechazado',
- 'EJNO_MERE' => $requestData['MENSAJE_RECHAZO'],
- 'EJNO_USMO' => $user,
- 'EJNO_FEMO' => $currentDate,
- 'EJNO_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
- ]);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, 'Ocurrió un error al modificar el estado de la notificación. 2', $th->getMessage(), 500);
- }
- if (!$validateUpdate) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, 'No se pudo modificar el estado de la notificación.', [], 500);
- }
- }
- try {
- $validateExists = DB::table('S002V01TEJNO')
- ->where('EJNO_IDET', '=', $idExecute)
- ->where('EJNO_NULI', '=', $requestData['NUMERO_LINEA'])
- ->where('EJNO_TINO', '=', 'V')
- ->where('EJNO_ESTA', '=', 'Notificado')
- ->exists();
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, 'Ocurrió un error al obtener el siguiente usuario para validación.', $th->getMessage(), 500);
- }
- $newStateExecute = $requestData['ESTADO'];
- if ($validateExists && $requestData['ESTADO'] === 'Aceptado') {
- $newStateExecute = 'En proceso';
- }
- try {
- $validateUpdate = DB::table('S002V01TEJTW')
- ->where('EJTW_IDET', '=', $idExecute)
- ->where('EJTW_NULI', '=', $requestData['NUMERO_LINEA'])
- ->update([
- 'EJTW_ESTA' => $newStateExecute,
- 'EJTW_USMO' => $user,
- 'EJTW_FEMO' => $currentDate,
- 'EJTW_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
- ]);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "Ocurrió un error al modificar la ejecución.", $th->getMessage(), 500);
- }
- if (!$validateUpdate) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "No se pudo modificar la ejecución.", [], 500);
- }
- try {
- $validateExists = DB::table('S002V01TEJTW')
- ->where('EJTW_NULI', '=', $requestData['NUMERO_LINEA'])
- ->where('EJTW_IDEW', '=', $arrExecute['ID_EJECUCION_WORKFLOW'])
- ->where('EJTW_ESTA', '=', 'En espera')
- ->orWhere('EJTW_ESTA', '=', 'En proceso')
- ->orWhere('EJTW_ESTA', '=', 'Notificado')
- ->orWhere('EJTW_ESTA', '=', 'Rechazado')
- ->exists();
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "Ocurrió un error al verificar si existen tareas pendientes.", $th->getMessage(), 500);
- }
- if (!$validateExists) {
- try {
- $validateUpdate = DB::table('S002V01TEJWO')
- ->where('EJWO_IDEW', '=', $arrExecute['ID_EJECUCION_WORKFLOW'])
- ->where('EJWO_NULI', '=', $requestData['NUMERO_LINEA'])
- ->where('EJWO_ESTA', '=', 'En proceso')
- ->update([
- 'EJWO_ESTA' => 'Terminada',
- 'EJWO_USMO' => $user,
- 'EJWO_FEMO' => $currentDate,
- 'EJWO_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
- ]);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "Ocurrió un error al modificar el estado del flujo de trabajo de ejecución.", $th->getMessage(), 500);
- }
- if (!$validateUpdate) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "No se pudo modificar el estado del flujo de trabajo de ejecución.", [], 500);
- }
- $strInfoRegister = $this->encController->decrypt($arrExecute['INFORMACION_REGISTRO']);
- $arrInfoRegister = json_decode($strInfoRegister, true);
- $arrFormatValidator = json_decode($procesoWorkflow['FORMATO_VALIDACION'], true);
- foreach ($arrFormatValidator as $keyFormatValidator => $formatValidator) {
- if (!array_key_exists($formatValidator['TABLA'], $arrInfoRegister)) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, 'La tabla no existe en la información del proceso.', [], 500);
- }
- $tableName = $formatValidator['TABLA'];
- $arrInfoData = $arrInfoRegister[$tableName];
- foreach ($arrInfoData as $infoRegister) {
- $arrWhere = array();
- foreach ($infoRegister as $key => $value) {
- $arrWhere[] = [
- $key,
- '=',
- $value
- ];
- }
- $arrWhere[] = [$formatValidator['NUMERO_LINEA'], '=', $requestData['NUMERO_LINEA']];
- try {
- $validateUpdate = DB::table($tableName)
- ->where($arrWhere)
- ->update([
- $formatValidator['CAMPO_ESTADO'] => $formatValidator['CAMBIO_ESTADO'],
- $formatValidator['USUARIO_MODIFICA'] => $user,
- $formatValidator['FECHA_MODIFICA'] => $currentDate,
- ]);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, 'Ocurrió un error al modificar los campos de workflow.', $th->getMessage(), 500);
- }
- if (!$validateUpdate) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, 'No se pudo modificar los campos de workflow.', [], 500);
- }
- }
- }
- }
- DB::commit();
- return $this->responseController->makeResponse(false, "ÉXITO: Modificación Exitosa");
- }
- public function getHistoryNotificateTask($idExecuteTask, $user, $line)
- {
- $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
- if ($arrResponseCheckUser['error']) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
- }
- $idExecuteTask = $this->encController->decrypt($idExecuteTask);
- if (is_null($idExecuteTask)) {
- return $this->responseController->makeResponse(true, 'El identificador no está encriptado correctamente.', [], 401);
- }
- try {
- $arrHistory = DB::table('S002V01TEJNO')
- ->where('EJNO_NULI', '=', $line)
- ->where('EJNO_IDET', '=', $idExecuteTask)
- ->where('EJNO_ESTA', '!=', 'Obsoleto')
- ->join('S002V01TUSUA', 'USUA_IDUS', '=', 'EJNO_USNO')
- ->orderBy('EJNO_SECU', 'ASC')
- ->get([
- 'EJNO_IDEN AS ID_EJECUCION_NOTIFICACION',
- DB::raw(
- 'CONCAT(USUA_NOMB, " ", USUA_APPA, IF(ISNULL(USUA_APMA), "", CONCAT(" ", USUA_APMA)), " (", USUA_IDUS, ")") AS USUARIO_RESPONSABLE'
- ),
- 'EJNO_TINO AS TIPO_NOTIFICACION',
- 'EJNO_ESTA AS ESTADO',
- 'EJNO_USRE AS USUARIO_REGISTRA',
- 'EJNO_FERE AS FECHA_REGISTRA',
- 'EJNO_USMO AS USUARIO_MODIFICA',
- 'EJNO_FEMO AS FECHA_MODIFICA',
- ]);
- $arrHistory = json_decode(json_encode($arrHistory), true);
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, "Ocurrió un error al obtener el historial de las notificaciones.", $th->getMessage(), 500);
- }
- foreach ($arrHistory as $key => $history) {
- if ($history['TIPO_NOTIFICACION'] === 'N') {
- $history['TIPO_NOTIFICACION'] = 'Solo notificación';
- } else if ($history['TIPO_NOTIFICACION'] === 'V') {
- $history['TIPO_NOTIFICACION'] = 'Para validación';
- }
- $arrHistory[$key] = $history;
- }
- $responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate($arrHistory, $line);
- if ($responseCheckLatestUpdate['error']) {
- return $this->responseController->makeResponse(true, $responseCheckLatestUpdate['msg'], [], 500);
- }
- $arrHistory = $responseCheckLatestUpdate['response'];
- return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrHistory);
- }
- public function registerRequestWorkflow(int $idProceso, string $encProcess, string $encRequest, string $user, string $line)
- {
- $arrResponse = array('error' => false, 'msg' => '', 'response' => []);
- // Se obtiene la información del proceso de ejecución con los datos del workflow y de la tarea
- try {
- $processWorkflow = (array) DB::table('S002V01TPRWO')
- ->where('PRWO_IDPR', '=', $idProceso)
- ->where('PRWO_NULI', '=', $line)
- ->where('PRWO_ESTA', '=', 'Asignado')
- ->join('S002V01TTAWO', 'TAWO_IDPR', '=', 'PRWO_IDPR')
- ->join('S002V01TWORK', 'WORK_IDWO', '=', 'TAWO_IDWO')
- ->first([
- 'PRWO_IDMO AS ID_MODULO',
- 'PRWO_NOPR AS NOMBRE_PROCESO',
- 'WORK_IDWO AS ID_WORKFLOW',
- 'WORK_NOWO AS NOMBRE_WORKFLOW',
- 'TAWO_IDTA AS ID_TAREA',
- 'TAWO_NOTA AS NOMBRE_TAREA',
- 'TAWO_SECU AS SECUENCIA',
- 'TAWO_REVA AS REGLA_VALIDACION',
- 'TAWO_OTWO AS ID_OTRO_WORKFLOW',
- ]);
- } catch (\Throwable $th) {
- $arrResponse['error'] = true;
- $arrResponse['msg'] = 'Ocurrió un error al obtener los datos del proceso del flujo de trabajo.';
- $arrResponse['response'] = $th->getMessage();
- return $arrResponse;
- }
- // Se obtiene la fecha actual
- $now = $this->functionsController->now();
- $currentDate = $now->toDateTimeString();
- // Si no se encontraron datos, entonces se termina el proceso.
- if (empty($processWorkflow)) {
- $arrResponse['error'] = true;
- $arrResponse['msg'] = 'El proceso de la tarea no existe.';
- return $arrResponse;
- }
- // Si la tarea de ejecución es la primera del workflow, entonces...
- if ($processWorkflow['SECUENCIA'] == 1) {
- // Se registra la ejecución del workflow y se obtiene el identificador
- try {
- $idExecuteWorkflow = DB::table('S002V01TEJWO')->insertGetId([
- 'EJWO_NULI' => $line,
- 'EJWO_IDWO' => $processWorkflow['ID_WORKFLOW'],
- 'EJWO_USRE' => $user,
- 'EJWO_FERE' => $currentDate,
- 'EJWO_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
- ]);
- } catch (\Throwable $th) {
- $arrResponse['error'] = true;
- $arrResponse['msg'] = 'Ocurrió un error al registrar la ejecución del flujo de trabajo.';
- $arrResponse['response'] = $th->getMessage();
- return $arrResponse;
- }
- if (!$idExecuteWorkflow) {
- $arrResponse['error'] = true;
- $arrResponse['msg'] = 'No se pudo registrar la ejecución del flujo de trabajo.';
- return $arrResponse;
- }
- // Se hace el registro de la ejecución de la tarea del workflow
- try {
- $idExecuteTask = DB::table('S002V01TEJTW')->insertGetId([
- 'EJTW_NULI' => $line,
- 'EJTW_IDEW' => $idExecuteWorkflow,
- 'EJTW_IDTA' => $processWorkflow['ID_TAREA'],
- 'EJTW_INFO' => $encProcess,
- 'EJTW_INRE' => $encRequest,
- 'EJTW_ESTA' => 'En proceso',
- 'EJTW_USRE' => $user,
- 'EJTW_FERE' => $currentDate,
- 'EJTW_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
- ]);
- } catch (\Throwable $th) {
- $arrResponse['error'] = true;
- $arrResponse['msg'] = 'Ocurrió un error al registrar la solicitud.';
- $arrResponse['response'] = $th->getMessage();
- return $arrResponse;
- }
- if (!$idExecuteTask) {
- $arrResponse['error'] = true;
- $arrResponse['msg'] = 'No se pudo registrar la solicitud.';
- return $arrResponse;
- }
- // Se obtienen las otras tareas que se ejecutarán
- try {
- $arrTasks = DB::table('S002V01TTAWO')
- ->where('TAWO_NULI', '=', $line)
- ->where('TAWO_IDWO', '=', $processWorkflow['ID_WORKFLOW'])
- ->where('TAWO_IDTA', '!=', $processWorkflow['ID_TAREA'])
- ->where('TAWO_ESTA', '=', 'Activo')
- ->orderBy('TAWO_SECU', 'DESC')
- ->get([
- 'TAWO_IDTA AS ID_TAREA',
- 'TAWO_OTWO AS OTRO_WORKFLOW',
- 'TAWO_IDPR AS ID_PROCESO',
- 'TAWO_NOTA AS NOMBRE_TAREA',
- 'TAWO_DESC AS DESCRIPCION',
- 'TAWO_REVA AS REGLAS_VALIDACION',
- ]);
- $arrTasks = json_decode(json_encode($arrTasks), true);
- } catch (\Throwable $th) {
- $arrResponse['error'] = true;
- $arrResponse['msg'] = 'Ocurrió un error al obtener las tareas pendientes.';
- $arrResponse['response'] = $th->getMessage();
- return $arrResponse;
- }
- // Se registran las tareas que continuarán para colocarlas en cola.
- foreach ($arrTasks as $task) {
- try {
- $validateInsert = DB::table('S002V01TEJTW')->insert([
- 'EJTW_NULI' => $line,
- 'EJTW_IDEW' => $idExecuteWorkflow,
- 'EJTW_IDTA' => $task['ID_TAREA'],
- 'EJTW_ESTA' => 'En espera',
- 'EJTW_USRE' => $user,
- 'EJTW_FERE' => $currentDate,
- 'EJTW_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
- ]);
- } catch (\Throwable $th) {
- $arrResponse['error'] = true;
- $arrResponse['msg'] = 'Ocurrió un error al registrar la solicitud para en cola.';
- $arrResponse['response'] = $th->getMessage();
- return $arrResponse;
- }
- if (!$validateInsert) {
- $arrResponse['error'] = true;
- $arrResponse['msg'] = 'No se pudo registrar la solicitud.';
- return $arrResponse;
- }
- }
- // Se obtiene el primer usuario para la validación de la tarea
- try {
- $notiValidate = DB::table('S002V01TNTWO')
- ->where('NTWO_IDTA', '=', $processWorkflow['ID_TAREA'])
- ->where('NTWO_NULI', '=', $line)
- ->where('NTWO_TINO', '=', 'V')
- ->where('NTWO_ESTA', '=', 'Activo')
- ->orderBy('NTWO_SECU', 'ASC')
- ->get([
- 'NTWO_IDUS AS ID_USUARIO',
- ]);
- $notiValidate = json_decode(json_encode($notiValidate), true);
- } catch (\Throwable $th) {
- $arrResponse['error'] = true;
- $arrResponse['msg'] = 'Ocurrió un error al obtener los ajustes de las notificaciones.';
- $arrResponse['response'] = $th->getMessage();
- return $arrResponse;
- }
- if (empty($notiValidate)) {
- $arrResponse['error'] = true;
- $arrResponse['msg'] = 'No existe usuario para validar el flujo de trabajo.';
- return $arrResponse;
- }
- // Se obtiene el identificador del usuario
- $validateUser = $notiValidate[0]['ID_USUARIO'];
- $arrInfoConnection = array();
- $this->socketClient->emit('get_connections', []);
- if ($packet = $this->socketClient->wait('current_connections')) {
- $data = json_decode($packet->data, true);
- $arrInfoConnection = $data;
- }
- $arrUsersConnected = array();
- foreach ($arrInfoConnection as $users) {
- $data = explode('.', $users);
- $userConnected = $this->encController->decrypt($data[0]);
- $arrUsersConnected[] = $userConnected;
- }
- $additionalComments = '';
- switch ($processWorkflow['REGLA_VALIDACION']) {
- case 'S':
- if (!in_array($validateUser, $arrUsersConnected)) {
- $additionalComments = 'Se detectó que el usuario que debe validar la solicitud no se encuentra conectado dentro del sistema, sin embargo, la tarea está configurada para esperar a que el usuario se conecte y valide o rechase la solicitud.';
- goto continue_notification;
- }
- break;
- case 'C':
- check_connection:
- if (!in_array($validateUser, $arrUsersConnected)) {
- array_shift($notiValidate);
- if (empty($notiValidate)) {
- $additionalComments = 'Se detectó que el usuario no se encuentra conectado dentro del sistema, sin embargo, al no tener otro usuario adicional para validar la tarea, la ejecución se quedará en espera hasta que el usuario se haya conectado.';
- goto continue_notification;
- }
- $validateUser = $notiValidate[0]['ID_USUARIO'];
- goto check_connection;
- }
- break;
- case 'E':
- if (is_null($processWorkflow['ID_OTRO_WORKFLOW'])) {
- $arrResponse['error'] = true;
- $arrResponse['msg'] = 'Se activó la regla de validación para activar otro flujo de trabajo en caso de que el usuario no se encuentre conectado, sin embargo, no hay otro flujo de trabajo registrado para ejecutar.';
- return $arrResponse;
- }
- $encUser = $this->encController->encrypt($user);
- if (is_null($encUser)) {
- $arrResponse['error'] = true;
- $arrResponse['msg'] = 'Ocurrió un error al encriptar el usuario.';
- return $arrResponse;
- }
- $requestWorkflow = [
- 'ID_WORKFLOW' => $processWorkflow['ID_OTRO_WORKFLOW'],
- 'USUARIO' => $encUser,
- 'NUMERO_LINEA' => $line,
- ];
- $requestWorkflow = new Request($requestWorkflow);
- $responseWorkflow = $this->activateManualWorkflow($requestWorkflow);
- $responseWorkflow = json_decode($responseWorkflow->original, true);
- if ($responseWorkflow['error']) {
- $arrResponse['error'] = true;
- $arrResponse['msg'] = $responseWorkflow['msg'];
- return $arrResponse;
- }
- $additionalComments = "Se detectó que el usuario no se encuentra conectado dentro del sistema, sin embargo, las reglas de validación activaron el flujo de trabajo #{$processWorkflow['ID_OTRO_WORKFLOW']}";
- break;
- }
- continue_notification:
- // Se obtiene el objeto de ejecución
- $objExecute = ['ID' => $idExecuteWorkflow, 'TYPE' => 'VALIDATE'];
- // Se obtiene la cadena del objeto
- $strExecuteWorkflow = json_encode($objExecute);
- // Se obtiene la la cadena encriptada del objeto
- $encExecuteWorkflow = $this->encController->encrypt($strExecuteWorkflow);
- $arrUser = $this->resourcesController->getUser($user, $line);
- if ($arrUser['error']) {
- $arrResponse['error'] = true;
- $arrResponse['msg'] = $arrUser['msg'];
- return $arrResponse;
- }
- $nameUser = $arrUser['response'];
- // Se emite la notificación para el usuario
- $this->notificationsController->emitNotification(
- 'S002V01M03GEPR',
- 'Nuevo flujo de procesos creado',
- "El usuario {$nameUser} ha creado un nuevo flujo de trabajo: {$processWorkflow['NOMBRE_PROCESO']}
- La tarea: {$processWorkflow['NOMBRE_TAREA']} requiere de su validación. \n {$additionalComments}",
- [[
- 'BOTON' => 'Ver solicitud',
- 'FUNCION' => 'openModule',
- 'PARAMETROS' => json_encode([$this->encController->encrypt("GEPR/SFTR/GSFT/" . $encExecuteWorkflow)]),
- ]],
- [$validateUser],
- $user,
- $line,
- $this->socketClient,
- );
- // Se obtiene los usuarios que solo son para notificar
- try {
- $arrNotification = DB::table('S002V01TNTWO')
- ->where('NTWO_IDTA', '=', $processWorkflow['ID_TAREA'])
- ->where('NTWO_NULI', '=', $line)
- ->where('NTWO_TINO', '!=', 'O')
- ->where('NTWO_ESTA', '=', 'Activo')
- ->get([
- 'NTWO_IDUS AS ID_USUARIO',
- 'NTWO_TINO AS TIPO_NOTIFICACION',
- 'NTWO_SECU AS SECUENCIA',
- ]);
- // Se obtiene la información como un arreglo
- $arrNotification = json_decode(json_encode($arrNotification), true);
- } catch (\Throwable $th) {
- $arrResponse['error'] = true;
- $arrResponse['msg'] = 'Ocurrió un error al obtener los ajustes de las notificaciones.';
- $arrResponse['response'] = $th->getMessage();
- return $arrResponse;
- }
- $arrUserNoti = array_filter($arrNotification, fn($value) => $value['TIPO_NOTIFICACION'] === 'N');
- $arrUserNoti = array_column($arrUserNoti, 'ID_USUARIO');
- // Se obtiene el objeto de ejecución
- $objExecute = ['ID' => $idExecuteWorkflow, 'TYPE' => 'NOTIFICATE'];
- // Se obtiene la cadena del objeto
- $strExecuteWorkflow = json_encode($objExecute);
- // Se obtiene la la cadena encriptada del objeto
- $encExecuteWorkflow = $this->encController->encrypt($strExecuteWorkflow);
- $arrUserValidation = $this->resourcesController->getUser($validateUser, $line);
- if ($arrUserValidation['error']) {
- $arrResponse['error'] = true;
- $arrResponse['msg'] = $arrUserValidation['msg'];
- return $arrResponse;
- }
- $nameUserValidation = $arrUserValidation['response'];
- // Se emite la notificación
- $this->notificationsController->emitNotification(
- 'S002V01M03GEPR',
- 'Nuevo flujo de procesos creado',
- "El usuario $nameUser ha creado un nuevo flujo de trabajo: " . $processWorkflow['NOMBRE_PROCESO'] . ".
- La tarea: " . $processWorkflow['NOMBRE_TAREA'] . " le notifica que el proceso se encuentra en validación por el usuario: $nameUserValidation.",
- [[
- 'BOTON' => 'Ver solicitud',
- 'FUNCION' => 'openModule',
- 'PARAMETROS' => json_encode([$this->encController->encrypt("GEPR/SFTR/GSFT/" . $encExecuteWorkflow)]),
- ]],
- $arrUserNoti,
- $user,
- $line,
- $this->socketClient,
- );
- foreach ($arrNotification as $key => $notification) {
- if ($notification['TIPO_NOTIFICACION'] === 'V' && $notification['SECUENCIA'] === 1) {
- try {
- $validateInsert = DB::table('S002V01TEJNO')->insert([
- 'EJNO_NULI' => $line,
- 'EJNO_IDET' => $idExecuteTask,
- 'EJNO_USNO' => $notification['ID_USUARIO'],
- 'EJNO_SECU' => $notification['SECUENCIA'],
- 'EJNO_TINO' => 'V',
- 'EJNO_ESTA' => 'Notificado',
- 'EJNO_USRE' => $user,
- 'EJNO_FERE' => $currentDate,
- 'EJNO_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
- ]);
- } catch (\Throwable $th) {
- $arrResponse['error'] = true;
- $arrResponse['msg'] = 'Ocurrió un error al registrar las notificaciones de validación principal.';
- $arrResponse['response'] = $th->getMessage();
- return $arrResponse;
- }
- if (!$validateInsert) {
- $arrResponse['error'] = true;
- $arrResponse['msg'] = 'No se pudo registrar las notificaciones de validación principal.';
- return $arrResponse;
- }
- } else if ($notification['TIPO_NOTIFICACION'] === 'V' && $notification['SECUENCIA'] > 1) {
- try {
- $validateInsert = DB::table('S002V01TEJNO')->insert([
- 'EJNO_NULI' => $line,
- 'EJNO_IDET' => $idExecuteTask,
- 'EJNO_USNO' => $notification['ID_USUARIO'],
- 'EJNO_SECU' => $notification['SECUENCIA'],
- 'EJNO_TINO' => 'V',
- 'EJNO_ESTA' => 'En espera',
- 'EJNO_USRE' => $user,
- 'EJNO_FERE' => $currentDate,
- 'EJNO_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
- ]);
- } catch (\Throwable $th) {
- $arrResponse['error'] = true;
- $arrResponse['msg'] = 'Ocurrió un error al registrar las notificaciones de validación.';
- $arrResponse['response'] = $th->getMessage();
- return $arrResponse;
- }
- if (!$validateInsert) {
- $arrResponse['error'] = true;
- $arrResponse['msg'] = 'No se pudo registrar las notificaciones de validación.';
- return $arrResponse;
- }
- } else {
- try {
- $validateInsert = DB::table('S002V01TEJNO')->insert([
- 'EJNO_NULI' => $line,
- 'EJNO_IDET' => $idExecuteTask,
- 'EJNO_USNO' => $notification['ID_USUARIO'],
- 'EJNO_SECU' => 0,
- 'EJNO_TINO' => 'N',
- 'EJNO_ESTA' => 'Notificado',
- 'EJNO_USRE' => $user,
- 'EJNO_FERE' => $currentDate,
- 'EJNO_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
- ]);
- } catch (\Throwable $th) {
- $arrResponse['error'] = true;
- $arrResponse['msg'] = 'Ocurrió un error al registrar las notificaciones.';
- $arrResponse['response'] = $th->getMessage();
- return $arrResponse;
- }
- if (!$validateInsert) {
- $arrResponse['error'] = true;
- $arrResponse['msg'] = 'No se pudo registrar las notificaciones.';
- return $arrResponse;
- }
- }
- }
- } else {
- }
- return $arrResponse;
- }
- public function activateManualWorkflow(Request $request)
- {
- $validator = Validator::make($request->all(), [
- 'ID_WORKFLOW' => 'required|integer',
- 'USUARIO' => 'required|string',
- 'NUMERO_LINEA' => 'required|integer',
- ]);
- if ($validator->fails()) {
- return $this->responseController->makeResponse(
- true,
- "Se encontraron uno o más errores.",
- $this->responseController->makeErrors($validator->errors()->messages()),
- 401
- );
- }
- DB::beginTransaction();
- $requestData = $request->all();
- try {
- $validateExists = DB::table('S002V01TWORK')
- ->where('WORK_IDWO', '=', $requestData['ID_WORKFLOW'])
- ->where('WORK_NULI', '=', $requestData['NUMERO_LINEA'])
- ->where('WORK_ESTA', '=', 'Activo')
- ->exists();
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "Ocurrió un error al verificar si el workflow existe.", $th->getMessage(), 500);
- }
- if (!$validateExists) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "El flujo de trabajo no existe.", [], 500);
- }
- try {
- $arrTasks = DB::table('S002V01TTAWO')
- ->where('TAWO_IDWO', '=', $requestData['ID_WORKFLOW'])
- ->where('TAWO_ESTA', '=', 'Activo')
- ->where('TAWO_NULI', '=', $requestData['NUMERO_LINEA'])
- ->where('PRWO_ESTA', '=', 'Asignado')
- ->where('PRWO_NULI', '=', $requestData['NUMERO_LINEA'])
- ->join('S002V01TPRWO', 'PRWO_IDPR', '=', 'TAWO_IDPR')
- ->orderBy('TAWO_SECU', 'ASC')
- ->get([
- 'TAWO_IDTA AS ID_TAREA',
- 'TAWO_NOTA AS NOMBRE_TAREA',
- 'TAWO_REVA AS REGLA_VALIDACION',
- 'TAWO_OTWO AS OTRO_WORKFLOW',
- 'PRWO_IDPR AS ID_PROCESO',
- 'PRWO_NOPR AS NOMBRE_PROCESO',
- ]);
- $arrTasks = json_decode(json_encode($arrTasks), true);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "Ocurrió un error al obtener las tareas del flujo de trabajo.", $th->getMessage(), 500);
- }
- if (empty($arrTasks)) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "No hay tareas registradas en el flujo de trabajo.", [], 500);
- }
- $arrResponseCheckUser = $this->resourcesController->checkUserEnc($requestData['USUARIO'], $requestData['NUMERO_LINEA']);
- if ($arrResponseCheckUser['error']) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
- }
- $user = $arrResponseCheckUser['response'];
- $now = $this->functionsController->now();
- $currentDate = $now->toDateTimeString();
- try {
- $idExecuteWorkflow = DB::table('S002V01TEJWO')->insertGetId([
- 'EJWO_NULI' => $requestData['NUMERO_LINEA'],
- 'EJWO_IDWO' => $requestData['ID_WORKFLOW'],
- 'EJWO_ESTA' => 'En proceso',
- 'EJWO_USRE' => $user,
- 'EJWO_FERE' => $currentDate,
- 'EJWO_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
- ]);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "Ocurrió un error al registrar la solicitud del flujo de trabajo.", $th->getMessage(), 500);
- }
- if (!$idExecuteWorkflow) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "No se pudo registrar la solicitud del flujo de trabajo.", [], 500);
- }
- foreach ($arrTasks as $keyTask => $task) {
- try {
- $idExecuteTask = DB::table('S002V01TEJTW')->insertGetId([
- 'EJTW_NULI' => $requestData['NUMERO_LINEA'],
- 'EJTW_IDEW' => $idExecuteWorkflow,
- 'EJTW_IDTA' => $task['ID_TAREA'],
- 'EJTW_ESTA' => $keyTask === 0 ? 'En proceso' : 'En espera',
- 'EJTW_USRE' => $user,
- 'EJTW_FERE' => $currentDate,
- 'EJTW_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
- ]);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "Ocurrió un error al registrar la solicitud de las tareas.", $th->getMessage(), 500);
- }
- if (!$idExecuteTask) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "No se pudo registrar la solicitud de las tareas.", [], 500);
- }
- if ($keyTask === 0) {
- try {
- $arrNotificate = DB::table('S002V01TNTWO')
- ->where('NTWO_IDTA', '=', $task['ID_TAREA'])
- ->where('NTWO_NULI', '=', $requestData['NUMERO_LINEA'])
- ->where('NTWO_ESTA', '=', 'Activo')
- ->orderBy('NTWO_SECU', 'ASC')
- ->get([
- 'NTWO_IDNO AS ID_NOTIFICACION',
- 'NTWO_IDUS AS ID_USUARIO',
- 'NTWO_TINO AS TIPO_NOTIFICACION',
- ]);
- $arrNotificate = json_decode(json_encode($arrNotificate), true);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "Ocurrió un error al registrar la solicitud de las tareas.", $th->getMessage(), 500);
- }
- $count = 1;
- $userValidate = null;
- $arrUserNotificate = array();
- foreach ($arrNotificate as $keyNotificate => $notificate) {
- if ($notificate['TIPO_NOTIFICACION'] === 'N') {
- try {
- $validateRegister = DB::table('S002V01TEJNO')->insert([
- 'EJNO_NULI' => $requestData['NUMERO_LINEA'],
- 'EJNO_IDET' => $idExecuteTask,
- 'EJNO_USNO' => $notificate['ID_USUARIO'],
- 'EJNO_SECU' => 0,
- 'EJNO_TINO' => 'N',
- 'EJNO_ESTA' => 'Notificado',
- 'EJNO_USRE' => $user,
- 'EJNO_FERE' => $currentDate,
- 'EJNO_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
- ]);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "Ocurrió un error al registrar las solicitudes de las notificaciones.", $th->getMessage(), 500);
- }
- if (!$validateRegister) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "No se pudo registrar las solicitudes de las notificaciones.", [], 500);
- }
- $arrUserNotificate[] = $notificate['ID_USUARIO'];
- } else if ($notificate['TIPO_NOTIFICACION'] === 'V') {
- try {
- $validateRegister = DB::table('S002V01TEJNO')->insert([
- 'EJNO_NULI' => $requestData['NUMERO_LINEA'],
- 'EJNO_IDET' => $idExecuteTask,
- 'EJNO_USNO' => $notificate['ID_USUARIO'],
- 'EJNO_SECU' => $count,
- 'EJNO_TINO' => 'V',
- 'EJNO_ESTA' => $count === 1 ? 'Notificado' : 'En espera',
- 'EJNO_USRE' => $user,
- 'EJNO_FERE' => $currentDate,
- 'EJNO_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
- ]);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "Ocurrió un error al registrar las solicitudes de validación.", $th->getMessage(), 500);
- }
- if (!$validateRegister) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "No se pudo registrar las solicitudes de las validaciones.", [], 500);
- }
- if ($count === 1) {
- $userValidate = $notificate['ID_USUARIO'];
- }
- $count++;
- }
- }
- if (!empty($arrUserNotificate) && !is_null($userValidate)) {
- $objExecute = ['ID' => $idExecuteWorkflow, 'TYPE' => 'NOTIFICATE'];
- $strExecuteWorkflow = json_encode($objExecute);
- $encExecuteWorkflow = $this->encController->encrypt($strExecuteWorkflow);
- $this->notificationsController->emitNotification(
- 'S002V01M03GEPR',
- 'Nuevo flujo de procesos creado',
- "El usuario $user ha creado un nuevo flujo de trabajo: {$task['NOMBRE_PROCESO']}.
- La tarea: " . $task['NOMBRE_TAREA'] . " le notifica que el proceso se encuentra en validación por el usuario: $userValidate.",
- [[
- 'BOTON' => 'Ver solicitud',
- 'FUNCION' => 'openModule',
- 'PARAMETROS' => json_encode([$this->encController->encrypt("GEPR/SFTR/GSFT/" . $encExecuteWorkflow)]),
- ]],
- $arrUserNotificate,
- $user,
- $requestData['NUMERO_LINEA'],
- $this->socketClient,
- );
- }
- if (!is_null($userValidate)) {
- $objExecute = ['ID' => $idExecuteWorkflow, 'TYPE' => 'VALIDATE'];
- $strExecuteWorkflow = json_encode($objExecute);
- $encExecuteWorkflow = $this->encController->encrypt($strExecuteWorkflow);
- $this->notificationsController->emitNotification(
- 'S002V01M03GEPR',
- 'Nuevo flujo de procesos creado',
- "El usuario $user ha creado un nuevo flujo de trabajo: " . $task['NOMBRE_PROCESO'] . ".
- La tarea: " . $task['NOMBRE_TAREA'] . " requiere de su validación.",
- [[
- 'BOTON' => 'Ver solicitud',
- 'FUNCION' => 'openModule',
- 'PARAMETROS' => json_encode([$this->encController->encrypt("GEPR/SFTR/GSFT/" . $encExecuteWorkflow)]),
- ]],
- [$userValidate],
- $user,
- $requestData['NUMERO_LINEA'],
- $this->socketClient,
- );
- }
- }
- }
- DB::commit();
- return $this->responseController->makeResponse(false, "ÉXITO: Registro Exitoso");
- }
- public function searchRequestWorkflow(Request $request)
- {
- $validator = Validator::make($request->all(), [
- 'WORKFLOW' => 'nullable|integer',
- 'EJECUCION_WORKFLOW' => 'nullable|integer',
- 'ESTADO_WORKFLOW' => 'nullable|string',
- 'TAREA' => 'nullable|integer',
- 'EJECUCION_TAREA' => 'nullable|integer',
- 'ESTADO_TAREA' => 'nullable|string',
- 'PROCESO' => 'nullable|string',
- 'FECHA_INICIO' => 'nullable|string',
- 'FECHA_FINAL' => 'nullable|string',
- 'USUARIO' => 'required|string',
- 'NUMERO_LINEA' => 'required|integer',
- ]);
- if ($validator->fails()) {
- return $this->responseController->makeResponse(
- true,
- "Se encontraron uno o más errores.",
- $this->responseController->makeErrors($validator->errors()->messages()),
- 401
- );
- }
- DB::beginTransaction();
- $requestData = $request->all();
- $arrResponseCheckUser = $this->resourcesController->checkUserEnc($requestData['USUARIO'], $requestData['NUMERO_LINEA']);
- if ($arrResponseCheckUser['error']) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
- }
- $filterData = array(
- 'WORKFLOW' => 'WORK_IDWO',
- 'EJECUCION_WORKFLOW' => 'EJWO_IDEW',
- 'ESTADO_WORKFLOW' => 'EJWO_ESTA',
- 'TAREA' => 'TAWO_IDTA',
- 'EJECUCION_TAREA' => 'EJTW_IDET',
- 'ESTADO_TAREA' => 'EJTW_ESTA',
- 'PROCESO' => 'PRWO_IDPR',
- );
- $dataWhere = array();
- foreach ($requestData as $key => $value) {
- if (
- !is_null($value) &&
- $key !== 'USUARIO' &&
- $key !== 'NUMERO_LINEA' &&
- $key !== 'FECHA_INICIO' &&
- $key !== 'FECHA_FINAL'
- ) {
- $dataWhere[$filterData[$key]] = $value;
- }
- }
- try {
- $arrFilter = DB::table('S002V01TEJWO')
- ->where($dataWhere)
- ->where('EJWO_NULI', '=', $requestData['NUMERO_LINEA'])
- ->where('WORK_NULI', '=', $requestData['NUMERO_LINEA'])
- ->where('EJTW_NULI', '=', $requestData['NUMERO_LINEA'])
- ->where('TAWO_NULI', '=', $requestData['NUMERO_LINEA'])
- ->where('PRWO_NULI', '=', $requestData['NUMERO_LINEA'])
- ->join('S002V01TWORK', 'WORK_IDWO', '=', 'EJWO_IDWO')
- ->join('S002V01TEJTW', 'EJTW_IDEW', '=', 'EJWO_IDEW')
- ->join('S002V01TTAWO', 'TAWO_IDTA', '=', 'EJTW_IDTA')
- ->join('S002V01TPRWO', 'PRWO_IDPR', '=', 'TAWO_IDPR')
- ->get([
- DB::raw('CONCAT(WORK_NOWO, " (", WORK_IDWO, ")") AS NOMBRE_WORKFLOW'),
- 'EJWO_IDEW AS ID_EJECUCION_WORKFLOW',
- 'EJWO_ESTA AS ESTADO_EJECUCION_WORKFLOW',
- DB::raw('CONCAT(TAWO_NOTA, " (", TAWO_IDTA, ")") AS NOMBRE_TAREA'),
- 'EJTW_IDET AS ID_EJECUCION_TAREA',
- 'EJTW_ESTA AS ESTADO_EJECUCION_TAREA',
- DB::raw('CONCAT(PRWO_NOPR, " (", PRWO_IDPR, ")") AS NOMBRE_PROCESO'),
- 'EJTW_USRE AS USUARIO_REGISTRA',
- 'EJTW_FERE AS FECHA_REGISTRA',
- 'EJTW_USMO AS USUARIO_MODIFICA',
- 'EJTW_FEMO AS FECHA_MODIFICA',
- ]);
- $arrFilter = json_decode(json_encode($arrFilter), true);
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, 'Ocurrió un error al obtener los datos de las solicitudes de los flujos de trabajo.', $th->getMessage(), 401);
- }
- $responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate($arrFilter, $requestData['NUMERO_LINEA']);
- if ($responseCheckLatestUpdate['error']) {
- return $this->responseController->makeResponse(true, $responseCheckLatestUpdate['msg'], [], 500);
- }
- $arrFilter = $responseCheckLatestUpdate['response'];
- $arrDataFilter = array();
- if (!is_null($requestData['FECHA_INICIO']) && !is_null($requestData['FECHA_FINAL'])) {
- foreach ($arrFilter as $key => $filter) {
- $updateDate = $filter['FECHA_MODIFICA'];
- $date = explode(' ', $updateDate)[0];
- $arrDate = explode('-', $date);
- $strFormattDate = $arrDate[2] . '-' . $arrDate[1] . '-' . $arrDate[0];
- $dateFormattDate = new Carbon($strFormattDate);
- $dateStart = new Carbon($requestData['FECHA_INICIO']);
- $dateEnd = new Carbon($requestData['FECHA_FINAL']);
- if ($dateFormattDate->gte($dateStart) && $dateFormattDate->lte($dateEnd)) {
- $arrDataFilter[] = $filter;
- }
- }
- } else {
- $arrDataFilter = $arrFilter;
- }
- return $this->responseController->makeResponse(false, "ÉXITO: Consulta exitosa", $arrDataFilter);
- }
- public function getDetailsExecuteRequest($idExecuteTask, $user, $line)
- {
- $idExecuteTask = $this->encController->decrypt($idExecuteTask);
- if (is_null($idExecuteTask)) {
- return $this->responseController->makeResponse(true, "La ejecución no está encriptado correctamente.", [], 500);
- }
- $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
- if ($arrResponseCheckUser['error']) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
- }
- try {
- $arrExecuteRequest = (array) DB::table('S002V01TEJWO')
- ->where('EJTW_IDET', '=', $idExecuteTask)
- ->where('EJWO_NULI', '=', $line)
- ->where('WORK_NULI', '=', $line)
- ->where('EJTW_NULI', '=', $line)
- ->where('TAWO_NULI', '=', $line)
- ->where('PRWO_NULI', '=', $line)
- ->join('S002V01TWORK', 'WORK_IDWO', '=', 'EJWO_IDWO')
- ->join('S002V01TEJTW', 'EJTW_IDEW', '=', 'EJWO_IDEW')
- ->join('S002V01TTAWO', 'TAWO_IDTA', '=', 'EJTW_IDTA')
- ->join('S002V01TPRWO', 'PRWO_IDPR', '=', 'TAWO_IDPR')
- ->first([
- DB::raw('CONCAT(WORK_NOWO, " (", WORK_IDWO, ")") AS NOMBRE_WORKFLOW'),
- 'WORK_DESC AS DESCRIPCION_WORKFLOW',
- 'WORK_AUTO AS AUTOMATICO',
- 'WORK_PRED AS PREDETERMINADO',
- 'EJWO_IDEW AS ID_EJECUCION_WORKFLOW',
- 'EJWO_ESTA AS ESTADO_EJECUCION_WORKFLOW',
- DB::raw('CONCAT(TAWO_NOTA, " (", TAWO_IDTA, ")") AS NOMBRE_TAREA'),
- 'TAWO_DESC AS DESCRIPCION_TAREA',
- 'EJTW_IDET AS ID_EJECUCION_TAREA',
- 'EJTW_INFO AS INFORMACION_FORMULARIO',
- 'EJTW_INRE AS INFORMACION_REGISTRO',
- 'EJTW_ESTA AS ESTADO_EJECUCION_TAREA',
- DB::raw('CONCAT(PRWO_NOPR, " (", PRWO_IDPR, ")") AS NOMBRE_PROCESO'),
- 'EJTW_USRE AS USUARIO_REGISTRA',
- 'EJTW_FERE AS FECHA_REGISTRA',
- 'EJTW_USMO AS USUARIO_MODIFICA',
- 'EJTW_FEMO AS FECHA_MODIFICA',
- ]);
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, 'Ocurrió un error al obtener los datos de las solicitudes de los flujos de trabajo.', $th->getMessage(), 401);
- }
- $responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate([$arrExecuteRequest], $line);
- if ($responseCheckLatestUpdate['error']) {
- return $this->responseController->makeResponse(true, $responseCheckLatestUpdate['msg'], [], 500);
- }
- $arrExecuteRequest = $responseCheckLatestUpdate['response'][0];
- $arrExecuteRequest['AUTOMATICO'] = $arrExecuteRequest['AUTOMATICO'] === 1 ? 'Si' : 'No';
- $arrExecuteRequest['PREDETERMINADO'] = $arrExecuteRequest['PREDETERMINADO'] === 1 ? 'Si' : 'No';
- $arrExecuteRequest['ID_EJECUCION_WORKFLOW'] = '#' . $arrExecuteRequest['ID_EJECUCION_WORKFLOW'];
- $arrExecuteRequest['ID_EJECUCION_TAREA'] = '#' . $arrExecuteRequest['ID_EJECUCION_TAREA'];
- return $this->responseController->makeResponse(false, "ÉXITO: Consulta exitosa", $arrExecuteRequest);
- }
- public function searchNotificate(Request $request)
- {
- $validator = Validator::make($request->all(), [
- 'NUMERO_NOTIFICACION' => 'nullable|integer',
- 'USUARIO_NOTIFICACION' => 'nullable|string',
- 'TIPO_NOTIFICACION' => 'nullable|string',
- 'ESTADO_NOTIFICACION' => 'nullable|string',
- 'FECHA_INICIO' => 'nullable|string',
- 'FECHA_FINAL' => 'nullable|string',
- 'USUARIO' => 'required|string',
- 'NUMERO_LINEA' => 'required|integer',
- ]);
- if ($validator->fails()) {
- return $this->responseController->makeResponse(
- true,
- "Se encontraron uno o más errores.",
- $this->responseController->makeErrors($validator->errors()->messages()),
- 401
- );
- }
- DB::beginTransaction();
- $requestData = $request->all();
- $arrResponseCheckUser = $this->resourcesController->checkUserEnc($requestData['USUARIO'], $requestData['NUMERO_LINEA']);
- if ($arrResponseCheckUser['error']) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
- }
- $filterData = array(
- 'NUMERO_NOTIFICACION' => 'EJNO_IDEN',
- 'USUARIO_NOTIFICACION' => 'EJNO_USNO',
- 'TIPO_NOTIFICACION' => 'EJNO_TINO',
- 'ESTADO_NOTIFICACION' => 'EJNO_ESTA',
- );
- $dataWhere = array();
- foreach ($requestData as $key => $value) {
- if (
- !is_null($value) &&
- $key !== 'USUARIO' &&
- $key !== 'NUMERO_LINEA' &&
- $key !== 'FECHA_INICIO' &&
- $key !== 'FECHA_FINAL'
- ) {
- $dataWhere[$filterData[$key]] = $value;
- }
- }
- try {
- $arrFilter = DB::table('S002V01TEJNO')
- ->where($dataWhere)
- ->where('EJNO_NULI', '=', $requestData['NUMERO_LINEA'])
- ->join('S002V01TUSUA', 'USUA_IDUS', '=', 'EJNO_USNO')
- ->get([
- 'EJNO_IDEN AS ID_NOTIFICACION',
- 'EJNO_IDET AS ID_EJECUCION_TAREA',
- DB::raw('CONCAT(USUA_NOMB, " ", USUA_APPA, IF(ISNULL(USUA_APMA), "", CONCAT(" ", USUA_APMA)), " (", USUA_IDUS, ")") AS USUARIO_NOTIFICACION'),
- 'EJNO_TINO AS TIPO_NOTIFICACION',
- 'EJNO_ESTA AS ESTADO',
- 'EJNO_MERE AS MENSAJE_RECHAZO',
- 'EJNO_USRE AS USUARIO_REGISTRA',
- 'EJNO_FERE AS FECHA_REGISTRA',
- 'EJNO_USMO AS USUARIO_MODIFICA',
- 'EJNO_FEMO AS FECHA_MODIFICA',
- ]);
- $arrFilter = json_decode(json_encode($arrFilter), true);
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, 'Ocurrió un error al obtener los datos de las notificaciones.', $th->getMessage(), 401);
- }
- $responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate($arrFilter, $requestData['NUMERO_LINEA']);
- if ($responseCheckLatestUpdate['error']) {
- return $this->responseController->makeResponse(true, $responseCheckLatestUpdate['msg'], [], 500);
- }
- $arrFilter = $responseCheckLatestUpdate['response'];
- if (!is_null($requestData['FECHA_INICIO']) && !is_null($requestData['FECHA_FINAL'])) {
- foreach ($arrFilter as $key => $filter) {
- $updateDate = $filter['FECHA_MODIFICA'];
- $date = explode(' ', $updateDate)[0];
- $arrDate = explode('-', $date);
- $strFormattDate = $arrDate[2] . '-' . $arrDate[1] . '-' . $arrDate[0];
- $dateFormattDate = new Carbon($strFormattDate);
- $dateStart = new Carbon($requestData['FECHA_INICIO']);
- $dateEnd = new Carbon($requestData['FECHA_FINAL']);
- if ($dateFormattDate->gte($dateStart) && $dateFormattDate->lte($dateEnd)) {
- $arrDataFilter[] = $filter;
- }
- }
- } else {
- $arrDataFilter = $arrFilter;
- }
- foreach ($arrDataFilter as $key => $value) {
- if ($value['TIPO_NOTIFICACION'] === 'V') {
- $value['TIPO_NOTIFICACION'] = 'Para validación';
- }
- if ($value['TIPO_NOTIFICACION'] === 'N') {
- $value['TIPO_NOTIFICACION'] = 'Para notificación';
- }
- $arrDataFilter[$key] = $value;
- }
- return $this->responseController->makeResponse(false, "ÉXITO: Consulta exitosa", $arrDataFilter);
- }
- public function getDetailsNotificate($idNotificate, $user, $line)
- {
- $idNotificate = $this->encController->decrypt($idNotificate);
- if (is_null($idNotificate)) {
- return $this->responseController->makeResponse(true, "La ejecución no está encriptado correctamente.", [], 500);
- }
- $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
- if ($arrResponseCheckUser['error']) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
- }
- try {
- $arrNotificate = (array) DB::table('S002V01TEJNO')
- ->where('EJNO_IDEN', '=', $idNotificate)
- ->where('EJNO_NULI', '=', $line)
- ->join('S002V01TUSUA', 'USUA_IDUS', '=', 'EJNO_USNO')
- ->first([
- 'EJNO_IDEN AS NUMERO_NOTIFICACION',
- 'EJNO_IDET AS ID_EJECUCION_TAREA',
- 'EJNO_USNO AS USUARIO_NOTIFICACION',
- 'EJNO_SECU AS SECUENCIA',
- 'EJNO_TINO AS TIPO_NOTIFICACION',
- 'EJNO_ESTA AS ESTADO',
- 'EJNO_MERE AS MENSAJE_RECHAZO',
- 'EJNO_USRE AS USUARIO_REGISTRA',
- 'EJNO_FERE AS FECHA_REGISTRA',
- 'EJNO_USMO AS USUARIO_MODIFICA',
- 'EJNO_FEMO AS FECHA_MODIFICA',
- ]);
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, 'Ocurrió un error al obtener los datos de las notificaciones.', $th->getMessage(), 401);
- }
- $responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate([$arrNotificate], $line);
- if ($responseCheckLatestUpdate['error']) {
- return $this->responseController->makeResponse(true, $responseCheckLatestUpdate['msg'], [], 500);
- }
- $arrNotificate = $responseCheckLatestUpdate['response'][0];
- $arrNotificate['NUMERO_NOTIFICACION'] = '#' . $arrNotificate['NUMERO_NOTIFICACION'];
- $arrNotificate['ID_EJECUCION_TAREA'] = '#' . $arrNotificate['ID_EJECUCION_TAREA'];
- $arrNotificate['TIPO_NOTIFICACION'] = $arrNotificate['TIPO_NOTIFICACION'] === 'V' ? 'Para validación' : 'Para notificar';
- return $this->responseController->makeResponse(false, "ÉXITO: Consulta exitosa", $arrNotificate);
- }
- }
|