<?php 

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

class ControladorGestonFormulario extends ModeloGestionFormulario
{

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

		$resultaoProcesos = ModeloGestionFormulario::mdlConsultaProcesos();

		$proceos = $resultaoProcesos->fetchAll();

		return $proceos;

	}	
	
	/*=================================================================================
	CONSULTA FORMULARIOS
	==================================================================================*/
	public function ctrConsultaFormulario($id, $tipo, $descripcion){

		$resultadoFormulario = ModeloGestionFormulario::mdlConsultaFormulario($id, $tipo, $descripcion);
		if($tipo == 'unico'){
			
			$formulario = $resultadoFormulario->fetch();

		}else if($tipo == 'general'){
		
			$formulario = $resultadoFormulario->fetchAll();
		
		}
		
		return $formulario;

	}

	/*=================================================================================
	CONSULTA FORMULARIOS ATENCIÓN
	==================================================================================*/
	public function ctrConsultaFormularioAtencion($id, $id_formulario, $tipo, $descripcion, $fecha_desde, $fecha_hasta){

		$resultadoFormulario = ModeloGestionFormulario::mdlConsultaFormularioAtencion($id, $id_formulario, $tipo, $descripcion, $fecha_desde, $fecha_hasta);
		if($tipo == 'unico'){
			
			$formulario = $resultadoFormulario->fetch();

		}else if($tipo == 'general'){
		
			$formulario = $resultadoFormulario->fetchAll();
		
		}
		
		return $formulario;

	}

	/*=================================================================================
	CONSULTA FORMULARIOS ASISTENCIA
	==================================================================================*/
	public function ctrConsultaFormularioAsistencia($id, $id_formulario, $tipo, $descripcion, $fecha_desde, $fecha_hasta){

		$resultadoFormulario = ModeloGestionFormulario::mdlConsultaFormularioAsistencia($id, $id_formulario, $tipo, $descripcion, $fecha_desde, $fecha_hasta);
		if($tipo == 'unico'){
			
			$formulario = $resultadoFormulario->fetch();

		}else if($tipo == 'general'){
		
			$formulario = $resultadoFormulario->fetchAll();
		
		}
		
		return $formulario;

	}

	// Fecha venncimiento factura ---
	// Date time invalido ---
	// PDF inválido ---



	/*=================================================================================
	CONSULTA INFORMACIÓN AGRÍCOLA.
	==================================================================================*/
	public function ctrConsultaFormularioAsistenciaAgricola($id, $id_formulario, $tipo, $descripcion){

		$resultadoFormulario = ModeloGestionFormulario::mdlConsultaFormularioAsistenciaAgricola($id, $id_formulario, $tipo, $descripcion);
		if($tipo == 'unico'){
			
			$formulario = $resultadoFormulario->fetch();

		}else if($tipo == 'general'){
		
			$formulario = $resultadoFormulario->fetchAll();
		
		}
		
		return $formulario;

	}

	/*=================================================================================
	CONSULTA INFORMACIÓN PECUARIA
	==================================================================================*/
	public function ctrConsultaFormularioAsistenciaPecuaria($id, $id_formulario, $tipo, $descripcion){

		$resultadoFormulario = ModeloGestionFormulario::mdlConsultaFormularioAsistenciaPecuaria($id, $id_formulario, $tipo, $descripcion);
		if($tipo == 'unico'){
			
			$formulario = $resultadoFormulario->fetch();

		}else if($tipo == 'general'){
		
			$formulario = $resultadoFormulario->fetchAll();
		
		}
		
		return $formulario;

	}

	/*=================================================================================
	CONSULTA INFORMACIÓN RECOMENDACIONES.
	==================================================================================*/
	public function ctrConsultaFormularioAsistenciaRecomendaciones($id, $id_formulario, $tipo, $descripcion){

		$resultadoFormulario = ModeloGestionFormulario::mdlConsultaFormularioAsistenciaRecomendaciones($id, $id_formulario, $tipo, $descripcion);
		if($tipo == 'unico'){
			
			$formulario = $resultadoFormulario->fetch();

		}else if($tipo == 'general'){
		
			$formulario = $resultadoFormulario->fetchAll();
		
		}
		
		return $formulario;

	}

	/*=================================================================================
	CONSULTA TIPOS DE ASESORÍA.
	==================================================================================*/
	public function ctrConsultaTipoAsesoria($id, $tipo, $descripcion){

		$resultadoTiposAsesoria = ModeloGestionFormulario::mdlConsultaTipoAsesoria($id, $tipo, $descripcion);
		if($tipo == 'unico'){
			
			$tipoasesoria = $resultadoTiposAsesoria->fetch();

		}else if($tipo == 'general'){
		
			$tipoasesoria = $resultadoTiposAsesoria->fetchAll();
		
		}
		
		return $tipoasesoria;

	}

	/*=================================================================================
	CONSULTA TIPOS DE ATENCIÓN.
	==================================================================================*/
	public function ctrConsultaTipoAtencion($id, $tipo, $descripcion){

		$resultadoTiposAtencion = ModeloGestionFormulario::mdlConsultaTipoAtencion($id, $tipo, $descripcion);
		if($tipo == 'unico'){
			
			$tipoatencion = $resultadoTiposAtencion->fetch();

		}else if($tipo == 'general'){
		
			$tipoatencion = $resultadoTiposAtencion->fetchAll();
		
		}
		
		return $tipoatencion;

	}

	/*=================================================================================
	CONSULTA PAÍSES
	==================================================================================*/
	public function ctrConsultaPaises($id, $tipo, $descripcion){

		$resultadoPais = ModeloGestionFormulario::mdlConsultaPaises($id, $tipo, $descripcion);
		if($tipo == 'unico'){
			
			$pais = $resultadoPais->fetch();

		}else if($tipo == 'general'){
		
			$pais = $resultadoPais->fetchAll();
		
		}
		
		return $pais;

	}

	/*=================================================================================
	CONSULTA DEPARTAMENTOS
	==================================================================================*/
	public function ctrConsultaDepartamentos($id_depto, $codigo_pais, $descripcion){

		$resultadoDepartamento = ModeloGestionFormulario::mdlConsultaDepartamentos($id_depto, $codigo_pais, $descripcion);
		if($descripcion != '' && $id_depto == '' && $codigo_pais == ''){
		
			$departamentos = $resultadoDepartamento->fetch();
			
			return $departamentos;
			
		}else if($codigo_pais != '' || $descripcion != ''){
			
			$departamentos = $resultadoDepartamento->fetchAll();

		}else if($id_depto != ''){
		
			$departamentos = $resultadoDepartamento->fetch();
		
		}
		
		// Recorremos los departamentos consultados con el fin de códificar caracteres especiales.
		foreach ($departamentos as $key => $value) {
			
			$departamentos[$key] = array_map('utf8_encode', $value);

		}

		echo json_encode(array('data'=> $departamentos));
		exit();

	}

	/*=================================================================================
	CONSULTA MUNICIPIOS.
	==================================================================================*/
	public function ctrConsultaMunicipio($id_municipio, $codigo_depto, $descripcion){

		$resultadoMunicipio = ModeloGestionFormulario::mdlConsultaMunicipio($id_municipio, $codigo_depto, $descripcion);
		if($descripcion != '' && $codigo_depto == '' && $id_municipio == ''){
			
			$municipios = $resultadoMunicipio->fetch();

			return $municipios;

		}else if($codigo_depto != '' || $descripcion != ''){
			
			$municipios = $resultadoMunicipio->fetchAll();

		}else if($id_municipio != ''){
		
			$municipios = $resultadoMunicipio->fetch();
		
		}
		
		// Recorremos los municipios consultados con el fin de códificar caracteres especiales.
		foreach ($municipios as $key => $value) {
			
			$municipios[$key] = array_map('utf8_encode', $value);

		}

		echo json_encode(array('data'=> $municipios));
		exit();

	}

	/*=================================================================================
	CONSULTA VEREDAS
	==================================================================================*/
	public function ctrConsultaVereda($id_vereda, $codigo_municipio, $descripcion){

		$resultadoVereda = ModeloGestionFormulario::mdlConsultaVereda($id_vereda, $codigo_municipio, $descripcion);
		if($descripcion != '' && $codigo_municipio == '' && $id_vereda == ''){
			
			$veredas = $resultadoVereda->fetch();

			return $veredas;

		}else if($codigo_municipio != '' || $descripcion != ''){
			
			$veredas = $resultadoVereda->fetchAll();

		}else if($id_vereda != ''){
		
			$veredas = $resultadoVereda->fetch();
		
		}
		
		// Recorremos los veredas consultados con el fin de códificar caracteres especiales.
		foreach ($veredas as $key => $value) {
			
			$veredas[$key] = array_map('utf8_encode', $value);

		}

		echo json_encode(array('data'=> $veredas));
		exit();

	}

	/*=================================================================================
	CONSULTA TIPOS DE POBLACION.
	==================================================================================*/
	public function ctrConsultaPoblacion($id, $tipo, $descripcion){

		$resultadoTiposPoblacion = ModeloGestionFormulario::mdConsultaPoblacion($id, $tipo, $descripcion);
		if($id != '' && $tipo == 'unico'){
			
			$tipopoblacion = $resultadoTiposPoblacion->fetch();

		}else if($id == '' && $tipo == 'unico' && $descripcion != ''){
			
			$tipopoblacion = $resultadoTiposPoblacion->fetch();

		}else if($tipo == 'general'){
		
			$tipopoblacion = $resultadoTiposPoblacion->fetchAll();
		
		}
		
		return $tipopoblacion;

	}

	/*=================================================================================
	REGISTRA ATENCIÓN PRODUCTORES.
	==================================================================================*/
	public function ctrRegistraAtencionProductores(){

		try {
			
			// Subimos firma usuario atiende
			if (isset($_POST['draw-dataUrl'])) {
			    
			    $datosimg1 = base64_decode(
			      preg_replace('/^[^,]*,/', '', $_POST['draw-dataUrl'])
			    );

			    $nombre_firma_usuario_atiende = 'vista/lib/dist/img/firmas/'.$_POST['id_formulario'].'firmausuarioatiende'.date('Y-m-d H:i:s').'.png';
			    file_put_contents('../'.$nombre_firma_usuario_atiende, $datosimg1);

			}

			// Subimos firma usuario atendido
			if (isset($_POST['draw-dataUrl2'])) {
			    
			    $datosimg2 = base64_decode(
			      preg_replace('/^[^,]*,/', '', $_POST['draw-dataUrl2'])
			    );

			    $nombre_firma_usuario_atendido = 'vista/lib/dist/img/firmas/'.$_POST['id_formulario'].'firmausuarioatendido'.date('Y-m-d H:i:s').'.png';
			    file_put_contents('../'.$nombre_firma_usuario_atendido, $datosimg2);
			
			}
			
			$contadorfilascapacitacion  = $_POST['contadorfilascapacitacion'];
			// $imagen1 = imagecreatefromstring($decoder1);
			// $imagen2 = imagecreatefromstring($decoder2);
			$validaregistro = false;

			// Consultamos id del ultimo sie_formulario_atencion_capacitacion registrado.
			$conultaultimoidformulario = ModeloConexion::consultaSimple("SELECT COUNT(*) AS cantidad FROM sie_formulario_atencion");	
			$conultaultimoidformulario = $conultaultimoidformulario->fetch();
			$id_formulario_atencion = $conultaultimoidformulario['cantidad']+1;

			$datos = [

				'id_usuario'              => $_POST['id_usuario'],
				'id_formulario'           => $_POST['id_formulario'],
				'id_tipoasesoria'         => $_POST['id_tipoasesoria'],
				'desc_asesoria'           => $_POST['desc_asesoria'],
				'desc_capacitacion'       => $_POST['desc_capacitacion'],
				'acuerdos_proxima_visita' => $_POST['acuerdos_proxima_visita'],
				'fecha'                   => date('Y-m-d H:i:s'),
				'firma_usuario_atiende'   => $nombre_firma_usuario_atiende,
				'firma_usuario_atendido'  => $nombre_firma_usuario_atendido,
				'tipocapacitacion'        => '',
				'temacapacitacion'        => '',
				'generocapacitacion'      => '',
				'numeropersonas'          => '',

			];

			// Validación de formulario.
			if(trim($datos['id_tipoasesoria']) == 0){
				
				// eliminamos firmas 
				unlink('../'.$nombre_firma_usuario_atiende);
				unlink('../'.$nombre_firma_usuario_atendido);
				echo json_encode(array('error' => 'El campo <b>Tipo de asesoría</b> es requerido'));exit();	
			}

			if(trim($datos['desc_asesoria']) == ''){
				
				// eliminamos firmas 
				unlink('../'.$nombre_firma_usuario_atiende);
				unlink('../'.$nombre_firma_usuario_atendido);
				echo json_encode(array('error' => 'El campo <b>Observación asesoría</b> es requerido'));exit();	
			}

			if(trim($datos['desc_capacitacion']) == ''){
				
				// eliminamos firmas 
				unlink('../'.$nombre_firma_usuario_atiende);
				unlink('../'.$nombre_firma_usuario_atendido);
				echo json_encode(array('error' => 'El campo <b>Observación capacitación</b> es requerido'));exit();	
			}

			if(trim($datos['acuerdos_proxima_visita']) == ''){
				
				// eliminamos firmas 
				unlink('../'.$nombre_firma_usuario_atiende);
				unlink('../'.$nombre_firma_usuario_atendido);
				echo json_encode(array('error' => 'El campo <b>Acuerdos próxima visita</b> es requerido'));exit();	
			}

			if(trim($_POST['draw-dataUrl'])=='Imagen1') {
			    
				// eliminamos firmas 
				unlink('../'.$nombre_firma_usuario_atiende);
				unlink('../'.$nombre_firma_usuario_atendido);
				echo json_encode(array('error' => 'Por favor ingresar la firma del productor'));exit();

			}

			if (trim($_POST['draw-dataUrl2'])=='Imagen2') {
			    
				// eliminamos firmas 
				unlink('../'.$nombre_firma_usuario_atiende);
				unlink('../'.$nombre_firma_usuario_atendido);
				echo json_encode(array('error' => 'Por favor ingresar la firma del funcionario'));exit();

			}

			// Registramos formulario atencion productores.
			$registraatencionproductor = ModeloGestionFormulario::mdlRegistraFormularioAtencionProductores($id_formulario_atencion, $datos);
			if($registraatencionproductor->rowcount()==1){

				for ($i=0; $i <= $contadorfilascapacitacion; $i++) { 
					
					if(isset($_POST['idcapacitacion'.$i])){

						$datos = array_replace($datos, array('tipocapacitacion'   => $_POST['tipocapacitacion'.$i]));
						$datos = array_replace($datos, array('temacapacitacion'   => $_POST['temacapacitacion'.$i]));
						$datos = array_replace($datos, array('generocapacitacion' => $_POST['generocapacitacion'.$i]));
						$datos = array_replace($datos, array('numeropersonas'     => $_POST['numeropersonas'.$i]));

						// Validaciones
						if(trim($_POST['tipocapacitacion'.$i]) == '' || trim($_POST['temacapacitacion'.$i]) == '' || trim($_POST['generocapacitacion'.$i]) == '' || trim($_POST['numeropersonas'.$i]) == ''){

							$eliminaformularioatencion = ModeloGestionFormulario::mdlEliminaFormularioAtencionProductores($id_formulario_atencion, $datos['id_usuario'], $datos['fecha']);
							if($eliminaformularioatencion->rowcount()==1){

								// eliminamos firmas 
								unlink('../'.$nombre_firma_usuario_atiende);
								unlink('../'.$nombre_firma_usuario_atendido);
								echo json_encode(array('error' => 'Ocurrió un error en el servidor al intentar registrar la atención.'));exit();

							}else{

								// eliminamos firmas 
								unlink('../'.$nombre_firma_usuario_atiende);
								unlink('../'.$nombre_firma_usuario_atendido);
								echo json_encode(array('error' => 'Error al eliminar formulario de atención.'));exit();

							}

							echo json_encode(array('error' => 'Por favor verificar que todos los campos de <b>Capacitación</b> contengan información. Recuerda eliminar las filas que no utilices.'));exit();

						}

						// Registramos capacitación.
						$registraasistenciatecnica = ModeloGestionFormulario::mdlRegistraAtencionProductores($id_formulario_atencion, $datos);
						if($registraasistenciatecnica->rowcount() == 1){
								
							if($contadorfilascapacitacion == $i){
								$validaregistro = true;
							}

						}else{
							// Si no se registra correctamente una capacitación, eliminamos el formulario de atención registrado previamente.

							$eliminaformularioatencion = ModeloGestionFormulario::mdlEliminaFormularioAtencionProductores($id_formulario_atencion, $datos['id_usuario'], $datos['fecha']);
							if($eliminaformularioatencion->rowcount()==1){

								// eliminamos firmas 
								unlink('../'.$nombre_firma_usuario_atiende);
								unlink('../'.$nombre_firma_usuario_atendido);
								echo json_encode(array('error' => 'Ocurrió un error en el servidor al intentar registrar la atención.'));exit();

							}else{

								// eliminamos firmas 
								unlink('../'.$nombre_firma_usuario_atiende);
								unlink('../'.$nombre_firma_usuario_atendido);
								echo json_encode(array('error' => 'Error al eliminar formulario de atención.'));exit();

							}
						
						}

					}	

				}

			}else{

				// eliminamos firmas 
				unlink('../'.$nombre_firma_usuario_atiende);
				unlink('../'.$nombre_firma_usuario_atendido);
				echo json_encode(array('error' => 'Ocurrió un error al intentar registrar formulario.'));exit();

			}

			// Sil avariable $validaregistro tiene un valor verdadero significa que todas las capacitaciones recibidas fueron registradas exitosamente.
			if($validaregistro == true){
				echo json_encode(array('success' => 'Registro exitoso.'));
			}else{
				
				// eliminamos firmas 
				unlink('../'.$nombre_firma_usuario_atiende);
				unlink('../'.$nombre_firma_usuario_atendido);
				echo json_encode(array('error' => 'Ocurrió un error al intentar registrar atención.'));
			}
			
		}catch (Throwable $t){
			echo json_encode(array('error' => 'Error: '.$t));
		}catch (Exception $e) {
			echo json_encode(array('error' => 'Error: '.$e));
		}

	}


	/*=================================================================================
	CONSULTA TIPOS DE ASESORÍA.
	==================================================================================*/
	public function ctrRegistraFormularioAsistenciaProductores(){

		try {
		
			$contadorfilaagricola            = $_POST['contadorfilaagricola'];
			$contadorfilainfopecuaria        = $_POST['contadorfilainfopecuaria'];
			$contadorasistenciatecnica       = $_POST['contadorasistenciatecnica'];
			$validaregistroagricola          = false;
			$validaregistropecuaria          = false;
			$validaregistroasistenciatecnica = false;

			// Consultamos cantidad del formularios sie_formulario_atencion_capacitacion registrados.
			$conultaultimoidformulario = ModeloConexion::consultaSimple("SELECT COUNT(*) AS cantidad FROM sie_formulario_asistencia");	
			$conultaultimoidformulario = $conultaultimoidformulario->fetch();
			$id_formulario_asistencia = $conultaultimoidformulario['cantidad']+1;
			// echo json_encode(array('error' => $id_formulario_asistencia));exit();
			$datos = [

				'id_usuario'             		  => $_POST['id_usuario'],
				'id_formulario'          		  => $_POST['id_formulario'],
				'fecha_asistencia'       		  => $_POST['fecha_asistencia'],
				'tipoatencion'           		  => $_POST['tipoatencion'],
				'codigo_pais'            		  => $_POST['codigo_pais'],
				'codigo_departamento'    		  => $_POST['codigo_departamento'],
				'codigo_municipio'       		  => $_POST['codigo_municipio'],
				'id_zona'             	 		  => $_POST['id_zona'],
				'nombre_usuario_atiende' 		  => $_POST['nombre_usuario_atiende'],
				'cargo_usuario_atiende'  		  => $_POST['cargo_usuario_atiende'],
				'nombre_persona_atendida'		  => $_POST['nombre_persona_atendida'],
				'nombre_organizacion'    		  => $_POST['nombre_organizacion'],
				'id_tipo_poblacion'      		  => $_POST['id_tipo_poblacion'],
				'numero_identificacion'  		  => $_POST['numero_identificacion'],
				'telefono'               		  => $_POST['telefono'],
				'correo'              	 		  => $_POST['correo'],
				'linea_productiva'       		  => $_POST['linea_productiva'],
				'numero_atenciones'      		  => $_POST['numero_atenciones'],
				'observacion_asistencia' 		  => $_POST['observacion_asistencia'],
				'fecha'                  		  => date('Y-m-d H:i:s'),
				'cultivo'                		  => '',
				'edad_cultivo'           		  => '',
				'total_sembrado'         		  => '',
				'total_produccion'       		  => '',
				'produccion_ton'         		  => '',
				'rendimiento_ton'        		  => '',
				'costos_produccion'      		  => '',
				'canal_comercializacion' 		  => '',
				'especie'                		  => '',
				'raza'                   		  => '',
				'edad'                   		  => '',
				'produccion_predio'               => '',
				'costos_produccion_pecuaria'      => '',
				'canal_comercializacion_pecuaria' => '',
				'nombre_producto' => '',
				'dosisrecomendada' => '',
				'metodoaplicacion' => '',

			];

			// Validación de formulario.
			if(trim($datos['fecha_asistencia']) == ''){
				echo json_encode(array('error' => 'El campo Fecha es requerido'));exit();	
			}

			if(trim($datos['tipoatencion']) == 0){
				echo json_encode(array('error' => 'El campo <b>Tipo de atención</b> requerido'));exit();	
			}

			if(trim($datos['codigo_pais']) == 0){
				echo json_encode(array('error' => 'El campo <b>País</b> es requerido'));exit();	
			}

			if(trim($datos['codigo_departamento']) == 0){
				echo json_encode(array('error' => 'El campo <b>Departamento</b> es requerido'));exit();	
			}

			if(trim($datos['codigo_municipio']) == 0){
				echo json_encode(array('error' => 'El campo <b>Municipio</b> es requerido'));exit();	
			}

			if(trim($datos['id_zona']) == 0){
				echo json_encode(array('error' => 'El campo <b>Vereda</b> es requerido'));exit();	
			}

			if(trim($datos['nombre_usuario_atiende']) == ''){
				echo json_encode(array('error' => 'El campo <b>Nombre usuario</b> es requerido'));exit();	
			}

			if(trim($datos['cargo_usuario_atiende']) == ''){
				echo json_encode(array('error' => 'El campo <b>Cargo o N° Contrato</b> es requerido'));exit();	
			}

			if(trim($datos['nombre_persona_atendida']) == ''){
				echo json_encode(array('error' => 'El campo <b>Nombre persona atendida</b> es requerido'));exit();	
			}	

			if(trim($datos['nombre_organizacion']) == ''){
				echo json_encode(array('error' => 'El campo <b>Nombre de la organización</b> es requerido'));exit();	
			}

			if(trim($datos['id_tipo_poblacion']) == 0){
				echo json_encode(array('error' => 'El campo <b>Tipo de población</b> es requerido'));exit();	
			}

			if(trim($datos['numero_identificacion']) == ''){
				echo json_encode(array('error' => 'El campo <b>Número de identificación</b> es requerido'));exit();	
			}

			// if(trim($datos['telefono']) == ''){
			// 	echo json_encode(array('error' => 'El campo <b>Teléfono</b> es requerido'));exit();	
			// }

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

				echo json_encode(array('error' => 'El campo <b>Telefono</b> es requerido.'));	
				exit();

			}else if(strlen($datos['telefono']) > 10){
				
				echo json_encode(array('error' => 'El campo <b>Telefono</b> debe contener máximo 10 dígitos. Dígitos ingresados: '.strlen($datos['telefono'])));	
				exit();					
			
			}

			if(trim($datos['correo']) == ''){
				echo json_encode(array('error' => 'El campo <b>Correo electrónico</b> es requerido'));exit();	
			}else{

				// Condicional para validar formato de correo. 
				if (!filter_var($datos['correo'], FILTER_VALIDATE_EMAIL)) {

					echo json_encode(array('error' => 'El <b>Correo</b> ('.$datos['correo'].') es invalido.'));	
					exit();

				}

			}

			if(trim($datos['linea_productiva']) == ''){
				echo json_encode(array('error' => 'El campo <b>Líneas productivas</b> es requerido'));exit();	
			}

			if(trim($datos['numero_atenciones']) == ''){
				echo json_encode(array('error' => 'El campo <b>Número de atenciones</b> es requerido'));exit();	
			}

			if(trim($datos['observacion_asistencia']) == ''){
				echo json_encode(array('error' => 'El campo <b>Observación asistencia</b> es requerido'));exit();	
			}

			// Registramos formulario de asistencia productores.
			$registraasistenciaproductor = ModeloGestionFormulario::mdlRegistraFormularioAsistenciaProductores($id_formulario_asistencia, $datos);
			if($registraasistenciaproductor->rowcount()==1){

				for ($i=0; $i <= $contadorfilaagricola; $i++) { 
					
					if(isset($_POST['idagricola'.$i])){

						$datos = array_replace($datos, array('cultivo'                => $_POST['cultivo'.$i]));
						$datos = array_replace($datos, array('edad_cultivo'           => $_POST['edad_cultivo'.$i]));
						$datos = array_replace($datos, array('total_sembrado'         => $_POST['total_sembrado'.$i]));
						$datos = array_replace($datos, array('total_produccion'       => $_POST['total_produccion'.$i]));
						$datos = array_replace($datos, array('produccion_ton'         => $_POST['produccion_ton'.$i]));
						$datos = array_replace($datos, array('rendimiento_ton'        => $_POST['rendimiento_ton'.$i]));
						$datos = array_replace($datos, array('costos_produccion'      => $_POST['costos_produccion'.$i]));
						$datos = array_replace($datos, array('canal_comercializacion' => $_POST['canal_comercializacion'.$i]));

						// Validaciones
						if(trim($_POST['cultivo'.$i]) == '' || trim($_POST['edad_cultivo'.$i]) == '' || trim($_POST['edad_cultivo'.$i]) == '' || trim($_POST['total_produccion'.$i]) == '' || trim($_POST['produccion_ton'.$i]) == '' || trim($_POST['rendimiento_ton'.$i]) == '' || trim($_POST['costos_produccion'.$i]) == '' || trim($_POST['canal_comercializacion'.$i]) == ''){

							// Si no se registra correctamente la información pecuaria, eliminamos la información agrícola registrada previamente.
							$eliminainformacionagricola = ModeloGestionFormulario::mdlEliminaInformacionAgricola($id_formulario_asistencia, $datos['id_usuario'], $datos['fecha']);
							if($eliminainformacionagricola->rowcount() >= 1){

								// Si no se registra correctamente una capacitación, eliminamos el formulario de atención registrado previamente.
								$eliminaformularioasistencia = ModeloGestionFormulario::mdlEliminaFormularioAsistenciaProductores($id_formulario_asistencia, $datos['id_usuario'], $datos['fecha']);
								if($eliminaformularioasistencia->rowcount()==1){

									echo json_encode(array('error' => 'Por favor verificar que todos los campos de <b>Información agrícola</b> contengan información. Recuerda eliminar las filas que no utilices.'));exit();

								}
								
							}

						}


						// Registramos capacitación.
						$registrainformacionagricola = ModeloGestionFormulario::mdlRegistraInformacionAgricolaProductores($id_formulario_asistencia, $datos);
						if($registrainformacionagricola->rowcount() == 1){
								
							$validaregistroagricola = true;
							
						}else{
							// Si no se registra correctamente una capacitación, eliminamos el formulario de atención registrado previamente.

							$eliminaformularioasistencia = ModeloGestionFormulario::mdlEliminaFormularioAsistenciaProductores($id_formulario_asistencia, $datos['id_usuario'], $datos['fecha']);
							if($eliminaformularioasistencia->rowcount()==1){

								echo json_encode(array('error' => 'Ocurrió un error durante el registro.'));exit();

							}else{

								echo json_encode(array('error' => 'Error al eliminar formulario.'));exit();

							}
						
						}

					}	

				}

				// Rgistramos información pecuaria.
				for ($x=0; $x <= $contadorfilainfopecuaria; $x++) { 
					
					if(isset($_POST['id_informacion_pecuaria'.$x])){

						$datos = array_replace($datos, array('especie'                         => $_POST['especie'.$x]));
						$datos = array_replace($datos, array('raza'                            => $_POST['raza'.$x]));
						$datos = array_replace($datos, array('edad'                            => $_POST['edad'.$x]));
						$datos = array_replace($datos, array('produccion_predio'               => $_POST['produccion_predio'.$x]));
						$datos = array_replace($datos, array('costos_produccion_pecuaria'      => $_POST['costos_produccion_pecuaria'.$x]));
						$datos = array_replace($datos, array('canal_comercializacion_pecuaria' => $_POST['canal_comercializacion_pecuaria'.$x]));

						if(trim($_POST['especie'.$x]) == '' || trim($_POST['raza'.$x]) == '' || trim($_POST['edad'.$x]) == '' || trim($_POST['produccion_predio'.$x]) == '' || trim($_POST['costos_produccion_pecuaria'.$x]) == '' || trim($_POST['canal_comercializacion_pecuaria'.$x]) == ''){
							// Si no se registra correctamente asistencia técnica, eliminamos la información pecuaria registrada previamente.
							$eliminainformacionpecuaria = ModeloGestionFormulario::mdlEliminaInformacionPecuaria($id_formulario_asistencia, $datos['id_usuario'], $datos['fecha']);
							if($eliminainformacionpecuaria->rowcount() >= 1){

								// Si no se registra correctamente la información pecuaria, eliminamos la información agrícola registrada previamente.
								$eliminainformacionagricola = ModeloGestionFormulario::mdlEliminaInformacionAgricola($id_formulario_asistencia, $datos['id_usuario'], $datos['fecha']);
								if($eliminainformacionagricola->rowcount() >= 1){

									// Si no se registra correctamente una capacitación, eliminamos el formulario de atención registrado previamente.
									$eliminaformularioasistencia = ModeloGestionFormulario::mdlEliminaFormularioAsistenciaProductores($id_formulario_asistencia, $datos['id_usuario'], $datos['fecha']);
									if($eliminaformularioasistencia->rowcount()==1){

										echo json_encode(array('error' => 'Por favor verificar que todos los campos de <b>Información pecuaria</b> contengan información. Recuerda eliminar las filas que no utilices.'));exit();

									}

								}

							}

						}	

						// Registramos capacitación.
						$registrainformacionpecuaria = ModeloGestionFormulario::mdlRegistraInformacionPecuariaProductores($id_formulario_asistencia, $datos);
						if($registrainformacionpecuaria->rowcount() == 1){
							
							$validaregistropecuaria = true;

						}else{

							// Si no se registra correctamente la información pecuaria, eliminamos la información agrícola registrada previamente.
							$eliminainformacionagricola = ModeloGestionFormulario::mdlEliminaInformacionAgricola($id_formulario_asistencia, $datos['id_usuario'], $datos['fecha']);
							if($eliminainformacionagricola->rowcount() >= 1){

								// Si no se registra correctamente una capacitación, eliminamos el formulario de atención registrado previamente.
								$eliminaformularioasistencia = ModeloGestionFormulario::mdlEliminaFormularioAsistenciaProductores($id_formulario_asistencia, $datos['id_usuario'], $datos['fecha']);
								if($eliminaformularioasistencia->rowcount()==1){

									echo json_encode(array('error' => 'Ocurrió un error durante el registro...'));exit();

								}else{

									echo json_encode(array('error' => 'Error al registrar información pecuaria.'));exit();

								}
							}else{

								echo json_encode(array('error' => 'Error al eliminar información agrícola.'));exit();

							}
						
						}

					}	

				}

				// Rgistramos asistencia técnica.
				for ($y=0; $y <= $contadorasistenciatecnica; $y++) { 
					
					if(isset($_POST['idasistenciatecnica'.$y])){

						$datos = array_replace($datos, array('nombre_producto'  => $_POST['nombre_producto'.$y]));
						$datos = array_replace($datos, array('dosisrecomendada' => $_POST['dosisrecomendada'.$y]));
						$datos = array_replace($datos, array('metodoaplicacion' => $_POST['metodoaplicacion'.$y]));

						if(trim($_POST['nombre_producto'.$y]) == '' || trim($_POST['dosisrecomendada'.$y]) == '' || trim($_POST['metodoaplicacion'.$y]) == ''){
							
							// Si no se registra correctamente asistencia técnica, eliminamos la información pecuaria registrada previamente.
							$eliminarecomendaciones = ModeloGestionFormulario::mdlEliminaAsistenciaTecnica($id_formulario_asistencia, $datos['id_usuario'], $datos['fecha']);
							if($eliminarecomendaciones->rowcount() >= 1){

								// Si no se registra correctamente asistencia técnica, eliminamos la información pecuaria registrada previamente.
								$eliminainformacionpecuaria = ModeloGestionFormulario::mdlEliminaInformacionPecuaria($id_formulario_asistencia, $datos['id_usuario'], $datos['fecha']);
								if($eliminainformacionpecuaria->rowcount() >= 1){

									// Si no se registra correctamente la información pecuaria, eliminamos la información agrícola registrada previamente.
									$eliminainformacionagricola = ModeloGestionFormulario::mdlEliminaInformacionAgricola($id_formulario_asistencia, $datos['id_usuario'], $datos['fecha']);
									if($eliminainformacionagricola->rowcount() >= 1){

										// Si no se registra correctamente una capacitación, eliminamos el formulario de atención registrado previamente.
										$eliminaformularioasistencia = ModeloGestionFormulario::mdlEliminaFormularioAsistenciaProductores($id_formulario_asistencia, $datos['id_usuario'], $datos['fecha']);
										if($eliminaformularioasistencia->rowcount()==1){

											echo json_encode(array('error' => 'Por favor verificar que todos los campos de <b>Asistencia técnica</b> contengan información. Recuerda eliminar las filas que no utilices.'));exit();

										}

									}

								}

							}

						}

						// Registramos capacitación.
						$registraasistenciatecnica = ModeloGestionFormulario::mdlRegistraAsistenciaTecnica($id_formulario_asistencia, $datos);
						if($registraasistenciatecnica->rowcount() == 1){
							
							$validaregistroasistenciatecnica = true;

						}else{

							// Si no se registra correctamente asistencia técnica, eliminamos la información pecuaria registrada previamente.
							$eliminainformacionpecuaria = ModeloGestionFormulario::mdlEliminaInformacionPecuaria($id_formulario_asistencia, $datos['id_usuario'], $datos['fecha']);
							if($eliminainformacionpecuaria->rowcount() >= 1){

								// Si no se registra correctamente la información pecuaria, eliminamos la información agrícola registrada previamente.
								$eliminainformacionagricola = ModeloGestionFormulario::mdlEliminaInformacionAgricola($id_formulario_asistencia, $datos['id_usuario'], $datos['fecha']);
								if($eliminainformacionagricola->rowcount() >= 1){

									// Si no se registra correctamente una capacitación, eliminamos el formulario de atención registrado previamente.
									$eliminaformularioasistencia = ModeloGestionFormulario::mdlEliminaFormularioAsistenciaProductores($id_formulario_asistencia, $datos['id_usuario'], $datos['fecha']);
									if($eliminaformularioasistencia->rowcount()==1){

										echo json_encode(array('error' => 'Ocurrió un error durante el registro...'));exit();

									}else{

										echo json_encode(array('error' => 'Error al registrar información pecuaria.'));exit();

									}
								}else{

									echo json_encode(array('error' => 'Error al eliminar información agrícola.'));exit();

								}

							}else{

								echo json_encode(array('error' => 'Error al eliminar información pecuaria.'));exit();

							}
						
						}

					}	

				}

			}else{

				echo json_encode(array('error' => 'Ocurrió un error al intentar registrar formulario.'));exit();

			}

			// Sil avariable $validaregistroagricola tiene un valor verdadero significa que todas las capacitaciones recibidas fueron registradas exitosamente.
			if($validaregistroagricola == true && $validaregistropecuaria == true && $validaregistroasistenciatecnica == true){
				echo json_encode(array('success' => 'Registro exitoso.'));
			}else{
				echo json_encode(array('error' => 'Ocurrió un error al intentar registrar asistencia técnica.'));
			}
			
		}catch (Throwable $t){
			echo json_encode(array('error' => 'Error: '.$t));
		}catch (Exception $e) {
			echo json_encode(array('error' => 'Error: '.$e));
		}

	}


	/*=================================================================================
	REGISTRA ASISTENCIA PRODUCTORES CARGUE MASIVO. 
	==================================================================================*/
	public function ctrRegistraAsistenciaCargueMasivo($id_formulario_atencion, $array_asistencia){

		try {
			
			$registraAsistencia = ModeloGestionFormulario::mdlRegistraFormularioAsistenciaProductores($id_formulario_atencion, $array_asistencia);
			if($registraAsistencia->rowcount()>0){
			
				$resultado = array('resultado' => 'success');
			
			}else{
				
				$resultado = array('resultado' => 'error');
			
			}

			return $resultado;

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

	}

	/*=================================================================================
	REGISTRA INFORMACIÓN AGRÍCOLA CARGUE MASIVO. 
	==================================================================================*/
	public function ctrRegistraInformacionAgricolaCargueMasivo($id_formulario_asistencia, $datos){

		try {
			
			$resultado = ModeloGestionFormulario::mdlRegistraInformacionAgricolaProductores($id_formulario_asistencia, $datos);
			if($resultado->rowcount()>0){
			
				$resultado = array('resultado' => 'success');
			
			}else{
				
				$resultado = array('resultado' => 'error');
			
			}

			return $resultado;

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

	}


	/*=================================================================================
	REGISTRA INFORMACIÓN PECUARIA CARGUE MASIVO. 
	==================================================================================*/
	public function ctrRegistraInformacionPecuariaCargueMasivo($id_formulario_asistencia, $datos){

		try {
			
			$resultado = ModeloGestionFormulario::mdlRegistraInformacionPecuariaProductores($id_formulario_asistencia, $datos);
			if($resultado->rowcount()>0){
			
				$resultado = array('resultado' => 'success');
			
			}else{
				
				$resultado = array('resultado' => 'error');
			
			}

			return $resultado;

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

	}

	/*=================================================================================
	REGISTRA RECOMENDACIONES CARGUE MASIVO. 
	==================================================================================*/
	public function ctrRegistraRecomendacionesCargueMasivo($id_formulario_asistencia, $datos){

		try {
			
			$resultado = ModeloGestionFormulario::mdlRegistraAsistenciaTecnica($id_formulario_asistencia, $datos);
			if($resultado->rowcount()>0){
			
				$resultado = array('resultado' => 'success');
			
			}else{
				
				$resultado = array('resultado' => 'error');
			
			}

			return $resultado;

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

	}

	/*=================================================================================
	REGISTRA RECOMENDACIONES CARGUE MASIVO. 
	==================================================================================*/
	public function ctrRegistraAtencionProductoresCargueMasivo($id_formulario_atencion, $datos){

		try {
			
			$resultado = ModeloGestionFormulario::mdlRegistraFormularioAtencionProductores($id_formulario_atencion, $datos);
			if($resultado->rowcount()>0){
			
				$resultado = array('resultado' => 'success');
			
			}else{
				
				$resultado = array('resultado' => 'error');
			
			}

			return $resultado;

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

	}

	/*=================================================================================
	REGISTRA CAPACITACIÓN PRODUCTORES CARGUE MASIVO. 
	==================================================================================*/
	public function ctrRegistraCapacitacionProductoresCargueMasivo($id_atencion, $datos){

		try {
			
			$resultado = ModeloGestionFormulario::mdlRegistraAtencionProductores($id_atencion, $datos);
			if($resultado->rowcount()>0){
			
				$resultado = array('resultado' => 'success');
			
			}else{
				
				$resultado = array('resultado' => 'error');
			
			}

			return $resultado;

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

	}

	/*=================================================================================
	CONSULTA TIPOS DE ASESORÍA.
	==================================================================================*/
	public function ctrEditaFormulario(){

		try {
		
			$datos = [

				'id_usuario'        => $_POST['id_usuario'],
				'id_formulario'     => $_POST['id_formulario'],
				'id_proceso_form'   => $_POST['id_proceso_form'],
				'nombre'            => utf8_decode($_POST['nombre']),
				'descripcion'       => strtoupper(utf8_decode($_POST['descripcion'])),
				'estado'            => $_POST['estado'],
				'codigo'            => $_POST['codigo'],
				'version'           => $_POST['version'],
				'fecha'             => date('Y-m-d H:i:s'),
				'id_opcion_proceso' => $_POST['id_opcion_proceso'],

			];

			// Validación de formulario.
			if(trim($datos['id_formulario']) == 0){
				echo json_encode(array('error' => 'El campo <b>Formulario</b> es requerido'));exit();	
			}

			if(trim($datos['nombre']) == ''){
				echo json_encode(array('error' => 'El campo <b>Nombre</b> es requerido'));exit();	
			}

			if(trim($datos['descripcion']) == ''){
				echo json_encode(array('error' => 'El campo <b>Descripción</b> es requerido'));exit();	
			}

			if(trim($datos['estado']) == 10){
				echo json_encode(array('error' => 'El campo <b>Estado</b> es requerido'));exit();	
			}

			if(trim($datos['codigo']) == ''){
				echo json_encode(array('error' => 'El campo <b>Código</b> es requerido'));exit();	
			}

			if(trim($datos['version']) == ''){
				echo json_encode(array('error' => 'El campo <b>Versión</b> es requerido'));exit();	
			}

			// // Editamos formulario.
			$editarformulario = ModeloGestionFormulario::mdlEditaFormulario($datos);
			if($editarformulario->rowcount()==1){

				echo json_encode(array('success' => 'Formulario actualizado satisfactoriamente.'));exit();

			}else{

				echo json_encode(array('error' => 'Ocurrió un error al intentar editar formulario.'));exit();

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

	}


	/*=================================================================================
	CONSULTA DATOS DE LOS FORMULARIOS.
	==================================================================================*/
	public function ctrConsultaDatosFormulario(){

		$resultado = ModeloGestionFormulario::mdlConsultaDatosFormulario($_POST['id_formulario'], $_POST['fecha_desde'], $_POST['fecha_hasta']);
		$resultado = $resultado->fetchAll();
		
		// Recorremos los veredas consultados con el fin de códificar caracteres especiales.
		foreach ($resultado as $key => $value) {
			
			$datos[$key] = array_map('utf8_encode', $value);  
			
			// Consultamos usuario.
			$usuario = ModeloGestionFormulario::mdlConsultaUsuario($value['id_usuario_registra'], 'unico', '');
			$usuario = $usuario->fetch();
			$datos[$key] += ['nombre_usuario' => $usuario['nombres'].' '.$usuario['apellidos']];

		}

		echo json_encode(array('datos'=> $datos));
		exit();

	}

}

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

	$objadministracion = new ControladorGestonFormulario();
	
	if($_POST['accion'] == "registra_atencion_productores"){

		$objadministracion->ctrRegistraAtencionProductores();
	
	}

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

		$objadministracion->ctrRegistraFormularioAsistenciaProductores();
	
	}

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

		$objadministracion->ctrConsultaDepartamentos('', $_POST['codigo_pais'], '');
		
	}

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

		$objadministracion->ctrConsultaMunicipio('', $_POST['codigo_departamento'], '');	
		
	}

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

		$objadministracion->ctrConsultaVereda('', $_POST['codigo_municipio'], '');	
		
	}

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

		$objadministracion->ctrEditaFormulario();	
		
	}

	// Consulta formulario
	if($_POST['accion'] == 'consulta_formulario'){

		$formulario = $objadministracion->ctrConsultaFormulario($_POST['id_formulario'], 'unico', '');

		$formulario = array_map('utf8_encode', $formulario);

		echo json_encode($formulario);exit();
		
	}


	// Consulta datos de los formularios registrados.
	if($_POST['accion'] == 'consulta_datos_formulario'){

		$formulario = $objadministracion->ctrConsultaDatosFormulario();
		
	}

}
 ?>