<?php
class Solicitudes extends MY_Controller
{

function __construct(){
	parent::__construct();
	$this->load->model('requests_model');
	$this->load->model('companies_model');
	$this->load->model('cases_model');
}

function index(){
	$this->lista();
	}

function acceso_restringido() {
	$data['content']='acceso_restringido';
	$this->load->view('v_content',$data);
}

function check_access () {
	$this->load->library('sec_validation');
	$result = $this->sec_validation->login_check_access($this->session->userdata('usuario_id'),$this->router->fetch_class(),$this->router->fetch_method());
	if (!$result) {
	$this->session->set_flashdata('message_error', 'Acceso Restringido=>'.$this->router->fetch_class()."/".$this->router->fetch_method());
	redirect('usuarios/acceso_restringido');
	}
}

function lista($estado=null,$urgencia=null){
	// Valida Acceso
	$this->check_access();

	$this->load->library('form_validation');

	// Filtro
	 $filtro = false;

	 if (empty($_POST) && !is_null($estado))	{
 		//Limpio filtro del formulario a las variables de Session
 		$this->session->set_userdata('filtro_solicitudes_nombre', "");
 		$this->session->set_userdata('filtro_solicitudes_id_grupo', "");
 		$this->session->set_userdata('filtro_solicitudes_id_empresa', "");
 		$this->session->set_userdata('filtro_solicitudes_orden', "");
 		$this->session->set_userdata('filtro_solicitudes_estado', "N");
		if (!is_null($urgencia)) {
		$this->session->set_userdata('filtro_solicitudes_urgencia', "SOS");
		}else{
		$this->session->set_userdata('filtro_solicitudes_urgencia', "%");
		}
 	 }

	if (!empty($_POST) && $this->input->post('limpiar'))	{
		//Limpio filtro del formulario a las variables de Session
		$this->session->set_userdata('filtro_solicitudes_nombre', "");
		$this->session->set_userdata('filtro_solicitudes_id_grupo', "");
		$this->session->set_userdata('filtro_solicitudes_id_empresa', "");
		$this->session->set_userdata('filtro_solicitudes_orden', "");
		$this->session->set_userdata('filtro_solicitudes_estado', "N");
		$this->session->set_userdata('filtro_solicitudes_urgencia', "%");
	}


	if (!empty($_POST) && !$this->input->post('limpiar'))
	{
		//limpiamos los campos del formulario, no necesitamos validar
		$this->form_validation->set_rules('nombre', 'nombre', 'trim|max_length[100]|xss_clean');
		$this->form_validation->set_rules('grupo');
		$this->form_validation->set_rules('empresa');
		$this->form_validation->set_rules('orden');
		$this->form_validation->set_rules('estado');
		$this->form_validation->set_rules('urgencia');
		$this->form_validation->run();

		//Paso el filtro del formulario a las variables de Session
		$this->session->set_userdata('filtro_solicitudes_nombre', $this->input->post('nombre'));
		$this->session->set_userdata('filtro_solicitudes_id_grupo', $this->input->post('grupo'));
		$this->session->set_userdata('filtro_solicitudes_id_empresa', $this->input->post('empresa'));
		$this->session->set_userdata('filtro_solicitudes_orden', $this->input->post('orden'));
		$this->session->set_userdata('filtro_solicitudes_estado', $this->input->post('estado'));
		$this->session->set_userdata('filtro_solicitudes_urgencia', $this->input->post('urgencia'));

	}

	if ($this->session->userdata('filtro_solicitudes_id_grupo') == '') {$this->session->set_userdata('filtro_solicitudes_id_grupo', '');}
	if ($this->session->userdata('filtro_solicitudes_estado') == '') {$this->session->set_userdata('filtro_solicitudes_estado', 'N');}
	if ($this->session->userdata('filtro_solicitudes_urgencia') == '') {$this->session->set_userdata('filtro_solicitudes_urgencia', '%');}

	//var_dump($_POST);
	// Carga los filtros desde las variables de session
	$data_f = array();
	$data_f['nombre'] = $this->session->userdata('filtro_solicitudes_nombre'); $filtro = ($this->session->userdata('filtro_departamentos_nombre')?true:$filtro);
	$data_f['id_grupo'] = $this->session->userdata('filtro_solicitudes_id_grupo');$filtro = ($this->session->userdata('filtro_usuarios_username')?true:$filtro);
	$data_f['id_empresa'] = $this->session->userdata('filtro_solicitudes_id_empresa');$filtro = ($this->session->userdata('filtro_usuarios_email')?true:$filtro);
	$data_f['orden'] = $this->session->userdata('filtro_solicitudes_orden'); $filtro = ($this->session->userdata('filtro_solicitudes_orden')?true:$filtro);
	$data_f['estado'] = $this->session->userdata('filtro_solicitudes_estado'); $filtro = ($this->session->userdata('filtro_solicitudes_estado')?true:$filtro);
	$data_f['urgencia'] = $this->session->userdata('filtro_solicitudes_urgencia'); $filtro = ($this->session->userdata('filtro_solicitudes_urgencia')?true:$filtro);
	// Fin Filtro



	$data['filtro']=$filtro;
	$data['data_f']= $data_f;
	$data['solicitudes'] = $this->requests_model->get_requests(null,$filtro,$data_f);
	//echo $this->db->last_query();
	$data['empresas_grupos'] = $this->companies_model->get_companies_groups();
	$data['content']='admin/solicitudes/lista';
	$this->load->view('v_content',$data);

	}

function ver($id= null){
	// Valida Acceso
	$this->check_access();

	// Sin parametro
	if (is_null($id)) {
		$this->session->set_flashdata('message_error', $this->lang->line('eap_solicitudes_msg_noexiste'));
		redirect('solicitudes/lista');
	  }

	$solicitud = $this->requests_model->get_request($id);
	// No existe
	if (empty($solicitud)) {
		$this->session->set_flashdata('message_error', $this->lang->line('eap_solicitudes_msg_noexiste'));
		redirect('solicitudes/lista');
	  }
	$data['solicitud'] = $solicitud;
	$data['empresas_grupos'] = $this->companies_model->get_companies_groups();
	$data['logs'] = $this->requests_model->get_request_log($id);
	$data['content']='admin/solicitudes/ver';
	$this->load->view('v_content',$data);

	}

function nuevo_caso($id= null,$origen="lista"){
	// Valida Acceso
	$this->check_access();


	// Sin parametro
	if (is_null($id)) {
		$this->session->set_flashdata('message_error', $this->lang->line('eap_solicitudes_msg_noexiste'));
		redirect('solicitudes/lista');
	  }

	$solicitud = $this->requests_model->get_request($id);
	// No existe
	if (empty($solicitud)) {
		$this->session->set_flashdata('message_error', $this->lang->line('eap_solicitudes_msg_noexiste'));
		redirect('solicitudes/lista');
	  }

	// Caso ya Creado
	if ( $solicitud['id_casos_eap'] != '' ) {
		$this->session->set_flashdata('message_error', $this->lang->line('eap_solicitudes_msg_validar_caso'));
		redirect('solicitudes/ver/'.$id);
	  }

	$this->load->library('form_validation');

   if(isset($_POST["cancelar"])) {
		$this->session->set_flashdata('message', $this->lang->line('eap_solicitudes_msg_cancelado_nuevo_caso'));
		if ($origen=="ver") { redirect('solicitudes/ver/'.$id);} else {redirect('solicitudes/lista');}
   }


	if ($solicitud['id_grupo'] != 0 and $solicitud['id_empresa'] != 0)
	{ // No hace falta el formulario de carga, se graba directamete el caso.
		$valEmpresa = true;
	} else {
		$valEmpresa = false;
	}

	if ( $valEmpresa or !empty($_POST) )
	{

		$historial='';

		if (!empty($_POST)) {
		 $this->form_validation->set_rules('grupo','Grupo', 'required');;
		 $this->form_validation->set_rules('empresa','Empresa', 'required');;
		 $valEmpresaForm = $this->form_validation->run();

	 	}
	   if($valEmpresa or (!$valEmpresa and $valEmpresaForm)){

			if($solicitud['estado'] != 'C') {$data['estado'] = 'C'; $historial.= "Estado@@$solicitud[estado]@@C||";}
			if (!$valEmpresa){
				if($this->input->post('grupo') != $solicitud['id_grupo']) {$data['id_grupo'] = $this->input->post('grupo');$historial.="Grupo@@$solicitud[id_grupo]@@$data[id_grupo]||";}
				if($this->input->post('empresa') !=	 $solicitud['id_empresa'] and !($this->input->post('empresa') == "" and $solicitud['id_empresa'] == 0)) {$data['id_empresa'] = $this->input->post('empresa');$historial.="Empresa@@$solicitud[id_empresa]@@$data[id_empresa]||";}
			}

			// Genero los datos del Caso
			$data_caso ['fecha'] = $solicitud['fecha_creacion'];
			$data_caso ['consultor'] = $this->session->userdata('usuario_id');
			$data_caso ['estado'] = 'Contacto Pendiente';
			switch ($solicitud['urgencia']) {
		    case "SOS":
		        $data_caso ['bandera']='SOS';
		        break;
		    case "alta":
		        $data_caso ['bandera']='Roja';
		        break;
		    case "media":
		        $data_caso ['bandera']='Anaranjada';
		        break;
				dafault:
				    $data_caso ['bandera']='Sin Bandera';
			}
			if ($solicitud['origen'] == "movil") {
				$data_caso ['ingresoconsulta'] = 'Sistema Móvil';
			} else {
				$data_caso ['ingresoconsulta'] = 'Sistema Web';
			}

			$data_caso ['grupo'] = ($valEmpresa?$solicitud['id_grupo']:$this->input->post('grupo'));
			$data_caso ['empresa'] = ($valEmpresa?$solicitud['id_empresa']:$this->input->post('empresa'));
			$data_caso ['consultante'] = $solicitud['nombre'];
			if($solicitud['empleado_familiar']) {
				$data_caso ['puesto'] = 'Empleado';
			} else {
				$data_caso ['familiar'] ='Otro';
			}
			if($solicitud['tel_tipo'] == 'Trabajo') {
				$data_caso ['tel1'] = $solicitud['tel'];
				$data_caso ['tel1detalle'] = "Ver Solicitud";
				$data_caso ['tel2detalle'] = "No tiene";
				$data_caso ['tel3detalle'] = "No tiene";
			} else {
				if($solicitud['tel_tipo'] == 'Casa') {
				$data_caso ['tel2'] = $solicitud['tel'];
				$data_caso ['tel2detalle'] = "Ver Solicitud";
				$data_caso ['tel1detalle'] = "No tiene";
				$data_caso ['tel3detalle'] = "No tiene";
				}else{
				$data_caso ['tel3'] = $solicitud['tel'];
				$data_caso ['tel3detalle'] = "Ver Solicitud";
				$data_caso ['tel1detalle'] = "No tiene";
				$data_caso ['tel2detalle'] = "No tiene";
				}
			}
			$data_caso ['email'] = $solicitud['email'];
			$data_caso ['descripcion'] = $solicitud['consulta'];

			// Guarda el Caso Nuevo
			$id_casos_eap = $this->cases_model->set_case('', $data_caso,'insert');
			$data_caso_mod['numero'] = date("Y").$id_casos_eap;


			//echo $this->db->last_query();
			if ($id_casos_eap != '') {
				$this->cases_model->set_case($id_casos_eap,$data_caso_mod); // Actualiza Numero de Caso
				$dato_caso_encuesta['caso'] = $id_casos_eap;
				$this->cases_model->set_case_survey('',$dato_caso_encuesta,'insert'); //Guarda Caso Encuesta

				$data['id_casos_eap'] = $id_casos_eap;$historial.="Id Caso@@@@$id_casos_eap||";
				//echo $this->db->last_query();
			}

			if ($historial != '' && $this->requests_model->set_request($id, $data) && $id_casos_eap != ''){
				// GUARDA LOG
				$data_log = array(
					'id_solicitudes' => $id,
					'fecha' => date("Y-m-d H:i:s"),
					'modificador' => $this->session->userdata('usuario_nombre_apellido'),
					'modificaciones' => $historial);
				if ($historial != '') {$this->requests_model->set_request_log($data_log);}
				$this->session->set_flashdata('message', $this->lang->line('eap_solicitudes_msg_guardado_nuevo_caso'));
				if ($origen=="ver") { redirect('solicitudes/ver/'.$id);} else {redirect('solicitudes/lista');}
				//echo $this->db->last_query();
			} else {
				$this->session->set_flashdata('message', $this->lang->line('eap_solicitudes_msg_guardado_nuevo_caso_error'));
			}
	   }
	}
	$data['origen']= $origen;
	$data['solicitud'] = $solicitud;
	$data['empresas_grupos'] = $this->companies_model->get_companies_groups(1);
	$data['logs'] = $this->requests_model->get_request_log($id);
	$data['content']='admin/solicitudes/nuevo_caso';
	$this->load->view('v_content',$data);

	}


function anular_solicitud($id= null,$origen="lista"){
	// Valida Acceso
	$this->check_access();

	// Sin parametro
	if (is_null($id)) {
		$this->session->set_flashdata('message_error', $this->lang->line('eap_solicitudes_msg_noexiste'));
		redirect('solicitudes/lista');
	  }

	$solicitud = $this->requests_model->get_request($id);
	// No existe
	if (empty($solicitud)) {
		$this->session->set_flashdata('message_error', $this->lang->line('eap_solicitudes_msg_noexiste'));
		redirect('solicitudes/lista');
	  }

	$this->load->library('form_validation');

   if(isset($_POST["cancelar"])) {
		$this->session->set_flashdata('message', $this->lang->line('eap_solicitudes_msg_cancelado_anular'));
		if ($origen=="ver") { redirect('solicitudes/ver/'.$id);} else {redirect('solicitudes/lista');}
   }

	if (!empty($_POST))
	{
		$this->form_validation->set_rules('motivo_anulacion', 'lang:eap_solicitudes_motivo_anulacion', 'required|trim|max_length[200]|xss_clean');

		$this->form_validation->run();
	}

   if($this->form_validation->run()){

		$historial='';
		if($solicitud['estado'] != 'A') {$data['estado'] = 'A'; $historial.= "";}
		if($this->input->post('motivo_anulacion') != $solicitud['motivo_anulacion']) {$data['motivo_anulacion'] = $this->input->post('motivo_anulacion');$historial.="Motivo Anulación@@xx@@$data[motivo_anulacion]||";}
		if ($historial != '') {
			$data['fecha_modificacion'] = date("Y-m-d H:i:s");
			$data['id_usuario_modificacion'] = $this->session->userdata('usuario_id');
		}

		if ($historial != '' && $this->requests_model->set_request($id, $data)){
			// GUARDA LOG
			$data_log = array(
				'id_solicitudes' => $id,
				'fecha' => date("Y-m-d H:i:s"),
				'modificador' => $this->session->userdata('usuario_nombre_apellido'),
				'modificaciones' => $historial);
			if ($historial != '') {$this->requests_model->set_request_log($data_log);}
			$this->session->set_flashdata('message', $this->lang->line('eap_solicitudes_msg_anulada'));
			if ($origen=="ver") { redirect('solicitudes/ver/'.$id);} else {redirect('solicitudes/lista');}
			//echo $this->db->last_query();
		} else {
			$this->session->set_flashdata('message', $this->lang->line('eap_solicitudes_msg_anulada_error'));
		}
   }


	$data['origen']= $origen;
	$data['solicitud'] = $solicitud;
	$data['logs'] = $this->requests_model->get_request_log($id);
	$data['content']='admin/solicitudes/anular_solicitud';
	$this->load->view('v_content',$data);

	}


function anular_solicitud_ajax($origen="lista"){
	// Valida Acceso
	$this->check_access();

	// Sin parametro
	if(isset($_POST["id"])) {
		$id = $_POST["id"];
	} else  {
		$this->session->set_flashdata('message_error', $this->lang->line('eap_solicitudes_msg_noexiste'));
		$result['error'] = true;
		$result['message'] = $this->lang->line('eap_solicitudes_msg_noexiste');
		//redirect('solicitudes/lista');
	}

	$solicitud = $this->requests_model->get_request($id);
	// No existe
	if (empty($solicitud)) {
		$this->session->set_flashdata('message_error', $this->lang->line('eap_solicitudes_msg_noexiste'));
		//redirect('solicitudes/lista');
		$result['error'] = true;
		$result['message'] = $this->lang->line('eap_solicitudes_msg_noexiste');
	  }

	$this->load->library('form_validation');
	$this->form_validation->set_rules('motivo_anulacion', 'lang:eap_solicitudes_motivo_anulacion', 'required|trim|max_length[200]|xss_clean');
	$this->form_validation->run();

	if ($this->form_validation->run() == FALSE) {
		$result['error'] = true;
		$result['message'] = validation_errors();

	 } else {
		$historial='';
		if($solicitud['estado'] != 'Anulada') {$data['estado'] = 'Anulada'; $historial.= "";}
		if($this->input->post('motivo_anulacion') != $solicitud['motivo_anulacion']) {$data['motivo_anulacion'] = $this->input->post('motivo_anulacion');$historial.="Motivo Anulación@@xx@@$data[motivo_anulacion]||";}
		if ($historial != '') {
			$data['fecha_modificacion'] = date("Y-m-d H:i:s");
			$data['id_usuario_modificacion'] = $this->session->userdata('usuario_id');
		}

		if ($historial != '' && $this->requests_model->set_request($id, $data)){
			// GUARDA LOG
			$data_log = array(
				'id_solicitudes' => $id,
				'fecha' => date("Y-m-d H:i:s"),
				'modificador' => $this->session->userdata('usuario_nombre_apellido'),
				'modificaciones' => $historial);
			if ($historial != '') {$this->requests_model->set_request_log($data_log);}
			$this->session->set_flashdata('message', $this->lang->line('eap_solicitudes_msg_anulada'));
			$result['error'] = FALSE; //TRUE; should be FALSE
			$result['message'] = $this->lang->line('eap_solicitudes_msg_anulada');
			//echo $this->db->last_query();
		} else {
			$this->session->set_flashdata('message', $this->lang->line('eap_solicitudes_msg_anulada_error'));
			$result['error'] = TRUE;
			$result['message'] = $this->lang->line('eap_solicitudes_msg_anulada_error');
		}

		//if ($origen=="ver") { redirect('solicitudes/ver/'.$id,'refresh');} else {redirect('solicitudes/lista','refresh');}
		// Model will load here to add Card ID to the database.
		// Why redirect this AJAX request?
		// redirect('admin/editaccount/search_account', 'refresh');

	}

	$json = json_encode($result);
	die($json);


}


}
