public ActionResult BuscarCliente(string Codigo)
        {
            GerenciadorDePedidosWebContext db = new GerenciadorDePedidosWebContext();

            var empresa = db.Clientes.SingleOrDefault(x => x.Cnpj == Codigo);

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

            if (empresa != null && empresa.TipoPessoa == TipoPessoa.Juridica)
            {
                empresa.Nome = " ";

                empresa.Sobrenome = " ";

                return Json(empresa);
            }
            else if (cliente != null && cliente.TipoPessoa == TipoPessoa.Fisica)
            {
                cliente.NomeFantasia = " ";
                return Json(cliente);
            }
            else
            {
                Cliente c = new Cliente();

                c.Nome = "Não Encontrado";

                return Json(c);
            }
        }
        public ActionResult Filtrar(PedidosViewModel model)
        {
            GerenciadorDePedidosWebContext db = new GerenciadorDePedidosWebContext();

            if ((model.valorMaximo.HasValue) && (model.valorMinimo.HasValue) && (model.mesMinimo.HasValue) && (model.mesMaximo.HasValue))
            {
                ViewBag.Valor = db.Pedidoes.Where(x => x.Valortotal >= model.valorMinimo && x.Valortotal <= model.valorMaximo && x.Mes >= model.mesMinimo && x.Mes <= model.mesMaximo);
            }
            else
            {
                return HttpNotFound();
            }

            //if ((model.diaMaximo.HasValue) && (model.diaMinimo.HasValue))
            //{
            //   ViewBag.Dia = db.Pedidoes.Where(x => x.Valortotal >= model.valorMinimo && x.Valortotal <= model.valorMaximo);
            //}

            //if (model.NomeCliente != null)
            //{
            //    ViewBag.Nome = db.Pedidoes.Where(x => x.Cliente.Nome == model.NomeCliente);
            //}

            ViewBag.Pedidos = ViewBag.Valor;

            ViewBag.Clientes = db.Clientes.Select(x => x);

            return View();
        }
        public ActionResult BuscarPorTelefone(string Telefone)
        {
            GerenciadorDePedidosWebContext db = new GerenciadorDePedidosWebContext();

            ViewBag.Cliente = db.Clientes.Where(x => x.Telefone == Telefone);

            return View();
        }
        public ActionResult BuscarPorNomeFantasia(string NomeFantasia)
        {
            GerenciadorDePedidosWebContext db = new GerenciadorDePedidosWebContext();

            ViewBag.Cliente = db.Clientes.Where(x => x.NomeFantasia == NomeFantasia || x.RazaoSocial == NomeFantasia || x.Cnpj == NomeFantasia || x.Email == NomeFantasia || x.Telefone == NomeFantasia);

            return View();
        }
        public ActionResult BuscarPorNome(string Nome)
        {
            GerenciadorDePedidosWebContext db = new GerenciadorDePedidosWebContext();

            ViewBag.Cliente = db.Clientes.Where(x => x.Nome == Nome || x.Cpf == Nome || x.Email == Nome || x.Telefone == Nome || x.Sobrenome == Nome);

            return View();
        }
        public ActionResult BuscarPorCnpj(string Cnpj)
        {
            GerenciadorDePedidosWebContext db = new GerenciadorDePedidosWebContext();

            ViewBag.Cliente = db.Clientes.Where(x => x.Cnpj == Cnpj);

            return View();
        }
        public ActionResult Index()
        {
            GerenciadorDePedidosWebContext db = new GerenciadorDePedidosWebContext();

            this.ViewBag.Produtos = db.Produtoes.Select(x => x);

            return View();
        }
        public ActionResult Edit(int Id)
        {
            GerenciadorDePedidosWebContext db = new GerenciadorDePedidosWebContext();

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

            return View(produto);
        }
        public ActionResult Cadastrar(Cliente cliente)
        {
            GerenciadorDePedidosWebContext db = new GerenciadorDePedidosWebContext();

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

            return Redirect("/Cliente");
        }
        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 BuscarPorCodigo(string Cpf)
        {
            GerenciadorDePedidosWebContext db = new GerenciadorDePedidosWebContext();

            var cliente = db.Clientes.Where(x => x.Cpf == Cpf);

            ViewBag.Cliente = cliente;

            return View();
        }
 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 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 Detais(int pedidoId)
        {
            GerenciadorDePedidosWebContext db = new GerenciadorDePedidosWebContext();

            var pedido = db.Pedidoes.Find(pedidoId);

            ViewBag.Cliente = db.Clientes.Where(x => x.Id == pedido.IdCliente);

            ViewBag.Itens = db.Items.Where(x => x.IdDoPedido == pedidoId);

            ViewBag.Produto = db.Produtoes.Select(x => x);

            return View(pedido);
        }
        public ActionResult Logar(Usuario usuario)
        {
            GerenciadorDePedidosWebContext db = new GerenciadorDePedidosWebContext();

            Usuario user = db.Usuarios.Where(x => x.Login == usuario.Login && x.Senha == usuario.Senha).SingleOrDefault();

            if (user == null)
            {
                return Redirect("/Login");
            }
            else
            {
                HttpContext.Session.Add("UsuarioLogado", true);
                return Redirect("/Home");
            }
        }
        public ActionResult Configurar(Usuario usuario)
        {
            GerenciadorDePedidosWebContext db = new GerenciadorDePedidosWebContext();

            Usuario user = db.Usuarios.Where(x => x.Login == usuario.Login && x.Senha == usuario.Senha).SingleOrDefault();

            if (user == null)
            {
                return View("Index");
            }
            else
            {

                return View("Configurar", user);
            }
        }
        public ActionResult Delete(int id)
        {
            GerenciadorDePedidosWebContext db = new GerenciadorDePedidosWebContext();

            var pedido = db.Pedidoes.Find(id);

            if (pedido == null)
            {

                return HttpNotFound();

            }

            ViewBag.Cliente = db.Clientes.Where(x => x.Id == pedido.IdCliente);

            ViewBag.Itens = db.Items.Where(x => x.IdDoPedido == id);

            ViewBag.Produto = db.Produtoes.Select(x => x);

            return View(pedido);
        }
        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 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");
        }
 //
 // GET: /Login/
 public ActionResult Logout(Usuario usuario)
 {
     GerenciadorDePedidosWebContext db = new GerenciadorDePedidosWebContext();
     HttpContext.Session.Add("UsuarioLogado", false);
     return Redirect("/Login");
 }
        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 JsonResult ObterProdutoPeloId(int id)
        {
            GerenciadorDePedidosWebContext db = new GerenciadorDePedidosWebContext();

            var produto = db.Produtoes.SingleOrDefault(x => x.Id == id);

            return Json(produto, JsonRequestBehavior.AllowGet);
        }
        public ActionResult Index()
        {
            GerenciadorDePedidosWebContext db = new GerenciadorDePedidosWebContext();

            CadastroDePedido pedido = new CadastroDePedido();

            ViewBag.Produtos = db.Produtoes.Select(x => x).ToList();

            ViewBag.Itens = db.Items.Select(x => x);

            return View();
        }
        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();
        }
        //
        // GET: /PedidosView/
        public ActionResult Index()
        {
            GerenciadorDePedidosWebContext db = new GerenciadorDePedidosWebContext();

            var pedido = db.Pedidoes.Select(x => x);

            ViewBag.Pedidos = pedido;

            var cliente = db.Clientes.Select(x => x);

            ViewBag.Clientes = cliente;

            return View();
        }
 public ActionResult Logout(Usuario usuario)
 {
     GerenciadorDePedidosWebContext db = new GerenciadorDePedidosWebContext();
     Session["Statusdousuario"] = "Logoff";
     return Redirect("/Login");
 }