CountersActivatorsController.php 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Support\Facades\DB;
  4. use Illuminate\Http\Request;
  5. use Illuminate\Support\Facades\Validator;
  6. use Illuminate\Support\Carbon;
  7. class CountersActivatorsController extends Controller{
  8. private $responseController;
  9. private $encryptionController;
  10. private $functionsController;
  11. public function __construct(){
  12. $this->responseController = new ResponseController();
  13. $this->encryptionController = new EncryptionController();
  14. $this->functionsController = new FunctionsController();
  15. }
  16. public function getActivatorsByType($type, $idUser, $line){
  17. DB::enableQueryLog();
  18. $idUser = $this->encryptionController->decrypt($idUser);
  19. if(!$idUser){
  20. return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición no está encriptado correctamente.', [], 400);
  21. }
  22. $usr = DB::table('S002V01TUSUA')->where([
  23. ['USUA_NULI', '=', $line],
  24. ['USUA_IDUS', '=', $idUser],
  25. ])->first();
  26. if(is_null($usr)){
  27. return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado.', [], 404);
  28. }
  29. $activators = DB::table('S002V01TACTI')->select([
  30. 'ACTI_IDCO AS IDCONTADOR',
  31. 'ACTI_PRIO AS PRIORIDAD',
  32. 'ACTI_TIAC AS TIPOACTIVACION',
  33. 'ACTI_COAC AS CONDICIONES'
  34. ])->where([
  35. ['ACTI_NULI', '=', $line],
  36. ['ACTI_TIAC', '=', $type]
  37. ])->get()->all();
  38. $now = $this->functionsController->now();
  39. $nowStr = $now->toDateTimeString();
  40. $actions = DB::getQueryLog();
  41. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  42. $idac = $this->functionsController->registerActivity(
  43. $line,
  44. 'S002V01M06COAC',
  45. 'S002V01F01GEAC',
  46. 'S002V01P01COAC',
  47. 'Consulta',
  48. "El usuario $name (" . $usr->USUA_IDUS . ") consultó los contadores de tipo $type.",
  49. $idUser,
  50. $nowStr,
  51. 'S002V01S02ACTI'
  52. );
  53. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
  54. return $this->responseController->makeresponse(false, "EXITO", $activators);
  55. }
  56. public function registerActivator(Request $request){
  57. DB::enableQueryLog();
  58. $validator = Validator::make($request->all(), [
  59. 'id_user' => 'required|string',
  60. 'linea' => 'required|integer',
  61. 'priority' => 'required|string|in:1,2,3,4',
  62. 'type' => 'required|string|in:CA,SI,ME,VA',
  63. 'condition' => 'required|json',
  64. ]);
  65. if($validator->fails()){
  66. return $this->responseController->makeResponse(
  67. true,
  68. "Se encontraron uno o más errores.",
  69. $this->responseController->makeErrors(
  70. $validator->errors()->messages()
  71. ),
  72. 401
  73. );
  74. }
  75. //$priorities = ['MA' => '1', 'AL' => '2', 'ME' => '3', 'BA' => '4'];
  76. $types = ['CA' => 'Calendario', 'SI' => 'Sintoma', 'ME' => 'Medida', 'VA' => 'Valor'];
  77. $form = $request->all();
  78. $idUser = $this->encryptionController->decrypt($form['id_user']);
  79. if(!$idUser){
  80. return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición no está encriptado correctamente.', [], 400);
  81. }
  82. $usr = DB::table('S002V01TUSUA')->where([
  83. ['USUA_NULI', '=', $form['linea']],
  84. ['USUA_IDUS', '=', $idUser],
  85. ])->first();
  86. if(is_null($usr)){
  87. return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado.', [], 404);
  88. }
  89. $priority = $form['priority'];
  90. $type = $types[$form['type']];
  91. $nowStr = Carbon::now('America/Guatemala')->toDateTimeString();
  92. $idCont = DB::table('S002V01TACTI')->insertGetId([
  93. 'ACTI_NULI' => $form['linea'],
  94. 'ACTI_PRIO' => $priority,
  95. 'ACTI_TIAC' => $type,
  96. 'ACTI_COAC' => $form['condition'],
  97. 'ACTI_USRE' => $idUser,
  98. 'ACTI_FERE' => $nowStr
  99. ]);
  100. $actions = DB::getQueryLog();
  101. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  102. $idac = $this->functionsController->registerActivity(
  103. $form['linea'],
  104. 'S002V01M06COAC',
  105. 'S002V01F01GEAC',
  106. 'S002V01P02REAC',
  107. 'Registro',
  108. "El usuario $name (" . $usr->USUA_IDUS . ") registró el contador #$idCont.",
  109. $idUser,
  110. $nowStr,
  111. 'S002V01S02ACTI'
  112. );
  113. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $form['linea']);
  114. return $this->responseController->makeResponse(false, 'EXITO.', ['IDCONT' => $idCont]);
  115. }
  116. public function getActivator($idActivator, $idUser, $line){
  117. DB::enableQueryLog();
  118. $idUser = $this->encryptionController->decrypt($idUser);
  119. if(!$idUser){
  120. return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición no está encriptado correctamente.', [], 400);
  121. }
  122. $usr = DB::table('S002V01TUSUA')->where([
  123. ['USUA_NULI', '=', $line],
  124. ['USUA_IDUS', '=', $idUser],
  125. ])->first();
  126. if(is_null($usr)){
  127. return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado.', [], 404);
  128. }
  129. $idActivator = $this->encryptionController->decrypt($idActivator);
  130. if(!$idActivator){
  131. return $this->responseController->makeResponse(true, 'El ID del activador solicitado no está encriptado correctamente.', [], 400);
  132. }
  133. $activator = DB::table('S002V01TACTI')->select([
  134. 'ACTI_IDCO AS IDACTIVADOR',
  135. 'ACTI_PRIO AS PRIORIDAD',
  136. 'ACTI_TIAC AS TIPOACTIVADOR',
  137. 'ACTI_COAC AS CONDICIONES',
  138. 'ACTI_USRE AS USRREG',
  139. 'ACTI_FERE AS FECREG',
  140. 'ACTI_USMO AS USRMOD',
  141. 'ACTI_FEMO AS FECMOD',
  142. ])->where([
  143. ['ACTI_IDCO', '=', $idActivator],
  144. ['ACTI_NULI', '=', $line],
  145. ])->first();
  146. if(is_null($activator)){
  147. return $this->responseController->makeResponse(true, 'El activador solicitado no está registrado.', [], 404);
  148. }
  149. $now = $this->functionsController->now();
  150. $nowStr = $now->toDateTimeString();
  151. $actions = DB::getQueryLog();
  152. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  153. $idac = $this->functionsController->registerActivity(
  154. $line,
  155. 'S002V01M06COAC',
  156. 'S002V01F01GEAC',
  157. 'S002V01P01COAC',
  158. 'Consulta',
  159. "El usuario $name (" . $usr->USUA_IDUS . ") consultó la información del activador #$idActivator",
  160. $idUser,
  161. $nowStr,
  162. 'S002V01S02ACTI'
  163. );
  164. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
  165. return $this->responseController->makeresponse(false, "EXITO", $activator);
  166. }
  167. }