public ActionResult Salvar(Produto produto)
        {
            GerenciadorDePedidosWebContext db = new GerenciadorDePedidosWebContext();

            db.Produtoes.Add(produto);
            db.SaveChanges();

            return Redirect("/CadastroDeProduto");
        }
        public ActionResult Salvar(Usuario usuario)
        {
            GerenciadorDePedidosWebContext db = new GerenciadorDePedidosWebContext();

            db.Usuarios.Add(usuario);
            db.SaveChanges();

            return Redirect("/Usuarios");
        }
        public ActionResult Cadastrar(Cliente cliente)
        {
            GerenciadorDePedidosWebContext db = new GerenciadorDePedidosWebContext();

            db.Clientes.Add(cliente);
            db.SaveChanges();

            return Redirect("/Cliente");
        }
 public ActionResult Edit(Produto produto)
 {
     GerenciadorDePedidosWebContext db = new GerenciadorDePedidosWebContext();
     if (ModelState.IsValid)
     {
         db.Entry(produto).State = EntityState.Modified;
         db.SaveChanges();
         return RedirectToAction("Index");
     }
     return View(produto);
 }
        public ActionResult Delete(int Id)
        {
            GerenciadorDePedidosWebContext db = new GerenciadorDePedidosWebContext();

            var cliente = db.Clientes.SingleOrDefault(x => x.Id == Id);

            db.Clientes.Remove(cliente);

            db.SaveChanges();

            return Redirect("/Cliente/MostrarClientes");
        }
        public ActionResult DeletarConfirmado(int id)
        {
            GerenciadorDePedidosWebContext db = new GerenciadorDePedidosWebContext();

            var item = db.Items.Where(x => x.IdDoPedido == id);

                if (item == null)
                {

                    var pedido = db.Pedidoes.SingleOrDefault(x => x.Id == id);

                    db.Pedidoes.Remove(pedido);

                    db.SaveChanges();

                }
                else
                {

                    foreach (Item i in item)
                    {

                        db.Items.Remove(i);

                    }

                    db.SaveChanges();

                    var pedido = db.Pedidoes.SingleOrDefault(x => x.Id == id);

                    db.Pedidoes.Remove(pedido);

                    db.SaveChanges();

                }

            return RedirectToAction("Index");
        }
        public JsonResult TrocarSenha(int id, string novasenha)
        {
            GerenciadorDePedidosWebContext db = new GerenciadorDePedidosWebContext();

            Usuario usuario = db.Usuarios.Find(id);

            usuario.TrocarSenha(novasenha);

            db.Entry(usuario).State = EntityState.Modified;

            db.SaveChanges();

            return Json(usuario);
        }
        public ActionResult Remover(int Id)
        {
            GerenciadorDePedidosWebContext context = new GerenciadorDePedidosWebContext();

            try
            {
                var produto = context.Produtoes.SingleOrDefault(x => x.Id == Id);

                context.Produtoes.Remove(produto);

                context.SaveChanges();

                return RedirectToAction("Index");
            }
            catch
            {
                this.ViewBag.Produtos = context.Produtoes.Select(x => x);

                return View("Erro");
            }
        }
        public ActionResult SalvarPedido(int Dia, int Mes, int Ano, string Descricao, int PedidoId, int ClienteId)
        {
            if (PedidoId == 0)
            {
                return RedirectToAction("Index");

            }
            else
            {

                GerenciadorDePedidosWebContext db = new GerenciadorDePedidosWebContext();

                Cliente cliente = db.Clientes.Find(ClienteId);

                Pedido pedido = db.Pedidoes.Find(PedidoId);

                foreach (Item item in pedido.Itens)
                {
                    pedido.Valortotal = +item.Total;
                }

                pedido.Cliente = cliente;

                pedido.IdCliente = ClienteId;

                pedido.Dia = Dia;

                pedido.Mes = Mes;

                pedido.Ano = Ano;

                pedido.Descricao = Descricao;

                db.Entry(pedido).State = EntityState.Modified;

                db.SaveChanges();

                return Json(pedido);
            }
        }
        public ActionResult Adicionar(int Id, int quantidade, int Pedido)
        {
            GerenciadorDePedidosWebContext db = new GerenciadorDePedidosWebContext();

            var produto = db.Produtoes.Find(Id);

            Item item = new Item();

            item.Quantidade = quantidade;

            item.Produto = produto;

            item.Total = item.CalcularTotal();

            //--------------------------------------------------------------------
            //    Condição que verifica se eh o primeiro item a ser adicionado e instacia um pedido para o mesmo
            //--------------------------------------------------------------------

            if (Pedido == 0)
            {
                Pedido pedido = new Pedido();

                pedido.Valortotal = item.Total;

                db.Pedidoes.Add(pedido);

                db.SaveChanges();

                item.IdDoPedido = pedido.Id;

                db.Items.Add(item);

                pedido.Itens.Add(item);

                db.Entry(pedido).State = EntityState.Modified;

                db.SaveChanges();

            }
            else
            {
                var pedido = db.Pedidoes.Find(Pedido);

                db.Items.Add(item);

                pedido.Itens.Add(item);

                pedido.Acrescenta(item.Total);

                db.Entry(pedido).State = EntityState.Modified;

                db.SaveChanges();

                item.IdDoPedido = pedido.Id;

                db.Entry(item).State = EntityState.Modified;

                db.SaveChanges();
            }

            return Json(item);
        }
        public ActionResult DeletarPedido(int IdDoPedido)
        {
            if (IdDoPedido == 0)
            {

                return View();

            }
            else
            {

                GerenciadorDePedidosWebContext db = new GerenciadorDePedidosWebContext();

                try
                {

                    var pedido = db.Pedidoes.SingleOrDefault(x => x.Id == IdDoPedido);

                    db.Pedidoes.Remove(pedido);

                    db.SaveChanges();

                }
                catch
                {

                    var item = db.Items.Where(x => x.IdDoPedido == IdDoPedido);

                    foreach (Item i in item)
                    {

                        db.Items.Remove(i);

                    }

                    db.SaveChanges();

                }
                finally
                {

                    db.SaveChanges();

                }

                return View();

            }
        }
        public ActionResult Cancelar(int IdDoItem)
        {
            GerenciadorDePedidosWebContext db = new GerenciadorDePedidosWebContext();

            Item item = db.Items.Find(IdDoItem);

            db.Items.Remove(item);

            db.SaveChanges();

            return View();
        }
        public ActionResult Edit(Cliente cliente)
        {
            GerenciadorDePedidosWebContext db = new GerenciadorDePedidosWebContext();
            if (ModelState.IsValid)
            {
                db.Entry(cliente).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Details", cliente);
            }

            return RedirectToAction("MostrarClientes");
        }