/// <summary> /// Process the queue into Google calendar. /// </summary> /// <param name="queuedSkill">The queued skill.</param> /// <param name="queuePosition">The queue position.</param> /// <param name="lastSkillInQueue">if set to <c>true</c> skill is the last in queue.</param> private static async Task DoGoogleAppointmentAsync(QueuedSkill queuedSkill, int queuePosition, bool lastSkillInQueue) { try { // Set the subject to the character name and the skill and level in queue for uniqueness sakes GoogleCalendarEvent googleAppointmentFilter = new GoogleCalendarEvent { StartDate = DateTime.Now.AddDays(-40), EndDate = DateTime.Now.AddDays(100), Subject = string.Format( CultureConstants.DefaultCulture, "{0} - {1} {2}", queuedSkill.Owner.Name, queuedSkill.SkillName, Skill.GetRomanFromInt(queuedSkill.Level)) }; // Pull the list of appointments, hopefully we should either get 1 or none back await googleAppointmentFilter.ReadEventsAsync(); // If there is are appointments, see if any match the subject bool foundAppointment = false; if (googleAppointmentFilter.ItemCount > 0) { foundAppointment = googleAppointmentFilter.GetEvent(); } // Update the appointment we may have pulled or the new one // Set the appointment length to 5 minutes, starting at the estimated completion date and time // Reminder interval was already validated // Use the values from the screen as these may differ what the user has set for defaults googleAppointmentFilter.StartDate = queuedSkill.EndTime.ToLocalTime(); googleAppointmentFilter.EndDate = queuedSkill.EndTime.ToLocalTime().AddMinutes(5); googleAppointmentFilter.ItemReminder = Settings.Calendar.UseReminding; googleAppointmentFilter.AlternateReminder = Settings.Calendar.UseAlternateReminding; googleAppointmentFilter.EarlyReminder = Settings.Calendar.EarlyReminding; googleAppointmentFilter.LateReminder = Settings.Calendar.LateReminding; googleAppointmentFilter.Minutes = Settings.Calendar.RemindingInterval; googleAppointmentFilter.ReminderMethod = Settings.Calendar.GoogleEventReminder; await googleAppointmentFilter.AddOrUpdateEventAsync(foundAppointment, queuePosition, lastSkillInQueue); } catch (TokenResponseException ex) { MessageBox.Show(ex.Error.ErrorDescription, @"Google Calendar"); } catch (GoogleApiException ex) { MessageBox.Show(ex.Error.Message, @"Google Calendar"); } catch (APIException ex) { MessageBox.Show(ex.Message, ex.ErrorCode ?? @"Google Calendar"); } catch (Exception ex) { MessageBox.Show(ex.Message, @"Google Calendar"); } }
/// <summary> /// Process the queue into Google calendar. /// </summary> /// <param name="queuedSkill">The queued skill.</param> /// <param name="queuePosition">The queue position.</param> /// <param name="lastSkillInQueue">if set to <c>true</c> skill is the last in queue.</param> private static async Task DoGoogleAppointmentAsync(QueuedSkill queuedSkill, int queuePosition, bool lastSkillInQueue) { try { // Set the subject to the character name and the skill and level in queue for uniqueness sakes GoogleCalendarEvent googleAppointmentFilter = new GoogleCalendarEvent { StartDate = DateTime.Now.AddDays(-40), EndDate = DateTime.Now.AddDays(100), Subject = String.Format( CultureConstants.DefaultCulture, "{0} - {1} {2}", queuedSkill.Owner.Name, queuedSkill.SkillName, Skill.GetRomanFromInt(queuedSkill.Level)) }; // Pull the list of appointments, hopefully we should either get 1 or none back await googleAppointmentFilter.ReadEventsAsync(); // If there is are appointments, see if any match the subject bool foundAppointment = false; if (googleAppointmentFilter.ItemCount > 0) foundAppointment = googleAppointmentFilter.GetEvent(); // Update the appointment we may have pulled or the new one // Set the appointment length to 5 minutes, starting at the estimated completion date and time // Reminder interval was already validated // Use the values from the screen as these may differ what the user has set for defaults googleAppointmentFilter.StartDate = queuedSkill.EndTime.ToLocalTime(); googleAppointmentFilter.EndDate = queuedSkill.EndTime.ToLocalTime().AddMinutes(5); googleAppointmentFilter.ItemReminder = Settings.Calendar.UseReminding; googleAppointmentFilter.AlternateReminder = Settings.Calendar.UseAlternateReminding; googleAppointmentFilter.EarlyReminder = Settings.Calendar.EarlyReminding; googleAppointmentFilter.LateReminder = Settings.Calendar.LateReminding; googleAppointmentFilter.Minutes = Settings.Calendar.RemindingInterval; googleAppointmentFilter.ReminderMethod = Settings.Calendar.GoogleEventReminder; await googleAppointmentFilter.AddOrUpdateEventAsync(foundAppointment, queuePosition, lastSkillInQueue); } catch (TokenResponseException ex) { MessageBox.Show(ex.Error.ErrorDescription, @"Google Calendar"); } catch (GoogleApiException ex) { MessageBox.Show(ex.Error.Message, @"Google Calendar"); } catch (APIException ex) { MessageBox.Show(ex.Message, ex.ErrorCode ?? @"Google Calendar"); } catch (Exception ex) { MessageBox.Show(ex.Message, @"Google Calendar"); } }