Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
 private static bool IsTechnicalUserInEntry(ColidEntryContactsDto colidEntryContactsDto, string adUserMail)
 {
     return(colidEntryContactsDto.Contacts
            .Where(c => c.EmailAddress == adUserMail)
            .All(c => c.IsTechnicalContact));
 }