示例#1
0
        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);
            }
        }
示例#2
0
        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);
            }
        }