refactor: provide single response for schedule
This commit is contained in:
@ -6,7 +6,6 @@ using Mirea.Api.DataAccess.Application.Cqrs.Schedule.Queries.GetScheduleList;
|
||||
using Mirea.Api.Dto.Common;
|
||||
using Mirea.Api.Dto.Requests;
|
||||
using Mirea.Api.Dto.Responses;
|
||||
using Mirea.Api.Dto.Responses.Schedule;
|
||||
using Mirea.Api.Endpoint.Common.Attributes;
|
||||
using Mirea.Api.Endpoint.Common.Services;
|
||||
using Mirea.Api.Endpoint.Configuration.General;
|
||||
@ -53,7 +52,7 @@ public class ScheduleController(IMediator mediator, IOptionsSnapshot<GeneralConf
|
||||
});
|
||||
}
|
||||
|
||||
var result = (await mediator.Send(new GetScheduleListQuery()
|
||||
var result = (await mediator.Send(new GetScheduleListQuery
|
||||
{
|
||||
IsEven = request.IsEven,
|
||||
DisciplineIds = request.Disciplines,
|
||||
@ -64,7 +63,7 @@ public class ScheduleController(IMediator mediator, IOptionsSnapshot<GeneralConf
|
||||
|
||||
if (result.Count == 0) NoContent();
|
||||
|
||||
return Ok(result.Select(s => new ScheduleResponse()
|
||||
return Ok(result.Select(s => new ScheduleResponse
|
||||
{
|
||||
DayOfWeek = s.DayOfWeek,
|
||||
PairNumber = s.PairNumber,
|
||||
@ -84,7 +83,6 @@ public class ScheduleController(IMediator mediator, IOptionsSnapshot<GeneralConf
|
||||
CampusId = s.CampusId,
|
||||
LinkToMeet = s.LinkToMeet
|
||||
}));
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -101,48 +99,19 @@ public class ScheduleController(IMediator mediator, IOptionsSnapshot<GeneralConf
|
||||
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
||||
[BadRequestResponse]
|
||||
[NotFoundResponse]
|
||||
public async Task<ActionResult<GroupScheduleResponse>> GetByGroup(int id,
|
||||
public async Task<ActionResult<List<ScheduleResponse>>> GetByGroup(int id,
|
||||
[FromQuery] bool? isEven = null,
|
||||
[FromQuery] int[]? disciplines = null,
|
||||
[FromQuery] int[]? professors = null,
|
||||
[FromQuery] int[]? lectureHalls = null)
|
||||
|
||||
[FromQuery] int[]? lectureHalls = null) =>
|
||||
await Get(new ScheduleRequest
|
||||
{
|
||||
var result = (await mediator.Send(new GetScheduleListQuery()
|
||||
{
|
||||
Disciplines = disciplines,
|
||||
IsEven = isEven,
|
||||
DisciplineIds = disciplines,
|
||||
GroupIds = [id],
|
||||
LectureHallIds = lectureHalls,
|
||||
ProfessorIds = professors
|
||||
})).Schedules;
|
||||
|
||||
if (result.Count == 0) NoContent();
|
||||
|
||||
return Ok(new GroupScheduleResponse()
|
||||
{
|
||||
Group = result[0].Group,
|
||||
GroupId = result[0].GroupId,
|
||||
Schedules = result.Select(g => new GroupScheduleInfo()
|
||||
{
|
||||
DayOfWeek = g.DayOfWeek,
|
||||
PairNumber = g.PairNumber,
|
||||
IsEven = g.IsEven,
|
||||
Discipline = g.Discipline,
|
||||
DisciplineId = g.DisciplineId,
|
||||
IsExcludedWeeks = g.IsExcludedWeeks,
|
||||
Weeks = g.Weeks,
|
||||
TypeOfOccupations = g.TypeOfOccupations,
|
||||
LectureHalls = g.LectureHalls,
|
||||
LectureHallsId = g.LectureHallsId,
|
||||
Professors = g.Professors,
|
||||
ProfessorsId = g.ProfessorsId,
|
||||
Campus = g.Campus,
|
||||
CampusId = g.CampusId,
|
||||
LinkToMeet = g.LinkToMeet
|
||||
})
|
||||
Groups = [id],
|
||||
Professors = professors,
|
||||
LectureHalls = lectureHalls
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves schedules for a specific professor based on various filters.
|
||||
@ -158,52 +127,19 @@ public class ScheduleController(IMediator mediator, IOptionsSnapshot<GeneralConf
|
||||
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
||||
[BadRequestResponse]
|
||||
[NotFoundResponse]
|
||||
public async Task<ActionResult<ProfessorScheduleResponse>> GetByProfessor(int id,
|
||||
public async Task<ActionResult<List<ScheduleResponse>>> GetByProfessor(int id,
|
||||
[FromQuery] bool? isEven = null,
|
||||
[FromQuery] int[]? disciplines = null,
|
||||
[FromQuery] int[]? groups = null,
|
||||
[FromQuery] int[]? lectureHalls = null)
|
||||
|
||||
[FromQuery] int[]? lectureHalls = null) =>
|
||||
await Get(new ScheduleRequest
|
||||
{
|
||||
var result = (await mediator.Send(new GetScheduleListQuery()
|
||||
{
|
||||
Disciplines = disciplines,
|
||||
IsEven = isEven,
|
||||
DisciplineIds = disciplines,
|
||||
GroupIds = groups,
|
||||
LectureHallIds = lectureHalls,
|
||||
ProfessorIds = [id]
|
||||
})).Schedules;
|
||||
|
||||
if (result.Count == 0) NoContent();
|
||||
|
||||
return Ok(new ProfessorScheduleResponse()
|
||||
{
|
||||
Professor = result.Select(professor =>
|
||||
professor.Professors.FirstOrDefault(x => !string.IsNullOrEmpty(x))
|
||||
).First()!,
|
||||
ProfessorId = result.Select(professor =>
|
||||
professor.ProfessorsId.FirstOrDefault(x => x != null)
|
||||
).First()!.Value,
|
||||
Schedules = result.Select(p => new ProfessorScheduleInfo()
|
||||
{
|
||||
DayOfWeek = p.DayOfWeek,
|
||||
PairNumber = p.PairNumber,
|
||||
IsEven = p.IsEven,
|
||||
Discipline = p.Discipline,
|
||||
DisciplineId = p.DisciplineId,
|
||||
IsExcludedWeeks = p.IsExcludedWeeks,
|
||||
Weeks = p.Weeks,
|
||||
TypeOfOccupations = p.TypeOfOccupations,
|
||||
Group = p.Group,
|
||||
GroupId = p.GroupId,
|
||||
LectureHalls = p.LectureHalls,
|
||||
LectureHallsId = p.LectureHallsId,
|
||||
Campus = p.Campus,
|
||||
CampusId = p.CampusId,
|
||||
LinkToMeet = p.LinkToMeet
|
||||
})
|
||||
Groups = groups,
|
||||
Professors = [id],
|
||||
LectureHalls = lectureHalls
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves schedules for a specific lecture hall based on various filters.
|
||||
@ -219,52 +155,19 @@ public class ScheduleController(IMediator mediator, IOptionsSnapshot<GeneralConf
|
||||
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
||||
[BadRequestResponse]
|
||||
[NotFoundResponse]
|
||||
public async Task<ActionResult<LectureHallScheduleResponse>> GetByLectureHall(int id,
|
||||
public async Task<ActionResult<List<ScheduleResponse>>> GetByLectureHall(int id,
|
||||
[FromQuery] bool? isEven = null,
|
||||
[FromQuery] int[]? disciplines = null,
|
||||
[FromQuery] int[]? groups = null,
|
||||
[FromQuery] int[]? professors = null)
|
||||
|
||||
[FromQuery] int[]? professors = null) =>
|
||||
await Get(new ScheduleRequest
|
||||
{
|
||||
var result = (await mediator.Send(new GetScheduleListQuery()
|
||||
{
|
||||
Disciplines = disciplines,
|
||||
IsEven = isEven,
|
||||
DisciplineIds = disciplines,
|
||||
GroupIds = groups,
|
||||
LectureHallIds = [id],
|
||||
ProfessorIds = professors
|
||||
})).Schedules;
|
||||
|
||||
if (result.Count == 0) NoContent();
|
||||
|
||||
return Ok(new LectureHallScheduleResponse()
|
||||
{
|
||||
LectureHalls = result.Select(lectureHall =>
|
||||
lectureHall.LectureHalls.FirstOrDefault(x => !string.IsNullOrEmpty(x))
|
||||
).First()!,
|
||||
LectureHallsId = result.Select(lectureHall =>
|
||||
lectureHall.LectureHallsId.FirstOrDefault(x => x != null)
|
||||
).First()!.Value,
|
||||
Schedules = result.Select(l => new LectureHallScheduleInfo()
|
||||
{
|
||||
DayOfWeek = l.DayOfWeek,
|
||||
PairNumber = l.PairNumber,
|
||||
IsEven = l.IsEven,
|
||||
Discipline = l.Discipline,
|
||||
DisciplineId = l.DisciplineId,
|
||||
IsExcludedWeeks = l.IsExcludedWeeks,
|
||||
Weeks = l.Weeks,
|
||||
TypeOfOccupations = l.TypeOfOccupations,
|
||||
Group = l.Group,
|
||||
GroupId = l.GroupId,
|
||||
Professors = l.Professors,
|
||||
ProfessorsId = l.ProfessorsId,
|
||||
Campus = l.Campus,
|
||||
CampusId = l.CampusId,
|
||||
LinkToMeet = l.LinkToMeet
|
||||
})
|
||||
Groups = groups,
|
||||
Professors = professors,
|
||||
LectureHalls = [id]
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves schedules for a specific discipline based on various filters.
|
||||
@ -280,44 +183,17 @@ public class ScheduleController(IMediator mediator, IOptionsSnapshot<GeneralConf
|
||||
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
||||
[BadRequestResponse]
|
||||
[NotFoundResponse]
|
||||
public async Task<ActionResult<DisciplineScheduleResponse>> GetByDiscipline(int id,
|
||||
public async Task<ActionResult<List<ScheduleResponse>>> GetByDiscipline(int id,
|
||||
[FromQuery] bool? isEven = null,
|
||||
[FromQuery] int[]? groups = null,
|
||||
[FromQuery] int[]? professors = null,
|
||||
[FromQuery] int[]? lectureHalls = null)
|
||||
|
||||
[FromQuery] int[]? lectureHalls = null) =>
|
||||
await Get(new ScheduleRequest
|
||||
{
|
||||
var result = (await mediator.Send(new GetScheduleListQuery()
|
||||
{
|
||||
Disciplines = [id],
|
||||
IsEven = isEven,
|
||||
DisciplineIds = [id],
|
||||
GroupIds = groups,
|
||||
LectureHallIds = lectureHalls,
|
||||
ProfessorIds = professors
|
||||
})).Schedules;
|
||||
|
||||
if (result.Count == 0) NoContent();
|
||||
|
||||
return Ok(new DisciplineScheduleResponse()
|
||||
{
|
||||
Discipline = result[0].Discipline,
|
||||
DisciplineId = result[0].DisciplineId,
|
||||
Schedules = result.Select(d => new DisciplineScheduleInfo()
|
||||
{
|
||||
DayOfWeek = d.DayOfWeek,
|
||||
PairNumber = d.PairNumber,
|
||||
IsEven = d.IsEven,
|
||||
TypeOfOccupation = d.TypeOfOccupations,
|
||||
Group = d.Group,
|
||||
GroupId = d.GroupId,
|
||||
LectureHalls = d.LectureHalls,
|
||||
LectureHallsId = d.LectureHallsId,
|
||||
Professors = d.Professors,
|
||||
ProfessorsId = d.ProfessorsId,
|
||||
Campus = d.Campus,
|
||||
CampusId = d.CampusId,
|
||||
LinkToMeet = d.LinkToMeet
|
||||
})
|
||||
Groups = groups,
|
||||
Professors = professors,
|
||||
LectureHalls = lectureHalls
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user