public async Task <ApiSuccessResponse> CreateAsync(CourseCreateRequest request) { var course = new Course() { Code = request.Code, Name = request.Name }; await _unitOfWork.CourseRepository.CreateAsync(course); if (await _unitOfWork.AppSaveChangesAsync()) { return(new ApiSuccessResponse() { StatusCode = 200, Message = "The course has been successfully created." }); } throw new MyAppException("Something went wrong!"); }
public async Task <IActionResult> CreateCourse( [FromBody] CourseCreateRequest courseToCreate, [FromServices] IOptions <ApiBehaviorOptions> apiBehaviorOptions ) { // find the instructor that wants to create the course var instructor = await _context.Instructors.FindAsync(courseToCreate.InstructorId); if (instructor == null) { return(NotFound()); } // instructor can't create course of the same course name to their own courses. but 2 different instructors, can have same course name var duplicateCourse = await _context.Courses.AnyAsync(c => c.InstructorId == instructor.Id && c.CourseName.ToUpper() == courseToCreate.CourseName.ToUpper() && c.Term.ToUpper() == courseToCreate.Term.ToUpper() && c.Section.ToUpper() == courseToCreate.Section.ToUpper() ); if (duplicateCourse) { ModelState.AddModelError(nameof(courseToCreate.CourseName), $"Error! Duplicate Course Exists..."); return(apiBehaviorOptions.Value.InvalidModelStateResponseFactory(ControllerContext)); } // map request to entity var course = _mapper.Map <Course> (courseToCreate); // save the course _context.Courses.Add(course); await _context.SaveChangesAsync(); // return response at location var courseToReturn = _mapper.Map <CourseResponse> (course); return(CreatedAtAction(nameof(GetCourse), new { courseId = courseToReturn.Id }, courseToReturn)); }
public async Task <IActionResult> Create(CourseCreateRequest request) { return(Ok(await _courseService.CreateAsync(request))); }