コード例 #1
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
            });
        }