Example #1
0
        /// <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.");
        }
Example #2
0
 public async Task<IActionResult> TakeAssigment(Guid Id, [FromBody] AddStudentAssignmentDTO newAssignment)
 {
     return await _assigmentService.TakeAssignmentAsync(Id, newAssignment).ConfigureAwait(false).GetObjectResponseAsync<AddStudentAssignmentDTO>("Success").ConfigureAwait(false);
 }