Esempio n. 1
0
        public void Downgrade(IDotEntityTransaction transaction)
        {
            Db.DropColumn <MenuItem>(nameof(MenuItem.Description), transaction);
            Db.DropColumn <MenuItem>(nameof(MenuItem.ExtraData), transaction);

            var parentMenuItemIdCol = DotEntityDb.Provider.SafeEnclose("ParentMenuItemId");
            var parentIdCol         = DotEntityDb.Provider.SafeEnclose(nameof(MenuItem.ParentId));
            var menuItemTable       = DotEntityDb.GetTableNameForType <MenuItem>();

            Db.AddColumn <MenuItem, int>("ParentMenuItemId", 0, transaction);
            Db.Query($"UPDATE {menuItemTable} SET {parentMenuItemIdCol}={parentIdCol}", null, transaction);
            Db.DropColumn <MenuItem>(nameof(MenuItem.ParentId), transaction);
        }
Esempio n. 2
0
        public void Downgrade(IDotEntityTransaction transaction)
        {
            Db.DropColumn <OrderFulfillment>(nameof(OrderFulfillment.Locked), transaction);

            Db.DropConstraint(Relation.Create <Store, EntityStore>("Id", "StoreId"), transaction);
            Db.DropConstraint(Relation.Create <Product, ProductCatalog>("Id", "ProductId"), transaction);
            Db.DropConstraint(Relation.Create <Catalog, ProductCatalog>("Id", "CatalogId"), transaction);

            Db.DropTable <Store>(transaction);
            Db.DropTable <Catalog>(transaction);
            Db.DropTable <EntityStore>(transaction);
            Db.DropTable <ProductCatalog>(transaction);
            Db.DropTable <CatalogCountry>(transaction);
        }
Esempio n. 3
0
        public void Downgrade(IDotEntityTransaction transaction)
        {
            Db.DropConstraint(Relation.Create <User, StoreCredit>("Id", "UserId"), transaction);
            Db.DropTable <StoreCredit>(transaction);

            Db.DropColumn <User>(nameof(User.FirstActivationDate), transaction);
            Db.DropColumn <User>(nameof(User.IsAffiliate), transaction);
            Db.DropColumn <User>(nameof(User.AffiliateActive), transaction);
            Db.DropColumn <User>(nameof(User.AffiliateFirstActivationDate), transaction);
            Db.DropColumn <Order>(nameof(Order.UsedStoreCredits), transaction);
            Db.DropColumn <Order>(nameof(Order.StoreCredits), transaction);
            Db.DropColumn <Order>(nameof(Order.StoreCreditAmount), transaction);
            Db.DropColumn <Cart>(nameof(Cart.UseStoreCredits), transaction);
        }
Esempio n. 4
0
        public void Upgrade(IDotEntityTransaction transaction)
        {
            Db.CreateTable <StoreCredit>(transaction);
            Db.CreateConstraint(Relation.Create <User, StoreCredit>("Id", "UserId"), transaction, true);

            Db.AddColumn <User, bool>(nameof(User.IsAffiliate), true, transaction);
            Db.AddColumn <User, bool>(nameof(User.AffiliateActive), true, transaction);
            Db.AddColumn <User, DateTime?>(nameof(User.AffiliateFirstActivationDate), DateTime.UtcNow, transaction);
            Db.AddColumn <User, DateTime?>(nameof(User.FirstActivationDate), DateTime.UtcNow, transaction);
            Db.AddColumn <Order, bool>(nameof(Order.UsedStoreCredits), false, transaction);
            Db.AddColumn <Order, decimal>(nameof(Order.StoreCredits), 0, transaction);
            Db.AddColumn <Order, decimal>(nameof(Order.StoreCreditAmount), 0, transaction);
            Db.AddColumn <Cart, bool>(nameof(Cart.UseStoreCredits), false, transaction);
        }
Esempio n. 5
0
        public void Downgrade(IDotEntityTransaction transaction)
        {
            Db.DropTable <EntityTag>(transaction);
            Db.DropColumn <MenuItem>(nameof(MenuItem.OpenInNewWindow), transaction);

            var parentCategoryIdCol = DotEntityDb.Provider.SafeEnclose(nameof(Category.ParentCategoryId));
            var parentIdCol         = DotEntityDb.Provider.SafeEnclose(nameof(Category.ParentId));
            var categoryTable       = DotEntityDb.GetTableNameForType <Category>();

            Db.AddColumn <Category, int>(nameof(Category.ParentCategoryId), 0, transaction);
            Db.Query($"UPDATE {categoryTable} SET {parentCategoryIdCol}={parentIdCol}", null, transaction);
            Db.DropColumn <Category>(nameof(Category.ParentId), transaction);

            Db.DropColumn <ContentPage>(nameof(ContentPage.ParentId), transaction);
        }
Esempio n. 6
0
        private void MoveEntityToStore <T>(int storeId, IDotEntityTransaction transaction) where T : FoundationEntity
        {
            var entities = EntitySet <T> .Select();

            var entityName = typeof(T).Name;

            foreach (var entity in entities)
            {
                EntitySet <EntityStore> .Insert(new EntityStore()
                {
                    EntityId   = entity.Id,
                    EntityName = entityName,
                    StoreId    = storeId
                }, transaction);
            }
        }
Esempio n. 7
0
        public void Upgrade(IDotEntityTransaction transaction)
        {
            Db.CreateTable <EntityTag>(transaction);

            //execute the following only if it's not a fresh install
            if (transaction.CurrentlyRanVersions.All(x => x.GetType() != typeof(Version1)))
            {
                Db.AddColumn <MenuItem, bool>(nameof(MenuItem.OpenInNewWindow), false, transaction);
                var parentCategoryIdCol = DotEntityDb.Provider.SafeEnclose(nameof(Category.ParentCategoryId));
                var parentIdCol         = DotEntityDb.Provider.SafeEnclose(nameof(Category.ParentId));
                var categoryTable       = DotEntityDb.GetTableNameForType <Category>();
                Db.AddColumn <Category, int>(nameof(Category.ParentId), 0, transaction);
                Db.Query($"UPDATE {categoryTable} SET {parentIdCol}={parentCategoryIdCol}", null, transaction);
                Db.DropColumn <Category>(nameof(Category.ParentCategoryId), transaction);
                Db.AddColumn <ContentPage, int>(nameof(ContentPage.ParentId), 0, transaction);
            }
        }
Esempio n. 8
0
 public void Upgrade(IDotEntityTransaction transaction)
 {
     Db.AddColumn <Shipment, string>(nameof(Shipment.ShippingLabelUrl), "", transaction);
     Db.AddColumn <Shipment, string>(nameof(Shipment.TrackingUrl), "", transaction);
 }
Esempio n. 9
0
 public void Downgrade(IDotEntityTransaction transaction)
 {
     Db.DropColumn <Shipment>(nameof(Shipment.ShippingLabelUrl), transaction);
     Db.DropColumn <Shipment>(nameof(Shipment.TrackingUrl), transaction);
 }
Esempio n. 10
0
 public void Upgrade(IDotEntityTransaction transaction)
 {
     Db.AddColumn <OrderFulfillment, bool>(nameof(OrderFulfillment.Locked), true, transaction);
 }
Esempio n. 11
0
 public void Downgrade(IDotEntityTransaction transaction)
 {
     Db.DropColumn <OrderFulfillment>(nameof(OrderFulfillment.Locked), transaction);
 }
Esempio n. 12
0
 public void Upgrade(IDotEntityTransaction transaction)
 {
     Db.CreateTable <UiSlider>(transaction);
     Db.CreateConstraint(Relation.Create <Media, UiSlider>("Id", "MediaId"), transaction, true);
 }
Esempio n. 13
0
 public void Upgrade(IDotEntityTransaction transaction)
 {
     Db.CreateTable <SearchTerm>(transaction);
 }
Esempio n. 14
0
 public void Downgrade(IDotEntityTransaction transaction)
 {
     Db.DropTable <SearchTerm>(transaction);
 }
Esempio n. 15
0
        public void Upgrade(IDotEntityTransaction transaction)
        {
            Db.AddColumn <OrderFulfillment, bool>(nameof(OrderFulfillment.Locked), true, transaction);

            #region MultiStore and Catalog

            Db.CreateTable <Store>(transaction);
            Db.CreateTable <Catalog>(transaction);
            Db.CreateTable <EntityStore>(transaction);
            Db.CreateTable <ProductCatalog>(transaction);
            Db.CreateTable <CatalogCountry>(transaction);

            Db.CreateConstraint(Relation.Create <Store, EntityStore>("Id", "StoreId"), transaction, true);
            Db.CreateConstraint(Relation.Create <Product, ProductCatalog>("Id", "ProductId"), transaction, true);
            Db.CreateConstraint(Relation.Create <Catalog, ProductCatalog>("Id", "CatalogId"), transaction, true);

            //run following only if it's not a fresh install
            if (transaction.CurrentlyRanVersions.All(x => x.GetType() != typeof(Version1)))
            {
                //add a default store
                var store = new Store()
                {
                    Name = "Primary Store",
                    Live = true
                };
                EntitySet <Store> .Insert(store, transaction);

                var storeId = 1; //this will be the store id for new store
                //next create a default catalog
                var catalog = new Catalog()
                {
                    Name = "Primary Catalog",
                    IsCountrySpecific = false
                };
                EntitySet <Catalog> .Insert(catalog, transaction);

                EntitySet <EntityStore> .Insert(new EntityStore()
                {
                    EntityId   = 1,
                    StoreId    = 1,
                    EntityName = nameof(Catalog)
                }, transaction);

                Db.AddColumn <Setting, int>(nameof(Setting.StoreId), storeId, transaction);
                Db.AddColumn <Order, int>(nameof(Order.StoreId), storeId, transaction);

                //assign all products to this catalog
                var productTableName        = DotEntityDb.Provider.SafeEnclose(DotEntityDb.GetTableNameForType <Product>());
                var productCatalogTableName = DotEntityDb.Provider.SafeEnclose(DotEntityDb.GetTableNameForType <ProductCatalog>());
                var productIdCol            = DotEntityDb.Provider.SafeEnclose(nameof(ProductCatalog.ProductId));
                var catalogIdCol            = DotEntityDb.Provider.SafeEnclose(nameof(ProductCatalog.CatalogId));
                var idCol = DotEntityDb.Provider.SafeEnclose(nameof(ProductCatalog.Id));

                var query =
                    $"INSERT INTO {productCatalogTableName}({productIdCol}, {catalogIdCol}) SELECT {idCol}, 1 FROM {productTableName}";
                Db.Query(query, null, transaction);

                //update active status of plugins
                var pluginSetting = EntitySet <Setting> .Where(x =>
                                                               x.GroupName == nameof(PluginSettings) && x.Key == nameof(PluginSettings.SitePlugins)).Select().FirstOrDefault();

                if (pluginSetting != null)
                {
                    var pluginStatuses = JsonConvert.DeserializeObject <IList <PluginStatus> >(pluginSetting.Value);
                    foreach (var pluginStatus in pluginStatuses)
                    {
                        pluginStatus.ActiveStoreIds = pluginStatus.Active ? new List <int> {
                            store.Id
                        } : new List <int>();
                    }

                    pluginSetting.Value = JsonConvert.SerializeObject(pluginStatuses);
                    EntitySet <Setting> .Update(pluginSetting, transaction);
                }

                //update widgets
                pluginSetting = EntitySet <Setting> .Where(x =>
                                                           x.GroupName == nameof(PluginSettings) && x.Key == nameof(PluginSettings.SiteWidgets)).Select().FirstOrDefault();

                if (pluginSetting != null)
                {
                    var widgetStatuses = JsonConvert.DeserializeObject <IList <WidgetStatus> >(pluginSetting.Value);
                    foreach (var ws in widgetStatuses)
                    {
                        ws.StoreId = storeId;
                    }
                    pluginSetting.Value = JsonConvert.SerializeObject(widgetStatuses);
                    EntitySet <Setting> .Update(pluginSetting, transaction);
                }

                //update store ids to 0 for plugin settings as it is now global from this version
                EntitySet <Setting> .Update(new { storeId = 0 }, x => x.GroupName == nameof(PluginSettings), transaction);

                //update menus
                MoveEntityToStore <Menu>(storeId, transaction);
                //update content pages
                MoveEntityToStore <ContentPage>(storeId, transaction);
            }


            #endregion
        }
Esempio n. 16
0
        public void Upgrade(IDotEntityTransaction transaction)
        {
            //user
            Db.CreateTable <User>(transaction);
            Db.CreateTable <Role>(transaction);
            Db.CreateTable <Capability>(transaction);
            Db.CreateTable <UserRole>(transaction);
            Db.CreateTable <RoleCapability>(transaction);
            Db.CreateTable <UserCapability>(transaction);
            Db.CreateTable <Vendor>(transaction);
            Db.CreateTable <VendorUser>(transaction);
            Db.CreateTable <Address>(transaction);
            Db.CreateTable <Country>(transaction);
            Db.CreateTable <StateOrProvince>(transaction);
            Db.CreateTable <InviteRequest>(transaction);
            Db.CreateTable <UserPoint>(transaction);
            Db.CreateTable <Notification>(transaction);
            Db.CreateTable <NotificationEvent>(transaction);

            Db.CreateConstraint(Relation.Create <User, UserRole>("Id", "UserId"), transaction, true);
            Db.CreateConstraint(Relation.Create <Role, UserRole>("Id", "RoleId"), transaction, true);
            Db.CreateConstraint(Relation.Create <Role, RoleCapability>("Id", "RoleId"), transaction, true);
            Db.CreateConstraint(Relation.Create <Capability, RoleCapability>("Id", "CapabilityId"), transaction, true);
            Db.CreateConstraint(Relation.Create <Capability, UserCapability>("Id", "CapabilityId"), transaction, true);
            Db.CreateConstraint(Relation.Create <User, UserCapability>("Id", "UserId"), transaction, true);
            Db.CreateConstraint(Relation.Create <User, VendorUser>("Id", "UserId"), transaction, true);
            Db.CreateConstraint(Relation.Create <Vendor, VendorUser>("Id", "VendorId"), transaction, true);
            Db.CreateConstraint(Relation.Create <Country, Address>("Id", "CountryId"), transaction, true);
            Db.CreateConstraint(Relation.Create <User, UserPoint>("Id", "UserId"), transaction, true);
            Db.CreateConstraint(Relation.Create <User, Notification>("Id", "UserId"), transaction);

            //shop
            Db.CreateTable <Product>(transaction);
            Db.CreateTable <Category>(transaction);
            Db.CreateTable <ProductCategory>(transaction);
            Db.CreateTable <AvailableAttribute>(transaction);
            Db.CreateTable <AvailableAttributeValue>(transaction);
            Db.CreateTable <ProductAttribute>(transaction);
            Db.CreateTable <ProductAttributeValue>(transaction);
            Db.CreateTable <Manufacturer>(transaction);
            Db.CreateTable <ProductVendor>(transaction);
            Db.CreateTable <ProductVariant>(transaction);
            Db.CreateTable <ProductVariantAttribute>(transaction);
            Db.CreateTable <Media>(transaction);
            Db.CreateTable <ProductMedia>(transaction);
            Db.CreateTable <Review>(transaction);
            Db.CreateTable <ProductSpecificationGroup>(transaction);
            Db.CreateTable <ProductSpecification>(transaction);
            Db.CreateTable <ProductSpecificationValue>(transaction);
            Db.CreateTable <ProductRelation>(transaction);
            Db.CreateTable <Download>(transaction);
            Db.CreateTable <ItemDownload>(transaction);

            //cart
            Db.CreateTable <Cart>(transaction);
            Db.CreateTable <CartItem>(transaction);
            Db.CreateTable <Order>(transaction);
            Db.CreateTable <OrderItem>(transaction);
            Db.CreateTable <OrderFulfillment>(transaction);
            Db.CreateTable <Shipment>(transaction);
            Db.CreateTable <ShipmentItem>(transaction);
            Db.CreateTable <ShipmentHistory>(transaction);
            Db.CreateTable <PaymentTransaction>(transaction);
            Db.CreateTable <ReturnRequest>(transaction);

            Db.CreateConstraint(Relation.Create <Product, ProductCategory>("Id", "ProductId"), transaction, true);
            Db.CreateConstraint(Relation.Create <Category, ProductCategory>("Id", "CategoryId"), transaction, true);
            Db.CreateConstraint(Relation.Create <AvailableAttribute, AvailableAttributeValue>("Id", "AvailableAttributeId"), transaction, true);
            Db.CreateConstraint(Relation.Create <Product, ProductAttribute>("Id", "ProductId"), transaction);
            Db.CreateConstraint(Relation.Create <AvailableAttribute, ProductAttribute>("Id", "AvailableAttributeId"), transaction, true);
            Db.CreateConstraint(Relation.Create <AvailableAttributeValue, ProductAttributeValue>("Id", "AvailableAttributeValueId"), transaction);
            Db.CreateConstraint(Relation.Create <ProductAttribute, ProductAttributeValue>("Id", "ProductAttributeId"), transaction, true);
            Db.CreateConstraint(Relation.Create <Product, ProductVendor>("Id", "ProductId"), transaction, true);
            Db.CreateConstraint(Relation.Create <Vendor, ProductVendor>("Id", "VendorId"), transaction, true);
            Db.CreateConstraint(Relation.Create <Product, ProductVariant>("Id", "ProductId"), transaction, true);
            Db.CreateConstraint(Relation.Create <ProductVariant, ProductVariantAttribute>("Id", "ProductVariantId"), transaction, true);
            Db.CreateConstraint(Relation.Create <ProductAttribute, ProductVariantAttribute>("Id", "ProductAttributeId"), transaction, true);
            Db.CreateConstraint(Relation.Create <ProductAttributeValue, ProductVariantAttribute>("Id", "ProductAttributeValueId"), transaction);
            Db.CreateConstraint(Relation.Create <Media, ProductMedia>("Id", "MediaId"), transaction, true);
            Db.CreateConstraint(Relation.Create <Product, ProductMedia>("Id", "ProductId"), transaction, true);
            Db.CreateConstraint(Relation.Create <User, Review>("Id", "UserId"), transaction, true);
            Db.CreateConstraint(Relation.Create <Product, Review>("Id", "ProductId"), transaction, true);
            Db.CreateConstraint(Relation.Create <Order, Review>("Id", "OrderId"), transaction, true);
            Db.CreateConstraint(Relation.Create <Product, ProductSpecificationGroup>("Id", "ProductId"), transaction, true);
            Db.CreateConstraint(Relation.Create <Product, ProductSpecification>("Id", "ProductId"), transaction, true);
            Db.CreateConstraint(Relation.Create <ProductSpecification, ProductSpecificationValue>("Id", "ProductSpecificationId"), transaction, true);
            Db.CreateConstraint(Relation.Create <AvailableAttribute, ProductSpecification>("Id", "AvailableAttributeId"), transaction, true);
            Db.CreateConstraint(Relation.Create <AvailableAttributeValue, ProductSpecificationValue>("Id", "AvailableAttributeValueId"), transaction);
            Db.CreateConstraint(Relation.Create <Product, ProductRelation>("Id", "SourceProductId"), transaction, true);
            Db.CreateConstraint(Relation.Create <Product, ProductRelation>("Id", "DestinationProductId"), transaction, false);
            Db.CreateConstraint(Relation.Create <Product, Download>("Id", "ProductId"), transaction, true);
            Db.CreateConstraint(Relation.Create <Download, ItemDownload>("Id", "DownloadId"), transaction, true);

            Db.CreateTable <DiscountCoupon>(transaction);
            Db.CreateTable <RestrictionValue>(transaction);
            Db.CreateConstraint(Relation.Create <DiscountCoupon, RestrictionValue>("Id", "DiscountCouponId"), transaction, true);
            //tax
            Db.CreateTable <Tax>(transaction);
            Db.CreateTable <TaxRate>(transaction);
            Db.CreateConstraint(Relation.Create <Tax, TaxRate>("Id", "TaxId"), transaction, true);


            //content
            Db.CreateTable <ContentPage>(transaction);
            Db.CreateConstraint(Relation.Create <User, ContentPage>("Id", "UserId"), transaction, true);

            //emails
            Db.CreateTable <EmailAccount>(transaction);
            Db.CreateTable <EmailTemplate>(transaction);
            Db.CreateTable <EmailMessage>(transaction);
            Db.CreateConstraint(Relation.Create <EmailAccount, EmailTemplate>("Id", "EmailAccountId"), transaction, false);

            Db.CreateConstraint(Relation.Create <Cart, CartItem>("Id", "CartId"), transaction, true);
            Db.CreateConstraint(Relation.Create <User, Cart>("Id", "UserId"), transaction, true);
            Db.CreateConstraint(Relation.Create <Order, OrderItem>("Id", "OrderId"), transaction, true);
            Db.CreateConstraint(Relation.Create <User, Order>("Id", "UserId"), transaction, false);
            Db.CreateConstraint(Relation.Create <Product, CartItem>("Id", "ProductId"), transaction, true);
            Db.CreateConstraint(Relation.Create <Product, OrderItem>("Id", "ProductId"), transaction, true);
            Db.CreateConstraint(Relation.Create <Shipment, ShipmentItem>("Id", "ShipmentId"), transaction, true);
            Db.CreateConstraint(Relation.Create <Shipment, ShipmentHistory>("Id", "ShipmentId"), transaction, true);
            Db.CreateConstraint(Relation.Create <Order, OrderFulfillment>("Id", "OrderId"), transaction, true);
            //menus
            Db.CreateTable <Menu>(transaction);
            Db.CreateTable <MenuItem>(transaction);
            Db.CreateConstraint(Relation.Create <Menu, MenuItem>("Id", "MenuId"), transaction, true);

            //old password and active codes
            Db.CreateTable <PreviousPassword>(transaction);
            Db.CreateTable <UserCode>(transaction);
            Db.CreateConstraint(Relation.Create <User, PreviousPassword>("Id", "UserId"), transaction, true);

            Db.CreateTable <Currency>(transaction);

            //gdpr
            Db.CreateTable <Consent>(transaction);
            Db.CreateTable <ConsentLog>(transaction);
            Db.CreateTable <UserConsent>(transaction);
            Db.CreateTable <ConsentGroup>(transaction);
            Db.CreateConstraint(Relation.Create <Consent, ConsentLog>("Id", "ConsentId"), transaction, true);
            Db.CreateConstraint(Relation.Create <Consent, UserConsent>("Id", "ConsentId"), transaction, true);
            Db.CreateConstraint(Relation.Create <User, UserConsent>("Id", "UserId"), transaction, true);

            //warehouses
            Db.CreateTable <Warehouse>(transaction);
            Db.CreateTable <WarehouseInventory>(transaction);
            Db.CreateConstraint(Relation.Create <Product, WarehouseInventory>("Id", "ProductId"), transaction, true);
            Db.CreateConstraint(Relation.Create <Warehouse, WarehouseInventory>("Id", "WarehouseId"), transaction, true);
            //Db.CreateConstraint(Relation.Create<ProductVariant, WarehouseInventory>("Id", "ProductVariantId"), transaction, false);
            Db.CreateConstraint(Relation.Create <Address, Warehouse>("Id", "AddressId"), transaction, true);
            //settings, logs, and others
            Db.CreateTable <Setting>(transaction);
            Db.CreateTable <Log>(transaction);
            Db.CreateTable <SeoMeta>(transaction);
            Db.CreateTable <ScheduledTask>(transaction);
            Db.CreateTable <CustomLabel>(transaction);
            Db.CreateTable <EntityProperty>(transaction);

            Db.CreateTable <Subscription>(transaction);

            Db.CreateTable <Upload>(transaction);
            Db.CreateConstraint(Relation.Create <User, Upload>("Id", "UserId"), transaction, true);
        }
Esempio n. 17
0
 public void Downgrade(IDotEntityTransaction transaction)
 {
     Db.DropConstraint(Relation.Create <Media, UiSlider>("Id", "MediaId"), transaction);
     Db.DropTable <UiSlider>(transaction);
 }