/// <summary>
 /// hàm thực hiện thêm chi tiết công thức vào database
 /// </summary>
 /// <param name="maCongThuc"></param>
 private void themChiTietVaoDatabase(int maCongThuc, qlCaPheEntities db)
 {
     try
     {
         //------lấy danh sách các chi tiết trong session
         cartCongThuc cart = (cartCongThuc)Session["congThuc"];
         //------Lặp qua từng phần tử có trong list và thêm vào database
         foreach (ctCongThuc ct in cart.getList())
         {
             ctCongThuc ctThem = new ctCongThuc();
             //----Vì mã ct và ctThem khác nhau nên cần gán lại giá trị
             ctThem.buocSo     = ct.buocSo;
             ctThem.ghiChu     = ct.ghiChu;
             ctThem.hanhDong   = ct.hanhDong;
             ctThem.maCongThuc = maCongThuc;
             if (ct.maNguyenLieu != 0) //---Kiểm tra, nếu có nguyên liệu thì thêm các thuộc tính của nguyên liệu
             {
                 ctThem.maNguyenLieu      = ct.maNguyenLieu;
                 ctThem.soLuongNguyenLieu = ct.soLuongNguyenLieu;
                 ctThem.donViSuDung       = ct.donViSuDung;
             }
             //----Thêm vào database
             db.ctCongThucs.Add(ctThem);
             db.SaveChanges();
         }
     }
     catch (Exception ex)
     {
         xulyFile.ghiLoi("Class CongThucController - Function: themChiTietVaoDatabase", ex.Message);
     }
 }
        /// <summary>
        /// Hàm thiết kế bảng DANH SÁCH CHI TIẾT, NGUYÊN LIỆU SỬ DỤNG, TỔNG TIỀN NGUYÊN LIỆU được lấy từ Session
        /// </summary>
        /// <returns>htmlBangChiTiet|htmlBangNguyenLieuSuDung</returns>
        public string taoBangChiTietVaNguyenLieuSuDungTuSession()
        {
            cartCongThuc cart = (cartCongThuc)Session["congThuc"];
            string       kq   = "";

            kq += "<table class=\"table table-hover\">";
            kq += "     <thead>";
            kq += "         <tr>";//------Tạo tiêu đề bảng
            kq += "             <th>Bước</th><th>Hành động</th><th>Tên nguyên liệu</th><th>Số lượng</th><th>Đơn vị</th><td>Chức năng</td>";
            kq += "         </tr>";
            kq += "     </thead>";
            kq += "     <tbody>";
            try
            {
                foreach (ctCongThuc ct in cart.getList().OrderBy(c => c.buocSo))
                {
                    kq += "     <tr>";
                    kq += "         <th scope=\"row\">" + ct.buocSo.ToString() + "</th>";
                    kq += "         <td>" + xulyDuLieu.traVeKyTuGoc(ct.hanhDong) + "</td>";
                    //---------Lấy tên nguyên liệu đã chọn
                    nguyenLieu nl = ct.nguyenLieu;
                    if (nl != null)
                    {
                        kq += "     <td>" + xulyDuLieu.traVeKyTuGoc(nl.tenNguyenLieu) + "</td>";
                    }
                    else
                    {
                        kq += "     <td></td>";
                    }
                    kq += "         <td>" + ct.soLuongNguyenLieu + "</td>";
                    kq += "         <td>" + xulyDuLieu.traVeKyTuGoc(ct.donViSuDung) + "</td>";
                    kq += "         <td>";
                    kq += "             <div class=\"btn-group open\">";
                    kq += "                 <button type=\"button\" class=\"btn btn-primary dropdown-toggle\" data-toggle=\"dropdown\" aria-expanded=\"true\">Chức năng <span class=\"caret\"></span></button>";
                    kq += "                 <ul class=\"dropdown-menu\" role=\"menu\">";
                    kq += "                     <li><a class=\"col-blue waves-effect waves-block suaBuoc\" maCt=\"" + ct.maChiTiet.ToString() + "\">";
                    kq += "                             <i class=\"material-icons\">mode_edit</i>Sửa bước";
                    kq += "                         </a></li>";
                    kq += "                     <li><a class=\"col-red waves-effect waves-block xoaBuoc\" maCt=\"" + ct.maChiTiet.ToString() + "\">";
                    kq += "                             <i class=\"material-icons\">delete</i>Xoá bước";
                    kq += "                         </a></li>";
                    kq += "                 </ul>";
                    kq += "             </div>";
                    kq += "         </td>";
                    kq += "     </tr>";
                }
            }
            catch (Exception ex)
            {
                xulyFile.ghiLoi("Class CongThucController - Function: taoBangChiTietTuSession", ex.Message);
            }
            kq += "     </tbody>";
            kq += "</table>";
            //Trả vê chuỗi htmlBangDanhSachCacBuoc|bảng danh sách nguyên liệu|tongGiaNguyenLieu
            return(kq + "|" + this.taoBangNguyenLieuSuDung() + "|" + xulyDuLieu.doiVND(cart.getTotalPriceNguyenLieu()));
        }
        /// <summary>
        /// Hàm thực hiện xóa 1 bước trong Session
        /// </summary>
        /// <param name="maCt">Mã chi tiết công thức cần xóa</param>
        /// <returns>Bảng danh sách các bước còn lại trong session</returns>
        public string xoaMotBuoc(int maCt)
        {
            cartCongThuc cart = (cartCongThuc)Session["congThuc"];

            if (maCt > 0)
            {
                //-------Lấy công thức cần xóa có trong cart
                ctCongThuc ctXoa = cart.getList().SingleOrDefault(c => c.maChiTiet == maCt);
                if (ctXoa != null)
                {
                    cart.removeItem(ctXoa.maChiTiet);
                    Session["congThuc"] = cart;
                }
            }
            //-----Trả về chuỗi bao gồm htmlTablBangDanhSachBuoc|BangDanhSachNguyenLieu|TongTienNguyenLieu
            return(this.taoBangChiTietVaNguyenLieuSuDungTuSession());
        }