Exemple #1
0
 public RecurrencePattern(string value) : this()
 {
     if (value != null)
     {
         var serializer = new RecurrencePatternSerializer();
         CopyFrom(serializer.Deserialize(new StringReader(value)) as ICopyable);
     }
 }
        public RecurrencePattern(string value) : this()
        {
            if (string.IsNullOrWhiteSpace(value))
            {
                return;
            }
            var serializer = new RecurrencePatternSerializer();

            CopyFrom(serializer.Deserialize(new StringReader(value)) as ICopyable);
        }
        public RecurrencePattern(string value) :
            this()
        {
            if (value != null)
            {
                RecurrencePatternSerializer serializer = new RecurrencePatternSerializer();

                StringReader reader = new StringReader(value);
                CopyFrom(serializer.Deserialize(reader) as ICopyable);
                reader.Dispose();
            }
        }
Exemple #4
0
        /// <summary>
        /// Преобразует иерархию объектов SyncTranferData в Outlook Appointment
        /// </summary>
        /// <param name="transferData">The transfer data.</param>
        /// <param name="appItem">The app item.</param>
        /// <returns></returns>
        private OutlookAppointment TransferData2AppointmentItem(SyncTransferData transferData, OutlookAppointment appItem)
        {
            ITransferDataSerializable serializer = new AppointmentSerializer(appItem);

            serializer.Deserialize(transferData);
            foreach (SyncTransferData child in transferData.Childrens)
            {
                if (child.SyncDataName == RecurrencePatternTransferData.DataName)
                {
                    OutlookRecurrencePattern rPattern = appItem.GetRecurrencePattern();
                    serializer = new RecurrencePatternSerializer(rPattern);
                    if (serializer != null)
                    {
                        serializer.Deserialize(child);
                    }
                }
                else if (child.SyncDataName == RecipientTransferData.DataName)
                {
                    serializer = new RecipientSerializer();
                    string recipientName = (string)serializer.Deserialize(child);
                    if (string.IsNullOrEmpty(recipientName))
                    {
                        OutlookRecipient recipient = appItem.AddRecipient(recipientName);
                    }
                }
            }

            //Сохранем outlook appointment
            appItem.Save();
            //Переносим exception
            if (appItem.IsRecurring)
            {
                OutlookRecurrencePattern rPattern = appItem.GetRecurrencePattern();
                foreach (SyncTransferData child in transferData.Childrens)
                {
                    AppointmentTransferData exception = child as AppointmentTransferData;
                    if (exception != null)
                    {
                        OutlookAppointment appException = rPattern.GetOccurrence(exception.RecurrenceId);
                        TransferData2AppointmentItem(child, appException);
                        if (exception.DeletedException)
                        {
                            appException.Delete();
                        }
                    }
                }
            }
            return(appItem);
        }
        public void Bug3292737()
        {
            using (StringReader sr = new StringReader("FREQ=WEEKLY;UNTIL=20251126"))
            {
                RecurrencePatternSerializer serializer = new RecurrencePatternSerializer();
                var rp = (RecurrencePattern)serializer.Deserialize(sr);

                Assert.IsNotNull(rp);
                Assert.AreEqual(new DateTime(2025, 11, 26), rp.Until);
            }
        }
        public void Bug3119920()
        {
            using (StringReader sr = new StringReader("FREQ=WEEKLY;UNTIL=20251126T120000;INTERVAL=1;BYDAY=MO"))
            {
                DateTime start = DateTime.Parse("2010-11-27 9:00:00");
                RecurrencePatternSerializer serializer = new RecurrencePatternSerializer();
                RecurrencePattern rp = (RecurrencePattern)serializer.Deserialize(sr);
                RecurrencePatternEvaluator rpe = new RecurrencePatternEvaluator(rp);
                IList<IPeriod> recurringPeriods = rpe.Evaluate(new iCalDateTime(start), start, rp.Until, false);
                
                IPeriod period = recurringPeriods.ElementAt(recurringPeriods.Count() - 1);

                Assert.AreEqual(new iCalDateTime(2025, 11, 24, 9, 0, 0), period.StartTime);
            }
        }