Exemple #1
0
        public Alimento ObterAlimento(int idAlimento)
        {
            Alimento a = null;

            using (var sqlCon = new SqlConnection(DAO.CONECTION_STRING))
            {
                string txtCmd = "SELECT * FROM Alimento WHERE id = @id AND removido = 0";

                sqlCon.Open();
                using (var cmd = new SqlCommand(txtCmd, sqlCon))
                {
                    cmd.Parameters.Add("@id", SqlDbType.Int);
                    cmd.Parameters["@id"].Value = idAlimento;

                    using (var reader = cmd.ExecuteReader())
                    {
                        bool encontrado = reader.Read();

                        if (encontrado)
                        {
                            string designacao        = reader["designacao"].ToString();
                            float? preco             = (reader["preco"] == DBNull.Value) ? null : (float?)Convert.ToDouble(reader["preco"]);
                            byte[] foto              = (reader["foto"] == DBNull.Value) ? null : (byte[])reader["foto"];
                            int    idEstabelecimento = Convert.ToInt32(reader["id_estabelecimento"]);

                            // fecha o reader associado à sqlCon para que IngredienteDAO possa associar-lhe outro reader.
                            reader.Close();
                            ISet <string> ings = ingredientes.ObterIngredientes(idAlimento, sqlCon);

                            a = new Alimento(idAlimento, designacao, ings, idEstabelecimento, preco, foto);
                            a.AdicionarClassificacoes(classificacoes.ClassificacaoAlimento(idAlimento, sqlCon));
                            a.ClassificacaoMedia = a.ObterAvaliacaoMedia();
                        }
                    }
                }
            }
            return(a);
        }
Exemple #2
0
 public AlimentoEstabelecimento(int numeroPreferenciasVerificadas, float distancia, Estabelecimento estabelecimento, Alimento alimento)
 {
     this.numeroPreferenciasVerificadas = numeroPreferenciasVerificadas;
     this.distancia       = distancia;
     this.estabelecimento = estabelecimento;
     this.alimento        = alimento;
 }
Exemple #3
0
 public AlimentoEstabelecimento(Estabelecimento estabelecimento, Alimento alimento)
 {
     this.estabelecimento = estabelecimento;
     this.alimento        = alimento;
 }
Exemple #4
0
        public void AssociaIngredienteAlimento(int idAlimento, string designacaoIngrediente)
        {
            Alimento a = alimentos[idAlimento];

            a.AdicionaIngrediente(designacaoIngrediente);
        }
Exemple #5
0
 internal bool RegistarAlimento(int idEstabelecimento, Alimento alim)
 {
     return(alimentos.RegistarAlimento(idEstabelecimento, alim));
 }
Exemple #6
0
        //=====================================================================
        // GESTÃO DE ESTABELECIMENTO
        //=====================================================================

        public void RegistarAlimento(int idEstabelecimento, Alimento alim)
        {
            proprietarios.RegistarAlimento(idEstabelecimento, alim);
        }
Exemple #7
0
        //=====================================================================
        // PEDIDOS E CONSULTAS
        //=====================================================================

        public List <AlimentoEstabelecimento> EfetuarPedido(string termo, Location localizacao)
        {
            RegistaPedidoHistorico(termo);

            PedidoProcessado pedidoProcessado = new PedidoProcessado(termo);
            ISet <string>    preferencias     = new HashSet <string>();
            ISet <string>    naoPreferencias  = new HashSet <string>();

            //-----------------------------------------------------
            // Obtenção das Preferências e Não Preferências
            //-----------------------------------------------------
            if (clienteAutenticado != 0)
            {
                // cliente
                Cliente cliente = clientes.ObterPorId(clienteAutenticado);

                preferencias = cliente.ObterPreferencias(pedidoProcessado.NomeAlimento);
                ISet <string> preferenciasPedido = pedidoProcessado.Preferencias;
                preferencias.UnionWith(preferenciasPedido);

                naoPreferencias = cliente.ObterNaoPreferencias(pedidoProcessado.NomeAlimento);
                ISet <string> naoPreferenciasPedido = pedidoProcessado.NaoPreferencias;
                naoPreferencias.UnionWith(naoPreferenciasPedido);
            }
            else
            {
                // utilizador não autenticado
                preferencias    = pedidoProcessado.Preferencias;
                naoPreferencias = pedidoProcessado.NaoPreferencias;
            }

            Console.WriteLine("PUTA DEITA-TE: ");
            foreach (var p in naoPreferencias)
            {
                Console.Write(p + ",");
            }
            //----------------------------------------------------------------------------------------------------
            // Obtenção dos Estabelecimentos e respetivos Alimentos que não contêm não preferências do utilizador
            //----------------------------------------------------------------------------------------------------
            List <AlimentoEstabelecimento>     listaAEs      = new List <AlimentoEstabelecimento>();
            IDictionary <int, Estabelecimento> estabsObtidos = new Dictionary <int, Estabelecimento>();

            foreach (Alimento a in estabelecimentos.ObterAlimentos(pedidoProcessado.NomeAlimento))
            {
                if (!a.ContemNaoPreferencias(naoPreferencias)) // se não contém não preferências
                {
                    Alimento alim          = estabelecimentos.ObterAlimento(a.Id);
                    int      nPreferencias = a.QuantasPreferenciasContem(preferencias);

                    int             idEstab = alim.IdEstabelecimento;
                    Estabelecimento estab;

                    Console.WriteLine(alim.Id);
                    if (estabsObtidos.TryGetValue(idEstab, out estab) == false)
                    {
                        estab = estabelecimentos.ObterEstabelecimento(idEstab);
                        estabsObtidos.Add(idEstab, estab);
                    }
                    float distancia            = localizacao.DistanceTo(estab.Coords);
                    AlimentoEstabelecimento ae = new AlimentoEstabelecimento(nPreferencias, distancia, estab, alim);
                    listaAEs.Add(ae);
                }
            }
            listaAEs.Sort();

            return(listaAEs);
        }
Exemple #8
0
 public bool RegistarAlimento(int idEstabelecimento, Alimento alim)
 {
     return(estabelecimentos.RegistarAlimento(idEstabelecimento, alim));
 }