public async Task <IActionResult> Close(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            Conta conta = await _context.Conta
                          .Where(c => c.Id == id).Include(c => c.Reserva.Quarto).FirstOrDefaultAsync();

            if (conta == null)
            {
                return(NotFound());
            }

            var relatoriosConta = await _context.RelatorioDiario
                                  .Where(r => r.ContaId == id).ToListAsync();

            int relatorios = relatoriosConta.Count;
            int dias       = (conta.Reserva.DataSaida.Subtract(conta.Reserva.DataEntrada)).Days;

            if (relatorios != dias)
            {
                return(RedirectToAction(nameof(Index), "RelatorioDiario", new { id = conta.Id }));
            }

            try
            {
                double taxa = conta.ValorTotal * 0.05;
                conta.ValorTotal = conta.ValorTotal + taxa;

                Dinheiro   dinheiro = new Dinheiro();
                IPagamento cartao   = new Cartao(dinheiro);

                if (conta.FormaPagamento == "Cartão")
                {
                    conta.StatusPagamento = cartao.RealizarPagamento();
                }
                else
                {
                    conta.StatusPagamento = dinheiro.RealizarPagamento();
                }

                if (conta.StatusPagamento == "Aprovado")
                {
                    conta.Reserva.Quarto.Disponivel = true;
                }
                else
                {
                    conta.ValorTotal = conta.ValorTotal - taxa;
                }

                _context.Update(conta);
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ContaExists(conta.Id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }
            return(RedirectToAction(nameof(Details), new { id = conta.ReservaId }));
        }