/// <summary>
        /// Hàm thực hiện ajax thêm các bước vào bảng và thực hiện lấy danh sách các bước có trong cart đổ lên giao diện
        /// </summary>
        /// <returns>Trả vê chuỗi htmlBangDanhSachCacBuoc|bảng danh sách nguyên liệu|tongGiaNguyenLieu</returns>
        public string themChiTietVaTraVeBang(string duLieu)
        {
            cartCongThuc cart = (cartCongThuc)Session["congThuc"];

            try
            {
                ctCongThuc chiTietAdd = new ctCongThuc();
                this.layDuLieuTuViewChiTiet(chiTietAdd, duLieu);
                //------Thêm chi tiết vào session
                cart.addCart(chiTietAdd);
                //-----Cập nhật lại session
                Session["congThuc"] = cart;
            }
            catch (Exception ex)
            {
                xulyFile.ghiLoi("Class CongThucController - Function: themChiTietVaTraVeBang", ex.Message);
            }
            //Trả vê chuỗi htmlBangDanhSachCacBuoc|bảng danh sách nguyên liệu|tongGiaNguyenLieu
            return(taoBangChiTietVaNguyenLieuSuDungTuSession());
        }
        /// <summary>
        /// Hàm thực hiện chỉnh sửa lại bước trong session
        /// </summary>
        /// <param name="maCt">Mã chi tiết để xác định chi tiết cần sửa</param>
        /// <param name="duLieu">Chuỗi chứa dữ liệu chỉnh sửa có dang: maNguyenLieu|buocSo|soLuong|donVi|hanhDong|ghiChu</param>
        /// <returns>Trả vê chuỗi htmlBangDanhSachCacBuoc|bảng danh sách nguyên liệu|tongGiaNguyenLieu</returns>
        public string chinhSuaBuoc(string duLieu, int maCt)
        {
            cartCongThuc cart = (cartCongThuc)Session["congThuc"];

            try
            {
                //-----Lấy ra 1 phần tử trong session với điều kiện.....
                ctCongThuc chiTietSua = cart.getItem(maCt);
                this.layDuLieuTuViewChiTiet(chiTietSua, duLieu);
                //----Xóa bước cũ trong session và tạo lại
                cart.removeItem(maCt);
                chiTietSua.maChiTiet = maCt;
                cart.addCart(chiTietSua);
                //------Cập nhật lại session
                Session["congThuc"] = cart;
            }
            catch (Exception ex)
            {
                xulyFile.ghiLoi("Class CongThucController - Function: chinhSuaBuoc", ex.Message);
            }
            return(taoBangChiTietVaNguyenLieuSuDungTuSession());
        }
 /// <summary>
 /// Hàm tạo giao diện chỉnh sửa công thức
 /// </summary>
 /// <param name="maCongThuc"></param>
 /// <returns></returns>
 public ActionResult ct_ChinhSuaCongThuc()
 {
     this.resetData();
     try
     {
         string param = xulyChung.nhanThamSoTrongSession();
         if (param.Length > 0)
         {
             int             maCongThuc = xulyDuLieu.doiChuoiSangInteger(param);
             qlCaPheEntities db         = new qlCaPheEntities();
             congThucPhaChe  ctSua      = db.congThucPhaChes.SingleOrDefault(c => c.maCongThuc == maCongThuc);
             if (ctSua != null)
             {
                 this.doDuLieuCongThucLenView(ctSua, db);
                 //------Gán dữ liệu trong bảng chi tiết vào session
                 cartCongThuc cart = (cartCongThuc)Session["congThuc"];
                 foreach (ctCongThuc ct in db.ctCongThucs.ToList().Where(c => c.maCongThuc == ctSua.maCongThuc))
                 {
                     cart.addCart(ct);
                     Session["congThuc"] = cart;
                 }
                 xulyChung.ghiNhatKyDtb(1, "Chỉnh sửa công thức pha chế của \" " + xulyDuLieu.traVeKyTuGoc(ctSua.sanPham.tenSanPham) + " \"");
             }
         }
         else
         {
             throw new Exception("không nhận được tham số");
         }
     }
     catch (Exception ex)
     {
         xulyFile.ghiLoi("Class CongThucController - Function: ct_ChinhSuaCongThuc_Get", ex.Message);
         return(RedirectToAction("PageNotFound", "Home"));
     }
     return(View());
 }