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)); }