/** * */ package com.gffny.ldrbrd.rest.ctrl.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import com.gffny.ldrbrd.common.exception.ServiceException; import com.gffny.ldrbrd.common.service.ICourseClubService; import com.gffny.ldrbrd.common.utils.CollectionUtils; import com.gffny.ldrbrd.rest.ctrl.AbstractController; import com.gffny.ldrbrd.rest.req.CourseRequest; import com.gffny.ldrbrd.rest.resp.CourseInformationResponse; import com.gffny.ldrbrd.web.model.JSONable; import com.gffny.ldrbrd.web.model.JsonResponse; /** * @author jdgaffney * */ @Controller @RequestMapping(value = "/course") // , method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE) public class GolfCourseController extends AbstractController { /** The Constant log. */ private static final Logger LOG = LoggerFactory .getLogger(GolfCourseController.class); /** * */ @Autowired private ICourseClubService courseClubService; /** * * @param courseId * @return */ @RequestMapping(value = "/coursefromid", consumes = { MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_FORM_URLENCODED_VALUE }) public ResponseEntity<JsonResponse<JSONable>> getCourseFromId( @RequestBody final CourseRequest courseId) { CourseInformationResponse response = new CourseInformationResponse(); if (null != courseId && null != courseId.getId()) { try { response.setCourse(courseClubService.getCourseById(courseId .getId())); if (response.getCourse() != null) { response.addCourseHoleMap(response.getCourse().getId(), courseClubService.getHoleListByCourseId(response .getCourse().getId(), response.getCourse() .isNineHole())); return returnSuccess(response, HttpStatus.OK); } else { LOG.error("course id {} does not return a valid course", courseId); return returnError( "course id does not return a valid course", HttpStatus.BAD_REQUEST); } } catch (ServiceException serEx) { return returnError(serEx.getMessage(), HttpStatus.BAD_REQUEST); } } LOG.error("error with request parameters"); return returnError("course id is not available", HttpStatus.BAD_REQUEST); } /** * * @param clubId * @return */ @RequestMapping(value = "/courseListFromClubId", consumes = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<JsonResponse<JSONable>> getCourseListFromClubId( @RequestBody final CourseRequest clubId) { CourseInformationResponse response = new CourseInformationResponse(); if (null != clubId && null != clubId.getId()) { try { response.setCourseList(CollectionUtils.asList(courseClubService .getCourseById(clubId.getId()))); return returnSuccess(response, HttpStatus.OK); } catch (ServiceException serEx) { return returnError(serEx.getMessage(), HttpStatus.BAD_REQUEST); } } return returnError("course id is not available", HttpStatus.BAD_REQUEST); } /** * * @param golferId * @return */ @RequestMapping(value = "/listFromFavourite", consumes = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<JsonResponse<JSONable>> getCourseListFromFavourite( @RequestBody final CourseRequest golferId) { try { CourseInformationResponse response = new CourseInformationResponse(); if (null != golferId && null != golferId.getId() && null != golferId.getGolferId()) { response.setCourseList(courseClubService .getFavouriteCourseList(golferId.getGolferId(), golferId.getFavouriteLimit())); return returnSuccess(response, HttpStatus.OK); } return returnError( "golfer id or favourite length is not available ", HttpStatus.BAD_REQUEST); } catch (ServiceException e) { return returnError(e.getMessage(), HttpStatus.BAD_REQUEST); } } /** * * @param location * @return */ @RequestMapping(value = "/listFromLocation", consumes = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<JsonResponse<JSONable>> getCourseListFromLocation( @RequestBody final CourseRequest location) { // TODO implement list from location return returnSuccess(HttpStatus.OK); } /** * * @param zipCode * @return */ @RequestMapping(value = "/listFromZip") public ResponseEntity<JsonResponse<JSONable>> getCourseListFromZip( @RequestBody final CourseRequest zipCode) { // TODO implement list from Zip return returnSuccess(HttpStatus.OK); } }