@@ -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