Esempio n. 1
0
        private static void CsvToBudget(RowValues values, BulkCampaign c)
        {
            string budgetTypeRowValue;

            BudgetLimitType?budgetType;

            if (!values.TryGetValue(StringTable.BudgetType, out budgetTypeRowValue) || (budgetType = budgetTypeRowValue.ParseOptional <BudgetLimitType>()) == null)
            {
                return;
            }

            string budgetRowValue;

            if (!values.TryGetValue(StringTable.Budget, out budgetRowValue))
            {
                return;
            }

            var budgetValue = budgetRowValue.ParseOptional <double>();

            c.Campaign.BudgetType = budgetType;

            if (budgetType == BudgetLimitType.DailyBudgetAccelerated || budgetType == BudgetLimitType.DailyBudgetStandard)
            {
                c.Campaign.DailyBudget = budgetValue;
            }
            else
            {
                c.Campaign.MonthlyBudget = budgetValue;
            }
        }
        private static void CsvToBiddingScheme(RowValues values, BulkAdGroup c)
        {
            string bidStrategyTypeRowValue;

            BiddingScheme biddingScheme;

            if (!values.TryGetValue(StringTable.BidStrategyType, out bidStrategyTypeRowValue) || (biddingScheme = bidStrategyTypeRowValue.ParseBiddingScheme()) == null)
            {
                return;
            }

            string inheritedBidStrategyTypeRowValue;

            values.TryGetValue(StringTable.InheritedBidStrategyType, out inheritedBidStrategyTypeRowValue);

            var inheritFromParentBiddingScheme = biddingScheme as InheritFromParentBiddingScheme;

            if (inheritFromParentBiddingScheme != null)
            {
                c.AdGroup.BiddingScheme = new InheritFromParentBiddingScheme
                {
                    InheritedBidStrategyType = inheritedBidStrategyTypeRowValue,
                    Type = "InheritFromParent",
                };
            }
            else
            {
                c.AdGroup.BiddingScheme = biddingScheme;
            }
        }
Esempio n. 3
0
        private static void CsvToBiddingScheme(RowValues values, BulkCampaign c)
        {
            string bidStrategyTypeRowValue;

            BiddingScheme biddingScheme;

            if (!values.TryGetValue(StringTable.BidStrategyType, out bidStrategyTypeRowValue) || (biddingScheme = bidStrategyTypeRowValue.ParseBiddingScheme()) == null)
            {
                return;
            }

            string maxCpcRowValue;
            string targetCpaRowValue;

            values.TryGetValue(StringTable.BidStrategyMaxCpc, out maxCpcRowValue);
            values.TryGetValue(StringTable.BidStrategyTargetCpa, out targetCpaRowValue);

            var maxCpcValue    = maxCpcRowValue.ParseBid();
            var targetCpaValue = targetCpaRowValue.ParseOptional <double>();

            var maxClicksBiddingScheme = biddingScheme as MaxClicksBiddingScheme;

            if (maxClicksBiddingScheme != null)
            {
                c.Campaign.BiddingScheme = new MaxClicksBiddingScheme
                {
                    MaxCpc = maxCpcValue,
                    Type   = "MaxClicks",
                };
            }
            else
            {
                var maxConversionsBiddingScheme = biddingScheme as MaxConversionsBiddingScheme;
                if (maxConversionsBiddingScheme != null)
                {
                    c.Campaign.BiddingScheme = new MaxConversionsBiddingScheme
                    {
                        MaxCpc = maxCpcValue,
                        Type   = "MaxConversions",
                    };
                }
                else
                {
                    var targetCpaBiddingScheme = biddingScheme as TargetCpaBiddingScheme;
                    if (targetCpaBiddingScheme != null)
                    {
                        c.Campaign.BiddingScheme = new TargetCpaBiddingScheme
                        {
                            MaxCpc    = maxCpcValue,
                            TargetCpa = targetCpaValue,
                            Type      = "TargetCpa",
                        };
                    }
                    else
                    {
                        c.Campaign.BiddingScheme = biddingScheme;
                    }
                }
            }
        }
        public static void AddConditionsFromRowValues(RowValues values, IList<ProductCondition> conditions)
        {
            var conditionHeaderPrefix = StringTable.ProductCondition1.Remove(StringTable.ProductCondition1.Length - 1);
            var valueHeaderPrefix = StringTable.ProductValue1.Remove(StringTable.ProductValue1.Length - 1);

            for (int i = 1; i <= MaxNumberOfConditions; i++)
            {
                string productCondition;
                string productValue;

                values.TryGetValue(conditionHeaderPrefix + i, out productCondition);
                values.TryGetValue(valueHeaderPrefix + i, out productValue);

                if (!string.IsNullOrEmpty(productCondition) || !string.IsNullOrEmpty(productValue))
                {
                    conditions.Add(new ProductCondition { Operand = productCondition, Attribute = productValue });
                }
            }
        }
        public static void AddConditionsFromRowValues(RowValues values, IList<WebpageCondition> conditions)
        {
            var conditionHeaderPrefix = StringTable.DynamicAdTargetCondition1.Remove(StringTable.DynamicAdTargetCondition1.Length - 1);
            var valueHeaderPrefix = StringTable.DynamicAdTargetValue1.Remove(StringTable.DynamicAdTargetValue1.Length - 1);

            for (int i = 1; i <= MaxNumberOfConditions; i++)
            {
                string webpagetCondition;
                string webpageValue;

                values.TryGetValue(conditionHeaderPrefix + i, out webpagetCondition);
                values.TryGetValue(valueHeaderPrefix + i, out webpageValue);

                if (!string.IsNullOrEmpty(webpagetCondition) || !string.IsNullOrEmpty(webpageValue))
                {
                    conditions.Add(new WebpageCondition { Operand = webpagetCondition.Parse<WebpageConditionOperand>(), Argument = webpageValue });
                }
            }
        }
        public static void AddConditionsFromRowValues(RowValues values, IList <ProductCondition> conditions)
        {
            var conditionHeaderPrefix = StringTable.ProductCondition1.Remove(StringTable.ProductCondition1.Length - 1);
            var valueHeaderPrefix     = StringTable.ProductValue1.Remove(StringTable.ProductValue1.Length - 1);

            for (int i = 1; i <= MaxNumberOfConditions; i++)
            {
                string productCondition;
                string productValue;

                values.TryGetValue(conditionHeaderPrefix + i, out productCondition);
                values.TryGetValue(valueHeaderPrefix + i, out productValue);

                if (!string.IsNullOrEmpty(productCondition) || !string.IsNullOrEmpty(productValue))
                {
                    conditions.Add(new ProductCondition {
                        Operand = productCondition, Attribute = productValue
                    });
                }
            }
        }
        public static void AddConditionsFromRowValues(RowValues values, IList <WebpageCondition> conditions)
        {
            var conditionHeaderPrefix = StringTable.DynamicAdTargetCondition1.Remove(StringTable.DynamicAdTargetCondition1.Length - 1);
            var valueHeaderPrefix     = StringTable.DynamicAdTargetValue1.Remove(StringTable.DynamicAdTargetValue1.Length - 1);

            for (int i = 1; i <= MaxNumberOfConditions; i++)
            {
                string webpageCondition;
                string webpageValue;

                values.TryGetValue(conditionHeaderPrefix + i, out webpageCondition);
                values.TryGetValue(valueHeaderPrefix + i, out webpageValue);

                if (!string.IsNullOrEmpty(webpageCondition) || !string.IsNullOrEmpty(webpageValue))
                {
                    conditions.Add(new WebpageCondition {
                        Operand = webpageCondition.Parse <WebpageConditionOperand>(), Argument = webpageValue
                    });
                }
            }
        }
        private static void CsvToCoOpSetting(RowValues values, BulkAdGroup c)
        {
            values.TryGetValue(StringTable.BidOption, out string bidOptionRowValue);
            values.TryGetValue(StringTable.BidBoostValue, out string bidBoostValueRowValue);
            values.TryGetValue(StringTable.MaximumBid, out string maximumBidRowValue);

            var bidOptionValue     = bidOptionRowValue?.ParseOptional <BidOption>();
            var bidBoostValueValue = bidBoostValueRowValue?.ParseOptional <double>();
            var maximumBidValue    = maximumBidRowValue?.ParseOptional <double>();

            if (bidOptionValue != null || bidBoostValueValue != null || maximumBidValue != null)
            {
                var setting = new CoOpSetting
                {
                    BidBoostValue = bidBoostValueValue,
                    BidMaxValue   = maximumBidValue,
                    BidOption     = bidOptionValue,
                    Type          = "CoOpSetting"
                };

                c.AddSetting(setting);
            }
        }
        public static void AddPriceTableRowsFromRowValues(RowValues values, IList <PriceTableRow> priceTableRows)
        {
            var currencyCodePrefix          = StringTable.CurrencyCode1.Remove(StringTable.CurrencyCode1.Length - 1);
            var priceDescriptionPrefix      = StringTable.PriceDescription1.Remove(StringTable.PriceDescription1.Length - 1);
            var headerPrefix                = StringTable.Header1.Remove(StringTable.Header1.Length - 1);
            var finalMobileUrlPrefix        = StringTable.FinalMobileUrl1.Remove(StringTable.FinalMobileUrl1.Length - 1);
            var finalUrlPrefix              = StringTable.FinalUrl1.Remove(StringTable.FinalUrl1.Length - 1);
            var pricePrefix                 = StringTable.Price1.Remove(StringTable.Price1.Length - 1);
            var priceQualifierPrefix        = StringTable.PriceQualifier1.Remove(StringTable.PriceQualifier1.Length - 1);
            var priceUnitPrefix             = StringTable.PriceUnit1.Remove(StringTable.PriceUnit1.Length - 1);
            var termsAndConditionsPrefix    = StringTable.TermsAndConditions1.Remove(StringTable.TermsAndConditions1.Length - 1);
            var termsAndConditionsUrlPrefix = StringTable.TermsAndConditionsUrl1.Remove(StringTable.TermsAndConditionsUrl1.Length - 1);

            for (int i = 1; i <= MaxNumberOfProductTableRows; i++)
            {
                string currencyCode;
                string priceDescription;
                string header;
                string finalMobileUrl;
                string finalUrl;
                string price;
                string priceQualifier;
                string priceUnit;
                string termsAndConditions;
                string termsAndConditionsUrl;

                values.TryGetValue(currencyCodePrefix + i, out currencyCode);
                values.TryGetValue(priceDescriptionPrefix + i, out priceDescription);
                values.TryGetValue(headerPrefix + i, out header);
                values.TryGetValue(finalMobileUrlPrefix + i, out finalMobileUrl);
                values.TryGetValue(finalUrlPrefix + i, out finalUrl);
                values.TryGetValue(pricePrefix + i, out price);
                values.TryGetValue(priceQualifierPrefix + i, out priceQualifier);
                values.TryGetValue(priceUnitPrefix + i, out priceUnit);
                values.TryGetValue(termsAndConditionsPrefix + i, out termsAndConditions);
                values.TryGetValue(termsAndConditionsUrlPrefix + i, out termsAndConditionsUrl);

                if (!string.IsNullOrEmpty(currencyCode) ||
                    !string.IsNullOrEmpty(priceDescription) ||
                    !string.IsNullOrEmpty(header) ||
                    !string.IsNullOrEmpty(finalMobileUrl) ||
                    !string.IsNullOrEmpty(finalUrl) ||
                    !string.IsNullOrEmpty(price) ||
                    !string.IsNullOrEmpty(priceQualifier) ||
                    !string.IsNullOrEmpty(priceUnit) ||
                    !string.IsNullOrEmpty(termsAndConditions) ||
                    !string.IsNullOrEmpty(termsAndConditionsUrl))
                {
                    priceTableRows.Add(
                        new PriceTableRow
                    {
                        CurrencyCode    = currencyCode,
                        Description     = priceDescription,
                        Header          = header,
                        FinalMobileUrls = new string[]
                        {
                            finalMobileUrl
                        },
                        FinalUrls = new string[]
                        {
                            finalUrl
                        },
                        Price                 = price.Parse <double>(),
                        PriceQualifier        = priceQualifier.Parse <PriceQualifier>(),
                        PriceUnit             = priceUnit.Parse <PriceUnit>(),
                        TermsAndConditions    = termsAndConditions,
                        TermsAndConditionsUrl = termsAndConditionsUrl
                    }
                        );
                }
            }
        }
        private static void CsvToBidding(RowValues values, BulkAdGroupProductPartition entity)
        {
            //string exclude;
            values.TryGetValue(StringTable.IsExcluded, out string exclude);

            exclude = exclude.GetValueOrEmptyString().ToLower();
            bool isExcluded;

            switch (exclude)
            {
            case "yes":
                isExcluded = true;
                break;

            case "true":
                isExcluded = true;
                break;

            case "no":
                isExcluded = false;
                break;

            case "false":
                isExcluded = false;
                break;

            default:
                throw new InvalidOperationException(
                          string.Format("\"{0}\" can only be set to TRUE|FALSE in {1}",
                                        StringTable.IsExcluded, typeof(BulkAdGroupProductPartition).Name));
            }

            if (isExcluded)
            {
                entity.AdGroupCriterion = new NegativeAdGroupCriterion
                {
                    Criterion = new ProductPartition
                    {
                        Condition = new ProductCondition(),
                        Type      = typeof(ProductPartition).Name,
                    },
                    Type = typeof(NegativeAdGroupCriterion).Name,
                };
            }
            else
            {
                var biddableAdGroupCriterion = new BiddableAdGroupCriterion
                {
                    Criterion = new ProductPartition
                    {
                        Condition = new ProductCondition(),
                        Type      = typeof(ProductPartition).Name,
                    },
                    Type = typeof(BiddableAdGroupCriterion).Name,
                };

                values.TryGetValue(StringTable.Bid, out string bidStr);
                values.TryGetValue(StringTable.BidAdjustment, out string bidAdjustmentStr);
                double?bid           = bidStr.ParseOptional <double>();
                double?bidAdjustment = bidAdjustmentStr.ParseOptional <double>();

                if (bid != null)
                {
                    biddableAdGroupCriterion.CriterionBid = new FixedBid
                    {
                        Amount = bid.Value,
                        Type   = typeof(FixedBid).Name,
                    };
                }
                else if (bidAdjustment != null)
                {
                    biddableAdGroupCriterion.CriterionBid = new BidMultiplier
                    {
                        Multiplier = bidAdjustment.Value,
                        Type       = typeof(FixedBid).Name,
                    };
                }
                else
                {
                    biddableAdGroupCriterion.CriterionBid = new FixedBid
                    {
                        Type = typeof(FixedBid).Name,
                    };
                }
                entity.AdGroupCriterion = biddableAdGroupCriterion;
            }
        }
        private static void CsvToBiddingScheme(RowValues values, BulkCampaign c)
        {
            string bidStrategyTypeRowValue;

            BiddingScheme biddingScheme;

            if (!values.TryGetValue(StringTable.BidStrategyType, out bidStrategyTypeRowValue) || (biddingScheme = bidStrategyTypeRowValue.ParseBiddingScheme()) == null)
            {
                return;
            }

            string maxCpcRowValue;
            string targetCpaRowValue;
            string targetRoasRowValue;
            string targetAdPositionRowValue;
            string targetImpressionShareRowValue;

            values.TryGetValue(StringTable.BidStrategyMaxCpc, out maxCpcRowValue);
            values.TryGetValue(StringTable.BidStrategyTargetCpa, out targetCpaRowValue);
            values.TryGetValue(StringTable.BidStrategyTargetRoas, out targetRoasRowValue);
            values.TryGetValue(StringTable.BidStrategyTargetAdPosition, out targetAdPositionRowValue);
            values.TryGetValue(StringTable.BidStrategyTargetImpressionShare, out targetImpressionShareRowValue);

            var maxCpcValue                = maxCpcRowValue.ParseBid();
            var targetCpaValue             = targetCpaRowValue.ParseOptional <double>();
            var targetRoasValue            = targetRoasRowValue.ParseOptional <double>();
            var targetAdPositionValue      = targetAdPositionRowValue;
            var targetImpressionShareValue = targetImpressionShareRowValue.ParseOptional <double>();

            switch (biddingScheme)
            {
            case MaxClicksBiddingScheme maxClicksBiddingScheme:
                c.Campaign.BiddingScheme = new MaxClicksBiddingScheme
                {
                    MaxCpc = maxCpcValue,
                    Type   = "MaxClicks",
                };
                break;

            case MaxConversionsBiddingScheme maxConversionsBiddingScheme:
                c.Campaign.BiddingScheme = new MaxConversionsBiddingScheme
                {
                    MaxCpc = maxCpcValue,
                    Type   = "MaxConversions",
                };
                break;

            case MaxConversionValueBiddingScheme maxConversionValueBiddingScheme:

                c.Campaign.BiddingScheme = new MaxConversionValueBiddingScheme
                {
                    TargetRoas = targetRoasValue,
                    Type       = "MaxConversionValue",
                };
                break;

            case TargetCpaBiddingScheme targetCpaBiddingScheme:

                c.Campaign.BiddingScheme = new TargetCpaBiddingScheme
                {
                    MaxCpc    = maxCpcValue,
                    TargetCpa = targetCpaValue,
                    Type      = "TargetCpa",
                };
                break;

            case TargetRoasBiddingScheme targetRoasBiddingScheme:
                c.Campaign.BiddingScheme = new TargetRoasBiddingScheme
                {
                    MaxCpc     = maxCpcValue,
                    TargetRoas = targetRoasValue,
                    Type       = "TargetRoas",
                };
                break;

            case TargetImpressionShareBiddingScheme targetImpressionShareBiddingScheme:
                c.Campaign.BiddingScheme = new TargetImpressionShareBiddingScheme
                {
                    MaxCpc                = maxCpcValue,
                    TargetAdPosition      = targetAdPositionValue,
                    TargetImpressionShare = targetImpressionShareValue,
                    Type = "TargetImpressionShare",
                };
                break;

            default:
                c.Campaign.BiddingScheme = biddingScheme;
                break;
            }
        }