<?php
/**
 * Demanda de servicio para el sistema de banco del tiempo de M锟絣aga.
 **/
 class DemandaBtMalaga extends ServicioBtMalaga {
 
 	static $has_one = array(
 	                        'Demandante' => 'UsuarioBtMalaga'
 	                       );

    private $ComponenteDemandanteID; 	                       
	function __construct($record = null, $isSingleton = false) {
		parent::__construct($record, $isSingleton);

 	        if ($this->DemandanteID != 0) {
		    $componenteUsuario = DataObject::get_one('ComponenteUsuarioBtMalaga', 'UsuarioID='.$this->DemandanteID);
                    if ($componenteUsuario) {
                	$this->ComponenteDemandanteID = $componenteUsuario->ID;
                	$this->setComponenteUsuario($componenteUsuario);
                    }
                }
	      
        } 	        

    /**
     * Devuelve el nombre del componente 
     **/
    public function getNombreComponente() {
        return 'demanda';
    }                                    
 	
    /**
     * Funci髇 que devuelve los campos para editar
     * el contenido en modo principal.
     **/
    protected function cargarEdicionPrincipal() { 
        $pestanasEditable = parent::cargarEdicionPrincipal();       

        $datos = $this->Pagina()->Datos();
        $usuarioConectado = Member::currentUser();
	  if (($usuarioConectado->ID != $this->DemandanteID) && (!isset($datos[ServicioBtMalaga::AUTOR_SERVICIO]))) {
  	    //Ofertante.
	    $columnasDemandante = '{"Campos":[
	                                      {"Nombre": "", "Columna":"Seleccionado", "Ordenacion":"na", "Tipo":"ra", "Tamano":20, "Filtro":"&nbsp;", "Alineacion":"left"},
		                                {"Nombre": "Email", "Columna":"Email", "Ordenacion":"str", "Tipo":"ro", "Tamano":180, "Filtro":"#text_filter", "Alineacion":"left"},
		                                {"Nombre": "Nombre", "Columna":"FirtsName", "Ordenacion":"str", "Tipo":"ro", "Tamano":160, "Filtro":"#text_filter", "Alineacion":"left"},
		                                {"Nombre": "Primer Apellido", "Columna":"Surname", "Ordenacion":"str", "Tipo":"ro", "Tamano":160, "Filtro":"#text_filter", "Alineacion":"left"},
		                                {"Nombre": "Segundo Apellido", "Columna":"SApellido", "Ordenacion":"str", "Tipo":"ro", "Tamano":"*", "Filtro":"#text_filter", "Alineacion":"left"}
                                           ]}';
            $sistema = Session::get(ComponenteBtMalagaControl::SISTEMA); 
            $records = DB::query('select distinct ContenidoEditable.ClassName, ContenidoEditableConPermisos.*, ComponenteUsuarioBtMalaga.* from ContenidoEditable, ContenidoEditableConPermisos, ComponenteUsuarioBtMalaga, UsuarioBtMalaga, SistemaUsuarioBtMalaga where ContenidoEditable.ID = ComponenteUsuarioBtMalaga.ID and ContenidoEditableConPermisos.ID=ContenidoEditable.ID and ComponenteUsuarioBtMalaga.UsuarioID=UsuarioBtMalaga.ID and UsuarioBtMalaga.Estado like \'Activo\' and SistemaUsuarioBtMalaga.UsuarioID=UsuarioBtMalaga.ID and SistemaUsuarioBtMalaga.SistemaID='.$sistema);
            $demandantes = singleton('ComponenteUsuarioBtMalaga')->buildDataObjectSet($records);
	    $demandanteField = new DataGridField(
	                                         'ComponenteDemandanteID',
	                                         $columnasDemandante,
                                                 $demandantes,
	                                         $this->ComponenteDemandanteID
	                                        );     
	    $campoDemandante = new CampoEditable();
          $campoDemandante->setNombre('Demandante');
          $campoDemandante->setField($demandanteField);
          $campoDemandante->setValidador(new ReferenciaRequeridaValidador());
          $pestanasEditable->add('Demandante', $campoDemandante);
        } else {
            if (isset($datos[ServicioBtMalaga::AUTOR_SERVICIO])) {
        		$this->DemandanteID = $datos[ServicioBtMalaga::AUTOR_SERVICIO];
            }
            $campoDemandante = new CampoEditable();
	      $campoDemandante->setNombre('Demandante');
	      $campoDemandante->setField(new HiddenField('DemandanteID', 'DemandanteID', $this->DemandanteID));
	      $campoDemandante->setVisible(false);
	      $pestanasEditable->add("Contenido", $campoDemandante);                        
        }  
	
        return $pestanasEditable;
    }	        
    
     /**
     * Sobreescribe el m閠odo guardar para escribir en el demandante.
     **/
    public function guardar($datos) {
    
    	if ($this->ComponenteDemandanteID) {
    		$componenteUsuario = DataObject::get_by_id('ComponenteUsuarioBtMalaga', $this->ComponenteDemandanteID);
    		if ($componenteUsuario) {
    			$this->DemandanteID = $componenteUsuario->UsuarioID;
    		}
    	}
    	parent::guardar($datos);
    }
   
      /**
       * Funci锟絥 para clonar un servicio.
       * Nota: debe ser sobreescrito por cada hijo.
       **/
     public function clonarServicio() {
       return $this->duplicate(true); //true para guardarlo tambi锟絥.
     }
   
    /**
     * Devuelve los campso para el formulario para el filtrado de datos.
     **/
    public function formularioFiltroTodos() {
      $fields = parent::formularioFiltroTodos();
      $fieldsPropio = new FieldSet(new TextField('Autor','Autor de la oferta (Email):'));
      $fields->merge($fieldsPropio);
      return $fields;
    }            	                                            

    /**
     * Devuelve los campso para el formulario para el filtrado de datos.
     **/
    public function formularioFiltro() {
      $fields = parent::formularioFiltro();
      $fieldsPropio = new FieldSet(new TextField('Autor','Autor de la oferta (Email):'));
      $fields->merge($fieldsPropio);
      return $fields;
    }            	                                            
      
 }
?>
