예제 #1
0
 public async Task SaveMenuOption(MenuOption option)
 {
     if (string.IsNullOrEmpty(option.Id))
     {
         await _repository.Add(option);
     }
     else
     {
         await _repository.Update(option);
     }
 }
        public ActionResult Save(SaveProductFormModel model)
        {
            #region thêm sản phẩm
            Menu menu = new Menu()
            {
                CodeProduct = RejectMarks(model.NameProductLong),
                PriceOffPro = model.PriceOffPro,
                Content     = ChangeImageSEO(model.Content, model.NameProduct, ConvertFont(model.NameProductLong)),
                Content1    = ChangeImageSEO1(model.Content1, model.NameProduct, ConvertFont(model.NameProductLong)),
                Content2    = ChangeImageSEO2(model.Content2, model.NameProduct, ConvertFont(model.NameProductLong)),
                Content3    = ChangeImageSEO3(model.Content3, model.NameProduct, ConvertFont(model.NameProductLong)),
                Content4    = ChangeImageSEO4(model.Content4, model.NameProduct, ConvertFont(model.NameProductLong)),
                //Content = model.Content,
                //Content1 = model.Content1,
                //Content2 = model.Content2,
                //Content3 = model.Content3,
                //Content4 = model.Content4,
                Img                = (model.Img).Replace("/files/", ""),
                IdNhaCungCap       = model.IdNhaCungCap,
                idControl          = 11,
                Note               = model.Note,
                ok                 = false,//vua them thi san pham an di
                Option1            = model.Option1,
                Option5            = model.Option5,
                Option6            = model.Option6,
                Menu2              = "",
                MenuAdwords        = "",
                Link               = ConvertFont(model.NameProductLong),
                LevelMenu          = 1,
                LinkHttp           = "https://beautygarden.vn/" + ConvertFont(model.NameProduct) + ".html",
                LinkHttp1          = "",
                Style              = "san-pham",
                ui                 = "vi",
                ContentLabel       = model.ContentLabel,
                Option             = true,
                ContentLabel1      = model.ContentLabel1,
                ContentLabel2      = model.ContentLabel2,
                ContentLabel3      = model.ContentLabel3,
                ContentLabel4      = model.ContentLabel4,
                VIP                = false,
                Option8            = true,
                Option9            = model.Option9,
                sPosition          = model.sPosition,
                Visitor            = model.Visitor,
                sDate              = DateTime.Now,
                sDateOk            = DateTime.Now,
                idUser             = 18,
                idUserOk           = 18,
                Option2            = true,
                Option3            = true,
                Option4            = true,
                SEOKeyWord         = "",
                NumberHaveGift     = 0,
                idMPADSys          = 0,
                HasSale            = model.HasSale,
                HasValue           = false,
                NameProduct        = model.NameProduct,
                BarCode            = string.IsNullOrEmpty(model.BarCode) ? "" : model.BarCode.Trim(), //luu tam thoi ben bang menu sau do lay du lieu do qua bang menuoption
                HasOnHand          = true,                                                            //mac dinh =1 tuc la con hang. sau khi kiem tra ma vach thi update lai onhand
                SapXepSanPham      = model.SapXepSanPham,
                SapxepDanhMuc      = model.SapxepDanhMuc,
                BarcodeType        = model.BarcodeType,
                ContentTaiSao      = model.ContentTaiSao,
                ContentLabelTaiSao = model.ContentLabelTaiSao,
                ContentTheoSp      = model.ContentTheoSp,
                GiaHot             = false,
                NameProductLong    = model.NameProductLong,
                DungSai            = true,
                SEODescription     = model.SEODescription,
                SEOtitle           = model.SEOtitle,
                NgayHetHang        = DateTime.Now,
                NguoiTao           = User.Identity.Name,
                Bestseller         = false
            };

            _menuRepository.Add(menu);
            _unitOfWork.Commit();
            //sau khi thêm mới sp xong insert 4 sao cho phần đánh giá
            using (var context = new ShopDataContex())
            {
                context.Database.ExecuteSqlCommand("INSERT INTO UserRatings (Rating, IdSanPham)VALUES (4, {0})", menu.id_);
            }
            #endregion
            #region hinh anh khac
            //luu hinh anh khac
            IList <MenuImageMapping.MenuImage> images = !string.IsNullOrEmpty(model.OtherImages)
                                                         ? JsonConvert.DeserializeObject
                                                        <IList <MenuImageMapping.MenuImage> >(model.OtherImages)
                                                         : new List <MenuImageMapping.MenuImage>();
            if (images.Any())
            {
                foreach (var menuImage in images)
                {
                    if (menuImage.id == 0)//them moi hinh anh
                    {
                        MenuImage img = new MenuImage()
                        {
                            idMenu    = menu.id_,
                            date      = DateTime.Now,
                            ImageName = menuImage.ImageName,
                        };
                        _menuImageRepository.Add(img);
                        _unitOfWork.Commit();
                    }
                }
            }
            #endregion
            #region danh muc

            IList <int> idDanhMucs = !string.IsNullOrEmpty(model.DanhMucIds)
                                        ? JsonConvert.DeserializeObject
                                     <IList <int> >(model.DanhMucIds)
                                        : new List <int>();
            if (model.id_ != 0)
            {
                IList <MenuProAdd> menusDanhMuc = _menuProAddRepository.GetMany(o => o.idMenuProAdded == model.id_).ToList();
                foreach (var menuProAdd in menusDanhMuc)
                {
                    if (!idDanhMucs.Contains(menuProAdd.idMenuCatelogy))
                    {
                        //delete nhung thang khong co trong danh sach idDanhMucs
                        _menuProAddRepository.Delete(menuProAdd);
                        _unitOfWork.Commit();
                    }
                }
                if (menusDanhMuc.Any())
                {
                    if (idDanhMucs.Any())
                    {
                        //lay danh sach menuproadd hien tai cua product

                        foreach (var idDanhMuc in idDanhMucs)
                        {
                            if (!menusDanhMuc.Any(o => o.idMenuCatelogy == idDanhMuc))
                            {
                                MenuProAdd menuProAdd = new MenuProAdd()
                                {
                                    idMenuCatelogy = idDanhMuc,
                                    idMenuProAdded = menu.id_,
                                    sDate          = DateTime.Now,
                                    sDateOk        = DateTime.Now,
                                    Style          = "add-san-pham",
                                    idUser         = 15,
                                    idUserOk       = 15
                                };
                                _menuProAddRepository.Add(menuProAdd);
                                _unitOfWork.Commit();
                            }
                        }
                    }

                    IList <int> removeMenuProdIds =
                        menusDanhMuc.Where(o => !idDanhMucs.Contains(o.idMenuCatelogy)).Select(o => o.id_).ToList();
                    if (removeMenuProdIds.Any())
                    {
                        _menuProAddRepository.Delete(o => removeMenuProdIds.Contains(o.id_));
                    }
                }
            }
            else
            {
                if (idDanhMucs.Any())
                {
                    foreach (var idDanhMuc in idDanhMucs)
                    {
                        MenuProAdd menuProAdd = new MenuProAdd()
                        {
                            idMenuCatelogy = idDanhMuc,
                            idMenuProAdded = menu.id_,
                            sDate          = DateTime.Now,
                            sDateOk        = DateTime.Now,
                            Style          = "add-san-pham",
                            idUser         = 15,
                            idUserOk       = 15
                        };
                        _menuProAddRepository.Add(menuProAdd);
                        _unitOfWork.Commit();
                    }
                }
            }

            #endregion
            #region ma vach

            IList <MenuOptionMapping.OptionShow> maVachs = !string.IsNullOrEmpty(model.MaVachJson)
                                                      ? JsonConvert.DeserializeObject
                                                           <IList <MenuOptionMapping.OptionShow> >(model.MaVachJson)
                                                      : new List <MenuOptionMapping.OptionShow>();
            IList <MenuOption> menuOptionsCu = _menuOptionRepository.GetMany(o => o.IdMenu == model.id_).ToList();
            if (maVachs.Any())
            {
                foreach (var optionShow in maVachs)
                {
                    if (optionShow.id_ == 0)//them moi ma vach
                    {
                        MenuOption menuOption = new MenuOption()
                        {
                            IdMenu      = menu.id_,
                            TenLoai     = optionShow.TenLoai,
                            Img         = optionShow.Img.Replace("/files/", ""),
                            Barcode     = string.IsNullOrEmpty(optionShow.Barcode) ? "" : optionShow.Barcode.Trim(),
                            Flag        = optionShow.Flag,
                            NameProduct = menu.NameProduct,
                            SDate       = DateTime.Now,
                            sDateOk     = DateTime.Now
                        };
                        //truoc khi luu ma vach kiem tra ma vach co ton tai trong he thong hay khong
                        int istontai = _menuRepository.ChekBarcode(string.IsNullOrEmpty(optionShow.Barcode) ? "" : optionShow.Barcode.Trim());
                        if (istontai > 0)//ma vach ton tai ==> them duoc
                        {
                            _menuOptionRepository.Add(menuOption);
                            _unitOfWork.Commit();
                            //update hasvalue=1
                            using (var context = new ShopDataContex())
                            {
                                context.Database.ExecuteSqlCommand("update Menu set HasValue='True' where id_ ={0}", menu.id_);
                                //update barcodetype
                                context.Database.ExecuteSqlCommand("update Menu set BarcodeType={0} where id_ ={1}", optionShow.Flag, menu.id_);
                            }
                            //them dl thanh cong roi thi kiem tra san pham: onhand=0 thi an di nguoc lai show ra
                            //neu tong onhand <=0  het hang. nguoc lai con hang
                            int isonhand = _menuRepository.CheckOnhand(optionShow.Barcode.Trim());
                            if (isonhand <= 0)
                            {
                                //update hasOnhand =0

                                using (var context = new ShopDataContex())
                                {
                                    context.Database.ExecuteSqlCommand("update Menu set HasOnHand='false' where id_ ={0}", menu.id_);
                                }
                            }
                        }
                        else
                        {
                            return(RedirectToAction("Index"));
                        }
                    }
                    else
                    {
                        MenuOption sua = menuOptionsCu.FirstOrDefault(o => o.id_ == optionShow.id_);//sua ma vach
                        if (sua != null)
                        {
                            sua.Img     = optionShow.Img;
                            sua.Barcode = optionShow.Barcode.Trim();
                            sua.TenLoai = optionShow.TenLoai;
                            sua.Flag    = optionShow.Flag;
                            _menuOptionRepository.Update(sua);
                            _unitOfWork.Commit();
                        }
                    }
                }
            }


            #endregion
            #region ma vach khong co gi
            //cach 1:lay barcode cua bang menu sau do luu vao bang meuoption
            //truoc khi luu ma vach kiem tra ma vach co ton tai trong he thong hay khong
            if (model.BarcodeType == 0)
            {
                int somavach = _menuRepository.ChekBarcode(menu.BarCode.Trim());
                if (somavach > 0)//ma vach ton tai ==> them duoc
                {
                    //luu san pham
                    MenuOption menuOp = new MenuOption()
                    {
                        IdMenu      = menu.id_,
                        TenLoai     = "không có gì",
                        Img         = "images.png",
                        Barcode     = menu.BarCode,
                        SDate       = DateTime.Now,
                        sDateOk     = DateTime.Now,
                        NameProduct = menu.NameProduct,
                        Flag        = (short)BarcodeType.KhongCoGi
                    };
                    //luu ma vach
                    _menuOptionRepository.Add(menuOp);
                    _unitOfWork.Commit();

                    //update hasvalue=1
                    // _menuRepository.UpdateHasvalue(menu.id_, true);
                    using (var context = new ShopDataContex())
                    {
                        context.Database.ExecuteSqlCommand("update Menu set HasValue='True' where id_ ={0}", menu.id_);
                        //update barcodetype=0 neu la san pham khong co gi
                        context.Database.ExecuteSqlCommand("update Menu set BarcodeType=0 where id_ ={0}", menu.id_);
                    }
                    //them dl thanh cong roi thi kiem tra san pham: onhand=0 thi an di nguoc lai show ra
                    //neu tong onhand <=0  het hang. nguoc lai con hang
                    int tonkho = _menuRepository.CheckOnhand(menu.BarCode);
                    if (tonkho <= 0)
                    {
                        //update hasOnhand = 0
                        using (var context = new ShopDataContex())
                        {
                            context.Database.ExecuteSqlCommand("update Menu set HasOnHand='false' where id_ ={0}", menu.id_);
                        }
                    }
                    //  kiểm tra nếu mã vạch là CB hoặc cb tức là (Combo) thì update Hasonhand =1
                    if (menu.BarCode.IndexOf("CB") != -1 || menu.BarCode.IndexOf("cb") != -1)
                    {
                        using (var context = new ShopDataContex())
                        {
                            context.Database.ExecuteSqlCommand("update Menu set HasOnHand='True' where id_ ={0}", menu.id_);
                        }
                    }
                }
            }

            #endregion
            #region thêm mới tag

            string[] separators = { "," };
            var      taglist    = model.mySingleField.Split(separators, StringSplitOptions.RemoveEmptyEntries);
            //check null: nếu tồn tại thêm mới bình thường
            if (taglist.Any())
            {
                foreach (var tag in taglist)
                {
                    DanhSachTag _tag = new DanhSachTag()
                    {
                        NgayTao  = DateTime.Now,
                        IdMenu   = menu.id_,
                        NguoiTao = 18,
                        TenTag   = tag.Trim(),
                        Code     = RejectMarks(tag.Trim())
                    };
                    _danhSachTagRepository.Add(_tag);
                    _unitOfWork.Commit();
                }
            }
            #endregion
            #region thêm mới kho quà tặng

            if (model.IdQUaTangs != null)
            {
                KhoQuaTang khoQuaTang = new KhoQuaTang()
                {
                    IdMenu        = menu.id_,
                    NgayTao       = DateTime.Now,
                    IdSanPhamTang = model.IdQUaTangs
                };
                _khoQuaTangRepository.Add(khoQuaTang);
                _unitOfWork.Commit();
            }

            #endregion

            _menuRepository.ClearCacheByKey(new List <string>()
            {
                Shop.Web.Core.Cache.CacheKey.AllMenu
            });

            return(RedirectToAction("Index"));
        }
        public JsonResult SaveBarcode(BarcodeSubmitModel model)
        {
            //them moi ma vach
            MenuOption menuOption = new MenuOption();

            if (model.Id == 0)
            {
                int somavach = _menuRepository.ChekBarcode(model.Barcode);
                if (somavach == 0)
                {
                    //ma vach khong ton tai
                    return(Json(new
                    {
                        ok = false,
                        message = "Mã vạch này không đúng"
                    }, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    //ma vach bi trung
                    var menu = _menuOptionRepository.Get(o => o.Barcode.Equals(model.Barcode));
                    if (menu != null)
                    {
                        return(Json(new
                        {
                            ok = false,
                            message = "Mã vạch này đã tồn tại!"
                        }, JsonRequestBehavior.AllowGet));
                    }
                }
                if (model.Flag == 0)
                {
                    //khong co gi
                    //xoa du lieu trong bang voi Idmenu
                    using (var context = new ShopDataContex())
                    {
                        context.Database.ExecuteSqlCommand("delete from MenuOption where MenuOption.IdMenu={0}", model.IdMenu);
                        context.Database.ExecuteSqlCommand("update Menu set Menu.HasValue='False'  where Menu.id_={0}", model.IdMenu);
                    }
                    menuOption = new MenuOption()
                    {
                        Barcode = model.Barcode,
                        Flag    = model.Flag,
                        Img     = "",
                        TenLoai = "Không có gì",
                        SDate   = DateTime.Now,
                        sDateOk = DateTime.Now,
                        IdMenu  = model.IdMenu
                    };
                    _menuOptionRepository.Add(menuOption);

                    using (var context = new ShopDataContex())
                    {
                        context.Database.ExecuteSqlCommand("update Menu set Menu.HasValue='True'  where Menu.id_={0}", model.IdMenu);
                        context.Database.ExecuteSqlCommand("update Menu set Menu.BarcodeType={0} where Menu.id_={1}", model.Flag, model.IdMenu);
                    }
                }
                else
                {
                    // co mau hoac co mui
                    menuOption = new MenuOption()
                    {
                        Barcode = model.Barcode,
                        Flag    = model.Flag,
                        Img     = model.Hinh.Replace("/files/", ""),
                        TenLoai = model.TenLoai,
                        SDate   = DateTime.Now,
                        sDateOk = DateTime.Now,
                        IdMenu  = model.IdMenu
                    };
                    _menuOptionRepository.Add(menuOption);
                }
                //_menuOptionRepository.Add(menuOption);
                //sau khi them moi xong update lai barcodetype trong bang menu
                using (var context = new ShopDataContex())
                {
                    context.Database.ExecuteSqlCommand("update Menu set Menu.HasValue='True'  where Menu.id_={0}", model.IdMenu);
                    context.Database.ExecuteSqlCommand("update Menu set Menu.BarcodeType={0} where Menu.id_={1}", model.Flag, model.IdMenu);
                }
            }

            _unitOfWork.Commit();
            //update xong kiem tra san pham do con hang hay het hang roi update lai
            int tonkho    = _menuRepository.CheckOnhand(model.Barcode);
            int idsanpham = _menuOptionRepository.GetIdSanPhamByBarCode(model.Barcode);

            if (tonkho <= 0)
            {
                using (var context = new ShopDataContex())
                {
                    context.Database.ExecuteSqlCommand("update Menu set HasOnHand='false' where id_ ={0}", idsanpham);
                }
            }

            return(Json(new
            {
                ok = true,
                message = "Cập nhật mã vạch thành công!"
            }, JsonRequestBehavior.AllowGet));
        }