UsersProfilesController.php 62 KB

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