示例#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 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));
        }
示例#3
0
        public async Task <IActionResult> Put(int id, [FromBody] Conta conta)
        {
            try
            {
                if (id != conta.Id)
                {
                    throw new Exception("Id não encontrado!!");
                }

                _contaRepositorio.Atualizar(conta);
                return(Ok(conta));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.ToString()));
            }
        }
示例#4
0
        public async Task <IActionResult> Edit(int id, [Bind("ContaId,UsuarioId,Saldo")] Conta conta)
        {
            if (id != conta.ContaId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                await _contaRepositorio.Atualizar(conta);

                return(RedirectToAction(nameof(Index)));
            }

            ViewData["UsuarioId"] = new SelectList(await _contaRepositorio.PegarTodos(), "Id", "Email", conta.UsuarioId);
            return(View(conta));
        }
示例#5
0
        public async Task <IActionResult> Edit(int id, [Bind("ContaId,UsuarioId,Saldo")] Conta conta)
        {
            if (id != conta.ContaId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                await _contaRepositorio.Atualizar(conta);

                _logger.LogInformation("Atualizando conta");
                return(RedirectToAction(nameof(Index)));
            }
            _logger.LogError("Informações inválidas");
            ViewData["UsuarioId"] = new SelectList(_usuarioRepositorio.PegarTodos(), "Id", "Email", conta.UsuarioId);
            return(View(conta));
        }
示例#6
0
        public bool Atualizar(Conta conta)
        {
            Cliente titular = _repositorioCliente.PegarPorId(conta.Titular.Id) ?? throw new NaoEncontradoException();
            Conta   contaDb = _repositorioConta.PegarPorId(conta.Id) ?? throw new NaoEncontradoException();

            contaDb.Estado  = conta.Estado;
            contaDb.Limite  = conta.Limite;
            contaDb.Titular = titular;

            contaDb.Validar();

            return(_repositorioConta.Atualizar(contaDb));
        }
示例#7
0
        public async Task <ISaida> AlterarConta(AlterarContaEntrada alterarEntrada)
        {
            // Verifica se as informações para alteração foram informadas corretamente
            if (alterarEntrada.Invalido)
            {
                return(new Saida(false, alterarEntrada.Mensagens, null));
            }

            var conta = await _contaRepositorio.ObterPorId(alterarEntrada.IdConta, true);

            // Verifica se a conta existe
            this.NotificarSeNulo(conta, string.Format(ContaMensagem.Id_Conta_Nao_Existe, alterarEntrada.IdConta));

            if (this.Invalido)
            {
                return(new Saida(false, this.Mensagens, null));
            }

            // Verifica se a conta pertece ao usuário informado.
            this.NotificarSeDiferentes(conta.IdUsuario, alterarEntrada.IdUsuario, ContaMensagem.Conta_Alterar_Nao_Pertence_Usuario);

            if (this.Invalido)
            {
                return(new Saida(false, this.Mensagens, null));
            }

            // Verifica se o usuário já possui alguma conta com o nome informado
            this.NotificarSeVerdadeiro(await _contaRepositorio.VerificarExistenciaPorNome(alterarEntrada.IdUsuario, alterarEntrada.Nome, alterarEntrada.IdConta), ContaMensagem.Conta_Com_Mesmo_Nome);

            if (this.Invalido)
            {
                return(new Saida(false, this.Mensagens, null));
            }

            conta.Alterar(alterarEntrada);

            _contaRepositorio.Atualizar(conta);

            await _uow.Commit();

            return(_uow.Invalido
                ? new Saida(false, _uow.Mensagens, null)
                : new Saida(true, new[] { ContaMensagem.Conta_Alterada_Com_Sucesso }, new ContaSaida(conta)));
        }
示例#8
0
        public ActionResult Atualizar([Bind(Include = "Id, Descricao, Documento, NomeFantasia, InscricaoEstadual, Telefone, VendedorId, SituacaoCadastral, Segmento, ClassificacaoFiscal, Logradouro, Bairro, Numero, Complemento, CEP, Estado, CidadeId, PaisId, Blacklist")] ContaViewModel viewModel, int?id)
        {
            if (id == null)
            {
                return(RedirectToAction(nameof(Index)));
            }

            var conta = _contaRepositorio.ObterContaPorId(id.Value);

            if (conta == null)
            {
                RegistroNaoEncontrado();
            }

            var contaExistente = _contaRepositorio.ContaExistente(viewModel.Descricao, viewModel.Documento);

            if (contaExistente != null && contaExistente.Id != conta.Id)
            {
                ModelState.AddModelError(string.Empty, $"Já existe uma Conta cadastrada com o mesmo CNPJ. (Cód: {contaExistente.Id} - {contaExistente.Descricao} - CNPJ: {contaExistente.Documento})");
            }

            if (ModelState.IsValid)
            {
                conta.Alterar(
                    new Conta(
                        viewModel.CriadoPor,
                        viewModel.Descricao,
                        viewModel.Documento,
                        viewModel.NomeFantasia,
                        viewModel.InscricaoEstadual,
                        viewModel.Telefone,
                        viewModel.VendedorId,
                        viewModel.SituacaoCadastral,
                        viewModel.Segmento,
                        viewModel.ClassificacaoFiscal,
                        viewModel.Logradouro,
                        viewModel.Bairro,
                        viewModel.Numero,
                        viewModel.Complemento,
                        viewModel.CEP,
                        viewModel.Estado,
                        viewModel.CidadeId,
                        viewModel.PaisId,
                        viewModel.Blacklist));

                if (Validar(conta))
                {
                    _contaRepositorio.Atualizar(conta);
                    TempData["Sucesso"] = true;

                    GravarLogAuditoria(TipoLogAuditoria.UPDATE, conta);
                }
            }

            PopularCidades(viewModel);
            PopularPaises(viewModel);
            PopularVendedores(viewModel);
            PopularContatos(viewModel);
            PopularOportunidades(viewModel);
            PopularVinculosIPs(viewModel);

            return(View(viewModel));
        }