private ContactPreferences getContactPreferencesToUpdate(ContactPreferencesViewModel preferences, string[] selectedPreferences, string[] allPreferences) { //first get list of selected prefences var listofSelectedPreferences = new List<Preference>(); foreach (string preference in selectedPreferences) { string[] splitPreferences = preference.Split('/'); listofSelectedPreferences.Add(new Preference { Category = splitPreferences[0], Value = splitPreferences[1] }); } //manual mapping from ContactPreferencesViewModel to ContactPreferences var preferencesToUpdate = new ContactPreferences(); preferencesToUpdate.Preferences = new List<Preference>(); preferencesToUpdate.ExternalContactNumber = preferences.ExternalContactNumber; preferencesToUpdate.ExternalAddressNumber = preferences.ExternalAddressNumber; //loop through each preference foreach (string preference in allPreferences) { string[] splitPreferences = preference.Split('/'); string preferenceCategory = splitPreferences[0]; string preferenceValue = splitPreferences[1]; //check if was actually selected.. bool selected = listofSelectedPreferences.Any( s => s.Category.Equals(preferenceCategory) && s.Value.Equals(preferenceValue)); preferencesToUpdate.Preferences.Add(new Preference { Category = preferenceCategory, Value = preferenceValue, Selected = selected }); } return preferencesToUpdate; }
private ContactPreferencesOperationStatus GetContactPreferences(int externalContactNumber, bool currentRecordsOnly) { var opStatus = new ContactPreferencesOperationStatus { Status = true }; ContactPreferences preferences = new ContactPreferences(); preferences.ExternalContactNumber = externalContactNumber; //preferences.ExternalAddressNumber = externalAddressNumber; string sendXML = String.Format("<Parameters>" + "<ContactNumber>{0}</ContactNumber>" + //"<AddressNumber>{1}</AddressNumber>" + "</Parameters>", externalContactNumber);//, externalAddressNumber //Load xmldata into XDocument Object XDocument sendingXMLDoc = XDocument.Parse(sendXML); var careWebServices = new CARECustomerPortalExtensions.CareWebServices.NDataAccessSoapClient(); string returnXML = careWebServices.SelectContactData(CustomerPortalExtensions.CareWebServices.XMLContactDataSelectionTypes.xcdtContactCategories, sendingXMLDoc.ToString()); XDocument receivingXMLDoc = XDocument.Parse(returnXML); List<Preference> contactPreferences = new List<Preference>(); try { foreach (XElement preferenceNode in receivingXMLDoc.Descendants("DataRow")) { string status = preferenceNode.Element("Status").Value; if (!currentRecordsOnly || status == "Current") { contactPreferences.Add(new Preference { Category = preferenceNode.Element("ActivityCode").Value, Value = preferenceNode.Element("ActivityValueCode").Value, ValidFrom = Convert.ToDateTime(preferenceNode.Element("ValidFrom").Value), ValidTo = Convert.ToDateTime(preferenceNode.Element("ValidTo").Value) }); } } } catch (Exception e) { opStatus = ContactPreferencesOperationStatus.CreateFromException("Error retrieving contact preferences from CARE: " + e.Message, e); opStatus.Status = false; } preferences.Preferences = contactPreferences; opStatus.UpdatedPreferences = preferences; return opStatus; }
public ContactPreferencesOperationStatus SaveContactPreferences(ContactPreferences preferences) { throw new NotImplementedException(); }
public ContactPreferencesOperationStatus SaveContactPreferences(ContactPreferences preferences) { var opStatus = GetContactPreferences(preferences.ExternalContactNumber); if (opStatus.Status) { ContactPreferences existingPreferences = opStatus.UpdatedPreferences; try { //loop through each new preference added foreach (var preference in preferences.Preferences) { if (preference.Selected) { SavePreference(preference, preferences.ExternalContactNumber, preferences.ExternalAddressNumber); } else { //loop through any matching existing preferences .. foreach (var existingPreference in existingPreferences.Preferences.FindAll(s => s.Category.Equals(preference.Category) && s.Value.Equals(preference.Value))) { //... and make them historical MakePreferenceHistorical(existingPreference, preferences.ExternalContactNumber, preferences.ExternalAddressNumber); } } } //get the update preferences opStatus = GetContactPreferences(preferences.ExternalContactNumber); } catch (Exception e) { opStatus = ContactPreferencesOperationStatus.CreateFromException("Error retrieving contact preferences from CARE: " + e.Message, e); opStatus.Status = false; } } //preferences.Preferences = contactPreferences; //opStatus.UpdatedPreferences = preferences; return opStatus; }