コード例 #1
0
        public async Task <IActionResult> GetOverdueInstallments()
        {
            var query  = new GetOverdueInstallmentsQuery();
            var result = await _mediator.Send(query);

            return(Ok(result));
        }
コード例 #2
0
        public async Task <List <OverdueInstallmentDto> > Handle(GetOverdueInstallmentsQuery request,
                                                                 CancellationToken cancellationToken)
        {
            var overdueInstallmentsList = await _dbContext
                                          .Installments
                                          .Where(x => x.IsPaid == false && x.DueDate < DateTime.Today)
                                          .OrderBy(x => x.DueDate)
                                          .ToListAsync(cancellationToken);

            var overdueInstallmentsDtoList = new List <OverdueInstallmentDto>();

            foreach (var installment in overdueInstallmentsList)
            {
                var agreement = await _dbContext
                                .Agreements
                                .FirstOrDefaultAsync(x => x.AgreementId == installment.AgreementId,
                                                     cancellationToken);

                var member = await _dbContext
                             .Members
                             .FirstOrDefaultAsync(x => x.MemberId == agreement.MemberId, cancellationToken);

                var installmentDto = installment.Adapt <InstallmentDto>();

                overdueInstallmentsDtoList.Add(
                    new OverdueInstallmentDto
                {
                    MemberFirstName    = member.Name ?? "",
                    MemberSurname      = member.SurName ?? "",
                    MembershipName     = agreement.Name ?? "",
                    InstallmentDetails = installmentDto
                }
                    );
            }

            return(overdueInstallmentsDtoList);
        }