public async Task <IHttpActionResult> Update([FromBody, CustomizeValidator(RuleSet = "UpdateCourse")] CourseViewInput course)
        {
            if (course == null || !Enum.IsDefined(typeof(CourseLevel), course.Level))
            {
                return(BadRequest());
            }

            var courseInfo = _mapper.Map <CourseViewInput, CourseInfo>(course);
            var result     = await _courseService.UpdateAsync(courseInfo);

            return(result.IsError ? BadRequest(result.Message) : (IHttpActionResult)Ok(result.Data));
        }
        [Authorize] //comment when use swagger.
        public async Task <IHttpActionResult> Create([FromBody] CourseViewInput course)
        {
            var    user       = this.User as ClaimsPrincipal;
            string authorName = string.Empty;

            if (User.Identity.IsAuthenticated)
            {
                var sub = (User as ClaimsPrincipal).FindFirst("sub");
                authorName = sub.Value;
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var courseInfo = _mapper.Map <CourseViewInput, CourseInfo>(course);
            var result     = await _courseService.AddCourseAsync(courseInfo);

            return(result.IsError ? BadRequest(result.Message) : (IHttpActionResult)Ok(result.Data));
        }