protected void uiButtonApply_Click(object sender, EventArgs e)
        {
            try
            {
                MailMessage msg = new MailMessage();
                msg.IsBodyHtml = true;

                System.Drawing.Graphics myGraphic = null;
                string[] images = uiRadioButtonListLayouts.SelectedValue.Split('#');

                System.Drawing.Image imgSelectedLayout;
                imgSelectedLayout = System.Drawing.Image.FromFile(Server.MapPath("~/" + images[0]));

                // add layout as attach
                msg.Attachments.Add(new Attachment(Server.MapPath("~/" + images[0])));

                System.Drawing.Color backcolor = System.Drawing.ColorTranslator.FromHtml(uiHiddenFieldColor.Value);
                System.Drawing.Brush b = new System.Drawing.SolidBrush(backcolor);

                Cards card = new Cards();
                card.LoadByPrimaryKey(CardID);

                // add Main card info
                msg.Body += "<br /> =========================================================== <br />";
                msg.Body += " ========================= Card info ================== <br />";
                msg.Body += " Card Name : " + card.CardNameEng;
                msg.Body += "<br /> Card Price : " + card.PriceNow;
                msg.Body += "<br /> Card Path : " + FullPath + " > " + card.CardNameEng;

                // add background color
                msg.Body += "<br /> =========================================================== <br />";
                msg.Body += " ========================= Background color ================== <br />";

                msg.Body += "Background Color : " + uiHiddenFieldColor.Value + "<br />";

                System.Drawing.Bitmap backgroundcolor = new System.Drawing.Bitmap(imgSelectedLayout);
                System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(backgroundcolor);
                g.FillRectangle(b, 0, 0, imgSelectedLayout.Width, imgSelectedLayout.Height);
                g.Save();
                string backpath = Guid.NewGuid().ToString();
                backgroundcolor.Save(Server.MapPath("~/images/UserOrders/" + backpath + "_1.jpeg"));

                System.Drawing.Image GeneratedImg;// =new Image.FromFile(ImageBack);

                // draw background
                GeneratedImg = System.Drawing.Image.FromFile(Server.MapPath("~/images/UserOrders/" + backpath + "_1.jpeg"));
                myGraphic = System.Drawing.Graphics.FromImage(GeneratedImg);
                myGraphic.SmoothingMode = SmoothingMode.HighQuality;

                msg.Body += "<br /> =========================================================== <br />";
                msg.Body += " ========================= Images Info ================== <br />";

                //draw user uploaded images
                foreach (DataListItem dli in uiDataListImages.Items)
                {
                    if (dli.ItemType == ListItemType.Item || dli.ItemType == ListItemType.AlternatingItem)
                    {
                        FileUpload imgfile = (FileUpload)dli.FindControl("uiFileUploadImg");
                        HiddenField hfPath = (HiddenField)dli.FindControl("uiHiddenFieldPath");
                        HiddenField hf = (HiddenField)dli.FindControl("uiHiddenFieldImgID");

                        HiddenField contrast = (HiddenField)dli.FindControl("uiHiddenFieldContrast");
                        HiddenField brightness = (HiddenField)dli.FindControl("uiHiddenFieldBrightness");
                        HiddenField rotate = (HiddenField)dli.FindControl("uiHiddenFieldRotate");

                        DropDownList style = (DropDownList)dli.FindControl("uiDropDownListStyle");
                        System.Web.UI.WebControls.Image current = (System.Web.UI.WebControls.Image)dli.FindControl("uiImageCurrent");
                        CardImages img = new CardImages();
                        img.LoadByPrimaryKey(Convert.ToInt32(hf.Value));
                        string path = hfPath.Value;
                        if (imgfile.HasFile)
                        {
                            path = "images/UserOrders/cardImages/" + Guid.NewGuid().ToString() + imgfile.FileName;
                            imgfile.SaveAs(Server.MapPath("~/" + path));
                            hfPath.Value = path;
                            current.ImageUrl = path;
                            current.Visible = true;
                        }

                        if (!string.IsNullOrEmpty(path))
                        {
                            System.Drawing.Image currentCardImage;
                            WebClient webclient = new WebClient();
                            System.IO.Stream s = webclient.OpenRead(ConfigurationManager.AppSettings["appHome"] + "ImageOnDemand.ashx?url=" + path + "&brightness=" + brightness.Value + "&contrast=" + contrast.Value + "&" + style.SelectedValue);
                            currentCardImage = System.Drawing.Image.FromStream(s);

                            if (float.Parse(rotate.Value) > 0)
                            {
                                myGraphic.TranslateTransform((float)img.ImgWidth / 2, (float)img.ImgHieght / 2);
                                myGraphic.RotateTransform(float.Parse(rotate.Value));
                                myGraphic.DrawImageUnscaled(currentCardImage, img.PosX, img.PosY, img.ImgWidth, img.ImgHieght);
                                myGraphic.RotateTransform(-float.Parse(rotate.Value));
                                myGraphic.TranslateTransform(-(float)img.ImgWidth / 2, -(float)img.ImgHieght / 2);
                            }
                            else
                            {
                                myGraphic.DrawImageUnscaled(currentCardImage, img.PosX, img.PosY, img.ImgWidth, img.ImgHieght);
                            }

                            // add image uploaded by user as attachment
                            msg.Attachments.Add(new Attachment(Server.MapPath("~/" + path)));
                            msg.Body += "Image " + (dli.ItemIndex + 1).ToString() + " : <br />";
                            msg.Body += "contrust :  " + contrast.Value + "<br />";
                            msg.Body += "brightness :  " + brightness.Value + " <br />";
                            msg.Body += "rotaion : " + rotate.Value + " <br />";
                            msg.Body += "style : " + style.SelectedValue.Substring(0, style.SelectedValue.IndexOf("=")) + " <br />";

                        }

                    }
                }

                myGraphic.ResetTransform();

                // draw layout
                //myGraphic.DrawImageUnscaled(imgSelectedLayout, 0, 0,imgSelectedLayout.Width, imgSelectedLayout.Height);
                myGraphic.DrawImage(imgSelectedLayout, 0, 0, imgSelectedLayout.Width, imgSelectedLayout.Height);
                myGraphic.Save();

                // draw strings
                myGraphic.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit;
                msg.Body += "<br /> =========================================================== <br />";
                msg.Body += " ========================= Text Info ================== <br />";

                foreach (DataListItem dli in uiDataListCardText.Items)
                {
                    if (dli.ItemType == ListItemType.Item || dli.ItemType == ListItemType.AlternatingItem)
                    {
                        HiddenField hf = (HiddenField)dli.FindControl("uiHiddenFieldTextID");
                        HiddenField hfc = (HiddenField)dli.FindControl("uiHiddenFieldMyColor");
                        DropDownList ddlfont = (DropDownList)dli.FindControl("uiDropDownListFonts");
                        DropDownList ddlfontsize = (DropDownList)dli.FindControl("uiDropDownListFontSize");
                        CardText text = new CardText();
                        TextBox tb = (TextBox)dli.FindControl("uiTextBoxText");
                        text.LoadByPrimaryKey(Convert.ToInt32(hf.Value));

                        System.Drawing.Color fontcolor = System.Drawing.ColorTranslator.FromHtml(hfc.Value);
                        System.Drawing.Brush fontbrush = new System.Drawing.SolidBrush(fontcolor);

                        FontFamily family = new FontFamily(ddlfont.SelectedItem.Text);
                        float fontsize = (Convert.ToInt32(ddlfontsize.SelectedItem.Text) * family.GetEmHeight(FontStyle.Regular)) / family.GetCellDescent(FontStyle.Regular);

                        myGraphic.DrawString(tb.Text, new Font(ddlfont.SelectedItem.Text, fontsize, FontStyle.Italic), fontbrush, new RectangleF(text.PosX, text.PosY, text.Width, text.Height));

                        msg.Body += text.TextLabel + " : " + tb.Text + "<br />";
                        msg.Body += "font :  " + ddlfont.SelectedItem.Text + "<br />";
                        msg.Body += "font size :  " + ddlfontsize.SelectedItem.Text + " <br />";
                        msg.Body += "color : " + hfc.Value + " <br />";
                    }
                }

                myGraphic.Save();

                string newpath = Guid.NewGuid().ToString();

                // save generated img
                GeneratedImg.Save(Server.MapPath("~/images/UserOrders/" + newpath + "_2.jpeg"), System.Drawing.Imaging.ImageFormat.Jpeg);
                uiImageMain.ImageUrl = "~/images/UserOrders/" + newpath + "_2.jpeg";

                // add final image as attachment
                msg.Attachments.Add(new Attachment(Server.MapPath("~/images/UserOrders/" + newpath + "_2.jpeg")));

                myGraphic.Dispose();

                UserPayement temp = new UserPayement();
                temp.AddNew();
                temp.CardID = CardID;
                temp.CardDesign = "images/UserOrders/" + newpath + "_2.jpeg";
                temp.CardCount = 1;
                try
                {
                    temp.GetColumn("ItemPrice");
                }
                catch (Exception)
                {
                    temp.AddColumn("ItemPrice", Type.GetType("System.Double"));
                }
                temp.SetColumn("ItemPrice", card.PriceNow);
                Session["UserPayment"] = temp;
                uipanelError.Visible = false;

                OrderMail = msg;

            }
            catch (Exception ex)
            {
                uipanelError.Visible = true;
            }
        }
        private void LoadCardInfo()
        {
            CardLayouts layout = new CardLayouts();
            layout.GetCardLayoutByCardID(CardID);
            for (int i = 0; i < layout.RowCount; i++)
            {
                uiRadioButtonListLayouts.Items.Add(new ListItem(String.Format("<img src='{0}' style='width:100px' />", ".." + layout.LayoutImage), ".." + layout.LayoutImage + "#" + ".." + layout.LayeoutBackImage));
                layout.MoveNext();
            }

            if (uiRadioButtonListLayouts.Items.Count > 0)
                uiRadioButtonListLayouts.Items[0].Selected = true;

            CardColor colors = new CardColor();
            colors.GetCardColorsByCardID(CardID);
            uiRepeaterColors.DataSource = colors.DefaultView;
            uiRepeaterColors.DataBind();

            Dimension dims = new Dimension();
            dims.GetAllDims();
            uiRepeaterSizes.DataSource = dims.DefaultView;
            uiRepeaterSizes.DataBind();

            CardText texts = new CardText();
            texts.GetCardTxtByCardID(CardID);
            uiDataListCardText.DataSource = texts.DefaultView;
            uiDataListCardText.DataBind();

            CardImages images = new CardImages();
            images.GetCardImageByCardID(CardID);
            if (images.RowCount > 0)
            {
                uiDataListImages.DataSource = images.DefaultView;
                uiDataListImages.DataBind();
                uiPanelNoImages.Visible = false;
            }
            else
            {
                uiDataListImages.Visible = false;
                uiPanelNoImages.Visible = true;
            }

            Cards card = new Cards();
            card.LoadByPrimaryKey(CardID);

            Categories cat = new Categories();
            cat.LoadByPrimaryKey(card.CategoryID);

            MainCat mcat = new MainCat();
            mcat.LoadByPrimaryKey(cat.MainCatId);

            TopLevelCat tcat = new TopLevelCat();
            tcat.LoadByPrimaryKey(mcat.TopLevelCatID);

            uiImageMain.ImageUrl = "../" + card.GeneralPreviewPhoto;
            FullPath = tcat.NameEng + " > " + mcat.NameEng + " > " + cat.CatNameEng;
        }
 private void BindCardImages()
 {
     CardImages txt = new CardImages();
     txt.GetCardImageByCardID(CurrentCard.CardID);
     uiGridViewCardImages.DataSource = txt.DefaultView;
     uiGridViewCardImages.DataBind();
     if (txt.RowCount < 2)
     {
         uiButtonSaveImageInfo.Visible = true;
     }
     else
     {
         uiButtonSaveImageInfo.Visible = false;
     }
 }
        protected void uiGridViewCards_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "EditCard")
            {
                Cards objData = new Cards();
                objData.LoadByPrimaryKey(Convert.ToInt32(e.CommandArgument.ToString()));

                uiTextBoxCardNameEn.Text = objData.CardNameEng;
                uiTextBoxCardNameAr.Text = objData.CardNameAr;
                uiTextBoxDescEn.Text = objData.DescriptionEng;
                uiTextBoxDescAr.Text = objData.DescriptionAr;
                if (!objData.IsColumnNull("DefaultFont"))
                {
                    uiDropDownListFonts.SelectedValue = objData.DefaultFont;
                }

                if (!objData.IsColumnNull("DimensionID"))
                    uiDropDownListDim.SelectedValue = objData.DimensionID.ToString();

                uiTextBoxPriceAfter.Text = objData.PriceNow.ToString();
                uiTextBoxPriceBefore.Text = objData.PriceBefore.ToString();

                uiPanelAllCards.Visible = false;
                uiPanelEdit.Visible = true;
                tabs.Visible = true;
                tabscontent.Visible = true;
                CurrentCard = objData;

                BindData();
                BindCardTxt();
                BindCardLayout();
                BindCardColors();
                BindCardImages();

                uiLabelCatName.Text = uiDropDownListCats.SelectedItem.Text;
                uiLabelCardName.Text = objData.CardNameEng;
            }
            else if (e.CommandName == "DeleteCard")
            {
                try
                {
                    int id = Convert.ToInt32(e.CommandArgument.ToString());

                    CardImages images = new CardImages();
                    images.GetCardImageByCardID(id);
                    int irows = images.RowCount;
                    for (int i = 0; i < irows; i++)
                    {
                        images.MarkAsDeleted();
                        images.MoveNext();
                    }
                    images.Save();

                    CardLayouts layouts = new CardLayouts();
                    layouts.GetCardLayoutByCardID(id);
                    int lrows = layouts.RowCount;
                    for (int i = 0; i < lrows; i++)
                    {
                        layouts.MarkAsDeleted();
                        layouts.MoveNext();
                    }

                    layouts.Save();

                    CardText texts = new CardText();
                    texts.GetCardTxtByCardID(id);
                    int trows = texts.RowCount;
                    for (int i = 0; i < trows; i++)
                    {
                        texts.MarkAsDeleted();
                        texts.MoveNext();
                    }

                    texts.Save();

                    CardColor colors = new CardColor();
                    colors.GetCardColorsByCardID(id);
                    int crows = colors.RowCount;
                    for (int i = 0; i < crows; i++)
                    {
                        colors.MarkAsDeleted();
                        colors.MoveNext();
                    }

                    colors.Save();

                    Cards objData = new Cards();
                    objData.LoadByPrimaryKey(id);
                    objData.MarkAsDeleted();
                    objData.Save();
                    CurrentCard = null;
                    BindData();
                }
                catch (Exception ex)
                {
                    return;
                }
            }
        }
        protected void uiGridViewCardImages_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "EditImg")
            {
                CardImages objData = new CardImages();
                objData.LoadByPrimaryKey(Convert.ToInt32(e.CommandArgument.ToString()));

                uiTextBoxImageWidth.Text = objData.ImgWidth.ToString();
                uiTextBoxImageHeight.Text = objData.ImgHieght.ToString();
                uiTextBoxImageX.Text = objData.PosX.ToString();
                uiTextBoxImageY.Text = objData.PosY.ToString();

                CurrentImg = objData;
                ClientScript.RegisterStartupScript(this.GetType(), "selectTab", "$(document).ready(function (){ $('#myTab a[href=\"#t-5\"]').tab('show'); $('#myTab a[href=\"#t-1\"]').removeClass('active'); $('#myTab a[href=\"#t-5\"]').addClass('active'); });", true);
            }
            else if (e.CommandName == "DeleteImg")
            {
                try
                {
                    CardImages objData = new CardImages();
                    objData.LoadByPrimaryKey(Convert.ToInt32(e.CommandArgument.ToString()));
                    objData.MarkAsDeleted();
                    objData.Save();
                    CurrentImg = null;
                    BindCardImages();
                    ClientScript.RegisterStartupScript(this.GetType(), "selectTab", "$(document).ready(function (){ $('#myTab a[href=\"#t-5\"]').tab('show'); $('#myTab a[href=\"#t-1\"]').removeClass('active'); $('#myTab a[href=\"#t-5\"]').addClass('active'); });", true);
                }
                catch (Exception ex)
                {
                    return;
                }
            }
        }
        protected void uiButtonSaveImageInfo_Click(object sender, EventArgs e)
        {
            CardImages txt = new CardImages();
            if (CurrentTxt == null)
            {
                txt.AddNew();
                txt.CardID = CurrentCard.CardID;
            }
            else
                txt = CurrentImg;

            int width, height, x, y;
            int.TryParse(uiTextBoxImageWidth.Text, out width);
            int.TryParse(uiTextBoxImageHeight.Text, out height);
            int.TryParse(uiTextBoxImageY.Text, out y);
            int.TryParse(uiTextBoxImageX.Text, out x);
            txt.ImgWidth = width;
            txt.ImgHieght = height;
            txt.PosX = x;
            txt.PosY = y;
            txt.Save();
            BindCardImages();
            ClientScript.RegisterStartupScript(this.GetType(), "selectTab", "$(document).ready(function (){ $('#myTab a[href=\"#t-5\"]').tab('show'); $('#myTab a[href=\"#t-1\"]').removeClass('active'); $('#myTab a[href=\"#t-5\"]').addClass('active'); });", true);
            ClearImageFields();
            CurrentImg = null;
        }