public void UpdateMergeVariablesForContentItem(MailChimpFormPart part, IEnumerable<MergeVariableEntry> mergeVarInputs, IEnumerable<MergeVariableRecord> possibleMergeVars) { var oldMergeVars = _mergeVarsRepository.Fetch( r => r.FormRecord == part.Record); // Untick non available merge vars to oldVar (happens if someone changes list) foreach (var mergeVar in mergeVarInputs.Where(t => t.Checked)) { if (!possibleMergeVars.Select(t => t.Tag).Contains(mergeVar.Tag)) { mergeVar.Checked = false; } } var checkedMergeVars = mergeVarInputs.Where(t => t.Checked).ToList(); // Add all required vars that aren't arlready in checked collection var requiredMergeVars = possibleMergeVars.Where(t => t.Required); foreach (var requiredMergeVar in requiredMergeVars) { if(!checkedMergeVars.Select(t => t.Tag).Contains(requiredMergeVar.Tag)) { checkedMergeVars.Add( new MergeVariableEntry { Tag = requiredMergeVar.Tag, Checked = true } ); } } // Delete the rewards that are no longer there foreach (var oldMergeVar in oldMergeVars) { if (!checkedMergeVars.Select(t => t.Tag).Contains(oldMergeVar.Tag)) { _mergeVarsRepository.Delete(oldMergeVar); } } // Work out which ones are new var newMergeVars = new List<MergeVariableRecord>(); foreach (var mergeVar in checkedMergeVars) { var oldMergeVar = oldMergeVars.FirstOrDefault(t => t.Tag == mergeVar.Tag); var newMergevar = possibleMergeVars.First(t => t.Tag == mergeVar.Tag); if (oldMergeVar == null) { // Add new value newMergevar.FormRecord = part.Record; newMergeVars.Add(newMergevar); } else { // Old one so update some properties oldMergeVar.DisplayOrder = newMergevar.DisplayOrder; oldMergeVar.Label = newMergevar.Label; oldMergeVar.Required = newMergevar.Required; oldMergeVar.Type = newMergevar.Type; oldMergeVar.Choices = newMergevar.Choices; } } // Add the new rewards foreach (var mergeVar in newMergeVars) { _mergeVarsRepository.Create(mergeVar); } }
public void UpdateInterestGroupsForContentItem(MailChimpFormPart part, IEnumerable<int> showInterestGroupIds, IEnumerable<InterestGroupingsRecord> interestGroups) { var oldInterestGroups = _interestGroupingsRepository.Fetch( r => r.FormRecord == part.Record); // Delete the rewards that are no longer there or shown foreach (var oldInterestGroup in oldInterestGroups) { if (!showInterestGroupIds.Contains(oldInterestGroup.Id) || !interestGroups.Select(t => t.Id).Contains(oldInterestGroup.Id)) { _interestGroupingsRepository.Delete(oldInterestGroup); } } // Work out which ones are new and shown var newInterestGroupings = new List<InterestGroupingsRecord>(); foreach (var interestGroup in interestGroups) { interestGroup.Show = showInterestGroupIds.Contains(interestGroup.GroupId); if (!oldInterestGroups.Select(t => t.Id).Contains(interestGroup.Id) && interestGroup.Show) { interestGroup.FormRecord = part.Record; newInterestGroupings.Add(interestGroup); } } // Add the new rewards foreach (var interestGroup in newInterestGroupings) { _interestGroupingsRepository.Create(interestGroup); } }