public override IPrimaryObjectList <InstitutionData> GetMemberInstitutions(Object membershipId, Dictionary <String, Object> providerKeys = null) { IPrimaryObjectList <InstitutionData> returnList = new PrimaryObjectList <InstitutionData>(); Guid memberId; if (Guid.TryParse(membershipId.ToString(), out memberId)) { try { SqlProfile profile = (SqlProfile)_dataContext.Profiles.Include("Institutions") .Where(p => p.MemberId == memberId) .FirstOrDefault(); if (profile.Institutions != null && profile.Institutions.Count > 0) { returnList = profile.Institutions.ToFrameworkList <Institution, InstitutionData>(memberId); } } catch (Exception ex) { throw new DataProviderException("Error accessing member institution data", ex); } } return((IPrimaryObjectList <InstitutionData>)returnList); }
public static IPrimaryObjectList <TMember> ToFrameworkList <T, TMember>(this IList <T> list, Object memberId) where TMember : IPrimary, new() { dynamic returnList = null; if (list.Count > 0) { Type itemType = list.FirstOrDefault().GetType(); if (itemType == typeof(MailingAddress)) { MemberAddressList <MemberAddressData> addressList = new MemberAddressList <MemberAddressData>(); foreach (MailingAddress address in (IList <MailingAddress>)list) { MemberAddressData addressData = new MemberAddressData() { Id = address.Id, AddressLine1 = address.AddressLine1, AddressLine2 = address.AddressLine2, AddressLine3 = address.AddressLine3, City = address.City, County = address.County, StateProvince = address.StateProvince, PostalCode = address.PostalCode, Country = address.Country, MemberId = memberId, PassedValidation = address.PassedValidation, PassedValidationOn = address.PassedValidationOn }; addressList.Add(addressData); //if (address.Primary) //{ // addressList.SetPrimary(addressData); //} } returnList = addressList; return(returnList); } else if (itemType == typeof(PhoneNumber)) { MemberPhoneList <MemberPhoneData> phoneList = new MemberPhoneList <MemberPhoneData>(); foreach (PhoneNumber number in (IList <PhoneNumber>)list) { MemberPhoneData phoneNumberData = new MemberPhoneData { Id = number.Id, MemberId = memberId, PhoneNumber = number.Number, PhoneType = number.Type, PassedValidation = number.PassedValidation, PassedValidationOn = number.PassedValidationOn, IsPrimary = number.Primary }; phoneList.Add(phoneNumberData); } returnList = phoneList; return(returnList); } else if (itemType == typeof(EmailAddress)) { MemberEmailList <MemberEmailData> emailList = new MemberEmailList <MemberEmailData>(); foreach (EmailAddress email in (IList <EmailAddress>)list) { MemberEmailData emailData = new MemberEmailData() { Id = email.Id, MemberId = memberId, Address = email.Address, PassedValidation = email.PassedValidation, PassedValidationOn = email.PassedValidationOn, IsPrimary = email.Primary }; emailList.Add(emailData); } returnList = emailList; return(returnList); } else if (list.FirstOrDefault() is Institution) //Institutions are read only so we only need this to convert from our data-store to the framework model. { // Instittuion does not have its own list implementation. // Most type specific custom list declrations will be deprcated in the future. PrimaryObjectList <InstitutionData> institutionList = new PrimaryObjectList <InstitutionData>(); foreach (Institution institution in (IList <Institution>)list) { ASA.Web.WTF.MailingAddress addressData = null; if (institution.MailingAddress != null) { addressData = new ASA.Web.WTF.MailingAddress { AddressLine1 = institution.MailingAddress.AddressLine1, AddressLine2 = institution.MailingAddress.AddressLine2, AddressLine3 = institution.MailingAddress.AddressLine3, City = institution.MailingAddress.City, StateProvince = institution.MailingAddress.StateProvince, County = institution.MailingAddress.Country, Country = institution.MailingAddress.Country }; } InstitutionData institutionData = new InstitutionData() { Id = institution.Id, MemberId = memberId, ContactEmail = institution.ContactEmail, ExtData = new Dictionary <String, String> { { "Branch", institution.Branch }, { "OECode", institution.OECode } }, InstitutionType = InstitutionType.Other, // Temp IsPrimary = institution.IsPrimary, LogoPath = institution.LogoPath, MailingAddress = addressData, Name = institution.Name, PhoneNumber = institution.PhoneNumber, SiteUri = institution.SiteUri }; institutionList.Add(institutionData); } returnList = institutionList; return(returnList); } } return(returnList); }