|
7 | 7 | using HwProj.APIGateway.API.Models.Solutions; |
8 | 8 | using HwProj.AuthService.Client; |
9 | 9 | using HwProj.CoursesService.Client; |
| 10 | +using HwProj.Models.AuthService.DTO; |
10 | 11 | using HwProj.Models.CoursesService; |
11 | 12 | using HwProj.Models.CoursesService.DTO; |
12 | 13 | using HwProj.Models.CoursesService.ViewModels; |
@@ -342,19 +343,31 @@ TaskIdType.Id when long.TryParse(model.TaskId, out var taskId) => tasks.FirstOrD |
342 | 343 |
|
343 | 344 | var students = |
344 | 345 | await AuthServiceClient.GetAccountsData(course.AcceptedStudents.Select(x => x.StudentId).ToArray()); |
345 | | - var student = model.StudentIdType switch |
| 346 | + var studentCandidates = model.StudentIdType switch |
346 | 347 | { |
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 | + _ => [] |
354 | 359 | }; |
355 | | - if (student == null) |
356 | | - return BadRequest($"Студент с {model.StudentIdType} = {model.StudentId} не записан на курс"); |
357 | 360 |
|
| 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(); |
358 | 371 | var solutions = await _solutionsClient.GetUserSolutions(task.Id, student.UserId); |
359 | 372 | if (solutions.OrderBy(x => x.PublicationDate).LastOrDefault()?.State == SolutionState.Posted) |
360 | 373 | return Ok( |
|
0 commit comments