2020-08-08 14:14:42 +02:00
package com.plannaplan.controllers ;
import java.util.List ;
2020-09-15 11:31:30 +02:00
import com.plannaplan.App ;
2020-08-08 14:14:42 +02:00
import com.plannaplan.entities.Course ;
2020-10-09 14:53:54 +02:00
import com.plannaplan.responses.mappers.CoursesResponseMappers ;
2020-10-13 16:19:40 +02:00
import com.plannaplan.responses.models.GetCoursesResponse ;
2020-10-13 17:07:04 +02:00
import com.plannaplan.responses.models.GetCoursesWithGroupsResponse ;
2020-08-08 14:14:42 +02:00
import com.plannaplan.services.CourseService ;
import org.springframework.beans.factory.annotation.Autowired ;
import org.springframework.http.HttpStatus ;
import org.springframework.http.ResponseEntity ;
import org.springframework.web.bind.annotation.CrossOrigin ;
import org.springframework.web.bind.annotation.RestController ;
2020-11-04 16:40:02 +01:00
import io.swagger.annotations.Api ;
2020-11-04 16:58:26 +01:00
import io.swagger.annotations.ApiOperation ;
2020-11-04 17:23:29 +01:00
import io.swagger.annotations.ApiParam ;
2020-11-04 16:40:02 +01:00
2020-08-08 14:14:42 +02:00
import org.springframework.web.bind.annotation.GetMapping ;
2020-09-15 11:31:30 +02:00
import org.springframework.web.bind.annotation.RequestMapping ;
2020-10-30 16:42:57 +01:00
import org.springframework.web.bind.annotation.RequestParam ;
import com.plannaplan.responses.models.abstracts.CoursesResponse ;
2020-08-08 14:14:42 +02:00
@RestController
@CrossOrigin
2020-09-15 11:31:30 +02:00
@RequestMapping ( " /api/ " + App . API_VERSION + " /courses " )
2020-11-04 16:40:02 +01:00
@Api ( tags = {
" Course " } , value = " Course " , description = " Endpoints to deal with courses. All courses can have classes, lectures or both. " )
2020-08-08 14:14:42 +02:00
public class CoursesController {
@Autowired
private CourseService courseService ;
2020-10-30 16:42:57 +01:00
@GetMapping ( " /all " )
2020-11-04 16:58:26 +01:00
@ApiOperation ( value = " Return all courses " )
2020-11-04 16:40:02 +01:00
public ResponseEntity < List < ? extends CoursesResponse > > getMethodName (
2020-11-04 17:23:29 +01:00
@RequestParam ( name = " groups " , defaultValue = " false " ) @ApiParam ( value = " Boolean if you want to have resopnse with associated groups or without " ) Boolean groups ) {
2020-08-24 11:36:15 +02:00
List < Course > courses = this . courseService . getAllCourses ( ) ;
2020-10-30 16:42:57 +01:00
if ( groups ) {
final List < GetCoursesWithGroupsResponse > response = CoursesResponseMappers
2020-11-04 16:40:02 +01:00
. mapToGetCoursesWithGroupsResponse ( courses ) ;
2020-10-30 16:42:57 +01:00
return new ResponseEntity < > ( response , HttpStatus . OK ) ;
}
final List < GetCoursesResponse > response = CoursesResponseMappers . mapToGetCoursesResponse ( courses ) ;
2020-10-13 17:07:04 +02:00
return new ResponseEntity < > ( response , HttpStatus . OK ) ;
2020-08-24 12:02:44 +02:00
}
2020-08-08 14:14:42 +02:00
}