| | 1 | | namespace Syki.Back.Features.Teacher.CreateClassActivity; |
| | 2 | |
|
| 170 | 3 | | public class CreateClassActivityService(SykiDbContext ctx) : ITeacherService |
| | 4 | | { |
| | 5 | | public async Task<OneOf<CreateClassActivityOut, SykiError>> Create(Guid teacherId, Guid classId, CreateClassActivity |
| | 6 | | { |
| 170 | 7 | | var @class = await ctx.Classes |
| 170 | 8 | | .Include(x => x.Activities) |
| 170 | 9 | | .FirstOrDefaultAsync(x => x.Id == classId && x.TeacherId == teacherId); |
| 172 | 10 | | if (@class == null) return new ClassNotFound(); |
| | 11 | |
|
| 168 | 12 | | var students = await ctx.ClassesStudents.Where(x => x.ClassId == classId) |
| 168 | 13 | | .Select(x => x.SykiStudentId).ToListAsync(); |
| | 14 | |
|
| 168 | 15 | | var activity = ClassActivity.New( |
| 168 | 16 | | classId, |
| 168 | 17 | | data.Note, |
| 168 | 18 | | data.Title, |
| 168 | 19 | | data.Description, |
| 168 | 20 | | data.Type, |
| 168 | 21 | | data.Weight, |
| 168 | 22 | | data.DueDate, |
| 168 | 23 | | data.DueHour, |
| 168 | 24 | | students |
| 168 | 25 | | ); |
| 172 | 26 | | if (activity.IsError) return activity.Error; |
| | 27 | |
|
| 164 | 28 | | var result = @class.AddActivity(activity.Success); |
| 184 | 29 | | if (result.IsError) return result.Error; |
| | 30 | |
|
| 144 | 31 | | await ctx.SaveChangesAsync(); |
| | 32 | |
|
| 144 | 33 | | return activity.Success.ToCreateOut(); |
| 170 | 34 | | } |
| | 35 | | } |