Ejemplo n.º 1
0
 public static void AddSolution(string studentEmail, int hwId, string url)
 {
     using (var db = new HwProj_DBContext())
     {
         var relatedStudent = db.Student.First(s => s.Email == studentEmail);
         var relatedHw      = db.CurrentHomework.First(hw => hw.Id == hwId);
         var toAdd          = new HomeworkSolution()
         {
             StudentId  = studentEmail,
             HomeworkId = hwId,
             Url        = url,
             Homework   = relatedHw,
             Student    = relatedStudent
         };
         relatedStudent.HomeworkSolution.Add(toAdd);
         relatedHw.HomeworkSolution.Add(toAdd);
         db.SaveChanges();
     }
 }
        public async Task <HomeworkSolutionResponse> Handle(HomeworkSolutionCreateCommand request, CancellationToken cancellationToken)
        {
            var currentUserId = identityService.GetCurrentUserId();
            var homework      = await context.Homeworks.Include(x => x.Lesson)
                                .ThenInclude(x => x.ClassSchoolYearSubject)
                                .ThenInclude(x => x.ClassSchoolYearSubjectStudents)
                                .ThenInclude(x => x.Student)
                                .Include(x => x.Solutions)
                                .ThenInclude(x => x.Student)
                                .SingleAsync(x => x.Id == request.HomeworkId, cancellationToken);

            var student = homework.Lesson.ClassSchoolYearSubject.ClassSchoolYearSubjectStudents
                          .Where(x => x.Student.UserId == currentUserId)
                          .Select(x => x.Student)
                          .Single();

            if (homework.Solutions.Any(x => x.Student.UserId == currentUserId))
            {
                throw new InvalidOperationException(
                          "Már létrehozásra került egy megoldás az adott házi feladathoz ez által a diák által.");
            }

            if (homework.Deadline < DateTime.Now)
            {
                throw new InvalidOperationException("A határidő lejárt.");
            }

            var solution = new HomeworkSolution
            {
                Homework = homework,
                Student  = student
            };

            context.HomeworkSolutions.Add(solution);
            await context.SaveChangesAsync(cancellationToken);

            return(mapper.Map <HomeworkSolutionResponse>(solution));
        }