Ejemplo n.º 1
0
        public IActionResult UpdateLesson(int courseId, int id, [FromBody] UpdateLessonDto lesson)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var course = _courseRepository.Get(courseId, true);

            if (course == null)
            {
                return(NotFound());
            }
            var existedLesson = course.Lessons.FirstOrDefault(c => c.Id == id);

            if (existedLesson == null)
            {
                return(NotFound());
            }

            _mapper.Map(lesson, existedLesson);

            _courseRepository.Save();

            return(NoContent());
        }
        public async Task <ActionResult> PutLesson(long id, UpdateLessonDto lessonDto)
        {
            var updatedLesson = await _lessonService.UpdateLessonAsync(id, lessonDto);

            if (updatedLesson != null)
            {
                return(Ok(updatedLesson));
            }

            return(StatusCode(409, "Cannot update."));
        }
Ejemplo n.º 3
0
        public async Task <ActionResult> PutLesson(long id, UpdateLessonDto lessonDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            lessonDto.Id = id;

            var updatedLesson = await _lessonService.UpdateLessonAsync(lessonDto);

            if (updatedLesson != null)
            {
                return(Ok(updatedLesson));
            }

            return(StatusCode(409, "Cannot update."));
        }
        public async Task <LessonDto> UpdateLessonAsync(long id, UpdateLessonDto lessonModel)
        {
            try
            {
                var foundLesson = await _unitOfWork.LessonRepository.GetByIdAsync(id);

                if (foundLesson == null)
                {
                    return(null);
                }

                if (!String.IsNullOrEmpty(lessonModel.ThemeName))
                {
                    var foundTheme = await _unitOfWork.ThemeRepository.GetThemeByNameAsync(lessonModel.ThemeName);

                    if (foundTheme != null)
                    {
                        foundLesson.Theme = foundTheme;
                    }
                    else
                    {
                        var theme = new Theme
                        {
                            Name = lessonModel.ThemeName
                        };

                        _unitOfWork.ThemeRepository.Add(theme);
                        foundLesson.Theme = theme;
                    }
                }

                if (lessonModel.LessonDate != default(DateTime))
                {
                    foundLesson.LessonDate = lessonModel.LessonDate;
                }

                if (lessonModel.LessonVisits != null)
                {
                    await _unitOfWork.VisitRepository.DeleteWhereLessonIdAsync(foundLesson.Id);

                    for (int i = 0; i < lessonModel.LessonVisits.Count; i++)
                    {
                        var visit = new Visit
                        {
                            Lesson      = foundLesson,
                            StudentId   = lessonModel.LessonVisits[i].StudentId,
                            Comment     = lessonModel.LessonVisits[i].Comment,
                            Presence    = lessonModel.LessonVisits[i].Presence,
                            StudentMark = lessonModel.LessonVisits[i].StudentMark
                        };

                        _unitOfWork.VisitRepository.Add(visit);
                    }
                }
                await _unitOfWork.CommitAsync();

                return(_mapper.Map <LessonDto>(foundLesson));
            }
            catch
            {
                _unitOfWork.Rollback();

                return(null);
            }
        }
        public async Task UpdateLessonAsync()
        {
            //Arrange
            Theme theme = new Theme
            {
                Name = "ExampleName",
                Id   = 5
            };

            Mentor mentor = new Mentor
            {
                Id = 2
            };

            StudentGroup studentGroup = new StudentGroup
            {
                Id = 3
            };

            List <VisitDto> visitsDto = new List <VisitDto>()
            {
            };

            var foundLesson = new Lesson()
            {
                Id             = 7,
                MentorId       = 2,
                StudentGroupId = 3,
                ThemeId        = 5,
                Mentor         = mentor,
                StudentGroup   = studentGroup,
                Theme          = theme,
                Visits         = { }
            };

            var updateLessonDto = new UpdateLessonDto
            {
                ThemeName    = null,
                LessonDate   = DateTime.Parse("2020-11-18T15:30:00.384Z"),
                LessonVisits = null
            };

            var foundLessonDto = new LessonDto()
            {
                Id             = 7,
                ThemeName      = "ExampleName",
                MentorId       = 2,
                StudentGroupId = 3,
                LessonDate     = DateTime.Parse("2020-11-18T15:00:00.384Z"),
                LessonVisits   = null
            };

            var updatedLesson = new LessonDto()
            {
                Id             = 7,
                ThemeName      = "ExampleName",
                MentorId       = 2,
                StudentGroupId = 3,
                LessonDate     = DateTime.Parse("2020-11-18T15:30:00.384Z"),
                LessonVisits   = visitsDto
            };

            _unitOfWorkMock.Setup(x => x.LessonRepository.GetByIdAsync(7))
            .ReturnsAsync(foundLesson);

            var lessonService = new LessonService(
                _unitOfWorkMock.Object,
                _mapper
                );

            //Act
            var result = await lessonService.UpdateLessonAsync(7, updateLessonDto);

            //Assert
            Assert.NotNull(result);

            Assert.Equal(updatedLesson.Id, result.Id);
            Assert.Equal(updatedLesson.LessonDate, result.LessonDate);
            Assert.Equal(updatedLesson.LessonVisits, result.LessonVisits);
            Assert.Equal(updatedLesson.MentorId, result.MentorId);
            Assert.Equal(updatedLesson.StudentGroupId, result.StudentGroupId);
            Assert.Equal(updatedLesson.ThemeName, result.ThemeName);
        }