CountersActivatorsController.php 7.3 KB

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