public override IEnumerable <TemplateViewModel> TypePartEditorUpdate(ContentTypePartDefinitionBuilder builder, IUpdateModel updateModel)
        {
            // working on GDPRPart
            if (builder.Name != "GDPRPart")
            {
                yield break;
            }

            var vm = new GDPRPartTypeSchedulingSettingsViewModel();

            if (updateModel.TryUpdateModel(vm, "GDPRPartTypeSchedulingSettingsViewModel", null, null))
            {
                var ok = true;
                if (vm.Settings.ScheduleAnonymization && vm.Settings.AnonymizationDaysToWait <= 0)
                {
                    // days must be positive
                    _notifier.Error(T("Days to wait before anonymization must be greater than zero. Scheduler configuration failed."));
                    ok = false;
                }
                if (vm.Settings.ScheduleErasure && vm.Settings.ErasureDaysToWait <= 0)
                {
                    // days must be positive
                    _notifier.Error(T("Days to wait before erasure must be greater than zero. Scheduler configuration failed."));
                    ok = false;
                }
                if (ok)
                {
                    var settings = vm.Settings;
                    GDPRPartTypeSchedulingSettings.SetValues(builder, settings);
                    // update scheduled tasks
                    _GDPRScheduleManager.UpdateSchedule(builder.TypeName, settings);
                }
            }
        }
 /// <summary>
 /// Create a ViewModel based on the settings provided.
 /// </summary>
 /// <param name="settings"></param>
 /// <returns></returns>
 private GDPRPartTypeSchedulingSettingsViewModel MakeViewModel(GDPRPartTypeSchedulingSettings settings)
 {
     return(new GDPRPartTypeSchedulingSettingsViewModel {
         Settings = settings,
         AnonymizationEvents = ListEvents(settings),
         ErasureEvents = ListEvents(settings, true)
     });
 }
 private IEnumerable <SelectListItem> ListEvents(GDPRPartTypeSchedulingSettings settings, bool erasure = false)
 {
     foreach (var item in Enum.GetValues(typeof(EventForScheduling)).Cast <EventForScheduling>())
     {
         yield return(new SelectListItem {
             Selected = item == (erasure ? settings.EventForErasure : settings.EventForAnonymization),
             Text = FriendlyString(item),
             Value = item.ToString()
         });
     }
 }
        public static void SetValues(ContentTypePartDefinitionBuilder builder, GDPRPartTypeSchedulingSettings settings)
        {
            builder.WithSetting(
                "GDPRPartTypeSchedulingSettings.EventForAnonymization",
                settings.EventForAnonymization.ToString());
            builder.WithSetting(
                "GDPRPartTypeSchedulingSettings.AnonymizationDaysToWait",
                settings.AnonymizationDaysToWait.ToString(CultureInfo.InvariantCulture));
            builder.WithSetting(
               "GDPRPartTypeSchedulingSettings.ScheduleAnonymization",
               settings.ScheduleAnonymization.ToString(CultureInfo.InvariantCulture));

            builder.WithSetting(
                "GDPRPartTypeSchedulingSettings.EventForErasure",
                settings.EventForErasure.ToString());
            builder.WithSetting(
                "GDPRPartTypeSchedulingSettings.ErasureDaysToWait",
                settings.ErasureDaysToWait.ToString(CultureInfo.InvariantCulture));
            builder.WithSetting(
               "GDPRPartTypeSchedulingSettings.ScheduleErasure",
               settings.ScheduleErasure.ToString(CultureInfo.InvariantCulture));
        }