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); }