# 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.CloudSearch.V1.Model.EnterpriseTopazSidekickAgendaEntry do
  @moduledoc """
  An AgendaEntry, e.g., a Calendar Event.

  ## Attributes

  *   `agendaItemUrl` (*type:* `String.t`, *default:* `nil`) - URL of the agenda item.
  *   `chronology` (*type:* `String.t`, *default:* `nil`) - The chronology from the present.
  *   `creator` (*type:* `GoogleApi.CloudSearch.V1.Model.EnterpriseTopazSidekickPerson.t`, *default:* `nil`) - Person who created the event.
  *   `currentUserAttendingStatus` (*type:* `String.t`, *default:* `nil`) - Attendance status for the current user making the request. This is a convenience data member in order to avoid figuring out the same by iterating the invitee list above on the caller side.
  *   `description` (*type:* `String.t`, *default:* `nil`) - Description of the agenda item (i.e., typically, summary in calendar event).
  *   `document` (*type:* `list(GoogleApi.CloudSearch.V1.Model.EnterpriseTopazSidekickCommonDocument.t)`, *default:* `nil`) - Items related to the current AgendaEntry. E.g., related drive/mail/groups documents.
  *   `endDate` (*type:* `String.t`, *default:* `nil`) - End date "Friday, August 26" in the user's timezone.
  *   `endTime` (*type:* `String.t`, *default:* `nil`) - End time (HH:mm) in the user's timezone.
  *   `endTimeMs` (*type:* `String.t`, *default:* `nil`) - End time in milliseconds
  *   `eventId` (*type:* `String.t`, *default:* `nil`) - Event id provided by Calendar API.
  *   `guestsCanInviteOthers` (*type:* `boolean()`, *default:* `nil`) - Whether the guests can invite other guests.
  *   `guestsCanModify` (*type:* `boolean()`, *default:* `nil`) - Whether the guests can modify the event.
  *   `guestsCanSeeGuests` (*type:* `boolean()`, *default:* `nil`) - Whether the guests of the event can be seen. If false, the user is going to be reported as the only attendee to the meeting, even though there may be more attendees.
  *   `hangoutId` (*type:* `String.t`, *default:* `nil`) - Hangout meeting identifier.
  *   `hangoutUrl` (*type:* `String.t`, *default:* `nil`) - Absolute URL for the Hangout meeting.
  *   `invitee` (*type:* `list(GoogleApi.CloudSearch.V1.Model.EnterpriseTopazSidekickPerson.t)`, *default:* `nil`) - People attending the meeting.
  *   `isAllDay` (*type:* `boolean()`, *default:* `nil`) - Whether the entry lasts all day.
  *   `lastModificationTimeMs` (*type:* `String.t`, *default:* `nil`) - Last time the event was modified.
  *   `location` (*type:* `String.t`, *default:* `nil`) - Agenda item location.
  *   `notifyToUser` (*type:* `boolean()`, *default:* `nil`) - Whether this should be notified to the user.
  *   `otherAttendeesExcluded` (*type:* `boolean()`, *default:* `nil`) - Whether guest list is not returned because number of attendees is too large.
  *   `requesterIsOwner` (*type:* `boolean()`, *default:* `nil`) - Whether the requester is the owner of the agenda entry.
  *   `showFullEventDetailsToUse` (*type:* `boolean()`, *default:* `nil`) - Whether the details of this entry should be displayed to the user.
  *   `startDate` (*type:* `String.t`, *default:* `nil`) - Start date "Friday, August 26" in the user's timezone.
  *   `startTime` (*type:* `String.t`, *default:* `nil`) - Start time (HH:mm) in the user's timezone.
  *   `startTimeMs` (*type:* `String.t`, *default:* `nil`) - Start time in milliseconds.
  *   `timeZone` (*type:* `String.t`, *default:* `nil`) - User's calendar timezone;
  *   `title` (*type:* `String.t`, *default:* `nil`) - Title of the agenda item.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :agendaItemUrl => String.t() | nil,
          :chronology => String.t() | nil,
          :creator => GoogleApi.CloudSearch.V1.Model.EnterpriseTopazSidekickPerson.t() | nil,
          :currentUserAttendingStatus => String.t() | nil,
          :description => String.t() | nil,
          :document =>
            list(GoogleApi.CloudSearch.V1.Model.EnterpriseTopazSidekickCommonDocument.t()) | nil,
          :endDate => String.t() | nil,
          :endTime => String.t() | nil,
          :endTimeMs => String.t() | nil,
          :eventId => String.t() | nil,
          :guestsCanInviteOthers => boolean() | nil,
          :guestsCanModify => boolean() | nil,
          :guestsCanSeeGuests => boolean() | nil,
          :hangoutId => String.t() | nil,
          :hangoutUrl => String.t() | nil,
          :invitee =>
            list(GoogleApi.CloudSearch.V1.Model.EnterpriseTopazSidekickPerson.t()) | nil,
          :isAllDay => boolean() | nil,
          :lastModificationTimeMs => String.t() | nil,
          :location => String.t() | nil,
          :notifyToUser => boolean() | nil,
          :otherAttendeesExcluded => boolean() | nil,
          :requesterIsOwner => boolean() | nil,
          :showFullEventDetailsToUse => boolean() | nil,
          :startDate => String.t() | nil,
          :startTime => String.t() | nil,
          :startTimeMs => String.t() | nil,
          :timeZone => String.t() | nil,
          :title => String.t() | nil
        }

  field(:agendaItemUrl)
  field(:chronology)
  field(:creator, as: GoogleApi.CloudSearch.V1.Model.EnterpriseTopazSidekickPerson)
  field(:currentUserAttendingStatus)
  field(:description)

  field(:document,
    as: GoogleApi.CloudSearch.V1.Model.EnterpriseTopazSidekickCommonDocument,
    type: :list
  )

  field(:endDate)
  field(:endTime)
  field(:endTimeMs)
  field(:eventId)
  field(:guestsCanInviteOthers)
  field(:guestsCanModify)
  field(:guestsCanSeeGuests)
  field(:hangoutId)
  field(:hangoutUrl)
  field(:invitee, as: GoogleApi.CloudSearch.V1.Model.EnterpriseTopazSidekickPerson, type: :list)
  field(:isAllDay)
  field(:lastModificationTimeMs)
  field(:location)
  field(:notifyToUser)
  field(:otherAttendeesExcluded)
  field(:requesterIsOwner)
  field(:showFullEventDetailsToUse)
  field(:startDate)
  field(:startTime)
  field(:startTimeMs)
  field(:timeZone)
  field(:title)
end

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

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