<?php

class ClienteSystemClass {

  private $o_ParamBean;
  
  public function __construct($o_ParamBean){
    $this->o_ParamBean = $o_ParamBean;
  }
  
  private function getObjParamBean(){
    return $this->o_ParamBean;
  }
  
  public function insertCliente($a_documento){
    
    $o_ClienteBL = new ClienteBL();
    $id_cliente = $o_ClienteBL->insertarCliente($this->getObjParamBean());
    $o_DocumentoClienteBean = new DocumentoClienteBean();
    if($id_cliente){
    	if(is_array($a_documento)){
    		foreach ($a_documento as $key => $value) {
    			$o_DocumentoClienteBean->setIdCliente($id_cliente);
    			$o_DocumentoClienteBean->setIdDocumento($value);
    			$o_DocumentoClienteBL = new DocumentoClienteBL();
    			$o_DocumentoClienteBL->insertarDocumentoCliente($o_DocumentoClienteBean);
    		}
    	}
    	return $id_cliente;
    }
    return false;
  }
  
  public function LoadMercadoXRol(){
	//Mercados
	if(myUser::getUser()->getRoleId() == "sys.gen" || myUser::getUser()->getRoleId() == "sys.view"){
		$o_ClienteSystemClass = new ClienteSystemClass(new MercadoBean());
		$a_Mercado = $o_ClienteSystemClass->getMercado();
	}
  	
if(myUser::getUser()->getRoleId() == "sys.caja" || myUser::getUser()->getRoleId() == "sys.res" || myUser::getUser()->getRoleId() == "sys.sec" || myUser::getUser()->getRoleId() == "sys.sup"){
		
		if(myUser::getUser()->getRoleId() == "sys.sec" || myUser::getUser()->getRoleId() == "sys.sup"|| myUser::getUser()->getRoleId() == "sys.caja"){
			$o_ColaboladorBean = new ColaboradorBean();
			$o_ColaboladorBean->setIdColaborador(myUser::getUser()->getIdColaborador());
			
			$o_ColaboladorBL = new ColaboradorBL();
			$a_o_colaborador = $o_ColaboladorBL->busquedaColaborador($o_ColaboladorBean);
			
			if(is_array($a_o_colaborador)){
				foreach ($a_o_colaborador as $key => $o_colaborador){
					$idPadre = $o_colaborador->getIdPadre();
				}
			}
			
			$o_ColaboladorBean = new ColaboradorBean();
			$o_ColaboladorBean->setIdPadre($idPadre);
		}elseif(myUser::getUser()->getRoleId() == "sys.res" ){
			$o_ColaboladorBean = new ColaboradorBean();
			$o_ColaboladorBean->setIdPadre(myUser::getUser()->getIdColaborador());
		}
				
		
		$o_ColaboladorBL = new ColaboradorBL();
		$a_o_colaborador = $o_ColaboladorBL->busquedaColaborador($o_ColaboladorBean);
		if(is_array($a_o_colaborador)){
			foreach ($a_o_colaborador as $key => $o_coloborador){
				$a_Idcolaboradores[] = $o_coloborador->getIdColaborador();
			}
		}else{
			$a_Idcolaboradores[0] = '';
		}
		if(is_array($a_Idcolaboradores)){
			while(list($key,$val) =each($a_Idcolaboradores)){
				$o_MercadoRepresentante = new MercadoRepresentanteBean();
				$o_MercadoRepresentante->setIdColaborador($val);
				$o_MercadoRepresentanteBL = new MercadoRepresentanteBL();
				$a_o_repmer = $o_MercadoRepresentanteBL->busquedaMercadoRepresentanteDetalle($o_MercadoRepresentante);
				
				foreach ($a_o_repmer as $key => $o_repmer){
					$a_Idmercados[] = $o_repmer->getIdMercado();
				}
			}
			if(is_array($a_Idmercados)){
				$o_MercadoBean = new MercadoBean();
				$o_MercadoBean->setIdMercados($a_Idmercados);
				$o_ClienteSystemClass = new ClienteSystemClass($o_MercadoBean);
				$a_Mercado = $o_ClienteSystemClass->getMercado();
			}
		}
			
	}
	
	if(myUser::getUser()->getRoleId() == "sys.ope"){
		
		$o_MercadoRepresentante = new MercadoRepresentanteBean();
		
		$o_MercadoRepresentante->setIdColaborador(myUser::getUser()->getIdColaborador());
		$o_MercadoRepresentanteBL = new MercadoRepresentanteBL();
		$a_o_repmer = $o_MercadoRepresentanteBL->busquedaMercadoRepresentanteDetalle($o_MercadoRepresentante);
			
		foreach ($a_o_repmer as $key => $o_repmer){
			$a_mercadosPermitidos[] = $o_repmer->getIdMercado();
		}
		if(is_array($a_mercadosPermitidos)){
			$o_MercadoBean = new MercadoBean();
			$o_MercadoBean->setIdMercados($a_mercadosPermitidos);
			$o_ClienteSystemClass = new ClienteSystemClass($o_MercadoBean);
			$a_Mercado = $o_ClienteSystemClass->getMercado();
		}else{
			$a_Mercado = null;
		}
	}
	return $a_Mercado;
  	
  }
  
  public function insertUsuario($o_UsuarioBean){
    $o_UsuarioBL = new UsuarioBL();
    $o_UsuarioBL->insertarUsuario($o_UsuarioBean);
  }
   
  public function eliminarCliente(){
    
    $o_ClienteBL = new ClienteBL();
    return $o_ClienteBL->eliminarCliente($this->getObjParamBean());
    
  }
  
  public function actualizarCliente($id,$a_documento){
    
    $o_ClienteBL = new ClienteBL();
    $f_act = $o_ClienteBL->modificarCliente($this->getObjParamBean());
    if($f_act){
    	$o_DocumentoClienteBean = new DocumentoClienteBean();
    	$o_DocumentoClienteBean->setIdCliente($id);
    	$o_DocumentoClienteBL = new DocumentoClienteBL();
    	$o_DocumentoClienteBL->eliminarDocumentoCliente($o_DocumentoClienteBean);
    	if(is_array($a_documento)){
    		foreach ($a_documento as $key => $value) {
    			$o_DocumentoClienteBean->setIdDocumento($value);
    			$o_DocumentoClienteBL = new DocumentoClienteBL();
    			$o_DocumentoClienteBL->insertarDocumentoCliente($o_DocumentoClienteBean);
    		}
    	}
    	return true;
    }
    return false;
    
    
  }
  
  public function getTipoCliente(){
  
    $o_TipoClienteBL = new TipoClienteBL();
    return $o_TipoClienteBL->busquedaTipoCliente($this->getObjParamBean());
  
  }
  
  public function getCliente(){
  
    $o_ClienteBL = new ClienteBL();
    return $o_ClienteBL->getCliente($this->getObjParamBean());
  
  }
  
  public function getTipoClienteRol(){
    $o_TipoClienteRolBL = new TipoClienteRolBL();
    return $o_TipoClienteRolBL->busquedaTipoClienteRol(new TipoClienteRolBean());
    
  }
   public function getMercado(){
    $o_MercadoBL = new MercadoBL();
    return $o_MercadoBL->busquedaMercado($this->getObjParamBean());
    
  } 
  public function getSucursal(){
    $o_SucursalBL = new SucursalBL();
    return $o_SucursalBL->busquedaSucursal(new SucursalBean());
    
  }
   public function getTipoNegocio(){
    $o_TipoNegocioBL = new TipoNegocioBL();
    return $o_TipoNegocioBL->busquedaTipoNegocio(new TipoNegocioBean());
    
  }
  public function getDocumento(){
    $o_DocumentoBL = new DocumentoBL();
    return $o_DocumentoBL->busquedaDocumento(new DocumentoBean());
    
  }
  
  public function getEspecialidad(){
    
    $o_EspecialidadBL = new EspecialidadBL();
    return $o_EspecialidadBL->getEspecialidad($this->getObjParamBean());
  }
  

}