Exemplo n.º 1
0
        public static void CreateNewItem(SharepointList list,
            Dictionary<string, object> item,
            Action<bool, ICollection<TemplateDataBase>, Exception> callback)
        {
            TemplateDataBase tditem = new TemplateDataBase { ListName = list.Name, Data = item };

            SharepointEvents.RaisePrepareForSaveAsync(list, tditem, () =>
            {
                var wslist = CreateListSoapClient(list);

                Action doCreateItem = () =>
                {
                    SharepointListWrapper wrapper = new SharepointListWrapper();
                    wrapper.List = list;
                    wrapper.Callback = (success, spList, data) =>
                        {
                            if (callback != null)
                            {
                                callback(success, data, wrapper.Exception);
                            }
                        };

                    wslist.UpdateListItemsCompleted += new EventHandler<UpdateListItemsCompletedEventArgs>(wslist_UpdateListItemsCompleted);

                    var batch = CreateBatch(false);
                    AddBatchMethod(batch, "New", GetFieldValue(list, item, false));
                    wrapper.Batch = batch;
                    wslist.UpdateListItemsAsync(list.Name, batch, wrapper);
                };

                EnsureSharepointListColumnsCreated(list, (ex) =>
                {
                    if (callback != null)
                        callback(false, null, ex);
                }, wslist, doCreateItem);
            });
        }
Exemplo n.º 2
0
        private static void ResetList(SharepointListWrapper wrapper, XElement listElement)
        {
            wrapper.Data = new Dictionary<string, TemplateDataBase>();
            if (listElement != null)
            {
                wrapper.List.ParseColumns(listElement);
            }

            wrapper.List.SyncToken = null;
            wrapper.NeedMoreSync = true;

            //skip row parsing, we are reseting all the list
            EndSynchronize(wrapper);
        }
Exemplo n.º 3
0
        private static void DownloadListChanges(SharepointListWrapper wrapper)
        {
            var wslist = CreateListSoapClient(wrapper.List);

            XElement viewFields = null;
            if (wrapper.List.Columns == null)
            {
                wslist.GetListCompleted += new EventHandler<GetListCompletedEventArgs>(wslist_GetListCompleted);
                wslist.GetListAsync(wrapper.List.Name, wrapper);
            }
            else
            {
                wslist.GetListItemChangesSinceTokenCompleted += new EventHandler<GetListItemChangesSinceTokenCompletedEventArgs>(wslist_GetListItemChangesSinceTokenCompleted);

                viewFields = new XElement("ViewFields", (from c in wrapper.List.Columns
                                                         select new XElement("FieldRef", new XAttribute("Name", c.StaticName))).ToArray());

                wrapper.LastSyncRows = null;
                wslist.GetListItemChangesSinceTokenAsync(wrapper.List.Name, null, null, viewFields, null, null, wrapper.List.SyncToken, null, wrapper);
            }
        }
Exemplo n.º 4
0
        private static void EndSynchronize(SharepointListWrapper wrapper)
        {
            if (wrapper.NeedMoreSync)
            {
                DownloadListChanges(wrapper);
                return;
            }

            wrapper.List.LastSyncTime = DateTime.Now;
            wrapper.RaiseCallback(true);
        }
Exemplo n.º 5
0
        private static void downloadAttachments(SharepointListWrapper wrapper)
        {
            while (wrapper.LastSyncRows != null
                && wrapper.LastSyncRows.Count > 0)
            {
                var item = wrapper.LastSyncRows[0];
                if (item.ToBeDownloaded == null
                    || item.ToBeDownloaded.Count == 0)
                {
                    wrapper.LastSyncRows.RemoveAt(0);
                    continue;
                }
                break;
            }

            TemplateDataBase row = null;
            if(wrapper.LastSyncRows != null)
                row = wrapper.LastSyncRows.FirstOrDefault();

            if (row == null
                || row.ToBeDownloaded == null
                || row.ToBeDownloaded.Count == 0)
            {
                EndSynchronize(wrapper);
            }
            else
            {

                Uri uri = new Uri(row.ToBeDownloaded[0], UriKind.RelativeOrAbsolute);
                WebClient attachmentDownloader = new WebClient();
                attachmentDownloader.OpenReadCompleted += new OpenReadCompletedEventHandler(attachmentDownloader_OpenReadCompleted);
                if (!uri.IsAbsoluteUri)
                    uri = new Uri(Application.Current.Host.Source, uri);
                attachmentDownloader.OpenReadAsync(uri, wrapper);
            }
        }