public void AddOffers(IReadOnlyCollection <ScoringOffer> offers) { foreach (var offer in offers) { ScoringOffers.Add(offer); } }
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)); }
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); }
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); } } }
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}'")); }
public ScoringOffer GetOfferForExpertinArea(long expertId, AreaType area) { return(ScoringOffers.FirstOrDefault(x => x.ExpertId == expertId && x.AreaId == area)); }
public bool IsOfferAccepted(long expertId, AreaType area) { var offer = ScoringOffers.FirstOrDefault(o => o.AreaId == area && o.ExpertId == expertId); return(offer?.Status == ScoringOfferStatus.Accepted); }