<?php 
	
	// Este controlador es utilizado para la gestión general de procesos y macro procesos.

	// Archivo de conexión a la base de datos.
	if(@$_POST['peticion'] == 'ajax'){
		require_once "../modelo/proceso.modelo.php";
	}else{
		require_once "../../modelo/proceso.modelo.php";
	}
	
	class ControladorProceso extends ModeloProceso{
		
		/*====================================================================
		CONSULTA PROCESOS
		=====================================================================*/
		public function ctrConsultaMacroProcesos(){

			$resultado_macro_proceso = ModeloProceso::mdlConsultaMacroProcesos();
			$macro_procesos = $resultado_macro_proceso->fetchAll();

			return $macro_procesos;

		}

		/*====================================================================
		CONSULTA PROCESOS DESC_ASCENDENTE
		=====================================================================*/
		public function ctrConsultaMacroProcesosDescAscendente(){

			$resultado_macro_proceso = ModeloProceso::mdlConsultaMacroProcesosDescAscendente();
			$macro_procesos = $resultado_macro_proceso->fetchAll();

			return $macro_procesos;

		}

		/*====================================================================
		CONSULTA PROCESOS
		=====================================================================*/
		public function ctrConsultaProcesos($id_macro_p){

			$resultado_proceso = ModeloProceso::mdlConsultaProcesos($id_macro_p);
			$procesos = $resultado_proceso->fetchAll();

			return $procesos;

		}

		/*====================================================================
		CONSULTA PROCESOS
		=====================================================================*/
		public function ctrConsultaPermisos($id_perfil, $id_proceso){

			$resultado_proceso = ModeloProceso::mdlConsultaPermisos($id_perfil, $id_proceso);
			$procesos = $resultado_proceso->fetch();

			return $procesos;

		}

		/*====================================================================
		ACTUALIZA PROCESO
		=====================================================================*/
		public function ctrActualizaProceso(){

			try {
				
				// Condicional para determinar el estado de un proceso de acuerdo al valor de estado recibido mediante el método POST.
				if($_POST['estado'] == "on"){
					$_POST['estado'] = 1;
				}else{
					$_POST['estado'] = 0;
				}

				// Datos para actualizar el estado de un proceso 
				$datos = [
					'id_perfil'  => $_POST['id_perfil'],
					'id_proceso' => $_POST['id_proceso'],
					'id_usuario' => $_POST['id_usuario'],
					'estado'     => $_POST['estado'],
					'fecha'      => date('Y-m-d H:i:s'),
				];

				// Consultamos estado de perfil
				$estadoPerfil = ModeloProceso::mdlConsultaPerfil($datos['id_perfil']);

				$datosPerfil = $estadoPerfil->fetch();

				// Condicional para validar la cantidad de registros y el estado del perfil consulta.
				if ($estadoPerfil->rowcount() == 1 && $datosPerfil['estado'] == 1) {
					
					// Si el perfil es estado uno (activo) continuamos con la actualización 
					$actualizaProceso = ModeloProceso::mdlActualizaProceso($datos);
					// Condicional para validar la cantidad de filas afectadas
					if($actualizaProceso->rowcount() == 1){
						
						// Estado actualizado correctamente
						echo 'Actualización exitosa';
						
					}else{

						// Error al intentar actualizar el estado de un proceso
						echo $datos['id_perfil'];
					
					}

				}else{

					// Si el perfil consultado es estado 0 (inactivo) imprimimos el siguiente mensaje
					echo "Prfil inactivo";

				}
				
			} catch (Exception $e) {

				echo $e->getMessage();	
			
			}

		}


		
	}

	// En el siguiente código se ejecutan funciones controladoras de a cuerdo a las peticiones ajax realizadas. 
	if(isset($_POST['accion'])){

		// Instancia de la clase controladora
		$procesoControlador = new ControladorProceso();

		/* De acuerdo a la acción recibida mediante el método POST ejecutamos una función controladora*/

		if($_POST['accion'] == 'actualizar_estado_proceso'){

			$procesoControlador->ctrActualizaProceso();

		}


	}

 ?>