|
|
@@ -37,29 +37,33 @@ class ProcessManagementController extends Controller
|
|
|
public function getWorkflows($user, $line) {
|
|
|
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
|
|
|
if ($arrResponseCheckUser['error']) {
|
|
|
- DB::rollBack();
|
|
|
+
|
|
|
return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
|
|
|
}
|
|
|
|
|
|
try {
|
|
|
$arrWorkflows = DB::table('S002V01TWORK')->select([
|
|
|
- 'WORK_IDWO AS ID_WORKFLOW',
|
|
|
- 'WORK_NOWO AS NOMBRE_WORKFLOW',
|
|
|
- 'WORK_DESC AS DESCRIPCION',
|
|
|
- 'WORK_MODU AS MODULO_WORKFLOW',
|
|
|
- 'MODU_NOMO AS NOMBRE_MODULO',
|
|
|
- 'WORK_AUTO AS AUTOMATICO',
|
|
|
- 'WORK_PRED AS PREDEFINIDO',
|
|
|
- 'WORK_ESTA AS ESTADO',
|
|
|
- 'WORK_USRE AS USUARIO_REGISTRA',
|
|
|
- 'WORK_FERE AS FECHA_REGISTRA',
|
|
|
- 'WORK_USMO AS USUARIO_MODIFICA',
|
|
|
- 'WORK_FEMO AS FECHA_MODIFICA',
|
|
|
+ 'WORK_IDWO',
|
|
|
+ 'WORK_NOWO',
|
|
|
+ 'WORK_DESC',
|
|
|
+ 'WORK_PRED',
|
|
|
+ 'WORK_HICA',
|
|
|
+ 'WORK_ESTA',
|
|
|
+ 'WORK_VERS',
|
|
|
+ 'WORK_INEX',
|
|
|
+ 'WORK_USRE',
|
|
|
+ 'WORK_FERE',
|
|
|
+ 'WORK_USMO',
|
|
|
+ 'WORK_FEMO',
|
|
|
+ 'MODU_NOMO'
|
|
|
])->where('WORK_NULI', '=', $line)
|
|
|
- ->join('S002V01TMODU', 'MODU_IDMO', '=', 'WORK_MODU')->get()->all();
|
|
|
+ ->leftJoin('S002V01WRMO', 'WRMO_IDWO', '=', 'WORK_IDWO')
|
|
|
+ ->leftJoin('S002V01TMODU', function($join) use ($line) {
|
|
|
+ $join->on('MODU_IDMO', '=', 'WRMO_IDMO')
|
|
|
+ ->where('MODU_NULI', '=', $line);
|
|
|
+ })->get()->all();
|
|
|
$arrWorkflows = json_decode(json_encode($arrWorkflows), true);
|
|
|
} catch (\Throwable $th) {
|
|
|
- DB::rollBack();
|
|
|
return $this->responseController->makeResponse(true, "Ocurrió un error al obtener los flujos de trabajo.", $th->getMessage(), 500);
|
|
|
}
|
|
|
|
|
|
@@ -69,29 +73,12 @@ class ProcessManagementController extends Controller
|
|
|
}
|
|
|
$arrWorkflows = $responseCheckLatestUpdate['response'];
|
|
|
|
|
|
- foreach ($arrWorkflows as $key => $workflow) {
|
|
|
-
|
|
|
- if ($workflow['AUTOMATICO'] === 1) {
|
|
|
- $workflow['AUTOMATICO'] = 'Si';
|
|
|
- } else {
|
|
|
- $workflow['AUTOMATICO'] = 'No';
|
|
|
- }
|
|
|
-
|
|
|
- if ($workflow['PREDEFINIDO'] === 1) {
|
|
|
- $workflow['PREDEFINIDO'] = 'Si';
|
|
|
- } else {
|
|
|
- $workflow['PREDEFINIDO'] = 'No';
|
|
|
- }
|
|
|
-
|
|
|
- $arrWorkflows[$key] = $workflow;
|
|
|
- }
|
|
|
-
|
|
|
return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrWorkflows);
|
|
|
}
|
|
|
+
|
|
|
public function getWorkflowById($idWorkflow, $user, $line) {
|
|
|
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
|
|
|
if ($arrResponseCheckUser['error']) {
|
|
|
- DB::rollBack();
|
|
|
return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
|
|
|
}
|
|
|
|
|
|
@@ -107,654 +94,21 @@ class ProcessManagementController extends Controller
|
|
|
->where('WORK_NULI', '=', $line)
|
|
|
->where('WORK_ESTA', '=', 'Activo')
|
|
|
->first([
|
|
|
- 'WORK_NOWO AS NOMBRE_WORKFLOW',
|
|
|
- 'WORK_DESC AS DESCRIPCION',
|
|
|
- 'WORK_AUTO AS AUTOMATICO',
|
|
|
- 'WORK_PRED AS PREDEFINIDO',
|
|
|
+ 'WORK_NOWO',
|
|
|
+ 'WORK_DESC',
|
|
|
+ 'WORK_PRED',
|
|
|
+ 'WORK_HICA',
|
|
|
+ 'WORK_VERS',
|
|
|
+ 'WORK_INEX'
|
|
|
]);
|
|
|
} catch (\Throwable $th) {
|
|
|
- DB::rollBack();
|
|
|
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", $arrWorkflow);
|
|
|
}
|
|
|
- public function getWorkflowActives($user, $line) {
|
|
|
- $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
|
|
|
- if ($arrResponseCheckUser['error']) {
|
|
|
- DB::rollBack();
|
|
|
- return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
|
|
|
- }
|
|
|
-
|
|
|
- try {
|
|
|
- $arrWorkflows = DB::table('S002V01TWORK')
|
|
|
- ->where('WORK_NULI', '=', $line)
|
|
|
- ->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) {
|
|
|
- DB::rollBack();
|
|
|
- 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 registerWorkflow(Request $request) {
|
|
|
- $validator = Validator::make($request->all(), [
|
|
|
- 'NOMBRE_WORKFLOW' => 'required|string',
|
|
|
- 'DESCRIPCION' => 'required|string',
|
|
|
- 'AUTOMATICO' => 'required|boolean',
|
|
|
- '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, 'ERR_WAREHOUSE_REG001:'.$arrResponseCheckUser['msg'], [], 401);
|
|
|
- }
|
|
|
- $user = $arrResponseCheckUser['response'];
|
|
|
-
|
|
|
- $now = $this->functionsController->now();
|
|
|
- $currentDate = $now->toDateTimeString();
|
|
|
-
|
|
|
- try {
|
|
|
- $validateInsert = DB::table('S002V01TWORK')->insert([
|
|
|
- 'WORK_NULI' => $requestData['NUMERO_LINEA'],
|
|
|
- 'WORK_NOWO' => $requestData['NOMBRE_WORKFLOW'],
|
|
|
- 'WORK_DESC' => $requestData['DESCRIPCION'],
|
|
|
- 'WORK_AUTO' => $requestData['AUTOMATICO'],
|
|
|
- '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 los flujos de trabajo.", $th->getMessage(), 500);
|
|
|
- }
|
|
|
-
|
|
|
- if (!$validateInsert) {
|
|
|
- DB::rollBack();
|
|
|
- return $this->responseController->makeResponse(true, "No se pudo registrar los flujos de trabajo.", [], 500);
|
|
|
- }
|
|
|
-
|
|
|
- DB::commit();
|
|
|
- return $this->responseController->makeResponse(false, "ÉXITO: Registro Exitoso");
|
|
|
- }
|
|
|
- public function updateWorkflow(Request $request, $idWorkflow) {
|
|
|
- $validator = Validator::make($request->all(), [
|
|
|
- 'NOMBRE_WORKFLOW' => 'required|string',
|
|
|
- 'DESCRIPCION' => 'required|string',
|
|
|
- 'AUTOMATICO' => 'required|boolean',
|
|
|
- '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
|
|
|
- );
|
|
|
- }
|
|
|
-
|
|
|
- try {
|
|
|
- $idWorkflow = $this->encController->decrypt($idWorkflow);
|
|
|
- } catch (\Throwable $th) {
|
|
|
- return $this->responseController->makeResponse(true, 'Ocurrió un error al desencriptar el ID del flujo de trabajo.', $th->getMessage(), 500);
|
|
|
- }
|
|
|
-
|
|
|
- DB::beginTransaction();
|
|
|
- $requestData = $request->all();
|
|
|
-
|
|
|
- $arrResponseCheckUser = $this->resourcesController->checkUserEnc($requestData['USUARIO'], $requestData['NUMERO_LINEA']);
|
|
|
- if ($arrResponseCheckUser['error']) {
|
|
|
- DB::rollBack();
|
|
|
- return $this->responseController->makeResponse(true, 'ERR_WAREHOUSE_GETBY000:'.$arrResponseCheckUser['msg'], [], 401);
|
|
|
- }
|
|
|
- $user = $arrResponseCheckUser['response'];
|
|
|
-
|
|
|
- try {
|
|
|
- $workflow = (array) DB::table('S002V01TWORK')
|
|
|
- ->where('WORK_IDWO', '=', $idWorkflow)
|
|
|
- ->where('WORK_NULI', '=', $requestData['NUMERO_LINEA'])
|
|
|
- ->where('WORK_ESTA', '=', 'Activo')
|
|
|
- ->first([
|
|
|
- 'WORK_IDWO AS ID_WORKFLOW',
|
|
|
- 'WORK_NOWO AS NOMBRE_WORKFLOW',
|
|
|
- 'WORK_DESC AS DESCRIPCION',
|
|
|
- 'WORK_AUTO AS AUTOMATICO',
|
|
|
- 'WORK_PRED AS PREDEFINIDO',
|
|
|
- 'WORK_HICA AS HISTORIAL_CAMBIOS',
|
|
|
- 'WORK_ESTA AS ESTADO',
|
|
|
- 'WORK_USRE AS USUARIO_REGISTRA',
|
|
|
- 'WORK_FERE AS FECHA_REGISTRA',
|
|
|
- 'WORK_USMO AS USUARIO_MODIFICA',
|
|
|
- 'WORK_FEMO AS FECHA_MODIFICA',
|
|
|
- ]);
|
|
|
- } catch (\Throwable $th) {
|
|
|
- DB::rollBack();
|
|
|
- return $this->responseController->makeResponse(true, 'Ocurrió un error al obtener la información del flujo de trabajo.', $th->getMessage(), 500);
|
|
|
- }
|
|
|
- if (empty($workflow)) {
|
|
|
- DB::rollBack();
|
|
|
- return $this->responseController->makeResponse(true, 'El flujo de trabajo no existe.', [], 406);
|
|
|
- }
|
|
|
-
|
|
|
- $arrHistory = array();
|
|
|
- if (is_null($workflow['HISTORIAL_CAMBIOS'])) {
|
|
|
- unset($workflow['HISTORIAL_CAMBIOS']);
|
|
|
- $arrHistory[] = $workflow;
|
|
|
- } else {
|
|
|
- $arrHistory = json_decode($workflow['HISTORIAL_CAMBIOS']);
|
|
|
- unset($workflow['HISTORIAL_CAMBIOS']);
|
|
|
- $arrHistory[] = $workflow;
|
|
|
- }
|
|
|
- $strHistory = json_encode($arrHistory);
|
|
|
-
|
|
|
- $now = $this->functionsController->now();
|
|
|
- $currentDate = $now->toDateTimeString();
|
|
|
-
|
|
|
- try {
|
|
|
- $validateUpdate = DB::table('S002V01TWORK')
|
|
|
- ->where('WORK_IDWO', '=', $idWorkflow)
|
|
|
- ->where('WORK_NULI', '=', $requestData['NUMERO_LINEA'])
|
|
|
- ->where('WORK_ESTA', '=', 'Activo')
|
|
|
- ->update([
|
|
|
- 'WORK_NOWO' => $requestData['NOMBRE_WORKFLOW'],
|
|
|
- 'WORK_DESC' => $requestData['DESCRIPCION'],
|
|
|
- 'WORK_AUTO' => $requestData['AUTOMATICO'],
|
|
|
- 'WORK_HICA' => $strHistory,
|
|
|
- '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 modificar el flujo de trabajo.', $th->getMessage(), 500);
|
|
|
- }
|
|
|
- if (!$validateUpdate) {
|
|
|
- DB::rollBack();
|
|
|
- return $this->responseController->makeResponse(true, 'No se pudo modificar el flujo de trabajo.', [], 500);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- try {
|
|
|
- $arrExecuteWorkflow = DB::table('S002V01TEJWO')
|
|
|
- ->where('EJWO_NULI', '=', $requestData['NUMERO_LINEA'])
|
|
|
- ->where('EJWO_IDWO', '=', $idWorkflow)
|
|
|
- ->where('EJWO_ESTA', '=', 'En proceso')
|
|
|
- ->get([
|
|
|
- 'EJWO_IDEW AS ID_EJECUCION_WORKFLOW',
|
|
|
- ]);
|
|
|
- $arrExecuteWorkflow = json_decode(json_encode($arrExecuteWorkflow), true);
|
|
|
- $arrExecuteWorkflow = array_column($arrExecuteWorkflow, 'ID_EJECUCION_WORKFLOW');
|
|
|
- } catch (\Throwable $th) {
|
|
|
- DB::rollBack();
|
|
|
- return $this->responseController->makeResponse(true, 'Ocurrió un error al obtener las ejecuciones pendientes.', $th->getMessage(), 406);
|
|
|
- }
|
|
|
-
|
|
|
- $arrResendNotificate = array();
|
|
|
- foreach ($arrExecuteWorkflow as $executeWorkflow) {
|
|
|
- try {
|
|
|
- $arrExecuteTask = DB::table('S002V01TEJTW')
|
|
|
- ->where('EJTW_IDEW', '=', $executeWorkflow)
|
|
|
- ->where('EJTW_NULI', '=', $requestData['NUMERO_LINEA'])
|
|
|
- ->where('TAWO_ESTA', '=', 'Activo')
|
|
|
- ->where('TAWO_NULI', '=', $requestData['NUMERO_LINEA'])
|
|
|
- ->where('PRWO_ESTA', '=', 'Asignado')
|
|
|
- ->join('S002V01TTAWO', 'TAWO_IDTA', '=', 'EJTW_IDTA')
|
|
|
- ->join('S002V01TPRWO', 'PRWO_IDPR', '=', 'TAWO_IDPR')
|
|
|
- ->orderBy('TAWO_SECU', 'ASC')
|
|
|
- ->get([
|
|
|
- 'EJTW_IDET AS ID_EJECUCION_TAREA',
|
|
|
- 'TAWO_SECU AS SECUENCIA',
|
|
|
- 'TAWO_IDWO AS ID_WORKFLOW',
|
|
|
- 'TAWO_IDTA AS ID_TAREA',
|
|
|
- 'PRWO_IDPR AS ID_PROCESO',
|
|
|
- 'PRWO_NOPR AS NOMBRE_PROCESO'
|
|
|
- ]);
|
|
|
- $arrExecuteTask = json_decode(json_encode($arrExecuteTask), true);
|
|
|
- } catch (\Throwable $th) {
|
|
|
- DB::rollBack();
|
|
|
- return $this->responseController->makeResponse(true, 'Ocurrió un error al obtener las ejecuciones de las tareas.', $th->getMessage(), 406);
|
|
|
- }
|
|
|
-
|
|
|
- foreach ($arrExecuteTask as $keyExecuteTask => $executeTask) {
|
|
|
-
|
|
|
- if ($executeTask['SECUENCIA'] === 1) {
|
|
|
-
|
|
|
- $arrUpdate = [
|
|
|
- 'EJTW_ESTA' => 'En proceso',
|
|
|
- 'EJTW_USMO' => $user,
|
|
|
- 'EJTW_FEMO' => $currentDate,
|
|
|
- 'EJTW_FEAR' => DB::raw('CURRENT_TIMESTAMP')
|
|
|
- ];
|
|
|
- } else {
|
|
|
- $arrUpdate = [
|
|
|
- 'EJTW_INFO' => null,
|
|
|
- 'EJTW_INRE' => null,
|
|
|
- 'EJTW_ESTA' => 'En espera',
|
|
|
- 'EJTW_USMO' => $user,
|
|
|
- 'EJTW_FEMO' => $currentDate,
|
|
|
- 'EJTW_FEAR' => DB::raw('CURRENT_TIMESTAMP')
|
|
|
- ];
|
|
|
- }
|
|
|
-
|
|
|
- try {
|
|
|
- $validateUpdate = DB::table('S002V01TEJTW')
|
|
|
- ->where('EJTW_IDEW', '=', $executeWorkflow)
|
|
|
- ->where('EJTW_IDET', '=', $executeTask['ID_EJECUCION_TAREA'])
|
|
|
- ->where('EJTW_NULI', '=', $requestData['NUMERO_LINEA'])
|
|
|
- ->update($arrUpdate);
|
|
|
- } catch (\Throwable $th) {
|
|
|
- DB::rollBack();
|
|
|
- return $this->responseController->makeResponse(true, 'Ocurrió un error al modificar las ejecuciones de las tareas.', $th->getMessage(), 406);
|
|
|
- }
|
|
|
- if (!$validateUpdate) {
|
|
|
- DB::rollBack();
|
|
|
- return $this->responseController->makeResponse(true, 'No se pudo modificar las ejecuciones de las tareas.', [], 406);
|
|
|
- }
|
|
|
-
|
|
|
- try {
|
|
|
- $validateExists = DB::table('S002V01TEJNO')
|
|
|
- ->where('EJNO_IDET', '=', $executeTask['ID_EJECUCION_TAREA'])
|
|
|
- ->where('EJNO_NULI', '=', $requestData['NUMERO_LINEA'])
|
|
|
- ->exists();
|
|
|
- } catch (\Throwable $th) {
|
|
|
- DB::rollBack();
|
|
|
- return $this->responseController->makeResponse(true, 'Ocurrió un error al obtener las ejecuciones de las notificaciones.', $th->getMessage(), 406);
|
|
|
- }
|
|
|
- if ($validateExists) {
|
|
|
- try {
|
|
|
- $validateUpdate = DB::table('S002V01TEJNO')
|
|
|
- ->where('EJNO_IDET', '=', $executeTask['ID_EJECUCION_TAREA'])
|
|
|
- ->where('EJNO_NULI', '=', $requestData['NUMERO_LINEA'])
|
|
|
- ->update([
|
|
|
- 'EJNO_ESTA' => 'Obsoleto',
|
|
|
- '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 las ejecuciones de las notificaciones.', $th->getMessage(), 406);
|
|
|
- }
|
|
|
- if (!$validateUpdate) {
|
|
|
- DB::rollBack();
|
|
|
- return $this->responseController->makeResponse(true, 'No se pudo modificar las ejecuciones de las notificaciones.', [], 406);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if ($executeTask['SECUENCIA'] === 1) {
|
|
|
- $arrResendNotificate[] = [
|
|
|
- 'ID_EJECUCION_WORKFLOW' => $executeWorkflow,
|
|
|
- 'ID_WORKFLOW' => $executeTask['ID_WORKFLOW'],
|
|
|
- 'ID_TAREA' => $executeTask['ID_TAREA'],
|
|
|
- 'ID_EJECUCION_TAREA' => $executeTask['ID_EJECUCION_TAREA'],
|
|
|
- 'ID_PROCESO' => $executeTask['ID_PROCESO'],
|
|
|
- 'NOMBRE_PROCESO' => $executeTask['NOMBRE_PROCESO'],
|
|
|
- ];
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- foreach ($arrResendNotificate as $resendNotificate) {
|
|
|
- try {
|
|
|
- $arrNotificate = DB::table('S002V01TNTWO')
|
|
|
- ->where('NTWO_IDTA', '=', $executeTask['ID_TAREA'])
|
|
|
- ->where('NTWO_NULI', '=', $requestData['NUMERO_LINEA'])
|
|
|
- ->where('NTWO_ESTA', '=', 'Activo')
|
|
|
- ->orderBy('NTWO_SECU', 'ASC')
|
|
|
- ->get([
|
|
|
- 'NTWO_IDUS AS USUARIO_NOTIFICACION',
|
|
|
- 'NTWO_TINO AS TIPO_NOTIFICACION',
|
|
|
- 'NTWO_SECU AS SECUENCIA',
|
|
|
- ]);
|
|
|
- $arrNotificate = json_decode(json_encode($arrNotificate), true);
|
|
|
- } catch (\Throwable $th) {
|
|
|
- DB::rollBack();
|
|
|
- return $this->responseController->makeResponse(true, 'Ocurrió un error al obtener las notificaciones.', $th->getMessage(), 406);
|
|
|
- }
|
|
|
-
|
|
|
- $userValidate = null;
|
|
|
- $notifacateUsers = array();
|
|
|
- foreach ($arrNotificate as $notificate) {
|
|
|
-
|
|
|
- try {
|
|
|
- $validateRegister = DB::table('S002V01TEJNO')->insert([
|
|
|
- 'EJNO_NULI' => $requestData['NUMERO_LINEA'],
|
|
|
- 'EJNO_IDET' => $resendNotificate['ID_EJECUCION_TAREA'],
|
|
|
- 'EJNO_USNO' => $notificate['USUARIO_NOTIFICACION'],
|
|
|
- 'EJNO_SECU' => $notificate['SECUENCIA'],
|
|
|
- 'EJNO_TINO' => $notificate['TIPO_NOTIFICACION'],
|
|
|
- 'EJNO_ESTA' => $notificate['SECUENCIA'] === 1 || $notificate['TIPO_NOTIFICACION'] === 'N' ? '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 notificaciones.', $th->getMessage(), 406);
|
|
|
- }
|
|
|
- if (!$validateRegister) {
|
|
|
- DB::rollBack();
|
|
|
- return $this->responseController->makeResponse(true, 'No se pudo registrar las notificaciones.', [], 406);
|
|
|
- }
|
|
|
-
|
|
|
- if ($notificate['TIPO_NOTIFICACION'] === 'V' && $notificate['SECUENCIA'] === 1) {
|
|
|
- $userValidate = $notificate['USUARIO_NOTIFICACION'];
|
|
|
- }
|
|
|
-
|
|
|
- if ($notificate['TIPO_NOTIFICACION'] === 'N') {
|
|
|
- $notifacateUsers[] = $notificate['USUARIO_NOTIFICACION'];
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (is_null($userValidate)) {
|
|
|
- DB::rollBack();
|
|
|
- return $this->responseController->makeResponse(true, "No se encontró el usuario para enviar la notificación para la validación de la ejecución #{$resendNotificate['ID_EJECUCION_TAREA']}.", [], 406);
|
|
|
- }
|
|
|
-
|
|
|
- $objExecute = [ 'ID' => $resendNotificate['ID_EJECUCION_WORKFLOW'], 'TYPE' => 'VALIDATE' ];
|
|
|
- $strExecuteWorkflow = json_encode($objExecute);
|
|
|
- $encExecuteWorkflow = $this->encController->encrypt($strExecuteWorkflow);
|
|
|
-
|
|
|
- $this->notificationsController->emitNotification(
|
|
|
- 'S002V01M03GEPR',
|
|
|
- 'Flujo de trabajo modificado.',
|
|
|
- "El flujo de trabajo #{$resendNotificate['ID_WORKFLOW']} ha sido modificado, por lo cual el proceso se ha reiniciado. Se le pide nuevamente realizar el proceso de validación.",
|
|
|
- [[
|
|
|
- 'BOTON' => 'Ver solicitud',
|
|
|
- 'FUNCION' => 'openModule',
|
|
|
- 'PARAMETROS' => json_encode([$this->encController->encrypt("GEPR/SFTR/GSFT/".$encExecuteWorkflow)]),
|
|
|
- ]],
|
|
|
- [$userValidate],
|
|
|
- $user,
|
|
|
- $requestData['NUMERO_LINEA'],
|
|
|
- $this->socketClient,
|
|
|
- );
|
|
|
-
|
|
|
- if (!empty($notifacateUsers)) {
|
|
|
- $objExecute = [ 'ID' => $resendNotificate['ID_EJECUCION_WORKFLOW'], 'TYPE' => 'NOTIFICATE' ];
|
|
|
- $strExecuteWorkflow = json_encode($objExecute);
|
|
|
- $encExecuteWorkflow = $this->encController->encrypt($strExecuteWorkflow);
|
|
|
-
|
|
|
- $this->notificationsController->emitNotification(
|
|
|
- 'S002V01M03GEPR',
|
|
|
- 'Flujo de trabajo modificado',
|
|
|
- "El flujo de trabajo #{$resendNotificate['ID_WORKFLOW']} ha sido modificado, por lo cual el proceso se ha reiniciado.",
|
|
|
- [[
|
|
|
- 'BOTON' => 'Ver solicitud',
|
|
|
- 'FUNCION' => 'openModule',
|
|
|
- 'PARAMETROS' => json_encode([$this->encController->encrypt("GEPR/SFTR/GSFT/".$encExecuteWorkflow)]),
|
|
|
- ]],
|
|
|
- [$notifacateUsers],
|
|
|
- $user,
|
|
|
- $requestData['NUMERO_LINEA'],
|
|
|
- $this->socketClient,
|
|
|
- );
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- DB::commit();
|
|
|
- return $this->responseController->makeResponse(false, "ÉXITO: Modificación Exitosa");
|
|
|
- }
|
|
|
- public function deleteWorkflow(Request $request, $idWorkflow) {
|
|
|
- $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
|
|
|
- );
|
|
|
- }
|
|
|
-
|
|
|
- DB::beginTransaction();
|
|
|
- $requestData = $request->all();
|
|
|
-
|
|
|
- try {
|
|
|
- $idWorkflow = $this->encController->decrypt($idWorkflow);
|
|
|
- } catch (\Throwable $th) {
|
|
|
- DB::rollBack();
|
|
|
- return $this->responseController->makeResponse(true, 'Ocurrió un error al desencriptar el nivel.', $th->getMessage(), 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'];
|
|
|
-
|
|
|
- try {
|
|
|
- $workflow = (array) DB::table('S002V01TWORK')
|
|
|
- ->where('WORK_IDWO', '=', $idWorkflow)
|
|
|
- ->where('WORK_NULI', '=', $requestData['NUMERO_LINEA'])
|
|
|
- ->where('WORK_ESTA', '=', 'Activo')
|
|
|
- ->first([
|
|
|
- 'WORK_IDWO AS ID_WORKFLOW',
|
|
|
- 'WORK_NOWO AS NOMBRE_WORKFLOW',
|
|
|
- 'WORK_DESC AS DESCRIPCION',
|
|
|
- 'WORK_AUTO AS AUTOMATICO',
|
|
|
- 'WORK_PRED AS PREDEFINIDO',
|
|
|
- 'WORK_HICA AS HISTORIAL_CAMBIOS',
|
|
|
- 'WORK_ESTA AS ESTADO',
|
|
|
- 'WORK_USRE AS USUARIO_REGISTRA',
|
|
|
- 'WORK_FERE AS FECHA_REGISTRA',
|
|
|
- 'WORK_USMO AS USUARIO_MODIFICA',
|
|
|
- 'WORK_FEMO AS FECHA_MODIFICA',
|
|
|
- ]);
|
|
|
- } catch (\Throwable $th) {
|
|
|
- DB::rollBack();
|
|
|
- return $this->responseController->makeResponse(true, 'Ocurrió un error al obtener la información del flujo de trabajo.', $th->getMessage(), 500);
|
|
|
- }
|
|
|
- if (empty($workflow)) {
|
|
|
- DB::rollBack();
|
|
|
- return $this->responseController->makeResponse(true, 'El flujo de trabajo no existe.', [], 406);
|
|
|
- }
|
|
|
-
|
|
|
- try {
|
|
|
- $validateTask = DB::table('S002V01TTAWO')
|
|
|
- ->where('TAWO_IDWO', '=', $idWorkflow)
|
|
|
- ->where('TAWO_NULI', '=', $requestData['NUMERO_LINEA'])
|
|
|
- ->where('TAWO_ESTA', '=', 'Activo')
|
|
|
- ->exists();
|
|
|
- } catch (\Throwable $th) {
|
|
|
- DB::rollBack();
|
|
|
- return $this->responseController->makeResponse(true, 'Ocurrió un error al obtener las tareas relacionadas con el flujo de trabajo.', $th->getMessage(), 500);
|
|
|
- }
|
|
|
- if ($validateTask) {
|
|
|
- DB::rollBack();
|
|
|
- return $this->responseController->makeResponse(true, 'Aún existen tareas relacionadas con el flujo de trabajo que está intentando eliminar.', [], 406);
|
|
|
- }
|
|
|
-
|
|
|
- $arrHistory = array();
|
|
|
- if (is_null($workflow['HISTORIAL_CAMBIOS'])) {
|
|
|
- unset($workflow['HISTORIAL_CAMBIOS']);
|
|
|
- $arrHistory[] = $workflow;
|
|
|
- } else {
|
|
|
- $arrHistory = json_decode($workflow['HISTORIAL_CAMBIOS']);
|
|
|
- unset($workflow['HISTORIAL_CAMBIOS']);
|
|
|
- $arrHistory[] = $workflow;
|
|
|
- }
|
|
|
- $strHistory = json_encode($arrHistory);
|
|
|
-
|
|
|
- $now = $this->functionsController->now();
|
|
|
- $currentDate = $now->toDateTimeString();
|
|
|
-
|
|
|
- try {
|
|
|
- $validateUpdate = DB::table('S002V01TWORK')
|
|
|
- ->where('WORK_IDWO', '=', $idWorkflow)
|
|
|
- ->where('WORK_NULI', '=', $requestData['NUMERO_LINEA'])
|
|
|
- ->where('WORK_ESTA', '=', 'Activo')
|
|
|
- ->update([
|
|
|
- 'WORK_ESTA' => 'Eliminado',
|
|
|
- 'WORK_HICA' => $strHistory,
|
|
|
- '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 eliminar el flujo de trabajo.', $th->getMessage(), 500);
|
|
|
- }
|
|
|
- if (!$validateUpdate) {
|
|
|
- DB::rollBack();
|
|
|
- return $this->responseController->makeResponse(true, 'No se pudo eliminar el flujo de trabajo.', [], 500);
|
|
|
- }
|
|
|
-
|
|
|
- DB::commit();
|
|
|
- return $this->responseController->makeResponse(false, "ÉXITO: Eliminación Exitosa");
|
|
|
- }
|
|
|
-
|
|
|
- public function restoreWorkflows(Request $request){
|
|
|
- $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
|
|
|
- );
|
|
|
- }
|
|
|
-
|
|
|
- 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'];
|
|
|
- $defaultWorkflowsPath = str_replace('app\\Http\\Controllers', 'storage\\app\\public\\global_resources', __DIR__);
|
|
|
- $defaultWorkflowsFile = $defaultWorkflowsPath . '\\default_workflows.sam';
|
|
|
-
|
|
|
- if(!file_exists($defaultWorkflowsFile)){
|
|
|
- DB::rollBack();
|
|
|
- return $this->responseController->makeResponse(true, "No fue posible encontrar el archivo 'default_workflows.sam' en el almacenamiento del sistema.", [], 500);
|
|
|
- }
|
|
|
-
|
|
|
- $defaultWorkflowsStr = file_get_contents($defaultWorkflowsFile);
|
|
|
- $defaultWorkflowsDec = $this->encController->decrypt($defaultWorkflowsStr);
|
|
|
- $defaultWorkflowsArr = json_decode($defaultWorkflowsDec, true);
|
|
|
-
|
|
|
- foreach($defaultWorkflowsArr as $workflow){
|
|
|
- $idwo = $workflow['workflow-id'];
|
|
|
- $nowo = $workflow['workflow-name'];
|
|
|
- $desc = $workflow['workflow-description'];
|
|
|
- $auto = 1;
|
|
|
- $pred = 0;
|
|
|
-
|
|
|
- $workflowObj = DB::table('S002V01TWORK')->where([
|
|
|
- ['WORK_IDWO', '=', $idwo],
|
|
|
- ['WORK_NULI', '=', $requestData['NUMERO_LINEA']]
|
|
|
- ])->first();
|
|
|
-
|
|
|
- $vers = is_null($workflowObj) ? 1 : intval($workflowObj->WORK_VERS) + 1;
|
|
|
- $hicaArr = is_null($workflowObj) ? [] : json_decode($workflowObj->WORK_HICA, true);
|
|
|
-
|
|
|
- $now = $this->functionsController->now();
|
|
|
- $nowStr = $now->toDateTimeString();
|
|
|
- $hicaArr[] = [
|
|
|
- "date" => $nowStr,
|
|
|
- "vers" => $vers,
|
|
|
- "data" => $workflow,
|
|
|
- ];
|
|
|
-
|
|
|
- $hica = json_encode($hicaArr);
|
|
|
- if(is_null($workflowObj)){
|
|
|
- DB::table('S002V01TWORK')->insert([
|
|
|
- "WORK_IDWO" => $idwo,
|
|
|
- "WORK_NULI" => $requestData['NUMERO_LINEA'],
|
|
|
- "WORK_NOWO" => $nowo,
|
|
|
- "WORK_DESC" => $desc,
|
|
|
- "WORK_AUTO" => $auto,
|
|
|
- "WORK_PRED" => $pred,
|
|
|
- "WORK_HICA" => $hica,
|
|
|
- "WORK_ESTA" => 'Activo',
|
|
|
- "WORK_VERS" => $vers,
|
|
|
- "WORK_USRE" => $user,
|
|
|
- "WORK_FERE" => $nowStr,
|
|
|
- ]);
|
|
|
- }else{
|
|
|
- DB::table('S002V01TWORK')->where([
|
|
|
- ['WORK_IDWO', '=', $idwo],
|
|
|
- ['WORK_NULI', '=', $requestData['NUMERO_LINEA']]
|
|
|
- ])->update([
|
|
|
- "WORK_NOWO" => $nowo,
|
|
|
- "WORK_DESC" => $desc,
|
|
|
- "WORK_AUTO" => $auto,
|
|
|
- "WORK_PRED" => $pred,
|
|
|
- "WORK_HICA" => $hica,
|
|
|
- "WORK_ESTA" => 'Activo',
|
|
|
- "WORK_VERS" => $vers,
|
|
|
- "WORK_USMO" => $user,
|
|
|
- "WORK_FEMO" => $nowStr,
|
|
|
- ]);
|
|
|
- }
|
|
|
-
|
|
|
- DB::table('S002V01TTAWO')->where([
|
|
|
- ['TAWO_NULI', '=', $requestData['NUMERO_LINEA']],
|
|
|
- ['TAWO_IDWO', '=', $idwo]
|
|
|
- ])->update(['TAWO_ESTA' => 'Eliminado']);
|
|
|
-
|
|
|
- foreach($workflow['tasks'] as $task){
|
|
|
- $nota = $task['task-name'];
|
|
|
- $tdesc = $task['task-description'];
|
|
|
- $secu = $task['task-order'];
|
|
|
- $sies = $task['next-state'];
|
|
|
- $auto = $task['automatic'] ? 1 : 0;
|
|
|
- $usua = json_encode($task['users']);
|
|
|
- $acci = json_encode($task['actions']);
|
|
|
-
|
|
|
- DB::table('S002V01TTAWO')->insert([
|
|
|
- 'TAWO_NULI' => $requestData['NUMERO_LINEA'],
|
|
|
- 'TAWO_IDWO' => $idwo,
|
|
|
- 'TAWO_NOTA' => $nota,
|
|
|
- 'TAWO_DESC' => $tdesc,
|
|
|
- 'TAWO_SECU' => $secu,
|
|
|
- 'TAWO_SIES' => $sies,
|
|
|
- 'TAWO_AUTO' => $auto,
|
|
|
- 'TAWO_USUA' => $usua,
|
|
|
- 'TAWO_ACCI' => $acci,
|
|
|
- 'TAWO_USRE' => $user,
|
|
|
- 'TAWO_FERE' => $nowStr,
|
|
|
- ]);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- DB::commit();
|
|
|
- return $this->responseController->makeResponse(false, "ÉXITO: Restauración Exitosa");
|
|
|
- }
|
|
|
|
|
|
+ //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']) {
|