コード例 #1
0
ファイル: JaccardService.cs プロジェクト: luciansr/musupr
        public double PredicaoDeVaga(Usuario usuario, Vaga vaga)
        {
            double pontuacao = 0.0;

            double avaliadaPor = 0.0;

            bool alreadyFound = false;

            foreach (Avaliacao avaliacao in vaga.avaliacoes)
            {

                if (alreadyFound || avaliacao.usuario.ID != usuario.ID)
                {
                    ++avaliadaPor;

                    double pontosSimilaridade = SimilaridadeDeUsuarioComOutroUsuario(usuario, avaliacao.usuario);

                    if (avaliacao.Gostou)
                    {
                        pontuacao += pontosSimilaridade;
                    }
                    else
                    {
                        pontuacao -= pontosSimilaridade;
                    }
                }
                else
                {
                    alreadyFound = true;
                }
            }

            return pontuacao / avaliadaPor;
        }
コード例 #2
0
        public double CalculaPercentagemDeRequisitosAtendidos(Usuario usuario, Vaga vaga)
        {
            double pontosTotais = 0, pontosFeitos = 0;

            foreach (NivelQualificacao qualificacaoVaga in vaga.qualidadesDesejadas)
            {
                NivelQualificacao qualificacaoUsuario = usuario.qualidades.FirstOrDefault(n => n.qualificacao.Tipo == qualificacaoVaga.qualificacao.Tipo);

                pontosTotais += qualificacaoVaga.Nivel;

                if (qualificacaoUsuario != null)
                {
                    double aproveitamento = (double)qualificacaoUsuario.Nivel / qualificacaoVaga.Nivel;

                    if (aproveitamento > 1)
                    {
                        pontosFeitos += qualificacaoVaga.Nivel + (qualificacaoUsuario.Nivel - qualificacaoVaga.Nivel) * 0.05;
                    }
                    else if (aproveitamento == 1)
                    {
                        pontosFeitos += qualificacaoVaga.Nivel;
                    }
                    else if (aproveitamento < 1)
                    {
                        pontosFeitos += qualificacaoUsuario.Nivel; // * aproveitamento;
                    }

                }

            }

            return pontosFeitos / pontosTotais;
        }
コード例 #3
0
ファイル: TestesGoogleApi.cs プロジェクト: luciansr/musupr
        public void TestDistanciaFundaoBarra()
        {
            //https://www.google.com.br/maps/dir/-22.8580108,-43.2322284/-22.9965259,-43.3564107

            RecommendationService rService = Factory.Instance.Get<RecommendationService>();

            Usuario usuario = new Usuario { Latitude = -22.8580108, Longitude = -43.2322284 };
            Vaga vaga = new Vaga { Latitude = -22.9965259, Longitude = -43.3564107 };

            double distancia = rService.CalculaDistanciaEntreUsuarioEVaga(usuario, vaga);
            Assert.IsTrue(distancia > 25 && distancia < 30, "Esperando entre 25 e 30, retornado: " +  distancia);
        }
コード例 #4
0
        public double CalculaDistanciaEntreUsuarioEVaga(Usuario usuario, Vaga vaga)
        {
            if (usuario.Latitude != 0.0 &&
                usuario.Longitude != 0.0 &&
                vaga.Latitude != 0.0 &&
                vaga.Longitude != 0.0)
            {
                return googleApi.CalculaDistanciaEntreDoisPontos(usuario.Latitude, usuario.Longitude, vaga.Latitude, vaga.Longitude);
            }

            return 0.0;
        }
コード例 #5
0
ファイル: VagaModel.cs プロジェクト: luciansr/musupr
 public VagaModel(Vaga vaga)
 {
     this.ID = vaga.ID;
     this.Titulo = vaga.Titulo;
     this.Descricao = vaga.Descricao;
     this.DescricaoMarkdown = vaga.DescricaoMarkdown;
     this.DataCriacao = vaga.DataCriacao;
     this.DataExpiracao = vaga.DataExpiracao;
     this.Salario = vaga.Salario;
     //this.HorasPorSemana = vaga.HorasPorSemana;
     this.Latitude = vaga.Latitude;
     this.Longitude = vaga.Longitude;
     this.CriadorNome = vaga.Criador.Nome;
     this.CriadorID = vaga.Criador.ID;
     this.TipoVagaID = vaga.TipoVaga.ID;
     this.ThumbnailUrl = vaga.ThumbnailUrl;
     this.PostItemImageUrl = vaga.PostItemImageUrl;
     this.HeaderImageUrl = vaga.HeaderImageUrl;
     this.Bloqueada = vaga.Bloqueada;
     this.CriadorBloqueado = vaga.Criador.Bloqueado;
     this.DeAdmin = vaga.Criador.Roles.Contains("admin");
 }
コード例 #6
0
ファイル: VagasService.cs プロジェクト: luciansr/musupr
        private Vaga GetVagaFromVagaModel(VagaModel vagaModel)
        {
            if (vagaModel == null) return null;

            Vaga vaga = new Vaga();

            vagaModel.Titulo = HtmlRemoval.StripTagsRegex(vagaModel.Titulo);
            vagaModel.DescricaoMarkdown = HtmlRemoval.StripTagsRegex(vagaModel.DescricaoMarkdown);
            vagaModel.Descricao = HtmlRemoval.StripTagsRegex(vagaModel.Descricao);

            vagaModel.ThumbnailUrl = HtmlRemoval.StripTagsRegex(vagaModel.ThumbnailUrl);
            vagaModel.PostItemImageUrl = HtmlRemoval.StripTagsRegex(vagaModel.PostItemImageUrl);
            vagaModel.HeaderImageUrl = HtmlRemoval.StripTagsRegex(vagaModel.HeaderImageUrl);

            Uri uriResult;

            if (!(Uri.TryCreate(vagaModel.ThumbnailUrl, UriKind.Absolute, out uriResult) && uriResult.Scheme == Uri.UriSchemeHttp))
            {
                vagaModel.ThumbnailUrl = null;
            }

            if (!(Uri.TryCreate(vagaModel.PostItemImageUrl, UriKind.Absolute, out uriResult) && uriResult.Scheme == Uri.UriSchemeHttp))
            {
                vagaModel.PostItemImageUrl = null;
            }

            if (!(Uri.TryCreate(vagaModel.HeaderImageUrl, UriKind.Absolute, out uriResult) && uriResult.Scheme == Uri.UriSchemeHttp))
            {
                vagaModel.HeaderImageUrl = null;
            }

            vaga.Titulo = vagaModel.Titulo.Substring(0, vagaModel.Titulo.Length > 29 ? 29 : vagaModel.Titulo.Length);
            vaga.Descricao = vagaModel.Descricao.Substring(0, vagaModel.Descricao.Length > 79 ? 79 : vagaModel.Descricao.Length);
            vaga.DescricaoMarkdown = vagaModel.DescricaoMarkdown.Substring(0, vagaModel.DescricaoMarkdown.Length > 3999 ? 3999 : vagaModel.DescricaoMarkdown.Length);

            vaga.ThumbnailUrl = vagaModel.ThumbnailUrl;
            vaga.HeaderImageUrl = vagaModel.HeaderImageUrl;
            vaga.PostItemImageUrl = vagaModel.PostItemImageUrl;

            vaga.DataCriacao = vagaModel.DataCriacao;
            vaga.DataExpiracao = vagaModel.DataExpiracao;

            vaga.TipoVaga = _uow.TiposVaga.GetByID(vagaModel.TipoVagaID);

            return vaga;
        }
コード例 #7
0
        public void TestPorcentagem75Porcento()
        {
            Usuario usuario = new Usuario
            {
                qualidades = new List<NivelQualificacao> {
                    new NivelQualificacao { qualificacao = jQuery, Nivel = 100 },
                    new NivelQualificacao { qualificacao = javascript, Nivel = 100 },
                    new NivelQualificacao { qualificacao = CSharp, Nivel = 100 },
                }
            };

            Vaga vaga = new Vaga
            {
                Titulo = "Vaga2",
                Salario = 2100,
                qualidadesDesejadas = new List<NivelQualificacao> {
                    new NivelQualificacao { qualificacao = jQuery, Nivel = 100 },
                    new NivelQualificacao { qualificacao = javascript, Nivel = 100 },
                    new NivelQualificacao { qualificacao = CSharp, Nivel = 100 },
                    new NivelQualificacao { qualificacao = SerAutoDidata, Nivel = 100 },
                }
            };

            RecommendationService rService = Factory.Instance.Get<RecommendationService>();

            Assert.AreEqual(rService.CalculaPercentagemDeRequisitosAtendidos(usuario, vaga), 0.75);
        }