/// <summary> /// The student takes the next assignment. /// </summary> /// <param name="Id"></param> /// <param name="newAssignment"></param> /// <returns></returns> public async Task TakeAssignmentAsync(Guid Id, AddStudentAssignmentDTO newAssignment) { Func <IIncludable <Student>, IIncludable> include = i => i.Include(p => p.OldAssignments); var currentUser = await _studentRepository.GetAllAsync(include, i => i.AppUser.UserName == _loggedUser).ConfigureAwait(false); var currentStudent = currentUser.First(); currentStudent.ThrowIfNullForGuidObject(); var lastAssignment = currentStudent.OldAssignments.Where(i => i.FinishedDate >= DateTime.UtcNow); if (lastAssignment.Count() > 0) { throw new MilvaUserFriendlyException("UndeliveredHomework"); } var toBeTakeAssignment = await _assignmentRepository.GetByIdAsync(Id, i => i.Level == currentStudent.Level).ConfigureAwait(false); toBeTakeAssignment.ThrowIfNullForGuidObject(); var studentAssignment = new StudentAssigment { IsApproved = false, AssigmentId = toBeTakeAssignment.Id, StudentId = currentStudent.Id, AdditionalTime = newAssignment.AdditionalTime, AdditionalTimeDescription = newAssignment.AdditionalTimeDescription, Status = Entity.Enum.EducationStatus.InProgress }; await _studentAssignmentRepository.AddAsync(studentAssignment).ConfigureAwait(false); await _milvaMailSender.MilvaSendMailAsync(currentStudent.Mentor.AppUser.Email, Helpers.Enums.MailSubject.Information, currentStudent.Name + currentStudent.Surname + " isimli öğrencinin yeni bir ödev isteği var."); }
public async Task<IActionResult> TakeAssigment(Guid Id, [FromBody] AddStudentAssignmentDTO newAssignment) { return await _assigmentService.TakeAssignmentAsync(Id, newAssignment).ConfigureAwait(false).GetObjectResponseAsync<AddStudentAssignmentDTO>("Success").ConfigureAwait(false); }