Example #1
0
        public ActionResult Create(int?veiculoId)
        {
            AtualizaTodosAlugueres();

            if (veiculoId == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            var veiculo = _context.Veiculos.Include(v => v.User)
                          .Include(v => v.Categoria)
                          .Include(v => v.Combustivel)
                          .Include(v => v.Alugueres)
                          .SingleOrDefault(v => v.Id == veiculoId);

            if (veiculo == null)
            {
                return(HttpNotFound());
            }

            var clienteId = User.Identity.GetUserId();

            if (!veiculo.Aprovado || string.Compare(clienteId, veiculo.UserId, StringComparison.Ordinal) == 0)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.Forbidden, "Operação não autorizada."));
            }

            var viewModel = new CreateAluguerViewModel
            {
                VeiculoId = (int)veiculoId,
                Veiculo   = veiculo,
                ClienteId = clienteId,
                Inicio    = DateTime.Today,
                Fim       = DateTime.Today
            };

            return(View(viewModel));
        }
Example #2
0
        public ActionResult Create(CreateAluguerViewModel viewModel)
        {
            var veiculo = _context.Veiculos.Include(v => v.User)
                          .Include(v => v.Alugueres)
                          .Include(v => v.Categoria)
                          .Include(v => v.Combustivel)
                          .Single(v => v.Id == viewModel.VeiculoId);

            if (!ModelState.IsValid)
            {
                viewModel.Inicio  = DateTime.Today;
                viewModel.Fim     = DateTime.Today;
                viewModel.Veiculo = veiculo;

                return(View(viewModel));
            }


            if (!VeiculoDisponivel(veiculo, viewModel.Inicio, viewModel.Fim))
            {
                ModelState.AddModelError("Fim", @"O veículo não está disponível no período indicado.");

                viewModel.Inicio  = DateTime.Today;
                viewModel.Fim     = DateTime.Today;
                viewModel.Veiculo = veiculo;

                return(View(viewModel));
            }

            //try
            //{


            var cliente = _context.Users.Single(c =>
                                                string.Compare(c.Id, viewModel.ClienteId, StringComparison.Ordinal) == 0);
            //var veiculo = _context.Veiculos.Single(v => v.Id == viewModel.VeiculoId);

            var aluguer = new Aluguer
            {
                VeiculoId       = viewModel.VeiculoId,
                Veiculo         = veiculo,
                ClienteId       = viewModel.ClienteId,
                Cliente         = cliente,
                Inicio          = viewModel.Inicio,
                Fim             = viewModel.Fim,
                AluguerState_id = AluguerState.Pendente
            };

            _context.Alugueres.Add(aluguer);

            _context.SaveChanges();
            //}
            //catch (DbEntityValidationException e)
            //{
            //    foreach (var eve in e.EntityValidationErrors)
            //    {
            //        Debug.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
            //            eve.Entry.Entity.GetType().Name, eve.Entry.State);
            //        foreach (var ve in eve.ValidationErrors)
            //        {
            //            Debug.WriteLine("- Property: \"{0}\", Value: \"{1}\", Error: \"{2}\"",
            //                ve.PropertyName,
            //                eve.Entry.CurrentValues.GetValue<object>(ve.PropertyName),
            //                ve.ErrorMessage);
            //        }
            //    }
            //    throw;
            //}

            return(RedirectToAction("Details", new { id = aluguer.Id }));
        }