/**
   * A controller method for creating a new event, given the saveEventRequest details. In case of
   * {@code ServiceException}, return the error.
   *
   * @param saveEventRequest The details of the event - given in JSON.
   * @return {@code BaseResponse} stating the result of the process.
   */
  @RequestMapping(method = RequestMethod.POST)
  public BaseResponse createEvent(@RequestBody SaveEventRequest saveEventRequest) {

    try {

      mLogger.info("Create Event Request {}", saveEventRequest);

      EventRO createdEvent =
          mEventService.createEvent(saveEventRequest).createRepresentationalObject();

      return new BaseResponse<>(createdEvent);

    } catch (ServiceException e) {
      mLogger.error(e.getMessage());
      return new BaseResponse<>(e.getMessage(), BaseResponse.INTERNAL_ERROR);
    }
  }