# 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.WasteReduction do
  @moduledoc """
  Waste reduction practices implemented at the hotel.

  ## Attributes

  *   `compostableFoodContainersAndCutlery` (*type:* `boolean()`, *default:* `nil`) - Compostable food containers and cutlery. 100% of food service containers and to-go cutlery are compostable, and reusable utensils are offered wherever possible. Compostable materials are capable of undergoing biological decomposition in a compost site, such that material is not visually distinguishable and breaks down into carbon dioxide, water, inorganic compounds, and biomass.
  *   `compostableFoodContainersAndCutleryException` (*type:* `String.t`, *default:* `nil`) - Compostable food containers and cutlery exception.
  *   `compostsExcessFood` (*type:* `boolean()`, *default:* `nil`) - Composts excess food. The property has a program and/or policy for diverting waste from landfill by composting food and yard waste, either through compost collection and off-site processing or on-site compost processing.
  *   `compostsExcessFoodException` (*type:* `String.t`, *default:* `nil`) - Composts excess food exception.
  *   `donatesExcessFood` (*type:* `boolean()`, *default:* `nil`) - Donates excess food. The property has a program and/or policy for diverting waste from landfill that may include efforts to donate for human consumption or divert food for animal feed.
  *   `donatesExcessFoodException` (*type:* `String.t`, *default:* `nil`) - Donates excess food exception.
  *   `foodWasteReductionProgram` (*type:* `boolean()`, *default:* `nil`) - Food waste reduction program. The property has established a food waste reduction and donation program, aiming to reduce food waste by half. These programs typically use tools such as the Hotel Kitchen Toolkit and others to track waste and measure progress.
  *   `foodWasteReductionProgramException` (*type:* `String.t`, *default:* `nil`) - Food waste reduction program exception.
  *   `noSingleUsePlasticStraws` (*type:* `boolean()`, *default:* `nil`) - No single use plastic straws. The property bans single-use plastic straws.
  *   `noSingleUsePlasticStrawsException` (*type:* `String.t`, *default:* `nil`) - No single use plastic straws exception.
  *   `noSingleUsePlasticWaterBottles` (*type:* `boolean()`, *default:* `nil`) - No single use plastic water bottles. The property bans single-use plastic water bottles.
  *   `noSingleUsePlasticWaterBottlesException` (*type:* `String.t`, *default:* `nil`) - No single use plastic water bottles exception.
  *   `noStyrofoamFoodContainers` (*type:* `boolean()`, *default:* `nil`) - No styrofoam food containers. The property eliminates the use of Styrofoam in disposable food service items.
  *   `noStyrofoamFoodContainersException` (*type:* `String.t`, *default:* `nil`) - No styrofoam food containers exception.
  *   `recyclingProgram` (*type:* `boolean()`, *default:* `nil`) - Recycling program. The property has a recycling program, aligned with LEED waste requirements, and a policy outlining efforts to send less than 50% of waste to landfill. The recycling program includes storage locations for recyclable materials, including mixed paper, corrugated cardboard, glass, plastics, and metals.
  *   `recyclingProgramException` (*type:* `String.t`, *default:* `nil`) - Recycling program exception.
  *   `refillableToiletryContainers` (*type:* `boolean()`, *default:* `nil`) - Refillable toiletry containers. The property has replaced miniature individual containers with refillable amenity dispensers for shampoo, conditioner, soap, and lotion.
  *   `refillableToiletryContainersException` (*type:* `String.t`, *default:* `nil`) - Refillable toiletry containers exception.
  *   `safelyDisposesBatteries` (*type:* `boolean()`, *default:* `nil`) - Safely disposes batteries. The property safely stores and disposes batteries.
  *   `safelyDisposesBatteriesException` (*type:* `String.t`, *default:* `nil`) - Safely disposes batteries exception.
  *   `safelyDisposesElectronics` (*type:* `boolean()`, *default:* `nil`) - Safely disposes electronics. The property has a reputable recycling program that keeps hazardous electronic parts and chemical compounds out of landfills, dumps and other unauthorized abandonment sites, and recycles/reuses applicable materials. (e.g. certified electronics recyclers).
  *   `safelyDisposesElectronicsException` (*type:* `String.t`, *default:* `nil`) - Safely disposes electronics exception.
  *   `safelyDisposesLightbulbs` (*type:* `boolean()`, *default:* `nil`) - Safely disposes lightbulbs. The property safely stores and disposes lightbulbs.
  *   `safelyDisposesLightbulbsException` (*type:* `String.t`, *default:* `nil`) - Safely disposes lightbulbs exception.
  *   `safelyHandlesHazardousSubstances` (*type:* `boolean()`, *default:* `nil`) - Safely handles hazardous substances. The property has a hazardous waste management program aligned wit GreenSeal and LEED requirements, and meets all regulatory requirements for hazardous waste disposal and recycling. Hazardous means substances that are classified as "hazardous" by an authoritative body (such as OSHA or DOT), are labeled with signal words such as "Danger," "Caution," "Warning," or are flammable, corrosive, or ignitable. Requirements include: - The property shall maintain records of the efforts it has made to replace the hazardous substances it uses with less hazardous alternatives. - An inventory of the hazardous materials stored on-site. - Products intended for cleaning, dishwashing, laundry, and pool maintenance shall be stored in clearly labeled containers. These containers shall be checked regularly for leaks, and replaced a necessary. - Spill containment devices shall be installed to collect spills, drips, or leaching of chemicals.
  *   `safelyHandlesHazardousSubstancesException` (*type:* `String.t`, *default:* `nil`) - Safely handles hazardous substances exception.
  *   `soapDonationProgram` (*type:* `boolean()`, *default:* `nil`) - Soap donation program. The property participates in a soap donation program such as Clean the World or something similar.
  *   `soapDonationProgramException` (*type:* `String.t`, *default:* `nil`) - Soap donation program exception.
  *   `toiletryDonationProgram` (*type:* `boolean()`, *default:* `nil`) - Toiletry donation program. The property participates in a toiletry donation program such as Clean the World or something similar.
  *   `toiletryDonationProgramException` (*type:* `String.t`, *default:* `nil`) - Toiletry donation program exception.
  *   `waterBottleFillingStations` (*type:* `boolean()`, *default:* `nil`) - Water bottle filling stations. The property offers water stations throughout the building for guest use.
  *   `waterBottleFillingStationsException` (*type:* `String.t`, *default:* `nil`) - Water bottle filling stations exception.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :compostableFoodContainersAndCutlery => boolean() | nil,
          :compostableFoodContainersAndCutleryException => String.t() | nil,
          :compostsExcessFood => boolean() | nil,
          :compostsExcessFoodException => String.t() | nil,
          :donatesExcessFood => boolean() | nil,
          :donatesExcessFoodException => String.t() | nil,
          :foodWasteReductionProgram => boolean() | nil,
          :foodWasteReductionProgramException => String.t() | nil,
          :noSingleUsePlasticStraws => boolean() | nil,
          :noSingleUsePlasticStrawsException => String.t() | nil,
          :noSingleUsePlasticWaterBottles => boolean() | nil,
          :noSingleUsePlasticWaterBottlesException => String.t() | nil,
          :noStyrofoamFoodContainers => boolean() | nil,
          :noStyrofoamFoodContainersException => String.t() | nil,
          :recyclingProgram => boolean() | nil,
          :recyclingProgramException => String.t() | nil,
          :refillableToiletryContainers => boolean() | nil,
          :refillableToiletryContainersException => String.t() | nil,
          :safelyDisposesBatteries => boolean() | nil,
          :safelyDisposesBatteriesException => String.t() | nil,
          :safelyDisposesElectronics => boolean() | nil,
          :safelyDisposesElectronicsException => String.t() | nil,
          :safelyDisposesLightbulbs => boolean() | nil,
          :safelyDisposesLightbulbsException => String.t() | nil,
          :safelyHandlesHazardousSubstances => boolean() | nil,
          :safelyHandlesHazardousSubstancesException => String.t() | nil,
          :soapDonationProgram => boolean() | nil,
          :soapDonationProgramException => String.t() | nil,
          :toiletryDonationProgram => boolean() | nil,
          :toiletryDonationProgramException => String.t() | nil,
          :waterBottleFillingStations => boolean() | nil,
          :waterBottleFillingStationsException => String.t() | nil
        }

  field(:compostableFoodContainersAndCutlery)
  field(:compostableFoodContainersAndCutleryException)
  field(:compostsExcessFood)
  field(:compostsExcessFoodException)
  field(:donatesExcessFood)
  field(:donatesExcessFoodException)
  field(:foodWasteReductionProgram)
  field(:foodWasteReductionProgramException)
  field(:noSingleUsePlasticStraws)
  field(:noSingleUsePlasticStrawsException)
  field(:noSingleUsePlasticWaterBottles)
  field(:noSingleUsePlasticWaterBottlesException)
  field(:noStyrofoamFoodContainers)
  field(:noStyrofoamFoodContainersException)
  field(:recyclingProgram)
  field(:recyclingProgramException)
  field(:refillableToiletryContainers)
  field(:refillableToiletryContainersException)
  field(:safelyDisposesBatteries)
  field(:safelyDisposesBatteriesException)
  field(:safelyDisposesElectronics)
  field(:safelyDisposesElectronicsException)
  field(:safelyDisposesLightbulbs)
  field(:safelyDisposesLightbulbsException)
  field(:safelyHandlesHazardousSubstances)
  field(:safelyHandlesHazardousSubstancesException)
  field(:soapDonationProgram)
  field(:soapDonationProgramException)
  field(:toiletryDonationProgram)
  field(:toiletryDonationProgramException)
  field(:waterBottleFillingStations)
  field(:waterBottleFillingStationsException)
end

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

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