public async Task <bool> SaveAppointmentAsync(CustomAppointment a) { if (CalendarIDToUse == null) { await GetCalendarAsync(); } DateTimeOffset tmptime; if (a.AllDay) { tmptime = a.StartTime.Subtract(a.StartTime.TimeOfDay); } else { tmptime = a.StartTime; } var A = new Event { IsAllDay = a.AllDay, Body = new ItemBody { Content = a.Details, ContentType = BodyType.Text, }, IsReminderOn = a.IsReminderOn, ReminderMinutesBeforeStart = a.Reminder.Days * 24 * 60 + a.Reminder.Hours * 60 + a.Reminder.Minutes, OriginalStart = a.StartTime, Start = new DateTimeTimeZone() { DateTime = tmptime.ToString("s"), TimeZone = "UTC" }, Subject = a.Subject, ShowAs = FreeBusyStatus.Free, End = new DateTimeTimeZone() { DateTime = tmptime.AddDays(1).ToString("s"), TimeZone = "UTC" }, }; try { var createdEvent = await graphClient.Me.Calendars[CalendarIDToUse].Events.Request().AddAsync(A); if (createdEvent.Id == null) { return(false); } } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.Message); return(false); } return(true); }
public async Task CreateNewAsync(bool DryRun = false) { if (DryRun) { NewNot("This is a dry run"); } if (Model.FileContent == null) { return; } string FileContent = ""; FileContent = Model.FileContent.Replace("\r", "\n"); FileContent = FileContent.Replace("\n\n", "\n"); int Counter = 0; foreach (var item in FileContent.Split('\n')) { var fields = item.Split(';'); if (fields.Length < 3 || fields[0] == "" || fields[1] == "" || fields[2] == "") { continue; } DateTimeOffset Date; var x = DateTime.MinValue; try { var input = fields[2].TrimEnd(' ').Replace(".0000", ".0001"); Date = DateTimeOffset.Parse(input, CultureInfo.CurrentCulture, DateTimeStyles.AssumeLocal); } catch (Exception) { NewNot("Error Getting Date \"{2}\" from {0} {1}", fields[0], fields[1], fields[2]); continue; } CustomAppointment a = new CustomAppointment { AllDay = fields[2].Length <= 11 // wenn also keine Uhrzeit angegeben worden ist }; if (Date.Year != 1) { a.Details = AppResource.Started + ": " + Date.Year; } a.StartTime = Date.AddYears(DateTimeOffset.UtcNow.Year - Date.Year); a.Reminder = TimeSpan.FromDays(0); a.IsReminderOn = true; a.RoamingId = Guid.NewGuid().ToString(); string Subject = "NA"; switch (fields[1]) { case Const.Type_Birthday: case Const.Type_nBirthday: if (Date.Year == 1) { Subject = String.Format(AppResource.BirthdayStringGeneral, fields[0]); } else { Subject = String.Format(AppResource.BirthdayStringConcrete, fields[0], DateTime.Now.Year - Date.Year); } break; case Const.Type_Event: case Const.Type_nEvent: if (Date.Year == 1) { Subject = String.Format(AppResource.EventStringGeneral, fields[0]); } else { Subject = String.Format(AppResource.EventStringConcrete, fields[0], DateTime.Now.Year - Date.Year); } break; case Const.Type_Anniversary: case Const.Type_nAnniversery: if (Date.Year == 1) { Subject = String.Format(AppResource.AnniversaryStringGeneral, fields[0]); } else { Subject = String.Format(AppResource.AnniversaryStringConcrete, fields[0], DateTime.Now.Year - Date.Year); } break; case Const.Type_WeddingDay: case Const.Type_nWeddingDay: if (Date.Year == 1) { Subject = String.Format(AppResource.WeddingStringGeneral, fields[0]); } else { Subject = String.Format(AppResource.WeddingStringConcrete, fields[0], DateTime.Now.Year - Date.Year); } break; default: break; } a.Subject = Subject; if (fields.Length >= 4) { a.Details += Environment.NewLine + fields[3]; } try { bool complete = false; if (!DryRun) { complete = await CalendarTouse.SaveAppointmentAsync(a); } if (!complete) { throw new Exception(); } NewNot("Saved Element: \"{0}\"", a.Subject, a.RoamingId, a.LocalId); Counter++; } catch (Exception ex) { NewNot("Error Saving Element \"{0}\" m: {1}", a.Subject, ex.Message); } } if (!DryRun) { await CalendarTouse.SaveAsync(); } NewNot("Saved {0} Elements ", Counter); }