<?php
header("Content-Type: text/html;charset=utf-8");

class cls_Usuario {

	private $db_mensaje = "";
	private $db_nombretabla = "usuario";
	private $db_nombrevista = "usuario";
	private $db_filas = "*";
	private $usuario_id = 0;
	private $tipo = "";
	private $usuario = "";
	private $password = "";
	private $foto = "";
	private $nombres = "";
	private $documento_tipo = "DNI";
	private $documento_numero = "";
	private $telefono = "";
	private $correo = "";
	private $direccion = "";
	private $tienda_id = "";
	private $estado_actividad = "";
	private $permisos = "";
	private $usuario_modificacion = 0;
	private $fecha_creacion = "";
	private $fecha_modificacion = "";
	private $activo = true;
	
	public function __construct(){
		$this->db_filas = "usuario_id, tipo, usuario, password, foto, nombres, documento_tipo, documento_numero, telefono, correo, direccion, tienda_id, estado_actividad, permisos, usuario_modificacion, fecha_creacion, fecha_modificacion, activo";
	}

	static public function Indice($codigo){
		$current = new cls_Usuario();
		$conn = new cls_Conexion();
		$filtro = "usuario_id = ?";
		$values = array();
		array_push($values, $codigo );
		$lista = $conn->buscar_datos($current->db_nombrevista, $current->db_filas, $filtro, $values, "");
		$current->db_mensaje = $conn->getMensaje();
		for ($indice=0; $indice<count($lista); $indice++){
			$current->usuario_id = $lista[$indice]["usuario_id"];
			$current->tipo = $lista[$indice]["tipo"];
			$current->usuario = $lista[$indice]["usuario"];
			$current->password = $lista[$indice]["password"];
			$current->foto = $lista[$indice]["foto"];
			$current->nombres = $lista[$indice]["nombres"];
			$current->documento_tipo = $lista[$indice]["documento_tipo"];
			$current->documento_numero = $lista[$indice]["documento_numero"];
			$current->telefono = $lista[$indice]["telefono"];
			$current->correo = $lista[$indice]["correo"];
			$current->direccion = $lista[$indice]["direccion"];
			$current->tienda_id = $lista[$indice]["tienda_id"];
			$current->estado_actividad = $lista[$indice]["estado_actividad"];
			$current->permisos = $lista[$indice]["permisos"];
			$current->usuario_modificacion = $lista[$indice]["usuario_modificacion"];
			$current->fecha_creacion = $lista[$indice]["fecha_creacion"];
			$current->fecha_modificacion = $lista[$indice]["fecha_modificacion"];
			$current->activo = $lista[$indice]["activo"];
		}
		return $current;
	}
	static public function Usuario($nombre){
		$current = new cls_Usuario();
		$conn = new cls_Conexion();
		$filtro = "usuario LIKE ?";
		$values = array();
		array_push($values, $nombre);
		$lista = $conn->buscar_datos($current->db_nombrevista, $current->db_filas, $filtro, $values, "");
		$current->db_mensaje = $conn->getMensaje();
		for ($indice=0; $indice<count($lista); $indice++){
			$current->usuario_id = $lista[$indice]["usuario_id"];
			$current->tipo = $lista[$indice]["tipo"];
			$current->usuario = $lista[$indice]["usuario"];
			$current->password = $lista[$indice]["password"];
			$current->foto = $lista[$indice]["foto"];
			$current->nombres = $lista[$indice]["nombres"];
			$current->documento_tipo = $lista[$indice]["documento_tipo"];
			$current->documento_numero = $lista[$indice]["documento_numero"];
			$current->telefono = $lista[$indice]["telefono"];
			$current->correo = $lista[$indice]["correo"];
			$current->direccion = $lista[$indice]["direccion"];
			$current->tienda_id = $lista[$indice]["tienda_id"];
			$current->estado_actividad = $lista[$indice]["estado_actividad"];
			$current->permisos = $lista[$indice]["permisos"];
			$current->usuario_modificacion = $lista[$indice]["usuario_modificacion"];
			$current->fecha_creacion = $lista[$indice]["fecha_creacion"];
			$current->fecha_modificacion = $lista[$indice]["fecha_modificacion"];
			$current->activo = $lista[$indice]["activo"];
		}
		return $current;
	}

	public function get_usuario_id() { return $this->usuario_id; }
	public function get_tipo() { return $this->tipo; }
	public function get_usuario() { return $this->usuario; }
	public function get_password() { return $this->password; }
	public function get_foto() { return $this->foto; }
	public function get_nombres() { return $this->nombres; }
	public function get_dni() { return $this->documento_numero; }
	public function get_documento_tipo() { return $this->documento_tipo; }
	public function get_documento_numero() { return $this->documento_numero; }
	public function get_telefono() { return $this->telefono; }
	public function get_correo() { return $this->correo; }
	public function get_direccion() { return $this->direccion; }
	public function get_tienda_id() { return $this->tienda_id; }
	public function get_estado_actividad() { return $this->estado_actividad; }
	public function get_permisos() { return $this->permisos; }
	public function get_usuario_modificacion(){  return $this->usuario_modificacion; }
	public function get_fecha_creacion(){  return $this->fecha_creacion; }
	public function get_fecha_modificacion(){  return $this->fecha_modificacion; }
	public function get_activo() { return $this->activo; }
	
	public function set_usuario_id($usuario_id){ $this->usuario_id = $usuario_id; }
	public function set_tipo($tipo){ $this->tipo = $tipo; }
	public function set_usuario($usuario){ $this->usuario = $usuario; }
	public function set_password($password){ $this->password = $password; }
	public function set_foto($foto){ $this->foto = $foto; }
	public function set_nombres($nombres){ $this->nombres = $nombres; }
	public function set_dni($documento_numero){ $this->documento_numero = $documento_numero; }
	public function set_documento_tipo($documento_tipo){ $this->documento_tipo = $documento_tipo; }
	public function set_documento_numero($documento_numero){ $this->documento_numero = $documento_numero; }
	public function set_telefono($telefono){ $this->telefono = $telefono; }
	public function set_correo($correo){ $this->correo = $correo; }
	public function set_direccion($direccion){ $this->direccion = $direccion; }
	public function set_tienda_id($tienda_id){ $this->tienda_id = $tienda_id; }
	public function set_estado_actividad($estado_actividad){ $this->estado_actividad = $estado_actividad; }
	public function set_permisos($permisos){ $this->permisos = $permisos; }
	public function set_usuario_modificacion($usuario_modificacion){ $this->usuario_modificacion = $usuario_modificacion; }
	public function set_fecha_creacion($fecha_creacion){ $this->fecha_creacion = $fecha_creacion; }
	public function set_fecha_modificacion($fecha_modificacion){ $this->fecha_modificacion = $fecha_modificacion; }
	public function set_activo($activo){ $this->activo = $activo; }
	
	public function registrar( $usuario_editor ){
		$conn = new cls_Conexion();
		$respuesta = false;
		$values = array();
		if ( $this->usuario_id == 0 ){ // REGISTER
			array_push($values, $this->tipo);
			array_push($values, $this->usuario);
			array_push($values, $this->password);
			array_push($values, $this->foto);
			array_push($values, $this->nombres);
			array_push($values, $this->documento_tipo);
			array_push($values, $this->documento_numero);
			array_push($values, $this->telefono);
			array_push($values, $this->correo);
			array_push($values, $this->direccion);
			array_push($values, $this->tienda_id);
			array_push($values, $this->estado_actividad);
			array_push($values, $this->permisos);
			array_push($values, $usuario_editor);
			$respuesta = $conn->nuevo_registro($this->db_nombretabla, $values);
			$this->db_mensaje = $conn->GetMensaje();
			if ( $respuesta ){
				$this->usuario_id = $conn->getlastId();
			}
		} else { // UPDATE
			array_push($values, $this->tipo);
			array_push($values, $this->usuario);
			array_push($values, $this->password);
			array_push($values, $this->foto);
			array_push($values, $this->nombres);
			array_push($values, $this->documento_tipo);
			array_push($values, $this->documento_numero);
			array_push($values, $this->telefono);
			array_push($values, $this->correo);
			array_push($values, $this->direccion);
			array_push($values, $this->tienda_id);
			array_push($values, $this->estado_actividad);
			array_push($values, $this->permisos);
			array_push($values, $usuario_editor);
			array_push($values, $this->usuario_id );
			$respuesta = $conn->editar_registro($this->db_nombretabla, $values);
			$this->db_mensaje = $conn->GetMensaje();
		}
		return $respuesta;
	}
	public function importar( $usuario_editor ){
		$conn = new cls_Conexion();
		$respuesta = false;
		$values = array();
			array_push($values, $this->usuario_id);
			array_push($values, $this->tipo);
			array_push($values, $this->usuario);
			array_push($values, $this->password);
			array_push($values, $this->foto);
			array_push($values, $this->nombres);
			array_push($values, $this->documento_tipo);
			array_push($values, $this->documento_numero);
			array_push($values, $this->telefono);
			array_push($values, $this->correo);
			array_push($values, $this->direccion);
			array_push($values, $this->tienda_id);
			array_push($values, $this->estado_actividad);
			array_push($values, $this->permisos);
			array_push($values, $this->usuario_modificacion);
			array_push($values, $this->fecha_creacion);
			array_push($values, $this->fecha_modificacion);
			array_push($values, $this->activo);
			
			array_push($values, $this->tipo);
			array_push($values, $this->usuario);
			array_push($values, $this->password);
			array_push($values, $this->foto);
			array_push($values, $this->nombres);
			array_push($values, $this->documento_tipo);
			array_push($values, $this->documento_numero);
			array_push($values, $this->telefono);
			array_push($values, $this->correo);
			array_push($values, $this->direccion);
			array_push($values, $this->tienda_id);
			array_push($values, $this->estado_actividad);
			array_push($values, $this->permisos);
			array_push($values, $this->usuario_modificacion);
			array_push($values, $this->fecha_creacion);
			array_push($values, $this->fecha_modificacion);
			array_push($values, $this->activo);
		$respuesta = $conn->importar_registro($this->db_nombretabla, $values);
		$this->db_mensaje = $conn->GetMensaje();
		if ( $respuesta ){
			$this->usuario_id = $conn->getlastId();
		};
		return $respuesta;
	}
	public function eliminar($usuario_editor){
		$conn = new cls_Conexion();
		$respuesta = false;
		$values = array();
		if ($this->usuario_id > 0){ // DELETE
			array_push($values, $usuario_editor);
			array_push($values, $this->usuario_id );
			$respuesta = $conn->eliminar_registro($this->db_nombretabla, $values);
			$this->db_mensaje = $conn->GetMensaje();
		} else {
			$this->db_mensaje = "No se puede realizar este proceso";
		}
		return $respuesta;
	}
	public function get_mensaje(){
		return $this->db_mensaje;
	}
}

class cls_Group_Usuario {

	protected $db_mensaje = "";
	protected $db_nombre_tabla = "usuario";
	protected $db_nombres_columnas = "*";
	protected $db_filtro = "1";
	protected $db_agrupar = "";
	protected $db_orden_columna = "usuario";
	protected $db_orden_direccion = "ASC";
	protected $db_cantidad = 0;
	protected $db_filtro_datos = array();
	protected $db_filas = array();
	
	public function __construct(){
		$this->db_nombres_columnas = "usuario_id, tipo, usuario, password, foto, nombres, documento_tipo, documento_numero, telefono, correo, direccion, tienda_id, estado_actividad, permisos, usuario_modificacion, fecha_creacion, fecha_modificacion, activo";
		$this->db_orden_columna = "usuario";
	}

	static public function Export($fecha_min, $fecha_max, $ordendireccion="ASC", $ordencolumna="usuario_id", $agrupar=""){
		$conn = new cls_Conexion();
		$current = new cls_Group_Usuario();
		$current->db_filtro = "DATE(fecha_creacion) > DATE(?) AND DATE(fecha_creacion) <= DATE(?)";
		$current->db_orden_columna = $ordencolumna;
		$current->db_orden_direccion = $ordendireccion;
		$current->db_agrupar = $agrupar;
		array_push($current->db_filtro_datos, $fecha_min);
		array_push($current->db_filtro_datos, $fecha_max);
		$current->db_cantidad = $conn->contar_filas( $current->db_nombre_tabla, $current->db_filtro, $current->db_filtro_datos, $current->db_agrupar );
		$current->db_mensaje = $conn->getMensaje();
		return $current;
	}
	static public function Buscar($buscar="", $ordendireccion="ASC", $ordencolumna="usuario", $agrupar=""){
		$conn = new cls_Conexion();
		$current = new cls_Group_Usuario();
		$buscar = "%".$buscar."%";
		$current->db_filtro = "usuario LIKE ? AND activo = true";
		$current->db_orden_columna = $ordencolumna;
		$current->db_orden_direccion = $ordendireccion;
		$current->db_agrupar = $agrupar;
		array_push($current->db_filtro_datos, $buscar );
		$current->db_cantidad = $conn->contar_filas( $current->db_nombre_tabla, $current->db_filtro, $current->db_filtro_datos, $current->db_agrupar );
		$current->db_mensaje = $conn->getMensaje();
		return $current;
	}
	static public function Usuario($buscar="", $ordendireccion="ASC", $ordencolumna="usuario", $agrupar=""){
		$conn = new cls_Conexion();
		$current = new cls_Group_Usuario();
		$ss_buscar = $buscar;
		$current->db_filtro = "usuario LIKE ? AND activo = true";
		$current->db_orden_columna = $ordencolumna;
		$current->db_orden_direccion = $ordendireccion;
		$current->db_agrupar = $agrupar;
		array_push($current->db_filtro_datos, $ss_buscar );
		$current->db_cantidad = $conn->contar_filas( $current->db_nombre_tabla, $current->db_filtro, $current->db_filtro_datos, $current->db_agrupar );
		$current->db_mensaje = $conn->getMensaje();
		return $current;
	}
	static public function EstadosTipos($buscar="", $nombres="", $estados="Todos", $tipos="Todos", $ordendireccion="ASC", $ordencolumna="usuario", $agrupar=""){
		$conn = new cls_Conexion();
		$current = new cls_Group_Usuario();
		$current->db_filtro = "usuario LIKE ? AND nombres LIKE ? AND (estado_actividad LIKE ? OR ? LIKE 'Todos') AND (tipo LIKE ? OR ? LIKE 'Todos') AND activo = true";
		$current->db_orden_columna = $ordencolumna;
		$current->db_orden_direccion = $ordendireccion;
		$current->db_agrupar = $agrupar;
		array_push($current->db_filtro_datos, "%".$buscar."%" );
		array_push($current->db_filtro_datos, "%".$nombres."%" );
		array_push($current->db_filtro_datos, $estados );
		array_push($current->db_filtro_datos, $estados );
		array_push($current->db_filtro_datos, $tipos );
		array_push($current->db_filtro_datos, $tipos );
		$current->db_cantidad = $conn->contar_filas( $current->db_nombre_tabla, $current->db_filtro, $current->db_filtro_datos, $current->db_agrupar );
		$current->db_mensaje = $conn->getMensaje();
		return $current;
	}
	public function cargar_datos( $offset, $cantidad ){
		$conn = new cls_Conexion();
		$this->db_filas = $conn->listar_filas( $this->db_nombre_tabla, $this->db_nombres_columnas, $this->db_orden_columna, $this->db_orden_direccion, $this->db_filtro, $this->db_filtro_datos, $offset, $cantidad, $this->db_agrupar );
		$this->db_mensaje = $conn->GetMensaje();
	}
	public function get_cantidad_cargados(){
		return count($this->db_filas);
	}
	public function get_cantidad(){
		return $this->db_cantidad;
	}
	
	public function get_usuario_id($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["usuario_id"];
			return $val;
		}
		return 0;
	}
	public function get_tipo($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["tipo"];
			return $val;
		}
		return "";
	}
	public function get_usuario($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["usuario"];
			return $val;
		}
		return "";
	}
	public function get_password($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["password"];
			return $val;
		}
		return "";
	}
	public function get_foto($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["foto"];
			return $val;
		}
		return "";
	}
	public function get_nombres($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["nombres"];
			return $val;
		}
		return "";
	}
	public function get_dni($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["documento_numero"];
			return $val;
		}
		return "";
	}
	public function get_documento_tipo($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["documento_tipo"];
			return $val;
		}
		return "";
	}
	public function get_documento_numero($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["documento_numero"];
			return $val;
		}
		return "";
	}
	public function get_telefono($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["telefono"];
			return $val;
		}
		return "";
	}
	public function get_correo($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["correo"];
			return $val;
		}
		return "";
	}
	public function get_direccion($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["direccion"];
			return $val;
		}
		return "";
	}
	public function get_tienda_id($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["tienda_id"];
			return $val;
		}
		return "0";
	}
	public function get_estado_actividad($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["estado_actividad"];
			return $val;
		}
		return "";
	}
	public function get_permisos($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["permisos"];
			return $val;
		}
		return "";
	}
	public function get_usuario_modificacion($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["usuario_modificacion"];
			return $val;
		}
		return 0;
	}
	public function get_fecha_creacion($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["fecha_creacion"];
			return $val;
		}
		return "";
	}
	public function get_fecha_modificacion($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["fecha_modificacion"];
			return $val;
		}
		return "";
	}
	public function get_activo($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["activo"];
			return $val;
		}
		return "";
	}
};
?>		
