Ejemplo n.º 1
0
        public override bool ProcessUpdate(Item oldItem, Item newItem)
        {
            GoogleClient client = new GoogleClient(user, storage);
            if (newItem.ItemTypeID != oldItem.ItemTypeID)
            {   // remove appointment from Calendar if ItemType changes
                ProcessDelete(oldItem);
                // base handles ItemType changing
                return base.ProcessUpdate(oldItem, newItem);
            }

            // update appointment on Calendar (if available)
            if (client.ConnectToCalendar)
            {   // update if Name, DueDate, EndDate, or Description have changed
                FieldValue fvOldStart = oldItem.GetFieldValue(FieldNames.DueDate);
                FieldValue fvNewStart = newItem.GetFieldValue(FieldNames.DueDate);
                FieldValue fvOldEnd = oldItem.GetFieldValue(FieldNames.EndDate);
                FieldValue fvNewEnd = newItem.GetFieldValue(FieldNames.EndDate);
                FieldValue fvOldDesc = oldItem.GetFieldValue(FieldNames.Description);
                FieldValue fvNewDesc = newItem.GetFieldValue(FieldNames.Description);
                string oldDesc = (fvOldDesc == null) ? null : fvOldDesc.Value;
                string newDesc = (fvNewDesc == null) ? null : fvNewDesc.Value;
                if (newItem.Name != oldItem.Name || newDesc != oldDesc ||
                    (fvNewStart != null && !string.IsNullOrEmpty(fvNewStart.Value) && (fvOldStart == null || fvNewStart.Value != fvOldStart.Value)) ||
                    (fvNewEnd != null && !string.IsNullOrEmpty(fvNewEnd.Value) && (fvOldEnd == null || fvNewEnd.Value != fvOldEnd.Value)))
                {
                    if (fvNewStart != null && fvNewEnd != null)
                    {
                        return client.UpdateCalendarEvent(newItem);
                    }
                }
            }

            return false;
        }