feat: add filter by type of occupation (lesson type)
This commit is contained in:
@ -8,30 +8,30 @@ public class ScheduleRequest
|
||||
/// <summary>
|
||||
/// Gets or sets an array of group IDs.
|
||||
/// </summary>
|
||||
/// <remarks>This array can contain null values.</remarks>
|
||||
public int[]? Groups { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether to retrieve schedules for even weeks.
|
||||
/// </summary>
|
||||
/// <remarks>This property can contain null.</remarks>
|
||||
public bool? IsEven { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets an array of discipline IDs.
|
||||
/// </summary>
|
||||
/// <remarks>This array can contain null values.</remarks>
|
||||
public int[]? Disciplines { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets an array of professor IDs.
|
||||
/// </summary>
|
||||
/// <remarks>This array can contain null values.</remarks>
|
||||
public int[]? Professors { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets an array of lecture hall IDs.
|
||||
/// </summary>
|
||||
/// <remarks>This array can contain null values.</remarks>
|
||||
public int[]? LectureHalls { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets an array of lesson type IDs.
|
||||
/// </summary>
|
||||
public int[]? LessonType { get; set; } = null;
|
||||
}
|
||||
|
@ -48,7 +48,8 @@ public class ImportController(IMediator mediator, IOptionsSnapshot<GeneralConfig
|
||||
DisciplineIds = request.Disciplines,
|
||||
GroupIds = request.Groups,
|
||||
LectureHallIds = request.LectureHalls,
|
||||
ProfessorIds = request.Professors
|
||||
ProfessorIds = request.Professors,
|
||||
LessonTypeIds = request.LessonType
|
||||
})).Schedules.ToList();
|
||||
|
||||
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
|
||||
|
@ -65,7 +65,8 @@ public class ScheduleController(IMediator mediator, IOptionsSnapshot<GeneralConf
|
||||
DisciplineIds = request.Disciplines,
|
||||
GroupIds = request.Groups,
|
||||
LectureHallIds = request.LectureHalls,
|
||||
ProfessorIds = request.Professors
|
||||
ProfessorIds = request.Professors,
|
||||
LessonTypeIds = request.LessonType
|
||||
})).Schedules.ToList();
|
||||
|
||||
if (result.Count == 0)
|
||||
@ -101,6 +102,7 @@ public class ScheduleController(IMediator mediator, IOptionsSnapshot<GeneralConf
|
||||
/// <param name="disciplines">An array of discipline IDs.</param>
|
||||
/// <param name="professors">An array of professor IDs.</param>
|
||||
/// <param name="lectureHalls">An array of lecture hall IDs.</param>
|
||||
/// <param name="lessonType">An array of type of occupation IDs.</param>
|
||||
/// <returns>A response containing schedules for the specified group.</returns>
|
||||
[HttpGet("GetByGroup/{id:int}")]
|
||||
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
||||
@ -110,14 +112,16 @@ public class ScheduleController(IMediator mediator, IOptionsSnapshot<GeneralConf
|
||||
[FromQuery] bool? isEven = null,
|
||||
[FromQuery] int[]? disciplines = null,
|
||||
[FromQuery] int[]? professors = null,
|
||||
[FromQuery] int[]? lectureHalls = null) =>
|
||||
[FromQuery] int[]? lectureHalls = null,
|
||||
[FromQuery] int[]? lessonType = null) =>
|
||||
await Get(new ScheduleRequest
|
||||
{
|
||||
Disciplines = disciplines,
|
||||
IsEven = isEven,
|
||||
Groups = [id],
|
||||
Professors = professors,
|
||||
LectureHalls = lectureHalls
|
||||
LectureHalls = lectureHalls,
|
||||
LessonType = lessonType
|
||||
});
|
||||
|
||||
/// <summary>
|
||||
@ -128,6 +132,7 @@ public class ScheduleController(IMediator mediator, IOptionsSnapshot<GeneralConf
|
||||
/// <param name="disciplines">An array of discipline IDs.</param>
|
||||
/// <param name="groups">An array of group IDs.</param>
|
||||
/// <param name="lectureHalls">An array of lecture hall IDs.</param>
|
||||
/// <param name="lessonType">An array of type of occupation IDs.</param>
|
||||
/// <returns>A response containing schedules for the specified professor.</returns>
|
||||
[HttpGet("GetByProfessor/{id:int}")]
|
||||
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
||||
@ -137,14 +142,16 @@ public class ScheduleController(IMediator mediator, IOptionsSnapshot<GeneralConf
|
||||
[FromQuery] bool? isEven = null,
|
||||
[FromQuery] int[]? disciplines = null,
|
||||
[FromQuery] int[]? groups = null,
|
||||
[FromQuery] int[]? lectureHalls = null) =>
|
||||
[FromQuery] int[]? lectureHalls = null,
|
||||
[FromQuery] int[]? lessonType = null) =>
|
||||
await Get(new ScheduleRequest
|
||||
{
|
||||
Disciplines = disciplines,
|
||||
IsEven = isEven,
|
||||
Groups = groups,
|
||||
Professors = [id],
|
||||
LectureHalls = lectureHalls
|
||||
LectureHalls = lectureHalls,
|
||||
LessonType = lessonType
|
||||
});
|
||||
|
||||
/// <summary>
|
||||
@ -155,6 +162,7 @@ public class ScheduleController(IMediator mediator, IOptionsSnapshot<GeneralConf
|
||||
/// <param name="disciplines">An array of discipline IDs.</param>
|
||||
/// <param name="professors">An array of professor IDs.</param>
|
||||
/// <param name="groups">An array of group IDs.</param>
|
||||
/// <param name="lessonType">An array of type of occupation IDs.</param>
|
||||
/// <returns>A response containing schedules for the specified lecture hall.</returns>
|
||||
[HttpGet("GetByLectureHall/{id:int}")]
|
||||
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
||||
@ -164,14 +172,16 @@ public class ScheduleController(IMediator mediator, IOptionsSnapshot<GeneralConf
|
||||
[FromQuery] bool? isEven = null,
|
||||
[FromQuery] int[]? disciplines = null,
|
||||
[FromQuery] int[]? groups = null,
|
||||
[FromQuery] int[]? professors = null) =>
|
||||
[FromQuery] int[]? professors = null,
|
||||
[FromQuery] int[]? lessonType = null) =>
|
||||
await Get(new ScheduleRequest
|
||||
{
|
||||
Disciplines = disciplines,
|
||||
IsEven = isEven,
|
||||
Groups = groups,
|
||||
Professors = professors,
|
||||
LectureHalls = [id]
|
||||
LectureHalls = [id],
|
||||
LessonType = lessonType
|
||||
});
|
||||
|
||||
/// <summary>
|
||||
@ -182,6 +192,7 @@ public class ScheduleController(IMediator mediator, IOptionsSnapshot<GeneralConf
|
||||
/// <param name="groups">An array of group IDs.</param>
|
||||
/// <param name="professors">An array of professor IDs.</param>
|
||||
/// <param name="lectureHalls">An array of lecture hall IDs.</param>
|
||||
/// <param name="lessonType">An array of type of occupation IDs.</param>
|
||||
/// <returns>A response containing schedules for the specified discipline.</returns>
|
||||
[HttpGet("GetByDiscipline/{id:int}")]
|
||||
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
||||
@ -191,13 +202,15 @@ public class ScheduleController(IMediator mediator, IOptionsSnapshot<GeneralConf
|
||||
[FromQuery] bool? isEven = null,
|
||||
[FromQuery] int[]? groups = null,
|
||||
[FromQuery] int[]? professors = null,
|
||||
[FromQuery] int[]? lectureHalls = null) =>
|
||||
[FromQuery] int[]? lectureHalls = null,
|
||||
[FromQuery] int[]? lessonType = null) =>
|
||||
await Get(new ScheduleRequest
|
||||
{
|
||||
Disciplines = [id],
|
||||
IsEven = isEven,
|
||||
Groups = groups,
|
||||
Professors = professors,
|
||||
LectureHalls = lectureHalls
|
||||
LectureHalls = lectureHalls,
|
||||
LessonType = lessonType
|
||||
});
|
||||
}
|
@ -8,5 +8,6 @@ public class GetScheduleListQuery : IRequest<ScheduleListVm>
|
||||
public int[]? DisciplineIds { get; set; }
|
||||
public int[]? LectureHallIds { get; set; }
|
||||
public int[]? ProfessorIds { get; set; }
|
||||
public int[]? LessonTypeIds { get; set; }
|
||||
public bool? IsEven { get; set; }
|
||||
}
|
@ -16,6 +16,9 @@ public class GetScheduleListQueryHandler(ILessonDbContext dbContext) : IRequestH
|
||||
if (request.IsEven != null)
|
||||
query = query.Where(l => l.IsEven == request.IsEven);
|
||||
|
||||
if (request.LessonTypeIds != null && request.LessonTypeIds.Length != 0)
|
||||
query = query.Where(l => l.LessonAssociations!.Any(la => request.LessonTypeIds.Contains(la.TypeOfOccupationId)));
|
||||
|
||||
if (request.GroupIds != null && request.GroupIds.Length != 0)
|
||||
query = query.Where(l => request.GroupIds.Contains(l.GroupId));
|
||||
|
||||
|
Reference in New Issue
Block a user