<?php 

if(@$_POST['peticion'] == 'ajax'){
	require_once "../modelo/gestion.riesgo.modelo.php";
}else{
	require_once "../../modelo/gestion.riesgo.modelo.php";
}

class ControladorGestonRiesgo extends ModeloGestionRiesgo
{
	
	/*=================================================================================
	CONSULTA USUARIOS (Responsables)
	==================================================================================*/
	public function ctrConsultaUsuarios(){

		$resultaoUsuarios = ModeloGestionRiesgo::mdlConsultaUsuarios();

		$usuarios = $resultaoUsuarios->fetchAll();

		return $usuarios;

	}

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

		$resultaoProcesos = ModeloGestionRiesgo::mdlConsultaProcesos($id_perfil, $id_proceso);

		$proceos = $resultaoProcesos->fetchAll();

		return $proceos;

	}

	/*=================================================================================
	CONSULTA ICONOS
	==================================================================================*/
	public function ctrConsultaIconos(){

		$resultaoIconos = ModeloGestionRiesgo::mdlConsultaIconos();

		$iconos = $resultaoIconos->fetchAll();

		return $iconos;

	}

	/*=================================================================================
	CONSULTA MACRO PROCESOS
	==================================================================================*/
	public function ctrConsultaMacroProcesos(){

		$resultadoMacroProceso = ModeloGestionRiesgo::mdlConsultaMacroProcesos();

		$macroProcesos = $resultadoMacroProceso->fetchAll();

		return $macroProcesos;

	}

	public function elimina_tilde($cadena) {
		
		$no_permitidas = array ("á","é","í","ó","ú","Á","É","Í","Ó","Ú");
		$permitidas=     array ("a","e","i","o","u","A","E","I","O","U");
		// // $texto = str_ireplace($no_permitidas, $permitidas, $cadena);

		for($i=0; $i < count($no_permitidas); $i++){

			$texto = str_ireplace($no_permitidas, $permitidas, $cadena);

		}

		return $texto;

	}

	/*=================================================================================
	CONSULTA DATOS DE PROCESO
	==================================================================================*/
	public function ctrConsultaDatosProceso(){

		$consultaProceso = ModeloGestionRiesgo::mdlConsultaDatosProceso($_POST['id_proceso']);
		if ($consultaProceso->rowcount() >=1 ) {
			
			$datos = $consultaProceso->fetch();

			$resultado = array('id' => $datos['id'], 'descripcion' => utf8_encode($datos['descripcion']), 'estado' => $datos['estado'], 'id_macro_proceso' => $datos['id_macro_proceso'], 'id_responsable' => $datos['id_responsable'], 'objetivo' => $datos['objetivo'], 'icono' => $datos['icono']);

			echo json_encode($resultado);

		}else{

			echo "No se encontaron información relacionada";
		}

	}

	/*=================================================================================
		CONSULTA IMPACTOS
	==================================================================================*/
	public function ctrConsultaImpacto(){

		$tipo = 'general'; // tipo de consulta
		$id = '';

		$resultado = ModeloGestionRiesgo::mdlConsultaImpacto($tipo, $id);

		$resultado = $resultado->fetchAll();

		return $resultado;

	}

	/*=================================================================================
		CONSULTA PROBABILIDAD
	==================================================================================*/
	public function ctrConsultaProbabilidad(){

		$tipo = 'general';
		$id = '';

		$resultado = ModeloGestionRiesgo::mdlConsultaProbabilidad($tipo, $id);

		$resultado = $resultado->fetchAll();

		return $resultado;

	}

	/*=================================================================================
		CONSULTA RIESGOS
	==================================================================================*/
	public function ctrConsultaRiesgo($tipo, $id, $titulo, $id_proceso){

		// Consultamos riesgo
		$resultado = ModeloGestionRiesgo::mdlConsultaRiesgo($tipo, $id, $titulo, $id_proceso);
		if($tipo == 'general'){

			$resultado = $resultado->fetchAll();
			return $resultado;
		
		}else if($id != ""){

			$resultado = $resultado->fetch();
			
			// Calculamos niver probabilidad recidual
			$valorprobabilidad = ModeloGestionRiesgo::mdlConsultaProbabilidad('unica', $resultado['id_probabilidad_residual']);
			$valorprobabilidad = $valorprobabilidad->fetch();

			// Consultamos valor de impacto
			$valorimpacto = ModeloGestionRiesgo::mdlConsultaImpacto('unico', $resultado['id_impacto_residual']);
			$valorimpacto = $valorimpacto->fetch();

			// Calculamos nivel consecuencia
			$valornivelconsecuencia = ($valorprobabilidad['valor'] * $valorimpacto['valor']);

			// Consultamos nivel consecuencia sie_riesgos_nivel_consecuencias
			$consultanivelconsecuenciarecidual = ModeloGestionRiesgo::mdlConsultaNivelConsecuencia('unico', '' , $valornivelconsecuencia);
			$consultanivelconsecuenciarecidual = $consultanivelconsecuenciarecidual->fetch();



			// Consultamos nivel de consecuencia 
			$consultanivelconsecuencia = ModeloGestionRiesgo::mdlConsultaNivelConsecuencia('unico', $resultado['id_nivel_consecuencia'], '');
			$consultanivelconsecuencia = $consultanivelconsecuencia->fetch();

			// Consultamos causas y consecuencias relacionadas al riesgo.
			$consultacausaconsecuencia = ModeloGestionRiesgo::mdlConsultaCausaConsecuencia('', $id, 'unica', '');	
			$consultacausaconsecuencia = $consultacausaconsecuencia->fetchAll();

			// Recorremos consecuencias consultada almacenándolas en un arreglo personalizado con el fin de codificar los acentos.
			foreach ($consultacausaconsecuencia as $key => $value) {

				// Consultamos controles relacionados a la causa. datos_control
				$consultacontrol = ModeloGestionRiesgo::mdlConsultaControl('', 'general', $value['id']);	
				$consultacontrol = $consultacontrol->fetchAll();

				foreach ($consultacontrol as $key_control => $value_control) {
					$datoscontrol[$key_control] = array('id_causa' => $value_control['id_causa'], 'id_control' => $value_control['id_control'], 'desc_control' => utf8_encode($value_control['desc_control']), 'estado_control' => $value_control['estado_control'], 'id_clase' => $value_control['id_clase'], 'desc_clase' => utf8_encode($value_control['desc_clase']), 'desc_clasificacon' => utf8_encode($value_control['desc_clasificacon']), 'id_tipo_control' => $value_control['id_tipo_control'], 'fecha_creacion' => $value_control['fecha_creacion'], 'desc_tipo_control' => utf8_encode($value_control['desc_tipo_control']));
				}

				$datosconsecuencia[$key] = array('id' => $value['id'], 'id_proceso' => $value['id_proceso'], 'estado' => $value['estado'], 'id_clase' => $value['id_clase'], 'desc_riesgo' => utf8_encode($value['desc_riesgo']), 'id_probabilidad' => $value['id_probabilidad'], 'id_impacto' => $value['id_impacto'], 'id_impacto' => $value['id_impacto'], 'id_riesgo' => $value['id_riesgo'], 'titulo_riesgo' => $value['titulo_riesgo'], 'id_causa' => $value['id_causa'], 'id_consecuencia' => $value['id_consecuencia'], 'descripcion_tipo_causa' => utf8_encode($value['descripcion_tipo_causa']), 'descripcion_tipo_consecuencia' => utf8_encode($value['descripcion_tipo_consecuencia']), 'descripcion_causa' => utf8_encode($value['descripcion_causa']), 'descripcion_consecuancia' => utf8_encode($value['descripcion_consecuancia']), 'datos_control' => $datoscontrol);
			}

			echo json_encode(array('datos'=> array_map('utf8_encode', $resultado), 'datos_nivel_consecuencia' => array_map('utf8_encode', $consultanivelconsecuencia), 'datos_causa_consecuencia' => $datosconsecuencia, 'nivel_consecuencia_residual'=> $consultanivelconsecuenciarecidual));
		
		}

	}	
	
	/*=================================================================================
		CONSULTA CAUSAS
	==================================================================================*/
	public function ctrConsultaCausa(){

		$tipo='general';

		$resultado = ModeloGestionRiesgo::mdlConsultaCausa($tipo);

		$resultado = $resultado->fetchAll(); 

		return $resultado;		

	}

	/*=================================================================================
		CONSULTA CAUSAS
	==================================================================================*/
	public function ctrConsultaConsecuencia(){

		$tipo='general';

		$resultado = ModeloGestionRiesgo::mdlConsultaConsecuencia($tipo);

		$resultado = $resultado->fetchAll(); 

		return $resultado;		

	}

	/*=================================================================================
		CONSULTA CAUSAS
	==================================================================================*/
	public function ctrConsultaClaseRiesgo(){

		$tipo='general';

		$resultado = ModeloGestionRiesgo::mdlConsultaClaseRiesgo($tipo);

		$resultado = $resultado->fetchAll(); 

		return $resultado;		

	}

	/*=================================================================================
		REGISTRA RIESGO
	==================================================================================*/
	public function ctrRegistraRiesgo(){

		try {

			$datos = [
				'id_proceso'      => $_POST['m_id_proceso'],
				'id_usuario'      => $_POST['id_usuario'],
				'titulo'          => self::limpiaString(strtoupper(utf8_encode($_POST['m_titulo']))),
				'descripcion'     => self::limpiaString(utf8_encode($_POST['m_descripcion'])),
				'clasificacion'   => utf8_encode($_POST['m_clasificacion']),
				'id_probabilidad' => $_POST['m_id_probabilidad'],
				'id_impacto'      => $_POST['m_id_impacto'],
				'estado'          => $_POST['m_estado'],
				'fecha'           => date('Y-m-d H:i:s'),
			];

			// Vlidando campos
			if($datos['id_proceso'] == "" || $datos['id_proceso'] == 0){

				echo json_encode(array('info' => 'El campo <b>Proceso</b> es requerido.'));
				exit();
			
			}	

			if($datos['id_usuario'] == "" || $datos['id_usuario'] == 0){

				echo json_encode(array('info' => 'El campo <b>Usuario</b> es requerido.'));
				exit();
			
			}	

			if($datos['titulo'] == ""){

				echo json_encode(array('info' => 'El campo <b>Titulo</b> es requerido.'));
				exit();
			
			}	

			if($datos['descripcion'] == ""){

				echo json_encode(array('info' => 'El campo <b>Descripción</b> es requerido.'));
				exit();
			
			}	

			if($datos['clasificacion'] == ""){

				echo json_encode(array('info' => 'El campo <b>Clasificación</b> es requerido.'));
				exit();
			
			}

			if($datos['id_probabilidad'] == "" || $datos['id_probabilidad'] == 0){

				echo json_encode(array('info' => 'El campo <b>Probabilidad</b> es requerido.'));
				exit();
			
			}	

			if($datos['id_impacto'] == "" || $datos['id_impacto'] == 0){

				echo json_encode(array('info' => 'El campo <b>Impacto</b> es requerido.'));
				exit();
			
			}	

			if($datos['estado'] == "" || $datos['estado'] == 10){

				echo json_encode(array('info' => 'El campo <b>Estado de riesgo</b> es requerido.'));
				exit();
			
			}

			// Consultamos valor de probabilidad
			$valorprobabilidad = ModeloGestionRiesgo::mdlConsultaProbabilidad('unica', $datos['id_probabilidad']);
			$valorprobabilidad = $valorprobabilidad->fetch();

			// Consultamos valor de impacto
			$valorimpacto = ModeloGestionRiesgo::mdlConsultaImpacto('unico', $datos['id_impacto']);
			$valorimpacto = $valorimpacto->fetch();

			// Calculamos nivel consecuencia
			$valornivelconsecuencia = ($valorprobabilidad['valor'] * $valorimpacto['valor']);

			// Consultamos nivel consecuencia sie_riesgos_nivel_consecuencias
			$consultanivelconsecuencia = ModeloGestionRiesgo::mdlConsultaNivelConsecuencia('unico', '' , $valornivelconsecuencia);
			$consultanivelconsecuencia = $consultanivelconsecuencia->fetch();
			$idnivelconsecuencia = $consultanivelconsecuencia['id'];

			// Agregamos id_nivel consecuencia al arreglo $datos 
			$datos += ['id_nivel_consecuencia' => $idnivelconsecuencia];

			// Consultamos riesgo mediante el nombre para validar su existencia
			$consultariesgo = ModeloGestionRiesgo::mdlConsultaRiesgo('unico', '', $datos['titulo'], '');
			if($consultariesgo->rowcount()>=1){
				
				echo json_encode(array('info'=> 'Ya hay un riesgo registrado en el sistema con el titulo '.$datos['titulo']));
			
			}else{

				// Registramos riesgo
				$resgitraRiesgo = ModeloGestionRiesgo::mdlRegistraRiesgo($datos);
				if($resgitraRiesgo->rowcount() == 1){
					echo json_encode(array('success'=> 'Riesgo registrado exitosamente.'));
				}else{
					echo json_encode(array('error'=> 'Ocurrió un error al intentar registrar el riesgo.'));				
				}

			}			
		
		} catch (Exception $e) {
			echo json_encode(array('error'=> 'error: '.$e.getMessage()));			
		} catch (Throwable $t){
			echo json_encode(array('error'=> 'error: '.$t));			
		}

	}
	/*=================================================================================
		CALCULA NIVEL DE CONSECUENCIA
	==================================================================================*/
	public function ctrCalculaNivelConsecuenciaRiesgo(){

		try {

			// Consultamos valor de probabilidad
			$valorprobabilidad = ModeloGestionRiesgo::mdlConsultaProbabilidad('unica', $_POST['id_probabilidad']);
			$valorprobabilidad = $valorprobabilidad->fetch();

			// Consultamos valor de impacto
			$valorimpacto = ModeloGestionRiesgo::mdlConsultaImpacto('unico', $_POST['id_impacto']);
			$valorimpacto = $valorimpacto->fetch();

			// Calculamos nivel consecuencia
			$valornivelconsecuencia = ($valorprobabilidad['valor'] * $valorimpacto['valor']);

			// Consultamos nivel consecuencia sie_riesgos_nivel_consecuencias
			$consultanivelconsecuencia = ModeloGestionRiesgo::mdlConsultaNivelConsecuencia('unico', '' , $valornivelconsecuencia);
			$consultanivelconsecuencia = $consultanivelconsecuencia->fetch();
			// $idnivelconsecuencia = $consultanivelconsecuencia['id'];

			echo json_encode(array_map('utf8_encode', $consultanivelconsecuencia));	
			
		} catch (Exception $e) {
			echo json_encode(array('error'=> 'error: '.$e.getMessage()));			
		} catch (Throwable $t){
			echo json_encode(array('error'=> 'error: '.$t));			
		}

	}

	/*=================================================================================
		ACTUALIZA RIESGO
	==================================================================================*/
	public function ctrActualizaRiesgo(){

		try {

			$datos = [
				'id_proceso'      => $_POST['id_proceso'],
				'id_usuario'      => $_POST['id_usuario'],
				'id_riesgo'       => $_POST['id_riesgo'],
				'titulo'          => strtoupper(utf8_encode($_POST['titulo'])),
				'descripcion'     => utf8_encode($_POST['descripcion']),
				'clasificacion'   => utf8_encode($_POST['clasificacion']),
				'id_probabilidad' => $_POST['id_probabilidad'],
				'id_impacto'      => $_POST['id_impacto'],
				'estado'          => $_POST['estado'],
				'fecha'          => date('Y-m-d H:i:s'),
			];

			// Vlidando campos
			if($datos['id_usuario'] == "" || $datos['id_usuario'] == 0){

				echo json_encode(array('info' => 'El campo <b>Usuario</b> es requerido.'));
				exit();
			
			}

			if($datos['id_riesgo'] == "" || $datos['id_riesgo'] == 0){

				echo json_encode(array('info' => 'El campo <b>Seleccionar riesgo</b> es requerido.'));
				exit();
			
			}

			if($datos['id_usuario'] == "" || $datos['id_usuario'] == 0){

				echo json_encode(array('info' => 'El campo <b>Usuario</b> es requerido.'));
				exit();
			
			}

			if($datos['estado'] == "" || $datos['estado'] == 10){

				echo json_encode(array('info' => 'El campo <b>Estado de riesgo</b> es requerido.'));
				exit();
			
			}	

			// Actualizamos riesgo
			$actualizariesgo = ModeloGestionRiesgo::mdlActualizaRiesgo($datos);
			if($actualizariesgo->rowcount() == 1){
				// Validamos filas afectadas

				echo json_encode(array('success'=> 'Riesgo actualizado exitosamente.'));

			}else{
				
				echo json_encode(array('info'=> 'Ocurrió un error al intentar actualizar el riesgo.'));
			
			}			
		
		} catch (Exception $e) {
			echo json_encode(array('error'=> 'error: '.$e.getMessage()));			
		} catch (Throwable $t){
			echo json_encode(array('error'=> 'error: '.$t));			
		}	

	}

	/*=================================================================================
		RESGISTRA CAUSA
	==================================================================================*/
	public function ctrRegistraCausa(){

		try {

			$datos = [
				'id_usuario'               => $_POST['id_usuario'],
				'id_causa_consecuencia'    => $_POST['nc_id_causa_consecuencia'],
				'id_riesgo'                => $_POST['nc_id_riesgo'],
				'id_causa'                 => $_POST['nc_id_causa'],
				'id_consecuencia'          => $_POST['nc_id_consecuencia'],
				'descripcion_causa'        => utf8_decode($_POST['nc_descripcion_causa']),
				'descripcion_consecuencia' => utf8_decode($_POST['nc_descripcion_consecuencia']),
				'fecha'                    => date('Y-m-d H:i:s'),
			];

			// Validamos la acción recibida y de acuerdo a esta registramos o actualizamos una causa.
			if($_POST['accion'] == "actualizar_causa"){

					// Vlidando campos
				if($datos['id_usuario'] == "" || $datos['id_usuario'] == 0){

					echo json_encode(array('info' => 'El campo <b>Usuario</b> es requerido.'));
					exit();
				
				}

				if($datos['id_riesgo'] == "" || $datos['id_riesgo'] == 0){

					echo json_encode(array('info' => 'Asegurate de seleccionar un riesgo.'));
					exit();
				
				}

				if($datos['descripcion_causa'] == ""){

					echo json_encode(array('info' => 'El campo <b>Descripción causa</b> es requerido.'));
					exit();
				
				}

				if($datos['descripcion_consecuencia'] == ""){

					echo json_encode(array('info' => 'El campo <b>Descripción consecuencia</b> es requerido.'));
					exit();
				
				}

				// Actualiza causa
				$actualizacausa = ModeloGestionRiesgo::mdlActualizaCausa($datos);
				if($actualizacausa->rowcount() == 1){
					// Validamos filas afectadas

					echo json_encode(array('success'=> 'Causa actualizada exitosamente.', 'id_riesgo' => $datos['id_riesgo'], ));

				}else{
					
					echo json_encode(array('info'=> 'No se encontraron cambios.', 'data'=>$datos));
				
				}

			}else{

				// Vlidando campos
				if($datos['id_usuario'] == "" || $datos['id_usuario'] == 0){

					echo json_encode(array('info' => 'El campo <b>Usuario</b> es requerido.'));
					exit();
				
				}

				if($datos['id_riesgo'] == "" || $datos['id_riesgo'] == 0){

					echo json_encode(array('info' => 'Asegurate de seleccionar un riesgo.'));
					exit();
				
				}

				if($datos['id_causa'] == "" || $datos['id_causa'] == 0){

					echo json_encode(array('info' => 'Asegurate de seleccionar una causa.'));
					exit();
				
				}

				if($datos['id_consecuencia'] == "" || $datos['id_consecuencia'] == 0){

					echo json_encode(array('info' => 'Asegurate de seleccionar una consecuencia.'));
					exit();
				
				}

				if($datos['descripcion_causa'] == ""){

					echo json_encode(array('info' => 'El campo <b>Descripción causa</b> es requerido.'));
					exit();
				
				}

				if($datos['descripcion_consecuencia'] == ""){

					echo json_encode(array('info' => 'El campo <b>Descripción consecuencia</b> es requerido.'));
					exit();
				
				}

				// Registra causa
				$registracausa = ModeloGestionRiesgo::mdlRegistraCausa($datos);
				if($registracausa->rowcount() == 1){
					// Validamos filas afectadas

					echo json_encode(array('success'=> 'Causa registrada exitosamente.', 'id_riesgo' => $datos['id_riesgo']));

				}else{
					
					echo json_encode(array('info'=> 'Ocurrió un error al intentar registrar la causa.', 'data'=>$datos));
				
				}

			}	
		
		} catch (Exception $e) {
			echo json_encode(array('error'=> 'error: '.$e.getMessage()));			
		} catch (Throwable $t){
			echo json_encode(array('error'=> 'error: '.$t));			
		}	

	}

	/*=================================================================================
		CONSULTA CASIFICACIÓN DE CONTROLES
	=================================================================================*/
	public function ctrConsultaClasificacionControl($id, $tipo, $descripcion){

		try{

			$resultado = ModeloGestionRiesgo::mdlConsultaClasificacionControl($id, $tipo, $descripcion);
			if($tipo == 'unica'){
				$resultado = $resultado->fetch();
			}else if($tipo == 'general'){
				$resultado = $resultado->fetchAll();
			}

			return $resultado;
			
		} catch (Exception $e) {
			echo json_encode(array('error'=> 'error: '.$e.getMessage()));			
		} catch (Throwable $t){
			echo json_encode(array('error'=> 'error: '.$t));			
		}

	}

	/*=================================================================================
		CONSULTA NIVEL EVALUACIÓN
	==================================================================================*/
	public function ctrConsultaNivelEvaluacion($id, $tipo, $descripcion){

		try{

			$resultado = ModeloGestionRiesgo::mdlConsultaNivelEvaluacion($id, $tipo, $descripcion);
			if($tipo == 'unica'){
				
				$resultado = $resultado->fetch();

				echo json_encode(array_map('utf8_encode', $resultado));

			}else if($tipo == 'general'){
				$resultado = $resultado->fetchAll();
			}

			return $resultado;
			
		} catch (Exception $e) {
			echo json_encode(array('error'=> 'error: '.$e.getMessage()));			
		} catch (Throwable $t){
			echo json_encode(array('error'=> 'error: '.$t));			
		}

	}

	/*=================================================================================
		CONSULTA NIVEL EVALUACIÓN
	==================================================================================*/
	public function ctrConsultaNivelVerificacion($id, $tipo, $descripcion){

		try{

			$resultado = ModeloGestionRiesgo::mdlConsultaNivelVerificacion($id, $tipo, $descripcion);
			if($tipo == 'unica' && count($id)){
				
				$resultado = $resultado->fetch();

				echo json_encode(array_map('utf8_encode', $resultado));

			}else if($tipo == 'general'){
				$resultado = $resultado->fetchAll();
			}

			return $resultado;
			
		} catch (Exception $e) {
			echo json_encode(array('error'=> 'error: '.$e.getMessage()));			
		} catch (Throwable $t){
			echo json_encode(array('error'=> 'error: '.$t));			
		}

	}

	/*=================================================================================
		REGISTRA CONTROL
	==================================================================================*/
	public function ctrRegistraControl(){

		try{

			if($_POST['checkbox1'] == 'on' && $_POST['checkbox2'] == 'on' && $_POST['checkbox3'] == 'on' && $_POST['checkbox4'] == 'on' && $_POST['checkbox5'] == 'on'){
				$nivel_efectividad = 5;				
			}else if($_POST['checkbox1'] == 'on' && $_POST['checkbox2'] == 'on' && $_POST['checkbox3'] == 'on' && $_POST['checkbox4'] == 'on'){
				$nivel_efectividad = 4;				
			}else if($_POST['checkbox1'] == 'on' && $_POST['checkbox2'] == 'on' && $_POST['checkbox3'] == 'on'){
				$nivel_efectividad = 3;				
			}else if($_POST['checkbox1'] == 'on' && $_POST['checkbox2'] == 'on'){
				$nivel_efectividad = 2;				
			}else if($_POST['checkbox1'] == 'on' ){
				$nivel_efectividad = 1;				
			}

			$datos = [
				'id_usuario'            => $_POST['id_usuario'],
				'id_causa'              => $_POST['mc_id_causa'],
				'id_tipo_control'       => $_POST['mc_id_tipo_control'],
				'id_clasificacion'      => $_POST['mc_id_clasificacion'],
				'id_nivel_consecuencia' => $_POST['mc_id_nivel_consecuencia'],
				'casilla_valoracion'    => $_POST['input_casilla_valoracion'],
				'id_evaluacion'         => $_POST['mc_id_evaluacion'],
				'descripcion_control'   => self::limpiaString(utf8_encode($_POST['mc_descripcion_control'])),
				'fecha'                 => date('Y-m-d H:i:s'),
				'estado'                => 1, //$_POST['mc_estado'],
				'id_probabilidad'       => $_POST['mc_id_probabilidad'],
				'id_impacto'            => $_POST['mc_id_impacto'],
				'id_evaluacion'         => $_POST['mc_id_evaluacion'],
				'nivel_efectividad'     => $nivel_efectividad,
			];

			// Vlicadión de campos.
			if($datos['id_usuario'] == "" || $datos['id_usuario'] == 0){

				echo json_encode(array('info' => 'No se recibió un usuario.'));
				exit();
			
			}

			if(trim($datos['id_tipo_control']) == "0" ){

				echo json_encode(array('info' => 'El campo <b>Tipo de control</b> es requerido.'));
				exit();
			
			}

			if($datos['id_clasificacion'] == "" || $datos['id_clasificacion'] == 0){

				echo json_encode(array('info' => 'El campo <b>Clasificación de control</b> es requerido.'));
				exit();
			
			}

			if($datos['descripcion_control'] == ""){

				echo json_encode(array('info' => 'El campo <b>Descripción</b> es requerido.'));
				exit();
			
			}
			

			// Consultamos control con la descripción recibida para valdar su existencia.
			$control = ModeloGestionRiesgo::mdlConsultaControl('', 'unico', $datos['descripcion_control']);
			$control = $control->fetch();

			if($control['id'] == ''){
				
				// Registra control
				$registracontrol = ModeloGestionRiesgo::mdlRegistraControl($datos);
				if($registracontrol->rowcount()==1){
						
					echo json_encode(array('success'=>'Control registrado exitosamente.'));
					exit();

				}else{
					echo json_encode(array('info'=>'Ocurrió un error al intentar registrar el control.'.$datos['descripcion_control']));
					exit();
				}

			}else{
				echo json_encode(array('info'=>'Ya hay un control registrado en el sistema con esta descripción.'));
				exit();	
			}
			
		} catch (Exception $e) {
			echo json_encode(array('error'=> 'error: '.$e.getMessage()));			
		} catch (Throwable $t){
			echo json_encode(array('error'=> 'error: '.$t));			
		}

	}

	// mdlActualizaControl($datos)
	/*=================================================================================
		ACTUALIZA CONTROL
	==================================================================================*/
	public function ctrActualizaControl(){

		try{

			$datos = [
				'id_usuario'            => $_POST['id_usuario'],
				'id_causa'              => $_POST['actualiza_control_id_causa'],
				'id_control'            => $_POST['actualiza_control_id_control'],
				'descripcion_control'   => utf8_decode($_POST['actualiza_control_descripcion']),
				'fecha'                 => date('Y-m-d H:i:s'),
				// 'id_clasificacion'      => $_POST['actualiza_control_id_clasificacion'],
				// 'id_tipo_control'       => $_POST['actualiza_control_id_tipo_control'],
				// 'estado'                => $_POST['actualiza_control_estado'],
			];

			// Vlicadión de campos.
			if($datos['id_causa'] == "" || $datos['id_causa'] == 0){

				echo json_encode(array('info' => 'No se recibió el identificador de la causa.'));
				exit();
			
			}

			if(trim($datos['descripcion_control']) == "" ){

				echo json_encode(array('info' => 'El campo <b>Descripción</b> es requerido.'));
				exit();
			
			}

			// Actualizamos control
			$actualizacontrol = ModeloGestionRiesgo::mdlActualizaControl($datos);
			if($actualizacontrol->rowcount() == 1){
				echo json_encode(array('success' => 'Control actualizado exitosamente.'));
				exit();
			}else{
				echo json_encode(array('info' => 'No se encontraron cambios.'));
				exit();
			}	


		} catch (Exception $e) {
			echo json_encode(array('error'=> 'error: '.$e.getMessage()));			
		} catch (Throwable $t){
			echo json_encode(array('error'=> 'error: '.$t));			
		}

	}

	public function ctrRegistraEvaluacion(){

		try {
			
			if($_POST['check1'] == 'on' && $_POST['check2'] == 'on' && $_POST['check3'] == 'on' && $_POST['check4'] == 'on' && $_POST['check5'] == 'on'){
				$nivel_efectividad = 5;				
				$_POST['check1'] = 1;
				$_POST['check2'] = 2;
				$_POST['check3'] = 3; 
				$_POST['check4'] = 4;
				$_POST['check5'] = 5;
			}else if($_POST['check1'] == 'on' && $_POST['check2'] == 'on' && $_POST['check3'] == 'on' && $_POST['check4'] == 'on'){
				$nivel_efectividad = 4;
				$_POST['check1'] = 1;
				$_POST['check2'] = 2;
				$_POST['check3'] = 3; 
				$_POST['check4'] = 4;				
			}else if($_POST['check1'] == 'on' && $_POST['check2'] == 'on' && $_POST['check3'] == 'on'){
				$nivel_efectividad = 3;
				$_POST['check1'] = 1;
				$_POST['check2'] = 2;
				$_POST['check3'] = 3;				
			}else if($_POST['check1'] == 'on' && $_POST['check2'] == 'on'){
				$nivel_efectividad = 2;
				$_POST['check1'] = 1;
				$_POST['check2'] = 2;				
			}else if($_POST['check1'] == 'on' ){
				$nivel_efectividad = 1;
				$_POST['check1'] = 1;				
			}

			$datos = [
				'id_usuario'            => $_POST['id_usuario'],
				'id_riesgo'             => $_POST['id_riesgo'],
				'id_control'            => $_POST['evalua_id_control'],
				'id_causa'              => $_POST['evalua_id_causa'],
				'id_clasificacion'      => $_POST['evalua_id_clasificacion'],
				'casilla_valoracion'    => $_POST['input_casilla_valoracion'],
				'id_evaluacion'         => $_POST['evalua_id_evaluacion'],
				'fecha'                 => date('Y-m-d H:i:s'),
				'nivel_efectividad'     => $nivel_efectividad,
				'id_nivel_verificacion_definido'     => $_POST['check1'],
				'id_nivel_verificacion_documentado'  => $_POST['check2'],
				'id_nivel_verificacion_implementado' => $_POST['check3'],
				'id_nivel_verificacion_socializado'  => $_POST['check4'],
				'id_nivel_verificacion_evaluado'     => $_POST['check5'],
				'puntaje_evaluacion'                 => $_POST['input_puntaje_evaluacion'],

			];

			if($datos['id_evaluacion']==0){

				echo json_encode(array('info' => 'El campo <b>Evaluación</b> es requerido.'));
				exit();
			
			}


			$consultaEvaluacionControl = ModeloGestionRiesgo::mdlEvaluacionControl($datos['id_control'], 'unica', '');
			if($consultaEvaluacionControl->rowcount() >= 1){
				$consultaEvaluacionControl = $consultaEvaluacionControl->fetch(); 

				// Consultamos riesgo
				$consultariesgo = ModeloGestionRiesgo::mdlConsultaRiesgo('unico', $datos['id_riesgo'], '', '');
				$consultariesgo = $consultariesgo->fetch();

				$probabilidad = '';
				$impacto = '';

				if($_POST['evalua_id_tipo_control'] == 1){
					// Si el tipo de control es 1 (preventivo), le restamos al id probabilidad recibido, la cantidad de casillas recibidas
					
					if($consultaEvaluacionControl['casillas_valoracion'] == 1 && $datos['casilla_valoracion'] == 1 && $consultaEvaluacionControl['puntaje'] < $datos['puntaje_evaluacion'] ){

						$probabilidad = ($consultariesgo['id_probabilidad_residual'] - 1);

					}else if($consultaEvaluacionControl['casillas_valoracion'] == 1 && $datos['casilla_valoracion'] == 1 && $consultaEvaluacionControl['puntaje'] > $datos['puntaje_evaluacion'] ){

						$probabilidad = ($consultariesgo['id_probabilidad_residual'] + 1);

					}else if($consultaEvaluacionControl['casillas_valoracion'] == 2 && $datos['casilla_valoracion'] == 0){

						$probabilidad = ($consultariesgo['id_probabilidad_residual'] + 2);

					}else if($consultaEvaluacionControl['casillas_valoracion'] == 1 && $datos['casilla_valoracion'] == 0){

						$probabilidad = ($consultariesgo['id_probabilidad_residual'] + 1);

					}else if($consultaEvaluacionControl['casillas_valoracion'] < $datos['casilla_valoracion']){

						$probabilidad = ($consultariesgo['id_probabilidad_residual'] - $datos['casilla_valoracion']);

					}else if($consultaEvaluacionControl['casillas_valoracion'] > $datos['casilla_valoracion']){

						$probabilidad = ($consultariesgo['id_probabilidad_residual'] + $datos['casilla_valoracion']);

					}else{

						$probabilidad = $consultariesgo['id_probabilidad_residual'];

					}
					
				}else if($_POST['evalua_id_tipo_control'] == 2){
					// Si el tipo de control es 2 (Correctivo), le restamos al id impacto recibido, la cantidad de casillas recibidas

					if($consultaEvaluacionControl['casillas_valoracion'] == 1 && $datos['casilla_valoracion'] == 1 && $consultaEvaluacionControl['puntaje'] < $datos['puntaje_evaluacion'] ){

						$probabilidad = ($consultariesgo['id_impacto_residual'] - 1);

					}else if($consultaEvaluacionControl['casillas_valoracion'] == 1 && $datos['casilla_valoracion'] == 1 && $consultaEvaluacionControl['puntaje'] > $datos['puntaje_evaluacion'] ){

						$probabilidad = ($consultariesgo['id_impacto_residual'] + 1);

					}else if($consultaEvaluacionControl['casillas_valoracion'] == 2 && $datos['casilla_valoracion'] == 0){

						$impacto = ($consultariesgo['id_impacto_residual'] + 2);

					}else if($consultaEvaluacionControl['casillas_valoracion'] == 1 && $datos['casilla_valoracion'] == 0){

						$impacto = ($consultariesgo['id_impacto_residual'] + 1);

					}else if($consultaEvaluacionControl['casillas_valoracion'] < $datos['casilla_valoracion']){

						$impacto = ($consultariesgo['id_impacto_residual'] - $datos['casilla_valoracion']);

					}else if($consultaEvaluacionControl['casillas_valoracion'] > $datos['casilla_valoracion']){

						$impacto = ($consultariesgo['id_impacto_residual'] + $datos['casilla_valoracion']);

					}else{

						$impacto = $consultariesgo['id_impacto_residual'];

					}

				}

				if($probabilidad == ''){

					$datos += ['id_probabilidad'       => $consultariesgo['id_probabilidad_residual']];
				
				}else{

					$datos += ['id_probabilidad'       => $probabilidad];

				}

				if($impacto == ''){

					$datos += ['id_impacto'            => $consultariesgo['id_impacto_residual']];

				}else{
					$datos += ['id_impacto'            => $impacto];
				}
				
				// Calculamos nivel probabilidad residual
				$valorprobabilidad = ModeloGestionRiesgo::mdlConsultaProbabilidad('unica', $datos['id_probabilidad']);
				$valorprobabilidad = $valorprobabilidad->fetch();

				// Consultamos valor de impacto
				$valorimpacto = ModeloGestionRiesgo::mdlConsultaImpacto('unico', $datos['id_impacto']);
				$valorimpacto = $valorimpacto->fetch();

				// Calculamos nivel consecuencia
				$valornivelconsecuencia = ($valorprobabilidad['valor'] * $valorimpacto['valor']);

				// Consultamos nivel consecuencia sie_riesgos_nivel_consecuencias
				$consultanivelconsecuencia = ModeloGestionRiesgo::mdlConsultaNivelConsecuencia('unico', '' , $valornivelconsecuencia);
				$consultanivelconsecuencia = $consultanivelconsecuencia->fetch();

				$datos += ['id_nivel_consecuencia' => $consultanivelconsecuencia['id']];

				
				$actualizaEvaluacionControl = ModeloGestionRiesgo::mdlActualizaEvaluacionControl($datos);
				// if($actualizaEvaluacionControl->rowcount()>=1){

					$actualizaRiesgo = ModeloGestionRiesgo::mdlActualizaRiesgo($datos);					
					// if($actualizaRiesgo->rowcount()>=1 ){

						echo json_encode(array('success'=>'Evaluación actualizada exitosamente.', 'id_nivel_consecuencia_residual' => array_map('utf8_encode', $consultanivelconsecuencia)));
						exit();

					// }
					// else{

					// 	echo json_encode(array('info'=>'Ocurrió un error al aintentar actualizar el riesgo.'));
					// 	exit();

					// }

				// }else{
				// 	echo json_encode(array('info'=>'No se encontraron cambios'));
				// 	exit();
				// }


			}else{

				$datos += ['id_probabilidad'       => $_POST['evalua_id_probabilidad']];
			
				$datos += ['id_impacto'            => $_POST['evalua_id_impacto']];
				
				// Calculamos niver probabilidad recidual
				$valorprobabilidad = ModeloGestionRiesgo::mdlConsultaProbabilidad('unica', $datos['id_probabilidad']);
				$valorprobabilidad = $valorprobabilidad->fetch();

				// Consultamos valor de impacto
				$valorimpacto = ModeloGestionRiesgo::mdlConsultaImpacto('unico', $datos['id_impacto']);
				$valorimpacto = $valorimpacto->fetch();

				// Calculamos nivel consecuencia
				$valornivelconsecuencia = ($valorprobabilidad['valor'] * $valorimpacto['valor']);

				// Consultamos nivel consecuencia sie_riesgos_nivel_consecuencias
				$consultanivelconsecuencia = ModeloGestionRiesgo::mdlConsultaNivelConsecuencia('unico', '' , $valornivelconsecuencia);
				$consultanivelconsecuencia = $consultanivelconsecuencia->fetch();

		        $datos += ['id_nivel_consecuencia' => $consultanivelconsecuencia['id']];

				// Registramos evaluación
				$registraevaluacion = ModeloGestionRiesgo::mdlRegistraEvaluacionControl($datos);
				if($registraevaluacion->rowcount()==1){
					echo json_encode(array('success'=>'Evaluación registrada exitosamente.', 'id_nivel_consecuencia_residual' => array_map('utf8_encode', $consultanivelconsecuencia)));
					exit();
				}else{
					echo json_encode(array('error'=>'Ocurrió un error al intentar registrar la evaluación.', 'd'=>$datos));
					exit();	
				}
			}
			

		} catch (Exception $e) {
			echo json_encode(array('error'=> 'error: '.$e.getMessage()));			
		} catch (Throwable $t){
			echo json_encode(array('error'=> 'error: '.$t));			
		}

	}

	public function ctrRegistraEvaluacion1(){

		try {
			
			if($_POST['check1'] == 'on' && $_POST['check2'] == 'on' && $_POST['check3'] == 'on' && $_POST['check4'] == 'on' && $_POST['check5'] == 'on'){
				$nivel_efectividad = 5;				
				$_POST['check1'] = 1;
				$_POST['check2'] = 2;
				$_POST['check3'] = 3; 
				$_POST['check4'] = 4;
				$_POST['check5'] = 5;
			}else if($_POST['check1'] == 'on' && $_POST['check2'] == 'on' && $_POST['check3'] == 'on' && $_POST['check4'] == 'on'){
				$nivel_efectividad = 4;
				$_POST['check1'] = 1;
				$_POST['check2'] = 2;
				$_POST['check3'] = 3; 
				$_POST['check4'] = 4;				
			}else if($_POST['check1'] == 'on' && $_POST['check2'] == 'on' && $_POST['check3'] == 'on'){
				$nivel_efectividad = 3;
				$_POST['check1'] = 1;
				$_POST['check2'] = 2;
				$_POST['check3'] = 3;				
			}else if($_POST['check1'] == 'on' && $_POST['check2'] == 'on'){
				$nivel_efectividad = 2;
				$_POST['check1'] = 1;
				$_POST['check2'] = 2;				
			}else if($_POST['check1'] == 'on' ){
				$nivel_efectividad = 1;
				$_POST['check1'] = 1;				
			}

			$datos = [
				
				'id_usuario'            => $_POST['id_usuario'],
				'id_riesgo'             => $_POST['id_riesgo'],
				'id_control'            => $_POST['evalua_id_control'],
				'id_causa'              => $_POST['evalua_id_causa'],
				'id_clasificacion'      => $_POST['evalua_id_clasificacion'],
				'casilla_valoracion'    => $_POST['input_casilla_valoracion'],
				'id_evaluacion'         => $_POST['evalua_id_evaluacion'],
				'fecha'                 => date('Y-m-d H:i:s'),
				'nivel_efectividad'     => $nivel_efectividad,
				'id_nivel_verificacion_definido'     => $_POST['check1'],
				'id_nivel_verificacion_documentado'  => $_POST['check2'],
				'id_nivel_verificacion_implementado' => $_POST['check3'],
				'id_nivel_verificacion_socializado'  => $_POST['check4'],
				'id_nivel_verificacion_evaluado'     => $_POST['check5'],
				'puntaje_evaluacion'                 => $_POST['input_puntaje_evaluacion'],

			];			

			$consultaEvaluacionControl = ModeloGestionRiesgo::mdlEvaluacionControl($datos['id_control'], 'unica', '');
			if($consultaEvaluacionControl->rowcount() >= 1){
				$consultaEvaluacionControl = $consultaEvaluacionControl->fetch(); 

			}else{
				
				$consultariesgo = ModeloGestionRiesgo::mdlConsultaRiesgo('unico', $datos['id_riesgo'], '', '');
				$consultariesgo = $consultariesgo->fetch();

		        $datos += ['id_nivel_consecuencia' => $consultariesgo['id_nivel_consecuencia_residual']];

		        $datos += ['id_probabilidad'       => $consultariesgo['id_probabilidad_residual']];
			
				$datos += ['id_impacto'            => $consultariesgo['id_impacto_residual']];

				// Registramos evaluación
				$registraevaluacion = ModeloGestionRiesgo::mdlRegistraEvaluacionControl($datos);
				// if($registraevaluacion->rowcount()==1){
				// 	echo json_encode(array('success'=>'Evaluación registrada exitosamente.', 'id_nivel_consecuencia_residual' => array_map('utf8_encode', $consultanivelconsecuencia)));
				// 	exit();
				// }else{
				// 	echo json_encode(array('error'=>'Ocurrió un error al intentar registrar la evaluación.', 'd'=>$datos));
				// 	exit();	
				// }
			}
			

		} catch (Exception $e) {
			echo json_encode(array('error'=> 'error: '.$e.getMessage()));			
		} catch (Throwable $t){
			echo json_encode(array('error'=> 'error: '.$t));			
		}

	}

	public function ctrConsultaEvaluacionControl(){

		try{

			$consultaEvaluacionControl = ModeloGestionRiesgo::mdlEvaluacionControl($_POST['id_control'], 'unica', '');
			if($consultaEvaluacionControl->rowcount() >= 1){

				$consultaEvaluacionControl = $consultaEvaluacionControl->fetch();
				
				echo json_encode(array_map('utf8_encode', $consultaEvaluacionControl));
				exit();

			}else{

				echo json_encode(array('info' => 'No se encontraron evaluaciones relacionadas.'));
				exit();

			}

		} catch (Exception $e) {
			echo json_encode(array('error'=> 'error: '.$e.getMessage()));			
		} catch (Throwable $t){
			echo json_encode(array('error'=> 'error: '.$t));			
		}	

	}


	/*========================================================= Funciones relacionadas al dasboard ====================================*/
	public function ctrConsultaNivelConsecuenciaProceso(){

		try {
			
			// Consultamos cantidad de riesgos por zona de riesgo.
			$nivelesconsecuencia = ModeloGestionRiesgo::mdlConsultaNivelConsecuenciaProceso();
			$nivelesconsecuencia = $nivelesconsecuencia->fetchAll();

			// Consultamos cantidad de riesgos por proceso.
			$riesgosproceso = ModeloGestionRiesgo::mdlConsultaCantidadRiesgosProceso();
			$riesgosproceso = $riesgosproceso->fetchAll();

			foreach ($riesgosproceso as $key => $value) {
				$riesgosproceso_[$key] = array('id_proceso' => $value['id_proceso'], 'desc_proceso' => utf8_encode($value['desc_proceso']), 'cantidad' => $value['cantidad']);
			}

			// Consultamos cantidad de riesgos residuales por zona.
			$cantidadriesgoresidualzona = ModeloGestionRiesgo::mdlConsultaCantidadRiesgosResidualesZona();
			$cantidadriesgoresidualzona = $cantidadriesgoresidualzona->fetchAll();

			// Consultamos promedio niveles consecuencia por proceso.
			$promedionivelconsecuenciaproceso = ModeloGestionRiesgo::mdlConsultaPromedioNivelConsecuenciaProceso();
			$promedionivelconsecuenciaproceso = $promedionivelconsecuenciaproceso->fetchAll();

			foreach ($promedionivelconsecuenciaproceso as $key => $value_promedio) {
				$promedionivelconsecuenciaprocesoarray[$key] = array('id_proceso' => $value_promedio['id_proceso'], 'desc_proceso' => utf8_encode($value_promedio['desc_proceso']), 'promedio' => round($value_promedio['promedio']));
			}

			// Consultamos probabilidad.
			$probabilidad = ModeloGestionRiesgo::mdlConsultaProbabilidaddesc('general', '');
			$probabilidad = $probabilidad->fetchAll();

			// Consultamos impacto.
			$impacto = ModeloGestionRiesgo::mdlConsultaImpacto('general', '');
			$impacto = $impacto->fetchAll();
			foreach ($impacto as $key => $value_impacto) {
			
				$impacto[$key] = array('id' => $value_impacto['id'], 'descripcion' => utf8_encode($value_impacto['descripcion']), 'valor' => $value_impacto['valor']);
			
			}

			// Matriz de riesgos detallando cantidad de riesgos por nivel de consecuencia.
			$html = '<div class="col-sm-1 mt-5 text-center" id="text_probabilidad" style="margin-left: 0px; font-weight: bold; writing-mode: vertical-lr; transform: rotate(180deg);">
                        PROBABILIDAD
                      </div>
                      <div class="col-sm-10 mt-5">
                        <p class="h4"><b>Matriz de riesgos detallando cantidad de riesgos por nivel de consecuencia</b></p>
                        <table class="table table-bordered" id="matriz">';
			$color = '';
			foreach ($probabilidad as $key_probabilidad => $value_probabilidad) {
				$html .= '<tr>
						   <td>'.$value_probabilidad['descripcion'].'</td>
				';

				foreach ($impacto as $key_impacto => $value_impacto) {
					
					// Definición de colores
					if(($value_probabilidad['valor'] == 1 && $value_impacto['valor'] == 1) || ($value_probabilidad['valor'] == 1 && $value_impacto['valor'] == 2) || ($value_probabilidad['valor'] == 1 && $value_impacto['valor'] == 3) || ($value_probabilidad['valor'] == 2 && $value_impacto['valor'] == 1) || ($value_probabilidad['valor'] == 3 && $value_impacto['valor'] == 1)){
						$color = '#28A745';
					}else if(($value_probabilidad['valor'] == 5 && $value_impacto['valor'] == 1) || ($value_probabilidad['valor'] == 4 && $value_impacto['valor'] == 1) || ($value_probabilidad['valor'] == 3 && $value_impacto['valor'] == 2) || ($value_probabilidad['valor'] == 2 && $value_impacto['valor'] == 2) || ($value_probabilidad['valor'] == 2 && $value_impacto['valor'] == 3) || ($value_probabilidad['valor'] == 4 && $value_impacto['valor'] == 2) || ($value_probabilidad['valor'] == 2 && $value_impacto['valor'] == 4) || ($value_probabilidad['valor'] == 1 && $value_impacto['valor'] == 4) || ($value_probabilidad['valor'] == 1 && $value_impacto['valor'] == 5)){
						
						$color = '#FBFF12';

					}else if(($value_probabilidad['valor'] == 5 && $value_impacto['valor'] == 2) || ($value_probabilidad['valor'] == 5 && $value_impacto['valor'] == 3) || ($value_probabilidad['valor'] == 4 && $value_impacto['valor'] == 3) || ($value_probabilidad['valor'] == 3 && $value_impacto['valor'] == 3) || ($value_probabilidad['valor'] == 3 && $value_impacto['valor'] == 4) || ($value_probabilidad['valor'] == 3 && $value_impacto['valor'] == 5) || ($value_probabilidad['valor'] == 2 && $value_impacto['valor'] == 5)){
						$color = '#FF8200';
					}else if(($value_probabilidad['valor'] == 5 && $value_impacto['valor'] == 4) || ($value_probabilidad['valor'] == 4 && $value_impacto['valor'] == 4) || ($value_probabilidad['valor'] == 5 && $value_impacto['valor'] == 5) || ($value_probabilidad['valor'] == 4 && $value_impacto['valor'] == 5)){
						$color = '#FF0011';
					}else{
						$color = '#FFF';
					}


					$cantidadriesgonivelconsecuencia = ModeloGestionRiesgo::mdlConsultaCantidadRiesgosPorNiveConsecuencia($value_probabilidad['valor'], $value_impacto['valor']);
					$cantidadriesgonivelconsecuencia = $cantidadriesgonivelconsecuencia->fetch(); // cantidad_riesgos

					$html .= '<td class="text-center" style="background: '.$color.'; font-size: 20px;"> '.$cantidadriesgonivelconsecuencia['cantidad_riesgos'].' </td>';

				}

				$html .= '</tr>';


			}

			$html .= '<tr>
						<td></td>';
			foreach ($impacto as $key => $value_impacto) {
					$html .= '<td>'.$value_impacto['descripcion'].'</td>';
			}

			$html .= '</tr>
					  <tr>
						<td colspan="6" class="text-center" style="font-weight: bold;">IMPACTO</td>
					  </tr>
					</table>
                </div>';

			echo json_encode(
				array(

					  'niveles_consecuencia'                =>$nivelesconsecuencia, 
					  'riesgos_proceso'                     => $riesgosproceso_, 
					  'nivel_consecuencia_riesgo_residual'  => $cantidadriesgoresidualzona, 
					  'promedio_nivel_consecuencia_proceso' => $promedionivelconsecuenciaprocesoarray, 
					  'probabilidad'                        => $probabilidad, 
					  'impacto'                             => $impacto,
					  'datamatriz'                          => $html,
				)
			);

		} catch (Exception $e) {
			echo json_encode(array('error'=> 'error: '.$e.getMessage()));			
		} catch (Throwable $t){
			echo json_encode(array('error'=> 'error: '.$t));			
		}	

	}		


	public function ctrConsultaRiesgoProceso(){

		try {
			
			// Consultamos cantidad de riesgos por zona de riesgo.
			$riesgos = ModeloGestionRiesgo::mdlConsultaRiesgo('general', '', '', $_POST['id_proceso']);
			$riesgos = $riesgos->fetchAll();

			echo json_encode(array('riesgos'=>$riesgos));

		} catch (Exception $e) {
			echo json_encode(array('error'=> 'error: '.$e.getMessage()));			
		} catch (Throwable $t){
			echo json_encode(array('error'=> 'error: '.$t));			
		}	

	}		


}

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

	$objadministracion = new ControladorGestonRiesgo();
	
	if($_POST['accion'] == "registrar_riesgo"){

		$objadministracion->ctrRegistraRiesgo();
	
	}

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

		$objadministracion->ctrConsultaRiesgo('unico', $_POST['id_riesgo'], '', '');
	
	}

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

		$objadministracion->ctrCalculaNivelConsecuenciaRiesgo();
	
	}

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

		$objadministracion->ctrActualizaRiesgo();
	
	}

	if($_POST['accion'] == "registrar_causa" || $_POST['accion'] == "actualizar_causa"){

		$objadministracion->ctrRegistraCausa();
	
	}

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

		$ids = array(
			'id1' => $_POST['check1'], 
			'id2' => $_POST['check2'], 
			'id3' => $_POST['check3'], 
			'id4' => $_POST['check4'],
			'id5' => $_POST['check5'],
		);

		$objadministracion->ctrConsultaNivelVerificacion($ids, 'unica', '');
	
	}

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

		$objadministracion->ctrConsultaNivelEvaluacion($_POST['id_nivel_evaluacion'], 'unica', '');
	
	}

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

		$objadministracion->ctrRegistraControl();
	
	}

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

		$objadministracion->ctrActualizaControl();
	
	}

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

		$objadministracion->ctrRegistraEvaluacion();
	
	}


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

		// Función utilizada para registrar una evaluación de control sin ningun tipo de validación.
		$objadministracion->ctrRegistraEvaluacion1(); 
	
	}

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

		$objadministracion->ctrConsultaEvaluacionControl();
	
	}


	// Cantidad de procesos que se encuentran en los diferentes niveles de consecuencia.
	if($_POST['accion'] == "consulta_nivel_consecuencia_proceso"){

		$objadministracion->ctrConsultaNivelConsecuenciaProceso();

	}	
	
	// Cantidad de procesos que se encuentran en los diferentes niveles de consecuencia.
	if($_POST['accion'] == "consulta_riesgos_proceso"){

		$objadministracion->ctrConsultaRiesgoProceso();

	}	


}
 ?>