public void ImportListToFolder(string ektronConnectionId, string sharepointConnectionId, long folderId, MappingTask map, bool isDeleteallowed, int languageid) { Log.WriteVerbose(string.Format(BeginLogMessage, CLASS_NAME, "ImportListToFolder(string ektronConnectionId, string sharepointConnectionId, string objectDefinitionId, long folderId, List<ObjectInstance> objectinstancelist, Dictionary<string, string> SharePointFieldToMetaId = null)")); TaskManagerClient taskClient = new TaskManagerClient(); EventManagerClient eventClient = new EventManagerClient(); string workflowName = string.Empty; if (isDeleteallowed) workflowName = string.Concat("SharepointDeleteAllowed|Ektron|", map.SourceObject.Id, "|", folderId, "|ListDependant;" + languageid); else workflowName = string.Concat("Sharepoint|Ektron|", map.SourceObject.Id, "|", folderId, "|ListDependant;" + languageid); //check workflow and delete if it already exists. DxhWorkflow workflow = taskClient.GetWorkflow(workflowName); if (workflow != null) { taskClient.DeleteWorkflow(workflowName); } //1. Create workflow tasks LoginTask login = taskClient.CreateLoginTask("Ektron", ektronConnectionId); SaveObjectInstanceTask saveSharepointToEktron = taskClient.CreateSaveObjectTask("Ektron"); LogoutTask logout = taskClient.CreateLogoutTask("Ektron"); //2. Assemble and save workflow workflow = taskClient.CreateWorkflow(workflowName); ((ICollection<ContextBusTask>)workflow.Tasks).Add(login); ((ICollection<ContextBusTask>)workflow.Tasks).Add(map); ((ICollection<ContextBusTask>)workflow.Tasks).Add(saveSharepointToEktron); ((ICollection<ContextBusTask>)workflow.Tasks).Add(logout); taskClient.SaveWorkflow(workflow); DxHUtils.SaveMapping(AdapterName, sharepointConnectionId, map, workflow, Ektron.Cms.Common.EkEnumeration.CMSObjectTypes.Folder, folderId, "", languageid); //3. Create associated Event Defintions for workflow. EventDefinition eventDef = new EventDefinition() { Id = workflowName, Payload = map.SourceObject }; eventClient.AssociateWorkflowsToEvent(new List<string> { workflow.WorkflowName }, eventDef); if (this.GetListType(map.SourceObject.Id).ToLower() == "list") { eventDef = new EventDefinition() { Id = string.Concat("SP|List|SPReceiverEvent|", this.GetSiteUrlandListTitle(map.SourceObject.Id)), Payload = map.SourceObject }; eventClient.AssociateWorkflowsToEvent(new List<string> { workflow.WorkflowName }, eventDef); eventDef = new EventDefinition() { Id = string.Concat("SP|ListItemAttachment|SPReceiverEvent|", this.GetSiteUrlandListTitle(map.SourceObject.Id)), Payload = map.SourceObject }; eventClient.AssociateWorkflowsToEvent(new List<string> { workflow.WorkflowName }, eventDef); } else if (this.GetListType(map.SourceObject.Id).ToLower() == "documentlibrary") { eventDef = new EventDefinition() { Id = string.Concat("SP|DocumentLibrary|SPReceiverEvent|", this.GetSiteUrlandListTitle(map.SourceObject.Id)), Payload = map.SourceObject }; eventClient.AssociateWorkflowsToEvent(new List<string> { workflow.WorkflowName }, eventDef); } if (isDeleteallowed) { string deleteworkflowname = string.Concat("SharepointDelete|Ektron|", map.SourceObject.Id, "|", folderId, "|ListDependant;" + languageid); DxhWorkflow deleteworkflow = taskClient.GetWorkflow(deleteworkflowname); if (deleteworkflow != null) { taskClient.DeleteWorkflow(deleteworkflowname); } // Create Delete Workflow Tasks LoginTask deletelogin = taskClient.CreateLoginTask("Ektron", ektronConnectionId); DeleteObjectInstanceTask deleteObjecttask = taskClient.CreateDeleteObjectTask("Ektron"); LogoutTask deletelogout = taskClient.CreateLogoutTask("Ektron"); //Assemble the Workflow deleteworkflow = taskClient.CreateWorkflow(deleteworkflowname); ((ICollection<ContextBusTask>)deleteworkflow.Tasks).Add(deletelogin); ((ICollection<ContextBusTask>)deleteworkflow.Tasks).Add(map); ((ICollection<ContextBusTask>)deleteworkflow.Tasks).Add(deleteObjecttask); ((ICollection<ContextBusTask>)deleteworkflow.Tasks).Add(deletelogout); taskClient.SaveWorkflow(deleteworkflow); eventDef = new EventDefinition() { Id = string.Concat("SPReceiverEvent|Delete|", this.GetSiteUrlandListTitle(map.SourceObject.Id)), Payload = map.SourceObject }; eventClient.AssociateWorkflowsToEvent(new List<string> { deleteworkflow.WorkflowName }, eventDef); } ////4. Retrieve Sharepoint items and raise event for each one. SharePointClientImportHelper.GetInstance().StartImport(sharepointConnectionId, AdapterName, workflowName, map.SourceObject); Log.WriteVerbose(string.Format(FinishLogMessage, CLASS_NAME, "ImportListToFolder(string ektronConnectionId, string sharepointConnectionId, string objectDefinitionId, long folderId, List<ObjectInstance> objectinstancelist, Dictionary<string, string> SharePointFieldToMetaId = null)")); }
public void ImportItemsToFolderWithOutListDependency(string ektronConnectionId, string sharepointConnectionId, string objectDefinitionId, long folderId, ConcurrentDictionary<int, MappingTask> listIdWithMappingTask, bool isDeleteallowed, int languageid) { Log.WriteVerbose(string.Format(BeginLogMessage, CLASS_NAME, "ImportItemsToFolderWithOutListDependency(string ektronConnectionId, string sharepointConnectionId, string objectDefinitionId, long folderId, IEnumerable<int> objectsharepointIdList)")); foreach (var listAndMapping in listIdWithMappingTask) { List<ObjectInstance> objectinstancelist = this.GetFilteredObjectInstanceList(sharepointConnectionId, listAndMapping.Value.SourceObject, new List<int>() { listAndMapping.Key }); TaskManagerClient taskClient = new TaskManagerClient(); EventManagerClient eventClient = new EventManagerClient(); foreach (ObjectInstance item in objectinstancelist) { string id = item.Fields.Single(p => p.Id.ToLower().Equals("id")).Value.ToString(); string workflowName = string.Empty; if (isDeleteallowed) workflowName = string.Concat("SharepointDeleteAllowed|Ektron|", objectDefinitionId, "|", folderId, "|ItemDependant|" + id + ";" + languageid); else workflowName = string.Concat("Sharepoint|Ektron|", objectDefinitionId, "|", folderId, "|ItemDependant|" + id + ";" + languageid); //check workflow and delete if it already exists. DxhWorkflow workflow = taskClient.GetWorkflow(workflowName); if (workflow != null) { taskClient.DeleteWorkflow(workflowName); } //1. Create workflow tasks LoginTask login = taskClient.CreateLoginTask("Ektron", ektronConnectionId); SaveObjectInstanceTask saveSharepointToEktron = taskClient.CreateSaveObjectTask("Ektron"); LogoutTask logout = taskClient.CreateLogoutTask("Ektron"); //2. Assemble and save workflow workflow = taskClient.CreateWorkflow(workflowName); ((ICollection<ContextBusTask>)workflow.Tasks).Add(login); ((ICollection<ContextBusTask>)workflow.Tasks).Add(listAndMapping.Value); ((ICollection<ContextBusTask>)workflow.Tasks).Add(saveSharepointToEktron); ((ICollection<ContextBusTask>)workflow.Tasks).Add(logout); taskClient.SaveWorkflow(workflow); DxHUtils.SaveMapping(AdapterName, sharepointConnectionId, listAndMapping.Value, workflow, Ektron.Cms.Common.EkEnumeration.CMSObjectTypes.Folder, folderId, "", languageid); //3. Create associated Event Defintions for workflow. EventDefinition eventDef = new EventDefinition() { Id = workflowName, Payload = listAndMapping.Value.SourceObject }; eventClient.AssociateWorkflowsToEvent(new List<string> { workflow.WorkflowName }, eventDef); if (this.GetListType(objectDefinitionId).ToLower() == "list") { eventDef = new EventDefinition() { Id = string.Concat("SP|List|SPReceiverEvent|", this.GetSiteUrlandListTitle(objectDefinitionId)), Payload = listAndMapping.Value.SourceObject }; eventClient.AssociateWorkflowsToEvent(new List<string> { workflow.WorkflowName }, eventDef); eventDef = new EventDefinition() { Id = string.Concat("SP|ListItemAttachment|SPReceiverEvent|", this.GetSiteUrlandListTitle(objectDefinitionId)), Payload = listAndMapping.Value.SourceObject }; eventClient.AssociateWorkflowsToEvent(new List<string> { workflow.WorkflowName }, eventDef); } else if (this.GetListType(objectDefinitionId).ToLower() == "documentlibrary") { eventDef = new EventDefinition() { Id = string.Concat("SP|DocumentLibrary|SPReceiverEvent|", this.GetSiteUrlandListTitle(objectDefinitionId)), Payload = listAndMapping.Value.SourceObject }; eventClient.AssociateWorkflowsToEvent(new List<string> { workflow.WorkflowName }, eventDef); } if (isDeleteallowed) { string deleteworkflowname = string.Concat("SharepointDelete|Ektron|", objectDefinitionId, "|", folderId, "|ItemDependant|" + id + ";" + languageid); DxhWorkflow deleteworkflow = taskClient.GetWorkflow(deleteworkflowname); if (deleteworkflow != null) { taskClient.DeleteWorkflow(deleteworkflowname); } // Create Delete Workflow Tasks LoginTask deletelogin = taskClient.CreateLoginTask("Ektron", ektronConnectionId); DeleteObjectInstanceTask deleteObjecttask = taskClient.CreateDeleteObjectTask("Ektron"); LogoutTask deletelogout = taskClient.CreateLogoutTask("Ektron"); //Assemble the Workflow deleteworkflow = taskClient.CreateWorkflow(deleteworkflowname); ((ICollection<ContextBusTask>)deleteworkflow.Tasks).Add(deletelogin); ((ICollection<ContextBusTask>)deleteworkflow.Tasks).Add(listAndMapping.Value); ((ICollection<ContextBusTask>)deleteworkflow.Tasks).Add(deleteObjecttask); ((ICollection<ContextBusTask>)deleteworkflow.Tasks).Add(deletelogout); taskClient.SaveWorkflow(deleteworkflow); eventDef = new EventDefinition() { Id = string.Concat("SPReceiverEvent|Delete|", this.GetSiteUrlandListTitle(objectDefinitionId)), Payload = listAndMapping.Value.SourceObject }; eventClient.AssociateWorkflowsToEvent(new List<string> { deleteworkflow.WorkflowName }, eventDef); } item.Fields.Where(p => p.Id.Equals("DxHSource")).FirstOrDefault().Value = "FromEktron"; EventInstance itemEvent = new EventInstance() { Id = workflowName, Payload = item }; eventClient.RaiseEvent(itemEvent); } Log.WriteVerbose(string.Format(FinishLogMessage, CLASS_NAME, "ImportItemsToFolderWithOutListDependency(string ektronConnectionId, string sharepointConnectionId, string objectDefinitionId, long folderId, IEnumerable<int> objectsharepointIdList)")); } }