public void ImportTaskListData(ShTaskListData listData) { Log.InfoFormat("Importing task list data to list {0}", listData.Name); var web = Context.Web; var list = web.Lists.GetByTitle(listData.Name); Context.Load(list); Context.ExecuteQuery(); if (list.ItemCount == 0) { ImportTaskRow(list, listData.Data.Rows); } }
public void ExportListData(ClientContext context, Web web, List <ShList> listConfigs, string outputDirectory) { foreach (var listConfig in listConfigs) { if (listConfig.ExportData) { var list = web.Lists.GetByTitle(listConfig.Title); var items = list.GetItems(new CamlQuery()); context.Load(list, l => l.Title, l => l.BaseType); if (listConfig.TemplateType == 171) { context.Load(items, includes => includes.Include(i => i["ID"], i => i["Title"], i => i["ParentID"], i => i["GtProjectPhase"], i => i["Order"])); } else { context.Load(items, includes => includes.Include(i => i["ID"], i => i["Title"], i => i["GtProjectPhase"])); } context.ExecuteQuery(); var listDataRows = new List <ShTaskListDataItem>(); foreach (var item in items) { if (listConfig.TemplateType == 171) { var phaseValue = item["GtProjectPhase"] as TaxonomyFieldValue; var parentIdValue = item["ParentID"] as FieldLookupValue; var parentId = parentIdValue != null ? parentIdValue.LookupId : 0; var order = item["Order"]; var taskItem = new ShTaskListDataItem(int.Parse(item["ID"].ToString()), parentId); taskItem.Order = double.Parse(order.ToString()); taskItem.Fields.Add(new ShFieldValue("Title", item["Title"].ToString())); if (phaseValue != null) { taskItem.Fields.Add(new ShFieldValue("GtProjectPhase", string.Format("{0}|{1}", phaseValue.Label, phaseValue.TermGuid))); } listDataRows.Add(taskItem); } else { var taskItem = new ShTaskListDataItem(int.Parse(item["ID"].ToString())); taskItem.Fields.Add(new ShFieldValue("Title", item["Title"].ToString())); var phaseValue = item["GtProjectPhase"] as TaxonomyFieldValue; if (phaseValue != null) { taskItem.Fields.Add(new ShFieldValue("GtProjectPhase", string.Format("{0}|{1}", phaseValue.Label, phaseValue.TermGuid))); } listDataRows.Add(taskItem); } } listDataRows.Sort((x, y) => x.Order.CompareTo(y.Order)); foreach (var item in listDataRows.Where(i => i.ParentID != 0)) { listDataRows.Single(i => i.ID == item.ParentID).Rows.Add(item); } var itemsToPersist = new List <ShTaskListDataItem>(); foreach (var item in listDataRows) { if (item.ParentID == 0) { itemsToPersist.Add(item); } } var listData = new ShTaskListData(); listData.Data.Rows = itemsToPersist; listData.Name = list.Title; listData.Type = list.BaseType.ToString(); var taxPersistanceProvider = new FilePersistanceProvider <ShListData>(Path.Combine(outputDirectory, String.Format("{0}-export-{1}.json", list.Title.ToLower().Replace(" ", ""), System.DateTime.Now.ToFileTime()))); taxPersistanceProvider.Save(listData); } } }