Files
2025-02-12 18:36:30 +11:00

85 lines
3.1 KiB
C#

using Disco.Models.Services.Exporting;
using Disco.Models.UI.Config.Export;
using Disco.Web.Areas.API.Models.Shared;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
namespace Disco.Web.Areas.Config.Models.Export
{
public class EditModel : ConfigExportCreateModel, ConfigExportShowModel
{
[Required]
public Guid Id { get; set; }
public string ExportTypeName { get; set; }
[Required]
public string Name { get; set; }
[DataType(DataType.MultilineText)]
public string Description { get; set; }
public bool IsEnabled { get; set; }
public string FilePath { get; set; }
public bool TimestampSuffix { get; set; }
public bool ScheduleEnabled { get; set; }
public bool ScheduleMonday { get; set; }
public bool ScheduleTuesday { get; set; }
public bool ScheduleWednesday { get; set; }
public bool ScheduleThursday { get; set; }
public bool ScheduleFriday { get; set; }
public bool ScheduleSaturday { get; set; }
public bool ScheduleSunday { get; set; }
[Range(0, 23)]
public byte ScheduleStartHour { get; set; }
[Range(0, 23)]
public byte? ScheduleEndHour { get; set; }
public List<SubjectDescriptorModel> OnDemandSubjects { get; set; }
public List<string> OnDemandPrincipals { get; set; }
public static EditModel FromNewSavedExport(SavedExport savedExport, string exportTypeName)
{
return new EditModel
{
Id = savedExport.Id,
IsEnabled = false,
ExportTypeName = exportTypeName,
ScheduleMonday = true,
ScheduleTuesday = true,
ScheduleWednesday = true,
ScheduleThursday = true,
ScheduleFriday = true,
};
}
public SavedExport ToSavedExport()
{
var weekDays = default(byte);
if (ScheduleMonday) weekDays |= 1 << (int)DayOfWeek.Monday;
if (ScheduleTuesday) weekDays |= 1 << (int)DayOfWeek.Tuesday;
if (ScheduleWednesday) weekDays |= 1 << (int)DayOfWeek.Wednesday;
if (ScheduleThursday) weekDays |= 1 << (int)DayOfWeek.Thursday;
if (ScheduleFriday) weekDays |= 1 << (int)DayOfWeek.Friday;
if (ScheduleSaturday) weekDays |= 1 << (int)DayOfWeek.Saturday;
if (ScheduleSunday) weekDays |= 1 << (int)DayOfWeek.Sunday;
return new SavedExport
{
Id = Id,
Name = Name,
Description = Description,
FilePath = FilePath,
TimestampSuffix = TimestampSuffix,
Schedule = ScheduleEnabled ? new SavedExportSchedule
{
WeekDays = weekDays,
StartHour = ScheduleStartHour,
EndHour = ScheduleEndHour,
} : null,
OnDemandPrincipals = OnDemandSubjects?.Select(s => s.Id).ToList(),
};
}
}
}