Release v1.0.0 #16
.editorconfig.envnuget.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
GetCampusBasicInfoList
CampusBasicInfoDto.csCampusBasicInfoVm.csGetCampusBasicInfoListQuery.csGetCampusBasicInfoListQueryHandler.cs
GetCampusDetails
Discipline/Queries
GetDisciplineDetails
GetDisciplineList
Faculty/Queries/GetFacultyList
Group/Queries
GetGroupDetails
GetGroupList
LectureHall/Queries
GetLectureHallDetails
GetLectureHallList
Professor/Queries
GetProfessorDetails
GetProfessorDetailsBySearch
GetProfessorList
Schedule/Queries/GetScheduleList
Interfaces/DbContexts
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
CampusDbContext.csDisciplineDbContext.csFacultyDbContext.csGroupDbContext.csLectureHallDbContext.csLessonAssociationDbContext.csLessonDbContext.csProfessorDbContext.csSpecificWeekDbContext.csTypeOfOccupationDbContext.cs
DbInitializer.csDependencyInjection.csEntityTypeConfigurations
Mark.cs
Persistence.csprojUberDbContext.csMysql/Schedule
CampusConfiguration.csDisciplineConfiguration.csFacultyConfiguration.csGroupConfiguration.csLectureHallConfiguration.csLessonAssociationConfiguration.csLessonConfiguration.csProfessorConfiguration.csSpecificWeekConfiguration.csTypeOfOccupationConfiguration.cs
Postgresql/Schedule
CampusConfiguration.csDisciplineConfiguration.csFacultyConfiguration.csGroupConfiguration.csLectureHallConfiguration.csLessonAssociationConfiguration.csLessonConfiguration.csProfessorConfiguration.csSpecificWeekConfiguration.csTypeOfOccupationConfiguration.cs
Sqlite/Schedule
@ -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