コード例 #1
0
        public async Task <FindAccountCoursePaymentsResponse> Handle(FindAccountCoursePaymentsQuery message)
        {
            var validationResult = await _validator.ValidateAsync(message);

            if (!validationResult.IsValid())
            {
                throw new InvalidRequestException(validationResult.ValidationDictionary);
            }

            if (validationResult.IsUnauthorized)
            {
                throw new UnauthorizedAccessException();
            }

            var accountId    = _hashingService.DecodeValue(message.HashedAccountId);
            var transactions = await _dasLevyService.GetAccountCoursePaymentsByDateRange <PaymentTransactionLine>
                                   (accountId, message.UkPrn, message.CourseName, message.CourseLevel, message.PathwayCode, message.FromDate, message.ToDate);

            if (!transactions.Any())
            {
                throw new NotFoundException("No transactions found.");
            }

            var firstTransaction = transactions.First();

            return(new FindAccountCoursePaymentsResponse
            {
                ProviderName = firstTransaction.ProviderName,
                CourseName = firstTransaction.CourseName,
                CourseLevel = firstTransaction.CourseLevel,
                PathwayName = firstTransaction.PathwayName,
                TransactionDate = firstTransaction.TransactionDate,
                DateCreated = firstTransaction.DateCreated,
                Transactions = transactions.ToList(),
                Total = transactions.Sum(c => c.LineAmount)
            });
        }