Skip to content

Commit 625164f

Browse files
committed
Solutions: учлушение поиска студентов для автоматизированных решений
1 parent dbbd126 commit 625164f

File tree

1 file changed

+23
-10
lines changed

1 file changed

+23
-10
lines changed

HwProj.APIGateway/HwProj.APIGateway.API/Controllers/SolutionsController.cs

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using HwProj.APIGateway.API.Models.Solutions;
88
using HwProj.AuthService.Client;
99
using HwProj.CoursesService.Client;
10+
using HwProj.Models.AuthService.DTO;
1011
using HwProj.Models.CoursesService;
1112
using HwProj.Models.CoursesService.DTO;
1213
using HwProj.Models.CoursesService.ViewModels;
@@ -342,19 +343,31 @@ TaskIdType.Id when long.TryParse(model.TaskId, out var taskId) => tasks.FirstOrD
342343

343344
var students =
344345
await AuthServiceClient.GetAccountsData(course.AcceptedStudents.Select(x => x.StudentId).ToArray());
345-
var student = model.StudentIdType switch
346+
var studentCandidates = model.StudentIdType switch
346347
{
347-
StudentIdType.Id => students.FirstOrDefault(x => x.UserId == model.StudentId),
348-
StudentIdType.FullName => students.FirstOrDefault(x =>
349-
model.StudentId.Contains(x.Name) &&
350-
model.StudentId.Contains(x.Surname) &&
351-
(string.IsNullOrEmpty(x.MiddleName) || model.StudentId.Contains(x.MiddleName))),
352-
StudentIdType.GitHub => students.FirstOrDefault(x => x.GithubId == model.TaskId),
353-
_ => null
348+
StudentIdType.Id => students.FirstOrDefault(x => x.UserId == model.StudentId) is { } s
349+
? [s]
350+
: [],
351+
StudentIdType.FullName => students
352+
.Where(x =>
353+
model.StudentId.Contains(x.Name) &&
354+
model.StudentId.Contains(x.Surname) &&
355+
(string.IsNullOrEmpty(x.MiddleName) || model.StudentId.Contains(x.MiddleName)))
356+
.ToArray(),
357+
StudentIdType.GitHub => students.Where(x => x.GithubId == model.TaskId).ToArray(),
358+
_ => []
354359
};
355-
if (student == null)
356-
return BadRequest($"Студент с {model.StudentIdType} = {model.StudentId} не записан на курс");
357360

361+
switch (studentCandidates.Length)
362+
{
363+
case 0:
364+
return BadRequest($"Студент с {model.StudentIdType} = {model.StudentId} не записан на курс");
365+
case > 1:
366+
return BadRequest(
367+
$"Найдено несколько студентов с {model.StudentIdType} = {model.StudentId}. Измените StudentIdType или StudentId, чтобы уточнить запрос");
368+
}
369+
370+
var student = studentCandidates.First();
358371
var solutions = await _solutionsClient.GetUserSolutions(task.Id, student.UserId);
359372
if (solutions.OrderBy(x => x.PublicationDate).LastOrDefault()?.State == SolutionState.Posted)
360373
return Ok(

0 commit comments

Comments
 (0)