Я создаю веб-приложение, которое имеет следующие классы. User
и Booking
. Мне нужно дать возможность более чистым пользователям утверждать заказы, которые, в свою очередь, создадут событие в календаре хостов.
У пользователей есть два типа, cleaners
и hosts
. У каждого пользователя есть календарь.
У меня есть два варианта использования, которые мне трудно удовлетворить.
- Хост принимает запрос очистителей
Booking
; когда это происходит, статус Booking
изменяется на одобренный, и событие добавляется в календарь хостов. Этот шаг работает так, как и должно быть, потому что current_user
- это host
, которому через oauth разрешено вносить изменения в свой календарь.
def new_event(start, endd, cleaner)
client = Signet::OAuth2::Client.new(client_options)
client.update!(session[:authorization])
service = Google::Apis::CalendarV3::CalendarService.new
service.authorization = client
calendar = service.get_calendar(:primary)
today = Date.today
event = Google::Apis::CalendarV3::Event.new({
start: Google::Apis::CalendarV3::EventDateTime.new(date: start),
end: Google::Apis::CalendarV3::EventDateTime.new(date: endd),
summary: "Cleaning Scheduled by #{cleaner}"
})
service.insert_event(calendar.id, event)
end
Я называю этот метод здесь
def approve
@booking = Booking.find(params[:id])
@booking.update(status:'approved')
if @booking.save
flash[:success] = "Reservation Approved"
# send_approved_booking_notification(@booking)
new_event(@booking.starts_at.to_date,@booking.starts_at.to_date, @booking.cleaner.name)
redirect_to dashboard_path
else
Хозяин запрашивает уборщика, и уборщик утверждает бронирование, когда уборщик утверждает, событие должно быть опубликовано в календаре хозяина; В настоящее время событие добавляется только в календарь авторизованных пользователей, который в данном случае является календарем уборщиков. Как я могу опубликовать это событие в календаре пользователя, который создал запрос (хост)?
TLDR;
как добавить событие из календаря одного пользователя в календарь другого пользователя с помощью Google :: Api :: CalendarV3?