private void Page_Load(object sender, EventArgs e)
    {
        // Find parent discount object
        if (Page.EditedObjectParent == null)
        {
            return;
        }

        var discount = new Discount(Page.EditedObjectParent);

        // Check if user is allowed to read discount
        if (!DiscountInfoProvider.IsUserAuthorizedToReadDiscount(discount.DiscountSiteID, MembershipContext.AuthenticatedUser))
        {
            Page.EditedObjectParent = null;
        }

        var url = URLHelper.ResolveUrl("~/CMSModules/Ecommerce/Pages/Tools/Discount/Discount_Codes_Generator.aspx");

        url = URLHelper.AddParameterToUrl(url, "discountId", discount.DiscountID.ToString());
        // Inform generator about discount type in case of multi buy discount
        if ((MultiBuyDiscountInfo)discount != null)
        {
            url = URLHelper.AddParameterToUrl(url, "isMultiBuy", "1");
        }

        // Add action for coupon codes generation
        Page.AddHeaderAction(new HeaderAction
        {
            Text        = ResHelper.GetString("com.discount.generatecoupons"),
            RedirectUrl = url,
            Index       = 1,
            Enabled     = discount.DiscountUsesCoupons && DiscountInfoProvider.IsUserAuthorizedToModifyDiscount(SiteContext.CurrentSiteName, MembershipContext.AuthenticatedUser),
            ButtonStyle = ButtonStyle.Default
        });
    }
    private IWhereCondition GetNotStartedDiscounts()
    {
        switch (DiscountType)
        {
        case DiscountTypeEnum.CatalogDiscount:
            return(DiscountInfoProvider.GetDiscounts()
                   .WhereTrue("DiscountEnabled")
                   .WhereNotNull("DiscountValidFrom").WhereGreaterThan("DiscountValidFrom", DateTime.Now));

        case DiscountTypeEnum.OrderDiscount:
        case DiscountTypeEnum.ShippingDiscount:
            return(DiscountInfoProvider.GetDiscounts()
                   .WhereTrue("DiscountEnabled")
                   .WhereNot(IncompleteDiscountsCondition())
                   .WhereNotNull("DiscountValidFrom").WhereGreaterThan("DiscountValidFrom", DateTime.Now));

        case DiscountTypeEnum.ProductCoupon:
            return(MultiBuyDiscountInfoProvider.GetProductCouponDiscounts().Where(NotStartedMultiBuyDiscountsCondition()));

        case DiscountTypeEnum.MultibuyDiscount:
            return(MultiBuyDiscountInfoProvider.GetMultiBuyDiscounts().Where(NotStartedMultiBuyDiscountsCondition()));

        case DiscountTypeEnum.GiftCard:
            return(GiftCardInfoProvider.GetGiftCards()
                   .WhereTrue("GiftCardEnabled")
                   .WhereNot(IncompleteGiftCardsCondition())
                   .WhereNotNull("GiftCardValidFrom").WhereGreaterThan("GiftCardValidFrom", DateTime.Now));
        }

        return(new WhereCondition());
    }
예제 #3
0
    void HeaderActions_ActionPerformed(object sender, CommandEventArgs e)
    {
        if (e.CommandName == "generate")
        {
            if (!DiscountInfoProvider.IsUserAuthorizedToModifyDiscount(SiteContext.CurrentSiteName, CurrentUser))
            {
                RedirectToAccessDenied(ModuleName.ECOMMERCE, "EcommerceModify OR ModifyDiscounts");
            }

            // Collect data from form
            count        = ValidationHelper.GetInteger(txtNumberOfCodes.Text, 0);
            numberOfUses = ValidationHelper.GetInteger(txtTimesToUse.Text, int.MinValue);
            prefix       = txtPrefix.Text.Trim();

            // Validate inputs
            if (!ValidateInputs())
            {
                return;
            }

            // Set numberOfUses to 0 for empty
            if (string.IsNullOrEmpty(txtTimesToUse.Text))
            {
                numberOfUses = 0;
            }

            // Run action in asynchronous control
            EnsureAsyncLog();
            RunAsync(GenerateCodes);
        }
    }
예제 #4
0
    /// <summary>
    /// Returns query to filter active discounts.
    /// </summary>
    private WhereCondition GetActiveQuery()
    {
        IWhereCondition activeQuery;

        if (IsMultibuy)
        {
            activeQuery = MultiBuyDiscountInfoProvider.GetRunningDiscounts(CurrentSite.SiteID, DateTime.Now);
        }
        else
        {
            activeQuery = DiscountInfoProvider.GetRunningDiscounts(CurrentSite.SiteID, DateTime.Now);
        }
        return(new WhereCondition(activeQuery.Expand(activeQuery.WhereCondition)));
    }
예제 #5
0
        private void CreateDiscounts()
        {
            DiscountInfoProvider.SetDiscountInfo(new DiscountInfo
            {
                DiscountName                  = "FlatCatalogDiscount",
                DiscountDisplayName           = "Flat Catalog Discount",
                DiscountSiteID                = SiteID,
                DiscountOrder                 = 1,
                DiscountEnabled               = true,
                DiscountUsesCoupons           = false,
                DiscountApplyTo               = DiscountApplicationEnum.Products,
                DiscountCustomerRestriction   = DiscountCustomerEnum.All,
                DiscountApplyFurtherDiscounts = true,
                ItemDiscountIsFlat            = true,
                DiscountValue                 = 10
            });

            DiscountInfoProvider.SetDiscountInfo(new DiscountInfo
            {
                DiscountName                  = "RelativeCatalogDiscount",
                DiscountDisplayName           = "Relative Catalog Discount",
                DiscountSiteID                = SiteID,
                DiscountOrder                 = 1,
                DiscountEnabled               = true,
                DiscountUsesCoupons           = false,
                DiscountApplyTo               = DiscountApplicationEnum.Products,
                DiscountCustomerRestriction   = DiscountCustomerEnum.All,
                DiscountApplyFurtherDiscounts = true,
                ItemDiscountIsFlat            = false,
                DiscountValue                 = 10
            });

            DiscountInfoProvider.SetDiscountInfo(new DiscountInfo
            {
                DiscountName                  = "RelativeCatalogDiscount2",
                DiscountDisplayName           = "Relative Catalog Discount 2",
                DiscountSiteID                = SiteID,
                DiscountOrder                 = 2,
                DiscountEnabled               = true,
                DiscountUsesCoupons           = false,
                DiscountApplyTo               = DiscountApplicationEnum.Products,
                DiscountCustomerRestriction   = DiscountCustomerEnum.All,
                DiscountApplyFurtherDiscounts = true,
                ItemDiscountIsFlat            = false,
                DiscountValue                 = 10
            });
        }
예제 #6
0
    protected void ugDiscounts_OnAction(string actionName, object actionArgument)
    {
        switch (actionName.ToLowerCSafe())
        {
        case "edit":
            string elementName = null;
            switch (DiscountType)
            {
            case DiscountApplicationEnum.Products:
                elementName = "EditCatalogDiscount";
                break;

            case DiscountApplicationEnum.Order:
                elementName = "EditOrderDiscount";
                break;

            case DiscountApplicationEnum.Shipping:
                elementName = "EditShippingDiscount";
                break;
            }

            if (!string.IsNullOrEmpty(elementName))
            {
                var url = UIContextHelper.GetElementUrl("CMS.Ecommerce", elementName, false, actionArgument.ToInteger(0));
                URLHelper.Redirect(url);
            }

            return;

        case "delete":
            var discountInfo = DiscountInfoProvider.GetDiscountInfo(ValidationHelper.GetInteger(actionArgument, 0));

            // Check permissions, if check is successful delete discount, otherwise redirect to access denied page
            if (discountInfo.CheckPermissions(PermissionsEnum.Delete, SiteContext.CurrentSiteName, CurrentUser))
            {
                DiscountInfoProvider.DeleteDiscountInfo(discountInfo);
            }
            else
            {
                RedirectToAccessDenied("CMS.Ecommerce", "EcommerceModify OR ModifyDiscounts");
            }

            return;
        }
    }
    void HeaderActions_ActionPerformed(object sender, CommandEventArgs e)
    {
        if (e.CommandName == "generate")
        {
            if (!DiscountInfoProvider.IsUserAuthorizedToModifyDiscount(SiteContext.CurrentSiteName, CurrentUser))
            {
                RedirectToAccessDenied("CMS.Ecommerce", "EcommerceModify OR ModifyDiscounts");
            }

            // Collect data from form
            count        = ValidationHelper.GetInteger(txtNumberOfCodes.Text, 0);
            numberOfUses = ValidationHelper.GetInteger(txtTimesToUse.Text, int.MinValue);
            prefix       = txtPrefix.Text.Trim();

            // Validate inputs
            if (count < 1)
            {
                ShowError(GetString("com.couponcode.invalidcount"));
                return;
            }

            if (!string.IsNullOrEmpty(txtTimesToUse.Text) && ((numberOfUses <= 0) || (numberOfUses > 999999)))
            {
                ShowError(GetString("com.couponcode.invalidnumberOfUses"));
                return;
            }

            if (!string.IsNullOrEmpty(prefix) && !ValidationHelper.IsCodeName(prefix))
            {
                ShowError(GetString("com.couponcode.invalidprefix"));
                return;
            }
            // Set numberOfUses to 0 for empty
            if (string.IsNullOrEmpty(txtTimesToUse.Text))
            {
                numberOfUses = 0;
            }

            // Run action in asynchronous control
            EnsureAsyncLog();
            RunAsync(GenerateCodes);
        }
    }
예제 #8
0
    protected void ugDiscounts_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        // Apply different CSS style for specified statuses
        if (e.Row.RowType != DataControlRowType.DataRow)
        {
            return;
        }

        int id = ValidationHelper.GetInteger(((DataRowView)(e.Row.DataItem)).Row["DiscountID"], 0);

        var discount = DiscountInfoProvider.GetDiscountInfo(id);

        if (discount != null)
        {
            string discountCssClass = "DiscountStatus";

            switch (discount.DiscountStatus)
            {
            case DiscountStatusEnum.Disabled:
                discountCssClass += "Disabled";
                break;

            case DiscountStatusEnum.Active:
                discountCssClass += "Active";
                break;

            case DiscountStatusEnum.NotStarted:
                discountCssClass += "NotStarted";
                break;

            case DiscountStatusEnum.Finished:
                discountCssClass += "Finished";
                break;

            default:
                discountCssClass += "Default";
                break;
            }

            e.Row.CssClass = discountCssClass;
        }
    }
    private IWhereCondition GetIncompleteDiscounts()
    {
        switch (DiscountType)
        {
        // Catalog discounts can't be incomplete
        case DiscountTypeEnum.OrderDiscount:
        case DiscountTypeEnum.ShippingDiscount:
            return(DiscountInfoProvider.GetDiscounts().Where(IncompleteDiscountsCondition()));

        case DiscountTypeEnum.ProductCoupon:
            return(MultiBuyDiscountInfoProvider.GetProductCouponDiscounts().Where(IncompleteMultiBuyDiscountsCondition()));

        case DiscountTypeEnum.MultibuyDiscount:
            return(MultiBuyDiscountInfoProvider.GetMultiBuyDiscounts().Where(IncompleteMultiBuyDiscountsCondition()));

        case DiscountTypeEnum.GiftCard:
            return(GiftCardInfoProvider.GetGiftCards().Where(IncompleteGiftCardsCondition()));
        }

        return(new WhereCondition());
    }
    private IWhereCondition GetDisabledDiscounts()
    {
        switch (DiscountType)
        {
        case DiscountTypeEnum.CatalogDiscount:
        case DiscountTypeEnum.OrderDiscount:
        case DiscountTypeEnum.ShippingDiscount:
            return(DiscountInfoProvider.GetDiscounts().WhereFalse("DiscountEnabled"));

        case DiscountTypeEnum.ProductCoupon:
            return(MultiBuyDiscountInfoProvider.GetProductCouponDiscounts().WhereFalse("MultiBuyDiscountEnabled"));

        case DiscountTypeEnum.MultibuyDiscount:
            return(MultiBuyDiscountInfoProvider.GetMultiBuyDiscounts().WhereFalse("MultiBuyDiscountEnabled"));

        case DiscountTypeEnum.GiftCard:
            return(GiftCardInfoProvider.GetGiftCards().WhereFalse("GiftCardEnabled"));
        }

        return(new WhereCondition());
    }
    private IWhereCondition GetActiveDiscounts()
    {
        switch (DiscountType)
        {
        case DiscountTypeEnum.CatalogDiscount:
            return(DiscountInfoProvider.GetRunningDiscounts(CurrentSite.SiteID, DateTime.Now, DiscountApplicationEnum.Products));

        case DiscountTypeEnum.OrderDiscount:
        case DiscountTypeEnum.ShippingDiscount:
            return(DiscountInfoProvider.GetRunningDiscounts(CurrentSite.SiteID, DateTime.Now));

        case DiscountTypeEnum.ProductCoupon:
            return(MultiBuyDiscountInfoProvider.GetRunningProductCouponDiscounts(CurrentSite.SiteID, DateTime.Now));

        case DiscountTypeEnum.MultibuyDiscount:
            return(MultiBuyDiscountInfoProvider.GetRunningMultiBuyDiscounts(CurrentSite.SiteID, DateTime.Now));

        case DiscountTypeEnum.GiftCard:
            return(GiftCardInfoProvider.GetRunningGiftCards(CurrentSite.SiteID, DateTime.Now));
        }

        return(new WhereCondition());
    }
    private void Page_Load(object sender, EventArgs e)
    {
        // Find parent discount object
        if (Page.EditedObjectParent != null)
        {
            var parentDiscount = (DiscountInfo)Page.EditedObjectParent;

            // Check if user is allowed to read discount
            if (!DiscountInfoProvider.IsUserAuthorizedToReadDiscount(new SiteInfoIdentifier(parentDiscount.DiscountSiteID), MembershipContext.AuthenticatedUser))
            {
                Page.EditedObjectParent = null;
            }

            // Add action for coupon codes generation
            Page.AddHeaderAction(new HeaderAction
            {
                Text        = ResHelper.GetString("com.discount.generatecoupons"),
                RedirectUrl = URLHelper.ResolveUrl("~/CMSModules/Ecommerce/Pages/Tools/Discount/Discount_Codes_Generator.aspx?discountId=" + parentDiscount.DiscountID),
                Index       = 1,
                Enabled     = parentDiscount.DiscountUsesCoupons && DiscountInfoProvider.IsUserAuthorizedToModifyDiscount(SiteContext.CurrentSiteName, MembershipContext.AuthenticatedUser)
            });
        }
    }