/// <summary>
        /// Update Product Details
        /// </summary>
        protected void UpdateProduct()
        {
            string productName = TextBoxProductName.Text;

            #region Update Product Details

            #region Get the schema of SQL Table
            string   connectionString = ConfigurationManager.ConnectionStrings["DBConnection"].ConnectionString;
            string[] saltString       = ConfigurationManager.AppSettings.GetValues("ProductPasswordSaltString");

            StringBuilder sbSqlQuery = new StringBuilder("Select * From M_PRODUCTS where PRDCT_ID = '" + HiddenProductID.Value + "'");

            SqlConnection sqlConn = new SqlConnection(connectionString);
            sqlConn.Open();
            SqlDataAdapter    daProducts = new SqlDataAdapter(sbSqlQuery.ToString(), connectionString);
            SqlCommandBuilder cbFields   = new SqlCommandBuilder(daProducts);
            #endregion

            #region Assign product Details to SQL Table Data
            if (cbFields != null)
            {
                DataSet dsProducts = new DataSet();
                dsProducts.Locale = CultureInfo.InvariantCulture;

                daProducts.FillSchema(dsProducts, SchemaType.Mapped, "Product");
                daProducts.Fill(dsProducts, "Product");

                DataRow drowProduct = dsProducts.Tables[0].Rows.Find(TextBoxProductCode.Text);
                if (drowProduct != null)
                {
                    drowProduct.BeginEdit();
                    drowProduct["COMPANY_ID"]          = DropDownListProductCompany.SelectedValue;
                    drowProduct["PRDCT_NAME"]          = productName;
                    drowProduct["PRDCT_CODE"]          = TextBoxProductCode.Text;
                    drowProduct["PRDCT_FAMILY"]        = TextBoxProductFamily.Text;
                    drowProduct["PRDCT_VERSION"]       = TextBoxProductVersion.Text;
                    drowProduct["PRDCT_BUILD"]         = TextBoxProductBuild.Text;
                    drowProduct["PRDCT_ACESSID"]       = WebLibrary.GetHashCode(saltString[0] + TextBoxProductCode.Text);;
                    drowProduct["PRDCT_ACESSPASSWORD"] = WebLibrary.GetHashCode(TextBoxProductCode.Text + saltString[0]);
                    try
                    {
                        if (FileUploadProductLogo.HasFile)
                        {
                            byte[] productLogo = null;
                            int    logoHeight  = 50;
                            int    logoWidth   = 250;

                            productLogo = FileUploadProductLogo.FileBytes;
                            Bitmap productLogoBitmap = (Bitmap)Bitmap.FromStream(new MemoryStream(productLogo));
                            bool   modifyLogo        = false;
                            if (productLogoBitmap.Height > logoHeight)
                            {
                                modifyLogo = true;
                            }
                            else
                            {
                                logoHeight = productLogoBitmap.Height;
                            }
                            if (productLogoBitmap.Width > logoWidth)
                            {
                                modifyLogo = true;
                            }
                            else
                            {
                                logoWidth = productLogoBitmap.Width;
                            }

                            if (modifyLogo)
                            {
                                Bitmap       modifiedProductLogo = new Bitmap(productLogoBitmap, new Size(logoWidth, logoHeight));
                                MemoryStream ms = new MemoryStream();
                                modifiedProductLogo.Save(ms, ImageFormat.Gif);
                                byte[] bitmapData = ms.ToArray();
                                drowProduct["PRDCT_LOGO"] = bitmapData;
                            }
                            else
                            {
                                drowProduct["PRDCT_LOGO"] = FileUploadProductLogo.FileBytes;
                            }
                        }
                    }
                    catch (InvalidCastException)
                    {
                        LabelError.Text = Resources.FailureMessages.InvalidProductLogoFile;
                        return;
                    }
                    catch (ArgumentException)
                    {
                        LabelError.Text = Resources.FailureMessages.InvalidProductLogoFile;
                        return;
                    }
                    drowProduct["REC_USER"]   = Session["UserSystemID"].ToString();
                    drowProduct["REC_ACTIVE"] = CheckBoxProductActive.Checked;
                    drowProduct["REC_DATE"]   = DateTime.Now;
                    drowProduct.EndEdit();
                    daProducts.Update(dsProducts, "Product");
                }
                sqlConn.Close();
            }
            #endregion

            #endregion

            #region Redirect to Products Page
            Response.Redirect("Products.aspx?ActionStatus=Success&Mode=U");
            #endregion
        }
        /// <summary>
        /// Add the product definition to SQL Table
        /// </summary>
        protected void AddProduct()
        {
            if (DataProvider.IsProductExists(TextBoxProductCode.Text))
            {
                #region Display Error Message if product already exists
                GetMasterPage().DisplayActionMessage('F', null, Resources.FailureMessages.ProductAlreadyExists);
                #endregion
            }
            else
            {
                #region Add Product to SQL table

                string productName = TextBoxProductName.Text;

                #region Get the schema of SQL Table
                string   connectionString = ConfigurationManager.ConnectionStrings["DBConnection"].ConnectionString;
                string[] saltString       = ConfigurationManager.AppSettings.GetValues("ProductPasswordSaltString");
                string   sqlQuery         = "Select * From M_PRODUCTS where 1 = 2";

                SqlConnection sqlConn = new SqlConnection(connectionString);
                sqlConn.Open();
                SqlDataAdapter    daProducts = new SqlDataAdapter(sqlQuery, connectionString);
                SqlCommandBuilder cbFields   = new SqlCommandBuilder(daProducts);
                #endregion

                #region Assign product Details to SQL Table Data
                if (cbFields != null)
                {
                    DataSet dsProducts = new DataSet();
                    dsProducts.Locale = CultureInfo.InvariantCulture;

                    daProducts.FillSchema(dsProducts, SchemaType.Mapped, "Product");

                    DataRow drowProduct = dsProducts.Tables["Product"].NewRow();

                    drowProduct["COMPANY_ID"]          = DropDownListProductCompany.SelectedValue;
                    drowProduct["PRDCT_NAME"]          = productName;
                    drowProduct["PRDCT_CODE"]          = TextBoxProductCode.Text;
                    drowProduct["PRDCT_FAMILY"]        = TextBoxProductFamily.Text;
                    drowProduct["PRDCT_VERSION"]       = TextBoxProductVersion.Text;
                    drowProduct["PRDCT_BUILD"]         = TextBoxProductBuild.Text;
                    drowProduct["PRDCT_ACESSID"]       = WebLibrary.GetHashCode(saltString[0] + TextBoxProductCode.Text);;
                    drowProduct["PRDCT_ACESSPASSWORD"] = WebLibrary.GetHashCode(TextBoxProductCode.Text + saltString[0]);

                    #region Get the data from selected Product Logo file
                    try
                    {
                        if (FileUploadProductLogo.HasFile)
                        {
                            byte[] productLogo = null;
                            // Get the configured Logo height and width from SQL Table: M_CONFIG
                            int logoHeight = int.Parse(DataProvider.GetDBConfigValue("Product Logo Height"), CultureInfo.InvariantCulture);
                            int logoWidth  = int.Parse(DataProvider.GetDBConfigValue("Product Logo Width"), CultureInfo.InvariantCulture);;

                            productLogo = FileUploadProductLogo.FileBytes;
                            Bitmap productLogoBitmap = (Bitmap)Bitmap.FromStream(new MemoryStream(productLogo));
                            bool   modifyLogo        = false;
                            if (productLogoBitmap.Height > logoHeight)
                            {
                                modifyLogo = true;
                            }
                            else
                            {
                                logoHeight = productLogoBitmap.Height;
                            }
                            if (productLogoBitmap.Width > logoWidth)
                            {
                                modifyLogo = true;
                            }
                            else
                            {
                                logoWidth = productLogoBitmap.Width;
                            }

                            if (modifyLogo)
                            {
                                Bitmap       modifiedProductLogo = new Bitmap(productLogoBitmap, new Size(logoWidth, logoHeight));
                                MemoryStream ms = new MemoryStream();
                                modifiedProductLogo.Save(ms, ImageFormat.Gif);
                                byte[] bitmapData = ms.ToArray();
                                drowProduct["PRDCT_LOGO"] = bitmapData;
                            }
                            else
                            {
                                drowProduct["PRDCT_LOGO"] = FileUploadProductLogo.FileBytes;
                            }
                        }
                    }
                    catch (InvalidCastException)
                    {
                        LabelError.Text = Resources.FailureMessages.InvalidProductLogoFile;
                        return;
                    }
                    catch (ArgumentException)
                    {
                        LabelError.Text = Resources.FailureMessages.InvalidProductLogoFile;
                        return;
                    }
                    #endregion

                    drowProduct["REC_USER"] = Session["UserSystemID"].ToString();

                    drowProduct["REC_ACTIVE"] = CheckBoxProductActive.Checked;
                    drowProduct["REC_DATE"]   = DateTime.Now;
                    dsProducts.Tables["Product"].Rows.Add(drowProduct);
                    daProducts.Update(dsProducts, "Product");
                    sqlConn.Close();
                }
                #endregion

                #region Redirect to Products Page
                Response.Redirect("Products.aspx?ActionStatus=Success&Mode=A");
                #endregion

                #endregion
            }
        }