Skip to content

Commit 5c90055

Browse files
committed
refactor: simplify group filter updating
1 parent a4ea57f commit 5c90055

1 file changed

Lines changed: 14 additions & 24 deletions

File tree

HwProj.CoursesService/HwProj.CoursesService.API/Services/CourseFilterService.cs

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -215,33 +215,23 @@ private CourseDTO ApplyFilterInternal(CourseDTO initialCourseDto, CourseDTO edit
215215

216216
public async Task UpdateGroupFilters(long courseId, long homeworkId, Group group)
217217
{
218-
var groupMates = (group?.GroupMates.ToArray() ?? Array.Empty<GroupMate>()).Select(gm => gm.StudentId).ToList();
218+
var filterIds = group != null
219+
? new[] { GlobalFilterId, group.Id.ToString() }
220+
: new[] { GlobalFilterId };
219221

220-
var existingFilters = (await _courseFilterRepository.GetAsync(new[] { GlobalFilterId, group.Id.ToString() }, courseId))
221-
.ToDictionary(x => x.Id, x => x.CourseFilter);
222-
223-
await UpdateOrCreateFilter(GlobalFilterId, courseId, homeworkId, new List<string>(), existingFilters);
224-
await UpdateOrCreateFilter(group.Id.ToString(), courseId, homeworkId, groupMates, existingFilters);
225-
}
222+
var filters = await _courseFilterRepository.GetAsync(filterIds, courseId);
226223

227-
private async Task UpdateOrCreateFilter(string id, long courseId, long homeworkId, List<string> studentIds,
228-
Dictionary<string, CourseFilter> existingFilters)
229-
{
230-
if (existingFilters.TryGetValue(id, out var courseFilter) && courseFilter.Filter is { } filter)
224+
foreach (var filterId in filterIds)
231225
{
232-
filter.StudentIds = studentIds;
233-
filter.HomeworkIds.Add(homeworkId);
234-
await UpdateAsync(courseFilter.Id, courseFilter.Filter);
235-
}
236-
else
237-
{
238-
var newFilter = new Filter
239-
{
240-
StudentIds = studentIds,
241-
HomeworkIds = new List<long> { homeworkId },
242-
MentorIds = new List<string>()
243-
};
244-
await AddCourseFilter(newFilter, courseId, id);
226+
var existingCourseFilter = filters.SingleOrDefault(f => f.Id == filterId)?.CourseFilter;
227+
var newFilter = existingCourseFilter?.Filter
228+
?? new Filter { StudentIds = new List<string>(), HomeworkIds = new List<long>(), MentorIds = new List<string>() };
229+
newFilter.HomeworkIds.Add(homeworkId);
230+
231+
if (existingCourseFilter != null)
232+
await UpdateAsync(existingCourseFilter.Id, newFilter);
233+
else
234+
await AddCourseFilter(newFilter, courseId, filterId);
245235
}
246236
}
247237
}

0 commit comments

Comments
 (0)