Exemplo n.º 1
0
        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"));
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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;
            }
        }