private void SetNomineeIdentifiers(AwardType awardType) { var nominationsByNominee = Nominations .Where(n => n.AwardType == awardType) .Select((n, i) => new { Index = i, Nomination = n }) .GroupBy(x => x.Nomination.Nominee); foreach (var group in nominationsByNominee) { var nomineeIndexes = group.Select(x => x.Index).ToList(); var votingIdentifier = NomineeVotingIdentifier.Create(nomineeIndexes); foreach (var item in group) { var nomination = item.Nomination; if (nomination.VotingIdentifier == votingIdentifier) { continue; } nomination.SetVotingIdentifier(votingIdentifier); } } }
public IReadOnlyList <Nomination> GetNominationsForNominee(AwardType awardType, Person nominee) { if (awardType == null) { throw new ArgumentNullException(nameof(awardType)); } if (nominee == null) { throw new ArgumentNullException(nameof(nominee)); } return(Nominations.Where(n => n.Nominee == nominee && n.AwardType == awardType).ToList()); }
public IReadOnlyList <Person> GetNomineesForAward(AwardType awardType, bool excludeWinners) { if (awardType == null) { throw new ArgumentNullException(nameof(awardType)); } var winners = excludeWinners ? GetWinnersForAwardType(awardType).Select(w => w.Person) : Enumerable.Empty <Person>(); return(Nominations .Where(n => n.AwardType == awardType) .Select(n => n.Nominee) .Except(winners) .ToList()); }
public void UpdateNomineeEmailAddress(Person nominee, EmailAddress newEmailAddress) { if (nominee == null) { throw new ArgumentNullException(nameof(nominee)); } if (newEmailAddress == null) { throw new ArgumentNullException(nameof(newEmailAddress)); } if (!newEmailAddress.IsValid) { throw new ArgumentException(nameof(newEmailAddress)); } if (nominee.EmailAddress == newEmailAddress) { return; } var nominations = Nominations.Where(n => n.Nominee == nominee); var updated = false; foreach (var nomination in nominations) { nomination.UpdateNomineeEmailAddress(newEmailAddress); updated = true; } if (!updated) { return; } SetNomineeIdentifiers(); var awardWinner = AwardWinners.FirstOrDefault(w => w.Person == nominee); if (awardWinner != null) { awardWinner.UpdateAwardWinnerEmailAddress(newEmailAddress); } MarkAsDirty($@"Updated nominee email address from {nominee.EmailAddress.Value} to {newEmailAddress.Value}"); }
public void UpdateNomineeName(Person nominee, PersonName newNomineeName) { if (nominee == null) { throw new ArgumentNullException(nameof(nominee)); } if (newNomineeName == null) { throw new ArgumentNullException(nameof(newNomineeName)); } if (!newNomineeName.IsValid) { throw new ArgumentException(nameof(newNomineeName)); } if (nominee.Name == newNomineeName) { return; } var nominations = Nominations.Where(n => n.Nominee == nominee); var updated = false; foreach (var nomination in nominations) { nomination.UpdateNomineeName(newNomineeName); updated = true; } if (!updated) { return; } SetNomineeIdentifiers(); var awardWinner = AwardWinners.FirstOrDefault(w => w.Person == nominee); if (awardWinner != null) { awardWinner.UpdateAwardWinnerName(newNomineeName); } MarkAsDirty($@"Updated nominee name from {nominee.Name.FullName} to {newNomineeName.FullName}"); }
public void UpdateNomineeOfficeLocation(Person nominee, OfficeLocation newOfficeLocation) { if (nominee == null) { throw new ArgumentNullException(nameof(nominee)); } if (newOfficeLocation == null) { throw new ArgumentNullException(nameof(newOfficeLocation)); } if (!OfficeLocation.ValidEmployeeOfficeLocations.Contains(newOfficeLocation)) { throw new ArgumentException(nameof(newOfficeLocation)); } var nominations = Nominations.Where(n => n.Nominee == nominee); var updated = false; foreach (var nomination in nominations) { nomination.UpdateNomineeOfficeLocation(newOfficeLocation); updated = true; } if (!updated) { return; } SetNomineeIdentifiers(); var awardWinner = AwardWinners.FirstOrDefault(w => w.Person == nominee); if (awardWinner != null) { awardWinner.UpdateAwardWinnerOfficeLocation(newOfficeLocation); } MarkAsDirty( $@"Updated nominee {nominee.Name.FullName}'s office location from {nominee.OfficeLocation.Name} to { newOfficeLocation.Name }"); }
private IEnumerable <Nomination> GetNominationsByAwardType(AwardType awardType) { return(Nominations.Where(n => n.AwardType == awardType)); }