<?php 
	
	if(@$_POST['peticion'] == 'ajax'){
		require_once "../modelo/perfil.modelo.php";
	}else{
		require_once "../../modelo/perfil.modelo.php";
	}
	class ControladorPerfil extends ModeloPerfil{
		
		/*=========================================================================
		ACTUALIZA PERFIL
		===========================================================================*/
		public function ctrActualizaPerfil(){

			try {

				$id_perfil = $_POST['id_perfil'];

				if($_POST['estado_perfil'] == "on"){
						
					$_POST['estado_perfil'] = 1;
						
				}else{

					$_POST['estado_perfil'] = 0;
						
				}	
				
				// usuarios asociados al perfil
				$usuarios ='<table class="table table-bordered text-left"><tr>
								<td class="h4">Nombres</td>
								<td class="h4">Apellidos</td>
							</tr>';

				// Consulto usuario relacionado con el perfil iterado. 
				$usuario = ModeloPerfil::mdlUsuario($_POST['id_perfil']);  
				$datosUsuario = $usuario->fetchAll();

				// Verifico la cantidad de registros encontrados. 
				if($usuario->rowcount() >= 1 && $_POST['estado_perfil'] == 0){
						
					foreach ($datosUsuario as $value_usuario) {
								
						$usuarios .= '<tr>
											<td>'.$value_usuario['nombres'].'</td>
											<td>'.$value_usuario['apellidos'].'</td>
									 	</tr>';
					}

					$usuarios .='</table>';

					echo '<p>No es posible inactivar el perfil. Usuarios asociados</p>'.$usuarios;

				}else{

					// Actualización de perfil
					$actualizaPerfil = ModeloPerfil::mdlActualizaPerfil($_POST['id_perfil'], strtoupper(utf8_decode($_POST['descripcion_perfil'])), $_POST['estado_perfil'], '', '');
					if($actualizaPerfil->rowcount() >=1 ){

						echo 'Actualización exitosa';
					
					}

				}

			} catch (Exception $e) {
				
				echo $e->getMessage();										
			
			}
			

		}

		/*=========================================================================
		CONSULTA PERFILES
		===========================================================================*/
		public function ctrConsultaPerfiles(){

			$resultadoPerfiles = ModeloPerfil::mdlConsultaPerfiles();

			$perfiles = $resultadoPerfiles->fetchAll();

			return $perfiles;

		}

		/*=========================================================================
		REGISTRA PERFIL
		===========================================================================*/
		public function ctrRegistraPerfil(){

			try {
				
				if($_POST['estado_perfil'] == 'on'){

					$_POST['estado_perfil'] = 1;
				
				}else{
					$_POST['estado_perfil'] = 0;
				}

				// Consulta los procesos registrados
				$resultadoProcesos = ModeloPerfil::mdlConsultaProcesos();

				$procesos = $resultadoProcesos->fetchAll();

				$datos = [
					"descripcion_perfil" => utf8_decode($_POST['descripcion_perfil']),
					"estado_perfil"      => $_POST['estado_perfil'],
					"id_usuario"         => $_POST['id_usuario'],
					"fecha"              => date('Y-m-d'),
				];	

				if($datos['descripcion_perfil'] != ""){

					// Consultamos perfil mediante su descripción.
					$resultadoPerfil = ModeloPerfil::mdlConsultaPerfildsc($datos['descripcion_perfil']);
					$datosPerfil = $resultadoPerfil->fetch();

					if($datosPerfil['descripcion'] != ""){

						echo 'El perfil '.$datos['descripcion_perfil'].' ya se encuentra registrado en el sistema.';

					}else{

						// Registra perfil
						$registraPerfil = ModeloPerfil::mdlRegistraPerfil($datos);
						if($registraPerfil->rowcount() == 1){

							// Consulta utimo perfil registrado
							$resultadoUltimoPerfilRegistrado = ModeloPerfil::mdlConsultaUltimoPerfilRegistrado();
							
							$ultimoPerfil = $resultadoUltimoPerfilRegistrado->fetch();

							// id del ultimo perfil registrado 
							// echo $ultimoPerfil['ultimo_perfil_registrado'];

							// Variable booleana para determinar si los permisos se registran correctamente en la tabla sie_permisos
							$registro_exitoso = false;
							
							// Recorro cada uno de los procesos consultados con la finalidad de registrar en la tabla sie_permisos los permisos del perfil que se acaba de crear 
							foreach ($procesos as $proceso) {

								$datosSiePermisos = [

									'id_perfil'          => $ultimoPerfil['ultimo_perfil_registrado'], //id del ultimo perfil registrado
									'id_proceso'         => $proceso['id'],
									'activo'             => 0,
									'fecha_concedido'    => date('Y-m-d'),
									'id_usuario_concede' => $_POST['id_usuario'],
									'fecha_denegado'     => date('Y-m-d'),
									'id_usuario_deniega' => $_POST['id_usuario'],

								];

								// Registra en la tabla sie permisos
								$registraSiePermiso = ModeloPerfil::mdlRegistraSiePermisos($datosSiePermisos);
								if($registraSiePermiso->rowcount() >= 1){

									$registro_exitoso = true;
								
								}

							}

							if($registro_exitoso == true){

								echo 'Registro exitoso';	
							
							}else{

								echo 'Ocurrio un error en el registro de sie permisos';	

							}

						}else{

							echo 'Ocurrió un error al intentar registrar el perfil '.$datos['descripcion_perfil'];

						}

					}

				}else{
						
					echo 'El campo <b>Descripción</b> es requerido.';

				}

			} catch (Exception $e) {

				echo $e->getMessage();	
			
			}
				
		}

	}

	if(isset($_POST['accion'])){

		$objPerfil = new ControladorPerfil();
		
		if($_POST['accion'] == "actualizar_perfil"){

			$objPerfil->ctrActualizaPerfil();
			// echo json_encode(array('error' => 'prueba_xx_c'));
		
		}

		if($_POST['accion'] == "registrar_perfil"){

			$objPerfil->ctrRegistraPerfil();
			// echo json_encode(array('error' => 'prueba_xx_c'));
		
		}

	}

 ?>