UsersProfilesController.php 62 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use Illuminate\Support\Facades\DB;
  5. use Illuminate\Support\Facades\Validator;
  6. use Illuminate\Support\Facades\Hash;
  7. use Illuminate\Support\Carbon;
  8. class UsersProfilesController extends Controller{
  9. private $responseController;
  10. private $encryptionController;
  11. private $functionsController;
  12. private $moduleCode = 'S002V01M02USPE';
  13. public function __construct(){
  14. $this->responseController = new ResponseController();
  15. $this->encryptionController = new EncryptionController();
  16. $this->functionsController = new FunctionsController();
  17. }
  18. public function getUsers($idUser, $line){
  19. DB::enableQueryLog();
  20. $idUser = $this->encryptionController->shortDec($idUser);
  21. if(!$idUser){
  22. return $this->responseController->makeResponse(true, 'El ID del usuaio que realizó la solicitud no está encriptado correctamente', [], 400);
  23. }
  24. $usr = DB::table('S002V01TUSUA')->where([
  25. ['USUA_IDUS', '=', $idUser],
  26. ['USUA_NULI', '=', $line],
  27. ])->first();
  28. if(is_null($usr)){
  29. return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no existe', [], 400);
  30. }
  31. $users = DB::table('S002V01TUSUA')
  32. ->join('S002V01TPERF', 'USUA_PERF', '=', 'PERF_IDPE')
  33. ->leftJoin('S002V01TBIAC', 'USUA_ULCO', '=', 'BIAC_IDCO')
  34. ->select(
  35. 'USUA_IDUS as IDUSUARIO',
  36. 'USUA_NOMB as NOMBRE',
  37. 'USUA_APPA as APEPAT',
  38. 'USUA_APMA as APEMAT',
  39. 'USUA_COEL as EMAIL',
  40. 'PERF_NOPE as PERFIL',
  41. 'USUA_ESTA as ESTATUS',
  42. 'BIAC_FECO as ULCON'
  43. )->where('USUA_NULI', '=', $line)->get()->all();
  44. $actions = DB::getQueryLog();
  45. $nowStr = Carbon::now('America/Mexico_city')->toDateTimeString();
  46. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  47. $idac = $this->functionsController->registerActivity(
  48. $line,
  49. $this->moduleCode,
  50. 'S002V01F01ADUS',
  51. 'S002V01P01COUS',
  52. 'Consulta',
  53. "El usuario $name (" . $usr->USUA_IDUS . ") consultó los usuarios registrados.",
  54. $idUser,
  55. $nowStr,
  56. 'S002V01S01GEUS'
  57. );
  58. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
  59. return $this->responseController->makeresponse(false, "EXITO", $users);
  60. }
  61. public function getUser($id, $idUser, $line){
  62. DB::enableQueryLog();
  63. $idUser = $this->encryptionController->shortDec($idUser);
  64. if(!$idUser){
  65. return $this->responseController->makeResponse(true, 'El ID del usuaio que realizó la solicitud no está encriptado correctamente', [], 400);
  66. }
  67. $id = $this->encryptionController->shortDec($id);
  68. if(!$id){
  69. return $this->responseController->makeResponse(true, "El id del usuario no está encriptado correctamente.", [], 400);
  70. }
  71. $usr = DB::table('S002V01TUSUA')->where([
  72. ['USUA_IDUS', '=', $idUser],
  73. ['USUA_NULI', '=', $line],
  74. ])->first();
  75. if(is_null($usr)){
  76. return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no existe', [], 400);
  77. }
  78. $user = DB::table('S002V01TUSUA')->select(
  79. 'USUA_IDUS AS IDUSUARIO',
  80. 'USUA_NOMB AS NOMBRE',
  81. 'USUA_APPA AS APEPAT',
  82. 'USUA_APMA AS APEMAT',
  83. 'USUA_COEL AS EMAIL',
  84. 'USUA_PERF AS PERFIL',
  85. 'USUA_ESTA AS ESTATUS',
  86. )->where([
  87. ['USUA_IDUS', '=', $id],
  88. ['USUA_NULI', '=', $line],
  89. ])->get()->first();
  90. if(is_null($user)){
  91. return $this->responseController->makeResponse(true, "El usuario consultado no existe.", [], 404);
  92. }
  93. $actions = DB::getQueryLog();
  94. $nowStr = Carbon::now('America/Mexico_city')->toDateTimeString();
  95. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  96. $nameCons = $this->functionsController->joinName($user->NOMBRE, $user->APEPAT, $user->APEMAT);
  97. $idac = $this->functionsController->registerActivity(
  98. $line,
  99. $this->moduleCode,
  100. 'S002V01F01ADUS',
  101. 'S002V01P01COUS',
  102. 'Consulta',
  103. "El usuario $name (" . $usr->USUA_IDUS . ") consultó al usuario $nameCons (" . $user->IDUSUARIO . ").",
  104. $idUser,
  105. $nowStr,
  106. 'S002V01S01GEUS'
  107. );
  108. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
  109. return $this->responseController->makeresponse(false, "EXITO", $user);
  110. }
  111. public function getProfiles($idUser, $line){
  112. DB::enableQueryLog();
  113. $idUser = $this->encryptionController->shortDec($idUser);
  114. if(!$idUser){
  115. return $this->responseController->makeResponse(true, 'El ID del usuaio que realizó la solicitud no está encriptado correctamente', [], 400);
  116. }
  117. $usr = DB::table('S002V01TUSUA')->where([
  118. ['USUA_IDUS', '=', $idUser],
  119. ['USUA_NULI', '=', $line]
  120. ])->first();
  121. if(is_null($usr)){
  122. return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
  123. }
  124. $profiles = DB::table('S002V01TPERF')->select(
  125. 'PERF_IDPE as IDPERFIL',
  126. 'PERF_NOPE as NOMBREPERFIL',
  127. 'PERF_ESTA as ESTATUS',
  128. 'PERF_PERM as PERMISOS',
  129. 'PERF_FEMO as FECHAMODIFICACION',
  130. 'PERF_FERE as FECHACREACION'
  131. )->orderBy('PERF_ESTA', 'asc')->orderBy('PERF_IDPE', 'asc')->get()->all();
  132. $actions = DB::getQueryLog();
  133. $nowStr = Carbon::now('America/Mexico_city')->toDateTimeString();
  134. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  135. $idac = $this->functionsController->registerActivity(
  136. $line,
  137. $this->moduleCode,
  138. 'S002V01F01ADPE',
  139. 'S002V01P01COPE',
  140. 'Consulta',
  141. "El usuario $name (" . $usr->USUA_IDUS . ") consultó los perfiles registrados.",
  142. $idUser,
  143. $nowStr,
  144. 'S002V01S02GEPE'
  145. );
  146. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
  147. return $this->responseController->makeresponse(false, "EXITO", $profiles);
  148. }
  149. public function getProfile($id, $idUser, $line){
  150. DB::enableQueryLog();
  151. $idUser = $this->encryptionController->shortDec($idUser);
  152. if(!$idUser){
  153. return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la solicitud no está encriptado correctamente', [], 400);
  154. }
  155. $id = $this->encryptionController->shortDec($id);
  156. if(!$id){
  157. return $this->responseController->makeResponse(true, "El ID del perfil no está encriptado correctamente.", [], 401);
  158. }
  159. $usr = DB::table('S002V01TUSUA')->where([
  160. ['USUA_IDUS', '=', $idUser],
  161. ['USUA_NULI', '=', $line],
  162. ])->first();
  163. if(is_null($usr)){
  164. return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no existe', [], 400);
  165. }
  166. $profile = DB::table('S002V01TPERF')->select(
  167. 'PERF_IDPE AS IDPERFIL',
  168. 'PERF_NOPE AS NOMBREPERFIL',
  169. 'PERF_ESTA AS ESTATUS',
  170. 'PERF_PERM AS PERMISOS',
  171. )->where([
  172. ['PERF_IDPE', '=', $id],
  173. ['PERF_NULI', '=', $line],
  174. ])->first();
  175. if(is_null($profile)){
  176. return $this->responseController->makeResponse(true, "El perfil consultado no existe.", [], 404);
  177. }
  178. $profilePermissions = json_decode($profile->PERMISOS, true);
  179. $permissions = [];
  180. $modules = DB::table('S002V01TMODU')->where('MODU_NULI', '=', $line)->get()->all();
  181. $moduleIndex = 0;
  182. foreach($modules as $module){
  183. $submodules = DB::table('S002V01TSUBM')->where([
  184. ['SUBM_IDMO', '=', $module->MODU_IDMO],
  185. ['SUBM_NULI', '=', $line]
  186. ])->get()->all();
  187. $permissionsPerSubmodule = [];
  188. $hasSubmodules = false;
  189. $submoduleIndex = 0;
  190. foreach($submodules as $submodule){
  191. $functions = DB::table('S002V01TFUNC')->where([
  192. ['FUNC_IDMO', '=', $module->MODU_IDMO],
  193. ['FUNC_IDSM', '=', $submodule->SUBM_IDSM],
  194. ['FUNC_NULI', '=', $line],
  195. ])->get()->all();
  196. $permissionsPerFunction = [];
  197. $functionIndex = 0;
  198. foreach($functions as $function){
  199. $screens = DB::table('S002V01TPANT')->where([
  200. ['PANT_IDFU', '=', $function->FUNC_IDFU],
  201. ['PANT_NULI', '=', $line],
  202. ])->get()->all();
  203. $permissionsPerScreen = [];
  204. $screenIndex = 0;
  205. foreach($screens as $screen){
  206. $screenAccess = 0;
  207. if(isset($profilePermissions['permissions'][$moduleIndex]['children'][$submoduleIndex]['children'][$functionIndex]['children'][$screenIndex]['access'])){
  208. $screenAccess = $profilePermissions['permissions'][$moduleIndex]['children'][$submoduleIndex]['children'][$functionIndex]['children'][$screenIndex]['access'];
  209. }
  210. $permissionsPerScreen[] = [
  211. 'id' => $screen->PANT_IDPA,
  212. 'name' => $screen->PANT_NOMB,
  213. 'access' => $screenAccess
  214. ];
  215. $screenIndex++;
  216. }
  217. $functionAcces = 0;
  218. if(isset($profilePermissions['permissions'][$moduleIndex]['children'][$submoduleIndex]['children'][$functionIndex]['access'])){
  219. $functionAcces = $profilePermissions['permissions'][$moduleIndex]['children'][$submoduleIndex]['children'][$functionIndex]['access'];
  220. }
  221. $permissionsPerFunction[] = [
  222. 'id' => $function->FUNC_IDFU,
  223. 'name' => $function->FUNC_NOMB,
  224. 'access' => $functionAcces,
  225. 'children' => $permissionsPerScreen,
  226. ];
  227. $functionIndex++;
  228. }
  229. $submoduleAccess = 0;
  230. if(isset($profilePermissions['permissions'][$moduleIndex]['children'][$submoduleIndex]['access'])){
  231. $submoduleAccess = $profilePermissions['permissions'][$moduleIndex]['children'][$submoduleIndex]['access'];
  232. }
  233. $permissionsPerSubmodule[] = [
  234. 'id' => $submodule->SUBM_IDSM,
  235. 'name' => $submodule->SUBM_NOMB,
  236. 'access' => $submoduleAccess,
  237. 'children' => $permissionsPerFunction,
  238. ];
  239. $hasSubmodules = true;
  240. $submoduleIndex++;
  241. }
  242. $functions = DB::table('S002V01TFUNC')->where([
  243. ['FUNC_IDMO', '=', $module->MODU_IDMO],
  244. ['FUNC_IDSM', '=', null],
  245. ['FUNC_NULI', '=', $line],
  246. ])->get()->all();
  247. $permissionsPerFunction = [];
  248. $functionIndex = 0;
  249. foreach($functions as $function){
  250. $screens = DB::table('S002V01TPANT')->where([
  251. ['PANT_IDFU', '=', $function->FUNC_IDFU],
  252. ['PANT_NULI', '=', $line],
  253. ])->get()->all();
  254. $permissionsPerScreen = [];
  255. $screenIndex = 0;
  256. foreach($screens as $screen){
  257. $screenAccess = 0;
  258. if(isset($profilePermissions['permissions'][$moduleIndex]['children'][$functionIndex]['children'][$screenIndex]['access'])){
  259. $screenAccess = $profilePermissions['permissions'][$moduleIndex]['children'][$functionIndex]['children'][$screenIndex]['access'];
  260. }
  261. $permissionsPerScreen[] = [
  262. 'id' => $screen->PANT_IDPA,
  263. 'name' => $screen->PANT_NOMB,
  264. 'access' => $screenAccess
  265. ];
  266. $screenIndex++;
  267. }
  268. $functionAcces = 0;
  269. if(isset($profilePermissions['permissions'][$moduleIndex]['children'][$functionIndex]['access'])){
  270. $functionAcces = $profilePermissions['permissions'][$moduleIndex]['children'][$functionIndex]['access'];
  271. }
  272. $permissionsPerFunction[] = [
  273. 'id' => $function->FUNC_IDFU,
  274. 'name' => $function->FUNC_NOMB,
  275. 'access' => $functionAcces,
  276. 'children' => $permissionsPerScreen,
  277. ];
  278. $functionIndex++;
  279. }
  280. $permissionsArr = [];
  281. foreach($permissionsPerSubmodule as $perm){ $permissionsArr[] = $perm; }
  282. foreach($permissionsPerFunction as $perm){ $permissionsArr[] = $perm; }
  283. $moduleAccess = $profilePermissions['permissions'][$moduleIndex]['access'];
  284. $permissions[] = [
  285. 'id' => $module->MODU_IDMO,
  286. 'name' => $module->MODU_NOMO,
  287. 'access' => $moduleAccess,
  288. 'children' => $permissionsArr,
  289. ];
  290. $moduleIndex++;
  291. }
  292. $profile->PERMISOS = ['permissions' => $permissions];
  293. $nowStr = Carbon::now('America/Mexico_city')->toDateTimeString();
  294. $actions = DB::getQueryLog();
  295. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  296. $idac = $this->functionsController->registerActivity(
  297. $line,
  298. $this->moduleCode,
  299. 'S002V01F01ADPE',
  300. 'S002V01P01COPE',
  301. 'Consulta',
  302. "El usuario $name (" . $usr->USUA_IDUS . ") consultó el perfil " . $profile->NOMBREPERFIL . " (" . $profile->IDPERFIL . ").",
  303. $idUser,
  304. $nowStr,
  305. 'S002V01S02GEPE'
  306. );
  307. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
  308. return $this->responseController->makeresponse(false, "EXITO", $profile);
  309. }
  310. public function updateUser(Request $request){
  311. DB::enableQueryLog();
  312. $validator = Validator::make($request->all(), [
  313. 'id' => 'required|string',
  314. 'name' => 'required|string|max:50',
  315. 'fApe' => 'required|string|max:50',
  316. 'email' => 'required|string|email',
  317. 'perf' => 'required|integer',
  318. 'id_user' => 'required|string',
  319. 'linea' => 'required|integer'
  320. ]);
  321. if($validator->fails()){
  322. return $this->responseController->makeResponse(
  323. true,
  324. "Se encontraron uno o más errores.",
  325. $this->responseController->makeErrors(
  326. $validator->errors()->messages()
  327. ),
  328. 401
  329. );
  330. }
  331. $user = $request->all();
  332. $idUser = $this->encryptionController->decrypt($user['id']);
  333. if(!$idUser){
  334. return $this->responseController->makeResponse(true, "El id del usuario que desea modificar no está encriptado correctamente.", [], 400);
  335. }
  336. $usrMod = DB::table('S002V01TUSUA')->where([
  337. ['USUA_IDUS', '=', $idUser],
  338. ['USUA_NULI', '=', $user['linea']],
  339. ])->first();
  340. if(is_null($usrMod)){
  341. return $this->responseController->makeResponse(true, 'El usuario que desea modificar no exise.', [], 404);
  342. }
  343. $idUserMod = $this->encryptionController->decrypt($user['id_user']);
  344. if(!$idUserMod){
  345. return $this->responseController->makeResponse(true, "El id del usuario que modifica no está encriptado correctamente.", [], 400);
  346. }
  347. $usr = DB::table('S002V01TUSUA')->where([
  348. ['USUA_IDUS', '=', $idUserMod],
  349. ['USUA_NULI', '=', $user['linea']],
  350. ])->first();
  351. if(is_null($usr)){
  352. return $this->responseController->makeResponse(true, 'El usuario que realiza la solicitud no existe', [], 404);
  353. }
  354. if($idUser == $idUserMod){
  355. return $this->responseController->makeResponse(true, "El usuario no puede modificar su propio registro.", [], 401);
  356. }
  357. $nowStr = Carbon::now('America/Mexico_city')->toDateTimeString();
  358. $correos = DB::table('S002V01TUSUA')->where([
  359. ['USUA_COEL', '=', $user['email']],
  360. ['USUA_IDUS', '!=', $idUser]
  361. ])->get()->all();
  362. if(count($correos) > 0){
  363. return $this->responseController->makeResponse(true, "El nuevo correo electrónico ya está registrado en la base.", [], 401);
  364. }
  365. $perfil = DB::table('S002V01TPERF')->where('PERF_IDPE', '=', $user['perf'])->get()->first();
  366. if(is_null($perfil)){
  367. return $this->responseController->makeResponse(true, "El perfil asignado no existe.", [], 404);
  368. }
  369. DB::table('S002V01TUSUA')->where([
  370. ['USUA_IDUS', '=', $idUser],
  371. ['USUA_NULI', '=', $user['linea']]
  372. ])->update([
  373. 'USUA_NOMB' => $user['name'],
  374. 'USUA_APPA' => $user['fApe'],
  375. 'USUA_APMA' => array_key_exists('sApe', $user) ? $user['sApe'] : null,
  376. 'USUA_COEL' => $user['email'],
  377. 'USUA_PERF' => $user['perf'],
  378. 'USUA_USMO' => $idUserMod,
  379. 'USUA_FEMO' => $nowStr
  380. ]);
  381. $actions = DB::getQueryLog();
  382. $nowStr = Carbon::now('America/Mexico_city')->toDateTimeString();
  383. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  384. $nameMod = $this->functionsController->joinName($usrMod->USUA_NOMB, $usrMod->USUA_APPA, $usrMod->USUA_APMA);
  385. $idac = $this->functionsController->registerActivity(
  386. $user['linea'],
  387. $this->moduleCode,
  388. 'S002V01F01ADUS',
  389. 'S002V01P02RAUS',
  390. 'Actualización',
  391. "El usuario $name (" . $usr->USUA_IDUS . ") actualizó al usuario $nameMod (" . $usrMod->USUA_IDUS . ").",
  392. $idUser,
  393. $nowStr,
  394. 'S002V01S01GEUS'
  395. );
  396. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $user['linea']);
  397. return $this->responseController->makeResponse(false, "EXITO: Actualización correcta.");
  398. }
  399. public function createUser(Request $request){
  400. DB::enableQueryLog();
  401. $validator = Validator::make($request->all(), [
  402. 'id_user' => 'required|string',
  403. 'linea' => 'required|integer',
  404. 'name' => 'required|string|max:50',
  405. 'fApe' => 'required|string|max:50',
  406. 'perf' => 'required|integer',
  407. 'email' => 'required|string|email',
  408. 'password' => 'required|string|min:8|confirmed',
  409. ]);
  410. if($validator->fails()){
  411. return $this->responseController->makeResponse(
  412. true,
  413. "Se encontraron uno o más errores.",
  414. $this->responseController->makeErrors(
  415. $validator->errors()->messages()
  416. ),
  417. 401
  418. );
  419. }
  420. $user = $request->all();
  421. $idUsre = $this->encryptionController->decrypt($user['id_user']);
  422. if(!$idUsre){
  423. return $this->responseController->makeResponse(true, "El ID del usuario que registra no está encriptado correctamente.", [], 400);
  424. }
  425. $usr = DB::table('S002V01TUSUA')->where([
  426. ['USUA_IDUS', '=', $idUsre],
  427. ['USUA_NULI', '=', $user['linea']]
  428. ])->first();
  429. if(is_null($usr)){
  430. return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
  431. }else if($usr->USUA_ESTA == 'Eliminado'){
  432. return $this->responseController->makeResponse(true, "El usuario que realiza el registro está eliminado.", [], 401);
  433. }else if($usr->USUA_ESTA == 'Inactivo'){
  434. return $this->responseController->makeResponse(true, "El usuario que realiza el registro está boloqueado.", [], 401);
  435. }
  436. $email = DB::table('S002V01TUSUA')->where([
  437. ['USUA_COEL', '=', $user['email']],
  438. ['USUA_NULI', '=', $user['linea']]
  439. ])->get()->first();
  440. if(!is_null($email)){
  441. return $this->responseController->makeResponse(true, "El correo electrónico ya se encuentra registrado.", [], 401);
  442. }
  443. $perf = DB::table('S002V01TPERF')->where('PERF_IDPE', '=', $user['perf'])->get()->first();
  444. if(is_null($perf)){
  445. return $this->responseController->makeResponse(true, "El perfil asignado no existe.", [], 404);
  446. }
  447. $passEnc = Hash::make($user['password']);
  448. $apemat = isset($user['sApe']) ? $user['sApe'] : null;
  449. $nowStr = Carbon::now('America/Mexico_city')->toDateTimeString();
  450. $idUser = DB::table('S002V01TUSUA')->insertGetId([
  451. 'USUA_NULI' => $user['linea'],
  452. 'USUA_NOMB' => $user['name'],
  453. 'USUA_APPA' => $user['fApe'],
  454. 'USUA_APMA' => $apemat,
  455. 'USUA_PERF' => $user['perf'],
  456. 'USUA_CONT' => $passEnc,
  457. 'USUA_COEL' => $user['email'],
  458. 'USUA_USRE' => $idUsre,
  459. 'USUA_FERE' => $nowStr,
  460. ]);
  461. $actions = DB::getQueryLog();
  462. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  463. $nameReg = $this->functionsController->joinName($user['name'], $user['fApe'], $apemat);
  464. $idac = $this->functionsController->registerActivity(
  465. $user['linea'],
  466. $this->moduleCode,
  467. 'S002V01F01ADUS',
  468. 'S002V01P02RAUS',
  469. 'Registro',
  470. "El usuario $name (" . $usr->USUA_IDUS . ") registró al usuario $nameReg ($idUser).",
  471. $idUsre,
  472. $nowStr,
  473. 'S002V01S01GEUS'
  474. );
  475. $this->functionsController->registerLog($actions, $idUsre, $nowStr, $idac, $user['linea']);
  476. return $this->responseController->makeResponse(false, "EXITO: Registro correcto.");
  477. }
  478. public function blockUser(Request $request){
  479. DB::enableQueryLog();
  480. $validator = Validator::make($request->all(), [
  481. 'id' => 'required|string',
  482. 'estatus' => 'required|in:Activo,Inactivo',
  483. 'id_user' => 'required|string',
  484. 'linea' => 'required|integer'
  485. ]);
  486. if($validator->fails()){
  487. return $this->responseController->makeResponse(
  488. true,
  489. "Se encontraron uno o más errores.",
  490. $this->responseController->makeErrors(
  491. $validator->errors()->messages()
  492. ),
  493. 401
  494. );
  495. }
  496. $user = $request->all();
  497. $idUser = $this->encryptionController->decrypt($user['id']);
  498. if(!$idUser){
  499. return $this->responseController->makeResponse(true, "El id del usuario que desea modificar no está encriptado correctamente.", [], 400);
  500. }
  501. $usr = DB::table('S002V01TUSUA')->where([
  502. ['USUA_IDUS', '=', $idUser],
  503. ['USUA_NULI', '=', $user['linea']],
  504. ])->first();
  505. if(is_null($usr)){
  506. return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no existe', [], 400);
  507. }
  508. $idUserMod = $this->encryptionController->decrypt($user['id_user']);
  509. if(!$idUserMod){
  510. return $this->responseController->makeResponse(true, "El id del usuario que modifica no está encriptado correctamente.", [], 400);
  511. }
  512. if($idUser == $idUserMod){
  513. return $this->responseController->makeResponse(true, "El usuario no puede modificarse a sí mismo", [], 400);
  514. }
  515. $usrMod = DB::table('S002V01TUSUA')->where([
  516. ['USUA_IDUS', '=', $idUserMod],
  517. ['USUA_NULI', '=', $user['linea']],
  518. ])->first();
  519. if(is_null($usrMod)){
  520. return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no existe', [], 400);
  521. }
  522. $nowStr = Carbon::now('America/Mexico_city')->toDateTimeString();
  523. DB::table('S002V01TUSUA')->where('USUA_IDUS', '=', $idUserMod)->update([
  524. 'USUA_ESTA' => $user['estatus'],
  525. 'USUA_USMO' => $idUser,
  526. 'USUA_FEMO' => $nowStr
  527. ]);
  528. $actions = DB::getQueryLog();
  529. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  530. $nameMod = $this->functionsController->joinName($usrMod->USUA_NOMB, $usrMod->USUA_APPA, $usrMod->USUA_APMA);
  531. $tipoAccion = $user['estatus'] == 'Activo' ? 'desbloqueó' : 'bloqueó';
  532. $idac = $this->functionsController->registerActivity(
  533. $user['linea'],
  534. $this->moduleCode,
  535. 'S002V01F02BDAC',
  536. '-',
  537. 'Actualización',
  538. "El usuario $name (" . $usr->USUA_IDUS . ") $tipoAccion al usuario $nameMod (" . $usrMod->USUA_IDUS . ").",
  539. $idUser,
  540. $nowStr,
  541. 'S002V01S01GEUS'
  542. );
  543. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $user['linea']);
  544. return $this->responseController->makeResponse(false, "EXITO: Actualización correcta.");
  545. }
  546. public function updatePass(Request $request){
  547. DB::enableQueryLog();
  548. $validator = Validator::make($request->all(), [
  549. 'id' => 'required|string',
  550. 'password' => 'required|string|min:8|confirmed',
  551. 'id_user' => 'required|string',
  552. 'linea' => 'required|integer'
  553. ]);
  554. if($validator->fails()){
  555. return $this->responseController->makeResponse(
  556. true,
  557. "Se encontraron uno o más errores.",
  558. $this->responseController->makeErrors(
  559. $validator->errors()->messages()
  560. ),
  561. 401
  562. );
  563. }
  564. $user = $request->all();
  565. $idUser = $this->encryptionController->decrypt($user['id']);
  566. if(!$idUser){
  567. return $this->responseController->makeResponse(true, "El id del usuario que desea modificar no está encriptado correctamente.", [], 400);
  568. }
  569. $usrMod = DB::table('S002V01TUSUA')->where([
  570. ['USUA_IDUS', '=', $idUser],
  571. ['USUA_NULI', '=', $user['linea']],
  572. ])->first();
  573. if(is_null($usrMod)){
  574. return $this->responseController->makeResponse(true, 'El usuario que desea modificar no existe', [], 400);
  575. }
  576. $idUserMod = $this->encryptionController->decrypt($user['id_user']);
  577. if(!$idUserMod){
  578. return $this->responseController->makeResponse(true, "El id del usuario que modifica no está encriptado correctamente.", [], 400);
  579. }
  580. if($idUser == $idUserMod){
  581. return $this->responseController->makeResponse(true, "El usuario no puede modificarse a sí mismo.", [], 401);
  582. }
  583. $usr = DB::table('S002V01TUSUA')->where([
  584. ['USUA_IDUS', '=', $idUserMod],
  585. ['USUA_NULI', '=', $user['linea']],
  586. ])->first();
  587. if(is_null($usr)){
  588. return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no existe', [], 400);
  589. }
  590. $lastPass = $usr->USUA_CONT;
  591. if(Hash::check($user['password'], $lastPass)){
  592. return $this->responseController->makeResponse(true, "La contraseña nueva es igual a la anterior.", [], 401);
  593. }
  594. $newPass = Hash::make($user['password']);
  595. $nowStr = Carbon::now('America/Mexico_city')->toDateTimeString();
  596. DB::table('S002V01TUSUA')->where([
  597. ['USUA_IDUS', '=', $idUser],
  598. ['USUA_NULI', '=', $user['linea']],
  599. ])->update([
  600. 'USUA_CONT' => $newPass,
  601. 'USUA_USMO' => $idUserMod,
  602. 'USUA_FEMO' => $nowStr
  603. ]);
  604. $actions = DB::getQueryLog();
  605. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  606. $namemMod = $this->functionsController->joinName($usrMod->USUA_NOMB, $usrMod->USUA_APPA, $usrMod->USUA_APMA);
  607. $idac = $this->functionsController->registerActivity(
  608. $user['linea'],
  609. $this->moduleCode,
  610. 'S002V01F01ADUS',
  611. 'S002V01P01COUS',
  612. 'Consulta',
  613. "El usuario $name (" . $usr->USUA_IDUS . ") consultó los usuarios registrados.",
  614. $idUser,
  615. $nowStr,
  616. 'S002V01S01GEUS'
  617. );
  618. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $user['linea']);
  619. return $this->responseController->makeResponse(false, "EXITO: Actualización correcta.");
  620. }
  621. public function deleteUser(Request $request){
  622. DB::enableQueryLog();
  623. $validator = Validator::make($request->all(), [
  624. 'id' => 'required|string',
  625. 'id_user' => 'required|string',
  626. 'linea' => 'required|integer'
  627. ]);
  628. if($validator->fails()){
  629. return $this->responseController->makeResponse(
  630. true,
  631. "Se encontraron uno o más errores.",
  632. $this->responseController->makeErrors(
  633. $validator->errors()->messages()
  634. ),
  635. 401
  636. );
  637. }
  638. $user = $request->all();
  639. $idUser = $this->encryptionController->decrypt($user['id']);
  640. if(!$idUser){
  641. return $this->responseController->makeResponse(true, "El id del usuario que desea eliminar no está encriptado correctamente", [], 400);
  642. }
  643. $usr = DB::table('S002V01TUSUA')->where([
  644. ['USUA_IDUS', '=', $idUser],
  645. ['USUA_NULI', '=', $user['linea']]
  646. ])->first();
  647. if(is_null($usr)){
  648. return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
  649. }
  650. $idUserMod = $this->encryptionController->decrypt($user['id_user']);
  651. if(!$idUserMod){
  652. return $this->responseController->makeResponse(true, "El id del usuario que elimina no está encriptado correctamente", [], 400);
  653. }
  654. if($idUser == $idUserMod){
  655. return $this->responseController->makeResponse(true, "El usuario no puede eliminarse a sí mismo", [], 401);
  656. }
  657. $usrMod = DB::table('S002V01TUSUA')->where([
  658. ['USUA_IDUS', '=', $idUserMod],
  659. ['USUA_NULI', '=', $user['linea']]
  660. ])->first();
  661. if(is_null($usrMod)){
  662. return $this->responseController->makeResponse(true, 'El usuario que desea eliminar no está registrado', [], 404);
  663. }
  664. $nowStr = Carbon::now('America/Mexico_city')->toDateTimeString();
  665. DB::table('S002V01TUSUA')->where('USUA_IDUS', '=', $idUser)->update([
  666. 'USUA_ESTA' => 'Eliminado',
  667. 'USUA_USMO' => $idUserMod,
  668. 'USUA_FEMO' => $nowStr
  669. ]);
  670. $actions = DB::getQueryLog();
  671. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  672. $nameMod = $this->functionsController->joinName($usrMod->USUA_NOMB, $usrMod->USUA_APPA, $usrMod->USUA_APMA);
  673. $idac = $this->functionsController->registerActivity(
  674. $user['linea'],
  675. $this->moduleCode,
  676. 'S002V01F04ELUS',
  677. '-',
  678. 'Eliminación',
  679. "El usuario $name (" . $usr->USUA_IDUS . ") eleimnó al usuario $nameMod (" . $usrMod->USUA_IDUS . ").",
  680. $idUser,
  681. $nowStr,
  682. 'S002V01S01GEUS'
  683. );
  684. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $user['linea']);
  685. return $this->responseController->makeResponse(false, "EXITO: Actualización correcta.");
  686. }
  687. public function getModules($idUser, $line){
  688. DB::enableQueryLog();
  689. $idUser = $this->encryptionController->shortDec($idUser);
  690. if(!$idUser){
  691. return $this->responseController->makeResponse(true, 'El ID del usuaio que realizó la solicitud no está encriptado correctamente', [], 400);
  692. }
  693. $usr = DB::table('S002V01TUSUA')->where([
  694. ['USUA_IDUS', '=', $idUser],
  695. ['USUA_NULI', '=', $line]
  696. ])->first();
  697. if(is_null($usr)){
  698. return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
  699. }
  700. $modules = DB::table('S002V01TMODU')->select(
  701. 'MODU_IDMO as IDMODULO',
  702. 'MODU_NOMO as NOMBREMODULO',
  703. 'MODU_ICON as ICONOMODULO',
  704. )->where('MODU_NULI', '=', $line)->get()->all();
  705. $actions = DB::getQueryLog();
  706. $nowStr = Carbon::now('America/Mexico_city')->toDateTimeString();
  707. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  708. $idac = $this->functionsController->registerActivity(
  709. $line,
  710. '-',
  711. '-',
  712. '-',
  713. 'Consulta',
  714. "El usuario $name (" . $usr->USUA_IDUS . ") consultó los módulos del sistema.",
  715. $idUser,
  716. $nowStr
  717. );
  718. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
  719. return $this->responseController->makeresponse(false, "EXITO", $modules);
  720. }
  721. public function getMenus($idMod, $idSub, $idUser, $line){
  722. DB::enableQueryLog();
  723. $idUser = $this->encryptionController->shortDec($idUser);
  724. if(!$idUser){
  725. return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la solicitud no está encriptado correctamente', [], 400);
  726. }
  727. $usr = DB::table('S002V01TUSUA')->where([
  728. ['USUA_IDUS', '=', $idUser],
  729. ['USUA_NULI', '=', $line]
  730. ])->first();
  731. if(is_null($usr)){
  732. return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
  733. }
  734. $idMod = $this->encryptionController->shortDec($idMod);
  735. if(!$idMod){
  736. return $this->responseController->makeResponse(true, 'El ID del módulo no fue encriptado correctamente', [], 400);
  737. }
  738. var_dump($idMod);
  739. /*$module = $this->encryptionController->decrypt($module);
  740. $submodule = $this->encryptionController->decrypt($submodule);
  741. if(!$module){
  742. return $this->responseController->makeResponse(true, "El módulo no está encriptado correctamente", [], 400);
  743. }else if(!$submodule){
  744. return $this->responseController->makeResponse(true, "El submódulo no está encriptado correctamente", [], 400);
  745. }
  746. $menus = DB::table('S002V01TMENU')->select(
  747. 'MENU_IDME AS IDMENU',
  748. 'MENU_NOMB AS NOMBREMENU'
  749. )->where([
  750. ['MENU_IDMO', '=', $module],
  751. ['MENU_IDSM', '=', $submodule]
  752. ])->get();
  753. $actions = DB::getQueryLog();
  754. $nowStr = Carbon::now('America/Mexico_city')->toDateTimeString();
  755. return $this->responseController->makeresponse(false, "EXITO", $menus);*/
  756. }
  757. public function getMenu($idUser, $line){
  758. $idUser = $this->encryptionController->shortDec($idUser);
  759. if(!$idUser){
  760. return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la solicitud no está encriptado correctamente', [], 400);
  761. }
  762. $modules = DB::table('S002V01TMODU')->select(
  763. 'MODU_IDMO as IDMODULO',
  764. 'MODU_NOMO as NOMBREMODULO',
  765. 'MODU_ICON as ICONOMODULO',
  766. )->get()->all();
  767. $mods = [];
  768. foreach($modules as $module){
  769. $submodules = DB::table('S002V01TSUBM')->select(
  770. 'SUBM_IDSM as IDSUBMODULO',
  771. 'SUBM_NOMB as NOMBRESUBMODULO',
  772. 'SUBM_ICON AS ICONOSUBMODULO'
  773. )->where('SUBM_IDMO', '=', $module->IDMODULO)->get()->all();
  774. $menusMod = DB::table('S002V01TFUNC')->select(
  775. 'FUNC_IDFU AS IDFUNCION',
  776. 'FUNC_NOMB AS NOMBREFUNCION',
  777. 'FUNC_ICON AS ICONOFUNCION'
  778. )->where([
  779. ['FUNC_IDMO', '=', $module->IDMODULO],
  780. ['FUNC_IDSM', '=', null]
  781. ])->get()->all();
  782. $module->SUBMODULES = [];
  783. foreach($submodules as $submodule){
  784. $menus = DB::table('S002V01TFUNC')->select(
  785. 'FUNC_IDFU AS IDFUNCION',
  786. 'FUNC_NOMB AS NOMBREFUNCION',
  787. 'FUNC_ICON AS ICONOFUNCION'
  788. )->where([
  789. ['FUNC_IDMO', '=', $module->IDMODULO],
  790. ['FUNC_IDSM', '=', $submodule->IDSUBMODULO]
  791. ])->get()->all();
  792. $menuInd = 0;
  793. foreach($menus as $funcion){
  794. $pantallas = DB::table('S002V01TPANT')->select(
  795. 'PANT_IDPA AS IDPANTALLA',
  796. 'PANT_NOMB AS NOMBREPANTALLA'
  797. )->where([
  798. ['PANT_IDFU', '=', $funcion->IDFUNCION],
  799. ['PANT_NULI', '=', $line]
  800. ])->get()->all();
  801. $menus[$menuInd]->PANTALLAS = $pantallas;
  802. $menuInd++;
  803. }
  804. $submodule->FUNCIONES = [];
  805. foreach($menus as $menu){
  806. $submodule->FUNCIONES[] = $menu;
  807. }
  808. $module->SUBMODULES[] = $submodule;
  809. }
  810. $menModInd = 0;
  811. foreach($menusMod as $funcion){
  812. $pantallas = DB::table('S002V01TPANT')->select(
  813. 'PANT_IDPA AS IDPANTALLA',
  814. 'PANT_NOMB AS NOMBREPANTALLA'
  815. )->where([
  816. ['PANT_IDFU', '=', $funcion->IDFUNCION],
  817. ['PANT_NULI', '=', $line]
  818. ])->get()->all();
  819. $menusMod[$menModInd]->PANTALLAS = $pantallas;
  820. $menModInd++;
  821. }
  822. $module->MENUS = $menusMod;
  823. $mods[] = $module;
  824. }
  825. return $this->responseController->makeResponse(false, "EXITO", $mods);
  826. }
  827. public function buildInitialPermissions($idUser, $line){
  828. DB::enableQueryLog();
  829. $idUser = $this->encryptionController->shortDec($idUser);
  830. if(!$idUser){
  831. return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la solicitud no está encriptado correctamente', [], 400);
  832. }
  833. $usr = DB::table('S002V01TUSUA')->where([
  834. ['USUA_IDUS', '=', $idUser],
  835. ['USUA_NULI', '=', $line],
  836. ])->first();
  837. if(is_null($usr)){
  838. return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no existe', [], 400);
  839. }
  840. $permissions = [];
  841. //Se obtienen todos los modulos
  842. $modules = DB::table('S002V01TMODU')->where('MODU_NULI', '=', $line)->get()->all();
  843. //se consultan los submodulos de cada modulo
  844. foreach($modules as $module){
  845. $submodules = DB::table('S002V01TSUBM')->where([
  846. ['SUBM_IDMO', '=', $module->MODU_IDMO],
  847. ['SUBM_NULI', '=', $line]
  848. ])->get()->all();
  849. $permissionsPerSubmodule = [];
  850. $hasSubmodules = false;
  851. foreach($submodules as $submodule){
  852. //Se consultan las funciones
  853. $functions = DB::table('S002V01TFUNC')->where([
  854. ['FUNC_IDMO', '=', $module->MODU_IDMO],
  855. ['FUNC_IDSM', '=', $submodule->SUBM_IDSM],
  856. ['FUNC_NULI', '=', $line],
  857. ])->get()->all();
  858. $permissionsPerFunction = [];
  859. foreach($functions as $function){
  860. $screens = DB::table('S002V01TPANT')->where([
  861. ['PANT_IDFU', '=', $function->FUNC_IDFU],
  862. ['PANT_NULI', '=', $line],
  863. ])->get()->all();
  864. $permissionsPerScreen = [];
  865. foreach($screens as $screen){
  866. $permissionsPerScreen[] = [
  867. 'id' => $screen->PANT_IDPA,
  868. 'name' => $screen->PANT_NOMB,
  869. 'access' => 0
  870. ];
  871. }
  872. $permissionsPerFunction[] = [
  873. 'id' => $function->FUNC_IDFU,
  874. 'name' => $function->FUNC_NOMB,
  875. 'access' => 0,
  876. 'children' => $permissionsPerScreen,
  877. ];
  878. }
  879. $permissionsPerSubmodule[] = [
  880. 'id' => $submodule->SUBM_IDSM,
  881. 'name' => $submodule->SUBM_NOMB,
  882. 'access' => 0,
  883. 'children' => $permissionsPerFunction,
  884. ];
  885. $hasSubmodules = true;
  886. }
  887. //Se consultan las funciones
  888. $functions = DB::table('S002V01TFUNC')->where([
  889. ['FUNC_IDMO', '=', $module->MODU_IDMO],
  890. ['FUNC_IDSM', '=', null],
  891. ['FUNC_NULI', '=', $line],
  892. ])->get()->all();
  893. $permissionsPerFunction = [];
  894. foreach($functions as $function){
  895. $screens = DB::table('S002V01TPANT')->where([
  896. ['PANT_IDFU', '=', $function->FUNC_IDFU],
  897. ['PANT_NULI', '=', $line],
  898. ])->get()->all();
  899. $permissionsPerScreen = [];
  900. foreach($screens as $screen){
  901. $permissionsPerScreen[] = [
  902. 'id' => $screen->PANT_IDPA,
  903. 'name' => $screen->PANT_NOMB,
  904. 'access' => 0
  905. ];
  906. }
  907. $permissionsPerFunction[] = [
  908. 'id' => $function->FUNC_IDFU,
  909. 'name' => $function->FUNC_NOMB,
  910. 'access' => 0,
  911. 'children' => $permissionsPerScreen,
  912. ];
  913. }
  914. $permissionsArr = [];
  915. foreach($permissionsPerSubmodule as $perm){ $permissionsArr[] = $perm; }
  916. foreach($permissionsPerFunction as $perm){ $permissionsArr[] = $perm; }
  917. $permissions[] = [
  918. 'id' => $module->MODU_IDMO,
  919. 'name' => $module->MODU_NOMO,
  920. 'access' => 0,
  921. 'children' => $permissionsArr,
  922. ];
  923. }
  924. $actions = DB::getQueryLog();
  925. $nowStr = Carbon::now('America/Mexico_city')->toDateTimeString();
  926. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  927. $idac = $this->functionsController->registerActivity(
  928. $line,
  929. $this->moduleCode,
  930. 'S002V01F01ADPE',
  931. 'S002V01P02REPE',
  932. 'Consulta',
  933. "El usuario $name (" . $usr->USUA_IDUS . ") consultó el arreglo de permisos iniciales.",
  934. $idUser,
  935. $nowStr,
  936. 'S002V01S02GEPE'
  937. );
  938. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
  939. return $this->responseController->makeresponse(false, "EXITO", ['permissions' => $permissions]);
  940. }
  941. public function updateProfile(Request $request){
  942. DB::enableQueryLog();
  943. $validator = Validator::make($request->all(), [
  944. 'id' => 'required|string',
  945. 'permissions' => 'required|json',
  946. 'name' => 'required|string|max:50',
  947. 'id_user' => 'required|string',
  948. 'linea' => 'required|integer'
  949. ]);
  950. if($validator->fails()){
  951. return $this->responseController->makeResponse(
  952. true,
  953. "Se encontraron uno o más errores.",
  954. $this->responseController->makeErrors(
  955. $validator->errors()->messages()
  956. ),
  957. 401
  958. );
  959. }
  960. $info = $request->all();
  961. $idUser = $this->encryptionController->decrypt($info['id_user']);
  962. if(!$idUser){
  963. return $this->responseController->makeResponse(true, "El ID del usuario que realizó la solicitud no fue encriptado correctamente", [], 400);
  964. }
  965. $usr = DB::table('S002V01TUSUA')->where([
  966. ['USUA_IDUS', '=', $idUser],
  967. ['USUA_NULI', '=', $info['linea']],
  968. ])->first();
  969. if(is_null($usr)){
  970. return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no existe', [], 404);
  971. }
  972. $idPerf = $this->encryptionController->decrypt($info['id']);
  973. if(!$idPerf){
  974. return $this->responseController->makeResponse(true, "El ID del perfil solicitado no fue encriptado correctamente", [], 400);
  975. }
  976. $perf = DB::table('S002V01TPERF')->where([
  977. ['PERF_IDPE', '=', $idPerf],
  978. ['PERF_NULI', '=', $info['linea']],
  979. ])->first();
  980. if(is_null($perf)){
  981. return $this->responseController->makeResponse(true, 'El perfil solicitado no existe', [], 400);
  982. }
  983. $nowStr = Carbon::now('America/Mexico_city')->toDateTimeString();
  984. DB::table('S002V01TPERF')->where([
  985. ['PERF_IDPE', '=', $idPerf],
  986. ['PERF_NULI', '=', $info['linea']],
  987. ])->update([
  988. 'PERF_PERM' => $info['permissions'],
  989. 'PERF_NOPE' => $info['name'],
  990. 'PERF_USMO' => $idUser,
  991. 'PERF_FEMO' => $nowStr
  992. ]);
  993. $actions = DB::getQueryLog();
  994. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  995. $idac = $this->functionsController->registerActivity(
  996. $info['linea'],
  997. $this->moduleCode,
  998. 'S002V01F01ADPE',
  999. 'S002V01P02REPE',
  1000. 'Actualización',
  1001. "El usuario $name (" . $usr->USUA_IDUS . ") actualizó el perfil " . $perf->PERF_NOPE . "(" . $perf->PERF_NOPE . ").",
  1002. $idUser,
  1003. $nowStr,
  1004. 'S002V01S02GEPE'
  1005. );
  1006. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $info['linea']);
  1007. return $this->responseController->makeResponse(false, "EXITO: Actualización correcta.");
  1008. }
  1009. public function deleteProfile(Request $request){
  1010. DB::enableQueryLog();
  1011. $validator = Validator::make($request->all(), [
  1012. 'id' => 'required|string',
  1013. 'id_user' => 'required|string',
  1014. 'linea' => 'required|integer'
  1015. ]);
  1016. if($validator->fails()){
  1017. return $this->responseController->makeResponse(
  1018. true,
  1019. "Se encontraron uno o más errores.",
  1020. $this->responseController->makeErrors(
  1021. $validator->errors()->messages()
  1022. ),
  1023. 401
  1024. );
  1025. }
  1026. $profile = $request->all();
  1027. $idUser = $this->encryptionController->decrypt($profile['id_user']);
  1028. if(!$idUser){
  1029. return $this->responseController->makeResponse(true, "El ID del usuario que solicitó la acción no está encriptado correctamente", [], 401);
  1030. }
  1031. $usr = DB::table('S002V01TUSUA')->where([
  1032. ['USUA_IDUS', '=', $idUser],
  1033. ['USUA_NULI', '=', $profile['linea']],
  1034. ])->first();
  1035. if(is_null($usr)){
  1036. return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no existe', [], 404);
  1037. }
  1038. $idProf = $this->encryptionController->decrypt($profile['id']);
  1039. if(!$idProf){
  1040. return $this->responseController->makeResponse(true, "El ID del perfil seleccionado no está encriptado correctamente", [], 401);
  1041. }
  1042. $perf = DB::table('S002V01TPERF')->where([
  1043. ['PERF_IDPE', '=', $idProf],
  1044. ['PERF_NULI', '=', $profile['linea']],
  1045. ])->first();
  1046. if(is_null($perf)){
  1047. return $this->responseController->makeResponse(true, 'El perfil solicitado no existe', [], 404);
  1048. }
  1049. $users = DB::table('S002V01TUSUA')->where([
  1050. ['USUA_PERF', '=', $idProf],
  1051. ['USUA_NULI', '=', $profile['linea']]
  1052. ])->get()->all();
  1053. if(count($users) > 0){
  1054. return $this->responseController->makeResponse(true, "El perfil seleccionado no se puede eliminar porque hay usuarios asociados a él.", [], 401);
  1055. }
  1056. $nowStr = Carbon::now('America/Mexico_city')->toDateTimeString();
  1057. DB::table('S002V01TPERF')->where([
  1058. ['PERF_IDPE', '=', $idProf],
  1059. ['PERF_NULI', '=', $profile['linea']],
  1060. ])->update([
  1061. 'PERF_ESTA' => 'Eliminado',
  1062. 'PERF_USMO' => $idUser,
  1063. 'PERF_FEMO' => $nowStr
  1064. ]);
  1065. $actions = DB::getQueryLog();
  1066. $nowStr = Carbon::now('America/Mexico_city')->toDateTimeString();
  1067. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  1068. $idac = $this->functionsController->registerActivity(
  1069. $profile['linea'],
  1070. $this->moduleCode,
  1071. 'S002V01F01ADPE',
  1072. '-',
  1073. 'Eliminación',
  1074. "El usuario $name (" . $usr->USUA_IDUS . ") eliminó el perfil " . $perf->PERF_NOPE . "($idProf).",
  1075. $idUser,
  1076. $nowStr,
  1077. 'S002V01S02GEPE'
  1078. );
  1079. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $profile['linea']);
  1080. return $this->responseController->makeResponse(false, "EXITO: Eliminación correcta.");
  1081. }
  1082. public function createProfile(Request $request){
  1083. DB::enableQueryLog();
  1084. $validator = Validator::make($request->all(), [
  1085. 'id_user' => 'required|string',
  1086. 'linea' => 'required|integer',
  1087. 'name' => 'required|string|min:8|max:50',
  1088. 'permissions' => 'required|json'
  1089. ]);
  1090. if($validator->fails()){
  1091. return $this->responseController->makeResponse(
  1092. true,
  1093. "Se encontraron uno o más errores.",
  1094. $this->responseController->makeErrors(
  1095. $validator->errors()->messages()
  1096. ),
  1097. 401
  1098. );
  1099. }
  1100. $profile = $request->all();
  1101. $idUser = $this->encryptionController->decrypt($profile['id_user']);
  1102. if(!$idUser){
  1103. return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la solicitud no está encriptado correctamente.', [], 400);
  1104. }
  1105. $usr = DB::table('S002V01TUSUA')->where([
  1106. ['USUA_IDUS', '=', $idUser],
  1107. ['USUA_NULI', '=', $profile['linea']]
  1108. ])->first();
  1109. if(is_null($usr)){
  1110. return $this->responseController->makeResponse(true, 'El usuario que realizó la solicitud no está registrado', [], 404);
  1111. }else if($usr->USUA_ESTA == 'Eliminado'){
  1112. return $this->responseController->makeResponse(true, "El usuario que realiza el registro está eliminado.", [], 401);
  1113. }else if($usr->USUA_ESTA == 'Inactivo'){
  1114. return $this->responseController->makeResponse(true, "El usuario que realiza el registro está boloqueado.", [], 401);
  1115. }
  1116. $nowStr = Carbon::now('America/Mexico_city')->toDateTimeString();
  1117. $newPerf = DB::table('S002V01TPERF')->insertGetId([
  1118. 'PERF_NULI' => $profile['linea'],
  1119. 'PERF_NOPE' => $profile['name'],
  1120. 'PERF_PERM' => $profile['permissions'],
  1121. 'PERF_USRE' => $idUser,
  1122. 'PERF_FERE' => $nowStr
  1123. ]);
  1124. $actions = DB::getQueryLog();
  1125. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  1126. $idac = $this->functionsController->registerActivity(
  1127. $profile['linea'],
  1128. $this->moduleCode,
  1129. 'S002V01F01ADPE',
  1130. 'S002V01P02REPE',
  1131. 'Registro',
  1132. "El usuario $name (" . $usr->USUA_IDUS . ") registró el perfil $profile[name] ($newPerf).",
  1133. $idUser,
  1134. $nowStr,
  1135. 'S002V01S02GEPE'
  1136. );
  1137. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $profile['linea']);
  1138. return $this->responseController->makeResponse(false, 'EXITO');
  1139. }
  1140. public function getModule($idMod, $idUser, $line){
  1141. DB::enableQueryLog();
  1142. $idMod = $this->encryptionController->shortDec($idMod);
  1143. if(!$idMod){
  1144. return $this->responseController->makeResponse(true, 'El módulo solicitado no fue encriptado correctamente', [], 400);
  1145. }
  1146. $idUser = $this->encryptionController->shortDec($idUser);
  1147. if(!$idUser){
  1148. return $this->responseController->makeResponse(true, 'El ID del usuaio que realizó la solicitud no está encriptado correctamente', [], 400);
  1149. }
  1150. $usr = DB::table('S002V01TUSUA')->where([
  1151. ['USUA_IDUS', '=', $idUser],
  1152. ['USUA_NULI', '=', $line]
  1153. ])->first();
  1154. if(is_null($usr)){
  1155. return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
  1156. }
  1157. $module = DB::table('S002V01TMODU')->select(
  1158. 'MODU_IDMO as IDMODULO',
  1159. 'MODU_NOMO as NOMBREMODULO',
  1160. )->where([
  1161. ['MODU_NULI', '=', $line],
  1162. ['MODU_IDMO', '=', $idMod]
  1163. ])->first();
  1164. $actions = DB::getQueryLog();
  1165. $nowStr = Carbon::now('America/Mexico_city')->toDateTimeString();
  1166. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  1167. $idac = $this->functionsController->registerActivity(
  1168. $line,
  1169. '-',
  1170. '-',
  1171. '-',
  1172. 'Consulta',
  1173. "El usuario $name (" . $usr->USUA_IDUS . ") consultó el módulo " . $idMod . " del sistema.",
  1174. $idUser,
  1175. $nowStr
  1176. );
  1177. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
  1178. return $this->responseController->makeresponse(false, "EXITO", [
  1179. 'NOMBREMODULO' => is_null($module) ? '-' : $module->NOMBREMODULO
  1180. ]);
  1181. }
  1182. public function getSubmodule($idMod, $idSub, $idUser, $line){
  1183. DB::enableQueryLog();
  1184. $idMod = $this->encryptionController->shortDec($idMod);
  1185. if(!$idMod){
  1186. return $this->responseController->makeResponse(true, 'El módulo no fue encriptado correctamente', [], 400);
  1187. }
  1188. $idSub = $this->encryptionController->shortDec($idSub);
  1189. if(!$idSub){
  1190. return $this->responseController->makeResponse(true, 'El submódulo no fue encriptado correctamente', [], 400);
  1191. }
  1192. $idUser = $this->encryptionController->shortDec($idUser);
  1193. if(!$idUser){
  1194. return $this->responseController->makeResponse(true, 'El id del usuario que consulta no fue encriptado correctamente', [], 400);
  1195. }
  1196. $usr = DB::table('S002V01TUSUA')->where([
  1197. ['USUA_IDUS', '=', $idUser],
  1198. ['USUA_NULI', '=', $line]
  1199. ])->first();
  1200. if(is_null($usr)){
  1201. return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
  1202. }
  1203. $submodule = DB::table('S002V01TSUBM')->select(
  1204. 'SUBM_IDSM as IDSUBMODULO',
  1205. 'SUBM_NOMB as NOMBRESUBMODULO',
  1206. )->where([
  1207. ['SUBM_NULI', '=', $line],
  1208. ['SUBM_IDSM', '=', $idSub],
  1209. ['SUBM_IDMO', '=', $idMod],
  1210. ])->first();
  1211. $actions = DB::getQueryLog();
  1212. $nowStr = Carbon::now('America/Mexico_city')->toDateTimeString();
  1213. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  1214. $idac = $this->functionsController->registerActivity(
  1215. $line,
  1216. '-',
  1217. '-',
  1218. '-',
  1219. 'Consulta',
  1220. "El usuario $name (" . $usr->USUA_IDUS . ") consultó el submódulo " . $idSub . " del sistema.",
  1221. $idUser,
  1222. $nowStr
  1223. );
  1224. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
  1225. return $this->responseController->makeresponse(false, "EXITO", [
  1226. 'NOMBRESUBMODULO' => is_null($submodule) ? '-' : $submodule->NOMBRESUBMODULO
  1227. ]);
  1228. }
  1229. public function getFunction($idMod, $idSub, $idFun, $idUser, $line){
  1230. DB::enableQueryLog();
  1231. $idMod = $this->encryptionController->shortDec($idMod);
  1232. if(!$idMod){
  1233. return $this->responseController->makeResponse(true, 'El módulo no fue encriptado correctamente', [], 400);
  1234. }
  1235. $idSub = $this->encryptionController->shortDec($idSub);
  1236. if(!$idSub){
  1237. return $this->responseController->makeResponse(true, 'El submódulo no fue encriptado correctamente', [], 400);
  1238. }
  1239. $idFun = $this->encryptionController->shortDec($idFun);
  1240. if(!$idFun){
  1241. return $this->responseController->makeResponse(true, 'La función no fue encriptada correctamente', [], 400);
  1242. }
  1243. $idUser = $this->encryptionController->shortDec($idUser);
  1244. if(!$idUser){
  1245. return $this->responseController->makeResponse(true, 'El id del usuario que consulta no fue encriptado correctamente', [], 400);
  1246. }
  1247. $usr = DB::table('S002V01TUSUA')->where([
  1248. ['USUA_IDUS', '=', $idUser],
  1249. ['USUA_NULI', '=', $line]
  1250. ])->first();
  1251. if(is_null($usr)){
  1252. return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
  1253. }
  1254. $function = DB::table('S002V01TFUNC')->select(
  1255. 'FUNC_IDFU as IDFUNCION',
  1256. 'FUNC_NOMB as NOMBREFUNCION',
  1257. )->where([
  1258. ['FUNC_NULI', '=', $line],
  1259. ['FUNC_IDFU', '=', $idFun],
  1260. ['FUNC_IDMO', '=', $idMod],
  1261. ['FUNC_IDSM', '=', $idSub],
  1262. ])->first();
  1263. $actions = DB::getQueryLog();
  1264. $nowStr = Carbon::now('America/Mexico_city')->toDateTimeString();
  1265. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  1266. $idac = $this->functionsController->registerActivity(
  1267. $line,
  1268. '-',
  1269. '-',
  1270. '-',
  1271. 'Consulta',
  1272. "El usuario $name (" . $usr->USUA_IDUS . ") consultó la función " . $idFun . " del sistema.",
  1273. $idUser,
  1274. $nowStr
  1275. );
  1276. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
  1277. return $this->responseController->makeresponse(false, "EXITO", [
  1278. 'NOMBREFUNCION' => is_null($function) ? '-' : $function->NOMBREFUNCION
  1279. ]);
  1280. }
  1281. public function getScreen($idFun, $idPan, $idUser, $line){
  1282. DB::enableQueryLog();
  1283. $idFun = $this->encryptionController->shortDec($idFun);
  1284. if(!$idFun){
  1285. return $this->responseController->makeResponse(true, 'La función no fue encriptada correctamente', [], 400);
  1286. }
  1287. $idPan = $this->encryptionController->shortDec($idPan);
  1288. if(!$idPan){
  1289. return $this->responseController->makeResponse(true, 'La pantalla no fue encriptada correctamente', [], 400);
  1290. }
  1291. $idUser = $this->encryptionController->shortDec($idUser);
  1292. if(!$idUser){
  1293. return $this->responseController->makeResponse(true, 'El id del usuario que consulta no fue encriptado correctamente', [], 400);
  1294. }
  1295. $usr = DB::table('S002V01TUSUA')->where([
  1296. ['USUA_IDUS', '=', $idUser],
  1297. ['USUA_NULI', '=', $line]
  1298. ])->first();
  1299. if(is_null($usr)){
  1300. return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
  1301. }
  1302. $screen = DB::table('S002V01TPANT')->select(
  1303. 'PANT_IDFU as IDPANTALLA',
  1304. 'PANT_NOMB as NOMBREPANTALLA',
  1305. )->where([
  1306. ['PANT_NULI', '=', $line],
  1307. ['PANT_IDPA', '=', $idPan],
  1308. ['PANT_IDFU', '=', $idFun],
  1309. ])->first();
  1310. $actions = DB::getQueryLog();
  1311. $nowStr = Carbon::now('America/Mexico_city')->toDateTimeString();
  1312. $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
  1313. $idac = $this->functionsController->registerActivity(
  1314. $line,
  1315. '-',
  1316. '-',
  1317. '-',
  1318. 'Consulta',
  1319. "El usuario $name (" . $usr->USUA_IDUS . ") consultó la pantalla " . $idPan . " del sistema.",
  1320. $idUser,
  1321. $nowStr
  1322. );
  1323. $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
  1324. return $this->responseController->makeresponse(false, "EXITO", [
  1325. 'NOMBREPANTALLA' => is_null($screen) ? '-' : $screen->NOMBREPANTALLA
  1326. ]);
  1327. }
  1328. }