Webiant Logo Webiant Logo
  1. No results found.

    Try your search with a different keyword or use * as a wildcard.

DataMigration.cs

using FluentMigrator;
using Nop.Core.Domain.Customers;
using Nop.Core.Domain.Messages;
using Nop.Core.Domain.Orders;
using Nop.Core.Domain.ScheduleTasks;
using Nop.Core.Domain.Security;
using Nop.Core.Domain.Shipping;
using Nop.Data.Mapping;

namespace Nop.Data.Migrations.UpgradeTo450;

[NopUpdateMigration("2021-04-23 00:00:00", "4.50", UpdateMigrationType.Data)]
public class DataMigration : Migration
{
    protected readonly INopDataProvider _dataProvider;

    public DataMigration(INopDataProvider dataProvider)
    {
        _dataProvider = dataProvider;
    }

    /// 
    /// Collect the UP migration expressions
    /// 
    public override void Up()
    {
        // add column
        var shipmentTableName = nameof(Shipment);
        var collectedDateUtcColumnName = "ReadyForPickupDateUtc";

        if (!Schema.Table(shipmentTableName).Column(collectedDateUtcColumnName).Exists())
        {
            Alter.Table(shipmentTableName)
                .AddColumn(collectedDateUtcColumnName).AsDateTime2().Nullable();
        }

        // add message template
        if (!_dataProvider.GetTable().Any(pr => string.Compare(pr.Name, MessageTemplateSystemNames.SHIPMENT_READY_FOR_PICKUP_CUSTOMER_NOTIFICATION, true) == 0))
        {
            var messageTemplate = _dataProvider.InsertEntity(
                new MessageTemplate
                {
                    Name = MessageTemplateSystemNames.SHIPMENT_READY_FOR_PICKUP_CUSTOMER_NOTIFICATION,
                    Subject = "Your order from %Store.Name% has been %if (!%Order.IsCompletelyReadyForPickup%) partially endif%ready for pickup.",
                    Body = $"

{Environment.NewLine} %Store.Name%{Environment.NewLine}
{Environment.NewLine}
{Environment.NewLine}Hello %Order.CustomerFullName%!,{Environment.NewLine}
{Environment.NewLine}Good news! You order has been%if (!%Order.IsCompletelyReadyForPickup%) partially endif%ready for pickup.{Environment.NewLine}
{Environment.NewLine}Order Number: %Order.OrderNumber%{Environment.NewLine}
{Environment.NewLine}Order Details: %Order.OrderURLForCustomer%{Environment.NewLine}
{Environment.NewLine}Date Ordered: %Order.CreatedOn%{Environment.NewLine}
{Environment.NewLine}
{Environment.NewLine}
{Environment.NewLine}
{Environment.NewLine}Billing Address{Environment.NewLine}
{Environment.NewLine}%Order.BillingFirstName% %Order.BillingLastName%{Environment.NewLine}
{Environment.NewLine}%Order.BillingAddress1%{Environment.NewLine}
{Environment.NewLine}%Order.BillingAddress2%{Environment.NewLine}
{Environment.NewLine}%Order.BillingCity% %Order.BillingZipPostalCode%{Environment.NewLine}
{Environment.NewLine}%Order.BillingStateProvince% %Order.BillingCountry%{Environment.NewLine}
{Environment.NewLine}
{Environment.NewLine}
{Environment.NewLine}
{Environment.NewLine}%if (%Order.Shippable%) Shipping Address{Environment.NewLine}
{Environment.NewLine}%Order.ShippingFirstName% %Order.ShippingLastName%{Environment.NewLine}
{Environment.NewLine}%Order.ShippingAddress1%{Environment.NewLine}
{Environment.NewLine}%Order.ShippingAddress2%{Environment.NewLine}
{Environment.NewLine}%Order.ShippingCity% %Order.ShippingZipPostalCode%{Environment.NewLine}
{Environment.NewLine}%Order.ShippingStateProvince% %Order.ShippingCountry%{Environment.NewLine}
{Environment.NewLine}
{Environment.NewLine}Shipping Method: %Order.ShippingMethod%{Environment.NewLine}
{Environment.NewLine}
{Environment.NewLine} endif% Products ready for pickup:{Environment.NewLine}
{Environment.NewLine}
{Environment.NewLine}%Shipment.Product(s)%{Environment.NewLine}

{Environment.NewLine}", IsActive = true, EmailAccountId = _dataProvider.GetTable().FirstOrDefault()?.Id ?? 0 } ); } //#5547 var scheduleTaskTableName = NameCompatibilityManager.GetTableName(typeof(ScheduleTask)); //add column if (!Schema.Table(scheduleTaskTableName).Column(nameof(ScheduleTask.LastEnabledUtc)).Exists()) { Alter.Table(scheduleTaskTableName) .AddColumn(nameof(ScheduleTask.LastEnabledUtc)).AsDateTime2().Nullable(); } else { Alter.Table(scheduleTaskTableName).AlterColumn(nameof(ScheduleTask.LastEnabledUtc)).AsDateTime2().Nullable(); } //#5939 if (!_dataProvider.GetTable().Any(pr => string.Compare(pr.SystemName, "SalesSummaryReport", StringComparison.InvariantCultureIgnoreCase) == 0)) { var salesSummaryReportPermission = _dataProvider.InsertEntity( new PermissionRecord { Name = "Admin area. Access sales summary report", SystemName = "SalesSummaryReport", Category = "Orders" } ); //add it to the Admin role by default var adminRole = _dataProvider .GetTable() .FirstOrDefault(x => x.IsSystemRole && x.SystemName == NopCustomerDefaults.AdministratorsRoleName); _dataProvider.InsertEntity( new PermissionRecordCustomerRoleMapping { CustomerRoleId = adminRole.Id, PermissionRecordId = salesSummaryReportPermission.Id } ); } //add column var returnRequestTableName = NameCompatibilityManager.GetTableName(typeof(ReturnRequest)); var returnedQuantityColumnName = "ReturnedQuantity"; if (!Schema.Table(returnRequestTableName).Column(returnedQuantityColumnName).Exists()) { Alter.Table(returnRequestTableName) .AddColumn(returnedQuantityColumnName).AsInt32().NotNullable().SetExistingRowsTo(0); } //#6053 if (!_dataProvider.GetTable().Any(pr => string.Compare(pr.SystemName, "ManageAppSettings", StringComparison.InvariantCultureIgnoreCase) == 0)) { var manageConnectionStringPermission = _dataProvider.InsertEntity( new PermissionRecord { Name = "Admin area. Manage App Settings", SystemName = "ManageAppSettings", Category = "Configuration" } ); //add it to the Admin role by default var adminRole = _dataProvider .GetTable() .FirstOrDefault(x => x.IsSystemRole && x.SystemName == NopCustomerDefaults.AdministratorsRoleName); _dataProvider.InsertEntity( new PermissionRecordCustomerRoleMapping { CustomerRoleId = adminRole.Id, PermissionRecordId = manageConnectionStringPermission.Id } ); } } public override void Down() { //add the downgrade logic if necessary } }