示例#1
0
 public void AddOffers(IReadOnlyCollection <ScoringOffer> offers)
 {
     foreach (var offer in offers)
     {
         ScoringOffers.Add(offer);
     }
 }
示例#2
0
        public bool HasEnoughEstimatesInArea(AreaType area)
        {
            var areaScoring = AreaScorings.FirstOrDefault(a => a.AreaId == area);

            if (areaScoring == null)
            {
                throw new InvalidOperationException($"Scoring '{Id}' does not contain specified area '{area}'.");
            }

            return(areaScoring.ExpertsCount == ScoringOffers.Count(o => o.AreaId == area && o.Status == ScoringOfferStatus.Finished));
        }
示例#3
0
        private bool HasEnoughExperts()
        {
            foreach (var areaScoring in AreaScorings)
            {
                var areaExpertsCount = ScoringOffers.Count(o => o.AreaId == areaScoring.AreaId && o.Status == ScoringOfferStatus.Accepted);
                if (areaScoring.ExpertsCount > areaExpertsCount)
                {
                    return(false);
                }
            }

            return(true);
        }
示例#4
0
        public void RemoveOffers(IReadOnlyCollection <ScoringOffer> offers)
        {
            foreach (var offer in offers)
            {
                var offerToDelete = ScoringOffers.FirstOrDefault(x => x.ExpertId == offer.ExpertId && x.AreaId == offer.AreaId);
                if (offerToDelete == null)
                {
                    throw new AppErrorException(ErrorCode.ServerError, $"Can find offer: expertId: '{offer.ExpertId}', areaId: '{offer.AreaId}'.");
                }

                ScoringOffers.Remove(offerToDelete);

                var storedScoring = ExpertScorings.FirstOrDefault(x => x.ExpertId == offer.ExpertId && x.Area == offer.AreaId);
                if (storedScoring != null)
                {
                    ExpertScorings.Remove(storedScoring);
                }
            }
        }
示例#5
0
 private ScoringOffer GetOffer(AreaType area, long expertId)
 {
     return(ScoringOffers.FirstOrDefault(o => o.AreaId == area && o.ExpertId == expertId)
            ?? throw new InvalidOperationException($"Can't find offer for area: '{area}', expertId: '{expertId}', scoringId: '{Id}'"));
 }
示例#6
0
 public ScoringOffer GetOfferForExpertinArea(long expertId, AreaType area)
 {
     return(ScoringOffers.FirstOrDefault(x => x.ExpertId == expertId && x.AreaId == area));
 }
示例#7
0
        public bool IsOfferAccepted(long expertId, AreaType area)
        {
            var offer = ScoringOffers.FirstOrDefault(o => o.AreaId == area && o.ExpertId == expertId);

            return(offer?.Status == ScoringOfferStatus.Accepted);
        }