using FluentMigrator; using Nop.Data; using Nop.Data.Mapping; using Nop.Data.Migrations; using Nop.Plugin.Widgets.FacebookPixel.Domain; using Nop.Services.Localization; using Nop.Web.Framework.Extensions; namespace Nop.Plugin.Widgets.FacebookPixel.Data; [NopMigration("2022-03-18 12:00:00", "Widgets.FacebookPixel 2.00. Conversions API", MigrationProcessType.Update)] public class ConversionsApiMigration : MigrationBase { #region Fields protected readonly ILanguageService _languageService; protected readonly ILocalizationService _localizationService; #endregion #region Ctor public ConversionsApiMigration(ILanguageService languageService, ILocalizationService localizationService) { _languageService = languageService; _localizationService = localizationService; } #endregion #region Methods /// /// Collect the UP migration expressions /// public override void Up() { if (!DataSettingsManager.IsDatabaseInstalled()) return; var facebookPixelConfigurationTableName = NameCompatibilityManager.GetTableName(typeof(FacebookPixelConfiguration)); //add ConversionsApiEnabled column if not exists if (!Schema.Table(facebookPixelConfigurationTableName).Column(nameof(FacebookPixelConfiguration.ConversionsApiEnabled)).Exists()) { Alter.Table(facebookPixelConfigurationTableName) .AddColumn(nameof(FacebookPixelConfiguration.ConversionsApiEnabled)) .AsBoolean().NotNullable().SetExistingRowsTo(false); } //add AccessToken column if not exists if (!Schema.Table(facebookPixelConfigurationTableName).Column(nameof(FacebookPixelConfiguration.AccessToken)).Exists()) { Alter.Table(facebookPixelConfigurationTableName) .AddColumn(nameof(FacebookPixelConfiguration.AccessToken)).AsString().Nullable(); } //rename Enabled column to PixelScriptEnabled if (Schema.Table(facebookPixelConfigurationTableName).Column("Enabled").Exists()) { Rename.Column("Enabled") .OnTable(facebookPixelConfigurationTableName) .To(nameof(FacebookPixelConfiguration.PixelScriptEnabled)); } //locales var (languageId, _) = this.GetLanguageData(); _localizationService.AddOrUpdateLocaleResource(new Dictionary { ["Plugins.Widgets.FacebookPixel.Configuration.Fields.AccessToken"] = "Access token", ["Plugins.Widgets.FacebookPixel.Configuration.Fields.AccessToken.Hint"] = "Enter the Facebook Conversions API access token.", ["Plugins.Widgets.FacebookPixel.Configuration.Fields.AccessToken.Required"] = "Access token is required", ["Plugins.Widgets.FacebookPixel.Configuration.Fields.PixelScriptEnabled"] = "Pixel enabled", ["Plugins.Widgets.FacebookPixel.Configuration.Fields.PixelScriptEnabled.Hint"] = "Toggle to enable/disable Facebook Pixel for this configuration.", ["Plugins.Widgets.FacebookPixel.Configuration.Fields.ConversionsApiEnabled"] = "Conversions API enabled", ["Plugins.Widgets.FacebookPixel.Configuration.Fields.ConversionsApiEnabled.Hint"] = "Toggle to enable/disable Facebook Conversions API for this configuration." }, languageId); _localizationService.DeleteLocaleResources(new List { "Plugins.Widgets.FacebookPixel.Configuration.Fields.Enabled", "Plugins.Widgets.FacebookPixel.Configuration.Fields.Enabled.Hint" }); } /// /// Collects the DOWN migration expressions /// public override void Down() { //nothing } #endregion }