using System.ComponentModel;
namespace SfeduSchedule.Plugin.Abstractions;
///
/// DTO для запроса расписания в Modeus.
///
public class ModeusScheduleRequest(
int size,
DateTime timeMin,
DateTime timeMax,
List? roomId,
List? attendeePersonId,
List? courseUnitRealizationId,
List? cycleRealizationId,
List? specialtyCode,
List? learningStartYear,
List? profileName,
List? curriculumId,
List? typeId)
{
///
/// Количество элементов в ответе.
///
[DefaultValue(10)]
public int Size { get; set; } = size;
///
/// Начальная дата и время.
///
public DateTime TimeMin { get; set; } = timeMin;
///
/// Конечная дата и время.
///
public DateTime TimeMax { get; set; } = timeMax;
///
/// Список идентификаторов аудиторий. (Guid)
///
public List? RoomId { get; set; } = roomId;
///
/// Список идентификаторов участников.
///
public List? AttendeePersonId { get; set; } = attendeePersonId;
public List? CourseUnitRealizationId { get; set; } = courseUnitRealizationId;
public List? CycleRealizationId { get; set; } = cycleRealizationId;
///
/// Список кодов специальностей.
///
[DefaultValue(new string[] { "09.03.04" })]
public List? SpecialtyCode { get; set; } = specialtyCode;
///
/// Список годов начала обучения.
///
[DefaultValue(new int[] { 2022, 2023, 2024, 2025 })]
public List? LearningStartYear { get; set; } = learningStartYear;
///
/// Список названий профилей подготовки.
///
[DefaultValue(new string[] { "Методы и средства разработки программного обеспечения" })]
public List? ProfileName { get; set; } = profileName;
///
/// Список идентификаторов учебных планов.
///
public List? CurriculumId { get; set; } = curriculumId;
///
/// Список типов мероприятий.
///
[DefaultValue(new string[] { "MID_CHECK", "CONS", "LAB", "LECT", "SEMI", "EVENT_OTHER", "SELF", "CUR_CHECK" })]
public List? TypeId { get; set; } = typeId;
}
///
/// DTO для поиска аудиторий.
///
public class RoomSearchRequest
{
///
/// Название аудитории.
///
[DefaultValue("")]
public string Name { get; set; } = "";
///
/// Сортировка.
///
[DefaultValue("+building.name,+name")]
public string Sort { get; set; } = "+building.name,+name";
///
/// Количество элементов в ответе.
///
[DefaultValue(10)]
public int Size { get; set; } = 10;
///
/// Номер страницы. (пагинация)
///
[DefaultValue(0)]
public int Page { get; set; } = 0;
///
/// Исключать архивные аудитории. false = да, true = нет
///
[DefaultValue(false)]
public bool Deleted { get; set; } = false;
}