Beispiel #1
0
        public List <Sugestao> CalculaSugestoes(Foodbiter utilizador, Pesquisa.Pesquisa pesquisa, Localizacao localizacaoAtual, double?precoMin, double?precoMax, double distancia, List <Especialidade> especialidades)
        {
            var dataAgora = DateTime.Now;

            var especialidadesTratadas =
                especialidades
                // filtro das horas de abertura
                .Where(e => e.Estabelecimento.Aberto(dataAgora))
                // filtro da distancia
                .Where(e => e.Estabelecimento.Localizacao.DistanciaA(localizacaoAtual) < distancia)
                // filtro do preço
                .Where(e => e.Preco >= precoMin.GetValueOrDefault(0) && e.Preco <= precoMax.GetValueOrDefault(e.Preco))
                // filtro das despreferencias
                .Where(e => pesquisa.Despreferencias.Select(c => c.ToLower()).Intersect(e.Caracteristicas.Select(c => c.ToLower())).Count() == 0)
                // filtro das avaliacoes < 3
                .Where(e => utilizador.Avaliacoes.All(a => a.AvaliacaoFraca(e.IdEspecialidade) == false));

            especialidadesTratadas = AplicaCorrespondencia(especialidadesTratadas, utilizador.Preferencias, pesquisa.Preferencias);

            var sugestoes =
                especialidadesTratadas
                // Limitar a 3
                .Take(3)
                // Ordenar por distancia
                .OrderBy(e => e.Estabelecimento.Localizacao.DistanciaA(localizacaoAtual))
                // Ordenar por preco
                .ThenByDescending(e => e.Preco)
                // converter em sugestoes
                .Select(e => new Sugestao(e))
                .ToList();

            return(sugestoes);
        }
Beispiel #2
0
        public Foodbiter ToFoodbiter()
        {
            Foodbiter foodbiter = new Foodbiter()
            {
                Username        = Username,
                Nome            = Nome,
                Password        = Password,
                Email           = Email,
                DataNascimento  = DataNascimento,
                Avaliacoes      = Avaliacoes?.Select(a => a.ToReview()).ToList(),
                Preferencias    = Preferencias?.Select(p => p.ToPreferencia()).ToList(),
                Despreferencias = Preferencias?.Select(p => p.ToDespreferencia()).ToList()
            };

            if (foodbiter.Avaliacoes == null)
            {
                foodbiter.Avaliacoes = new List <Review>();
            }
            if (foodbiter.Preferencias == null)
            {
                foodbiter.Preferencias = new List <Preferencia>();
            }
            if (foodbiter.Despreferencias == null)
            {
                foodbiter.Despreferencias = new List <Preferencia>();
            }

            return(foodbiter);
        }
Beispiel #3
0
 public UtilizadorBD(Foodbiter foodbiter)
 {
     Username       = foodbiter.Username;
     Nome           = foodbiter.Nome;
     Password       = foodbiter.GetPasswordHashed();
     Email          = foodbiter.Email;
     DataNascimento = foodbiter.DataNascimento;
     Avaliacoes     = new List <ReviewBD>();
     Preferencias   = new List <PreferenciaBD>();
 }
Beispiel #4
0
        public IActionResult Registar([FromBody] Foodbiter foodbiter)
        {
            var utilizador = utilizadorFacade.GetUtilizador(foodbiter.Username);

            if (utilizador != null)
            {
                return(BadRequest());
            }

            utilizadorFacade.Registar(foodbiter.Username, foodbiter);

            return(Ok());
        }
Beispiel #5
0
        public List <Sugestao.Sugestao> Pesquisa(Foodbiter utilizador, string textoPesquisa, Localizacao localizacaoAtual, double?precoMin, double?precoMax, double distancia)
        {
            List <string>        nomesPetiscos  = especialidadeDAO.GetAllNomesPetiscos();
            Pesquisa             pesquisa       = parserPesquisa.ParsePesquisa(textoPesquisa, nomesPetiscos);
            List <Especialidade> especialidades = especialidadeDAO.GetAll(pesquisa.Petisco);

            var sugestoes = motorSugestoes.CalculaSugestoes(utilizador, pesquisa, localizacaoAtual, precoMin, precoMax, distancia, especialidades);

            if (sugestoes.Count > 0)
            {
                utilizadorDAO.AddUserPreferences(utilizador.Username, sugestoes[0].IdEspecialidade, pesquisa.Preferencias, pesquisa.Despreferencias);
            }

            return(sugestoes);
        }
Beispiel #6
0
 public void AtualizarPerfil([FromBody] Foodbiter foodbiter)
 {
     utilizadorFacade.AtualizarPerfil(foodbiter.Username, foodbiter.Nome, foodbiter.Email, foodbiter.DataNascimento, foodbiter.Password);
 }
Beispiel #7
0
 public void Add(Foodbiter foodBiter)
 {
     contextoBD.Utilizadores.Add(new UtilizadorBD(foodBiter));
     contextoBD.SaveChanges();
 }