public async Task <IActionResult> PostAttendanceSheet([FromBody] PostAttendanceSheetDTO body) { var qro = await _uow.Repository <Lesson>().Find(new DetailLessonSpecification(body.LessonId)); if (qro == null || qro.QueryResult == null) { return(StatusCode(StatusCodes.Status500InternalServerError)); } var lesson = qro.QueryResult.SingleOrDefault(); if (lesson == null) { return(NotFound()); } // Create AttendanceSheet var newAttendanceSheet = _mapper.Map <AttendanceSheet>(body); newAttendanceSheet.Lesson = lesson; _uow.Repository <AttendanceSheet>().Add(newAttendanceSheet); if (!_uow.Complete(1)) { return(StatusCode(StatusCodes.Status500InternalServerError)); } // Create AttendanceLog for enrolled students var newAttendanceLogs = new List <AttendanceLog>(); foreach (var enrolment in lesson.Enrolments) { var newLog = new AttendanceLog(enrolment.Student.Id, lesson.Id, newAttendanceSheet.Id); newLog.Student = enrolment.Student; newAttendanceLogs.Add(newLog); } newAttendanceSheet.AttendanceLogs = newAttendanceLogs; _uow.Repository <AttendanceSheet>().Update(newAttendanceSheet); _uow.Repository <AttendanceLog>().AddRange(newAttendanceLogs); if (!_uow.Complete(newAttendanceLogs.Count)) { return(StatusCode(StatusCodes.Status500InternalServerError)); } return(Ok(_mapper.Map <AttendanceSheetDTO>(newAttendanceSheet))); }
public async Task <IActionResult> PostAttendanceSheet([FromBody] PostAttendanceSheetDTO body) { try { var lesson = await _uow.LessonRepository.RetrieveById(body.LessonId); if (lesson == null) { return(BadRequest()); } var newAttendanceSheet = _mapper.Map <AttendanceSheet>(body); newAttendanceSheet = await _attendanceManager.CreateAttendanceSheet(newAttendanceSheet); _uow.Complete(false); return(CreatedAtRoute("GetAttendanceSheet", new { id = newAttendanceSheet.Id }, _mapper.Map <AttendanceSheetDTO>(newAttendanceSheet))); } catch (Exception e) { _logger.LogError($"Error in action `PostAttendanceSheet()`. {e.Message}"); return(StatusCode(StatusCodes.Status500InternalServerError)); } }