/* ---------------------------------------------------------------------------- * Easy!Appointments - Open Source Web Scheduler * * @package EasyAppointments * @author A.Tselegidis * @copyright Copyright (c) 2013 - 2020, Alex Tselegidis * @license http://opensource.org/licenses/GPL-3.0 - GPLv3 * @link http://easyappointments.org * @since v1.0.0 * ---------------------------------------------------------------------------- */ $(document).ready(function () { /** * Event: Add Appointment to Google Calendar "Click" * * This event handler adds the appointment to the users Google Calendar Account. The event is going to * be added to the "primary" calendar. In order to use the API the javascript client library provided by * Google is necessary. */ $('#add-to-google-calendar').click(function () { gapi.client.setApiKey(GlobalVariables.googleApiKey); gapi.auth.authorize({ client_id: GlobalVariables.googleClientId, scope: GlobalVariables.googleApiScope, immediate: false }, handleAuthResult); }); /** * Handle Authorization Result * * This method handles the authorization result. If the user granted access to his data, then the * appointment is going to be added to his calendar. * * @param {Boolean} authResult The user's authorization result. */ function handleAuthResult(authResult) { try { if (authResult.error) { throw 'Could not authorize user.'; } // The user has granted access, add the appointment to his calendar. // Before making the event.insert request the the event resource data // must be prepared. var appointmentData = GlobalVariables.appointmentData; appointmentData.start_datetime = GeneralFunctions.ISODateString( Date.parseExact(appointmentData.start_datetime, 'yyyy-MM-dd HH:mm:ss')); appointmentData.end_datetime = GeneralFunctions.ISODateString( Date.parseExact(appointmentData.end_datetime, 'yyyy-MM-dd HH:mm:ss')); // Create a valid Google Calendar API resource for the new event. var resource = { summary: GlobalVariables.serviceData.name, location: GlobalVariables.companyName, start: { dateTime: appointmentData.start_datetime }, end: { dateTime: appointmentData.end_datetime }, attendees: [ { email: GlobalVariables.providerData.email, displayName: GlobalVariables.providerData.first_name + ' ' + GlobalVariables.providerData.last_name } ] }; gapi.client.load('calendar', 'v3', function () { var request = gapi.client.calendar.events.insert({ calendarId: 'primary', resource: resource }); request.execute(function (response) { if (response.error) { throw 'Could not add the event to Google Calendar.'; } $('#success-frame').append( '

' + '
' + '

' + EALang.success + '

' + '

' + EALang.appointment_added_to_google_calendar + '
' + '' + EALang.view_appointment_in_google_calendar + '' + '

' + '
' ); $('#add-to-google-calendar').hide(); }); }); } catch (exc) { // The user denied access or something else happened, display corresponding message on the screen. $('#success-frame').append( '
' + '

' + EALang.oops_something_went_wrong + '

' + '

' + EALang.could_not_add_to_google_calendar + '

' + exc + '
' + '

' + '
'); } } });