private static EmailListVm MapToEmailListVm(this List <Email> emails, List <KeyValuePair <int, string> > emailTypes) { Func <Email, bool> func = null; EmailListVm emailListVm = new EmailListVm(); KeyValuePair <int, string> keyValuePair = emailTypes.FirstOrDefault <KeyValuePair <int, string> >(); emailListVm.AdditionalEmails = new List <EmailVm>(); emailListVm.DefaultEmailTypeName = keyValuePair.Value; emailListVm.DefaultEmailTypeId = new long?((long)keyValuePair.Key); if (emails != null && emails.Any <Email>()) { Email leadTypeEmail = emails.FirstOrDefault <Email>((Email m) => { long?emailTypeId = m.EmailTypeId; long key = (long)keyValuePair.Key; return(emailTypeId.GetValueOrDefault() == key & emailTypeId.HasValue); }); if (leadTypeEmail != null) { emailListVm.DefaultEmailId = leadTypeEmail.Id; emailListVm.DefaultEmail = leadTypeEmail.Value; } List <Email> emails1 = emails; Func <Email, bool> func1 = func; if (func1 == null) { Func <Email, bool> func2 = (Email m) => { long?id = m.Id; long?defaultEmailId = emailListVm.DefaultEmailId; return(!(id.GetValueOrDefault() == defaultEmailId.GetValueOrDefault() & id.HasValue == defaultEmailId.HasValue)); }; Func <Email, bool> func3 = func2; func = func2; func1 = func3; } foreach (Email email in emails1.Where <Email>(func1)) { EmailVm emailVm = new EmailVm() { Id = email.Id, EmailTypeId = email.EmailTypeId, Email = email.Value, EmailTypes = emailTypes.ToSelectListItemList(email.EmailTypeId) }; emailListVm.AdditionalEmails.Add(emailVm); } } if (!emailListVm.AdditionalEmails.Any <EmailVm>()) { EmailVm emailVm1 = new EmailVm() { EmailTypes = emailTypes.ToSelectListItemList() }; emailListVm.AdditionalEmails.Add(emailVm1); } return(emailListVm); }
public static EmailListVm Repopulate(this EmailListVm model, ServiceType serviceType) { if (model == null) { return(AdminViewModelsProvider.GetEmailListVm(serviceType)); } if (model.AdditionalEmails == null || !model.AdditionalEmails.Any <EmailVm>()) { model.AdditionalEmails = new List <EmailVm>() { new EmailVm() }; } List <SelectListItem> emailTypes = MSLivingChoices.Bcs.Admin.Components.ItemTypeBc.Instance.GetEmailTypes(serviceType).ToSelectListItemList(); foreach (EmailVm additionalEmail in model.AdditionalEmails) { additionalEmail.EmailTypes = emailTypes; } return(model); }