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; }
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; }
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); }
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; }
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"); }
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; }
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); }