public async Task <GetApplicationsQueryResult> Handle(GetApplicationsQuery request, CancellationToken cancellationToken)
        {
            var apiRequest = new GetApplicationsRequest {
                PledgeId = request.PledgeId
            };
            var response = await _levyTransferMatchingApiClient.Get <GetApplicationsResponse>(apiRequest);

            return(new GetApplicationsQueryResult
            {
                Applications = response.Applications
                               .Where(a => a.Status == ApplicationStatus.Accepted || a.Status == ApplicationStatus.Approved)
                               .Select(a => new GetApplicationsQueryResult.Application
                {
                    Id = a.Id,
                    PledgeId = a.PledgeId,
                    EmployerAccountId = a.EmployerAccountId,
                    StandardId = a.StandardId,
                    StandardTitle = a.StandardTitle,
                    StandardLevel = a.StandardLevel,
                    StandardDuration = a.StandardDuration,
                    StandardMaxFunding = a.StandardMaxFunding,
                    StartDate = a.StartDate,
                    NumberOfApprentices = a.NumberOfApprentices,
                    NumberOfApprenticesUsed = a.NumberOfApprenticesUsed,
                    Status = a.Status
                })
            });
        }
Beispiel #2
0
        public async Task <GetFinancialBreakdownResult> Handle(GetFinancialBreakdownQuery request, CancellationToken cancellationToken)
        {
            var breakdownTask = _forecastingApiClient.Get <GetTransferFinancialBreakdownResponse>
                                    (new GetTransferFinancialBreakdownRequest(request.AccountId, DateTime.UtcNow));

            var nextYearBreakdowntask = _forecastingApiClient.Get <GetTransferFinancialBreakdownResponse>
                                            (new GetTransferFinancialBreakdownRequest(request.AccountId, DateTime.UtcNow.AddYears(1)));

            var yearAfterNextYearBreakdowntask = _forecastingApiClient.Get <GetTransferFinancialBreakdownResponse>
                                                     (new GetTransferFinancialBreakdownRequest(request.AccountId, DateTime.UtcNow.AddYears(2)));

            var pledgesTask = _levyTransferMatchingApiClient.Get <GetPledgesResponse>
                                  (new GetPledgesRequest(request.AccountId));

            await Task.WhenAll(breakdownTask, nextYearBreakdowntask, yearAfterNextYearBreakdowntask, pledgesTask);

            return(new GetFinancialBreakdownResult
            {
                Commitments = breakdownTask.Result.Breakdown.Sum(x => x.FundsOut.Commitments),
                ApprovedPledgeApplications = breakdownTask.Result.Breakdown.Sum(x => x.FundsOut.ApprovedPledgeApplications),
                TransferConnections = breakdownTask.Result.Breakdown.Sum(x => x.FundsOut.TransferConnections),
                AcceptedPledgeApplications = breakdownTask.Result.Breakdown.Sum(x => x.FundsOut.AcceptedPledgeApplications),
                PledgeOriginatedCommitments = breakdownTask.Result.Breakdown.Sum(x => x.FundsOut.PledgeOriginatedCommitments),
                ProjectionStartDate = breakdownTask.Result.ProjectionStartDate,
                CurrentYearEstimatedCommittedSpend = CalculateEstimatedCommittedSpend(breakdownTask.Result.Breakdown),
                NextYearEstimatedCommittedSpend = CalculateEstimatedCommittedSpend(nextYearBreakdowntask.Result.Breakdown),
                YearAfterNextYearEstimatedCommittedSpend = CalculateEstimatedCommittedSpend(yearAfterNextYearBreakdowntask.Result.Breakdown),
                AmountPledged = pledgesTask.Result.Pledges.Where(p => p.Status != PledgeStatus.Closed).Sum(x => x.Amount)
            });
        }
Beispiel #3
0
        public async Task <GetIndexQueryResult> Handle(GetIndexQuery request, CancellationToken cancellationToken)
        {
            var pledgesTask = _levyTransferMatchingApiClient.Get <GetPledgesResponse>(new GetPledgesRequest(request.AccountId));

            var applicationsTask = _levyTransferMatchingApiClient.Get <GetApplicationsResponse>(new GetApplicationsRequest
            {
                AccountId = request.AccountId
            });

            await Task.WhenAll(pledgesTask, applicationsTask);

            return(new GetIndexQueryResult
            {
                PledgesCount = pledgesTask.Result.TotalPledges,
                ApplicationsCount = applicationsTask.Result.Applications.Count()
            });
        }
Beispiel #4
0
        public async Task <GetPledgesQueryResult> Handle(GetPledgesQuery request, CancellationToken cancellationToken)
        {
            var response = await _levyTransferMatchingApiClient.Get <GetPledgesResponse>(
                new GetPledgesRequest(accountId : request.AccountId));

            return(new GetPledgesQueryResult()
            {
                Pledges = response.Pledges,
                TotalPledges = response.TotalPledges,
            });
        }
        public async Task <GetAccountsWithPledgesQueryResult> Handle(GetAccountsWithPledgesQuery request, CancellationToken cancellationToken)
        {
            var response = await _levyTransferMatchingApiClient.Get <GetPledgesResponse>(new GetPledgesRequest());

            return(new GetAccountsWithPledgesQueryResult
            {
                AccountIds = response.Pledges
                             .Where(p => p.ApplicationCount > 0)
                             .Select(x => x.AccountId)
                             .Distinct()
                             .ToList()
            });
        }
        public async Task <GetPledgesQueryResult> Handle(GetPledgesQuery request, CancellationToken cancellationToken)
        {
            var apiRequest = new GetPledgesRequest(request.AccountId);
            var response   = await _levyTransferMatchingApiClient.Get <GetPledgesResponse>(apiRequest);

            return(new GetPledgesQueryResult
            {
                Pledges = response.Pledges.Select(p => new GetPledgesQueryResult.Pledge
                {
                    Id = p.Id,
                    AccountId = p.AccountId
                })
            });
        }
        public async Task <GetPledgeApplicationResult> Handle(GetPledgeApplicationQuery request, CancellationToken cancellationToken)
        {
            var result = await _apiClient.Get <GetPledgeApplicationResponse>(new GetPledgeApplicationRequest(request.PledgeApplicationId));

            if (result == null)
            {
                return(null);
            }

            return(new GetPledgeApplicationResult
            {
                SenderEmployerAccountId = result.SenderEmployerAccountId,
                ReceiverEmployerAccountId = result.ReceiverEmployerAccountId,
                Status = result.Status,
                AutomaticApproval = result.AutomaticApproval,
                TotalAmount = result.TotalAmount,
                AmountUsed = result.AmountUsed,
                AmountRemaining = result.AmountRemaining,
                PledgeId = result.PledgeId
            });
        }
Beispiel #8
0
        public async Task <GetTransferValidityQueryResult> Handle(GetTransferValidityQuery request, CancellationToken cancellationToken)
        {
            if (request.PledgeApplicationId.HasValue)
            {
                var pledgeApplicationRequest = new GetPledgeApplicationRequest(request.PledgeApplicationId.Value);
                var pledgeApplication        = await _levyTransferMatchingApiClient.Get <GetPledgeApplicationResponse>(pledgeApplicationRequest);

                return(new GetTransferValidityQueryResult
                {
                    IsValid = pledgeApplication.Status == PledgeApplicationAcceptedStatus
                });
            }

            var apiRequest  = new GetTransferConnectionsRequest(request.ReceiverId);
            var connections = await _accountsApiClient.GetAll <TransferConnection>(apiRequest);

            return(new GetTransferValidityQueryResult
            {
                IsValid = connections.Any(x => x.FundingEmployerAccountId == request.SenderId)
            });
        }
        public async Task <GetPledgesResponse> GetPledges(GetPledgesRequest request)
        {
            var response = await _levyTransferMatchingApiClient.Get <GetPledgesResponse>(request);

            return(response);
        }