示例#1
0
        public async Task <IActionResult> Alugar(AluguelViewModel aluguel)
        {
            if (ModelState.IsValid)
            {
                var usuario = await _usuarioRepositorio.PegarUsuarioLogado(User);

                var saldo = _contaRepositorio.PegarSaldoPeloId(usuario.Id);

                if (await _aluguelRepositorio.VerificarReserva(usuario.Id, aluguel.CarroId, aluguel.Inicio, aluguel.Fim))
                {
                    _logger.LogInformation("Usuário já possui essa reserva");
                    TempData["Aviso"] = "Você já possui essa reserva";
                    return(View(aluguel));
                }
                else if (aluguel.PrecoTotal > saldo)
                {
                    _logger.LogInformation("Saldo insuficiente");
                    TempData["Aviso"] = "Saldo insuficiente";
                    return(View(aluguel));
                }
                else
                {
                    Aluguel a = new Aluguel
                    {
                        UsuarioId  = usuario.Id,
                        CarroId    = aluguel.CarroId,
                        Inicio     = aluguel.Inicio,
                        Fim        = aluguel.Fim,
                        PrecoTotal = aluguel.PrecoTotal
                    };

                    _logger.LogInformation("Enviando email com detalhes da reserva");
                    string assunto = "Reserva concluida com sucesso";

                    string mensagem = string.Format("seu veiculo já o aguarda. Você poderá pegá-lo dia {0}" +
                                                    " e deverá devolve-lo dia {1}. O preço será R${2},00. Divirta-se !!! ", aluguel.Inicio, aluguel.Fim, aluguel.PrecoTotal);

                    await _email.EnviarEmail(usuario.Email, assunto, mensagem);

                    await _aluguelRepositorio.Inserir(a);

                    _logger.LogInformation("Reserva feita");

                    _logger.LogInformation("Atualizando saldo do usuario");
                    var saldoUsuario = await _contaRepositorio.PegarSaldoPeloUsuarioId(usuario.Id);

                    saldoUsuario.Saldo = saldoUsuario.Saldo - aluguel.PrecoTotal;
                    await _contaRepositorio.Atualizar(saldoUsuario);

                    _logger.LogInformation("Saldo atualizado");

                    return(RedirectToAction("Index", "Carros"));
                }
            }

            _logger.LogInformation("Informações inválidas");
            return(View(aluguel));
        }
示例#2
0
        public IActionResult Aluguel(int carroId, int precoDiaria)
        {
            var aluguel = new AluguelViewModel
            {
                CarroId     = carroId,
                PrecoDiaria = precoDiaria
            };

            return(View(aluguel));
        }
示例#3
0
        public IActionResult Alugar(int carroId, int precoDiaria)
        {
            _logger.LogInformation("Começando o aluguel do carro");

            var aluguel = new AluguelViewModel
            {
                CarroId     = carroId,
                PrecoDiaria = precoDiaria
            };

            return(View(aluguel));
        }
示例#4
0
        public async Task <ActionResult <AluguelDto> > Atualizar(AluguelViewModel aluguel, int id)
        {
            var novoAluguel = await _AluguelContext.Atualizar(aluguel, id);

            if (novoAluguel == null)
            {
                return(NotFound(new Mensagem {
                    mensagem = "Aluguel inexistente."
                }));
            }

            return(Ok(novoAluguel));
        }
示例#5
0
        public async Task <IActionResult> AluguelCarro(AluguelViewModel aluguelViewModel)
        {
            if (ModelState.IsValid)
            {
                var usuario = await _usuarioRepositorio.PegarUsuarioLogado(User);

                var saldo = _contaRepositorio.PegarSaldoPeloId(usuario.Id);

                if (await _aluguelRepositorio.VerificarReserva(usuario.Id,
                                                               aluguelViewModel.CarroId,
                                                               aluguelViewModel.Inicio,
                                                               aluguelViewModel.Fim))
                {
                    TempData["Aviso"] = "Você já possui essa reserva";
                    return(View(aluguelViewModel));
                }
                else if (aluguelViewModel.PrecoTotal > saldo)
                {
                    TempData["Aviso"] = "Saldo Insuficiente";
                    return(View(aluguelViewModel));
                }
                else
                {
                    Aluguel aluguel = new Aluguel
                    {
                        UsuarioId  = usuario.Id,
                        CarroId    = aluguelViewModel.CarroId,
                        Inicio     = aluguelViewModel.Inicio,
                        Fim        = aluguelViewModel.Fim,
                        PrecoTotal = aluguelViewModel.PrecoTotal
                    };

                    string assunto  = "Reserva concluida com sucesso";
                    string mensagem = string.Format("Veiculo em aguardo. Voce pode pegá-lo dia {0}" +
                                                    " e deverá devolver dia {1}. O preco será R${2},00. Divirta-se", aluguel.Inicio, aluguel.Fim, aluguel.PrecoTotal);

                    await _emailInterface.EnviarEmail(usuario.Email, assunto, mensagem);

                    await _aluguelRepositorio.Inserir(aluguel);

                    var saldoUsuario = await _contaRepositorio.PegarSaldoPeloUsuarioId(usuario.Id);

                    saldoUsuario.Saldo = saldoUsuario.Saldo - aluguelViewModel.PrecoTotal;
                    await _contaRepositorio.Atualizar(saldoUsuario);

                    return(RedirectToAction("Index", "Carro"));
                }
            }

            return(View(aluguelViewModel));
        }
示例#6
0
        public ActionResult Index()
        {
            string email = HttpContext.GetOwinContext().Authentication.User.Identity.Name;
            long?  id    = (long?)long.Parse(Gerenciador.FindByEmail(email).Id);

            IEnumerable <Aluguel> alugueis = AluguelService.ObterAlugueisOrdPorId().Where(a => a.ClienteId == id).ToList();

            AluguelViewModel aluguelView = new AluguelViewModel()
            {
                Alugueis = alugueis
            };

            return(View(aluguelView));
        }
示例#7
0
        public async Task <Aluguel> Deletar(AluguelViewModel aluguel)
        {
            var aluguelDeletado = await _context.Alugueis.FindAsync(aluguel.AluguelId);

            if (aluguelDeletado == null)
            {
                return(null);
            }

            _context.Alugueis.Remove(aluguelDeletado);
            await _context.SaveChangesAsync();

            return(aluguelDeletado);
        }
示例#8
0
        public async Task <Aluguel> Atualizar(AluguelViewModel aluguel, int id)
        {
            var aluguelNovo = await _context.Alugueis.FindAsync(id);

            if (aluguelNovo == null)
            {
                return(null);
            }
            aluguelNovo.ClienteId = aluguel.ClienteId;
            aluguelNovo.FilmeId   = aluguel.FilmeId;

            _context.Alugueis.Update(aluguelNovo);
            await _context.SaveChangesAsync();

            return(aluguelNovo);
        }
示例#9
0
        public async Task <IActionResult> Alugar(AluguelViewModel aluguel)
        {
            if (ModelState.IsValid)
            {
                var usuario = await _usuarioRepositorio.BuscarUsuarioLogado(User);

                var saldo = _contaRepositorio.BuscarSaldoPeloId(usuario.Id);

                if (await _aluguelRepositorio.VerificarReserva(usuario.Id, aluguel.CarroId, aluguel.Inicio, aluguel.Fim))
                {
                    TempData["Aviso"] = "Você já possui esse veículo";
                }
                else if (aluguel.PrecoTotal > saldo)
                {
                    TempData["Aviso"] = "Saldo insuficiente";
                }
                else
                {
                    Aluguel a = new Aluguel
                    {
                        UsuarioId  = usuario.Id,
                        CarroId    = aluguel.CarroId,
                        Inicio     = aluguel.Inicio,
                        Fim        = aluguel.Fim,
                        PrecoTotal = aluguel.PrecoTotal
                    };

                    //Enviar E-mail
                    string assunto  = "Reserva concluída com sucesso";
                    string mensagem = string.Format("Seu veículo já o aguarda. Você poderá pegá-lo dia {0} e deverá devolvê-lo dia {1}. O preço será R${2},00. Divirtá-se !!! ", aluguel.Inicio, aluguel.Fim, aluguel.PrecoTotal);
                    //await _email.EnviarEmail(usuario.Email, assunto, mensagem);

                    //Insere aluguel no banco
                    await _aluguelRepositorio.Inserir(a);

                    //Altera saldo do usuário
                    var saldoUsuario = await _contaRepositorio.BuscarSaldoPeloUsuarioId(usuario.Id);

                    saldoUsuario.Saldo = saldoUsuario.Saldo - aluguel.PrecoTotal;
                    await _contaRepositorio.Atualizar(saldoUsuario);

                    return(RedirectToAction("Index", "Carro"));
                }
            }

            return(View("Aluguel", aluguel));
        }
示例#10
0
        public IActionResult Index()
        {
            AluguelViewModel avm = new AluguelViewModel();

            var emailCliente = ObterUsuarioSession();

            if (!string.IsNullOrEmpty(emailCliente))
            {
                avm.Cliente = clienteRepository.ObterPor(emailCliente);
            }
            var nomeUsuario = ObterUsuarioNomeSession();

            if (!string.IsNullOrEmpty(nomeUsuario))
            {
                avm.NomeCliente = nomeUsuario;
            }
            avm.NomeView     = "Aluguel";
            avm.UsuarioEmail = emailCliente;
            avm.UsuarioNome  = nomeUsuario;
            return(View(avm));
        }
示例#11
0
        public async Task <Aluguel> SalvarAluguel(AluguelViewModel aluguel)
        {
            var filme = await _context.Filmes.FindAsync(aluguel.FilmeId);

            var cliente = await _context.Clientes.FindAsync(aluguel.ClienteId);

            if (filme == null || cliente == null)
            {
                return(null);
            }

            Aluguel NovoAluguel = new Aluguel();

            NovoAluguel.Filme   = filme;
            NovoAluguel.Cliente = cliente;

            _context.Alugueis.Add(NovoAluguel);

            await _context.SaveChangesAsync();

            return(NovoAluguel);
        }
示例#12
0
        public async Task <ActionResult <AluguelViewModel> > AlugarFilme(AluguelViewModel aluguelViewModel)
        {
            var novoAluguel = await _AluguelContext.SalvarAluguel(aluguelViewModel);

            return(Ok(aluguelViewModel));
        }