예제 #1
0
        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);
        }
예제 #2
0
        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);
        }