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