internal void addRecipientsToMessage(Int32 triageGroupId, Message message) { UserDao userDao = new UserDao(_cxn); IList <domain.sm.Clinician> groupMembers = userDao.getTriageGroupMembers(triageGroupId); if (message.Addressees == null) { message.Addressees = new List <Addressee>(); } // with surrogacy, it appears there's a possibility of users appearing in the addressee list more than one time. so, we're going to check that and remove dupes Dictionary <String, Clinician> addresseeDict = new Dictionary <String, Clinician>(); // use to track addressees foreach (domain.sm.Clinician user in groupMembers) { if (!addresseeDict.ContainsKey(user.Id.ToString())) { addresseeDict.Add(user.Id.ToString(), user); message.Addressees.Add( new Addressee() { Folder = new Folder() { Id = (Int32)domain.sm.enums.SystemFolderEnum.Inbox, Name = Enum.GetName(typeof(domain.sm.enums.SystemFolderEnum), domain.sm.enums.SystemFolderEnum.Inbox) }, FolderId = (Int32)domain.sm.enums.SystemFolderEnum.Inbox, Message = message, Owner = user, Role = domain.sm.enums.AddresseeRoleEnum.RECIPIENT }); } IList <domain.sm.Clinician> surrogates = userDao.getUsersSurrogates(user.Id); foreach (Clinician surrogate in surrogates) { if (!addresseeDict.ContainsKey(surrogate.Id.ToString())) { addresseeDict.Add(surrogate.Id.ToString(), user); message.Addressees.Add( new Addressee() { Folder = new Folder() { Id = (Int32)domain.sm.enums.SystemFolderEnum.Inbox, Name = Enum.GetName(typeof(domain.sm.enums.SystemFolderEnum), domain.sm.enums.SystemFolderEnum.Inbox) }, FolderId = (Int32)domain.sm.enums.SystemFolderEnum.Inbox, Message = message, Owner = surrogate, Role = domain.sm.enums.AddresseeRoleEnum.RECIPIENT }); } } } }