protected void btnNew_Click(object sender, System.Web.UI.ImageClickEventArgs e)
        {
            string newType = this.lstNewType.SelectedValue;
            int    temp    = -1;

            int.TryParse(newType, out temp);

            long newId = 0;

            if (temp >= 0)
            {
                PreDefinedPromotion promo      = (PreDefinedPromotion)temp;
                Promotion           predefined = MTApp.MarketingServices.GetPredefinedPromotion(promo);
                if (predefined == null)
                {
                    return;
                }
                MTApp.MarketingServices.Promotions.Create(predefined);
                newId = predefined.Id;
            }
            else
            {
                if (temp == -1)
                {
                    Promotion sale = new Promotion();
                    sale.Mode = PromotionType.Sale;
                    sale.Name = "New Custom Sale";
                    MTApp.MarketingServices.Promotions.Create(sale);
                    newId = sale.Id;
                }
                else
                {
                    Promotion offer = new Promotion();
                    offer.Mode = PromotionType.Offer;
                    offer.Name = "New Custom Offer";
                    MTApp.MarketingServices.Promotions.Create(offer);
                    newId = offer.Id;
                }
            }

            string destinationLink = "Promotions_edit.aspx?id=" + newId + "&page=" + currentPage + "&showdisabled="
                                     + (this.chkShowDisabled.Checked ? "1" : "0") +
                                     "&keyword=" + System.Web.HttpUtility.UrlEncode(keyword);

            Response.Redirect(destinationLink);
        }
        public Promotion GetPredefinedPromotion(PreDefinedPromotion type)
        {
            var p = new Promotion();

            switch (type)
            {
            case PreDefinedPromotion.CustomSale:
                p.Name = "New Custom Sale";
                p.Mode = PromotionType.Sale;
                break;

            case PreDefinedPromotion.CustomOfferForLineItems:
                p.Name = "New Offer for Order Items";
                p.Mode = PromotionType.OfferForLineItems;
                break;

            case PreDefinedPromotion.CustomOfferForOrder:
                p.Name = "New Offer for Order";
                p.Mode = PromotionType.OfferForOrder;
                p.AddAction(new OrderTotalAdjustment());
                break;

            case PreDefinedPromotion.CustomOfferForShipping:
                p.Name = "New Offer for Shipping";
                p.Mode = PromotionType.OfferForShipping;
                p.AddAction(new OrderShippingAdjustment());
                break;

            case PreDefinedPromotion.CustomAffiliatePromotion:
                p.Name = "New Affiliate Promotion";
                p.Mode = PromotionType.Affiliate;
                p.AddAction(new RewardPointsAjustment());
                break;

            case PreDefinedPromotion.SaleCategories:
                p.Name = "New Category Sale";
                p.Mode = PromotionType.Sale;
                p.AddQualification(new ProductCategory());
                p.AddAction(new ProductPriceAdjustment());
                break;

            case PreDefinedPromotion.SaleProducts:
                p.Name = "New Product Sale";
                p.Mode = PromotionType.Sale;
                p.AddQualification(new ProductBvin());
                p.AddAction(new ProductPriceAdjustment());
                break;

            case PreDefinedPromotion.SaleProductType:
                p.Name = "New Product Type Sale";
                p.Mode = PromotionType.Sale;
                p.AddQualification(new ProductType());
                p.AddAction(new ProductPriceAdjustment());
                break;

            case PreDefinedPromotion.SaleStorewide:
                p.Name = "New Storewide Sale";
                p.Mode = PromotionType.Sale;
                p.AddQualification(new AnyProduct());
                p.AddAction(new ProductPriceAdjustment());
                break;

            case PreDefinedPromotion.SaleUser:
                p.Name = "New Sale By User";
                p.Mode = PromotionType.Sale;
                p.AddQualification(new UserIs());
                p.AddAction(new ProductPriceAdjustment());
                break;

            case PreDefinedPromotion.SaleUserGroup:
                p.Name = "New Sale By Price Group";
                p.Mode = PromotionType.Sale;
                p.AddQualification(new UserIsInGroup());
                p.AddAction(new ProductPriceAdjustment());
                break;

            case PreDefinedPromotion.OrderDiscountCoupon:
                p.Name = "New Order Discount With Coupon";
                p.Mode = PromotionType.OfferForOrder;
                p.AddQualification(new OrderHasCoupon());
                p.AddAction(new OrderTotalAdjustment());
                break;

            case PreDefinedPromotion.OrderDiscountUser:
                p.Name = "New Order Discount by User";
                p.Mode = PromotionType.OfferForOrder;
                p.AddQualification(new UserIs());
                p.AddAction(new OrderTotalAdjustment());
                break;

            case PreDefinedPromotion.OrderDiscountUserGroup:
                p.Name = "New Order Discount by Price Group";
                p.Mode = PromotionType.OfferForOrder;
                p.AddQualification(new UserIsInGroup());
                p.AddAction(new OrderTotalAdjustment());
                break;

            case PreDefinedPromotion.OrderFreeShipping:
                p.Name = "New Free Shipping Discount";
                p.Mode = PromotionType.OfferForShipping;
                p.AddQualification(new AnyShippingMethod());
                p.AddAction(new OrderShippingAdjustment(AmountTypes.Percent, -100m));
                break;

            case PreDefinedPromotion.OrderShippingDiscount:
                p.Name = "New Shipping Discount";
                p.Mode = PromotionType.OfferForShipping;
                p.AddQualification(new AnyShippingMethod());
                p.AddAction(new OrderShippingAdjustment(AmountTypes.Percent, 0m));
                break;

            case PreDefinedPromotion.OrderFreeShippingByCategory:
                p.Name = "New Free Shipping By Category";
                p.Mode = PromotionType.OfferForLineItems;
                var pq = new LineItemCategory();
                pq.CategoryNot = true;
                p.AddQualification(pq);
                p.AddAction(new LineItemFreeShipping());
                break;

            case PreDefinedPromotion.CustomOfferForFreeItems:
                p.Name = "New Offer For Free Items";
                p.Mode = PromotionType.OfferForFreeItems;
                break;
            }

            return(p);
        }
        public Promotion GetPredefinedPromotion(PreDefinedPromotion type)
        {
            Promotion p = new Promotion();
            
            switch(type)
            {
                case PreDefinedPromotion.SaleCategories:
                    p.Name = "New Category Sale";
                    p.Mode = PromotionType.Sale;
                    p.AddQualification(new PromotionQualifications.ProductCategory());
                    p.AddAction(new PromotionActions.ProductPriceAdjustment());
                    break;
                case PreDefinedPromotion.SaleProducts:
                    p.Name = "New Product Sale";
                    p.Mode = PromotionType.Sale;
                    p.AddQualification(new PromotionQualifications.ProductBvin());
                    p.AddAction(new PromotionActions.ProductPriceAdjustment());
                    break;
                case PreDefinedPromotion.SaleProductType:
                    p.Name = "New Product Type Sale";
                    p.Mode = PromotionType.Sale;
                    p.AddQualification(new PromotionQualifications.ProductType());
                    p.AddAction(new PromotionActions.ProductPriceAdjustment());
                    break;
                case PreDefinedPromotion.SaleStorewide:
                    p.Name = "New Storewide Sale";
                    p.Mode = PromotionType.Sale;
                    p.AddQualification(new PromotionQualifications.AnyProduct());
                    p.AddAction(new PromotionActions.ProductPriceAdjustment());
                    break;
                case PreDefinedPromotion.SaleUser:
                    p.Name = "New Sale By User";
                    p.Mode = PromotionType.Sale;
                    p.AddQualification(new PromotionQualifications.UserIs());
                    p.AddAction(new PromotionActions.ProductPriceAdjustment());
                    break;
                case PreDefinedPromotion.SaleUserGroup:
                    p.Name = "New Sale By Price Group";
                    p.Mode = PromotionType.Sale;
                    p.AddQualification(new PromotionQualifications.UserIsInGroup());
                    p.AddAction(new PromotionActions.ProductPriceAdjustment());
                    break;
                case PreDefinedPromotion.OrderDiscountCoupon:
                    p.Name = "New Order Discount With Coupon";
                    p.Mode = PromotionType.Offer;
                    p.AddQualification(new PromotionQualifications.OrderHasCoupon());
                    p.AddAction(new PromotionActions.OrderTotalAdjustment());
                    break;
                case PreDefinedPromotion.OrderDiscountUser:
                    p.Name = "New Order Discount by User";
                    p.Mode = PromotionType.Offer;
                    p.AddQualification(new PromotionQualifications.UserIs());
                    p.AddAction(new PromotionActions.OrderTotalAdjustment());
                    break;
                case PreDefinedPromotion.OrderDiscountUserGroup:
                    p.Name = "New Order Discount by Price Group";
                    p.Mode = PromotionType.Offer;
                    p.AddQualification(new PromotionQualifications.UserIsInGroup());
                    p.AddAction(new PromotionActions.OrderTotalAdjustment());
                    break;
                case PreDefinedPromotion.OrderFreeShipping:
                    p.Name = "New Free Shipping Discount";
                    p.Mode = PromotionType.Offer;
                    p.AddQualification(new PromotionQualifications.AnyShippingMethod());
                    p.AddAction(new PromotionActions.OrderShippingAdjustment(AmountTypes.Percent, -100m));
                    break;
                case PreDefinedPromotion.OrderShippingDiscount:
                    p.Name = "New Free Shipping Discount";
                    p.Mode = PromotionType.Offer;
                    p.AddQualification(new PromotionQualifications.AnyShippingMethod());
                    p.AddAction(new PromotionActions.OrderShippingAdjustment(AmountTypes.Percent, 0m));
                    break;
            }

            return p;
        }
        public Promotion GetPredefinedPromotion(PreDefinedPromotion type)
        {
            Promotion p = new Promotion();

            switch (type)
            {
            case PreDefinedPromotion.SaleCategories:
                p.Name = "New Category Sale";
                p.Mode = PromotionType.Sale;
                p.AddQualification(new PromotionQualifications.ProductCategory());
                p.AddAction(new PromotionActions.ProductPriceAdjustment());
                break;

            case PreDefinedPromotion.SaleProducts:
                p.Name = "New Product Sale";
                p.Mode = PromotionType.Sale;
                p.AddQualification(new PromotionQualifications.ProductBvin());
                p.AddAction(new PromotionActions.ProductPriceAdjustment());
                break;

            case PreDefinedPromotion.SaleProductType:
                p.Name = "New Product Type Sale";
                p.Mode = PromotionType.Sale;
                p.AddQualification(new PromotionQualifications.ProductType());
                p.AddAction(new PromotionActions.ProductPriceAdjustment());
                break;

            case PreDefinedPromotion.SaleStorewide:
                p.Name = "New Storewide Sale";
                p.Mode = PromotionType.Sale;
                p.AddQualification(new PromotionQualifications.AnyProduct());
                p.AddAction(new PromotionActions.ProductPriceAdjustment());
                break;

            case PreDefinedPromotion.SaleUser:
                p.Name = "New Sale By User";
                p.Mode = PromotionType.Sale;
                p.AddQualification(new PromotionQualifications.UserIs());
                p.AddAction(new PromotionActions.ProductPriceAdjustment());
                break;

            case PreDefinedPromotion.SaleUserGroup:
                p.Name = "New Sale By Price Group";
                p.Mode = PromotionType.Sale;
                p.AddQualification(new PromotionQualifications.UserIsInGroup());
                p.AddAction(new PromotionActions.ProductPriceAdjustment());
                break;

            case PreDefinedPromotion.OrderDiscountCoupon:
                p.Name = "New Order Discount With Coupon";
                p.Mode = PromotionType.Offer;
                p.AddQualification(new PromotionQualifications.OrderHasCoupon());
                p.AddAction(new PromotionActions.OrderTotalAdjustment());
                break;

            case PreDefinedPromotion.OrderDiscountUser:
                p.Name = "New Order Discount by User";
                p.Mode = PromotionType.Offer;
                p.AddQualification(new PromotionQualifications.UserIs());
                p.AddAction(new PromotionActions.OrderTotalAdjustment());
                break;

            case PreDefinedPromotion.OrderDiscountUserGroup:
                p.Name = "New Order Discount by Price Group";
                p.Mode = PromotionType.Offer;
                p.AddQualification(new PromotionQualifications.UserIsInGroup());
                p.AddAction(new PromotionActions.OrderTotalAdjustment());
                break;

            case PreDefinedPromotion.OrderFreeShipping:
                p.Name = "New Free Shipping Discount";
                p.Mode = PromotionType.Offer;
                p.AddQualification(new PromotionQualifications.AnyShippingMethod());
                p.AddAction(new PromotionActions.OrderShippingAdjustment(AmountTypes.Percent, -100m));
                break;

            case PreDefinedPromotion.OrderShippingDiscount:
                p.Name = "New Free Shipping Discount";
                p.Mode = PromotionType.Offer;
                p.AddQualification(new PromotionQualifications.AnyShippingMethod());
                p.AddAction(new PromotionActions.OrderShippingAdjustment(AmountTypes.Percent, 0m));
                break;
            }

            return(p);
        }