public override string ConvertValue(string sourceValue) { // Parse the value to get the media item ID // Example: sitecore://master/{A1207618-AFC1-465A-A45A-5F1C47A59B34}?lang=en&ver=1 var mediaItemRegexMatch = Regex.Match(sourceValue, @"sitecore:\/\/master\/(.*)\?lang=(.*)&ver=1"); var mediaItemId = mediaItemRegexMatch.Groups[1].Value; var mediaItemLanguage = mediaItemRegexMatch.Groups[2].Value; if (string.IsNullOrEmpty(mediaItemId) || !Guid.TryParse(mediaItemId, out var mediaItemGuid)) { return(sourceValue); } // Get the media item from source master db and map fields var mediaItem = _sourceMasterRepository.GetSitecoreItem(mediaItemGuid); if (string.IsNullOrEmpty(mediaItem.Name)) { return(sourceValue); } return(mediaItemGuid.ToString("D")); }
private void MigrateFileUploadMediaItem(FieldData fieldDataFormsRecord) { if (string.IsNullOrEmpty(fieldDataFormsRecord.Value) || !Guid.TryParse(fieldDataFormsRecord.Value, out var mediaItemGuid)) { return; } var mediaItem = _sourceMasterRepository.GetSitecoreItem(mediaItemGuid); if (string.IsNullOrEmpty(mediaItem.Name)) { return; } var mediaItemName = mediaItem.Name; var mediaItemExtension = mediaItem.Fields.FirstOrDefault(f => f.FieldId == new Guid(MediaItemConstants.ExtensionFieldId))?.Value; var mediaItemMediaBlobId = mediaItem.Fields.FirstOrDefault(f => f.FieldId == new Guid(MediaItemConstants.MediaFieldId))?.Value; if (string.IsNullOrEmpty(mediaItemMediaBlobId)) { return; } FileStorage fileStorage = new FileStorage() { Id = mediaItemGuid, FileName = $"{mediaItemName}.{mediaItemExtension}", Committed = true, Created = mediaItem.Created, FileContent = _sourceMasterRepository.GetSitecoreBlobData(new Guid(mediaItemMediaBlobId)) }; _sitecoreFormsDbRepository.CreateOrUpdateFileStorageFormRecord(fileStorage); }
public List <Guid> ConvertForms() { try { var sourceFormTemplateId = _metadataProvider.GetItemMetadataByTemplateName(FormTemplateName)?.sourceTemplateId; if (sourceFormTemplateId == null) { return(null); } var destPageTemplateId = _metadataProvider.GetItemMetadataByTemplateName(PageTemplateName)?.destTemplateId; if (destPageTemplateId == null) { return(null); } var sourceSectionTemplateId = _metadataProvider.GetItemMetadataByTemplateName(SectionTemplateName)?.sourceTemplateId; if (sourceSectionTemplateId == null) { return(null); } var sourceFieldTemplateId = _metadataProvider.GetItemMetadataByTemplateName(InputTemplateName)?.sourceTemplateId; if (sourceFieldTemplateId == null) { return(null); } var destButtonTemplateId = _metadataProvider.GetItemMetadataByTemplateName(ButtonTemplateName)?.destTemplateId; if (destButtonTemplateId == null) { return(null); } var forms = _sourceMasterRepository.GetSitecoreItems((Guid)sourceFormTemplateId); // Filter forms to select only included forms in appSettings "includeOnlyFormIds" parameter if (_appSettings.includeOnlyFormIds != null && _appSettings.includeOnlyFormIds.Any()) { forms = forms.Where(form => _appSettings.includeOnlyFormIds.Contains(form.ID)).ToList(); } // Filter forms to exclude forms listed in appSettings "excludeFormIds" parameter if (_appSettings.excludeFormIds != null && _appSettings.excludeFormIds.Any()) { forms = forms.Where(form => !_appSettings.excludeFormIds.Contains(form.ID)).ToList(); } // Filter sample forms out if (_appSettings.excludeSampleWffmForms) { forms = forms.Where(form => form.ParentID != _appSettings.itemReferences["sourceSampleFormsFolderId"]).ToList(); } if (_appSettings.enableOnlyAnalysisByDefault) { Console.WriteLine($" Found {forms.Count} forms to analyze."); Console.WriteLine(); Console.WriteLine(" Starting forms analysis..."); Console.WriteLine(); } else { Console.WriteLine($" Found {forms.Count} forms to convert."); Console.WriteLine(); Console.WriteLine(" Starting forms conversion..."); Console.WriteLine(); } var formCounter = 0; // Start progress bar var formAction = _appSettings.enableOnlyAnalysisByDefault ? "analyzed" : "converted"; ProgressBar.DrawTextProgressBar(formCounter, forms.Count, $"forms {formAction}"); foreach (var form in forms) { try { // Set current form being processed in a global variable for reporting _conversionReporter.CurrentFormId = form.ID.ToString("B").ToUpper(); _conversionReporter.CurrentFormName = form.Name; // Convert and Migrate Form items ConvertAndWriteItem(form, _appSettings.itemReferences["destFormFolderId"]); // Create Page item var pageId = Guid.Empty; SCItem pageItem = null; if (!_destMasterRepository.ItemHasChildrenOfTemplate((Guid)destPageTemplateId, form)) { // Create Page items for each form (only once) pageId = WriteNewItem((Guid)destPageTemplateId, form, "Page"); } else { // Get Page Item Id pageItem = _destMasterRepository.GetSitecoreChildrenItems((Guid)destPageTemplateId, form.ID).FirstOrDefault(item => string.Equals(item.Name, "Page", StringComparison.InvariantCultureIgnoreCase)); pageId = pageItem?.ID ?? form.ID; } if (pageItem == null) { pageItem = _destMasterRepository.GetSitecoreItem(pageId); } // Convert and Migrate Section items var sections = _sourceMasterRepository.GetSitecoreChildrenItems((Guid)sourceSectionTemplateId, form.ID); foreach (var section in sections) { ConvertAndWriteItem(section, pageId); _sectionAppearanceConverter.ConvertTitle(section); _sectionAppearanceConverter.ConvertInformation(section); } // Convert and Migrate Form Field items List <SCItem> formFields = new List <SCItem>(); formFields.AddRange(_sourceMasterRepository.GetSitecoreChildrenItems((Guid)sourceFieldTemplateId, form.ID)); foreach (var section in sections) { formFields.AddRange(_sourceMasterRepository.GetSitecoreChildrenItems((Guid)sourceFieldTemplateId, section.ID)); } foreach (var formField in formFields) { var parentItem = _sourceMasterRepository.GetSitecoreItem(formField.ParentID); var destParentId = parentItem.TemplateID == sourceFormTemplateId ? pageId : parentItem.ID; ConvertAndWriteItem(formField, destParentId); } // Convert Submit form section fields _submitConverter.Convert(form, pageItem); // Convert Form Appearance fields _formAppearanceConverter.ConvertTitle(form, pageItem); _formAppearanceConverter.ConvertIntroduction(form, pageItem); _formAppearanceConverter.ConvertFooter(form, pageItem); formCounter++; // Update progress bar ProgressBar.DrawTextProgressBar(formCounter, forms.Count, $"forms {formAction}"); } catch (Exception ex) { _logger.Log(new LogEntry(LoggingEventType.Error, string.Format("Error processing form ItemID = {0}", form.ID), ex)); throw; } } if (_appSettings.enableOnlyAnalysisByDefault) { Console.WriteLine(); Console.WriteLine(); Console.WriteLine(" Finished forms analysis."); Console.WriteLine(); } else { Console.WriteLine(); Console.WriteLine(); Console.WriteLine(" Finished forms conversion."); Console.WriteLine(); } // Write analysis results _conversionReporter.GenerateOutput(); return(forms.Select(form => form.ID).ToList()); } catch (Exception ex) { _logger.Log(new LogEntry(LoggingEventType.Error, "Error while converting forms.", ex)); throw; } }