private ItemConsumo RetornarItemConsumo(DataRow dr)
        {
            ItemConsumo obj = new ItemConsumo();

            obj.IdConsumo  = Convert.ToInt32(dr["idconsumo"]);
            obj.Quantidade = Convert.ToInt32(dr["quantidade"]);
            obj.Prod       = new ProdutoDAO().RetornarPorId(Convert.ToInt32(dr["idproduto"]));

            return(obj);
        }
        public ActionResult EditItemConsumo(FormCollection collection)
        {
            try
            {
                //Pega o id do item selecionado no dropdownlist:  O indice "ListaDropProdutos" da collection é o item selecionado
                int idProduto = Convert.ToInt32(collection["ListaDropProdutos"].ToString());

                //Retornar o produto selecionado
                Produto objNovoProd = new ProdutoDAO().RetornarPorId(idProduto);

                //Cria e atualiza o itemConsumo a ser editado
                ItemConsumo objItemConsumo = new ItemConsumo();
                UpdateModel(objItemConsumo);

                if (objNovoProd.Id == objItemConsumo.Prod.Id)
                {
                    //Se o produto não foi alterado: Apenas atualizo a quantidade
                    new ItemConsumoAdoDAO().AlterarItemConsumo(objItemConsumo);

                    //Atualiza produto
                    int     totalConsumido = new ItemConsumoAdoDAO().RetornarTotalConsumidoProd(objItemConsumo.Prod.Id);
                    Produto objProd        = new ProdutoDAO().RetornarPorId(objItemConsumo.Prod.Id);
                    objProd.AtualizaEstoque(totalConsumido);
                    new ProdutoDAO().Alterar(objProd);
                }
                else
                {
                    //Guardadno o produto antigo
                    Produto prodAntigo = new ProdutoDAO().RetornarPorId(objItemConsumo.Prod.Id);

                    //Atualizando o item com o novo produto
                    objItemConsumo.Prod = objNovoProd;

                    //Atualizo o item consumo na base
                    new ItemConsumoAdoDAO().AlterarItemConsumo(prodAntigo, objItemConsumo);

                    //Atualizo o novo produto
                    int totalConsumidoNovoProd = new ItemConsumoAdoDAO().RetornarTotalConsumidoProd(objItemConsumo.Prod.Id);
                    objNovoProd.AtualizaEstoque(totalConsumidoNovoProd);
                    new ProdutoDAO().Alterar(objNovoProd);

                    //Atualizo o produto antigo
                    int totalConsumidoAntigoProd = new ItemConsumoAdoDAO().RetornarTotalConsumidoProd(prodAntigo.Id);
                    prodAntigo.AtualizaEstoque(totalConsumidoAntigoProd);
                    new ProdutoDAO().Alterar(prodAntigo);
                }

                return(View("DetailsConsumoCreateItens", new ConsumoAdoDAO().RetornarPorId(objItemConsumo.IdConsumo)));
            }
            catch
            {
                return(View());
            }
        }
        public void ExcluirItemConsumo(ItemConsumo obj)
        {
            string sql = $"delete from itensconsumo where idconsumo=@idconsumo and idproduto=@idproduto;";

            MySqlCommand cmd = new MySqlCommand(sql);

            cmd.Parameters.Add(new MySqlParameter("@idconsumo", obj.IdConsumo));
            cmd.Parameters.Add(new MySqlParameter("@idproduto", obj.Prod.Id));

            ExecutarComando(cmd);
        }
        public void AlterarItemConsumo(ItemConsumo obj)
        {
            string       sql = $"update itensconsumo set quantidade = @quantidade where idconsumo=@idconsumo and idproduto=@idproduto;";
            MySqlCommand cmd = new MySqlCommand(sql);

            cmd.Parameters.Add(new MySqlParameter("@idconsumo", obj.IdConsumo));
            cmd.Parameters.Add(new MySqlParameter("@idproduto", obj.Prod.Id));
            cmd.Parameters.Add(new MySqlParameter("@quantidade", obj.Quantidade));

            ExecutarComando(cmd);
        }
        public void InserirItemConsumo(ItemConsumo obj)
        {
            string sql = $"insert into itensconsumo(idconsumo, idproduto, quantidade) values(@idconsumo, @idproduto, @quantidade);";

            MySqlCommand cmd = new MySqlCommand(sql);

            cmd.Parameters.Add(new MySqlParameter("@idconsumo", obj.IdConsumo));
            cmd.Parameters.Add(new MySqlParameter("@idproduto", obj.Prod.Id));
            cmd.Parameters.Add(new MySqlParameter("@quantidade", obj.Quantidade));

            ExecutarComando(cmd);
        }
        public ActionResult CreateItemConsumo(FormCollection collection)
        {
            try
            {
                //Pega o id do item selecionado no dropdownlist: o indice "ListaDropProdutos" da collection é o item selecionado
                int idProduto = Convert.ToInt32(collection["ListaDropProdutos"].ToString());

                //Retornar o produto
                Produto objProd = new ProdutoDAO().RetornarPorId(idProduto);

                //Cria e atualiza o Item de Consumo
                ItemConsumo objItemConsumo = new ItemConsumo();
                UpdateModel(objItemConsumo);
                objItemConsumo.Prod = objProd;

                /* Verifica se a chave IdConsumo + IdProduto já existe na relação de itens de consumo da base
                 * -> Se não existir, incluir o item de consumo. -> Se existir, apresenta uma mensagem de erro.
                 */
                if (new ItemConsumoAdoDAO().RetornarItemConsumo(objItemConsumo.IdConsumo, objItemConsumo.Prod.Id) == null)
                {
                    //Insere o item consumo na base
                    new ItemConsumoAdoDAO().InserirItemConsumo(objItemConsumo);

                    //Atualiza o produto após ter inserido o consumo
                    int totalConsumido = new ItemConsumoAdoDAO().RetornarTotalConsumidoProd(objProd.Id);
                    objProd.AtualizaEstoque(totalConsumido);
                    new ProdutoDAO().Alterar(objProd);

                    return(View("DetailsConsumoCreateItens", new ConsumoAdoDAO().RetornarPorId(objItemConsumo.IdConsumo)));
                }
                else
                {
                    TempData["msgErroItemKey"] = String.Format("Produto já utilizado para este consumo. Escolha outro Produto.");
                    ViewBag.ListaDropProdutos  = new SelectList(new ProdutoDAO().RetornarTodos(), "Id", "Descricao", idProduto);
                    return(View("CreateItemConsumo", objItemConsumo));
                }
            }
            catch
            {
                return(View());
            }
        }