public ActionResult Details(Guid id)
        {
            try
            {
                ViewBag.IsDetails = false;

                CadastrarVendaViewModel     cadVenda = new CadastrarVendaViewModel();
                DetailsDeleteVendaViewModel detailsDeleteVendaViewModel = new DetailsDeleteVendaViewModel();

                detailsDeleteVendaViewModel.Venda = Mapper.Map <Venda>(_vendaRepository.ObterPorId(id));

                cadVenda.IdVenda            = detailsDeleteVendaViewModel.Venda.Id;
                cadVenda.IdCliente          = detailsDeleteVendaViewModel.Venda.IdCliente;
                cadVenda.IdFormaDePagamento = detailsDeleteVendaViewModel.Venda.IdFormaDePagamento;
                cadVenda.IdPerformance      = detailsDeleteVendaViewModel.Venda.IdPerfomance;
                cadVenda.IdVeiculo          = detailsDeleteVendaViewModel.Venda.IdVeiculo;

                detailsDeleteVendaViewModel = PreencherViewModelDetails(detailsDeleteVendaViewModel, ref cadVenda);

                return(View("DetailsConfirmar", detailsDeleteVendaViewModel));
            }
            catch
            {
                return(RedirectToAction("Error", "Base"));
            }
        }
        public static Venda ToDbEntity(this CadastrarVendaViewModel domain)
        {
            if (domain == null)
            {
                return(null);
            }

            return(new Venda
            {
            });
        }
        public ActionResult Create()
        {
            CadastrarVendaViewModel vendaViewModel = new CadastrarVendaViewModel();

            vendaViewModel.Clientes           = Mapper.Map <IList <GDC_Clientes>, IList <Cliente> >(_clienteRepository.ObterTodos());
            vendaViewModel.FormasDePagamentos = new List <FormaDePagamento>().OrderBy(a => a.Modelo).ToList();
            vendaViewModel.Veiculos           = Mapper.Map <IList <GDC_Veiculos>, IList <Veiculo> >(_veiculoRepository.ObterTodos());
            vendaViewModel.Performance        = Mapper.Map <IList <GDC_Perfomances>, IList <Performance> >(_perfomanceRepository.ObterTodos());
            vendaViewModel.Endereco           = new Endereco();

            return(View(vendaViewModel));
        }
        public ActionResult DetailsConfirmar(CadastrarVendaViewModel cadVenda)
        {
            ViewBag.IsDetailsFinish = true;

            DetailsDeleteVendaViewModel detailsDeleteVendaViewModel = new DetailsDeleteVendaViewModel();

            detailsDeleteVendaViewModel.Venda = Mapper.Map <Venda>(cadVenda);
            detailsDeleteVendaViewModel.Valor = cadVenda.Valor;

            detailsDeleteVendaViewModel = PreencherViewModelDetails(detailsDeleteVendaViewModel, ref cadVenda);

            return(View(detailsDeleteVendaViewModel));
        }
        public ActionResult Create(CadastrarVendaViewModel cadVenda)
        {
            if (cadVenda.Tipo_Entrega != EntregaVenda.Domiciliar && cadVenda.Tipo_Entrega != EntregaVenda.Loja)
            {
                ModelState.AddModelError("TipoEntrega", "Escolha um tipo de Entrega!");
                return(View("Create", cadVenda));
            }

            if (ModelState.IsValid)
            {
                if (cadVenda.Tipo_Entrega == EntregaVenda.Domiciliar)
                {
                    if (cadVenda.Endereco == null || string.IsNullOrWhiteSpace(cadVenda.Endereco.Numero) || string.IsNullOrWhiteSpace(cadVenda.Endereco.Estado) ||
                        string.IsNullOrWhiteSpace(cadVenda.Endereco.Cidade) || string.IsNullOrWhiteSpace(cadVenda.Endereco.CEP))
                    {
                        ModelState.AddModelError("TipoEntrega", " Para concluir a compra informe seu endereço na tela de clientes");
                        ViewBag.ExibirCampo = true;

                        return(View("Create", cadVenda));
                    }
                }

                cadVenda.Venda = Mapper.Map <Venda>(cadVenda);

                cadVenda.Venda.Veiculo          = Mapper.Map <Veiculo>(_veiculoRepository.ObterPorId(cadVenda.IdVeiculo));
                cadVenda.Venda.FormaDePagamento = Mapper.Map <FormaDePagamento>(_formaPagamentoRepository.ObterPorId(cadVenda.IdFormaDePagamento));
                cadVenda.Venda.Perfomance       = Mapper.Map <Performance>(_perfomanceRepository.ObterPorId(cadVenda.IdPerformance));

                cadVenda.Venda = Venda.CalcularVeiculoEsportivo(cadVenda.Venda);
                cadVenda.Venda = Venda.CalcularPagamento(cadVenda.Venda);

                if (cadVenda.Venda.Parcela.HasValue)
                {
                    cadVenda.Parcela = cadVenda.Venda.Parcela.Value;
                }

                cadVenda.Valor = cadVenda.Venda.Valor;

                return(RedirectToAction("DetailsConfirmar", cadVenda));
            }
            else
            {
                cadVenda.Clientes           = Mapper.Map <IList <GDC_Clientes>, IList <Cliente> >(_clienteRepository.ObterTodos());
                cadVenda.FormasDePagamentos = Mapper.Map <IList <FormaDePagamento> >(_formaPagamentoRepository.ObterTodos());
                cadVenda.Veiculos           = Mapper.Map <IList <GDC_Veiculos>, IList <Veiculo> >(_veiculoRepository.ObterTodos());
                cadVenda.Performance        = Mapper.Map <IList <GDC_Perfomances>, IList <Performance> >(_perfomanceRepository.ObterTodos());
                cadVenda.Endereco           = new Endereco();

                return(View("Create", cadVenda));
            }
        }
        private DetailsDeleteVendaViewModel PreencherViewModelDetails(DetailsDeleteVendaViewModel detailsDeleteVendaViewModel,
                                                                      ref CadastrarVendaViewModel cadVenda)
        {
            detailsDeleteVendaViewModel.Cliente          = Mapper.Map <Cliente>(_clienteRepository.ObterPorId(cadVenda.IdCliente));
            detailsDeleteVendaViewModel.Performance      = Mapper.Map <Performance>(_perfomanceRepository.ObterPorId(cadVenda.IdPerformance));
            detailsDeleteVendaViewModel.Roda             = Mapper.Map <Roda>(_rodaRepository.ObterPorId(detailsDeleteVendaViewModel.Performance.IdRoda));
            detailsDeleteVendaViewModel.Banco            = Mapper.Map <Banco>(_bancoRepository.ObterPorId(detailsDeleteVendaViewModel.Performance.IdBanco));
            detailsDeleteVendaViewModel.Cor_Veiculo      = Mapper.Map <Cor_Veiculo>(_corRepository.ObterPorId(detailsDeleteVendaViewModel.Performance.IdCorVeiculo));
            detailsDeleteVendaViewModel.Veiculo          = Mapper.Map <Veiculo>(_veiculoRepository.ObterPorId(cadVenda.IdVeiculo));
            detailsDeleteVendaViewModel.Endereco         = Mapper.Map <Endereco>(_enderecoRepository.ObterPorId(cadVenda.IdEndereco));
            detailsDeleteVendaViewModel.FormaDePagamento = Mapper.Map <FormaDePagamento>(_formaPagamentoRepository.ObterPorId(cadVenda.IdFormaDePagamento));

            return(detailsDeleteVendaViewModel);
        }
        public ActionResult PegarFormaDePagamento(Guid IdCliente)
        {
            try
            {
                var vendaViewModel = new CadastrarVendaViewModel();

                var cliente = _clienteRepository.ObterPorId(IdCliente);

                if (cliente.Tipo == TipoCliente.Vip.ToString())
                {
                    vendaViewModel.FormasDePagamentos = Mapper.Map <List <GDC_Formas_Pagamentos>, List <FormaDePagamento> >(_formaPagamentoRepository.ObterListarFormaPagamentoVip().ToList());
                }
                else
                {
                    vendaViewModel.FormasDePagamentos = Mapper.Map <List <GDC_Formas_Pagamentos>, List <FormaDePagamento> >(_formaPagamentoRepository.ObterFormaPagamentoComum().ToList());
                }

                return(PartialView("_ParcialViewFormaDePagamento", vendaViewModel.FormasDePagamentos));
            }
            catch
            {
                return(RedirectToAction("Error", "Base"));
            }
        }
        public JsonResult ObterInformacoesBasicasCliente(Guid idCliente)
        {
            var vendaViewModel = new CadastrarVendaViewModel();

            vendaViewModel.Performance = Mapper.Map <IList <Performance> >(_perfomanceRepository.ObterPorIdCliente(idCliente));

            var cliente = Mapper.Map <Cliente>(_clienteRepository.ObterPorId(idCliente));

            if (cliente.Tipo.ToString() == TipoCliente.Vip.ToString())
            {
                vendaViewModel.FormasDePagamentos = Mapper.Map <IList <FormaDePagamento> >(_formaPagamentoRepository.ObterListarFormaPagamentoVip());
            }
            else
            {
                vendaViewModel.FormasDePagamentos = Mapper.Map <IList <FormaDePagamento> >(_formaPagamentoRepository.ObterFormaPagamentoComum());
            }

            if (cliente.Endereco == null)
            {
                cliente.Endereco = new Endereco();
            }

            return(Json(new { formasDePagamento = vendaViewModel.FormasDePagamentos, customs = vendaViewModel.Performance, endereco = cliente.Endereco }));
        }