@@ -113,10 +113,11 @@ public async Task<long> AddFromTemplateAsync(CourseTemplate courseTemplate, List
113113 using var transactionScope = new TransactionScope ( TransactionScopeAsyncFlowOption . Enabled ) ;
114114
115115 var course = courseTemplate . ToCourse ( ) ;
116- course . MentorIds = mentorId ;
117116 course . InviteCode = Guid . NewGuid ( ) . ToString ( ) ;
118117 var courseId = await _coursesRepository . AddAsync ( course ) ;
119118
119+ await _context . Mentors . AddAsync ( new CourseMentor ( ) { CourseId = courseId , UserId = mentorId } ) ;
120+
120121 var homeworks = courseTemplate . Homeworks . Select ( hwTemplate => hwTemplate . ToHomework ( courseId ) ) ;
121122 var homeworkIds = await _homeworksRepository . AddRangeAsync ( homeworks ) ;
122123
@@ -141,7 +142,6 @@ public async Task<long> AddFromTemplateAsync(CourseTemplate courseTemplate, List
141142 {
142143 CourseId = courseId ,
143144 CourseName = course . Name ,
144- MentorIds = course . MentorIds ,
145145 StudentId = student . StudentId
146146 } ) ;
147147 }
@@ -187,7 +187,7 @@ public async Task<bool> AddStudentAsync(long courseId, string studentId)
187187 {
188188 CourseId = courseId ,
189189 CourseName = course . Name ,
190- MentorIds = course . MentorIds ,
190+ MentorIds = course . Mentors . Select ( x => x . UserId ) . ToArray ( ) ,
191191 StudentId = studentId ,
192192 IsAccepted = false
193193 } ) ;
@@ -209,7 +209,6 @@ public async Task<bool> AcceptCourseMateAsync(long courseId, string studentId)
209209 {
210210 CourseId = courseId ,
211211 CourseName = course . Name ,
212- MentorIds = course . MentorIds ,
213212 StudentId = studentId
214213 } ) ;
215214
@@ -230,7 +229,6 @@ public async Task<bool> RejectCourseMateAsync(long courseId, string studentId)
230229 {
231230 CourseId = courseId ,
232231 CourseName = course . Name ,
233- MentorIds = course . MentorIds ,
234232 StudentId = studentId
235233 } ) ;
236234 return true ;
@@ -241,7 +239,7 @@ public async Task<CourseDTO[]> GetUserCoursesAsync(string userId, string role)
241239 var isMentor = role == Roles . LecturerRole || role == Roles . ExpertRole ;
242240
243241 var courses = isMentor
244- ? _coursesRepository . FindAll ( c => c . MentorIds . Contains ( userId ) )
242+ ? _coursesRepository . FindAll ( c => c . Mentors . Any ( m => m . UserId == userId ) )
245243 : _coursesRepository . FindAll ( c => c . CourseMates . Any ( cm => cm . IsAccepted && cm . StudentId == userId ) ) ;
246244
247245 var coursesWithValues = await courses
@@ -271,23 +269,16 @@ public async Task<bool> AcceptLecturerAsync(long courseId, string lecturerEmail,
271269 {
272270 var course = await _coursesRepository . GetAsync ( courseId ) ;
273271 if ( course == null ) return false ;
274- if ( ! course . MentorIds . Contains ( lecturerId ) )
272+ if ( _context . Mentors . All ( x => x . UserId != lecturerId ) )
275273 {
276- var newMentors = course . MentorIds + "/" + lecturerId ;
277- await _coursesRepository . UpdateAsync ( courseId , с => new Course
278- {
279- MentorIds = newMentors ,
280- } ) ;
281-
274+ _context . Mentors . Add ( new CourseMentor ( ) { CourseId = courseId , UserId = lecturerId } ) ;
282275 _eventBus . Publish ( new LecturerInvitedToCourseEvent
283276 {
284277 CourseId = courseId ,
285278 CourseName = course . Name ,
286279 MentorId = lecturerId ,
287280 MentorEmail = lecturerEmail
288281 } ) ;
289- //TODO: remove
290- await RejectCourseMateAsync ( courseId , lecturerId ) ;
291282 }
292283
293284 return true ;
@@ -296,7 +287,7 @@ public async Task<bool> AcceptLecturerAsync(long courseId, string lecturerEmail,
296287 public async Task < string [ ] > GetCourseLecturers ( long courseId )
297288 {
298289 var course = await _coursesRepository . GetAsync ( courseId ) ;
299- return course . MentorIds . Split ( '/' ) ;
290+ return course . Mentors . Select ( x => x . UserId ) . ToArray ( ) ;
300291 }
301292
302293 public async Task < bool > HasStudent ( long courseId , string studentId )
0 commit comments