Release v1.0.0 #16
.editorconfig.envDbInitializer.csDependencyInjection.csnuget.config
.gitea/workflows
.gitignoreApiDto
ApiDto.csproj
Backend.slnDockerfileCommon
AuthRoles.csCacheType.csDatabaseType.csOAuthAction.csOAuthProvider.csPairPeriodTime.csPasswordPolicy.csTwoFactorAuthentication.cs
Requests
Responses
Endpoint
Backend.httpISaveSettings.cs
README.mdCommon
Attributes
BadRequestResponseAttribute.csCacheMaxAgeAttribute.csLocalhostAttribute.csMaintenanceModeIgnoreAttribute.csNotFoundResponseAttribute.csSwaggerDefaultAttribute.csTokenAuthenticationAttribute.cs
Exceptions
Interfaces
MapperDto
AvailableProvidersConverter.csPairPeriodTimeConverter.csPasswordPolicyConverter.csTwoFactorAuthenticationConverter.csUserConverter.cs
Services
Configuration
Core
BackgroundTasks
Middleware
CacheMaxAgeMiddleware.csCookieAuthorizationMiddleware.csCustomExceptionHandlerMiddleware.csJwtRevocationMiddleware.csMaintenanceModeMiddleware.cs
Startup
Model
SwaggerOptions
Validation
Controllers
BaseController.cs
Endpoint.csprojProgram.csConfiguration
V1
AuthController.csCampusController.csDisciplineController.csFacultyController.csGroupController.csImportController.csLectureHallController.csProfessorController.csScheduleController.csSecurityController.cs
WeatherForecastController.csSync
WeatherForecast.cswwwroot
css
swagger
Security
Common
CookieNames.cs
DependencyInjection.csDomain
Interfaces
Model
OAuth2
ViewModel
Properties
Security.csprojServices
SqlData
Application
Application.csprojDependencyInjection.cs
Common
Cqrs
Campus
Queries
Discipline
Queries
Faculty
Queries
Group
Queries
LectureHall
Queries
Professor
Queries
GetProfessorDetails
GetProfessorDetailsBySearch
GetProfessorList
Schedule
Interfaces
Domain
Domain.csproj
Schedule
Migrations
MysqlMigrations
Migrations
20240601023106_InitialMigration.Designer.cs20240601023106_InitialMigration.cs20241027034820_RemoveUnusedRef.Designer.cs20241027034820_RemoveUnusedRef.csUberDbContextModelSnapshot.cs
MysqlMigrations.csprojPsqlMigrations
Migrations
20240601021702_InitialMigration.Designer.cs20240601021702_InitialMigration.cs20241027032753_RemoveUnusedRef.Designer.cs20241027032753_RemoveUnusedRef.csUberDbContextModelSnapshot.cs
PsqlMigrations.csprojSqliteMigrations
Persistence
Common
BaseDbContext.csConfigurationResolver.csDatabaseProvider.csDbContextFactory.csModelBuilderExtensions.cs
Contexts
Schedule
EntityTypeConfigurations
Persistence.csprojUberDbContext.cs@ -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