示例#1
0
        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));
            }
        }