Ejemplo n.º 1
0
        private ProductDefinition BuildProductDefinitionWithEachAttributeTypes()
        {
            var productDefinition = new ProductDefinition
            {
                Name           = "productDefinition1",
                PropertyGroups = new List <ProductPropertyDefinitionGroup>
                {
                    new ProductPropertyDefinitionGroup
                    {
                        Name        = "group1",
                        DisplayName = new LocalizedString(new Dictionary <string, string> {
                            { "en-US", "group 1" }
                        }),
                        Properties = new List <ProductPropertyDefinition>
                        {
                            BuildAttributeDefinition("attr Text", "attrText", PropertyDataType.Text),
                            BuildAttributeDefinition("attr Boolean", "attrBoolean", PropertyDataType.Boolean),
                            BuildAttributeDefinition("attr Currency", "attrCurrency", PropertyDataType.Currency),
                            BuildAttributeDefinition("attr Datetime", "attrDatetime", PropertyDataType.DateTime),
                            BuildAttributeDefinition("attr Decimal", "attrDecimal", PropertyDataType.Decimal),
                            BuildAttributeDefinition("attr Number", "attrNumber", PropertyDataType.Number),
                        }
                    }
                }
            };

            return(productDefinition);
        }
        private Product CreateBaseProduct(ProductDefinition productDefinition, string sku, string variantSku, string name, string imageId)
        {
            if (sku.Length > 30)
            {
                sku = sku.Substring(0, 30);
            }

            if (!String.IsNullOrWhiteSpace(variantSku) && variantSku.Length > 30)
            {
                variantSku = variantSku.Substring(0, 30);
            }

            var product = Product.SingleOrDefault(p => p.Sku == sku && p.VariantSku == variantSku) ?? new Product();

            product.Sku                   = sku;
            product.VariantSku            = variantSku;
            product.Name                  = name;
            product.ProductDefinition     = productDefinition;
            product.DisplayOnSite         = true;
            product.PrimaryImageMediaId   = imageId;
            product.ThumbnailImageMediaId = imageId;
            product.Save();

            return(product);
        }
Ejemplo n.º 3
0
        public void DeleteProduct(Quantumart.QP8.BLL.Article product, ProductDefinition definition, bool doNotSendNotifications, bool checkRootArticlePermissions, string[] channels)
        {
            Dictionary <int, Product <DeletingMode> > dictionary;

            Article[] products;

            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Suppress))
            {
                dictionary = DoWithLogging(
                    () => GetProductsToBeProcessed(product, definition, ef => ef.DeletingMode, DeletingMode.Delete, false),
                    "Receiving articles to be deleted for product {id}", product.Id
                    );
                products = doNotSendNotifications ? null : Productservice.GetSimpleProductsByIds(new[] { product.Id });
            }

            DeleteProducts(dictionary, product.Id, checkRootArticlePermissions);

            if (!doNotSendNotifications)
            {
                using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Suppress))
                {
                    SendNotification(products, product.Id, channels);
                }
            }
        }
Ejemplo n.º 4
0
        private static async Task <List <Lookup> > GetLookups(ProductDefinition productDef, IOvertureClient client)
        {
            var kvaLookupAttributes = productDef.VariantProperties
                                      .Where(vp => vp.IsKeyVariant && vp.DataType == PropertyDataType.Lookup)
                                      .Select(vp => vp.LookupDefinition.LookupName);

            var lookupTasks = new Dictionary <string, Task <Lookup> >();

            foreach (var name in kvaLookupAttributes)
            {
                if (lookupTasks.ContainsKey(name))
                {
                    continue;
                }
                var request = new GetProductLookupRequest
                {
                    LookupName = name
                };

                lookupTasks.Add(name, client.SendAsync(request));
            }
            var lookupResults = await Task.WhenAll(lookupTasks.Values).ConfigureAwait(false);

            return(lookupResults.Where(x => x != null).ToList());
        }
        public ActionResult RemovePartialProduct(
            [FromBody] RemovePartialProductRequest request, bool isLive = false)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest();
            }

            Content rootContent = _contentDefinitionService
                .GetDefinitionById(request.ProductDefinitionId, isLive);

            Content partialContent = _editorPartialContentService
                .FindContentByPath(rootContent, request.ContentPath);

            var productDefinition = new ProductDefinition { StorageSchema = partialContent };

            var qpArticle = _articleService.Read(request.RemoveArticleId);

            if (qpArticle != null)
            {
                _deleteAction.DeleteProduct(qpArticle, productDefinition);
            }

            return NoContent();
        }
        private void AddCustomDefinitionFields(ProductDefinition definition, ProductTypeViewModel sfProductType)
        {
            var dataType = _session.Query <DataType>().FirstOrDefault(x => x.TypeName == "ShortText");

            if (sfProductType.ProductAttributes == null)
            {
                Log.Info($"No product attributes found to associate to product definition '{sfProductType.Title}'");
                return;
            }

            foreach (var attribute in sfProductType.ProductAttributes)
            {
                Log.Info(
                    $"Adding attribute/definition field '{attribute.Title}' to product definition '{definition.Name}'");
                var definitionField = new ProductDefinitionField()
                {
                    Multilingual      = true,
                    DisplayOnSite     = attribute.Visible,
                    Deleted           = false,
                    RenderInEditor    = true,
                    IsVariantProperty = true,
                    SortOrder         = 0,
                    Name     = attribute.Title.Trim(),
                    DataType = dataType
                };

                definition.AddProductDefinitionField(definitionField);
            }
        }
        private static async Task <List <Lookup> > GetLookups(ProductDefinition productDef, IOvertureClient client)
        {
            var kvaLookupAttributes = productDef.VariantProperties.Where(vp => vp.IsKeyVariant && vp.DataType == PropertyDataType.Lookup)
                                      .Select(vp => vp.LookupDefinition.LookupName);

            var results     = new List <Lookup>();
            var lookupTasks = new List <Task <Lookup> >();

            foreach (var name in kvaLookupAttributes.Distinct())
            {
                var request = new GetProductLookupRequest
                {
                    LookupName = name
                };

                lookupTasks.Add(client.SendAsync(request));
            }

            var lookupResults = await Task.WhenAll(lookupTasks).ConfigureAwait(false);

            foreach (var lookup in lookupResults)
            {
                if (lookup != null)
                {
                    results.Add(lookup);
                }
            }

            return(results);
        }
        public TemplateItem BuildProductTemplateFromDefinition(ProductDefinition definition)
        {
            var builder    = new TemplateBuilder();
            ID  templateId = definition.SitecoreVariantTemplateId();

            builder.CreateTemplate(definition.Name + " Variant", templateId, definition.Name + " Variant", definition.GetSitecoreBaseVariantTemplateIds());

            _productDefinitionIdToTemplateIdMap[definition.ProductDefinitionId] = templateId;

            var combinedFields = definition.ProductDefinitionFields.Where(x => x.IsVariantProperty && !x.Deleted && !x.DataType.Deleted).ToList();

            if (combinedFields.Any())
            {
                ID  sectionId       = definition.SitecoreTemplateSectionDynamicDefinitionsForVariant(templateId);
                var resourceManager = ObjectFactory.Instance.Resolve <IResourceManager>();
                var userService     = ObjectFactory.Instance.Resolve <IUserService>();
                builder.CreateSection(resourceManager.GetLocalizedText(userService.GetCurrentUserCulture(), "Tabs", "DynamicFields"), sectionId, 150);

                int sortOrder = 10;
                foreach (var definitionField in combinedFields.Where(x => x.RenderInEditor))
                {
                    CreateDynamicItemField(builder, definitionField, sortOrder, sectionId);
                    sortOrder += 10;
                }
            }

            var template = builder.Build();

            template.AddToFieldList(FieldIDs.Icon, SitecoreConstants.UCommerceIconFolder + "/ui/map.png");

            template.SetRevision(definition.Guid.Derived(definition.ModifiedOn));

            return(template);
        }
        private ProductDefinitionField CreateFiield(PropertyInfo propertyInfo, ProductDefinition definition)
        {
            var fieldAttribute = propertyInfo.AssertGetAttribute<ProductFieldAttribute>();
            var fieldName = fieldAttribute.Name.IsNotEmpty()
                ? fieldAttribute.Name
                : propertyInfo.Name;

            var field = definition.ProductDefinitionFields
                .EmptyIfNull()
                .SingleOrDefault(x => x.Name == fieldName);

            if (field == null)
            {
                var dataType = _session.QueryOver<DataType>()
                    .Where(x => x.TypeName == fieldAttribute.DataType)
                    .SingleOrDefault();

                field = new ProductDefinitionField
                {
                    Name = fieldName,
                    DataType = dataType
                };

                definition.AddProductDefinitionField(field);
            }

            field.DisplayOnSite = fieldAttribute.DisplayOnSite;
            field.Multilingual = fieldAttribute.Multilingual;
            field.RenderInEditor = fieldAttribute.RenderInEditor;
            field.Searchable = fieldAttribute.Searchable;
            field.SortOrder = fieldAttribute.SortOrder;
            field.Facet = fieldAttribute.Facet;
            field.IsVariantProperty = fieldAttribute.IsVariantProperty;
            return field;
        }
Ejemplo n.º 10
0
 public void FinishTransaction(ProductDefinition product, string transactionId)
 {
     // Kongregate recommends consuming purchases on the server instead of the
     // client, so there's no client-side logic for finishing purchases by default.
     //
     // TODO: Optionally allow the client to consume items after a purchase.
 }
        private void AddProductDefinitionFieldIfDoesntExist(ProductDefinition definition, string name, string typeName,
                                                            bool displayOnWebsite, bool variantProperty, bool promotoToFacet, string displayName)
        {
            if (definition.GetDefinitionFields().Any(f => f.Name == name))
            {
                return;
            }

            var field = ProductDefinitionField.SingleOrDefault(f =>
                                                               f.Name == name && f.ProductDefinition.ProductDefinitionId ==
                                                               definition.ProductDefinitionId) ??
                        new ProductDefinitionFieldFactory().NewWithDefaults(name);

            field.Name              = name;
            field.DataType          = DataType.SingleOrDefault(d => d.TypeName == typeName);
            field.Deleted           = false;
            field.Multilingual      = false;
            field.DisplayOnSite     = displayOnWebsite;
            field.IsVariantProperty = variantProperty;
            field.RenderInEditor    = true;
            field.Facet             = promotoToFacet;

            definition.AddProductDefinitionField(field);
            definition.Save();
        }
Ejemplo n.º 12
0
        private void AddProductDefinitionFieldIfDoesntExist(ProductDefinition definition, string name, string typeName, bool displayOnWebsite, bool variantProperty, bool promotoToFacet, string displayName)
        {
            if (definition.GetDefinitionFields().Any(f => f.Name == name))
            {
                return;
            }

            var field = ProductDefinitionField.SingleOrDefault(f => f.Name == name && f.ProductDefinition.ProductDefinitionId == definition.ProductDefinitionId) ?? new ProductDefinitionFieldFactory().NewWithDefaults(name);

            field.Name              = name;
            field.DataType          = DataType.SingleOrDefault(d => d.TypeName == typeName);
            field.Deleted           = false;
            field.Multilingual      = false;
            field.DisplayOnSite     = displayOnWebsite;
            field.IsVariantProperty = variantProperty;
            field.RenderInEditor    = true;
            field.Facet             = promotoToFacet;

            //Helpers.DoForEachCulture(language =>
            //    {
            //        if (field.GetDescription(language) == null)
            //            field.AddProductDefinitionFieldDescription(new ProductDefinitionFieldDescription { CultureCode = language, DisplayName = displayName, Description = displayName });
            //    });

            definition.AddProductDefinitionField(field);
            definition.Save();
        }
Ejemplo n.º 13
0
        public void OnPurchaseSucceeded(IOSStoreKitResult item)
        {
            switch (item.State)
            {
            case InAppPurchaseState.Deferred:
                return;

            case InAppPurchaseState.Restored:
                ProductDefinition definition = definitions.FirstOrDefault(x => x.storeSpecificId == item.ProductIdentifier);
                if (definition == null || definition.type == ProductType.Subscription || DBManager.isPurchased(definition.id))
                {
                    return;
                }
                break;

            case InAppPurchaseState.Failed:
                OnPurchaseFailed(item.Error.Message, item.Error.Code);
                return;
            }

            string transactionId = item.TransactionIdentifier;

            #if UNITY_EDITOR
            //allow for multiple test purchases with unique transactions
            transactionId = (System.DateTime.UtcNow - new System.DateTime(1970, 1, 1, 0, 0, 0, System.DateTimeKind.Utc)).TotalSeconds.ToString();
            #endif

            callback.OnPurchaseSucceeded(item.ProductIdentifier, item.Receipt, transactionId);
        }
Ejemplo n.º 14
0
        /// <summary>
        /// Called by Unity Purchasing when a transaction has been recorded.
        /// Store systems should perform any housekeeping here, such as closing transactions or consuming consumables.
        /// </summary>
        public virtual void FinishTransaction(ProductDefinition product, string transactionId)
        {
            //IN THE CURRENT VERSION: nothing to do here!
            //consumables are consumed automatically on PlayFab's side after 5 seconds.

            /*
             * //do not consume non-consumable products
             * if (string.IsNullOrEmpty(transactionId) || product.type != ProductType.Consumable)
             *  return;
             */

            /*
             * //but also do not consume virtual products (power-ups etc.) automatically,
             * //if they are not set to be consumed instantly (i.e. their usage count is above zero)
             * IAPObject obj = IAPManager.GetIAPObject(product.id);
             * if(obj.editorType != IAPType.Currency && obj.usageCount > 0)
             *  return;
             */

            /*
             * ConsumeItemRequest request = new ConsumeItemRequest()
             * {
             *  ItemInstanceId = transactionId,
             *  ConsumeCount = 1
             * };
             *
             * PlayFabClientAPI.ConsumeItem(request, OnTransactionFinished, OnPurchaseFailed);
             */
        }
        private Product CreateProductOnCategory(Category category, ProductDefinition productDefinition, string sku,
                                                string name, decimal price, string shortDescription = "", string longDescription = "")
        {
            var product = CreateBaseProduct(productDefinition, sku, null, name);

            GenericHelpers.DoForEachCulture(
                language =>
            {
                if (!product.HasDescription(language))
                {
                    product.AddProductDescription(new ProductDescription()
                    {
                        CultureCode      = language,
                        DisplayName      = name,
                        ShortDescription = shortDescription,
                        LongDescription  = longDescription
                    });
                }
            });

            CreateProductPricesForProduct(category, price, product);

            // Ucommerce checks whether the product already exists in the create
            // when creating the new relation.
            product.AddCategory(category, 0);

            product.Save();

            return(product);
        }
Ejemplo n.º 16
0
 /// <summary>
 /// Gets the <see cref="ProductDefinition"/> associated with the given Unity product Id.
 /// </summary>
 /// <returns>true if the inventory contains requested Unity product Id; otherwise, false.</returns>
 public bool GetUnityProductDefinition(string unityProductId, out ProductDefinition unityProduct)
 {
     lock (_inventoryLock)
     {
         return(_catalog.TryGetValue(unityProductId, out unityProduct));
     }
 }
Ejemplo n.º 17
0
        public PipelineExecutionResult Execute(InstallationPipelineArgs subject)
        {
            var sharedFieldRepository = ObjectFactory.Instance.Resolve <IRepository <SharedField> >();
            var sharedFieldsToSave    = new List <SharedField>();
            var productDefinitions    = ProductDefinition.All().ToList();
            var categoryDefinitions   = Definition.All().Where(x => x.DefinitionType == DefinitionType.Get(1)).ToList();

            foreach (var productDefinition in productDefinitions)
            {
                sharedFieldsToSave.Add(new SharedField()
                {
                    FieldValue = GetXmlLayoutValueForProduct(),
                    FieldId    = FieldIDs.LayoutField.Guid,
                    ItemId     = productDefinition.Guid.Derived("__Standard Values") // This must be set on the Standard Values item. Not the template item directly.
                });
            }

            foreach (var categoryDefinition in categoryDefinitions)
            {
                sharedFieldsToSave.Add(new SharedField()
                {
                    FieldValue = GetXmlLayoutValueForCategory(),
                    FieldId    = FieldIDs.LayoutField.Guid,
                    ItemId     = categoryDefinition.Guid.Derived("__Standard Values") // This must be set on the Standard Values item. Not the template item directly.
                });
            }

            sharedFieldRepository.Save(sharedFieldsToSave);

            return(PipelineExecutionResult.Success);
        }
        private static IDefinitionField GetDefinitionField(FieldChange fieldChange, Product product)
        {
            var definition      = ProductDefinition.SingleOrDefault(x => x.Name == product.ProductDefinition.Name);
            var definitionField = definition.GetDefinitionFields().SingleOrDefault(x => x.Name == fieldChange.Definition.Name);

            return(definitionField);
        }
Ejemplo n.º 19
0
        private static void UpdateDefinition(Article product, ProductDefinition definition, Dictionary <string, string> actionParameters)
        {
            string fieldIdString;

            if (actionParameters.TryGetValue(FieldIdParameterKey, out fieldIdString))
            {
                int fieldId = int.Parse(fieldIdString);

                var articleDefinition = definition.StorageSchema.Fields.OfType <Association>().FirstOrDefault(f => f.FieldId == fieldId);

                if (articleDefinition != null)
                {
                    string articleIdString;

                    if (actionParameters.TryGetValue(ArticleIdParameterKey, out articleIdString))
                    {
                        articleDefinition.CloningMode = CloningMode.UseExisting;
                        int articleId = int.Parse(articleIdString);
                        product.FieldValues.Find(fv => fv.Field.Id == fieldId).Value = articleId.ToString();
                    }
                    else
                    {
                        articleDefinition.CloningMode = CloningMode.Ignore;
                    }
                }
            }
        }
Ejemplo n.º 20
0
        public TemplateItem BuildProductTemplateFromDefinition(ProductDefinition definition)
        {
            var builder = new TemplateBuilder();

            ID templateId = definition.SitecoreTemplateId();

            builder.CreateTemplate(definition.Name, templateId, definition.Name, definition.GetSitecoreBaseTemplateIds());
            _productDefinitionIdToTemplateIdMap[definition.ProductDefinitionId] = templateId;

            var definitionFields = definition.ProductDefinitionFields.Where(x => x.RenderInEditor && !x.Deleted && !x.IsVariantProperty).ToList();

            if (definitionFields.Any())
            {
                ID  sectionId       = definition.SitecoreTemplateSectionDynamicDefinitions(templateId);
                var resourceManager = ObjectFactory.Instance.Resolve <IResourceManager>();
                var userService     = ObjectFactory.Instance.Resolve <IUserService>();
                builder.CreateSection(resourceManager.GetLocalizedText(userService.GetCurrentUserCulture(), "Tabs", "DynamicFields"), sectionId, 150);

                int sortOrder = 10;
                foreach (var definitionField in definitionFields)
                {
                    CreateDynamicItemField(builder, definitionField, sortOrder, sectionId);
                    sortOrder += 10;
                }
            }
            var templateItem = builder.Build();

            templateItem.AddToFieldList(FieldIDs.Icon, _iconFolder + "/ui/map.png");
            return(templateItem);
        }
 public void ProductDefinitionSaved(ProductDefinition definition)
 {
     foreach (var provider in _providers)
     {
         provider.ProductDefinitionSaved(definition);
     }
 }
Ejemplo n.º 22
0
        void IStore.Purchase(ProductDefinition product, string developerPayload)
        {
            if (!productsByID.ContainsKey(product.storeSpecificId))
            {
                storeEvents.OnPurchaseFailed(new PurchaseFailureDescription(product.id, PurchaseFailureReason.ProductUnavailable, "UnknownProduct"));
                return;
            }

            var productInfo = productsByID[product.storeSpecificId];
            PurchaseIntentReq purchaseIntentReq = new PurchaseIntentReq
            {
                PriceType        = productInfo.PriceType,
                ProductId        = productInfo.ProductId,
                DeveloperPayload = developerPayload
            };

            var task = iapClient.CreatePurchaseIntent(purchaseIntentReq)
                       .AddOnSuccessListener((intentResult) =>
            {
                PurchaseInitentCreated(intentResult, product);
            })
                       .AddOnFailureListener((exception) =>
            {
                storeEvents.OnPurchaseFailed(new PurchaseFailureDescription(product.id, PurchaseFailureReason.Unknown, exception.Message));
            });
        }
Ejemplo n.º 23
0
        public Article GetProductById(int id, bool isLive = false, ProductDefinition productDefinition = null)
        {
            var token  = CallMethod("GetProductById", "id = {0}, isLive = {1}", id, isLive);
            var result = _productService.GetProductById(id, isLive, productDefinition);

            EndMethod(token, result);
            return(result);
        }
        private void CreateTies(Category accessories, ProductDefinition accessoryDefinition)
        {
            var ties = CreateChildCategory(accessories, "Ties");

            CreateProductOnCategory(ties, accessoryDefinition, "19849", "Paul Smith Accessories Classic Blue with Brown & Pink Stripe Silk Woven Tie", 69.50M, "", "<ul><li>Classic Stripe Tie</li><li>Tie length : 140cm</li><li>Blade width : 9cm </li><li>Blue with brown and pink stripes</li><li>100% silk (Made in Italy)</li><li>Style Number : AGXA/764L/R38/VP</li></ul><p>As featured on <a href=\"http://www.pritchards.co.uk/accessories-14/ties-25/paul-smith-accessories-classic-blue-with-19849.htm\">Pritchards.co.uk</a></p>");
            CreateProductOnCategory(ties, accessoryDefinition, "19324", "Hugo Boss Black Dark Red Ultra Slim Knitted Tie", 65, "", "<ul><li>Ultra slim knitted tie</li><li>Length: 145 cm </li><li> Width: 5 cm</li><li>Squared end</li><li>100% High-quality wool</li><li>Style Number : 5023476 10156986 01 504</li></ul><p>As featured on <a href=\"http://www.pritchards.co.uk/accessories-14/ties-25/hugo-boss-black-burgundy-ultra-slim-19324.htm\">Pritchards.co.uk</a></p>");
            CreateProductOnCategory(ties, accessoryDefinition, "20301", "Hugo Boss Black Pink & White Flower Pattern Silk Woven Tie", 65, "Silky soft tie from Hugo Boss", "<ul><li>Flower Pattern Silk Tie</li><li>Tie Length : 145cm</li><li>Blade Width : 7.5cm</li><li>Black With Pink &amp; White Flowers</li><li>100% Silk (Made in Italy)</li><li>Style Number : 50227733 10156957 01 001</li></ul><p>As featured on <a href=\"http://www.pritchards.co.uk/accessories-14/ties-25/hugo-boss-black-pink-white-flower-20301.htm\">Pritchards.co.uk</a></p>");
        }
        private void CreateScarves(Category accessories, ProductDefinition accessoryDefinition)
        {
            var scarves = CreateChildCategory(accessories, "Scarves");

            CreateProductOnCategory(scarves, accessoryDefinition, "LBAS", "Luxury Baby Alpaca Scarf", 99, "", "<ul><li>100% Baby Alpaca Wool</li><li>180cm x 130cm (plus tassel fringe)</li><li>Fair Trade</li><li>Hypo-allergenic</li></ul><p>As featured on <a href=\"http://www.amazon.co.uk/Luxury-Threads-100%25-Alpaca-Throw/dp/B008WMLGCO/ref=sr_1_5?s=kitchen&ie=UTF8&qid=1349966612&sr=1-5\">Luxury Threads</a></p>");
            CreateProductOnCategory(scarves, accessoryDefinition, "20178", "Hugo Boss Black Frando Multi Colour Square Check Pattern Wool Scarf", 55, "", "<ul><li>Embroidered Hugo Boss Logo</li><li>Tassled Ends</li><li>Size 180 cm x 29 cm (including tassels)</li><li>Multi Colour Square Check Pattern</li><li>100% Virgin Wool</li><li>Style Number : 50230552 10159101 01 641</li></ul><p>As featured on <a href=\"http://www.pritchards.co.uk/accessories-14/scarves-32/hugo-boss-black-frando-multi-colour-20178.htm\">Pritchards.co.uk</a></p>");
            CreateProductOnCategory(scarves, accessoryDefinition, "20180", "Hugo Boss Black Farion Multi Colour Stripe ", 55, "", "<ul><li>Embroidered Hugo Boss logo</li><li>Tasselled ends</li><li>Size 180 cm x 25 cm (including tassels)</li><li>Multi Colour Stripe</li><li>100% Knitted Wool</li><li>Style Number : 50226493 10157685 01 960</li></ul><p>As featured on <a href=\"http://www.pritchards.co.uk/accessories-14/scarves-32/hugo-boss-black-farion-multi-colour-20180.htm\">Pritchards.co.uk</a></p>");
        }
Ejemplo n.º 26
0
 public void DeleteProduct(Quantumart.QP8.BLL.Article product, ProductDefinition definition)
 {
     using (var transaction = CreateTransaction())
     {
         DeleteProduct(product, definition, true, false, null);
         transaction.Commit();
     }
 }
Ejemplo n.º 27
0
        public string GetCommaSeperatedProductVariantTemplatesList()
        {
            var productDefinitions = ProductDefinition.All().Select(x => x.Name).ToList();

            return(productDefinitions.Any()
                                ? productDefinitions.Aggregate((x, y) => x + " Variant," + y + " Variant")
                                : "");
        }
Ejemplo n.º 28
0
        public void UpdateSubscription(
            Product oldProduct, Product newProduct, GooglePlayStoreProrationMode prorationMode)
        {
            if (!IsGooglePlayInAppBillingServiceAvailable())
            {
                return;
            }

            Purchase oldPurchase;

            if (!_inventory.GetPurchase(oldProduct.definition, out oldPurchase))
            {
                _billingUtil.LogErrorFormat(
                    "Cannot find the subscription purchase record to be updated: {0}",
                    oldProduct.definition.storeSpecificId);
                return;
            }

            if (_productInPurchaseFlow != null)
            {
                _billingUtil.RunOnMainThread(() =>
                                             _callback.OnPurchaseFailed(
                                                 new PurchaseFailureDescription(newProduct.definition.id,
                                                                                PurchaseFailureReason.ExistingPurchasePending,
                                                                                string.Format("A purchase for {0} is already in progress.",
                                                                                              _productInPurchaseFlow.id))));
                return;
            }

            _productInPurchaseFlow = newProduct.definition;
            using (var billingFlowParamBuilder = new AndroidJavaObject(Constants.BillingFlowParamsBuilder))
            {
                SkuDetails skuDetails;
                if (!_inventory.GetSkuDetails(newProduct.definition.storeSpecificId, out skuDetails))
                {
                    // A SKU that has ProductDefinition should appear in the inventory. If not, the issue could be
                    // transient so that it asks to try again later.
                    _callback.OnPurchaseFailed(
                        new PurchaseFailureDescription(newProduct.definition.id,
                                                       PurchaseFailureReason.ProductUnavailable,
                                                       string.Format("Cannot update subscription for {0} now, please try again later.",
                                                                     _productInPurchaseFlow.id)));
                    return;
                }

                billingFlowParamBuilder.Call <AndroidJavaObject>(
                    Constants.BillingFlowParamsBuilderSetSkuDetailsMethod, skuDetails.ToJava());
                billingFlowParamBuilder.Call <AndroidJavaObject>(
                    Constants.BillingFlowParamsBuilderSetOldSkuMethod,
                    oldPurchase.ProductId, oldPurchase.PurchaseToken);
                billingFlowParamBuilder.Call <AndroidJavaObject>(
                    Constants.BillingFlowParamsBuilderSetReplaceSkusProrationModeMethod,
                    (int)prorationMode);

                LaunchBillingFlow(billingFlowParamBuilder);
            }
        }
        public void AcknowledgePurchase(string purchaseToken, ProductDefinition product, GooglePurchase googlePurchase, Action <ProductDefinition, GooglePurchase, IGoogleBillingResult> onAcknowledge)
        {
            AndroidJavaObject acknowledgePurchaseParams = GetAcknowledgePurchaseParamsClass().CallStatic <AndroidJavaObject>("newBuilder");

            acknowledgePurchaseParams = acknowledgePurchaseParams.Call <AndroidJavaObject>("setPurchaseToken", purchaseToken);
            acknowledgePurchaseParams = acknowledgePurchaseParams.Call <AndroidJavaObject>("build");

            m_BillingClient.Call("acknowledgePurchase", acknowledgePurchaseParams, new GoogleAcknowledgePurchaseListener(product, googlePurchase, onAcknowledge));
        }
Ejemplo n.º 30
0
 public void Purchase(ProductDefinition product, string developerPayload)
 {
     // Keep track of non consumables.
     if (product.type != ProductType.Consumable)
     {
         m_PurchasedProducts.Add(product.storeSpecificId);
     }
     m_Biller.OnPurchaseSucceeded(product.storeSpecificId, "{ \"this\" : \"is a fake receipt\" }", Guid.NewGuid().ToString());
 }
Ejemplo n.º 31
0
        /// <summary>
        /// Called by Unity Purchasing when a transaction has been recorded.
        /// Store systems should perform any housekeeping here, such as closing transactions or consuming consumables.
        /// </summary>
        public virtual void FinishTransaction(ProductDefinition product, string transactionId)
        {
            if (product.type != ProductType.Consumable)
            {
                return;
            }

            AndroidInAppPurchaseManager.Client.Consume(product.storeSpecificId);
        }
Ejemplo n.º 32
0
        private static ProductDefinition CreateProductDefinition(string name)
        {
            var productDefinition = ProductDefinition.SingleOrDefault(d => d.Name == name) ?? new ProductDefinition();

            productDefinition.Name = name;

            productDefinition.Save();
            return(productDefinition);
        }
Ejemplo n.º 33
0
        public void TestFindProduct()
        {
            ProductDefinition product = new ProductDefinition
            {
                Id = "SomeId"
            };
            this.productList.Add(product);

            Assert.AreEqual(product, this.productList[product.Id]);
        }
        public void TestInitialize()
        {
            JsonConvert.DefaultSettings = () => new JsonSerializerSettings
            {
                Formatting = Formatting.None,
                Converters = new JsonConverter[] { new JsonKnownTypeConverter() }
            };

            string jsonProduct = AssemblyResourceReader.ReadAsString("Test_Data.Metadata.json");
            this.Product = JsonConvert.DeserializeObject<ProductDefinition>(jsonProduct);
        }
Ejemplo n.º 35
0
  void Start() {
    m_products = new ProductDefinition[productInfos.Length];
    for (int i = 0; i < productInfos.Length; i++) {
#if UNITY_IOS
      m_products[i] = new ProductDefinition(productInfos[i].GlobalId, productInfos[i].AppleId, productInfos[i].type);
#elif UNITY_ANDROID
      m_products[i] = new ProductDefinition(productInfos[i].GlobalId, productInfos[i].AndroidId, productInfos[i].type);
#endif
    }
    RequestBillingProducts();
  }
Ejemplo n.º 36
0
 public List<QATestDefinition> GenerateTestQATestDefinitionList(ProductDefinition product, int numberOfTests)
 {
     var masterTestList = new List<QATestDefinition>();
     for (int i = 1; i <= numberOfTests; i++)
     {
         masterTestList.Add(new QATestDefinition(Guid.NewGuid(),
                                                         product.Id,
                                                         product.Name + " Test " + i,
                                                         "This is Test Number " + i + " for the " + product.Name + " Product."));
     }
     return masterTestList;
 }
Ejemplo n.º 37
0
 public void BeforeActiveDate()
 {
     ProductDefinition p = new ProductDefinition { ActiveDate = DateTime.Now.AddMinutes(2) };
     Assert.IsFalse(p.IsActive);
 }
Ejemplo n.º 38
0
 public void Null()
 {
     ProductDefinition p = new ProductDefinition { ActiveDate = null };
     Assert.IsTrue(p.IsActive);
 }
Ejemplo n.º 39
0
 public void Save(ProductDefinition product)
 {
     _productDefinitions.Value.Save(product);
 }
Ejemplo n.º 40
0
        public void RemoveDefinitionFields(ProductDefinition product, params string[] names)
        {
            foreach (var name in names)
            {
                try
                {

                    ProductDefinitionField toBeRemoved = _productDefinitionFields.Value.SingleOrDefault(x => x.Name == name && x.ProductDefinition == product && !x.Deleted);
                    if (toBeRemoved != null) product.ProductDefinitionFields.Remove(toBeRemoved);
                }
                catch (Exception ex)
                {
                    string message = string.Format("'{0}' product definition field doesn't exist.", name);
                    throw new InvalidOperationException(message, ex);
                }
            }
        }
Ejemplo n.º 41
0
        public ProductDefinition ProductDefinition(string name, string description)
        {
            var productDefinition = _productDefinitions.Value.SingleOrDefault(x => x.Name == name);
            if (productDefinition == null)
            {
                productDefinition = new ProductDefinition { Name = name, Description = description, };
            }
            productDefinition.Deleted = false;

            return productDefinition;
        }
Ejemplo n.º 42
0
        private static Table ToTable(ProductDefinition productDefinition)
        {
            var t = new Table
            {
                Name = productDefinition.Name,
                Summary = productDefinition.Description,
                Type = productDefinition.DefinitionType
            };

            t.Parameters = productDefinition.ProductProperties.Select(p => new Parameter
            {
                Parent = t,
                Name = p.Name + (p.IsVariant ? " (Variant)" : "")
            });

            return t;
        }
Ejemplo n.º 43
0
 /// <summary>
 /// <para>Called when a user wants to buy the specified Product.</para>
 /// </summary>
 /// <param name="developerPayload">Any additional developer-supplied data.</param>
 /// <param name="product">The product to purchase.</param>
 public abstract void Purchase(ProductDefinition product, string developerPayload);
Ejemplo n.º 44
0
 /// <summary>
 /// <para>Called when Unity IAP has finished processing a purchase.</para>
 /// </summary>
 /// <param name="transactionId">The transaction ID for the purchase.</param>
 /// <param name="product">The product that was purchased.</param>
 public abstract void FinishTransaction(ProductDefinition product, string transactionId);
Ejemplo n.º 45
0
 public void ParentIdHasValue()
 {
     ProductDefinition p = new ProductDefinition { ParentFormId = "parent-form-id" };
     Assert.IsTrue(p.IsChildForm);
 }
Ejemplo n.º 46
0
 public void ParentIdNull()
 {
     ProductDefinition p = new ProductDefinition { ParentFormId = null };
     Assert.IsFalse(p.IsChildForm);
 }
Ejemplo n.º 47
0
 public void AfterExpiryDate()
 {
     ProductDefinition p = new ProductDefinition { ExpiryDate = DateTime.Now.AddMinutes(-2) };
     Assert.IsTrue(p.IsExpired);
 }
Ejemplo n.º 48
0
 public void AfterActiveDate()
 {
     ProductDefinition p = new ProductDefinition { ActiveDate = DateTime.Now.AddMinutes(-2) };
     Assert.IsTrue(p.IsActive);
 }
Ejemplo n.º 49
0
 public void ParentIdEmpty()
 {
     ProductDefinition p = new ProductDefinition { ParentFormId = string.Empty };
     Assert.IsFalse(p.IsChildForm);
 }
Ejemplo n.º 50
0
        public ProductDefinitionField AddDefinitionField(string name, ProductDefinition product, DataType type, bool multilingual = false)
        {
            ProductDefinitionField field = _productDefinitionFields.Value.SingleOrDefault(x => x.Name == name && x.ProductDefinition == product);

            if (field == null)
            {
                field = new ProductDefinitionField();
            }
            field.DataType = type;
            field.DisplayOnSite = true;
            field.Name = name;
            field.ProductDefinition = product;
            field.RenderInEditor = true;
            field.Multilingual = multilingual;
            field.Deleted = false;

            product.ProductDefinitionFields.Add(field);
            return field;
        }
Ejemplo n.º 51
0
 public void BeforeExpiryDate()
 {
     ProductDefinition p = new ProductDefinition { ExpiryDate = DateTime.Now.AddMinutes(2) };
     Assert.IsFalse(p.IsExpired);
 }
Ejemplo n.º 52
0
 public void Null()
 {
     ProductDefinition p = new ProductDefinition { ExpiryDate = null };
     Assert.IsFalse(p.IsExpired);
 }