public override void Process(ServiceProcess process, object arguments) { DecommissionParameters parameters = (DecommissionParameters)arguments; using (var coreService = Client.GetCoreService()) { process.SetCompletePercentage(25); try { coreService.DecommissionPublicationTarget(parameters.ItemUri); process.Complete(); } catch (Exception e) { process.SetStatus(e.Message); process.Failed = true; } } }
public override void Process(ServiceProcess process, object arguments) { ImageUploadParameters parameters = (ImageUploadParameters)arguments; try { string directory = parameters.Directory; if (!Directory.Exists(directory)) { process.Failed = true; process.Complete(string.Format(CultureInfo.InvariantCulture, "Directory '{0}' does not exist. No images were uploaded!", directory)); return; } string[] files = Directory.GetFiles(directory); int i = 0; _client = PowerTools.Common.CoreService.Client.GetCoreService(); //Get all component titles in the target folder _componentTitles = getAllComponentTitles(parameters.FolderUri); foreach (string file in files) { process.SetStatus("Importing image: " + Path.GetFileName(file)); process.SetCompletePercentage(++i * 100 / files.Length); FileInfo fileInfo = new FileInfo(file); if (fileInfo.Exists) { string mmType = GetMultiMediaType(fileInfo.Extension); if (mmType != null) { BinaryContentData bcd = new BinaryContentData { UploadFromFile = file, MultimediaType = new LinkToMultimediaTypeData { IdRef = mmType }, Filename = file, IsExternal = false }; ComponentData compData = new ComponentData { LocationInfo = new LocationInfo { OrganizationalItem = new LinkToOrganizationalItemData { IdRef = parameters.FolderUri //Organizational item }, }, ComponentType = ComponentType.Multimedia, Title = MakeValidFileName(fileInfo.Name), Schema = new LinkToSchemaData { IdRef = parameters.SchemaUri //schemaData.IdRef }, IsBasedOnMandatorySchema = false, IsBasedOnTridionWebSchema = true, ApprovalStatus = new LinkToApprovalStatusData { IdRef = "tcm:0-0-0" }, Id = "tcm:0-0-0", BinaryContent = bcd }; ComponentData comp = (ComponentData)_client.Create(compData, new ReadOptions()); } } } process.Complete(); } finally { if (_client != null) { _client.Close(); } } }
public override void Process(ServiceProcess process, object arguments) { _duplicateData = new List <DuplicateBinariesData>(); fileNames = new Dictionary <string, string>(); DuplicateBinariesParameters parameters = (DuplicateBinariesParameters)arguments; //_duplicateBinariesData = new DuplicateBinariesData(); //_duplicateBinariesData.PublicationId = parameters.PublicationId; process.SetCompletePercentage(10); process.SetStatus("working"); using (var coreService = Client.GetCoreService()) { try { process.SetCompletePercentage(15); process.SetStatus("Creating publication filter"); // Create a filter to only fetch multimedia components from the publication RepositoryItemsFilterData filter = new RepositoryItemsFilterData(); filter.ItemTypes = new[] { ItemType.Component }; filter.ComponentTypes = new[] { ComponentType.Multimedia }; XElement mmComponentsListXml = coreService.GetListXml(parameters.PublicationId, filter); XNamespace tcm = "http://www.tridion.com/ContentManager/5.0"; double progressIncrement = mmComponentsListXml.Value.Length == 0 ? 0 : 80 / mmComponentsListXml.Value.Length; //nasty progress calculation int i = 1; // keep a list of all the file names from the items in the publication // the if a file already exists in the filenames, it is considered a 'duplicate file name' foreach (XElement itemElem in mmComponentsListXml.Descendants(tcm + "Item")) { string itemId = itemElem.Attribute("ID").Value; string binaryFileName = GetFileNameFromComponent(coreService, itemId); fileNames.Add(itemId, binaryFileName); int progressPercentage = (int)(20 + i * progressIncrement); // some more nasty progress calculation process.SetCompletePercentage(progressPercentage); i++; } var duplicateValues = fileNames.ToLookup(a => a.Value). Where(b => b.Count() > 1); // todo - refactor this below item to select the id's and values from the file // name list foreach (var group in duplicateValues) { foreach (KeyValuePair <string, string> kvp in group) { _duplicateData.Add(new DuplicateBinariesData { ItemTcmId = kvp.Key, ItemFileName = kvp.Value, }); } } process.Complete("Done"); } catch (Exception ex) { // TODO: Update the GUI that there has been error - solution below is temporary process.Failed = true; process.Complete(string.Format("Failure finding duplicate items reason: {0}", ex.Message)); return; } } }