using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; namespace Mirea.Api.Dto.Responses; /// <summary> /// Represents a response object containing schedule information. /// </summary> public class ScheduleResponse { /// <summary> /// Gets or sets the day of the week for the schedule entry. /// </summary> [Required] public DayOfWeek DayOfWeek { get; set; } /// <summary> /// Gets or sets the pair number for the schedule entry. /// </summary> [Required] public int PairNumber { get; set; } /// <summary> /// Gets or sets a value indicating whether the pair is on an even week. /// </summary> [Required] public bool IsEven { get; set; } /// <summary> /// Gets or sets the name of the discipline for the schedule entry. /// </summary> [Required] public required string Discipline { get; set; } /// <summary> /// Gets or sets the ID of the discipline for the schedule entry. /// </summary> [Required] public required int DisciplineId { get; set; } /// <summary> /// Gets or sets exclude or include weeks for a specific discipline. /// </summary> /// <remarks> /// If is <see langword="true"/>, then the values in <see cref="Weeks"/> show the weeks when there will be no discipline. /// <br/> /// If is <see langword="false"/>, then the values in <see cref="Weeks"/> indicate the weeks during which a particular discipline will be studied. /// <br/> /// If is <see langword="null"/>, then there are no specific <see cref="Weeks"/> /// </remarks> /// public bool? IsExcludedWeeks { get; set; } /// <summary> /// The week numbers required for the correct display of the schedule. /// <br/> /// Whether there will be <see cref="Discipline"/> during the week or not depends on the <see cref="IsExcludedWeeks"/> property. /// </summary> /// <remarks> /// To get the current week's number, use other queries. /// </remarks> public IEnumerable<int>? Weeks { get; set; } /// <summary> /// Gets or sets the type of occupation for the schedule entry. /// </summary> [Required] public required IEnumerable<string> TypeOfOccupations { get; set; } /// <summary> /// Gets or sets the name of the group for the schedule entry. /// </summary> [Required] public required string Group { get; set; } /// <summary> /// Gets or sets the ID of the group for the schedule entry. /// </summary> [Required] public required int GroupId { get; set; } /// <summary> /// Gets or sets the names of the lecture halls for the schedule entry. /// </summary> public required IEnumerable<string?> LectureHalls { get; set; } /// <summary> /// Gets or sets the IDs of the lecture halls for the schedule entry. /// </summary> public required IEnumerable<int?> LectureHallsId { get; set; } /// <summary> /// Gets or sets the names of the professors for the schedule entry. /// </summary> public required IEnumerable<string?> Professors { get; set; } /// <summary> /// Gets or sets the IDs of the professors for the schedule entry. /// </summary> public required IEnumerable<int?> ProfessorsId { get; set; } /// <summary> /// Gets or sets the names of the campuses for the schedule entry. /// </summary> public required IEnumerable<string?> Campus { get; set; } /// <summary> /// Gets or sets the IDs of the campuses for the schedule entry. /// </summary> public required IEnumerable<int?> CampusId { get; set; } /// <summary> /// Gets or sets the links to online meetings for the schedule entry. /// </summary> public required IEnumerable<string?> LinkToMeet { get; set; } }