Beispiel #1
0
        public void TestRecuperarUsuario()
        {
            Veiculos.Ioc.Service.Service <Ioc.Core.Data.Usuario> service = new Ioc.Service.Service <Ioc.Core.Data.Usuario>();

            var usuario = service.Buscar(1);

            Assert.IsNotNull(usuario);
        }
Beispiel #2
0
        public ActionResult EditarVenda(int id)
        {
            this.FormaPagamento();
            
            Veiculos.Ioc.Service.Service<Ioc.Core.Data.Venda> servico = new Ioc.Service.Service<Ioc.Core.Data.Venda>();

            Ioc.Core.Data.Venda venda = servico.Buscar(id);
            
            Models.VendaModel model = new Models.VendaModel()
            {
                Id =  venda.Id,
                Comissao = venda.Comissao,
                Data = venda.Data,
                Desconto = venda.Desconto,
                Obs = venda.Obs,
                Veiculo = new Models.VeiculoModel()
                {
                    Id = venda.Veiculo.Id,
                    Ano = venda.Veiculo.AnoFabricacao,
                    Chassi = venda.Veiculo.Chassi,
                    Cilindradas = venda.Veiculo.Cilindradas,
                    DescricaoFabricante = venda.Veiculo.Modelo.Fabricante.Descricao,
                    DescricaoModelo = venda.Veiculo.Modelo.Descricao,
                    IdFabricante = venda.Veiculo.Modelo.IdFabricante,
                    IdModelo = venda.Veiculo.Modelo.Id,
                    Placa = venda.Veiculo.Placa,                    
                }
            };

            model.Pagamentos = new List<Models.PagamentoModel>();
            int index = 1;
            foreach (var pp in new Ioc.Service.Service<Ioc.Core.Data.PartePagamento>().BuscarTodos(f => f.IdVenda == id))
            {
                if(pp.IdCompra != null)
                {
                    pp.Compra = new Ioc.Service.Service<Ioc.Core.Data.Compra>().Buscar(pp.IdCompra.Value);
                }

                pp.FormaPagamento = new Ioc.Service.Service<Ioc.Core.Data.FormaPagamento>().Buscar(pp.IdFormaPagamento);

                model.Pagamentos.Add(
                    new Models.PagamentoModel()
                    {
                        Id = pp.Id,
                        IdCompra = pp.IdCompra != null? pp.IdCompra.Value : 0,
                        IdFormaPagamento = pp.IdFormaPagamento,
                        Quantia = pp.Quantia,
                        Index = index,
                        DescricaoFormaPagamento = pp.IdCompra == null ? pp.FormaPagamento.Descricao : pp.Compra.Veiculo.Placa + "/" + pp.Compra.Veiculo.Modelo.Descricao + "/" + pp.Compra.Veiculo.Modelo.Fabricante.Descricao + "/" + pp.Compra.Veiculo.AnoFabricacao.ToString(),
                    }
                    );
            }

          return View("Index", model);
        }
Beispiel #3
0
        public ActionResult RegistrarCompra(int idVeiculo, string placaVeiculo, Models.CompraModel model)
        {
            var Veiculo = Session["Veiculo"] as Models.VeiculoModel;

            if (!ModelState.IsValid || model.Id == -1)
            {
                if (model.Id == -1)
                {
                    ModelState.AddModelError("", "Erro ao salvar!");
                }
                if (model.Preco <= 0)
                {
                    ModelState.AddModelError("", "Informe um preço!");
                }

                this.FormaPagamento();

                return(View(model));
            }

            Ioc.Core.Data.Compra compra = new Ioc.Core.Data.Compra()
            {
                Data      = model.Data,
                Preco     = model.Preco,
                IdVeiculo = idVeiculo,
                Obs       = model.Obs,
            };

            Veiculos.Ioc.Service.Service <Ioc.Core.Data.Compra> servicoCompra = new Ioc.Service.Service <Ioc.Core.Data.Compra>();
            compra = servicoCompra.Inserir(compra);

            if (compra.Id > 0)
            {
                Ioc.Core.Data.PartePagamento pp = new Ioc.Core.Data.PartePagamento()
                {
                    Quantia          = model.Preco,
                    IdFormaPagamento = model.IdFormaPagamento,
                    IdCompra         = compra.Id
                };

                Veiculos.Ioc.Service.Service <Ioc.Core.Data.PartePagamento> servicoPP = new Ioc.Service.Service <Ioc.Core.Data.PartePagamento>();
                servicoPP.Inserir(pp);

                StatusAtualizacao.VeiculoAtualizar(new Ioc.Core.Data.Veiculo()
                {
                    Id = compra.IdVeiculo
                }, StatusAtualizacao.StatusVeiculo.DisponivelParaVenda);
                return(RedirectToAction("Home").WithSuccess("Compra salva com sucesso!"));
            }
            else
            {
                model.Id = -1;
                return(this.RegistrarCompra(idVeiculo, placaVeiculo, model));
            }
        }
Beispiel #4
0
        private void CarregaComboModelo()
        {
            Veiculos.Ioc.Service.Service <Ioc.Core.Data.Modelo> service = new Ioc.Service.Service <Ioc.Core.Data.Modelo>();

            ViewBag.IdModelo = new SelectList
                               (
                service.BuscarTodos(),
                "Id",
                "Descricao"
                               );
        }
Beispiel #5
0
        private void CarregaComboFabricante()
        {
            Veiculos.Ioc.Service.Service <Ioc.Core.Data.Fabricante> service = new Ioc.Service.Service <Ioc.Core.Data.Fabricante>();

            ViewBag.IdFabricante = new SelectList
                                   (
                service.BuscarTodos(),
                "Id",
                "Descricao"
                                   );
        }
Beispiel #6
0
        public void TestDeleteUsuario()
        {
            Ioc.Core.Data.Usuario usuario = new Ioc.Core.Data.Usuario()
            {
                Id = 2
            };
            Veiculos.Ioc.Service.Service <Ioc.Core.Data.Usuario> Service = new Ioc.Service.Service <Ioc.Core.Data.Usuario>();
            bool compare = (Service.Apagar(usuario) > 0);

            // assert
            Assert.IsTrue(compare);
        }
Beispiel #7
0
        private void FormaPagamento()
        {
            Veiculos.Ioc.Service.Service <Ioc.Core.Data.FormaPagamento> service = new Ioc.Service.Service <Ioc.Core.Data.FormaPagamento>();

            ViewBag.IdFormaPagamento = new SelectList
                                       (
                service.BuscarTodos(),
                "Id",
                "Descricao",
                1
                                       );
        }
Beispiel #8
0
        public static int VendaAtualizar(Ioc.Core.Data.Venda venda, StatusVenda status)
        {
            Veiculos.Ioc.Service.Service <Ioc.Core.Data.Venda> service = new Ioc.Service.Service <Ioc.Core.Data.Venda>();

            if (venda.Id > 0)
            {
                venda = service.Buscar(f => f.Id == venda.Id);
            }

            venda.IdStatusVenda = (int)status;

            return(service.Atualizar(venda));
        }
Beispiel #9
0
        public ActionResult PesquisarVeiculo(string placa, string controlador = null)
        {
            if (string.IsNullOrWhiteSpace(placa))
            {
                ModelState.AddModelError(string.Empty, "Informe a placa do veículo!");
                return(controlador == null?View("Index") : View($"{controlador}/Index"));
            }
            else if (!Veiculos.Util.Validacao.EPlacaValidar(placa))
            {
                ModelState.AddModelError(string.Empty, "Placa do veículo informada está em formato incorreto!");
                return(controlador == null?View("Index") : View($"{controlador}/Index"));
            }

            Veiculos.Ioc.Service.Service <Ioc.Core.Data.Veiculo> serviceVeiculo = new Ioc.Service.Service <Ioc.Core.Data.Veiculo>();

            Ioc.Core.Data.Veiculo veiculo = serviceVeiculo.Buscar(m => m.Placa == placa);

            if (veiculo == null || veiculo.Id == 0)
            {
                var cadastrarController = DependencyResolver.Current.GetService <CadastrarController>();
                cadastrarController.ControllerContext = new ControllerContext(this.Request.RequestContext, cadastrarController);

                var result = cadastrarController.BuscarVeiculoPorPlaca(placa, "Comprar");

                return(result);
            }

            var v = new Models.VeiculoModel()
            {
                Id                  = veiculo.Id,
                Ano                 = veiculo.AnoFabricacao,
                Chassi              = veiculo.Chassi,
                Cilindradas         = veiculo.Cilindradas,
                Placa               = veiculo.Placa,
                IdModelo            = veiculo.Modelo.Id,
                DescricaoModelo     = veiculo.Modelo.Descricao,
                IdFabricante        = veiculo.Modelo.Fabricante.Id,
                DescricaoFabricante = veiculo.Modelo.Fabricante.Descricao
            };


            Models.CompraModel compra = new Models.CompraModel();
            compra.Veiculo = v;

            this.FormaPagamento();

            Session.Remove("Veiculo");
            Session["Veiculo"] = v;
            return(controlador == null?View() : View($"{controlador}/Index", compra));
        }
Beispiel #10
0
        public void TestUpdateUsuario()
        {
            Ioc.Core.Data.Usuario usuario = new Ioc.Core.Data.Usuario()
            {
                Id = 3, Ativo = false, Cpf = "010.536.094-50", Gerente = false, Login = "******", Nome = "Peixoto", Senha = "987654321", Telefone = null
            };

            Veiculos.Ioc.Service.Service <Ioc.Core.Data.Usuario> service = new Ioc.Service.Service <Ioc.Core.Data.Usuario>();

            bool compare = (service.Atualizar(usuario) > 0);

            // assert
            Assert.IsTrue(compare);
        }
Beispiel #11
0
        public JsonResult Placa(string placa, string veiculo)
        {
            Veiculos.Ioc.Service.Service <Ioc.Core.Data.Compra> service = new Ioc.Service.Service <Ioc.Core.Data.Compra>();

            var result = (from c in service.BuscarTodos(g => g.Veiculo.IdStatusVeiculo == 3 && (g.Veiculo.Placa.StartsWith(placa) && !g.Veiculo.Placa.Equals(veiculo)))
                          select new
            {
                Id = c.Veiculo.Id,
                Veiculo = c.Veiculo.Placa + "/" + c.Veiculo.Modelo.Descricao + "/" + c.Veiculo.Modelo.Fabricante.Descricao + "/" + c.Veiculo.AnoFabricacao.ToString(),
                c.Preco,
                IdCompra = c.Id
            }
                          );

            return(Json(result, JsonRequestBehavior.AllowGet));
        }
Beispiel #12
0
        public ActionResult AutorizarVenda(int id)
        {
            Veiculos.Ioc.Service.Service<Ioc.Core.Data.Venda> servico = new Ioc.Service.Service<Ioc.Core.Data.Venda>();

            Ioc.Core.Data.Venda venda = servico.Buscar(id);
            if (venda != null && venda.Id > 0)
            {
                StatusAtualizacao.VendaAtualizar(venda, StatusAtualizacao.StatusVenda.Autorizada);
                StatusAtualizacao.VeiculoAtualizar(venda.Veiculo, StatusAtualizacao.StatusVeiculo.NaoPertenceLoja);

                return RedirectToAction("Autorizar").WithSuccess("Venda autorizada com sucesso!");
            }
            else
            {
                return RedirectToAction("Autorizar").WithInfo("Venda não encontrada!");
            }
        }
Beispiel #13
0
        public static int VeiculoAtualizar(Ioc.Core.Data.Veiculo veiculo, StatusVeiculo status)
        {
            Veiculos.Ioc.Service.Service <Ioc.Core.Data.Veiculo> service = new Ioc.Service.Service <Ioc.Core.Data.Veiculo>();

            if (veiculo.Id > 0)
            {
                veiculo = service.Buscar(f => f.Id == veiculo.Id);
            }
            else if (!string.IsNullOrEmpty(veiculo.Placa))
            {
                veiculo = service.Buscar(f => f.Placa == veiculo.Placa);
            }

            veiculo.IdStatusVeiculo = (int)status;

            return(service.Atualizar(veiculo));
        }
Beispiel #14
0
        public ActionResult Veiculo(Veiculos.Web.Models.VeiculoModel veiculo, string origemFormulario)
        {
            if (!ModelState.IsValid)
            {
                this.CarregaComboModelo();
                this.CarregaComboFabricante();
                return(View("Veiculo", veiculo));
            }

            var serviceVeiculo = new Ioc.Service.Service <Ioc.Core.Data.Veiculo>();

            var v = serviceVeiculo.Buscar(f => f.Placa == veiculo.Placa);

            if (v != null)
            {
                this.CarregaComboModelo();
                this.CarregaComboFabricante();

                return(View("Veiculo", veiculo).WithInfo("O veículo está cadastrado no sistema!"));
            }

            serviceVeiculo.Inserir(new Ioc.Core.Data.Veiculo()
            {
                AnoFabricacao   = veiculo.Ano,
                Chassi          = veiculo.Chassi,
                Cilindradas     = veiculo.Cilindradas,
                IdModelo        = veiculo.IdModelo,
                IdStatusVeiculo = 3,
                Placa           = veiculo.Placa,
                Foto            = ImagemParaByte(veiculo.Imagem)
            });

            if (!string.IsNullOrEmpty(origemFormulario))
            {
                var comprarController = DependencyResolver.Current.GetService <ComprarController>();
                comprarController.ControllerContext = new ControllerContext(this.Request.RequestContext, comprarController);

                var result = comprarController.PesquisarVeiculo(veiculo.Placa, "../Comprar");

                return(result);
            }
            else
            {
                return(RedirectToAction("Veiculo").WithSuccess("Compra salva com sucesso!"));
            }
        }
Beispiel #15
0
        public ActionResult ExcluirVenda(int id)
        {            
            Veiculos.Ioc.Service.Service<Ioc.Core.Data.Venda> servico = new Ioc.Service.Service<Ioc.Core.Data.Venda>();

            Ioc.Core.Data.Venda venda = servico.Buscar(id);

            if (venda != null && venda.Id > 0)
            {
                StatusAtualizacao.VeiculoAtualizar(venda.Veiculo, StatusAtualizacao.StatusVeiculo.DisponivelParaVenda);

                servico.Apagar(venda);

                return RedirectToAction("Autorizar").WithInfo("Venda excluída com sucesso!");
            }
            else
            {
                return RedirectToAction("Autorizar").WithInfo("Venda não encontrada!");
            }
        }
Beispiel #16
0
        public ActionResult Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            // Isso não conta falhas de login em relação ao bloqueio de conta
            // Para permitir que falhas de senha acionem o bloqueio da conta, altere para shouldLockout: true
            //var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
            Veiculos.Ioc.Service.Service <Ioc.Core.Data.Usuario> service = new Ioc.Service.Service <Ioc.Core.Data.Usuario>();

            Ioc.Core.Data.Usuario usuario = service.Buscar(f => f.Ativo == true && f.Login == model.Email && f.Senha == model.Password);
            if (usuario != null && usuario.Id > 0)
            {
                //var identity = new ClaimsIdentity(new[] { new Claim(ClaimTypes.Name, model.Email), }, DefaultAuthenticationTypes.ApplicationCookie);
                IdentitySignIn(usuario.Id, usuario.Login, usuario.Gerente);
                return(RedirectToLocal(returnUrl));
            }
            else
            {
                ModelState.AddModelError("", "Invalid login attempt.");
                return(View(model));
            }

            /*
             * switch (result)
             * {
             *  case SignInStatus.Success:
             *      return RedirectToLocal(returnUrl);
             *  case SignInStatus.LockedOut:
             *      return View("Lockout");
             *  case SignInStatus.RequiresVerification:
             *      return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
             *  case SignInStatus.Failure:
             *  default:
             *      ModelState.AddModelError("", "Tentativa de login inválida.");
             *      return View(model);
             * }
             */
        }
Beispiel #17
0
        public ActionResult RegistrarVenda(Models.VendaModel model)
        {
            foreach (var erro in ModelState.Where(e => e.Key.StartsWith("Veiculo")))
            {
                erro.Value.Errors.Clear();
            }

            if (!ModelState.IsValid)
            {
                this.FormaPagamento();

                Models.VeiculoModel veiculo = (Models.VeiculoModel)Session["Veiculo"];
                model.Veiculo = veiculo;

                return View("Index", model);
            }

            Ioc.Core.Data.Venda venda = new Ioc.Core.Data.Venda()
            {
                Data = model.Data,
                Comissao = model.Comissao,
                Desconto = model.Desconto,
                IdStatusVenda = 3,
                IdUsuario = int.Parse(User.Identity.GetUserId().ToString()),
                ValorTotal = model.Pagamentos.Sum(f => f.Quantia),
                IdVeiculo = model.Veiculo.Id,
                Obs = model.Obs,
            };

            Veiculos.Ioc.Service.Service<Ioc.Core.Data.Venda> servicoVenda = new Ioc.Service.Service<Ioc.Core.Data.Venda>();
            venda = servicoVenda.Inserir(venda);

            if (venda.Id > 0)
            {
                Veiculos.Ioc.Service.Service<Ioc.Core.Data.PartePagamento> servicoPP = new Ioc.Service.Service<Ioc.Core.Data.PartePagamento>();

                foreach (var pag in model.Pagamentos)
                {
                    Ioc.Core.Data.PartePagamento pp = new Ioc.Core.Data.PartePagamento()
                    {
                        Quantia = pag.Quantia,
                        IdFormaPagamento = pag.IdFormaPagamento,
                        IdVenda = venda.Id
                    };

                    if (pag.IdCompra > 0)
                        pp.IdCompra = pag.IdCompra;

                    servicoPP.Inserir(pp);
                }

                if (User.IsInRole("Gerente"))
                {
                    StatusAtualizacao.VeiculoAtualizar(new Ioc.Core.Data.Veiculo() { Id = model.Veiculo.Id }, StatusAtualizacao.StatusVeiculo.NaoPertenceLoja);
                    
                    foreach (var pag in model.Pagamentos.Where(f => f.IdCompra > 0))
                    {
                        Veiculos.Ioc.Service.Service<Ioc.Core.Data.Compra> servicoCompra = new Ioc.Service.Service<Ioc.Core.Data.Compra>();

                        var compra = servicoCompra.Buscar(pag.IdCompra);

                        StatusAtualizacao.VeiculoAtualizar(new Ioc.Core.Data.Veiculo() { Id = compra.IdVeiculo }, StatusAtualizacao.StatusVeiculo.NaoPertenceLoja);
                    }
                    StatusAtualizacao.VendaAtualizar(venda, StatusAtualizacao.StatusVenda.Autorizada);
                    return RedirectToAction("Home").WithSuccess("Venda salva com sucesso!");
                }
                else
                {
                    StatusAtualizacao.VeiculoAtualizar(new Ioc.Core.Data.Veiculo() { Id = model.Veiculo.Id }, StatusAtualizacao.StatusVeiculo.EmProcessoVenda);
                    
                    foreach (var pag in model.Pagamentos.Where(f => f.IdCompra > 0))
                    {
                        Veiculos.Ioc.Service.Service<Ioc.Core.Data.Compra> servicoCompra = new Ioc.Service.Service<Ioc.Core.Data.Compra>();

                        var compra = servicoCompra.Buscar(pag.IdCompra);

                        StatusAtualizacao.VeiculoAtualizar(new Ioc.Core.Data.Veiculo() { Id = compra.IdVeiculo }, StatusAtualizacao.StatusVeiculo.EmProcessoVenda);
                    }
                    StatusAtualizacao.VendaAtualizar(venda, StatusAtualizacao.StatusVenda.AguardandoAutorizacao);
                    return RedirectToAction("Home").WithInfo("Aguardando autorização do gerente.");
                }
            }

            return View("Index", model);
        }
Beispiel #18
0
        public JsonResult CarregarVendas(int? IdStatusVenda)
        {
            var draw = Request.Form.GetValues("draw").FirstOrDefault();
            var start = Request.Form.GetValues("start").FirstOrDefault();
            var length = Request.Form.GetValues("length").FirstOrDefault();
            var sortColumn = Request.Form.GetValues("columns[" + Request.Form.GetValues("order[0][column]").FirstOrDefault() + "][name]").FirstOrDefault();
            var sortColumnDir = Request.Form.GetValues("order[0][dir]").FirstOrDefault();
            var searchValue = Request.Form.GetValues("search[value]").FirstOrDefault();

            int pageSize = length != null ? Convert.ToInt32(length) : 0;
            int skip = start != null ? Convert.ToInt32(start) : 0;

            Veiculos.Ioc.Service.Service<Ioc.Core.Data.Venda> servico = new Ioc.Service.Service<Ioc.Core.Data.Venda>();

            Expression<Func<Ioc.Core.Data.Venda, bool>> _where = null;

            if(IdStatusVenda != null)
                _where= a => a.IdStatusVenda == IdStatusVenda;

            if (!string.IsNullOrEmpty(searchValue))
            {
                _where = a => a.IdStatusVenda == IdStatusVenda && (a.Veiculo.Placa.StartsWith(searchValue) || a.Veiculo.Modelo.Descricao.StartsWith(searchValue) || a.Veiculo.Modelo.Fabricante.Descricao.StartsWith(searchValue));
            }

            var result = from v in servico.BuscarTodos(_where).ToList()
                         select new
                         {
                             v.Id,
                             Data = v.Data.ToString("dd/MM/yyyy"),
                             v.Veiculo.Placa,
                             Fabricante = v.Veiculo.Modelo.Fabricante.Descricao,
                             Modelo = v.Veiculo.Modelo.Descricao,
                             Valor = v.ValorTotal,
                             Vendedor = v.Usuario.Nome
                         };

            int recordsTotal = result.Count();

            var data = result.OrderByDescending(o => o.Id).Skip(skip).Take(pageSize).ToList();

            if (!(string.IsNullOrEmpty(sortColumn) && string.IsNullOrEmpty(sortColumnDir)))
            {
                if (sortColumnDir.Equals("asc", StringComparison.OrdinalIgnoreCase))
                {
                    if (sortColumn.Equals("Fabricante", StringComparison.OrdinalIgnoreCase))
                        data = data.OrderBy(f => f.Fabricante).ToList();
                    if (sortColumn.Equals("Data", StringComparison.OrdinalIgnoreCase))
                        data = data.OrderBy(f => f.Data).ToList();
                    if (sortColumn.Equals("Modelo", StringComparison.OrdinalIgnoreCase))
                        data = data.OrderBy(f => f.Modelo).ToList();
                    if (sortColumn.Equals("Placa", StringComparison.OrdinalIgnoreCase))
                        data = data.OrderBy(f => f.Placa).ToList();
                    if (sortColumn.Equals("Valor", StringComparison.OrdinalIgnoreCase))
                        data = data.OrderBy(f => f.Valor).ToList();
                    if (sortColumn.Equals("Vendedor", StringComparison.OrdinalIgnoreCase))
                        data = data.OrderBy(f => f.Vendedor).ToList();
                }
                else
                {
                    if (sortColumn.Equals("Fabricante", StringComparison.OrdinalIgnoreCase))
                        data = data.OrderByDescending(f => f.Fabricante).ToList();
                    if (sortColumn.Equals("Data", StringComparison.OrdinalIgnoreCase))
                        data = data.OrderByDescending(f => f.Data).ToList();
                    if (sortColumn.Equals("Modelo", StringComparison.OrdinalIgnoreCase))
                        data = data.OrderByDescending(f => f.Modelo).ToList();
                    if (sortColumn.Equals("Placa", StringComparison.OrdinalIgnoreCase))
                        data = data.OrderByDescending(f => f.Placa).ToList();
                    if (sortColumn.Equals("Valor", StringComparison.OrdinalIgnoreCase))
                        data = data.OrderByDescending(f => f.Valor).ToList();
                    if (sortColumn.Equals("Vendedor", StringComparison.OrdinalIgnoreCase))
                        data = data.OrderByDescending(f => f.Vendedor).ToList();
                }
            }

            return Json(new { draw = draw, recordsFiltered = recordsTotal, recordsTotal = recordsTotal, data }, JsonRequestBehavior.AllowGet);
        }
Beispiel #19
0
        public ActionResult Pesquisar(string placa, string controlador, string acao)
        {
            if (string.IsNullOrWhiteSpace(placa))
            {
                ModelState.AddModelError(string.Empty, "Informe a placa do veículo!");
                return(View("Placa"));
            }
            else if (!Veiculos.Util.Validacao.EPlacaValidar(placa))
            {
                ModelState.AddModelError(string.Empty, "Placa do veículo informada está em formato incorreto!");
                return(View("Placa"));
            }

            Veiculos.Ioc.Service.Service <Ioc.Core.Data.Veiculo> service = new Ioc.Service.Service <Ioc.Core.Data.Veiculo>();

            Ioc.Core.Data.Veiculo veiculo = veiculo = service.Buscar(m => m.Placa == placa);

            if (veiculo == null || veiculo.Id == 0)
            {
                if (controlador.Equals("Vender"))
                {
                    return(View("Placa").WithInfo("Veículo não localizado!"));
                }
                var cadastrarController = DependencyResolver.Current.GetService <CadastrarController>();
                cadastrarController.ControllerContext = new ControllerContext(this.Request.RequestContext, cadastrarController);

                var result = cadastrarController.BuscarVeiculoPorPlaca(placa, controlador);

                return(result);
            }
            //Registrar Compra: Fluxo Alternativo (2): o veículo está cadastrado no sistema e está com status diferente de NÃO PERTENCE À LOJA.
            else if (veiculo != null && veiculo.Id > 0 && controlador.Equals("Comprar") && veiculo.IdStatusVeiculo != 3)
            {
                return(View("Placa").WithInfo("Operação não é permitida, pois o veículo já pertence à loja!"));
            }
            //Registrar venda: Fluxo Alternativo (2): veículo não está cadastrado no sistema ou seu status é NÃO PERTENCE À LOJA.
            else if (veiculo != null && veiculo.Id > 0 && controlador.Equals("Vender") && veiculo.IdStatusVeiculo == 3)
            {
                return(View("Placa").WithInfo("Operação não é permitida, pois o veículo não pertence à loja!"));
            }
            //Registrar venda: Fluxo Alternativo (2): veículo está com status EM PROCESSO DE VENDA.
            else if (veiculo != null && veiculo.Id > 0 && controlador.Equals("Vender") && veiculo.IdStatusVeiculo == 2)
            {
                return(View("Placa").WithInfo("Veículo está sendo negociado em outra transação!"));
            }

            var v = new Models.VeiculoModel()
            {
                Id                  = veiculo.Id,
                Ano                 = veiculo.AnoFabricacao,
                Chassi              = veiculo.Chassi,
                Cilindradas         = veiculo.Cilindradas,
                Placa               = veiculo.Placa,
                IdModelo            = veiculo.Modelo.Id,
                DescricaoModelo     = veiculo.Modelo.Descricao,
                IdFabricante        = veiculo.Modelo.Fabricante.Id,
                DescricaoFabricante = veiculo.Modelo.Fabricante.Descricao,
                Imagem              = (HttpPostedFileBase) new MemoryPostedFile(veiculo.Foto)
            };

            Session.Remove("Veiculo");
            Session["Veiculo"] = v;
            return(RedirectToAction(acao, controlador));
        }