# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.MyBusinessLodging.V1.Model.Activities do
  @moduledoc """
  Amenities and features related to leisure and play.

  ## Attributes

  *   `bicycleRental` (*type:* `boolean()`, *default:* `nil`) - Bicycle rental. The hotel owns bicycles that it permits guests to borrow and use. Can be free or for a fee.
  *   `freeBicycleRentalException` (*type:* `String.t`, *default:* `nil`) - Free bicycle rental exception.
  *   `tennis` (*type:* `boolean()`, *default:* `nil`) - Tennis. The hotel has the requisite court(s) on site or has an affiliation with a nearby facility for the purpose of providing guests with the opportunity to play a two-sided court-based game in which players use a stringed racquet to hit a ball across a net to the side of the opposing player. The court can be indoors or outdoors. Instructors, racquets and balls may or may not be provided.
  *   `privateBeach` (*type:* `boolean()`, *default:* `nil`) - Private beach. The beach which is in close proximity to the hotel is open only to guests.
  *   `gameRoom` (*type:* `boolean()`, *default:* `nil`) - Game room. There is a room at the hotel containing electronic machines for play such as pinball, prize machines, driving simulators, and other items commonly found at a family fun center or arcade. May also include non-electronic games like pool, foosball, darts, and more. May or may not be designed for children. Also known as arcade, fun room, or family fun center.
  *   `golf` (*type:* `boolean()`, *default:* `nil`) - Golf. There is a golf course on hotel grounds or there is a nearby, independently run golf course that allows use by hotel guests. Can be free or for a fee.
  *   `bicycleRentalException` (*type:* `String.t`, *default:* `nil`) - Bicycle rental exception.
  *   `privateBeachException` (*type:* `String.t`, *default:* `nil`) - Private beach exception.
  *   `beachAccessException` (*type:* `String.t`, *default:* `nil`) - Beach access exception.
  *   `freeBicycleRental` (*type:* `boolean()`, *default:* `nil`) - Free bicycle rental. The hotel owns bicycles that it permits guests to borrow and use for free.
  *   `nightclubException` (*type:* `String.t`, *default:* `nil`) - Nightclub exception.
  *   `waterSkiingException` (*type:* `String.t`, *default:* `nil`) - Water skiing exception.
  *   `golfException` (*type:* `String.t`, *default:* `nil`) - Golf exception.
  *   `horsebackRidingException` (*type:* `String.t`, *default:* `nil`) - Horseback riding exception.
  *   `casino` (*type:* `boolean()`, *default:* `nil`) - Casino. A space designated for gambling and gaming featuring croupier-run table and card games, as well as electronic slot machines. May be on hotel premises or located nearby.
  *   `watercraftRental` (*type:* `boolean()`, *default:* `nil`) - Watercraft rental. The hotel owns water vessels that it permits guests to borrow and use. Can be free or for a fee. Watercraft may include boats, pedal boats, rowboats, sailboats, powerboats, canoes, kayaks, or personal watercraft (such as a Jet Ski).
  *   `nightclub` (*type:* `boolean()`, *default:* `nil`) - Nightclub. There is a room at the hotel with a bar, a dance floor, and seating where designated staffers play dance music. There may also be a designated area for the performance of live music, singing and comedy acts.
  *   `boutiqueStoresException` (*type:* `String.t`, *default:* `nil`) - Boutique stores exception.
  *   `beachAccess` (*type:* `boolean()`, *default:* `nil`) - Beach access. The hotel property is in close proximity to a beach and offers a way to get to that beach. This can include a route to the beach such as stairs down if hotel is on a bluff, or a short trail. Not the same as beachfront (with beach access, the hotel's proximity is close to but not right on the beach).
  *   `waterSkiing` (*type:* `boolean()`, *default:* `nil`) - Water skiing. The provision of giving guests the opportunity to be pulled across naturally occurring water while standing on skis and holding a tow rope attached to a motorboat. Can occur on hotel premises or at a nearby waterfront. Most often performed in a lake or ocean.
  *   `scubaException` (*type:* `String.t`, *default:* `nil`) - Scuba exception.
  *   `tennisException` (*type:* `String.t`, *default:* `nil`) - Tennis exception.
  *   `boutiqueStores` (*type:* `boolean()`, *default:* `nil`) - Boutique stores. There are stores selling clothing, jewelry, art and decor either on hotel premises or very close by. Does not refer to the hotel gift shop or convenience store.
  *   `freeWatercraftRental` (*type:* `boolean()`, *default:* `nil`) - Free watercraft rental. The hotel owns watercraft that it permits guests to borrow and use for free.
  *   `snorkelingException` (*type:* `String.t`, *default:* `nil`) - Snorkeling exception.
  *   `watercraftRentalException` (*type:* `String.t`, *default:* `nil`) - Watercraft rental exception.
  *   `beachFront` (*type:* `boolean()`, *default:* `nil`) - Breach front. The hotel property is physically located on the beach alongside an ocean, sea, gulf, or bay. It is not on a lake, river, stream, or pond. The hotel is not separated from the beach by a public road allowing vehicular, pedestrian, or bicycle traffic.
  *   `beachFrontException` (*type:* `String.t`, *default:* `nil`) - Beach front exception.
  *   `snorkeling` (*type:* `boolean()`, *default:* `nil`) - Snorkeling. The provision for guests to participate in a recreational water activity in which swimmers wear a diving mask, a simple, shaped breathing tube and flippers/swim fins for the purpose of exploring below the surface of an ocean, gulf or lake. Does not usually require user certification or professional supervision. Equipment may or may not be available for rent or purchase. Not scuba diving.
  *   `casinoException` (*type:* `String.t`, *default:* `nil`) - Casino exception.
  *   `scuba` (*type:* `boolean()`, *default:* `nil`) - Scuba. The provision for guests to dive under naturally occurring water fitted with a self-contained underwater breathing apparatus (SCUBA) for the purpose of exploring underwater life. Apparatus consists of a tank providing oxygen to the diver through a mask. Requires certification of the diver and supervision. The hotel may have the activity at its own waterfront or have an affiliation with a nearby facility. Required equipment is most often supplied to guests. Can be free or for a fee. Not snorkeling. Not done in a swimming pool.
  *   `gameRoomException` (*type:* `String.t`, *default:* `nil`) - Game room exception.
  *   `horsebackRiding` (*type:* `boolean()`, *default:* `nil`) - Horseback riding. The hotel has a horse barn onsite or an affiliation with a nearby barn to allow for guests to sit astride a horse and direct it to walk, trot, cantor, gallop and/or jump. Can be in a riding ring, on designated paths, or in the wilderness. May or may not involve instruction.
  *   `freeWatercraftRentalException` (*type:* `String.t`, *default:* `nil`) - Free Watercraft rental exception.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :bicycleRental => boolean() | nil,
          :freeBicycleRentalException => String.t() | nil,
          :tennis => boolean() | nil,
          :privateBeach => boolean() | nil,
          :gameRoom => boolean() | nil,
          :golf => boolean() | nil,
          :bicycleRentalException => String.t() | nil,
          :privateBeachException => String.t() | nil,
          :beachAccessException => String.t() | nil,
          :freeBicycleRental => boolean() | nil,
          :nightclubException => String.t() | nil,
          :waterSkiingException => String.t() | nil,
          :golfException => String.t() | nil,
          :horsebackRidingException => String.t() | nil,
          :casino => boolean() | nil,
          :watercraftRental => boolean() | nil,
          :nightclub => boolean() | nil,
          :boutiqueStoresException => String.t() | nil,
          :beachAccess => boolean() | nil,
          :waterSkiing => boolean() | nil,
          :scubaException => String.t() | nil,
          :tennisException => String.t() | nil,
          :boutiqueStores => boolean() | nil,
          :freeWatercraftRental => boolean() | nil,
          :snorkelingException => String.t() | nil,
          :watercraftRentalException => String.t() | nil,
          :beachFront => boolean() | nil,
          :beachFrontException => String.t() | nil,
          :snorkeling => boolean() | nil,
          :casinoException => String.t() | nil,
          :scuba => boolean() | nil,
          :gameRoomException => String.t() | nil,
          :horsebackRiding => boolean() | nil,
          :freeWatercraftRentalException => String.t() | nil
        }

  field(:bicycleRental)
  field(:freeBicycleRentalException)
  field(:tennis)
  field(:privateBeach)
  field(:gameRoom)
  field(:golf)
  field(:bicycleRentalException)
  field(:privateBeachException)
  field(:beachAccessException)
  field(:freeBicycleRental)
  field(:nightclubException)
  field(:waterSkiingException)
  field(:golfException)
  field(:horsebackRidingException)
  field(:casino)
  field(:watercraftRental)
  field(:nightclub)
  field(:boutiqueStoresException)
  field(:beachAccess)
  field(:waterSkiing)
  field(:scubaException)
  field(:tennisException)
  field(:boutiqueStores)
  field(:freeWatercraftRental)
  field(:snorkelingException)
  field(:watercraftRentalException)
  field(:beachFront)
  field(:beachFrontException)
  field(:snorkeling)
  field(:casinoException)
  field(:scuba)
  field(:gameRoomException)
  field(:horsebackRiding)
  field(:freeWatercraftRentalException)
end

defimpl Poison.Decoder, for: GoogleApi.MyBusinessLodging.V1.Model.Activities do
  def decode(value, options) do
    GoogleApi.MyBusinessLodging.V1.Model.Activities.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.MyBusinessLodging.V1.Model.Activities do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
