/* (non-Javadoc)
   * @see com.nebulent.vectura.services.resources.v1.AccountResource#createAccountRide(java.lang.String, nebulent.schema.software.vectura._1.Ride)
   */
  @Override
  public Ride createAccountRide(String accountId, Ride ride) {
    if (StringUtils.isBlank(accountId)) {
      throw new BadRequestException(
          new StatusResponse(false, "Account ID is a required field.", null));
    }

    ride.setAccountId(accountId);
    com.nebulent.vectura.data.model.mongodb.Ride mongoRide = DomainUtils.toRide(ride);
    mongoRide = getMongoRepository().getRideRepository().save(mongoRide);
    ride = DomainUtils.toRide(mongoRide);

    // Create pick-up location.
    Place place = new Place();
    place.setAddress(ride.getDropOffAddress());
    Place dropoffPlace = createAccountPlace(accountId, place);
    if (dropoffPlace != null) {
      ride.setDropOffAddress(dropoffPlace.getAddress());
    }

    // Create drop-off location.
    place = new Place();
    place.setAddress(ride.getPickupAddress());
    Place pickupPlace = createAccountPlace(accountId, place);
    if (pickupPlace != null) {
      ride.setPickupAddress(pickupPlace.getAddress());
    }

    return ride;
  }