public ActionResult <CrashCourseDTO> GetById(long id)
        {
            var crashCourse = _repository.GetById(id);

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

            return(CrashCourseDTO.From(crashCourse));
        }
        public ActionResult <CrashCourseDTO> Edit(long id, [FromBody] EditCrashCourseDTO dto)
        {
            var crashCourse = _repository.GetById(id);

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

            crashCourse.Edit(id, dto.Title, dto.Description);

            return(CrashCourseDTO.From(_repository.Save(crashCourse)));
        }
        public ActionResult <CrashCourseDTO> Put(long id, [FromBody] CloseCrashCourseDTO dto)
        {
            var crashCourse = _repository.GetById(id);

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

            crashCourse.Close(_clockService, dto.Solution);

            _repository.Save(crashCourse);

            return(CrashCourseDTO.From(crashCourse));
        }
        public ActionResult <CrashCourseDTO> Edit(long id, [FromBody] JsonPatchDocument <EditCrashCourseDTO> crashCoursePatch)
        {
            var crashCourse = _repository.GetById(id);

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

            var dto = new EditCrashCourseDTO
            {
                Title       = crashCourse.Title,
                Description = crashCourse.Description
            };

            crashCoursePatch.ApplyTo(dto);

            crashCourse.Edit(id, dto.Title, dto.Description);


            return(CrashCourseDTO.From(_repository.Save(crashCourse)));
        }