public static ScoringReportInAreaResponse Create(ScoringReportInArea scoringReportInArea, DateTimeOffset acceptingDeadline, DateTimeOffset scoringDeadline, DateTimeOffset now) { return(new ScoringReportInAreaResponse { Score = scoringReportInArea.Score, RequiredExpertsCount = scoringReportInArea.RequiredExpertsCount, Conclusions = scoringReportInArea.Scorings.Select(ScoringAreaConslusionResponse.FromDomain), Offers = scoringReportInArea.Offers.Select(x => ScoringOfferAreaResponse.FromDomain(x, acceptingDeadline, scoringDeadline, now)).ToArray(), Criteria = scoringReportInArea .Scorings .SelectMany(x => x.Estimates) .GroupBy(e => e.ScoringCriterionId) .Select(q => CriterionWithEstimatesResponse.Create(q.Key, q.ToArray())) .ToArray(), AreaType = scoringReportInArea.AreaType.FromDomain() }); }
public async Task <ScoringReport> GetScoringReportAsync(long projectId, bool showExperts = false) { var scoring = await _scoringRepository.GetByProjectIdAsync(projectId); if (scoring == null) { return(new ScoringReport { ScoringReportsInAreas = new ScoringReportInArea[0] }); } var result = new List <ScoringReportInArea>(); foreach (var areaScoring in scoring.AreaScorings) { var expertScorings = scoring.ExpertScorings.Where(x => x.Area == areaScoring.AreaId).ToArray(); var offers = scoring.ScoringOffers.Where(s => s.AreaId == areaScoring.AreaId).ToArray(); var statistics = new ScoringReportInArea(areaScoring.Score, areaScoring.ExpertsCount, expertScorings, offers, areaScoring.AreaId); result.Add(statistics); } var scoringExperts = showExperts ? await _expertRepository.GetByIdsAsync(scoring.ExpertScorings.Select(i => i.ExpertId).ToArray()) : null; return(new ScoringReport { Experts = scoringExperts, AcceptingDeadline = scoring.AcceptingDeadline, ScoringDeadline = scoring.ScoringDeadline, ScoringReportsInAreas = result }); }