idiomasPedido = $idiomasPedido; $this->idiomasUsuario = $idiomasUsuario; $this->tecnologiasPedido = $tecnologiasPedido; $this->tecnologiasUsuario = $tecnologiasUsuario; $this->perfilesPedido = $perfilesPedido; $this->perfilesUsuario = $perfilesUsuario; $this->provinciasPedido = $provinciasPedido; $this->provinciasDeseadas = $provinciasDeseadas; $this->provinciasNoDeseadas = $provinciasNoDeseadas; } //Funciones /** * Calcula la afinidad entre un usuario y un pedido. * @param usuario - usuario candidato al pedido. * @param pedido - pedido para el que calcular la afinidad. */ function calculaAfinidad($pI, $pP, $pT){ $vL = 0; $vI = 0; $vP = 0; $vT = 0; //Si no coincide alguna provincia deseada no nos vale. if($this->provinciasPedido != ""){ foreach($this->provinciasPedido as $provincia){ if(in_array($provincia, $this->provinciasDeseadas)){ $vL = $vL + 1; } } } if($vL <= 0) return -1; //Si coincide alguna provincia NO deseada no nos vale. if($this->provinciasPedido != ""){ foreach($this->provinciasPedido as $provincia){ if(in_array($provincia, $this->provinciasNoDeseadas)){ $vL = $vL - 1; } } } if($vL <= 0) return -1; $afi = 0; //Afinidad con los perfiles: if(count($this->perfilesUsuario) > 0){ if(in_array($this->perfilesPedido, $this->perfilesUsuario)){ $vP = 1; } } //Afinidad con los idiomas: if($this->idiomasPedido != ""){ foreach($this->idiomasPedido as $idioma){ if(in_array($idioma, $this->idiomasUsuario)){ $vI = $vI + 1; } } } if(count($this->idiomasPedido) > 0){ $vI = $vI/count($this->idiomasPedido); } //Afinidad con las tecnologías: if($this->tecnologiasPedido != ""){ foreach($this->tecnologiasPedido as $this->tecnologia){ if(in_array($this->tecnologia, $this->tecnologiasUsuario)){ $vT = $vT + 1; } } } if(count($this->tecnologiasPedido) > 0){ $vT = $vT/count($this->tecnologiasPedido); } $afi = ($pP * $vP) + ($pI * $vI) + ($pT * $vT); return $afi; } } ?>