<?php
class Empresas extends MY_Controller
{

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

function index(){
	redirect('grupos/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 ver($id= null){

	// Valida Acceso
	$this->check_access();

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

	$empresa = $this->companies_model->get_company($id);
	// No existe
	if (empty($empresa)) {
		$this->session->set_flashdata('message_error', $this->lang->line('eap_empresas_msg_noexiste'));
		redirect('grupos/lista');
	  }
	$data['empresa'] = $empresa;
	$data['sedes'] = $this->companies_model->get_sites($id);
	$data['logs'] = $this->companies_model->get_company_log($id);
	$data['content']='admin/empresas/ver';
	$this->load->view('v_content',$data);

	}

function editar($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_empresas_msg_noexiste'));
		redirect('grupos/lista');
	  }

	$empresa = $this->companies_model->get_company($id);
	// No existe
	if (empty($empresa)) {
		$this->session->set_flashdata('message_error', $this->lang->line('eap_empresas_msg_noexiste'));
		redirect('grupos/lista');
	  }

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

   if(isset($_POST["cancelar"])) {
		$this->session->set_flashdata('message', $this->lang->line('eap_empresas_msg_cancelado'));
		if ($origen=="ver") { redirect('empresas/ver/'.$id);} else {redirect('grupos/ver/'.$this->input->post('grupo'));}
   }

	if (!empty($_POST))
	{
		$this->form_validation->set_rules('nombre', 'lang:eap_empresas_nombre', 'required|trim|max_length[100]|xss_clean|callback_validar_unico['.$id.']');

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

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

		$historial='';

		$data['fecha_modificacion'] = date("Y-m-d H:i:s");
		$data['id_usuario_modificacion'] = $this->session->userdata('usuario_id');
		if($this->input->post('nombre') != $empresa['nombre']) {$data['nombre'] = $this->input->post('nombre');$historial.="Nombre@@$empresa[nombre]@@$data[nombre]||";}

		if ($this->companies_model->set_company($id, $data)){
			// GUARDA LOG
			$data_log = array(
				'id_empresas' => $id,
				'fecha' => date("Y-m-d H:i:s"),
				'modificador' => $this->session->userdata('usuario_nombre_apellido'),
				'modificaciones' => $historial);
			$this->companies_model->set_company_log($data_log);
			$this->session->set_flashdata('message', $this->lang->line('eap_empresas_msg_guardado'));
			if ($origen=="ver") { redirect('empresas/ver/'.$id);} else {redirect('grupos/ver/'.$this->input->post('grupo'));}
			//echo $this->db->last_query();
		} else {
			$this->session->set_flashdata('message', $this->lang->line('eap_empresas_msg_guardado_error'));
		}
   }


	$data['origen']= $origen;
	$data['empresa'] = $empresa;
	$data['logs'] = $this->companies_model->get_company_log($id);
	$data['content']='admin/empresas/editar';
	$this->load->view('v_content',$data);

	}

function nuevo($id_grupo){
	// Valida Acceso
	$this->check_access();

	// Sin parametro
	if (is_null($id_grupo)) {
		$this->session->set_flashdata('message_error', $this->lang->line('eap_grupos_msg_noexiste'));
		redirect('grupos/lista');
	  }

	$grupo = $this->companies_model->get_company_group($id_grupo);
	// No existe
	if (empty($grupo)) {
		$this->session->set_flashdata('message_error', $this->lang->line('eap_grupos_msg_noexiste'));
		redirect('grupos/lista');
	  }

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

   if(isset($_POST["cancelar"])) {
		$this->session->set_flashdata('message', $this->lang->line('eap_empresas_msg_cancelado_nuevo'));
		redirect('grupos/ver/'.$id_grupo);
   }

	if (!empty($_POST))
	{
		$this->form_validation->set_rules('nombre', 'lang:eap_empresas_nombre', 'required|trim|max_length[100]|xss_clean|callback_validar_unico');
		$this->form_validation->run();
	}

   if($this->form_validation->run()){
		$historial='';
		$data['fecha_creacion'] = date("Y-m-d H:i:s");
		$data['id_usuario_creacion'] = $this->session->userdata('usuario_id');
		$data['fecha_modificacion'] = date("Y-m-d H:i:s");
		$data['id_usuario_modificacion'] = $this->session->userdata('usuario_id');
		$data['grupo'] = $id_grupo;
		if($this->input->post('nombre') != "") {$data['nombre'] = $this->input->post('nombre');$historial.="Nombre@@@@$data[nombre]||";}

		$id=$this->companies_model->set_company('', $data,'insert');

		if (is_numeric($id)){
			// Guardar LOG de Modificacion
			$data_log = array(
				'id_empresas' => $id,
				'fecha' => date("Y-m-d H:i:s"),
				'modificador' => $this->session->userdata('usuario_nombre_apellido'),
				'modificaciones' => $historial);
			$this->companies_model->set_company_log($data_log);

			$this->session->set_flashdata('message', $this->lang->line('eap_empresas_msg_guardado'));
			redirect('empresas/ver/'.$id);
			//echo $this->db->last_query();
		} else {
			$this->session->set_flashdata('message', $this->lang->line('eap_empresas_msg_guardado_error'));
		}
   }


	$empresa = array(
		'nombre'=>'',
		'grupo'=>$id_grupo,
		'grupo_nombre'=>$grupo['nombre']

		);

	$data['empresa'] = $empresa;
	$data['content']='admin/empresas/nuevo';
	$this->load->view('v_content',$data);

	}


function cambiar_estado($id=null,$estado=null,$origen=null) {
	// Valida Acceso
	$this->check_access();

	if (is_null($id) or is_null($estado)) {
		$this->session->set_flashdata('message_error', $this->lang->line('eap_empresas_msg_guardado_estado_error'));
		redirect('grupos/lista');
	}

	switch ($estado) {
		case "activar":
			$this->session->set_flashdata('message', $this->lang->line('eap_empresas_msg_activado'));
			if (!$this->companies_model->set_status_company($id,true)) { $this->session->set_flashdata('message', $this->lang->line('eap_empresas_msg_guardado_estado_error')); }
			redirect('grupos/ver/'.$origen);
			break;
		case "desactivar":
			$this->session->set_flashdata('message', $this->lang->line('eap_empresas_msg_desactivado'));
			if (!$this->companies_model->set_status_company($id,false)) { $this->session->set_flashdata('message', $this->lang->line('eap_empresas_msg_guardado_estado_error')); }
			redirect('grupos/ver/'.$origen);
			break;
		default:
			$this->session->set_flashdata('message_error', $this->lang->line('eap_empresas_msg_guardado_estado_error'));
			redirect('grupos/ver/'.$origen);
	}
}

function validar_unico ($nombre=null,$id=null){
   $grupo = $this->input->post('grupo');
   if ($this->companies_model->is_unique($nombre,$id,$grupo)) {
	   return TRUE;
   } else {
	   $this->form_validation->set_message('validar_unico', $this->lang->line('eap_empresas_msg_validar_unico').'==>'.$nombre.' Grupo=>'.$grupo);
	   return FALSE;
   }
}

public function ajax_carga_empresas($estado=-1)
{
	$options = "";
	if($this->input->post('grupo'))
	{
		$grupo = $this->input->post('grupo');
		$empresa_aux = $this->input->post('empresa_aux');
		$empresas = $this->companies_model->get_companies($grupo,$estado);

		?>
		<option value="">Seleccione una Empresa</option>
		<?
		foreach($empresas as $empresa)
		{
		?>
			<option value="<?=$empresa['id_empresas']?>" <?=($empresa_aux==$empresa['id_empresas']?"Selected":"")?>><?=$empresa['nombre']?></option>
		<?
		}
	}
}

}
