responseController = new ResponseController(); $this->encryptionController = new EncryptionController(); $this->functionsController = new FunctionsController(); } public function getUsers($idUser, $line){ DB::enableQueryLog(); $idUser = $this->encryptionController->decrypt($idUser); if(!$idUser){ return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la solicitud no está encriptado correctamente', [], 400); } $usr = DB::table('S002V01TUSUA')->where([ ['USUA_IDUS', '=', $idUser], ['USUA_NULI', '=', $line], ])->first(); if(is_null($usr)){ return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no existe', [], 400); } $users = DB::table('S002V01TUSUA')->select([ 'USUA_IDUS as IDUSUARIO', 'USUA_NOMB as NOMBRE', 'USUA_APPA as APEPAT', 'USUA_APMA as APEMAT', 'USUA_COEL as EMAIL', DB::raw("CONCAT(PERF_NOPE, ' (', PERF_IDPE, ')') AS PERFIL"), DB::raw("IF(ISNULL(PACO_IDPC), FALSE, TRUE) AS TIENE_PANEL"), DB::raw("IF(ISNULL(PACO_IDPC), '-', CONCAT(PACO_NPCO, ' (', PACO_IDPC, ')')) AS PANEL_CONTROL"), 'USUA_ESTA as ESTATUS', 'BIAC_FECO as ULCON', 'USUA_ORGA as ORGANIGRAMA', ])->join('S002V01TPERF', 'USUA_PERF', '=', 'PERF_IDPE') ->leftJoin('S002V01TBIAC', 'USUA_ULCO', '=', 'BIAC_IDCO') ->leftJoin('S002V01TPACO', 'USUA_PCRE', '=', 'PACO_IDPC') ->where('USUA_NULI', '=', $line)->get()->all(); foreach($users as $key=>$user){ $user->IDUSUARIO = $this->encryptionController->encrypt($user->IDUSUARIO); $user->TIENE_PANEL = $user->TIENE_PANEL == 1; if(is_null($user->ORGANIGRAMA)){ $user->ORGANIGRAMA = '[]'; }else{ $organization = json_decode($user->ORGANIGRAMA, true); foreach($organization as $index=>$item){ $idChiefEnc = $this->encryptionController->encrypt($item['id_chief']); $item['id_chief'] = $idChiefEnc; $organization[$index] = $item; } $user->ORGANIGRAMA = json_encode($organization); } $users[$key] = $user; } $now = $this->functionsController->now(); $nowStr = $now->toDateTimeString(); $actions = DB::getQueryLog(); $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA); $idac = $this->functionsController->registerActivity( $line, $this->moduleCode, 'S002V01F01ADUS', 'S002V01P01COUS', 'Consulta', "El usuario $name (" . $usr->USUA_IDUS . ") consultó los usuarios registrados.", $idUser, $nowStr, 'S002V01S01GEUS' ); $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line); return $this->responseController->makeresponse(false, "EXITO", $users); } public function configureUserOrganization(Request $request){ DB::enableQueryLog(); $validator = Validator::make($request->all(), [ 'id_user' => 'required|string', 'linea' => 'required|integer', 'organization' => 'required|json', 'configured_user' => 'required|string', ]); if($validator->fails()){ return $this->responseController->makeResponse( true, "Se encontraron uno o más errores.", $this->responseController->makeErrors( $validator->errors()->messages() ), 401 ); } $form = $request->all(); $idUser = $this->encryptionController->decrypt($form['id_user']); if(!$idUser){ return $this->responseController->makeResponse(true, "El ID del usuario que realizó la solicitud no está encriptado correctamente.", [], 400); } $user = DB::table('S002V01TUSUA')->where([ ['USUA_IDUS', '=', $idUser], ['USUA_NULI', '=', $form['linea']], ])->first(); if(is_null($user)){ return $this->responseController->makeResponse(true, 'El usuario usuario que realizó la solicitud no exise.', [], 404); } $idConfiguredUser = $this->encryptionController->decrypt($form['configured_user']); if(!$idConfiguredUser){ return $this->responseController->makeResponse(true, "El ID del usuario que está configurando no fue encriptado correctamente.", [], 400); }else if($idUser == $idConfiguredUser){ return $this->responseController->makeResponse(true, "El usuario no puede configurar su propio organigrama.", [], 400); } $configuredUser = DB::table('S002V01TUSUA')->where([ ['USUA_IDUS', '=', $idConfiguredUser], ['USUA_NULI', '=', $form['linea']], ])->first(); if(is_null($configuredUser)){ return $this->responseController->makeResponse(true, 'El usuario usuario que desea configurar no exise.', [], 404); }else if($configuredUser->USUA_ESTA == 'Eliminado'){ return $this->responseController->makeResponse(true, 'El usuario usuario que desea configurar esta eliminado.', [], 400); } $organization = json_decode($form['organization'], true); if(!is_array($organization)){ return $this->responseController->makeResponse(true, 'La configuración del organigrama debe ser un arreglo.', [], 400); }else if(count($organization) < 1){ return $this->responseController->makeResponse(true, 'El arreglo de configuración del organigrama debe contener al menos un elemento.', [], 400); } foreach($organization as $index=>$item){ if(!is_array($item)){ return $this->responseController->makeResponse(true, "El elemento en la posición $index del arreglo de configuración del organigrama no es un arreglo.", [], 400); }else if(!array_key_exists("level", $item) || !array_key_exists("id_chief", $item)){ return $this->responseController->makeResponse(true, "El elemento en la posición $index del arreglo de configuración del organigrama tiene un formato inválido.", [], 400); } $idChiefDec = $this->encryptionController->decrypt($item['id_chief']); if(!$idChiefDec){ return $this->responseController->makeResponse(true, "El ID del jefe del elemento en la posición $index del arreglo de configuración del organigrama no fue encriptado correctamente.", [], 400); }else if($idConfiguredUser == $idChiefDec){ return $this->responseController->makeResponse(true, "El ID del jefe del elemento en la posición $index del arreglo de configuración del organigrama no puede ser igual al ID del usuario que está configurando.", [], 400); } $item['id_chief'] = $idChiefDec; $organization[$index] = $item; } $organizationStr = json_encode($organization); $now = $this->functionsController->now(); $nowStr = $now->toDateTimeString(); DB::table('S002V01TUSUA')->where([ ['USUA_IDUS', '=', $idConfiguredUser], ['USUA_NULI', '=', $form['linea']] ])->update([ 'USUA_ORGA' => $organizationStr, 'USUA_USMO' => $idUser, 'USUA_FEMO' => $nowStr ]); $actions = DB::getQueryLog(); $name = $this->functionsController->joinName($user->USUA_NOMB, $user->USUA_APPA, $user->USUA_APMA); $nameMod = $this->functionsController->joinName($configuredUser->USUA_NOMB, $configuredUser->USUA_APPA, $configuredUser->USUA_APMA); $idac = $this->functionsController->registerActivity( $form['linea'], $this->moduleCode, 'S002V01F01ADUS', 'S002V01P02RAUS', 'Actualización', "El usuario $name (" . $user->USUA_IDUS . ") actualizó el organigrama del usuario $nameMod (" . $configuredUser->USUA_IDUS . ").", $idUser, $nowStr, 'S002V01S01GEUS' ); $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $form['linea']); return $this->responseController->makeResponse(false, "EXITO: Actualización correcta."); } public function getUser($id, $idUser, $line){ DB::enableQueryLog(); $idUser = $this->encryptionController->decrypt($idUser); if(!$idUser){ return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la solicitud no fue encriptado correctamente.', [], 400); } $usr = DB::table('S002V01TUSUA')->where([ ['USUA_IDUS', '=', $idUser], ['USUA_NULI', '=', $line], ])->first(); if(is_null($usr)){ return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no existe.', [], 400); } $id = $this->encryptionController->decrypt($id); if(!$id){ return $this->responseController->makeResponse(true, "El ID del usuario consultado no está encriptado correctamente.", [], 400); } $user = DB::table('S002V01TUSUA')->select( 'USUA_IDUS AS IDUSUARIO', 'USUA_NOMB AS NOMBRE', 'USUA_APPA AS APEPAT', 'USUA_APMA AS APEMAT', 'USUA_COEL AS EMAIL', 'USUA_PERF AS PERFIL', 'PERF_NOPE AS PERFNOMB', 'USUA_ESTA AS ESTATUS', )->where([ ['USUA_IDUS', '=', $id], ['USUA_NULI', '=', $line], ])->join('S002V01TPERF', 'PERF_IDPE', '=', 'USUA_PERF')->first(); if(is_null($user)){ return $this->responseController->makeResponse(true, "El usuario consultado no existe.", [], 404); } $user->IDUSUARIO = $this->encryptionController->encrypt($user->IDUSUARIO); $user->PERFIL = $this->encryptionController->encrypt($user->PERFIL); $now = $this->functionsController->now(); $nowStr = $now->toDateTimeString(); $actions = DB::getQueryLog(); $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA); $nameCons = $this->functionsController->joinName($user->NOMBRE, $user->APEPAT, $user->APEMAT); $idac = $this->functionsController->registerActivity( $line, $this->moduleCode, 'S002V01F01ADUS', 'S002V01P01COUS', 'Consulta', "El usuario $name (" . $usr->USUA_IDUS . ") consultó al usuario $nameCons (" . $user->IDUSUARIO . ").", $idUser, $nowStr, 'S002V01S01GEUS' ); $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line); return $this->responseController->makeresponse(false, "EXITO", $user); } public function getProfiles($idUser, $line){ DB::enableQueryLog(); $idUser = $this->encryptionController->decrypt($idUser); if(!$idUser){ return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la solicitud no está encriptado correctamente', [], 400); } $usr = DB::table('S002V01TUSUA')->where([ ['USUA_IDUS', '=', $idUser], ['USUA_NULI', '=', $line] ])->first(); if(is_null($usr)){ return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404); } $profiles = DB::table('S002V01TPERF')->select( 'PERF_IDPE AS IDPERFIL', 'PERF_NOPE AS NOMBREPERFIL', 'PERF_PERM AS PERMISOS', 'PERF_ESTA AS ESTADO', 'PERF_USRE AS USRREG', 'PERF_FERE AS FECREG', 'PERF_USMO AS USRMOD', 'PERF_FEMO AS FECMOD', )->where('PERF_NULI', '=', $line)->orderBy('PERF_IDPE', 'desc')->get()->all(); foreach($profiles as $key=>$profile){ $relatedUsers = DB::table('S002V01TUSUA')->where([ ['USUA_NULI', '=', $line], ['USUA_PERF', '=', $profile->IDPERFIL] ])->get()->all(); $profile->IDPERFIL = $this->encryptionController->encrypt($profile->IDPERFIL); $profile->PERMISOS = $this->encryptionController->encrypt($profile->PERMISOS); $usrReg = DB::table('S002V01TUSUA')->where([ ['USUA_NULI', '=', $line], ['USUA_IDUS', '=', $profile->USRREG] ])->first(); $usrRegName = $this->functionsController->joinName($usrReg->USUA_NOMB, $usrReg->USUA_APPA, $usrReg->USUA_APMA); $profile->USRREG = $usrRegName . " (" . $profile->USRREG . ")"; if(!is_null($profile->USRMOD)){ $usrMod = DB::table('S002V01TUSUA')->where([ ['USUA_NULI', '=', $line], ['USUA_IDUS', '=', $profile->USRMOD] ])->first(); $usrModName = $this->functionsController->joinName($usrMod->USUA_NOMB, $usrMod->USUA_APPA, $usrMod->USUA_APMA); $profile->USRMOD = $usrModName . " (" . $profile->USRMOD . ")"; } $profile->USUARIOS_RELACIONADOS = count($relatedUsers); $profiles[$key] = $profile; } $now = $this->functionsController->now(); $nowStr = $now->toDateTimeString(); $actions = DB::getQueryLog(); $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA); $idac = $this->functionsController->registerActivity( $line, $this->moduleCode, 'S002V01F01ADPE', 'S002V01P01COPE', 'Consulta', "El usuario $name (" . $usr->USUA_IDUS . ") consultó los perfiles registrados.", $idUser, $nowStr, 'S002V01S02GEPE' ); $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line); return $this->responseController->makeresponse(false, "EXITO", $profiles); } public function getProfile($idProfile, $idUser, $line){ DB::enableQueryLog(); $idUser = $this->encryptionController->decrypt($idUser); if(!$idUser){ return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la solicitud no está encriptado correctamente', [], 400); } $usr = DB::table('S002V01TUSUA')->where([ ['USUA_IDUS', '=', $idUser], ['USUA_NULI', '=', $line], ])->first(); if(is_null($usr)){ return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no existe', [], 400); } $idProfile = $this->encryptionController->decrypt($idProfile); if(!$idProfile){ return $this->responseController->makeResponse(true, "El ID del perfil no está encriptado correctamente.", [], 401); } $profile = DB::table('S002V01TPERF')->select( 'PERF_IDPE AS IDPERFIL', 'PERF_NOPE AS NOMBREPERFIL', 'PERF_ESTA AS ESTATUS', 'PERF_PERM AS PERMISOS', )->where([ ['PERF_IDPE', '=', $idProfile], ['PERF_NULI', '=', $line], ])->first(); if(is_null($profile)){ return $this->responseController->makeResponse(true, "El perfil consultado no existe.", [], 404); } $profile->IDPERFIL = $this->encryptionController->encrypt($profile->IDPERFIL); $profilePermissions = json_decode($profile->PERMISOS, true); $permissions = []; $modules = DB::table('S002V01TMODU')->where('MODU_NULI', '=', $line)->get()->all(); $moduleIndex = 0; foreach($modules as $module){ $submodules = DB::table('S002V01TSUBM')->where([ ['SUBM_IDMO', '=', $module->MODU_IDMO], ['SUBM_NULI', '=', $line] ])->get()->all(); $permissionsPerSubmodule = []; $submoduleIndex = 0; foreach($submodules as $submodule){ $functions = DB::table('S002V01TFUNC')->where([ ['FUNC_IDMO', '=', $module->MODU_IDMO], ['FUNC_IDSM', '=', $submodule->SUBM_IDSM], ['FUNC_NULI', '=', $line], ])->get()->all(); $permissionsPerFunction = []; $functionIndex = 0; foreach($functions as $function){ $screens = DB::table('S002V01TPANT')->where([ ['PANT_IDFU', '=', $function->FUNC_IDFU], ['PANT_NULI', '=', $line], ])->get()->all(); $permissionsPerScreen = []; $screenIndex = 0; foreach($screens as $screen){ $screenAccess = 0; if(isset($profilePermissions['permissions'][$moduleIndex]['children'][$submoduleIndex]['children'][$functionIndex]['children'][$screenIndex]['access'])){ $screenAccess = $profilePermissions['permissions'][$moduleIndex]['children'][$submoduleIndex]['children'][$functionIndex]['children'][$screenIndex]['access']; } $permissionsPerScreen[] = [ 'id' => $this->encryptionController->encrypt($screen->PANT_IDPA), 'name' => $screen->PANT_NOMB, 'access' => $screenAccess ]; $screenIndex++; } $functionAcces = 0; if(isset($profilePermissions['permissions'][$moduleIndex]['children'][$submoduleIndex]['children'][$functionIndex]['access'])){ $functionAcces = $profilePermissions['permissions'][$moduleIndex]['children'][$submoduleIndex]['children'][$functionIndex]['access']; } $permissionsPerFunction[] = [ 'id' => $this->encryptionController->encrypt($function->FUNC_IDFU), 'name' => $function->FUNC_NOMB, 'access' => $functionAcces, 'children' => $permissionsPerScreen, ]; $functionIndex++; } $submoduleAccess = 0; if(isset($profilePermissions['permissions'][$moduleIndex]['children'][$submoduleIndex]['access'])){ $submoduleAccess = $profilePermissions['permissions'][$moduleIndex]['children'][$submoduleIndex]['access']; } $permissionsPerSubmodule[] = [ 'id' => $this->encryptionController->encrypt($submodule->SUBM_IDSM), 'name' => $submodule->SUBM_NOMB, 'access' => $submoduleAccess, 'children' => $permissionsPerFunction, ]; $submoduleIndex++; } $functions = DB::table('S002V01TFUNC')->where([ ['FUNC_IDMO', '=', $module->MODU_IDMO], ['FUNC_IDSM', '=', null], ['FUNC_NULI', '=', $line], ])->get()->all(); $permissionsPerFunction = []; $functionIndex = 0; foreach($functions as $function){ $screens = DB::table('S002V01TPANT')->where([ ['PANT_IDFU', '=', $function->FUNC_IDFU], ['PANT_NULI', '=', $line], ])->get()->all(); $permissionsPerScreen = []; $screenIndex = 0; foreach($screens as $screen){ $screenAccess = 0; if(isset($profilePermissions['permissions'][$moduleIndex]['children'][$functionIndex]['children'][$screenIndex]['access'])){ $screenAccess = $profilePermissions['permissions'][$moduleIndex]['children'][$functionIndex]['children'][$screenIndex]['access']; } $permissionsPerScreen[] = [ 'id' => $this->encryptionController->encrypt($screen->PANT_IDPA), 'name' => $screen->PANT_NOMB, 'access' => $screenAccess ]; $screenIndex++; } $functionAcces = 0; if(isset($profilePermissions['permissions'][$moduleIndex]['children'][$functionIndex]['access'])){ $functionAcces = $profilePermissions['permissions'][$moduleIndex]['children'][$functionIndex]['access']; } $permissionsPerFunction[] = [ 'id' => $this->encryptionController->encrypt($function->FUNC_IDFU), 'name' => $function->FUNC_NOMB, 'access' => $functionAcces, 'children' => $permissionsPerScreen, ]; $functionIndex++; } $permissionsArr = []; foreach($permissionsPerSubmodule as $perm){ $permissionsArr[] = $perm; } foreach($permissionsPerFunction as $perm){ $permissionsArr[] = $perm; } $moduleAccess = $profilePermissions['permissions'][$moduleIndex]['access']; $permissions[] = [ 'id' => $this->encryptionController->encrypt($module->MODU_IDMO), 'name' => $module->MODU_NOMO, 'access' => $moduleAccess, 'children' => $permissionsArr, 'enabled' => $module->MODU_ESTA == 'E' ]; $moduleIndex++; } $now = $this->functionsController->now(); $nowStr = $now->toDateTimeString(); $profile->PERMISOS = ['permissions' => $permissions]; $actions = DB::getQueryLog(); $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA); $idac = $this->functionsController->registerActivity( $line, $this->moduleCode, 'S002V01F01ADPE', 'S002V01P01COPE', 'Consulta', "El usuario $name (" . $usr->USUA_IDUS . ") consultó el perfil " . $profile->NOMBREPERFIL . " (" . $profile->IDPERFIL . ").", $idUser, $nowStr, 'S002V01S02GEPE' ); $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line); return $this->responseController->makeresponse(false, "EXITO", $profile); } public function updateUser(Request $request){ DB::enableQueryLog(); $validator = Validator::make($request->all(), [ 'id' => 'required|string', 'name' => 'required|string|max:50', 'fApe' => 'required|string|max:50', 'email' => 'required|string|email', 'perf' => 'required|string', 'id_user' => 'required|string', 'linea' => 'required|integer' ]); if($validator->fails()){ return $this->responseController->makeResponse( true, "Se encontraron uno o más errores.", $this->responseController->makeErrors( $validator->errors()->messages() ), 401 ); } $user = $request->all(); $idUser = $this->encryptionController->decrypt($user['id']); if(!$idUser){ return $this->responseController->makeResponse(true, "El ID del usuario que desea modificar no está encriptado correctamente.", [], 400); } $usrMod = DB::table('S002V01TUSUA')->where([ ['USUA_IDUS', '=', $idUser], ['USUA_NULI', '=', $user['linea']], ])->first(); if(is_null($usrMod)){ return $this->responseController->makeResponse(true, 'El usuario que desea modificar no exise.', [], 404); } $idUserMod = $this->encryptionController->decrypt($user['id_user']); if(!$idUserMod){ return $this->responseController->makeResponse(true, "El ID del usuario que modifica no está encriptado correctamente.", [], 400); } $usr = DB::table('S002V01TUSUA')->where([ ['USUA_IDUS', '=', $idUserMod], ['USUA_NULI', '=', $user['linea']], ])->first(); if(is_null($usr)){ return $this->responseController->makeResponse(true, 'El usuario que realiza la solicitud no existe', [], 404); } if($idUser == $idUserMod){ return $this->responseController->makeResponse(true, "El usuario no puede modificar su propio registro.", [], 401); } $idProfile = $this->encryptionController->decrypt($user['perf']); if(!$idProfile){ return $this->responseController->makeResponse(true, "El ID del perfil seleccionado no está encriptado correctamente.", [], 400); } $profile = DB::table('S002V01TPERF')->where([ ['PERF_IDPE', '=', $idProfile], ['PERF_NULI', '=', $user['linea']] ])->first(); if(is_null($profile)){ return $this->responseController->makeResponse(true, 'El perfil seleccionado no existe.', [], 404); }else if($profile->PERF_ESTA == 'Eliminado'){ return $this->responseController->makeResponse(true, 'El perfil seleccionado está eliminado.', [], 404); } $now = $this->functionsController->now(); $nowStr = $now->toDateTimeString(); $correos = DB::table('S002V01TUSUA')->where([ ['USUA_COEL', '=', $user['email']], ['USUA_IDUS', '!=', $idUser] ])->get()->all(); if(count($correos) > 0){ return $this->responseController->makeResponse(true, "El nuevo correo electrónico ya está registrado en la base.", [], 401); } DB::table('S002V01TUSUA')->where([ ['USUA_IDUS', '=', $idUser], ['USUA_NULI', '=', $user['linea']] ])->update([ 'USUA_NOMB' => $user['name'], 'USUA_APPA' => $user['fApe'], 'USUA_APMA' => array_key_exists('sApe', $user) ? $user['sApe'] : null, 'USUA_COEL' => $user['email'], 'USUA_PERF' => $idProfile, 'USUA_USMO' => $idUserMod, 'USUA_FEMO' => $nowStr ]); $actions = DB::getQueryLog(); $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA); $nameMod = $this->functionsController->joinName($usrMod->USUA_NOMB, $usrMod->USUA_APPA, $usrMod->USUA_APMA); $idac = $this->functionsController->registerActivity( $user['linea'], $this->moduleCode, 'S002V01F01ADUS', 'S002V01P02RAUS', 'Actualización', "El usuario $name (" . $usr->USUA_IDUS . ") actualizó al usuario $nameMod (" . $usrMod->USUA_IDUS . ").", $idUser, $nowStr, 'S002V01S01GEUS' ); $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $user['linea']); return $this->responseController->makeResponse(false, "EXITO: Actualización correcta."); } public function createUser(Request $request){ DB::enableQueryLog(); $validator = Validator::make($request->all(), [ 'id_user' => 'required|string', 'linea' => 'required|integer', 'name' => 'required|string|max:50', 'fApe' => 'required|string|max:50', 'perf' => 'required|string', 'email' => 'required|string|email', 'password' => 'required|string|min:8|confirmed', ]); if($validator->fails()){ return $this->responseController->makeResponse( true, "Se encontraron uno o más errores.", $this->responseController->makeErrors( $validator->errors()->messages() ), 401 ); } $user = $request->all(); $idUsre = $this->encryptionController->decrypt($user['id_user']); if(!$idUsre){ return $this->responseController->makeResponse(true, "El ID del usuario que registra no está encriptado correctamente.", [], 400); } $usr = DB::table('S002V01TUSUA')->where([ ['USUA_IDUS', '=', $idUsre], ['USUA_NULI', '=', $user['linea']] ])->first(); if(is_null($usr)){ return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404); }else if($usr->USUA_ESTA == 'Eliminado'){ return $this->responseController->makeResponse(true, "El usuario que realiza el registro está eliminado.", [], 401); }else if($usr->USUA_ESTA == 'Inactivo'){ return $this->responseController->makeResponse(true, "El usuario que realiza el registro está boloqueado.", [], 401); } $idProfile = $this->encryptionController->decrypt($user['perf']); if(!$idProfile){ return $this->responseController->makeResponse(true, "El ID del perfil seleccionado no está encriptado correctamente.", [], 400); } $profile = DB::table('S002V01TPERF')->where([ ['PERF_IDPE', '=', $idProfile], ['PERF_NULI', '=', $user['linea']] ])->first(); if(is_null($profile)){ return $this->responseController->makeResponse(true, 'El perfil seleccionado no existe.', [], 404); }else if($usr->USUA_ESTA == 'Eliminado'){ return $this->responseController->makeResponse(true, "El perfil seleccionado está eliminado.", [], 401); } $email = DB::table('S002V01TUSUA')->where([ ['USUA_COEL', '=', $user['email']], ['USUA_NULI', '=', $user['linea']] ])->get()->first(); if(!is_null($email)){ return $this->responseController->makeResponse(true, "El correo electrónico ya se encuentra registrado.", [], 401); } $passEnc = Hash::make($user['password']); $apemat = isset($user['sApe']) ? $user['sApe'] : null; $now = $this->functionsController->now(); $nowStr = $now->toDateTimeString(); $idUser = DB::table('S002V01TUSUA')->insertGetId([ 'USUA_NULI' => $user['linea'], 'USUA_NOMB' => $user['name'], 'USUA_APPA' => $user['fApe'], 'USUA_APMA' => $apemat, 'USUA_PERF' => $idProfile, 'USUA_PCRE' => 0, 'USUA_CONT' => $passEnc, 'USUA_COEL' => $user['email'], 'USUA_USRE' => $idUsre, 'USUA_FERE' => $nowStr, ]); $actions = DB::getQueryLog(); $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA); $nameReg = $this->functionsController->joinName($user['name'], $user['fApe'], $apemat); $idac = $this->functionsController->registerActivity( $user['linea'], $this->moduleCode, 'S002V01F01ADUS', 'S002V01P02RAUS', 'Registro', "El usuario $name (" . $usr->USUA_IDUS . ") registró al usuario $nameReg ($idUser).", $idUsre, $nowStr, 'S002V01S01GEUS' ); $this->functionsController->registerLog($actions, $idUsre, $nowStr, $idac, $user['linea']); return $this->responseController->makeResponse(false, "EXITO: Registro correcto."); } public function blockUser(Request $request){ DB::enableQueryLog(); $validator = Validator::make($request->all(), [ 'id' => 'required|string', 'estatus' => 'required|in:Activo,Inactivo', 'id_user' => 'required|string', 'linea' => 'required|integer' ]); if($validator->fails()){ return $this->responseController->makeResponse( true, "Se encontraron uno o más errores.", $this->responseController->makeErrors( $validator->errors()->messages() ), 401 ); } $user = $request->all(); $idUser = $this->encryptionController->decrypt($user['id']); if(!$idUser){ return $this->responseController->makeResponse(true, "El id del usuario que desea modificar no está encriptado correctamente.", [], 400); } $usr = DB::table('S002V01TUSUA')->where([ ['USUA_IDUS', '=', $idUser], ['USUA_NULI', '=', $user['linea']], ])->first(); if(is_null($usr)){ return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no existe', [], 400); } $idUserMod = $this->encryptionController->decrypt($user['id_user']); if(!$idUserMod){ return $this->responseController->makeResponse(true, "El id del usuario que modifica no está encriptado correctamente.", [], 400); } if($idUser == $idUserMod){ return $this->responseController->makeResponse(true, "El usuario no puede modificarse a sí mismo", [], 400); } $usrMod = DB::table('S002V01TUSUA')->where([ ['USUA_IDUS', '=', $idUserMod], ['USUA_NULI', '=', $user['linea']], ])->first(); if(is_null($usrMod)){ return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no existe', [], 400); } $now = $this->functionsController->now(); $nowStr = $now->toDateTimeString(); DB::table('S002V01TUSUA')->where('USUA_IDUS', '=', $idUserMod)->update([ 'USUA_ESTA' => $user['estatus'], 'USUA_USMO' => $idUser, 'USUA_FEMO' => $nowStr ]); $actions = DB::getQueryLog(); $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA); $nameMod = $this->functionsController->joinName($usrMod->USUA_NOMB, $usrMod->USUA_APPA, $usrMod->USUA_APMA); $tipoAccion = $user['estatus'] == 'Activo' ? 'desbloqueó' : 'bloqueó'; $idac = $this->functionsController->registerActivity( $user['linea'], $this->moduleCode, 'S002V01F02BDAC', '-', 'Actualización', "El usuario $name (" . $usr->USUA_IDUS . ") $tipoAccion al usuario $nameMod (" . $usrMod->USUA_IDUS . ").", $idUser, $nowStr, 'S002V01S01GEUS' ); $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $user['linea']); return $this->responseController->makeResponse(false, "EXITO: Actualización correcta."); } public function updatePass(Request $request){ DB::enableQueryLog(); $validator = Validator::make($request->all(), [ 'id' => 'required|string', 'password' => 'required|string|min:8|confirmed', 'id_user' => 'required|string', 'linea' => 'required|integer' ]); if($validator->fails()){ return $this->responseController->makeResponse( true, "Se encontraron uno o más errores.", $this->responseController->makeErrors( $validator->errors()->messages() ), 401 ); } $user = $request->all(); $idUser = $this->encryptionController->decrypt($user['id']); if(!$idUser){ return $this->responseController->makeResponse(true, "El id del usuario que desea modificar no está encriptado correctamente.", [], 400); } $usrMod = DB::table('S002V01TUSUA')->where([ ['USUA_IDUS', '=', $idUser], ['USUA_NULI', '=', $user['linea']], ])->first(); if(is_null($usrMod)){ return $this->responseController->makeResponse(true, 'El usuario que desea modificar no existe', [], 400); } $idUserMod = $this->encryptionController->decrypt($user['id_user']); if(!$idUserMod){ return $this->responseController->makeResponse(true, "El id del usuario que modifica no está encriptado correctamente.", [], 400); } if($idUser == $idUserMod){ return $this->responseController->makeResponse(true, "El usuario no puede modificarse a sí mismo.", [], 401); } $usr = DB::table('S002V01TUSUA')->where([ ['USUA_IDUS', '=', $idUserMod], ['USUA_NULI', '=', $user['linea']], ])->first(); if(is_null($usr)){ return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no existe', [], 400); } $lastPass = $usr->USUA_CONT; if(Hash::check($user['password'], $lastPass)){ return $this->responseController->makeResponse(true, "La contraseña nueva es igual a la anterior.", [], 401); } $newPass = Hash::make($user['password']); $now = $this->functionsController->now(); $nowStr = $now->toDateTimeString(); DB::table('S002V01TUSUA')->where([ ['USUA_IDUS', '=', $idUser], ['USUA_NULI', '=', $user['linea']], ])->update([ 'USUA_CONT' => $newPass, 'USUA_USMO' => $idUserMod, 'USUA_FEMO' => $nowStr ]); $actions = DB::getQueryLog(); $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA); $idac = $this->functionsController->registerActivity( $user['linea'], $this->moduleCode, 'S002V01F01ADUS', 'S002V01P01COUS', 'Consulta', "El usuario $name (" . $usr->USUA_IDUS . ") consultó los usuarios registrados.", $idUser, $nowStr, 'S002V01S01GEUS' ); $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $user['linea']); return $this->responseController->makeResponse(false, "EXITO: Actualización correcta."); } public function deleteUser(Request $request){ DB::enableQueryLog(); $validator = Validator::make($request->all(), [ 'id' => 'required|string', 'id_user' => 'required|string', 'linea' => 'required|integer' ]); if($validator->fails()){ return $this->responseController->makeResponse( true, "Se encontraron uno o más errores.", $this->responseController->makeErrors( $validator->errors()->messages() ), 401 ); } $user = $request->all(); $idUser = $this->encryptionController->decrypt($user['id']); if(!$idUser){ return $this->responseController->makeResponse(true, "El id del usuario que desea eliminar no está encriptado correctamente", [], 400); } $usr = DB::table('S002V01TUSUA')->where([ ['USUA_IDUS', '=', $idUser], ['USUA_NULI', '=', $user['linea']] ])->first(); if(is_null($usr)){ return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404); } $idUserMod = $this->encryptionController->decrypt($user['id_user']); if(!$idUserMod){ return $this->responseController->makeResponse(true, "El id del usuario que elimina no está encriptado correctamente", [], 400); } if($idUser == $idUserMod){ return $this->responseController->makeResponse(true, "El usuario no puede eliminarse a sí mismo", [], 401); } $usrMod = DB::table('S002V01TUSUA')->where([ ['USUA_IDUS', '=', $idUserMod], ['USUA_NULI', '=', $user['linea']] ])->first(); if(is_null($usrMod)){ return $this->responseController->makeResponse(true, 'El usuario que desea eliminar no está registrado', [], 404); } $now = $this->functionsController->now(); $nowStr = $now->toDateTimeString(); DB::table('S002V01TUSUA')->where('USUA_IDUS', '=', $idUser)->update([ 'USUA_ESTA' => 'Eliminado', 'USUA_USMO' => $idUserMod, 'USUA_FEMO' => $nowStr ]); $actions = DB::getQueryLog(); $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA); $nameMod = $this->functionsController->joinName($usrMod->USUA_NOMB, $usrMod->USUA_APPA, $usrMod->USUA_APMA); $idac = $this->functionsController->registerActivity( $user['linea'], $this->moduleCode, 'S002V01F01ADUS', 'S002V01P02RAUS', 'Eliminación', "El usuario $name (" . $usr->USUA_IDUS . ") eliminó al usuario $nameMod (" . $usrMod->USUA_IDUS . ").", $idUser, $nowStr, 'S002V01S01GEUS' ); $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $user['linea']); return $this->responseController->makeResponse(false, "EXITO: Actualización correcta."); } public function getModules($idUser, $line){ DB::enableQueryLog(); $idUser = $this->encryptionController->decrypt($idUser); if(!$idUser){ return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la solicitud no está encriptado correctamente', [], 400); } $usr = DB::table('S002V01TUSUA')->where([ ['USUA_IDUS', '=', $idUser], ['USUA_NULI', '=', $line] ])->first(); if(is_null($usr)){ return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404); } $modules = DB::table('S002V01TMODU')->select( 'MODU_IDMO as ID_MODULO', 'MODU_NOMO as NOMBRE_MODULO', 'MODU_ICON as ICONO_MODULO', 'MODU_ESTA AS ESTADO_MODULO' )->where('MODU_NULI', '=', $line)->get()->all(); foreach($modules as $key=>$module){ $module->ID_MODULO = $this->encryptionController->encrypt($module->ID_MODULO); $module->ESTADO_MODULO = $module->ESTADO_MODULO == 'E'; $modules[$key] = $module; } $now = $this->functionsController->now(); $nowStr = $now->toDateTimeString(); $actions = DB::getQueryLog(); $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA); $idac = $this->functionsController->registerActivity( $line, '-', '-', '-', 'Consulta', "El usuario $name (" . $usr->USUA_IDUS . ") consultó los módulos del sistema.", $idUser, $nowStr ); $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line); return $this->responseController->makeresponse(false, "EXITO", $modules); } public function getMenu($idUser, $line){ DB::enableQueryLog(); $idUser = $this->encryptionController->decrypt($idUser); if(!$idUser){ return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la solicitud no está encriptado correctamente', [], 400); } $usr = DB::table('S002V01TUSUA')->where([ ['USUA_IDUS', '=', $idUser], ['USUA_NULI', '=', $line] ])->first(); if(is_null($usr)){ return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404); } $modules = DB::table('S002V01TMODU')->select( 'MODU_IDMO AS ID_MODULO', 'MODU_NOMO AS NOMBRE_MODULO', 'MODU_ICON AS ICONO_MODULO', 'MODU_ICPE AS ICONO_PERSONALIZADO', 'MODU_AIPE AS ARCHIVO_ICONO_PERSONALIZADO', 'MODU_ESTA AS ESTADO' )->get()->all(); $mods = []; foreach($modules as $module){ $submodules = DB::table('S002V01TSUBM')->select( 'SUBM_IDSM as IDSUBMODULO', 'SUBM_NOMB as NOMBRESUBMODULO', 'SUBM_ICON AS ICONOSUBMODULO', 'SUBM_ICPE AS ICONO_PERSONALIZADO', 'SUBM_AIPE AS ARCHIVO_ICONO_PERSONALIZADO', )->where('SUBM_IDMO', '=', $module->ID_MODULO)->get()->all(); $menusMod = DB::table('S002V01TFUNC')->select( 'FUNC_IDFU AS IDFUNCION', 'FUNC_NOMB AS NOMBREFUNCION', 'FUNC_ICON AS ICONOFUNCION', 'FUNC_ICPE AS ICONO_PERSONALIZADO', 'FUNC_AIPE AS ARCHIVO_ICONO_PERSONALIZADO', )->where([ ['FUNC_IDMO', '=', $module->ID_MODULO], ['FUNC_IDSM', '=', null] ])->get()->all(); $module->SUBMODULES = []; foreach($submodules as $submodule){ $menus = DB::table('S002V01TFUNC')->select( 'FUNC_IDFU AS IDFUNCION', 'FUNC_NOMB AS NOMBREFUNCION', 'FUNC_ICON AS ICONOFUNCION', 'FUNC_ICPE AS ICONO_PERSONALIZADO', 'FUNC_AIPE AS ARCHIVO_ICONO_PERSONALIZADO', )->where([ ['FUNC_IDMO', '=', $module->ID_MODULO], ['FUNC_IDSM', '=', $submodule->IDSUBMODULO] ])->get()->all(); foreach($menus as $funcion){ $pantallas = DB::table('S002V01TPANT')->select( 'PANT_IDPA AS IDPANTALLA', 'PANT_NOMB AS NOMBREPANTALLA' )->where([ ['PANT_IDFU', '=', $funcion->IDFUNCION], ['PANT_NULI', '=', $line] ])->get()->all(); foreach($pantallas as $key0=>$pantalla){ $pantalla->IDPANTALLA = $this->encryptionController->encrypt($pantalla->IDPANTALLA); $pantallas[$key0] = $pantalla; } $funcion->IDFUNCION = $this->encryptionController->encrypt($funcion->IDFUNCION); $funcion->PANTALLAS = $pantallas; } $submodule->FUNCIONES = []; foreach($menus as $menu){ $submodule->FUNCIONES[] = $menu; } $submodule->IDSUBMODULO = $this->encryptionController->encrypt($submodule->IDSUBMODULO); if(!is_null($submodule->ARCHIVO_ICONO_PERSONALIZADO)){ $submodule->ARCHIVO_ICONO_PERSONALIZADO = $this->encryptionController->encrypt($submodule->ARCHIVO_ICONO_PERSONALIZADO); } $module->SUBMODULES[] = $submodule; } foreach($menusMod as $funcion){ $pantallas = DB::table('S002V01TPANT')->select( 'PANT_IDPA AS IDPANTALLA', 'PANT_NOMB AS NOMBREPANTALLA' )->where([ ['PANT_IDFU', '=', $funcion->IDFUNCION], ['PANT_NULI', '=', $line] ])->get()->all(); foreach($pantallas as $key0=>$pantalla){ $pantalla->IDPANTALLA = $this->encryptionController->encrypt($pantalla->IDPANTALLA); $pantallas[$key0] = $pantalla; } $funcion->IDFUNCION = $this->encryptionController->encrypt($funcion->IDFUNCION); $funcion->PANTALLAS = $pantallas; } $module->MENUS = $menusMod; $module->ID_MODULO = $this->encryptionController->encrypt($module->ID_MODULO); if(!is_null($module->ICONO_PERSONALIZADO)){ $module->ICONO_PERSONALIZADO = $this->encryptionController->encrypt($module->ICONO_PERSONALIZADO); } if(!is_null($module->ARCHIVO_ICONO_PERSONALIZADO)){ $module->ARCHIVO_ICONO_PERSONALIZADO = $this->encryptionController->encrypt($module->ARCHIVO_ICONO_PERSONALIZADO); } $mods[] = $module; } $now = $this->functionsController->now(); $nowStr = $now->toDateTimeString(); $actions = DB::getQueryLog(); $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA); $idac = $this->functionsController->registerActivity( $line, '-', '-', '-', 'Consulta', "El usuario $name (" . $usr->USUA_IDUS . ") consultó el menú del sistema.", $idUser, $nowStr ); $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line); return $this->responseController->makeResponse(false, "EXITO", $mods); } public function buildInitialPermissions($idUser, $line){ DB::enableQueryLog(); $idUser = $this->encryptionController->decrypt($idUser); if(!$idUser){ return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la solicitud no está encriptado correctamente', [], 400); } $usr = DB::table('S002V01TUSUA')->where([ ['USUA_IDUS', '=', $idUser], ['USUA_NULI', '=', $line], ])->first(); if(is_null($usr)){ return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no existe', [], 400); } $permissions = []; //Se obtienen todos los modulos $modules = DB::table('S002V01TMODU')->where('MODU_NULI', '=', $line)->get()->all(); //se consultan los submodulos de cada modulo foreach($modules as $module){ $submodules = DB::table('S002V01TSUBM')->where([ ['SUBM_IDMO', '=', $module->MODU_IDMO], ['SUBM_NULI', '=', $line] ])->get()->all(); $permissionsPerSubmodule = []; $hasSubmodules = false; foreach($submodules as $submodule){ //Se consultan las funciones $functions = DB::table('S002V01TFUNC')->where([ ['FUNC_IDMO', '=', $module->MODU_IDMO], ['FUNC_IDSM', '=', $submodule->SUBM_IDSM], ['FUNC_NULI', '=', $line], ])->get()->all(); $permissionsPerFunction = []; foreach($functions as $function){ $screens = DB::table('S002V01TPANT')->where([ ['PANT_IDFU', '=', $function->FUNC_IDFU], ['PANT_NULI', '=', $line], ])->get()->all(); $permissionsPerScreen = []; foreach($screens as $screen){ $permissionsPerScreen[] = [ 'id' => $screen->PANT_IDPA, 'name' => $screen->PANT_NOMB, 'access' => 0 ]; } $permissionsPerFunction[] = [ 'id' => $function->FUNC_IDFU, 'name' => $function->FUNC_NOMB, 'access' => 0, 'children' => $permissionsPerScreen, ]; } $permissionsPerSubmodule[] = [ 'id' => $submodule->SUBM_IDSM, 'name' => $submodule->SUBM_NOMB, 'access' => 0, 'children' => $permissionsPerFunction, ]; $hasSubmodules = true; } //Se consultan las funciones $functions = DB::table('S002V01TFUNC')->where([ ['FUNC_IDMO', '=', $module->MODU_IDMO], ['FUNC_IDSM', '=', null], ['FUNC_NULI', '=', $line], ])->get()->all(); $permissionsPerFunction = []; foreach($functions as $function){ $screens = DB::table('S002V01TPANT')->where([ ['PANT_IDFU', '=', $function->FUNC_IDFU], ['PANT_NULI', '=', $line], ])->get()->all(); $permissionsPerScreen = []; foreach($screens as $screen){ $permissionsPerScreen[] = [ 'id' => $screen->PANT_IDPA, 'name' => $screen->PANT_NOMB, 'access' => 0 ]; } $permissionsPerFunction[] = [ 'id' => $function->FUNC_IDFU, 'name' => $function->FUNC_NOMB, 'access' => 0, 'children' => $permissionsPerScreen, ]; } $permissionsArr = []; foreach($permissionsPerSubmodule as $perm){ $permissionsArr[] = $perm; } foreach($permissionsPerFunction as $perm){ $permissionsArr[] = $perm; } $permissions[] = [ 'id' => $module->MODU_IDMO, 'name' => $module->MODU_NOMO, 'access' => 0, 'children' => $permissionsArr, ]; } $now = $this->functionsController->now(); $nowStr = $now->toDateTimeString(); $actions = DB::getQueryLog(); $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA); $idac = $this->functionsController->registerActivity( $line, $this->moduleCode, 'S002V01F01ADPE', 'S002V01P02REPE', 'Consulta', "El usuario $name (" . $usr->USUA_IDUS . ") consultó el arreglo de permisos iniciales.", $idUser, $nowStr, 'S002V01S02GEPE' ); $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line); return $this->responseController->makeresponse(false, "EXITO", ['permissions' => $permissions]); } public function updateProfile(Request $request){ DB::enableQueryLog(); $validator = Validator::make($request->all(), [ 'id_user' => 'required|string', 'linea' => 'required|integer', 'id' => 'required|string', 'name' => 'required|string|max:50', 'permissions' => 'required|json', ]); if($validator->fails()){ return $this->responseController->makeResponse( true, "Se encontraron uno o más errores.", $this->responseController->makeErrors( $validator->errors()->messages() ), 401 ); } $info = $request->all(); $idUser = $this->encryptionController->decrypt($info['id_user']); if(!$idUser){ return $this->responseController->makeResponse(true, "El ID del usuario que realizó la solicitud no fue encriptado correctamente", [], 400); } $usr = DB::table('S002V01TUSUA')->where([ ['USUA_IDUS', '=', $idUser], ['USUA_NULI', '=', $info['linea']], ])->first(); if(is_null($usr)){ return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no existe', [], 404); } $idPerf = $this->encryptionController->decrypt($info['id']); if(!$idPerf){ return $this->responseController->makeResponse(true, "El ID del perfil solicitado no fue encriptado correctamente", [], 400); } $perf = DB::table('S002V01TPERF')->where([ ['PERF_IDPE', '=', $idPerf], ['PERF_NULI', '=', $info['linea']], ])->first(); if(is_null($perf)){ return $this->responseController->makeResponse(true, 'El perfil solicitado no existe', [], 400); } $now = $this->functionsController->now(); $nowStr = $now->toDateTimeString(); DB::table('S002V01TPERF')->where([ ['PERF_IDPE', '=', $idPerf], ['PERF_NULI', '=', $info['linea']], ])->update([ 'PERF_PERM' => $info['permissions'], 'PERF_NOPE' => $info['name'], 'PERF_USMO' => $idUser, 'PERF_FEMO' => $nowStr ]); $actions = DB::getQueryLog(); $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA); $idac = $this->functionsController->registerActivity( $info['linea'], $this->moduleCode, 'S002V01F01ADPE', 'S002V01P02REPE', 'Actualización', "El usuario $name (" . $usr->USUA_IDUS . ") actualizó el perfil " . $perf->PERF_NOPE . "(" . $perf->PERF_NOPE . ").", $idUser, $nowStr, 'S002V01S02GEPE' ); $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $info['linea']); return $this->responseController->makeResponse(false, "EXITO: Actualización correcta."); } public function deleteProfile(Request $request){ DB::enableQueryLog(); $validator = Validator::make($request->all(), [ 'id' => 'required|string', 'id_user' => 'required|string', 'linea' => 'required|integer' ]); if($validator->fails()){ return $this->responseController->makeResponse( true, "Se encontraron uno o más errores.", $this->responseController->makeErrors( $validator->errors()->messages() ), 401 ); } $profile = $request->all(); $idUser = $this->encryptionController->decrypt($profile['id_user']); if(!$idUser){ return $this->responseController->makeResponse(true, "El ID del usuario que solicitó la acción no está encriptado correctamente", [], 401); } $usr = DB::table('S002V01TUSUA')->where([ ['USUA_IDUS', '=', $idUser], ['USUA_NULI', '=', $profile['linea']], ])->first(); if(is_null($usr)){ return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no existe', [], 404); } $idProf = $this->encryptionController->decrypt($profile['id']); if(!$idProf){ return $this->responseController->makeResponse(true, "El ID del perfil seleccionado no está encriptado correctamente", [], 401); } $perf = DB::table('S002V01TPERF')->where([ ['PERF_IDPE', '=', $idProf], ['PERF_NULI', '=', $profile['linea']], ])->first(); if(is_null($perf)){ return $this->responseController->makeResponse(true, 'El perfil solicitado no existe', [], 404); } $users = DB::table('S002V01TUSUA')->where([ ['USUA_PERF', '=', $idProf], ['USUA_NULI', '=', $profile['linea']] ])->get()->all(); if(count($users) > 0){ return $this->responseController->makeResponse(true, "El perfil seleccionado no se puede eliminar porque hay usuarios asociados a él.", [], 401); } $now = $this->functionsController->now(); $nowStr = $now->toDateTimeString(); DB::table('S002V01TPERF')->where([ ['PERF_IDPE', '=', $idProf], ['PERF_NULI', '=', $profile['linea']], ])->update([ 'PERF_ESTA' => 'Eliminado', 'PERF_USMO' => $idUser, 'PERF_FEMO' => $nowStr ]); $actions = DB::getQueryLog(); $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA); $idac = $this->functionsController->registerActivity( $profile['linea'], $this->moduleCode, 'S002V01F01ADPE', '-', 'Eliminación', "El usuario $name (" . $usr->USUA_IDUS . ") eliminó el perfil " . $perf->PERF_NOPE . "($idProf).", $idUser, $nowStr, 'S002V01S02GEPE' ); $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $profile['linea']); return $this->responseController->makeResponse(false, "EXITO: Eliminación correcta."); } public function createProfile(Request $request){ DB::enableQueryLog(); $validator = Validator::make($request->all(), [ 'id_user' => 'required|string', 'linea' => 'required|integer', 'name' => 'required|string|min:8|max:50', 'permissions' => 'required|json' ]); if($validator->fails()){ return $this->responseController->makeResponse( true, "Se encontraron uno o más errores.", $this->responseController->makeErrors( $validator->errors()->messages() ), 401 ); } $profile = $request->all(); $idUser = $this->encryptionController->decrypt($profile['id_user']); if(!$idUser){ return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la solicitud no está encriptado correctamente.', [], 400); } $usr = DB::table('S002V01TUSUA')->where([ ['USUA_IDUS', '=', $idUser], ['USUA_NULI', '=', $profile['linea']] ])->first(); if(is_null($usr)){ return $this->responseController->makeResponse(true, 'El usuario que realizó la solicitud no está registrado', [], 404); }else if($usr->USUA_ESTA == 'Eliminado'){ return $this->responseController->makeResponse(true, "El usuario que realiza el registro está eliminado.", [], 401); }else if($usr->USUA_ESTA == 'Inactivo'){ return $this->responseController->makeResponse(true, "El usuario que realiza el registro está boloqueado.", [], 401); } $now = $this->functionsController->now(); $nowStr = $now ->toDateTimeString(); $newPerf = DB::table('S002V01TPERF')->insertGetId([ 'PERF_NULI' => $profile['linea'], 'PERF_NOPE' => $profile['name'], 'PERF_PERM' => $profile['permissions'], 'PERF_USRE' => $idUser, 'PERF_FERE' => $nowStr ]); $actions = DB::getQueryLog(); $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA); $idac = $this->functionsController->registerActivity( $profile['linea'], $this->moduleCode, 'S002V01F01ADPE', 'S002V01P02REPE', 'Registro', "El usuario $name (" . $usr->USUA_IDUS . ") registró el perfil $profile[name] ($newPerf).", $idUser, $nowStr, 'S002V01S02GEPE' ); $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $profile['linea']); return $this->responseController->makeResponse(false, 'EXITO'); } public function getModule($idMod, $idUser, $line){ DB::enableQueryLog(); $idUser = $this->encryptionController->decrypt($idUser); if(!$idUser){ return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la solicitud no está encriptado correctamente', [], 400); } $usr = DB::table('S002V01TUSUA')->where([ ['USUA_IDUS', '=', $idUser], ['USUA_NULI', '=', $line] ])->first(); if(is_null($usr)){ return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404); } $idMod = $this->encryptionController->decrypt($idMod); if(!$idMod){ return $this->responseController->makeResponse(true, 'El módulo solicitado no fue encriptado correctamente', [], 400); } $module = DB::table('S002V01TMODU')->select( 'MODU_IDMO as IDMODULO', 'MODU_NOMO as NOMBREMODULO', )->where([ ['MODU_NULI', '=', $line], ['MODU_IDMO', '=', $idMod] ])->first(); if(is_null($module)){ return $this->responseController->makeResponse(true, 'El módulo consultado no está registrado', [], 404); } $module->IDMODULO = $this->encryptionController->encrypt($module->IDMODULO); $now = $this->functionsController->now(); $actions = DB::getQueryLog(); $nowStr = $now->toDateTimeString(); $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA); $idac = $this->functionsController->registerActivity( $line, '-', '-', '-', 'Consulta', "El usuario $name (" . $usr->USUA_IDUS . ") consultó el módulo " . $idMod . " del sistema.", $idUser, $nowStr ); $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line); return $this->responseController->makeresponse(false, "EXITO", $module); } public function getSubmodules($idMod, $idUser, $line){ DB::enableQueryLog(); $idUser = $this->encryptionController->decrypt($idUser); if(!$idUser){ return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la solicitud no está encriptado correctamente', [], 400); } $usr = DB::table('S002V01TUSUA')->where([ ['USUA_IDUS', '=', $idUser], ['USUA_NULI', '=', $line] ])->first(); if(is_null($usr)){ return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404); } $idMod = $this->encryptionController->decrypt($idMod); if(!$idMod){ return $this->responseController->makeResponse(true, 'El ID del módulo no fue encriptado correctamente', [], 400); } $mod = DB::table('S002V01TMODU')->where([ ['MODU_NULI', '=', $line], ['MODU_IDMO', '=', $idMod] ])->first(); if(is_null($mod)){ return $this->responseController->makeResponse(true, 'El módulo consultado no existe', [], 404); } $submodules = DB::table('S002V01TSUBM')->where([ ['SUBM_NULI', '=', $line], ['SUBM_IDMO', '=', $idMod], ])->select([ 'SUBM_IDSM AS IDSUBMODULO', 'SUBM_NOMB AS NOMBRESUBMODULO', 'SUBM_ICON AS ICONOSUBMODULO', 'SUBM_IMAG AS IMAGENSUBMODULO', ])->get()->all(); foreach($submodules as $key=>$submodule){ $submodule->IDSUBMODULO = $this->encryptionController->encrypt($submodule->IDSUBMODULO); $submodules[$key] = $submodule; } $now = $this->functionsController->now(); $nowStr = $now->toDateTimeString(); $actions = DB::getQueryLog(); $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA); $idac = $this->functionsController->registerActivity( $line, '-', '-', '-', 'Consulta', "El usuario $name (" . $usr->USUA_IDUS . ") consultó los submódulos del módulo '" . $mod->MODU_NOMO . "'.", $idUser, $nowStr ); $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line); return $this->responseController->makeResponse(false, 'EXITO', $submodules); } public function getSubmodule($idMod, $idSub, $idUser, $line){ DB::enableQueryLog(); $idUser = $this->encryptionController->decrypt($idUser); if(!$idUser){ return $this->responseController->makeResponse(true, 'El ID del usuario que consulta no fue encriptado correctamente', [], 400); } $usr = DB::table('S002V01TUSUA')->where([ ['USUA_IDUS', '=', $idUser], ['USUA_NULI', '=', $line] ])->first(); if(is_null($usr)){ return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no existe', [], 404); } $idMod = $this->encryptionController->decrypt($idMod); if(!$idMod){ return $this->responseController->makeResponse(true, 'El módulo no fue encriptado correctamente', [], 400); } $module = DB::table('S002V01TMODU')->where([ ['MODU_NULI', '=', $line], ['MODU_IDMO', '=', $idMod] ])->first(); if(is_null($module)){ return $this->responseController->makeResponse(true, 'El módulo consultado no existe', [], 404); } $idSub = $this->encryptionController->decrypt($idSub); if(!$idSub){ return $this->responseController->makeResponse(true, 'El submódulo no fue encriptado correctamente', [], 400); } $submodule = DB::table('S002V01TSUBM')->select( 'SUBM_IDSM as IDSUBMODULO', 'SUBM_NOMB as NOMBRESUBMODULO', )->where([ ['SUBM_NULI', '=', $line], ['SUBM_IDSM', '=', $idSub], ['SUBM_IDMO', '=', $idMod], ])->first(); if(is_null($submodule)){ return $this->responseController->makeResponse(true, 'El submódulo consultado no existe', [], 404); } $submodule->IDSUBMODULO = $this->encryptionController->encrypt($submodule->IDSUBMODULO); $now = $this->functionsController->now(); $actions = DB::getQueryLog(); $nowStr = $now->toDateTimeString(); $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA); $idac = $this->functionsController->registerActivity( $line, '-', '-', '-', 'Consulta', "El usuario $name (" . $usr->USUA_IDUS . ") consultó el submódulo " . $idSub . " del sistema.", $idUser, $nowStr ); $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line); return $this->responseController->makeresponse(false, "EXITO", $submodule); } public function getFunction($idMod, $idSub, $idFun, $idUser, $line){ DB::enableQueryLog(); $idMod = $this->encryptionController->decrypt($idMod); if(!$idMod){ return $this->responseController->makeResponse(true, 'El módulo no fue encriptado correctamente', [], 400); } $idSub = $this->encryptionController->decrypt($idSub); if(!$idSub){ return $this->responseController->makeResponse(true, 'El submódulo no fue encriptado correctamente', [], 400); } $idFun = $this->encryptionController->decrypt($idFun); if(!$idFun){ return $this->responseController->makeResponse(true, 'La función no fue encriptada correctamente', [], 400); } $idUser = $this->encryptionController->decrypt($idUser); if(!$idUser){ return $this->responseController->makeResponse(true, 'El id del usuario que consulta no fue encriptado correctamente', [], 400); } $usr = DB::table('S002V01TUSUA')->where([ ['USUA_IDUS', '=', $idUser], ['USUA_NULI', '=', $line] ])->first(); if(is_null($usr)){ return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404); } $function = DB::table('S002V01TFUNC')->select( 'FUNC_IDFU as IDFUNCION', 'FUNC_NOMB as NOMBREFUNCION', )->where([ ['FUNC_NULI', '=', $line], ['FUNC_IDFU', '=', $idFun], ['FUNC_IDMO', '=', $idMod], ['FUNC_IDSM', '=', $idSub], ])->first(); $now = $this->functionsController->now(); $nowStr = $now->toDateTimeString(); $actions = DB::getQueryLog(); $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA); $idac = $this->functionsController->registerActivity( $line, '-', '-', '-', 'Consulta', "El usuario $name (" . $usr->USUA_IDUS . ") consultó la función " . $idFun . " del sistema.", $idUser, $nowStr ); $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line); return $this->responseController->makeresponse(false, "EXITO", [ 'NOMBREFUNCION' => is_null($function) ? '-' : $function->NOMBREFUNCION ]); } public function getScreen($idFun, $idPan, $idUser, $line){ DB::enableQueryLog(); $idFun = $this->encryptionController->decrypt($idFun); if(!$idFun){ return $this->responseController->makeResponse(true, 'La función no fue encriptada correctamente', [], 400); } $idPan = $this->encryptionController->decrypt($idPan); if(!$idPan){ return $this->responseController->makeResponse(true, 'La pantalla no fue encriptada correctamente', [], 400); } $idUser = $this->encryptionController->decrypt($idUser); if(!$idUser){ return $this->responseController->makeResponse(true, 'El id del usuario que consulta no fue encriptado correctamente', [], 400); } $usr = DB::table('S002V01TUSUA')->where([ ['USUA_IDUS', '=', $idUser], ['USUA_NULI', '=', $line] ])->first(); if(is_null($usr)){ return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404); } $screen = DB::table('S002V01TPANT')->select( 'PANT_IDFU as IDPANTALLA', 'PANT_NOMB as NOMBREPANTALLA', )->where([ ['PANT_NULI', '=', $line], ['PANT_IDPA', '=', $idPan], ['PANT_IDFU', '=', $idFun], ])->first(); $now = $this->functionsController->now(); $nowStr = $now->toDateTimeString(); $actions = DB::getQueryLog(); $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA); $idac = $this->functionsController->registerActivity( $line, '-', '-', '-', 'Consulta', "El usuario $name (" . $usr->USUA_IDUS . ") consultó la pantalla " . $idPan . " del sistema.", $idUser, $nowStr ); $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line); return $this->responseController->makeresponse(false, "EXITO", [ 'NOMBREPANTALLA' => is_null($screen) ? '-' : $screen->NOMBREPANTALLA ]); } }