public bool InsertProductImage(b2bProductImage productImages)
 {
     productImages.IsDelete     = false;
     productImages.RowVersion   = 1;
     productImages.CreatedDate  = DateTimeNow;
     productImages.ModifiedDate = DateTimeNow;
     productImages.CreatedBy    = "sa";
     productImages.ModifiedBy   = "sa";
     qDB.b2bProductImages.InsertOnSubmit(productImages);
     IsResult = true;
     SaveData <b2bProductImage>(productImages, "ProductImageID");
     return(IsResult);
 }
        public ActionResult PrepareEditByID(int ID, string GenCode)
        {
            var           svProduct      = new ProductService();
            var           svCategory     = new CategoryService();
            var           svProductGroup = new ProductGroupService();
            var           svProductImage = new ProductImageService();
            CommonService svCommon       = new CommonService();

            #region FindCateAll

            //var sqlwherein = "";
            //switch (res.Common.lblWebsite)
            //{
            //    case "B2BThai": sqlwherein = " AND CategoryType IN (1,2)"; break;
            //    case "AntCart": sqlwherein = " AND CategoryType IN (3)"; break;
            //    case "myOtopThai": sqlwherein = " AND CategoryType IN (5)"; break;
            //    case "AppstoreThai": sqlwherein = " AND CategoryType IN (6)"; break;
            //    default: sqlwherein = ""; break;
            //}

            var sqlSelect = "CategoryID,CategoryName";
            var sqlWhere  = "CategoryLevel=1 AND RowFlag > 0 AND IsDelete=0";
            var data1     = svCategory.GetCategoryByLevel(1);
            //var data2 = svCategory.GetCategoryByLevel(2);
            //var data3 = svCategory.GetCategoryByLevel(3);
            ViewBag.SelectCateLV1 = data1;
            //ViewBag.SelectCateLV2 = data2;
            //ViewBag.SelectCateLV3 = data3;
            #endregion

            ViewBag.QtyUnits = svCommon.SelectEnum(CommonService.EnumType.QtyUnits);

            #region Set Product Group
            var ProductGroups = svProductGroup.GetProductGroup(LogonCompID);
            if (ProductGroups.Count() > 0)
            {
                ViewBag.ProductGroups = ProductGroups;
            }
            else
            {
                ViewBag.ProductGroups = null;
            }
            #endregion
            var Product = svProduct.SelectData <b2bProduct>(" * ", "ProductID=" + ID + " And IsDelete=0", null, 1, 1).First();
            ViewBag.Product = Product;

            sqlSelect = "ProductID,ProductImageID,ImgPath,ListNo";
            sqlWhere  = svProductImage.CreateWhereCause(ID);

            var Images   = svProductImage.SelectData <b2bProductImage>(sqlSelect, sqlWhere, " ListNo ASC");
            var countImg = 0;

            if (svProductImage.TotalRow > 0)
            {
                countImg = Images.Where(m => m.ImgPath == Product.ProductImgPath).Count();
            }

            if (countImg == 0)
            {
                var img = new b2bProductImage();
                img.ProductID = Product.ProductID;
                img.ListNo    = 1;
                img.ImgPath   = Product.ProductImgPath;
                img.ImgDetail = Product.ProductName;
                svProductImage.InsertProductImage(img);

                Images = svProductImage.SelectData <b2bProductImage>(sqlSelect, sqlWhere, " ListNo DESC");
            }

            ViewBag.ProductImg = Images;
            ViewBag.ImgCount   = Images.Count();

            var data2 = new List <b2bCategory>();
            var data3 = new List <b2bCategory>();
            data2 = svCategory.LoadSubCategory(DataManager.ConvertToInteger(Product.CateLV1), 500, 2);
            data3 = svCategory.LoadSubCategory(DataManager.ConvertToInteger(Product.CateLV2), 500, 3);
            ViewBag.SelectCateLV2 = data2;
            ViewBag.SelectCateLV3 = data3;

            var a = svCategory.SearchCategoryByID((int)Product.CateLV3);
            //var a = svCategory.SelectData<b2bCategory>("*", "CategoryID = " + (int)Product.CateLV3, null, 1, 1,);
            ViewBag.Catename    = a;
            ViewBag.ProductCode = GenCode;
            return(PartialView("UC/EditProduct"));
        }
        public ActionResult AddProduct
        (
            #region Param
            string ProductName,
            int?ProductGroup,
            string ProductCode,
            string Price,
            string Price_One,
            string Keyword,
            string QuickDetail,
            string FullDetail,
            string Qty,
            string QtyUnit,
            string Catecode,
            string CateLV3,
            List <string> ProductImgPath,
            int Ispromotion,
            string PromotionPrice
            #endregion
        )
        {
            var svProduct      = new ProductService();
            var svProductImage = new ProductImageService();

            b2bProduct model = new b2bProduct();

            try
            {
                #region Set Product Model
                model.ProductName      = ProductName;
                model.ProductGroupID   = (ProductGroup > 0) ? ProductGroup : 0;
                model.ProductCode      = ProductCode;
                model.Price            = DataManager.ConvertToDecimal(Price);
                model.Price_One        = DataManager.ConvertToDecimal(Price_One);
                model.ProductKeyword   = Keyword;
                model.ShortDescription = QuickDetail;
                model.ProductDetail    = FullDetail;
                model.Qty = DataManager.ConvertToDecimal(Qty);
                //model.QtyUnit = QtyUnit;
                model.ProductImgPath = ProductImgPath[0];
                model.IsPromotion    = DataManager.ConvertToBool(Ispromotion);
                model.PromotionPrice = DataManager.ConvertToDecimal(PromotionPrice);
                model.CompID         = LogonCompID;
                model.CateLV1        = Convert.ToInt32(Catecode.Substring(9, 4));
                model.CateLV2        = Convert.ToInt32(Catecode.Substring(14, 4));
                model.CateLV3        = Convert.ToInt32(CateLV3);
                model.IsShow         = true;
                model.IsJunk         = false;
                model.Complevel      = DataManager.ConvertToShort(LogonCompLevel);
                if (QtyUnit == "0")
                {
                    model.QtyUnit = "รายการ";
                }
                else
                {
                    model.QtyUnit = QtyUnit;
                }
                #region Check ว่าเป็น OutSource Add หรือ User Add
                if (LogonServiceType >= 9)
                {
                    model.RowFlag  = (short)2;
                    model.CompCode = LogonCompCode;
                }
                else
                {
                    model.RowFlag = (short)6;
                }
                #endregion

                model.ContactCount   = 0;
                model.ListNo         = 0;
                model.ViewCount      = 0;
                model.QuotationCount = 0;
                model.TelCount       = 0;
                model.CreatedDate    = DateTime.Now;
                model.ModifiedDate   = DateTime.Now;
                model.CreatedBy      = LogonCompCode;
                model.ModifiedBy     = LogonCompCode;
                #endregion

                #region Set ProductImage Model
                int i           = 1;
                var ProductImgs = new List <b2bProductImage>();
                foreach (var imgname in ProductImgPath)
                {
                    var modelImg = new b2bProductImage();
                    modelImg.ImgDetail    = imgname.Substring(0, 15);
                    modelImg.ListNo       = i;
                    modelImg.ImgPath      = imgname;
                    modelImg.RowVersion   = 1;
                    modelImg.RowFlag      = 1;
                    modelImg.CreatedDate  = DateTime.Now;
                    modelImg.ModifiedDate = DateTime.Now;
                    modelImg.CreatedBy    = "sa";
                    modelImg.ModifiedBy   = "sa";
                    ProductImgs.Add(modelImg);
                    i++;
                }
                #endregion

                #region Insert Product And ProductImage
                svProduct.InsertProduct(model, ProductImgs, LogonCompID, LogonCompLevel);
                svProduct.UpdateProductCountInCategories(Convert.ToInt32(Catecode.Substring(9, 4)), Convert.ToInt32(Catecode.Substring(14, 4)), Convert.ToInt32(CateLV3));
                svProduct.UpdateProductCountInCompany(LogonCompID);
                #endregion

                #region Save Image Files
                imgManager         = new FileHelper();
                imgManager.DirPath = "Product/" + LogonCompID + "/" + model.ProductID;


                if (Request.Cookies["AddProduct"] != null)
                {
                    imgManager.DirTempPath = Request.Cookies["AddProduct"]["UnRegis"];
                    HttpCookie myCookie = new HttpCookie("AddProduct");
                    myCookie.Expires = DateTime.Now.AddDays(-1d);
                    Response.Cookies.Add(myCookie);
                }
                else
                {
                    imgManager.DirTempPath = "Temp/Product/" + LogonCompID;
                }


                SaveFileImage(
                    imgManager.DirTempPath,
                    imgManager.DirPath,
                    ProductImgPath, 150, 450);
                #endregion

                //var mgKeyword = new KeywordMongo();
                //var isresult = mgKeyword.UpdateMongoProduct(model.ProductID);
            }
            catch (Exception ex)
            {
                CreateLogFiles(ex);
            }


            return(Json(new { IsResult = svProduct.IsResult, MsgError = GenerateMsgError(svProduct.MsgError), ID = model.ProductID }));
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public bool UpdateProduct(b2bProduct model, List <int> ImgID, List <string> ImgName)
        {
            var data = qDB.b2bProducts.Single(q => q.ProductID == model.ProductID);

            #region Set Model
            // set ค่า model
            data.ProductName      = model.ProductName;
            data.ProductGroupID   = model.ProductGroupID;
            data.ProductCode      = model.ProductCode;
            data.Price            = model.Price;
            data.Price_One        = model.Price_One;
            data.ProductKeyword   = model.ProductKeyword;
            data.ShortDescription = model.ShortDescription;
            data.ProductDetail    = model.ProductDetail;
            data.Qty     = model.Qty;
            data.QtyUnit = model.QtyUnit;
            if (model.CateLV1 != null)
            {
                data.CateLV1 = model.CateLV1;
            }
            if (model.CateLV2 != null)
            {
                data.CateLV2 = model.CateLV2;
            }
            if (model.CateLV3 != null)
            {
                data.CateLV3 = model.CateLV3;
            }
            data.ProductImgPath = model.ProductImgPath;
            data.RowFlag        = model.RowFlag;
            data.CompCode       = model.CompCode;
            // default
            data.RowVersion++;
            data.ModifiedBy   = model.ModifiedBy;
            data.ModifiedDate = DateTimeNow;
            #endregion

            #region Save
            using (var trans = new TransactionScope())
            {
                qDB.SubmitChanges();// บันทึกค่า Product

                var OldImgs = SelectData <b2bProductImage>(" * ", " IsDelete = 0 AND ProductID =" + model.ProductID);
                OldFiles = new List <string>();
                NewFiles = new List <string>();
                OldID    = new List <int>();

                foreach (var it in OldImgs)
                {
                    OldID.Add((int)it.ProductImageID);
                    OldFiles.Add(it.ImgPath);
                }


                for (var i = 0; i < ImgName.Count; i++)
                {
                    if (ImgID[i] > 0)
                    {
                        if (OldID.Exists(m => m.Equals(ImgID[i])))
                        {
                            OldID.Remove(ImgID[i]);
                        }

                        UpdateByCondition <b2bProductImage>(@" ImgPath = N'" + ImgName[i] + "' , ListNo = " + i + ", "
                                                            + " ImgDetail = N'" + model.ProductName + "' ",
                                                            " ProductImageID = " + ImgID[i]);
                    }
                    else
                    {
                        #region กรณีเป็นรูป ใหม่ ให้ insert ข้อมูล
                        var it = new b2bProductImage();
                        it.ProductID    = model.ProductID;
                        it.ImgPath      = ImgName[i];
                        it.ImgDetail    = model.ProductName;
                        it.ListNo       = i;
                        it.IsShow       = true;
                        it.IsDelete     = false;
                        it.CreatedDate  = DateTimeNow;
                        it.ModifiedDate = DateTimeNow;
                        it.CreatedBy    = "sa";
                        it.ModifiedBy   = "sa";
                        qDB.b2bProductImages.InsertOnSubmit(it);
                        qDB.SubmitChanges();
                        #endregion
                    }
                }

                foreach (var it in OldID)
                {
                    UpdateByCondition <b2bProductImage>("IsDelete = 1 ", " ProductImageID = " + it);
                }

                trans.Complete();
                IsResult = true;
            }
            #endregion

            return(IsResult);
        }