/// <summary> /// 新しいイベントをGoogleCalendarに追加する /// </summary> /// <param name="add_item">追加するイベントアイテム</param> /// <param name="calendar_id">イベントを追加するカレンダー</param> /// <returns>追加したイベント</returns> public CalendarEvent AddCalendarEvent(CalendarEvent add_item, string calendar_id) { Event insert = new Event(); EventDateTime items_datetime = new EventDateTime(); insert.Summary = add_item.summary; if (add_item.color != null) { insert.ColorId = add_item.color; } EventDateTime start = new EventDateTime(); EventDateTime end = new EventDateTime(); if (add_item.dateonly == true) { start.Date = add_item.start.Date.ToString(); end.Date = add_item.end.Date.ToString(); } else { start.DateTime = add_item.start; end.DateTime = add_item.end; } insert.Start = start; insert.End = end; insert.Description = add_item.description; insert.Location = add_item.location; Event.RemindersData remindersData = new Event.RemindersData(); remindersData.UseDefault = false; insert.Reminders = null; add_item.id = _service.Events.Insert(insert, calendar_id).Execute().Id; return(add_item); }
public EventCalendar() { Start = new EventDateTime() { TimeZone = "Europe/Kiev" }; End = new EventDateTime() { TimeZone = "Europe/Kiev" }; Attendees = new EventAttendee[] { new EventAttendee() { Email = "*****@*****.**" } }; Reminders = new Event.RemindersData() { UseDefault = false, Overrides = new EventReminder[] { new EventReminder() { Method = "email", Minutes = 24 * 60 }, new EventReminder() { Method = "sms", Minutes = 10 }, } }; Transparency = "opaque"; }
public void CreateEvent(DateTime date, string roomName, string name, string phone, string email, string googleCredPath) { var myEventStart = new EventDateTime(); myEventStart.DateTime = date; myEventStart.TimeZone = _settings.TimeZone; var myEventEnd = new EventDateTime(); myEventEnd.DateTime = date.AddHours(1); myEventEnd.TimeZone = _settings.TimeZone; var reminders = new Event.RemindersData() { UseDefault = false, Overrides = new EventReminder[] { new EventReminder() { Method = "email", Minutes = 2 * 60 }, new EventReminder() { Method = "popup", Minutes = 60 } } }; var myEvent = new Event(); myEvent.Summary = $"Interview - {name}"; myEvent.Description = $"{name}, {email}, {phone}"; myEvent.Start = myEventStart; myEvent.End = myEventEnd; myEvent.Location = $"Kolektif House - Maslak, {roomName}"; myEvent.Reminders = reminders; //File.AppendAllText("googleCalendar.txt", JsonConvert.SerializeObject(myEvent)); UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync( new ClientSecrets { ClientId = _settings.ClientId, ClientSecret = _settings.ClientSecret, }, new[] { CalendarService.Scope.Calendar }, "user", CancellationToken.None, new FileDataStore(googleCredPath)).Result; var service = new CalendarService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = _settings.ApplicationName, }); EventsResource.InsertRequest request = service.Events.Insert(myEvent, _settings.CalendarId); Event createdEvent = request.Execute(); }
public string AddEvent(DateTime startDate, DateTime endDate, string summary, string description) { var service = GetCalendarService(); Event ev = new Event() { Summary = summary, Location = location, Description = description, Start = new EventDateTime() { DateTime = startDate }, End = new EventDateTime() { DateTime = endDate }, }; ev.Transparency = "transparent"; EventReminder remPopup = new EventReminder(); remPopup.Method = "popup"; remPopup.Minutes = 15; EventReminder remMail = new EventReminder(); remMail.Method = "email"; remMail.Minutes = 15; Event.RemindersData rd = new Event.RemindersData(); rd.UseDefault = false; IList <EventReminder> list = new List <EventReminder>(); list.Add(remPopup); list.Add(remMail); rd.Overrides = list; ev.Reminders = rd; var calendarId = "primary"; Event recurringEvent = service.Events.Insert(ev, calendarId).Execute(); string eidWord = "eid="; var index = recurringEvent.HtmlLink.IndexOf(eidWord, 0); var eid = recurringEvent.HtmlLink.Substring(index + eidWord.Length, recurringEvent.HtmlLink.Length - (index + eidWord.Length)); //var calendarEditLink = string.Format(@"https://calendar.google.com/calendar/u/2/r/eventedit/{0}?sf=true", eid); return(eid); }
private static Event.RemindersData ConvertMinutesToGoogleEventReminder(int minutes) { Event.RemindersData reminder = new Event.RemindersData() { Overrides = new List <EventReminder> { new EventReminder() { Method = "email", Minutes = minutes } }, UseDefault = false }; return(reminder); }
public void AddEventToCalendar(List <Lesson> lessons, int reminderMinutes = 15) { try { if (lessons != null && lessons.Count > 0) { foreach (var lesson in lessons) { var ev = new Event(); var startLessonTime = DateTime.Parse(lesson.Date + " " + lesson.StartTime); var endLessonTime = DateTime.Parse(lesson.Date + " " + lesson.EndTime); EventDateTime start = new EventDateTime { DateTime = startLessonTime }; EventDateTime end = new EventDateTime { DateTime = endLessonTime }; var reminder1 = new EventReminder { Method = "popup", Minutes = reminderMinutes }; var eventReminderData = new Event.RemindersData { UseDefault = false, Overrides = new[] { reminder1 } }; ev.Start = start; ev.End = end; ev.Summary = lesson.LessonName + " " + lesson.ClassRoom; ev.Description = lesson.TeacherName + " " + lesson.Group; ev.Reminders = eventReminderData; var calendarId = "primary"; Event recurringEvent = _service.Events.Insert(ev, calendarId).Execute(); } } } catch (Exception e) { MessageBox.Show(e.Message); throw; } }
/// <summary> /// Создает и добавляет новое событие в календарь /// </summary> /// <param name="title"></param> /// <param name="location"></param> /// <param name="description"></param> /// <param name="startdate"></param> /// <param name="enddate"></param> /// <returns></returns> public static bool CreateNewEvent(String googleCalendarAdress, DateTime startdate, DateTime enddate, string title, bool remind, string description = "", string location = "") { if (startdate == null || enddate == null) throw new ArgumentNullException("Аргументы startdate и enddate не могут быть null"); if (startdate < DateTime.Today || enddate < DateTime.Today || enddate < startdate) throw new ArgumentOutOfRangeException("Даты события не могут быть меньше сегодняшней. Дата окончания события не может быть меньше даты начала события"); if (String.IsNullOrEmpty(title)) throw new ArgumentException("Аргумент title не может быть пустым или null"); Event eventdata = new Event(); eventdata.Summary = title; eventdata.Location = location; eventdata.Description = description; EventDateTime start = new EventDateTime(); start.DateTime = startdate; eventdata.Start = start; EventDateTime end = new EventDateTime(); end.DateTime = enddate; eventdata.End = end; eventdata.Transparency = "transparent"; if(remind) { EventReminder rem = new EventReminder(); rem.Method = "popup"; rem.Minutes = 15; Event.RemindersData rd = new Event.RemindersData(); rd.UseDefault = false; IList<EventReminder> list = new List<EventReminder>(); list.Add(rem); rd.Overrides = list; eventdata.Reminders = rd; } var insertevent = _calService.Events.Insert(eventdata, googleCalendarAdress); Event createdevent = insertevent.Execute(); return true; }
/// <summary> /// This Function fetch Calendar detail from Gmail and insert in Appointment Table /// </summary> /// <param name="_calenderSer"></param> private void FetchCalender(CalendarService _calenderSer, Ctx ctx) { string sqlCategory = "SELECT APPOINTMENTCATEGORY_ID FROM APPOINTMENTCATEGORY WHERE VALUE='Appointment' AND ISACTIVE='Y'"; int appointCategoryID = Util.GetValueOfInt(DB.ExecuteScalar(sqlCategory)); try { Google.Apis.Calendar.v3.EventsResource ev = new EventsResource(_calenderSer, _authenticator); //ev.List(CalendarList.Id).SingleEvents = true; Events e = null; try { e = ev.List("primary").Fetch(); //Fetch Calendar Events From Gmail which are Primary } catch (Exception ex) { msg.Append(ex.Message); } if (e.Items == null) { msg.Append("no Item Found"); return; } StringBuilder sql = new StringBuilder(); if (e.Items.Count == 0) { msg.Append("no Item Found"); return; } for (int i = 0; i < e.Items.Count; i++) { try { VAdvantage.Model.MAppointmentsInfo ainfo = new VAdvantage.Model.MAppointmentsInfo(ctx, 0, null); sql.Clear(); sql.Append("select appointmentsinfo_id From APPOINTMENTSINFO ") .Append(" where utaskid='" + e.Items[i].Id + "' and AD_User_ID=" + AD_User_ID); DataSet ds = DB.ExecuteDataset(sql.ToString()); if (ds == null || ds.Tables[0].Rows.Count == 0) { ainfo.SetAD_Org_ID(AD_Org_ID); ainfo.SetAD_Client_ID(AD_Client_ID); ainfo.SetAD_User_ID(AD_User_ID); ainfo.SetIsTask(false); ainfo.SetUTaskID(e.Items[i].Id); ainfo.SetAppointmentCategory_ID(appointCategoryID); ainfo.SetStatus(3); if (e.Items[i].Summary != null) { ainfo.SetSubject(e.Items[i].Summary); } if (e.Items[i].Description != null) { ainfo.SetDescription(e.Items[i].Description); } if (e.Items[i].Location != null) { ainfo.SetLocation(e.Items[i].Location); } if (e.Items[i].Visibility != null) { if (e.Items[i].Visibility.ToString().Equals("Private", StringComparison.OrdinalIgnoreCase)) { ainfo.SetIsPrivate(true); } else { ainfo.SetIsPrivate(false); } } else { ainfo.SetIsPrivate(false); } if (e.Items[i].Reminders != null) { Event.RemindersData rem = e.Items[i].Reminders; if (rem != null) { if (rem.Overrides != null) { IList <EventReminder> resmim = rem.Overrides; foreach (EventReminder r in resmim) { ainfo.SetReminderInfo(r.Minutes.ToString()); } } } } if (e.Items[i].Recurrence == null || e.Items[i].Recurrence.Count < 1) { EventDateTime dateStart = e.Items[i].Start; if (dateStart.Date == null) { DateTime startDate = Convert.ToDateTime(dateStart.DateTime); ainfo.SetStartDate(startDate.ToUniversalTime()); ainfo.SetAllDay(false); } else { ainfo.SetStartDate(Convert.ToDateTime(dateStart.Date).ToUniversalTime()); ainfo.SetAllDay(true); } EventDateTime dateend = e.Items[i].End; if (dateend.Date == null) { DateTime endDate = Convert.ToDateTime(dateend.DateTime); ainfo.SetEndDate(endDate.ToUniversalTime()); ainfo.SetAllDay(false); } else { ainfo.SetEndDate(Convert.ToDateTime(dateend.Date).ToUniversalTime()); ainfo.SetAllDay(true); } } else { if (e.Items[i].Recurrence != null && e.Items[i].Recurrence.Count > 0) { EventDateTime dateStart = e.Items[i].Start; EventDateTime dateend = e.Items[i].End; if (e.Items[i].Start.Date == null) { DateTime sdate = Convert.ToDateTime(dateStart.DateTime); ainfo.SetStartDate(sdate.ToUniversalTime()); ainfo.SetAllDay(false); } else { DateTime sdate = Convert.ToDateTime(dateStart.Date); ainfo.SetStartDate(sdate.ToUniversalTime()); ainfo.SetAllDay(true); } if (e.Items[i].End.Date == null) { ainfo.SetEndDate(Convert.ToDateTime(dateend.DateTime).ToUniversalTime()); ainfo.SetAllDay(false); } else { ainfo.SetEndDate(Convert.ToDateTime(dateend.Date).ToUniversalTime()); ainfo.SetAllDay(true); } string recurenceRule = e.Items[i].Recurrence[0].Replace("RRULE:", ""); ainfo.SetRecurrenceRule(recurenceRule); //Save Recurrence rule } } if (ainfo.Save()) { sql.Clear(); sql.Append("Update APPOINTMENTSINFO set LastLocalUpdated=" + SetTime(ainfo.GetUpdated()) + " , Updated=" + SetTime(ainfo.GetUpdated()) + ", CreatedBY= " + AD_User_ID + ", UpdatedBy=" + AD_User_ID + ",LastGmailUpdated=" + GlobalVariable.TO_DATE(Convert.ToDateTime(e.Items[i].Updated), false) + " where APPOINTMENTSINFO_ID=" + ainfo.GetAppointmentsInfo_ID()); int result = DB.ExecuteQuery(sql.ToString()); } } } catch (Exception exq) { msg.Append(exq.Message + " At no. " + i); } } } catch (Exception ex) { msg.Append(ex.Message); } }
private static Event.RemindersData ConvertMinutesToGoogleEventReminder(int minutes) { Event.RemindersData reminder = new Event.RemindersData() { Overrides = new List<EventReminder> { new EventReminder() { Method = "email", Minutes = minutes } }, UseDefault = false }; return reminder; }
/// <summary> /// Inserts events. /// </summary> /// <param name="events">The events.</param> /// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns> public bool InsertEvents(Event[] events) { try { if (!UseGoogleCalendar) return false; if (!Authorized) { Mail.SendEmail(EmailTo, MailResource.Calendar_InsertEvents_Subject, MailResource.Calendar_InsertEvents_TextBody, UseMail, true); return false; } if (String.IsNullOrEmpty(GoogleCalendarId)) { GoogleCalendarId = DefaultGoogleCalendarId; } foreach (Event @event in events) { if (String.IsNullOrEmpty(ReminderTime)) { var remindersData = new Event.RemindersData { UseDefault = false }; @event.Reminders = remindersData; } else { TimeSpan reminderTimeSpan; if (TimeSpan.TryParse(ReminderTime, out reminderTimeSpan)) { var emailEventReminder = new EventReminder { Method = EmailMethod, Minutes = 0 }; var popupEventReminder = new EventReminder { Method = PopupMethod, Minutes = 0 }; var remindersData = new Event.RemindersData { Overrides = new List<EventReminder> { emailEventReminder, popupEventReminder }, UseDefault = false }; @event.Reminders = remindersData; @event.Start.DateTime = @event.Start.DateTime.GetValueOrDefault().Add(reminderTimeSpan); } } @event.Visibility = IsEventsPrivate ? PrivateEventVisibility : DefaultEventVisibility; _calendarService.Events.Insert(@event, GoogleCalendarId).Execute(); } } catch (Exception e) { Mail.SendEmail(EmailTo, MailResource.Calendar_InsertEvents_Subject, MailResource.Calendar_InsertEvents_TextBody, UseMail, true); Logger.SetLog(e); return false; } return true; }
public IHttpActionResult AddToGoogleCalendar() { String serviceAccountEmail = File.ReadAllText(HostingEnvironment.MapPath(@"~/App_Data/serviceAccountEmail")); // Read certificate // @ is for verbatim string literal as opposed to regular (prevent taking meaning from characters in key) var certificate = new X509Certificate2(HostingEnvironment.MapPath(@"~/App_Data/key.p12"), "notasecret", X509KeyStorageFlags.Exportable); // Create credential from certificate ServiceAccountCredential credential = new ServiceAccountCredential( new ServiceAccountCredential.Initializer(serviceAccountEmail) { Scopes = new[] { CalendarService.Scope.Calendar } }.FromCertificate(certificate)); // Create the service using credential var service = new CalendarService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = "RoccoWebService", }); // Create the calendar event object Event calendarEvent = new Event(); calendarEvent.Summary = "Google I/O 2015"; calendarEvent.Location = "800 Howard St., San Francisco, CA 94103"; calendarEvent.Description = "A chance to hear more about Google's developer products."; DateTime startDateTime = new DateTime(2017, 3, 4, 14, 0, 0); //("2015-05-28T09:00:00-07:00"); EventDateTime start = new EventDateTime(); start.DateTime = startDateTime; start.TimeZone = "America/Los_Angeles"; calendarEvent.Start = start; DateTime endDateTime = new DateTime(2017, 3, 4, 14, 0, 0); EventDateTime end = new EventDateTime(); end.DateTime = endDateTime; end.TimeZone = "America/Los_Angeles"; calendarEvent.End = end; String[] recurrence = new String[] { "RRULE:FREQ=DAILY;COUNT=2" }; calendarEvent.Recurrence = recurrence; var attendees = new List <EventAttendee>() { new EventAttendee() { Email = "*****@*****.**" }, new EventAttendee() { Email = "*****@*****.**" } }; calendarEvent.Attendees = attendees; var remindersList = new List <EventReminder>() { new EventReminder() { Method = "email", Minutes = (24 * 60) }, new EventReminder() { Method = "popup", Minutes = 10 } }; var reminders = new Event.RemindersData { UseDefault = false, Overrides = remindersList }; calendarEvent.Reminders = reminders; var calendarId = File.ReadAllText(HostingEnvironment.MapPath(@"~/App_Data/calendarId")); var eventInsert = service.Events.Insert(calendarEvent, calendarId).Execute(); return(Ok()); }
static void Main(string[] args) { UserCredential credential; using (var stream = new FileStream("client_secret.json", FileMode.Open, FileAccess.Read)) { string credPath = System.Environment.GetFolderPath( System.Environment.SpecialFolder.Personal); credPath = Path.Combine(credPath, ".credentials/calendar-dotnet-quickstart.json"); credential = GoogleWebAuthorizationBroker.AuthorizeAsync( GoogleClientSecrets.Load(stream).Secrets, Scopes, "user", CancellationToken.None, null).Result; // Console.WriteLine("Credential file saved to: " + credPath); } CalendarService calendarService = new CalendarService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = "Travel Reminder" }); IList <CalendarListEntry> calList = calendarService.CalendarList.List().Execute().Items; IList <Event> _lstCal = calendarService.Events.List("primary").Execute().Items; if (calList.Count > 0) { #region Create Event EventDateTime eveStTime = new EventDateTime() { DateTime = System.DateTime.Now.AddMinutes(50) }; EventDateTime eveEdTime = new EventDateTime() { DateTime = System.DateTime.Now.AddMinutes(80) }; Event eve = new Event() { Summary = "Event Ceated", Location = "Pune", Description = "Alerted", Start = eveStTime, End = eveEdTime }; EventAttendee ea1 = new EventAttendee(); ea1.DisplayName = "Shefali"; ea1.Email = "*****@*****.**"; ea1.Organizer = false; ea1.Resource = false; IList <EventAttendee> ealist = new List <EventAttendee>(); ealist.Add(ea1); eve.Attendees = ealist; // This will create reminder a day prior to the event as email EventReminder er1 = new EventReminder() { Method = "email", Minutes = 24 * 60 }; // This will create a reminder 10 minutes before the event as popup EventReminder er2 = new EventReminder() { Method = "popup", Minutes = 10 }; Event.RemindersData erdata = new Event.RemindersData { UseDefault = false, Overrides = new[] { er1, er2 } }; eve.Reminders = erdata; eve = calendarService.Events.Insert(eve, "primary").Execute(); } calList = calendarService.CalendarList.List().Execute().Items; #endregion foreach (Event calenda in _lstCal) { if (calenda.Location != null) { Console.WriteLine("Event Summary : " + calenda.Summary); Console.WriteLine("Location : " + calenda.Location); Console.WriteLine("Description : " + calenda.Description); } } }