/// <summary>
    /// Binding products on page load
    /// </summary>
    private void Bindproducts()
    {
        List <CampaignsProduct> products = null;

        if (TypeOfProduct == (int)ProductsType.PreBuy && OpenCampaign != null)
        {
            BindPrograms();
            BindProductTypes();
            if (OpenCampaign != null)
            {
                products = CampaignsProductProvider.GetCampaignsProducts()
                           .WhereIn("ProgramID", GetProgramIDs(OpenCampaign.CampaignID)).WhereEquals("NodeSiteID", CurrentSite.SiteID).ToList();
            }
            BindingProductsToRepeater(products);
        }
        else if (TypeOfProduct == (int)ProductsType.PreBuy && OpenCampaign == null)
        {
            catalogControls.Visible   = false;
            lblNoProducts.Visible     = false;
            campaignIsNotOpen.Visible = true;
        }
        if (TypeOfProduct == (int)ProductsType.GeneralInventory)
        {
            BindBrands();
            BindProductTypes();
            products = CampaignsProductProvider.GetCampaignsProducts().WhereEquals("NodeSiteID", CurrentSite.SiteID)
                       .Where(new WhereCondition().WhereEquals("ProgramID", null).Or().WhereEquals("ProgramID", 0)).ToList();
            BindingProductsToRepeater(products);
        }
    }
    /// <summary>
    /// Get Product details
    /// </summary>
    /// <returns></returns>
    public List <CampaignsProduct> GetProductDetails()
    {
        List <CampaignsProduct> productsDetails = new List <CampaignsProduct>();

        try
        {
            List <int> programIds = new List <int>();
            if (ValidationHelper.GetInteger(ddlProgram.SelectedValue, default(int)) != default(int))
            {
                if (IsCampaignClosed(ValidationHelper.GetInteger(ddlProgram.SelectedValue, default(int))))
                {
                    programIds.Add(ValidationHelper.GetInteger(ddlProgram.SelectedValue, default(int)));
                }
            }
            else
            {
                programIds = GetProgramIDs(ValidationHelper.GetInteger(ddlCampaign.SelectedValue, default(int)), ValidationHelper.GetInteger(ddlProgram.SelectedValue, default(int)));
            }
            if (!DataHelper.DataSourceIsEmpty(programIds))
            {
                productsDetails = CampaignsProductProvider.GetCampaignsProducts()
                                  .WhereIn("ProgramID", programIds)
                                  .ToList();
            }
        }
        catch (Exception ex)
        {
            EventLogProvider.LogException("Get Product Details", "GetProductDetails()", ex, CurrentSite.SiteID, ex.Message);
        }
        return(productsDetails);
    }
示例#3
0
        protected void ddlPosNo_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                string selectedPos = ddlPosNo.SelectedValue;
                BindData();
                SKUInfo skuDetails = SKUInfoProvider.GetSKUs().WhereEquals("SKUNumber", selectedPos).FirstObject;
                if (skuDetails != null)
                {
                    string folderName = libraryFolderName;
                    folderName              = !string.IsNullOrEmpty(folderName) ? folderName.Replace(" ", "") : "CampaignProducts";
                    txtLongDes.Text         = skuDetails.SKUDescription;
                    txtEstPrice.Text        = ValidationHelper.GetString(skuDetails.SKUPrice, string.Empty);
                    ddlPosNo.SelectedValue  = ValidationHelper.GetString(skuDetails.SKUNumber, string.Empty);
                    txtShortDes.Text        = skuDetails.SKUName;
                    txtActualPrice.Text     = ValidationHelper.GetString(skuDetails.SKUPrice, string.Empty);
                    ddlStatus.SelectedValue = skuDetails.SKUEnabled == true ? "1" : "0";
                    imgProduct.ImageUrl     = ValidationHelper.GetString(skuDetails.SKUImagePath, string.Empty);
                    imgProduct.Visible      = imgProduct.ImageUrl != string.Empty ? true : false;
                    txtExpDate.Text         = ValidationHelper.GetString(skuDetails.SKUValidUntil, string.Empty);
                    txtQuantity.Text        = ValidationHelper.GetString(skuDetails.SKUAvailableItems, string.Empty);
                    txtWeight.Text          = ValidationHelper.GetString(skuDetails.SKUWeight, string.Empty);
                    CampaignsProduct product = CampaignsProductProvider.GetCampaignsProducts().WhereEquals("NodeSKUID", skuDetails.SKUID).FirstObject;
                    if (product != null)
                    {
                        txtBundleQnt.Text             = ValidationHelper.GetString(product.QtyPerPack, string.Empty);
                        ddlBrand.SelectedValue        = ValidationHelper.GetString(product.BrandID, string.Empty);
                        ddlState.SelectedValue        = ValidationHelper.GetString(product.State, string.Empty);
                        ddlProdCategory.SelectedValue = ValidationHelper.GetString(product.CategoryID, string.Empty);
                        BindEditProduct(ValidationHelper.GetInteger(product.CampaignsProductID, 0));
                        ViewState["ProductId"] = product.CampaignsProductID;
                    }
                }
                else
                {
                    ViewState["ProductId"] = null;
                    EmptyFields(false);
                    var pos = CustomTableItemProvider.GetItems(POSNumberItem.CLASS_NAME)
                              .WhereEquals("POSNumber", selectedPos)
                              .FirstOrDefault();
                    if (pos != null && pos.GetValue("BrandID") != null)
                    {
                        var brand = CustomTableItemProvider.GetItems(BrandItem.CLASS_NAME)
                                    .WhereEquals("BrandCode", pos.GetValue("BrandID"))
                                    .FirstOrDefault();
                        if (brand != null)
                        {
                            ddlBrand.SelectedValue = brand.GetValue("ItemId").ToString();
                        }
                    }
                }

                ddlPosNo.SelectedValue = selectedPos;
            }
            catch (Exception ex)
            {
                EventLogProvider.LogException("CMSWebParts_Kadena_Inventory_porduct_POSchanged", "BindCategories", ex, CurrentSite.SiteID, ex.Message);
            }
        }
示例#4
0
        private void UpdateProduct(int productID)
        {
            CampaignsProduct product = CampaignsProductProvider
                                       .GetCampaignsProducts()
                                       .WhereEquals("NodeSiteID", CurrentSite.SiteID)
                                       .WhereEquals("CampaignsProductID", productID)
                                       .FirstOrDefault();

            if (product != null)
            {
                product.DocumentName   = ValidationHelper.GetString(txtShortDes.Text, string.Empty);
                product.QtyPerPack     = ValidationHelper.GetInteger(txtBundleQnt.Text, default(int));
                product.BrandID        = ValidationHelper.GetInteger(ddlBrand.SelectedValue, default(int));
                product.CategoryID     = ValidationHelper.GetInteger(ddlProdCategory.SelectedValue, default(int));
                product.EstimatedPrice = ValidationHelper.GetInteger(txtEstPrice.Text, default(int));
                product.ProductName    = ValidationHelper.GetString(txtShortDes.Text, string.Empty);
                product.State          = ValidationHelper.GetInteger(ddlState.SelectedValue, default(int));
                SKUInfo updateProduct = SKUInfoProvider.GetSKUs().WhereEquals("SKUID", product.NodeSKUID).FirstObject;
                if (updateProduct != null)
                {
                    if (productImage.HasFile)
                    {
                        if (updateProduct.SKUImagePath != string.Empty)
                        {
                            UploadImage.DeleteImage(updateProduct.SKUImagePath, libraryFolderName);
                        }
                        updateProduct.SKUImagePath = UploadImage.UploadImageToMeadiaLibrary(productImage, libraryFolderName);
                    }
                    updateProduct.SKUName             = ValidationHelper.GetString(txtShortDes.Text, string.Empty);
                    updateProduct.SKUShortDescription = ValidationHelper.GetString(txtShortDes.Text, string.Empty);
                    updateProduct.SKUDescription      = ValidationHelper.GetString(txtLongDes.Text, string.Empty);
                    updateProduct.SKUPrice            = ValidationHelper.GetDouble(txtActualPrice.Text, default(double));
                    updateProduct.SKUEnabled          = ValidationHelper.GetString(ddlStatus.SelectedValue, "1") == "1" ? true : false;
                    updateProduct.SKUSiteID           = CurrentSite.SiteID;
                    updateProduct.SKUProductType      = SKUProductTypeEnum.EProduct;
                    updateProduct.SKUAvailableItems   = ValidationHelper.GetInteger(txtQuantity.Text, 0);
                    updateProduct.SKUWeight           = ValidationHelper.GetDouble(txtWeight.Text, default(double));
                    updateProduct.SKUValidUntil       = ValidationHelper.GetDateTime(txtExpDate.Text, DateTime.MinValue);
                    SKUInfoProvider.SetSKUInfo(updateProduct);
                }
                product.Update();
                var saveproductID = ValidationHelper.GetInteger(product.CampaignsProductID, 0);
                UpdateAllocateProduct(saveproductID);
                lblSuccessMsg.Visible  = true;
                lblFailureText.Visible = false;
                EmptyFields(true);
                Response.Cookies["status"].Value    = QueryStringStatus.Updated;
                Response.Cookies["status"].HttpOnly = false;
                URLHelper.Redirect($"{CurrentDocument.Parent.DocumentUrlPath}?status={QueryStringStatus.Updated}");
            }
            else
            {
                lblFailureText.Visible = true;
            }
        }
示例#5
0
 /// <summary>
 /// Set the field with the record which user wants to edit
 /// </summary>
 /// <param name="productid">The id of the product which user wants to edit</param>
 private void SetFeild(int productID)
 {
     try
     {
         if (productID != 0)
         {
             CampaignsProduct product = CampaignsProductProvider.GetCampaignsProducts()
                                        .WhereEquals("NodeSiteID", CurrentSite.SiteID)
                                        .WhereEquals("CampaignsProductID", productID)
                                        .FirstOrDefault();
             if (product != null)
             {
                 SKUInfo skuDetails = SKUInfoProvider.GetSKUs()
                                      .WhereEquals("SKUID", product.NodeSKUID)
                                      .FirstObject;
                 if (skuDetails != null)
                 {
                     string folderName = libraryFolderName;
                     folderName       = !string.IsNullOrEmpty(folderName) ? folderName.Replace(" ", "") : "InventoryProducts";
                     txtLongDes.Text  = skuDetails.SKUDescription;
                     txtEstPrice.Text = ValidationHelper.GetString(product.EstimatedPrice, string.Empty);
                     ddlPosNo.Items.Add(new ListItem(ValidationHelper.GetString(skuDetails.GetValue("SKUProductCustomerReferenceNumber", string.Empty), string.Empty), ValidationHelper.GetString(skuDetails.GetValue("SKUProductCustomerReferenceNumber", string.Empty), string.Empty)));
                     ddlPosNo.Enabled        = false;
                     txtShortDes.Text        = skuDetails.SKUName;
                     txtActualPrice.Text     = ValidationHelper.GetString(skuDetails.SKUPrice, string.Empty);
                     ddlStatus.SelectedValue = skuDetails.SKUEnabled == true ? "1" : "0";
                     imgProduct.ImageUrl     = ValidationHelper.GetString(skuDetails.SKUImagePath, string.Empty);
                     imgProduct.Visible      = imgProduct.ImageUrl != string.Empty ? true : false;
                     if (skuDetails.SKUValidUntil != DateTime.MinValue)
                     {
                         txtExpDate.Text = ValidationHelper.GetString(skuDetails.SKUValidUntil.ToShortDateString(), string.Empty);
                     }
                     txtQuantity.Text = ValidationHelper.GetString(skuDetails.SKUAvailableItems, string.Empty);
                     txtWeight.Text   = ValidationHelper.GetString(skuDetails.SKUWeight, string.Empty);
                 }
                 txtBundleQnt.Text             = ValidationHelper.GetString(product.QtyPerPack, string.Empty);
                 ddlBrand.SelectedValue        = ValidationHelper.GetString(product.BrandID, string.Empty);
                 ddlState.SelectedValue        = ValidationHelper.GetString(product.State, string.Empty);
                 ddlProdCategory.SelectedValue = ValidationHelper.GetString(product.CategoryID, string.Empty);
                 BindEditProduct(ValidationHelper.GetInteger(product.CampaignsProductID, 0));
             }
         }
     }
     catch (Exception ex)
     {
         EventLogProvider.LogException("GetProductFromButtonClick", "EXCEPTION", ex);
     }
 }
示例#6
0
 /// <summary>
 /// This methods returns inner HTML for pdf
 /// </summary>
 /// <param name="distributorCartData"></param>
 /// <returns></returns>
 public static string CreateCartInnerContent(List <DataRow> distributorCartData, string CurrentSiteName, int inventoryType)
 {
     try
     {
         string pdfProductContent = string.Empty;
         if (inventoryType == Convert.ToInt32(ProductType.GeneralInventory))
         {
             pdfProductContent = SettingsKeyInfoProvider.GetValue($@"{CurrentSiteName}.KDA_DistributorCartPDFHTMLBodyGI");
         }
         else
         {
             pdfProductContent = SettingsKeyInfoProvider.GetValue($@"{CurrentSiteName}.KDA_DistributorCartPDFHTMLBody");
         }
         StringBuilder sb       = new StringBuilder();
         var           skuIds   = distributorCartData.AsEnumerable().Select(x => x.Field <int>("SkUID")).ToList();
         var           products = CampaignsProductProvider.GetCampaignsProducts()
                                  .WhereEquals("NodeSiteID", SiteContext.CurrentSiteID).WhereIn("NodeSKUID", skuIds).Columns("NodeSKUID,State,ProgramID,QtyPerPack,EstimatedPrice").ToList();
         var programs    = ProgramProvider.GetPrograms().WhereIn("ProgramID", products.Select(x => x.ProgramID).ToList()).Columns("ProgramID,ProgramName").ToList();
         var stateGroups = CustomTableItemProvider.GetItems <StatesGroupItem>().WhereIn("ItemID", products.Select(x => x.State).ToList()).Columns("ItemID,States").ToList();
         distributorCartData.ForEach(row =>
         {
             var pdfContent  = pdfProductContent;
             var product     = products.Where(x => x.NodeSKUID == ValidationHelper.GetInteger(row["SKUID"], default(int))).FirstOrDefault();
             var programName = programs.Where(x => x.ProgramID == product.ProgramID).FirstOrDefault();
             var states      = stateGroups.Where(x => x.ItemID == product.State).FirstOrDefault();
             var skuValidity = ValidationHelper.GetDateTime(row["SKUValidUntil"], default(DateTime));
             pdfContent      = pdfContent.Replace("{PRODUCTNAME}", ValidationHelper.GetString(row["SKUName"], "&nbsp"))
                               .Replace("{SKUNUMBER}", ValidationHelper.GetString(row["SKUProductCustomerReferenceNumber"], "&nbsp"))
                               .Replace("{SKUUNITS}", ValidationHelper.GetString(row["SKUUnits"], "&nbsp"))
                               .Replace("{BUNDLECOST}", inventoryType == Convert.ToInt32(ProductType.GeneralInventory) ? ($"{CurrencyInfoProvider.GetFormattedPrice(ValidationHelper.GetDouble(row["SKUPrice"], default(double)), SiteContext.CurrentSiteID, true)}") : ($"{CurrencyInfoProvider.GetFormattedPrice(ValidationHelper.GetDouble(product.EstimatedPrice, default(double)), SiteContext.CurrentSiteID, true)}"))
                               .Replace("{BUNDLEQUANTITY}", ValidationHelper.GetString(product.QtyPerPack, "&nbsp"))
                               .Replace("{IMAGEURL}", GetProductImage(ValidationHelper.GetString(row["SKUImagePath"], default(string))))
                               .Replace("{VALIDSTATES}", ValidationHelper.GetString(states?.States, "&nbsp"))
                               .Replace("{EXPIREDATE}", skuValidity != default(DateTime) ? skuValidity.ToString("MMM dd, yyyy") : "&nbsp")
                               .Replace("{PROGRAMNAME}", ValidationHelper.GetString(programName?.ProgramName, "&nbsp"));
             sb.Append(pdfContent);
         });
         return(sb.ToString());
     }
     catch (Exception ex)
     {
         EventLogProvider.LogInformation("CartPDFHelper", "CreateCartInnerContent", ex.Message);
         return(string.Empty);
     }
 }
示例#7
0
 /// <summary>
 /// update available sku quantity
 /// </summary>
 /// <param name="inventoryType"></param>
 /// <returns></returns>
 public static void UpdateAllocatedProductQuantity(ShoppingCartInfo cart, int userID)
 {
     try
     {
         var productProvider = DIContainer.Resolve <IKenticoProductsProvider>();
         cart.CartItems.ForEach(cartItem =>
         {
             var campProduct = CampaignsProductProvider.GetCampaignsProducts().WhereEquals("NodeSKUID", cartItem?.SKUID).Columns("CampaignsProductID,EstimatedPrice").FirstOrDefault();
             if (campProduct != null)
             {
                 productProvider.UpdateAllocatedProductQuantityForUser(campProduct.GetIntegerValue("CampaignsProductID", 0), userID, cartItem.CartItemUnits);
             }
         });
     }
     catch (Exception ex)
     {
         EventLogProvider.LogInformation("ShoppingCartHelper", "UpdateAvailableSKUQuantity", ex.Message);
     }
 }
 /// <summary>
 /// Filtering products based on filters
 /// </summary>
 public void SetFilter(int programID = default(int), int categoryID = default(int), int brandID = default(int), string posNum = null)
 {
     try
     {
         rptCatalogProducts.DataSource = null;
         rptCatalogProducts.DataBind();
         lblNoProducts.Visible     = false;
         noProductSelected.Visible = false;
         if (TypeOfProduct == (int)ProductsType.PreBuy && OpenCampaign != null)
         {
             var products = CampaignsProductProvider.GetCampaignsProducts().WhereNotEquals("ProgramID", null).WhereEquals("NodeSiteID", CurrentSite.SiteID).WhereIn("ProgramID", GetProgramIDs(OpenCampaign.CampaignID)).ToList();
             if (programID != default(int) && !DataHelper.DataSourceIsEmpty(products))
             {
                 products = products.Where(x => x.ProgramID == programID).ToList();
             }
             if (categoryID != default(int) && !DataHelper.DataSourceIsEmpty(products))
             {
                 products = products.Where(x => x.CategoryID == categoryID).ToList();
             }
             BindingProductsToRepeater(products, posNum);
         }
         if (TypeOfProduct == (int)ProductsType.GeneralInventory)
         {
             var products = CampaignsProductProvider.GetCampaignsProducts().WhereEquals("NodeSiteID", CurrentSite.SiteID).Where(new WhereCondition().WhereEquals("ProgramID", null).Or().WhereEquals("ProgramID", 0)).ToList();
             if (brandID != default(int) && !DataHelper.DataSourceIsEmpty(products))
             {
                 products = products.Where(x => x.BrandID == brandID).ToList();
             }
             if (categoryID != default(int) && !DataHelper.DataSourceIsEmpty(products))
             {
                 products = products.Where(x => x.CategoryID == categoryID).ToList();
             }
             BindingProductsToRepeater(products, posNum);
         }
     }
     catch (Exception ex)
     {
         EventLogProvider.LogException("Setting where condition to filter", ex.Message, ex);
     }
 }
示例#9
0
    /// <summary>
    /// Add to
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btmAddItemsToCart_Click(object sender, EventArgs e)
    {
        try
        {
            lblErrorMsg.Visible = false;
            var productProvider = DIContainer.Resolve <IKenticoProductsProvider>();
            ProductSKUID = ValidationHelper.GetInteger(hdnClickSKU.Value, default(int));
            SKUInfo product     = SKUInfoProvider.GetSKUs().WhereEquals("SKUID", ProductSKUID).WhereNull("SKUOptionCategoryID").FirstObject;
            var     campProduct = CampaignsProductProvider.GetCampaignsProducts().WhereEquals("NodeSKUID", product?.SKUID).Columns("CampaignsProductID,EstimatedPrice").FirstOrDefault();
            var     skuPrice    = default(double);
            if (ProductType == (int)ProductsType.GeneralInventory)
            {
                skuPrice = 0;
            }
            else
            {
                skuPrice = campProduct.EstimatedPrice;
            }

            var allocatedQuantityItem = campProduct != null?productProvider.GetAllocatedProductQuantityForUser(campProduct.CampaignsProductID, CurrentUser.UserID) : null;

            var allocatedQuantity = allocatedQuantityItem != null?allocatedQuantityItem.GetValue <int>("Quantity", default(int)) : default(int);

            bool productHasAllocation = false;
            if (ProductType == (int)ProductsType.GeneralInventory)
            {
                productHasAllocation = campProduct != null?productProvider.IsProductHasAllocation(campProduct.CampaignsProductID) : false;
            }
            var itemsPlaced = default(int);
            foreach (GridViewRow row in gvCustomersCart.Rows)
            {
                if (row.RowType == DataControlRowType.DataRow && !DataHelper.DataSourceIsEmpty(product))
                {
                    int     customerAddressID      = Convert.ToInt32(row.Cells[0].Text);
                    TextBox txtQty                 = (row.Cells[2].FindControl("txtQuanityOrdering") as TextBox);
                    var     quantityPlacing        = ValidationHelper.GetInteger(txtQty.Text, default(int));
                    var     customerShoppingCartID = ValidationHelper.GetInteger(row.Cells[3].Text, default(int));
                    if (ProductType == (int)ProductsType.GeneralInventory)
                    {
                        itemsPlaced += quantityPlacing;
                        if (itemsPlaced > product.SKUAvailableItems)
                        {
                            lblErrorMsg.Text    = ResHelper.GetString("Kadena.AddToCart.StockError");
                            lblErrorMsg.Visible = true;
                        }
                        else if (itemsPlaced > allocatedQuantity && productHasAllocation)
                        {
                            lblErrorMsg.Text    = ResHelper.GetString("Kadena.AddToCart.AllocatedProductQuantityError");
                            lblErrorMsg.Visible = true;
                        }
                        else
                        {
                            CartProcessOperations(customerShoppingCartID, quantityPlacing, product, customerAddressID, skuPrice);
                        }
                    }
                    else
                    {
                        CartProcessOperations(customerShoppingCartID, quantityPlacing, product, customerAddressID, skuPrice);
                    }
                }
            }
            btnClose.InnerText       = ResHelper.GetString("KDA.ShoppingCart.Close");
            lblAvailbleItems.Visible = false;
            if (!lblErrorMsg.Visible)
            {
                lblSuccessMsg.Text      = ResHelper.GetString("Kadena.AddToCart.SuccessfullyAdded");
                lblSuccessMsg.Visible   = true;
                gvCustomersCart.Visible = false;
                llbtnAddToCart.Visible  = false;
            }
        }
        catch (Exception ex)
        {
            EventLogProvider.LogException("CustomerCartOperations.ascx.cs", "btmAddItemsToCart_Click()", ex);
        }
    }
示例#10
0
    /// <summary>
    /// Get Product details
    /// </summary>
    /// <param name="programID"></param>
    /// <param name="categoryID"></param>
    /// <param name="posNumber"></param>
    /// <returns></returns>
    public List <CampaignsProduct> GetProductsDetails(int programID = default(int), int categoryID = default(int), string posNumber = null, int brandID = default(int))
    {
        List <CampaignsProduct> productsDetails = new List <CampaignsProduct>();

        try
        {
            if (ProductType != default(int))
            {
                if (ProductType == (int)ProductsType.GeneralInventory)
                {
                    ddlCategory.Visible = true;
                    ddlBrand.Visible    = true;
                    productsDetails     = CampaignsProductProvider.GetCampaignsProducts()
                                          .WhereEquals("NodeSiteID", CurrentSite.SiteID)
                                          .Where(new WhereCondition().WhereEquals("ProgramID", null).Or().WhereEquals("ProgramID", 0))
                                          .ToList();
                    if (!DataHelper.DataSourceIsEmpty(productsDetails))
                    {
                        if (categoryID != default(int))
                        {
                            productsDetails = productsDetails
                                              .Where(x => x.CategoryID == categoryID)
                                              .ToList();
                        }
                        if (brandID != default(int))
                        {
                            productsDetails = productsDetails
                                              .Where(x => x.BrandID == brandID)
                                              .ToList();
                        }
                    }
                }
                else if (ProductType == (int)ProductsType.PreBuy)
                {
                    ddlProgram.Visible  = true;
                    ddlCategory.Visible = true;
                    List <int> programIds = GetProgramIDs();
                    if (!DataHelper.DataSourceIsEmpty(programIds))
                    {
                        productsDetails = CampaignsProductProvider.GetCampaignsProducts()
                                          .WhereEquals("NodeSiteID", CurrentSite.SiteID)
                                          .WhereIn("ProgramID", programIds)
                                          .ToList();
                        if (!DataHelper.DataSourceIsEmpty(productsDetails))
                        {
                            if (programID != default(int))
                            {
                                productsDetails = productsDetails
                                                  .Where(x => x.ProgramID == programID)
                                                  .ToList();
                            }
                            if (categoryID != default(int))
                            {
                                productsDetails = productsDetails
                                                  .Where(x => x.CategoryID == categoryID)
                                                  .ToList();
                            }
                        }
                    }
                }
            }
        }
        catch (Exception ex)
        {
            EventLogProvider.LogException("Get Product Details", "GetProductsDetails()", ex, CurrentSite.SiteID, ex.Message);
        }
        return(productsDetails);
    }
    /// <summary>
    /// Update the product data.
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnUpdate_Click(object sender, EventArgs e)
    {
        try
        {
            int          programID = ValidationHelper.GetInteger(ddlProgram.SelectedValue, 0);
            TreeProvider tree      = new TreeProvider(MembershipContext.AuthenticatedUser);
            if (ViewState["ProductNodeID"] != null)
            {
                CampaignsProduct product = CampaignsProductProvider.GetCampaignsProduct(ValidationHelper.GetInteger(ViewState["ProductNodeID"], 0), CurrentDocument.DocumentCulture, CurrentSiteName);
                if (product != null)
                {
                    string itemSpecsID, customItemSpecs;
                    GetItemSpecsValue(out itemSpecsID, out customItemSpecs);
                    product.DocumentName    = ValidationHelper.GetString(txtProductName.Text, string.Empty);
                    product.ProgramID       = ValidationHelper.GetInteger(ddlProgram.SelectedValue, 0);
                    product.State           = ValidationHelper.GetInteger(ddlState.SelectedValue, default(int));
                    product.BrandID         = ValidationHelper.GetInteger(ddlBrand.SelectedValue, default(int));
                    product.CategoryID      = ValidationHelper.GetInteger(ddlProductcategory.SelectedValue, 0);
                    product.QtyPerPack      = ValidationHelper.GetInteger(txtQty.Text, default(int));
                    product.ItemSpecs       = ValidationHelper.GetString(itemSpecsID, string.Empty);
                    product.CustomItemSpecs = ValidationHelper.GetString(customItemSpecs, string.Empty);
                    product.EstimatedPrice  = ValidationHelper.GetDouble(txtEstimatedprice.Text, default(double));
                    product.ProductName     = ValidationHelper.GetString(txtProductName.Text, string.Empty);
                    SKUInfo updateProduct = SKUInfoProvider.GetSKUs().WhereEquals("SKUID", product.NodeSKUID).FirstObject;
                    if (updateProduct != null)
                    {
                        if (productImage.HasFile)
                        {
                            string libraryFolderName = SettingsKeyInfoProvider.GetValue(CurrentSite.SiteName + ".KDA_ImagesFolderName");
                            if (updateProduct.SKUImagePath != string.Empty)
                            {
                                UploadImage.DeleteImage(updateProduct.SKUImagePath, libraryFolderName);
                            }
                            updateProduct.SKUImagePath = UploadImage.UploadImageToMeadiaLibrary(productImage, libraryFolderName);
                        }
                        updateProduct.SKUName             = ValidationHelper.GetString(txtProductName.Text, string.Empty);
                        updateProduct.SKUShortDescription = ValidationHelper.GetString(txtProductName.Text, string.Empty);
                        updateProduct.SKUDescription      = ValidationHelper.GetString(txtLongDescription.Text, string.Empty);
                        updateProduct.SKUValidUntil       = ValidationHelper.GetDate(txtExpireDate.Text, DateTime.MinValue);
                        updateProduct.SKUEnabled          = ValidationHelper.GetString(ddlStatus.SelectedValue, "1") == "1" ? true : false;
                        updateProduct.SKUSiteID           = CurrentSite.SiteID;
                        updateProduct.SKUProductType      = SKUProductTypeEnum.EProduct;
                        updateProduct.SKUPrice            = 0;
                        SKUInfoProvider.SetSKUInfo(updateProduct);
                    }
                    product.Update();
                }

                if (ViewState["ProgramID"] != null)
                {
                    if (ValidationHelper.GetInteger(ViewState["ProgramID"], 0) != programID)
                    {
                        var targetProgram = ProgramProvider.GetPrograms()
                                            .WhereEquals("NodeSiteID", CurrentSite.SiteID)
                                            .WhereEquals("ProgramID", programID)
                                            .Column("NodeID")
                                            .FirstOrDefault();
                        if (targetProgram != null)
                        {
                            var tagetDocument = DocumentHelper.GetDocument(targetProgram.NodeID, CurrentDocument.DocumentCulture, tree);
                            var targetPage    = tree.SelectSingleNode(SiteContext.CurrentSiteName, tagetDocument.NodeAliasPath, CurrentDocument.DocumentCulture);
                            if ((product != null) && (targetPage != null))
                            {
                                DocumentHelper.MoveDocument(product, targetPage, tree, true);
                            }
                        }
                    }
                }
                int capaignNodeID = ValidationHelper.GetInteger(Request.QueryString["camp"], default(int));
                var campDoc       = DocumentHelper.GetDocument(capaignNodeID, CurrentDocument.DocumentCulture, tree);
                if (campDoc != null)
                {
                    Response.Redirect($"{campDoc.DocumentUrlPath}?status={QueryStringStatus.Updated}");
                }
            }
        }
        catch (Exception ex)
        {
            EventLogProvider.LogException("CMSWebParts_Kadena_Campaign_Web_Form_AddCampaignProducts", "btnUpdate_Click", ex, CurrentSite.SiteID, ex.Message);
        }
    }
    /// <summary>
    /// Initializes the control properties.
    /// </summary>
    protected void SetupControl()
    {
        if (!this.StopProcessing)
        {
            try
            {
                if (!IsPostBack)
                {
                    BindPrograms();
                    BindCategories();
                    BindResorceStrings();
                    BindPOS();
                    GetStateGroup();
                    GetBrandName();
                    BindItemSpecsDropdown();
                    int productID = ValidationHelper.GetInteger(Request.QueryString["id"], 0);
                    if (productID != 0)
                    {
                        CampaignsProduct product = CampaignsProductProvider
                                                   .GetCampaignsProducts()
                                                   .WhereEquals("NodeSiteID", CurrentSite.SiteID)
                                                   .WhereEquals("CampaignsProductID", productID)
                                                   .FirstOrDefault();
                        if (product != null)
                        {
                            SKUInfo skuDetails = SKUInfoProvider
                                                 .GetSKUs()
                                                 .WhereEquals("SKUID", product.NodeSKUID)
                                                 .FirstObject;
                            if (skuDetails != null)
                            {
                                string folderName = SettingsKeyInfoProvider.GetValue(CurrentSite.SiteName + ".KDA_ImagesFolderName");
                                folderName = !string.IsNullOrEmpty(folderName) ? folderName.Replace(" ", "") : "CampaignProducts";
                                txtLongDescription.Text = skuDetails.SKUDescription;
                                ddlPos.SelectedValue    = ValidationHelper.GetString(skuDetails.GetValue("SKUProductCustomerReferenceNumber", string.Empty), string.Empty);
                                ddlPos.Enabled          = false;
                                txtProductName.Text     = skuDetails.SKUName;
                                txtActualPrice.Text     = ValidationHelper.GetString(skuDetails.SKUPrice, string.Empty);
                                ddlStatus.SelectedValue = skuDetails.SKUEnabled == true ? "1" : "0";
                                imgProduct.ImageUrl     = ValidationHelper.GetString(skuDetails.SKUImagePath, string.Empty);
                                imgProduct.Visible      = imgProduct.ImageUrl != string.Empty ? true : false;
                                if (skuDetails.SKUValidUntil != DateTime.MinValue)
                                {
                                    txtExpireDate.Text = ValidationHelper.GetString(skuDetails.SKUValidUntil.ToShortDateString(), string.Empty);
                                }
                            }
                            ddlProgram.SelectedValue         = ValidationHelper.GetString(product.ProgramID, string.Empty);
                            ddlProgram.Enabled               = false;
                            ddlState.SelectedValue           = ValidationHelper.GetString(product.State, string.Empty);
                            ddlBrand.SelectedValue           = product.BrandID.ToString();
                            txtEstimatedprice.Text           = ValidationHelper.GetString(product.EstimatedPrice, string.Empty);
                            ddlProductcategory.SelectedValue = product.CategoryID.ToString();
                            txtQty.Text = ValidationHelper.GetString(product.QtyPerPack, string.Empty);

                            if (!string.IsNullOrEmpty(product.CustomItemSpecs))
                            {
                                txtItemSpec.Text           = ValidationHelper.GetString(product.CustomItemSpecs, string.Empty);
                                ddlItemSpecs.SelectedValue = ValidationHelper.GetString(ResHelper.GetString("Kadena.CampaignProduct.ItemSpecsOtherText"), string.Empty);
                                divItemSpecs.Visible       = true;
                            }
                            else
                            {
                                ddlItemSpecs.SelectedValue = ValidationHelper.GetString(product.ItemSpecs, string.Empty);
                            }
                            ViewState["ProgramID"]     = product.ProgramID;
                            ViewState["ProductNodeID"] = product.NodeID;
                            btnSave.Visible            = false;
                            btnUpdate.Visible          = true;
                        }
                    }
                    else
                    {
                        btnSave.Visible   = true;
                        btnUpdate.Visible = false;
                    }
                    string currentDate = DateTime.Today.ToShortDateString();
                    compareDate.ValueToCompare = currentDate;
                }
            }
            catch (Exception ex)
            {
                EventLogProvider.LogException("CMSWebParts_Kadena_Campaign_Web_Form_AddCampaignProducts", "SetupControl", ex, CurrentSite.SiteID, ex.Message);
            }
        }
    }
 /// <summary>
 /// Creating products PDF from Html
 /// </summary>
 /// <returns></returns>
 public void CreateProductPDF(string selectedValues)
 {
     try
     {
         if (!string.IsNullOrEmpty(selectedValues))
         {
             var programs = ProgramProvider.GetPrograms()
                            .Columns("ProgramName,BrandID,DeliveryDateToDistributors")
                            .WhereEquals("CampaignID", OpenCampaign?.CampaignID ?? default(int))
                            .ToList();
             lblNoProducts.Visible = false;
             List <string> selectedProducts = selectedValues.Split(',').ToList();
             var           skuDetails       = SKUInfoProvider.GetSKUs()
                                              .WhereIn("SKUID", selectedProducts)
                                              .ToList();
             string htmlTextheader    = SettingsKeyInfoProvider.GetValue($@"{CurrentSiteName}.ProductsPDFHeader");
             string programFooterText = SettingsKeyInfoProvider.GetValue($@"{CurrentSiteName}.KDA_ProgramFooterText");
             if (TypeOfProduct == (int)ProductsType.PreBuy && OpenCampaign != null)
             {
                 htmlTextheader = htmlTextheader.Replace("CAMPAIGNNAME", OpenCampaign?.Name);
                 htmlTextheader = htmlTextheader.Replace("OrderStartDate", OpenCampaign.StartDate == default(DateTime) ? string.Empty : OpenCampaign.StartDate.ToString("MMM dd, yyyy"));
                 htmlTextheader = htmlTextheader.Replace("OrderEndDate", OpenCampaign.EndDate == default(DateTime) ? string.Empty : OpenCampaign.EndDate.ToString("MMM dd, yyyy"));
             }
             string generalInventory = string.Empty;
             if (TypeOfProduct == (int)ProductsType.GeneralInventory)
             {
                 generalInventory = SettingsKeyInfoProvider.GetValue($@"{CurrentSiteName}.KDA_GeneralInventoryCover");
             }
             List <int> brands          = new List <int>();
             string     programsContent = string.Empty;
             if (TypeOfProduct == (int)ProductsType.PreBuy && OpenCampaign != null)
             {
                 foreach (var program in programs)
                 {
                     string programContent = SettingsKeyInfoProvider.GetValue($@"{CurrentSiteName}.ProgramsContent");
                     brands.Add(program.BrandID);
                     programContent   = programContent.Replace("ProgramBrandName", program.ProgramName);
                     programContent   = programContent.Replace("ProgramDate", program.DeliveryDateToDistributors == default(DateTime) ? string.Empty : program.DeliveryDateToDistributors.ToString("MMM dd, yyyy"));
                     programsContent += programContent;
                     programContent   = string.Empty;
                 }
                 programsContent += programFooterText.Replace("PROGRAMFOOTERTEXT", ResHelper.GetString("Kadena.Catalog.ProgramFooterText"));
             }
             else
             {
                 var productItems = CampaignsProductProvider.GetCampaignsProducts()
                                    .WhereEquals("NodeSiteID", CurrentSite.SiteID)
                                    .Where(new WhereCondition().WhereEquals("ProgramID", null).Or().WhereEquals("ProgramID", 0))
                                    .ToList();
                 var inventoryList = productItems
                                     .Join(skuDetails, x => x.NodeSKUID, y => y.SKUID, (x, y) => new { x.BrandID, y.SKUNumber, x.Product.SKUProductCustomerReferenceNumber })
                                     .ToList();
                 foreach (var giProducts in inventoryList)
                 {
                     brands.Add(giProducts.BrandID);
                 }
             }
             string pdfProductsContentWithBrands = string.Empty;
             string closingDiv = SettingsKeyInfoProvider.GetValue("ClosingDIV").ToString();
             if (!DataHelper.DataSourceIsEmpty(selectedProducts))
             {
                 foreach (var brand in brands.Distinct())
                 {
                     string productBrandHeader = SettingsKeyInfoProvider.GetValue($@"{CurrentSiteName}.PDFBrand");
                     if (TypeOfProduct == (int)ProductsType.PreBuy)
                     {
                         productBrandHeader = productBrandHeader.Replace("BrandName", programs.Where(x => x.BrandID == brand).Select(y => y.ProgramName).FirstOrDefault());
                     }
                     else if (TypeOfProduct == (int)ProductsType.GeneralInventory)
                     {
                         productBrandHeader = productBrandHeader.Replace("BrandName", GetBrandName(brand));
                     }
                     List <CampaignsProduct> productItems = new List <CampaignsProduct>();
                     if (TypeOfProduct == (int)ProductsType.PreBuy)
                     {
                         productItems = CampaignsProductProvider.GetCampaignsProducts().WhereNotEquals("ProgramID", null).WhereEquals("NodeSiteID", CurrentSite.SiteID).WhereIn("ProgramID", GetProgramIDs(OpenCampaign.CampaignID)).ToList();
                     }
                     else if (TypeOfProduct == (int)ProductsType.GeneralInventory)
                     {
                         productItems = CampaignsProductProvider.GetCampaignsProducts().Where(new WhereCondition().WhereEquals("ProgramID", null).Or().WhereEquals("ProgramID", 0)).WhereEquals("NodeSiteID", CurrentSite.SiteID).ToList();
                     }
                     var catalogList = productItems
                                       .Join(skuDetails, x => x.NodeSKUID, y => y.SKUID, (x, y) => new { x.ProductName, x.EstimatedPrice, x.BrandID, x.ProgramID, x.QtyPerPack, x.State, y.SKUPrice, y.SKUNumber, x.Product.SKUProductCustomerReferenceNumber, y.SKUDescription, y.SKUShortDescription, y.SKUImagePath, y.SKUValidUntil })
                                       .Where(x => x.BrandID == brand)
                                       .ToList();
                     string pdfProductsContent = string.Empty;
                     if (!DataHelper.DataSourceIsEmpty(catalogList))
                     {
                         foreach (var product in catalogList)
                         {
                             var    stateInfo         = CustomTableItemProvider.GetItems <StatesGroupItem>().WhereEquals("ItemID", product.State).FirstOrDefault();
                             string pdfProductContent = SettingsKeyInfoProvider.GetValue($@"{CurrentSiteName}.PDFInnerHTML");
                             pdfProductContent   = pdfProductContent.Replace("IMAGEGUID", GetProductImage(product.SKUImagePath));
                             pdfProductContent   = pdfProductContent.Replace("PRODUCTPARTNUMBER", product?.SKUProductCustomerReferenceNumber ?? string.Empty);
                             pdfProductContent   = pdfProductContent.Replace("PRODUCTBRANDNAME", GetBrandName(product.BrandID));
                             pdfProductContent   = pdfProductContent.Replace("PRODUCTSHORTDESCRIPTION", product?.ProductName ?? string.Empty);
                             pdfProductContent   = pdfProductContent.Replace("PRODUCTDESCRIPTION", product?.SKUDescription ?? string.Empty);
                             pdfProductContent   = pdfProductContent.Replace("PRODUCTVALIDSTATES", stateInfo?.States.Replace(",", ", ") ?? string.Empty);
                             pdfProductContent   = pdfProductContent.Replace("PRODUCTCOSTBUNDLE", TypeOfProduct == (int)ProductsType.PreBuy ? ($"{CurrencyInfoProvider.GetFormattedPrice(ValidationHelper.GetDouble(product.EstimatedPrice, default(double)), CurrentSite.SiteID, true)}") : ($"{CurrencyInfoProvider.GetFormattedPrice(ValidationHelper.GetDouble(product.SKUPrice, default(double)), CurrentSite.SiteID, true)}"));
                             pdfProductContent   = pdfProductContent.Replace("PRODUCTBUNDLEQUANTITY", product?.QtyPerPack.ToString() ?? string.Empty);
                             pdfProductContent   = pdfProductContent.Replace("PRODUCTEXPIRYDATE", product?.SKUValidUntil != default(DateTime) ? product?.SKUValidUntil.ToString("MMM dd, yyyy") : string.Empty ?? string.Empty);
                             pdfProductsContent += pdfProductContent;
                             pdfProductContent   = string.Empty;
                             selectedProducts.Remove(product.SKUNumber);
                         }
                         pdfProductsContentWithBrands += productBrandHeader + pdfProductsContent + closingDiv;
                         productBrandHeader            = string.Empty;
                     }
                 }
             }
             string pdfClosingDivs = SettingsKeyInfoProvider.GetValue($@"{CurrentSiteName}.PdfEndingTags");
             string html           = pdfProductsContentWithBrands + pdfClosingDivs;
             byte[] pdfByte        = default(byte[]);
             NReco.PdfGenerator.HtmlToPdfConverter PDFConverter = new NReco.PdfGenerator.HtmlToPdfConverter();
             PDFConverter.License.SetLicenseKey(SettingsKeyInfoProvider.GetValue("KDA_NRecoOwner", CurrentSite.SiteID), SettingsKeyInfoProvider.GetValue("KDA_NRecoKey", CurrentSite.SiteID));
             PDFConverter.LowQuality = SettingsKeyInfoProvider.GetBoolValue("KDA_NRecoLowQuality", CurrentSite.SiteID);
             if (TypeOfProduct == (int)ProductsType.PreBuy)
             {
                 pdfByte = PDFConverter.GeneratePdf(html, htmlTextheader + programsContent + closingDiv);
             }
             else
             {
                 pdfByte = PDFConverter.GeneratePdf(html, generalInventory + closingDiv);
             }
             string fileName = string.Empty;
             if (TypeOfProduct == (int)ProductsType.PreBuy)
             {
                 fileName = ValidationHelper.GetString(ResHelper.GetString("KDA.CatalogGI.PrebuyFileName"), string.Empty) + ".pdf";
             }
             else
             {
                 fileName = ValidationHelper.GetString(ResHelper.GetString("KDA.CatalogGI.GeneralInventory"), string.Empty) + ".pdf";
             }
             Response.Clear();
             MemoryStream ms = new MemoryStream(pdfByte);
             Response.ContentType = "application/pdf";
             Response.AddHeader("content-disposition", "attachment;filename=" + fileName);
             Response.Buffer = true;
             ms.WriteTo(Response.OutputStream);
             Response.End();
         }
         else
         {
             Bindproducts();
             noProductSelected.Visible = true;
         }
     }
     catch (Exception ex)
     {
         EventLogProvider.LogException("creating html", ex.Message, ex);
     }
 }