/// <summary> /// Determine the person to contact of invalid users. E.g. if a registered entry in COLID has 4 different users, the contact person will /// be determined by the following hierarchy (but only if the user itself is valid): /// 1. Data Steward /// 2. Last Change User /// 3. Author /// 4. Consumer Group Admin /// The consumer group admin will only be used, if all others are no longer valid users. /// </summary> private static string DetermineContactPerson(string emailAddressToCheck, ColidEntryContactsDto colidEntryContactsDto, HashSet <string> invalidContactsMails) { string contactPerson = string.Empty; if (colidEntryContactsDto.Contacts.All(contact => invalidContactsMails.Contains(contact.EmailAddress))) { return(colidEntryContactsDto.ConsumerGroupContact.EmailAddress); } var validContactsFromEntry = colidEntryContactsDto.Contacts.Where(contact => !invalidContactsMails.Contains(contact.EmailAddress)).ToList(); var dataSteward = validContactsFromEntry.FirstOrDefault(c => c.TypeUri.OriginalString == Metadata.DataSteward); if (dataSteward != null) { contactPerson = dataSteward.EmailAddress; } var lastChangeUser = validContactsFromEntry .FirstOrDefault(c => c.TypeUri.OriginalString == Metadata.LastChangeUser); if (lastChangeUser != null && string.IsNullOrEmpty(contactPerson)) { contactPerson = lastChangeUser.EmailAddress; } var author = validContactsFromEntry.FirstOrDefault(c => c.TypeUri.OriginalString == Metadata.Author); if (author != null && string.IsNullOrEmpty(contactPerson)) { contactPerson = author.EmailAddress; } return(contactPerson); }
private static bool IsTechnicalUserInEntry(ColidEntryContactsDto colidEntryContactsDto, string adUserMail) { return(colidEntryContactsDto.Contacts .Where(c => c.EmailAddress == adUserMail) .All(c => c.IsTechnicalContact)); }