# 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.Lodging do
  @moduledoc """
  Lodging of a location that provides accomodations.

  ## Attributes

  *   `accessibility` (*type:* `GoogleApi.MyBusinessLodging.V1.Model.Accessibility.t`, *default:* `nil`) - Physical adaptations made to the property in consideration of varying levels of human physical ability.
  *   `activities` (*type:* `GoogleApi.MyBusinessLodging.V1.Model.Activities.t`, *default:* `nil`) - Amenities and features related to leisure and play.
  *   `allUnits` (*type:* `GoogleApi.MyBusinessLodging.V1.Model.GuestUnitFeatures.t`, *default:* `nil`) - Output only. All units on the property have at least these attributes.
  *   `business` (*type:* `GoogleApi.MyBusinessLodging.V1.Model.Business.t`, *default:* `nil`) - Features of the property of specific interest to the business traveler.
  *   `commonLivingArea` (*type:* `GoogleApi.MyBusinessLodging.V1.Model.LivingArea.t`, *default:* `nil`) - Features of the shared living areas available in this Lodging.
  *   `connectivity` (*type:* `GoogleApi.MyBusinessLodging.V1.Model.Connectivity.t`, *default:* `nil`) - The ways in which the property provides guests with the ability to access the internet.
  *   `families` (*type:* `GoogleApi.MyBusinessLodging.V1.Model.Families.t`, *default:* `nil`) - Services and amenities for families and young guests.
  *   `foodAndDrink` (*type:* `GoogleApi.MyBusinessLodging.V1.Model.FoodAndDrink.t`, *default:* `nil`) - Meals, snacks, and beverages available at the property.
  *   `guestUnits` (*type:* `list(GoogleApi.MyBusinessLodging.V1.Model.GuestUnitType.t)`, *default:* `nil`) - Individual GuestUnitTypes that are available in this Lodging.
  *   `healthAndSafety` (*type:* `GoogleApi.MyBusinessLodging.V1.Model.HealthAndSafety.t`, *default:* `nil`) - Health and safety measures implemented by the hotel during COVID-19.
  *   `housekeeping` (*type:* `GoogleApi.MyBusinessLodging.V1.Model.Housekeeping.t`, *default:* `nil`) - Conveniences provided in guest units to facilitate an easier, more comfortable stay.
  *   `metadata` (*type:* `GoogleApi.MyBusinessLodging.V1.Model.LodgingMetadata.t`, *default:* `nil`) - Required. Metadata for the lodging.
  *   `name` (*type:* `String.t`, *default:* `nil`) - Required. Google identifier for this location in the form: `locations/{location_id}/lodging`
  *   `parking` (*type:* `GoogleApi.MyBusinessLodging.V1.Model.Parking.t`, *default:* `nil`) - Parking options at the property.
  *   `pets` (*type:* `GoogleApi.MyBusinessLodging.V1.Model.Pets.t`, *default:* `nil`) - Policies regarding guest-owned animals.
  *   `policies` (*type:* `GoogleApi.MyBusinessLodging.V1.Model.Policies.t`, *default:* `nil`) - Property rules that impact guests.
  *   `pools` (*type:* `GoogleApi.MyBusinessLodging.V1.Model.Pools.t`, *default:* `nil`) - Swimming pool or recreational water facilities available at the hotel.
  *   `property` (*type:* `GoogleApi.MyBusinessLodging.V1.Model.Property.t`, *default:* `nil`) - General factual information about the property's physical structure and important dates.
  *   `services` (*type:* `GoogleApi.MyBusinessLodging.V1.Model.Services.t`, *default:* `nil`) - Conveniences or help provided by the property to facilitate an easier, more comfortable stay.
  *   `someUnits` (*type:* `GoogleApi.MyBusinessLodging.V1.Model.GuestUnitFeatures.t`, *default:* `nil`) - Output only. Some units on the property have as much as these attributes.
  *   `sustainability` (*type:* `GoogleApi.MyBusinessLodging.V1.Model.Sustainability.t`, *default:* `nil`) - Sustainability practices implemented at the hotel.
  *   `transportation` (*type:* `GoogleApi.MyBusinessLodging.V1.Model.Transportation.t`, *default:* `nil`) - Vehicles or vehicular services facilitated or owned by the property.
  *   `wellness` (*type:* `GoogleApi.MyBusinessLodging.V1.Model.Wellness.t`, *default:* `nil`) - Guest facilities at the property to promote or maintain health, beauty, and fitness.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :accessibility => GoogleApi.MyBusinessLodging.V1.Model.Accessibility.t() | nil,
          :activities => GoogleApi.MyBusinessLodging.V1.Model.Activities.t() | nil,
          :allUnits => GoogleApi.MyBusinessLodging.V1.Model.GuestUnitFeatures.t() | nil,
          :business => GoogleApi.MyBusinessLodging.V1.Model.Business.t() | nil,
          :commonLivingArea => GoogleApi.MyBusinessLodging.V1.Model.LivingArea.t() | nil,
          :connectivity => GoogleApi.MyBusinessLodging.V1.Model.Connectivity.t() | nil,
          :families => GoogleApi.MyBusinessLodging.V1.Model.Families.t() | nil,
          :foodAndDrink => GoogleApi.MyBusinessLodging.V1.Model.FoodAndDrink.t() | nil,
          :guestUnits => list(GoogleApi.MyBusinessLodging.V1.Model.GuestUnitType.t()) | nil,
          :healthAndSafety => GoogleApi.MyBusinessLodging.V1.Model.HealthAndSafety.t() | nil,
          :housekeeping => GoogleApi.MyBusinessLodging.V1.Model.Housekeeping.t() | nil,
          :metadata => GoogleApi.MyBusinessLodging.V1.Model.LodgingMetadata.t() | nil,
          :name => String.t() | nil,
          :parking => GoogleApi.MyBusinessLodging.V1.Model.Parking.t() | nil,
          :pets => GoogleApi.MyBusinessLodging.V1.Model.Pets.t() | nil,
          :policies => GoogleApi.MyBusinessLodging.V1.Model.Policies.t() | nil,
          :pools => GoogleApi.MyBusinessLodging.V1.Model.Pools.t() | nil,
          :property => GoogleApi.MyBusinessLodging.V1.Model.Property.t() | nil,
          :services => GoogleApi.MyBusinessLodging.V1.Model.Services.t() | nil,
          :someUnits => GoogleApi.MyBusinessLodging.V1.Model.GuestUnitFeatures.t() | nil,
          :sustainability => GoogleApi.MyBusinessLodging.V1.Model.Sustainability.t() | nil,
          :transportation => GoogleApi.MyBusinessLodging.V1.Model.Transportation.t() | nil,
          :wellness => GoogleApi.MyBusinessLodging.V1.Model.Wellness.t() | nil
        }

  field(:accessibility, as: GoogleApi.MyBusinessLodging.V1.Model.Accessibility)
  field(:activities, as: GoogleApi.MyBusinessLodging.V1.Model.Activities)
  field(:allUnits, as: GoogleApi.MyBusinessLodging.V1.Model.GuestUnitFeatures)
  field(:business, as: GoogleApi.MyBusinessLodging.V1.Model.Business)
  field(:commonLivingArea, as: GoogleApi.MyBusinessLodging.V1.Model.LivingArea)
  field(:connectivity, as: GoogleApi.MyBusinessLodging.V1.Model.Connectivity)
  field(:families, as: GoogleApi.MyBusinessLodging.V1.Model.Families)
  field(:foodAndDrink, as: GoogleApi.MyBusinessLodging.V1.Model.FoodAndDrink)
  field(:guestUnits, as: GoogleApi.MyBusinessLodging.V1.Model.GuestUnitType, type: :list)
  field(:healthAndSafety, as: GoogleApi.MyBusinessLodging.V1.Model.HealthAndSafety)
  field(:housekeeping, as: GoogleApi.MyBusinessLodging.V1.Model.Housekeeping)
  field(:metadata, as: GoogleApi.MyBusinessLodging.V1.Model.LodgingMetadata)
  field(:name)
  field(:parking, as: GoogleApi.MyBusinessLodging.V1.Model.Parking)
  field(:pets, as: GoogleApi.MyBusinessLodging.V1.Model.Pets)
  field(:policies, as: GoogleApi.MyBusinessLodging.V1.Model.Policies)
  field(:pools, as: GoogleApi.MyBusinessLodging.V1.Model.Pools)
  field(:property, as: GoogleApi.MyBusinessLodging.V1.Model.Property)
  field(:services, as: GoogleApi.MyBusinessLodging.V1.Model.Services)
  field(:someUnits, as: GoogleApi.MyBusinessLodging.V1.Model.GuestUnitFeatures)
  field(:sustainability, as: GoogleApi.MyBusinessLodging.V1.Model.Sustainability)
  field(:transportation, as: GoogleApi.MyBusinessLodging.V1.Model.Transportation)
  field(:wellness, as: GoogleApi.MyBusinessLodging.V1.Model.Wellness)
end

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

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