<?php class companies_model extends CI_Model{

	private $table_name	= 'empresas';			// companies
	private $table_name_1	= 'grupos';			// companies groups
	private $table_name_2	= 'sedes';			// sites

	// COMPANIES
	public function get_companies($group=0,$status=-1,$export=0)
	{
		$txtSelect = 'empresas.* ' ;
		$txtSelect .= ', grupos.nombre as grupo_nombre, grupos.activo as grupo_estado';
		$txtSelect .= ', empresas.nombre as empresa_nombre, empresas.activo as empresa_estado';
		$this->db->select($txtSelect);

		$this->db->from($this->table_name);
		$this->db->join($this->table_name_1,'grupos.id_grupos =empresas.grupo');


		if ($group != 0) { $this->db->where('id_grupos', $group);}
		if ($status != -1) {
			$this->db->where('grupos.activo', $status);
			$this->db->where('empresas.activo', $status);
		}

		$this->db->order_by('grupos.nombre,empresas.nombre');

		$query=$this->db->get();
		if ($export == 1){
			return $query->result();
		}else{
			return $query->result_array();
		}
	}

	public function get_company($id)
	{
		$txtSelect = '*, (select nombre from grupos g where g.id_grupos = empresas.grupo) as grupo_nombre';
		$txtSelect .= ', (select username from sec_usuarios u where u.id= empresas.id_usuario_creacion) as nombre_usuario_creacion';
		$txtSelect .= ', (select username from sec_usuarios u where u.id= empresas.id_usuario_modificacion) as nombre_usuario_modificacion';

		$this->db->select($txtSelect);
		$this->db->from($this->table_name);
		$this->db->where('id_empresas', $id);
		$query=$this->db->get();
		return $query->row_array();
	}

	public function set_company($id,$data,$mode=null)
	{
		if($mode == 'insert') {
		$this->db->insert($this->table_name, $data);
		return $this->db->insert_id();
		}

		$this->db->where('id_empresas', $id);
		return $this->db->update($this->table_name, $data);
	}

	public function get_company_log($id)
	{
		$txtSelect = '*';
		$this->db->select($txtSelect);
		$this->db->from('empresas_log');
		$this->db->where('id_empresas', $id);
		$this->db->order_by('fecha','desc');
		$query=$this->db->get();
		return $query->result_array();
	}

	public function set_company_log($data)
	{
		return $this->db->insert('empresas_log', $data);
	}

	function set_status_company ($id,$status)
	{
		$data = array(
		'activo' => $status,
		'fecha_modificacion' => date("Y-m-d H:i:s"),
		'id_usuario_modificacion' => $this->session->userdata('usuario_id')
		);
		$this->db->where('id_empresas', $id);
		$this->db->update($this->table_name, $data);
		$resultado = ($this->db->affected_rows() >0);
		// Guarda en LOG
		$historial = ($status?"Estado@@INACTIVO@@ACTIVO||":"Estado@@ACTIVO@@INACTIVO||");
		$data_log = array(
			'id_empresas' => $id,
			'fecha' => date("Y-m-d H:i:s"),
			'modificador' => $this->session->userdata('usuario_nombre_apellido'),
			'modificaciones' => $historial);
		$this->set_company_log($data_log);
		return $resultado;

	}


	public function is_unique($nombre, $id, $grupo)
	{
		$this->db->from($this->table_name);
		if ($id != null ) {$this->db->where('id_empresas !=', $id);}
		$this->db->where('grupo', $grupo);
		$this->db->where('nombre', $nombre);
		$query=$this->db->get();
		if ($query->num_rows()>0) {return false;}else { return true;}
	}

	// COMPANIES GROUPS

	public function get_companies_groups($status=-1)
	{
		$txtSelect = '*';
		$this->db->select($txtSelect);
		$this->db->from($this->table_name_1);
		$this->db->order_by('nombre');
		if ($status != -1) {
			$this->db->where('grupos.activo', $status);
		}
		$query=$this->db->get();
		return $query->result_array();
	}

	public function get_company_group($id)
	{
		$txtSelect = '*, (select username from sec_usuarios u where u.id=grupos.id_usuario_creacion) as nombre_usuario_creacion';
		$txtSelect .=', (select username from sec_usuarios u where u.id=grupos.id_usuario_modificacion) as nombre_usuario_modificacion';
		$this->db->select($txtSelect);
		$this->db->from($this->table_name_1);
		$this->db->where('id_grupos', $id);
		$query=$this->db->get();
		return $query->row_array();
	}

	public function get_company_group_log($id)
	{
		$txtSelect = '*';
		$this->db->select($txtSelect);
		$this->db->from('grupos_log');
		$this->db->where('id_grupos', $id);
		$this->db->order_by('fecha','desc');
		$query=$this->db->get();
		return $query->result_array();
	}

	public function set_company_group_log($data)
	{
		return $this->db->insert('grupos_log', $data);
	}

	public function set_company_group($id,$data,$mode=null)
	{
		if( $mode == 'insert') {
		$this->db->insert($this->table_name_1, $data);
		return $this->db->insert_id();
		}

		$this->db->where('id_grupos', $id);
		return $this->db->update($this->table_name_1, $data);
	}

	function set_status_company_group ($id,$status)
	{
		$data = array(
		'activo' => $status,
		'fecha_modificacion' => date("Y-m-d H:i:s"),
		'id_usuario_modificacion' => $this->session->userdata('usuario_id')
		);
		$this->db->where('id_grupos', $id);
		$this->db->update($this->table_name_1, $data);
		// Guarda en LOG
		$historial = ($status?"Estado@@INACTIVO@@ACTIVO||":"Estado@@ACTIVO@@INACTIVO||");
		$data_log = array(
			'id_grupos' => $id,
			'fecha' => date("Y-m-d H:i:s"),
			'modificador' => $this->session->userdata('usuario_nombre_apellido'),
			'modificaciones' => $historial);
		$this->set_company_group_log($data_log);
		return ($this->db->affected_rows() >0);

	}

	public function is_unique_group($nombre, $id)
	{
		$this->db->from($this->table_name_1);
		$this->db->where('id_grupos !=', $id);
		$this->db->where('nombre', $nombre);
		$query=$this->db->get();
		if ($query->num_rows()>0) {return false;}else { return true;}
	}



	public function get_sites($company=0, $status=-1,$export=0,$group=0)
	{
		$txtSelect = 'sedes.* ';
		$txtSelect .= ', (sedes.nombre) as sede_nombre, sedes.activo as sede_estado';
		$txtSelect .= ', (empresas.nombre) as empresa_nombre, empresas.activo as empresa_estado';
		$txtSelect .= ', (grupos.nombre) as grupo_nombre, grupos.activo as grupo_estado';
		$this->db->select($txtSelect);

		$this->db->from($this->table_name_2);
		$this->db->join($this->table_name,'empresas.id_empresas =sedes.empresa');
		$this->db->join($this->table_name_1,'empresas.grupo = grupos.id_grupos');

		if ($company != 0) {$this->db->where('id_empresas', $company);}
		if ($group != 0) {$this->db->where('id_grupos', $group);}
		if ($status != -1) {
			$this->db->where('grupos.activo', $status);
			$this->db->where('empresas.activo', $status);
			$this->db->where('sedes.activo', $status);
		}
		$this->db->order_by('grupos.nombre, empresas.nombre, sedes.nombre');

		$query=$this->db->get();
		if ($export == 1){
			return $query->result();
		}else{
			return $query->result_array();
		}
	}


	public function get_site($id)
	{
		$txtSelect = '*, (select nombre from empresas e where e.id_empresas =sedes.empresa) as empresa_nombre';
		$txtSelect .= ', (select grupos.nombre from empresas left join grupos on empresas.grupo = grupos.id_grupos where  empresas.id_empresas =sedes.empresa) as grupo_nombre';
		$txtSelect .= ', (select username from sec_usuarios u where u.id= sedes.id_usuario_creacion) as nombre_usuario_creacion';
		$txtSelect .= ', (select username from sec_usuarios u where u.id= sedes.id_usuario_modificacion) as nombre_usuario_modificacion';

		$this->db->select($txtSelect);
		$this->db->from($this->table_name_2);
		$this->db->where('id_sedes', $id);
		$query=$this->db->get();
		return $query->row_array();
	}

	public function set_site($id,$data,$mode=null)
	{
		if($mode == 'insert') {
		$this->db->insert($this->table_name_2, $data);
		return $this->db->insert_id();
		}

		$this->db->where('id_sedes', $id);
		return $this->db->update($this->table_name_2, $data);
	}

	public function get_site_log($id)
	{
		$txtSelect = '*';
		$this->db->select($txtSelect);
		$this->db->from('sedes_log');
		$this->db->where('id_sedes', $id);
		$this->db->order_by('fecha','desc');
		$query=$this->db->get();
		return $query->result_array();
	}

	public function set_site_log($data)
	{
		return $this->db->insert('sedes_log', $data);
	}



	function set_status_site ($id,$status)
	{
		$data = array(
		'activo' => $status,
		'fecha_modificacion' => date("Y-m-d H:i:s"),
		'id_usuario_modificacion' => $this->session->userdata('usuario_id')
		);
		$this->db->where('id_sedes', $id);
		$this->db->update($this->table_name_2, $data);
		// Guarda en LOG
		$historial = ($status?"Estado@@INACTIVO@@ACTIVO||":"Estado@@ACTIVO@@INACTIVO||");
		$data_log = array(
			'id_sedes' => $id,
			'fecha' => date("Y-m-d H:i:s"),
			'modificador' => $this->session->userdata('usuario_nombre_apellido'),
			'modificaciones' => $historial);
		$this->set_site_log($data_log);
		return ($this->db->affected_rows() >0);

	}


	public function is_unique_site($nombre, $id,$empresa)
	{
		$this->db->from($this->table_name_2);
		$this->db->where('id_sedes !=', $id);
		$this->db->where('nombre', $nombre);
		$this->db->where('empresa', $empresa);
		$query=$this->db->get();
		if ($query->num_rows()>0) {return false;}else { return true;}
	}




}
