Пример #1
0
        public async Task <GetGatewayApplicationCountsResponse> Handle(GetGatewayApplicationCountsRequest request, CancellationToken cancellationToken)
        {
            var newGatewayStatuses = new List <string> {
                GatewayReviewStatus.New
            };
            var inProgressGatewayStatuses = new List <string> {
                GatewayReviewStatus.InProgress, GatewayReviewStatus.ClarificationSent
            };
            var closedGatewayStatuses = new List <string> {
                GatewayReviewStatus.Fail, GatewayReviewStatus.Pass, GatewayReviewStatus.Reject
            };

            var counts = (await _repository.GetGatewayApplicationStatusCounts()).ToList();

            var response = new GetGatewayApplicationCountsResponse
            {
                NewApplicationsCount = counts.Where(x => x.ApplicationStatus == ApplicationStatus.Submitted &&
                                                    newGatewayStatuses.Contains(x.GatewayReviewStatus))
                                       .Sum(x => x.Count),

                InProgressApplicationsCount = counts.Where(x => x.ApplicationStatus == ApplicationStatus.Submitted &&
                                                           inProgressGatewayStatuses.Contains(x.GatewayReviewStatus))
                                              .Sum(x => x.Count),

                ClosedApplicationsCount = counts.Where(x => x.ApplicationStatus == ApplicationStatus.Withdrawn ||
                                                       x.ApplicationStatus == ApplicationStatus.Removed ||
                                                       closedGatewayStatuses.Contains(x.GatewayReviewStatus))
                                          .Sum(x => x.Count)
            };

            return(response);
        }