Пример #1
0
        public async Task <ISaida> ObterFaturaPorCartaoCredito(int idCartao, int idUsuario, int mesFatura, int anoFatura)
        {
            var cartaoSaida = await this.ObterCartaoCreditoPorId(idCartao, idUsuario, false);

            if (!cartaoSaida.Sucesso)
            {
                return(cartaoSaida);
            }

            var cartaoCredito = (CartaoCreditoSaida)cartaoSaida.Retorno;

            // Verifica se a fatura já foi lançada anteriormente
            var fatura = await _faturaRepositorio.ObterPorCartaoCreditoMesAno(idCartao, mesFatura, anoFatura);

            var parcelas = await _parcelaRepositorio.ObterPorCartaoCredito(idCartao, new DateTime(anoFatura, mesFatura, cartaoCredito.DiaVencimentoFatura));

            if (fatura == null)
            {
                parcelas = parcelas.Where(x => !x.Lancada && !x.Descartada);
            }
            else
            {
                parcelas = parcelas.Where(x => !x.Descartada);
            }

            return((fatura != null)
                ? new Saida(true, new[] { CartaoCreditoMensagem.Fatura_Encontrada_Com_Sucesso }, new FaturaSaida(fatura, parcelas?.OrderByDescending(x => x.Id)?.Select(x => new ParcelaSaida(x))?.ToList()))
                : new Saida(true, new[] { CartaoCreditoMensagem.Fatura_Encontrada_Com_Sucesso }, new FaturaSaida(cartaoCredito, parcelas?.OrderByDescending(x => x.Id)?.Select(x => new ParcelaSaida(x))?.ToList(), mesFatura, anoFatura)));
        }