Esempio n. 1
0
 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()
     });
 }
Esempio n. 2
0
        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
            });
        }