public ActionResult Index(TaiKhoan taikhoan, string chkSuaLoi)
        {
            try
            {
                ViewBag.chkSuaLoi = chkSuaLoi;

                if (taikhoan.Email != null && taikhoan.MatKhau != null)
                {
                    DataProvider dp = new DataProvider();

                    using (MD5 md5hash = MD5.Create())
                    {
                        string hash = GetMd5Hash(md5hash, taikhoan.MatKhau);
                        taikhoan.MatKhau = hash;
                    }

                    SqlParameter[] param = new SqlParameter[2];

                    param[0] = new SqlParameter("@email", SqlDbType.NVarChar);
                    param[0].Value = taikhoan.Email;

                    param[1] = new SqlParameter("@matkhau", SqlDbType.NVarChar);
                    param[1].Value = taikhoan.MatKhau;

                    DataTable dt = null;

                    if (chkSuaLoi != null)
                    {
                        //Set level = Repeatable Read để giải quyết Unrepeatable Read
                        dt = dp.ExecuteProcQuery("sp_DangNhapTaiKhoan_Fixed", ref param);
                    }
                    else
                    {
                        //Set level = ReadCommitted mức mặc định
                        dt = dp.ExecuteProcQuery("sp_DangNhapTaiKhoan", ref param);
                    }

                    if (dt.Rows.Count > 0)
                    {
                        ViewBag.Result = true;
                        ViewBag.ErrorMessage = "Đăng nhập thành công";

                        TaiKhoan tk = new TaiKhoan();
                        tk.MaTaiKhoan = (int)dt.Rows[0]["mataikhoan"];
                        tk.Email = (string)dt.Rows[0]["email"];
                        tk.Ten = (string)dt.Rows[0]["ten"];
                        if (dt.Rows[0]["ngaysinh"] != DBNull.Value) tk.NgaySinh = (DateTime)dt.Rows[0]["ngaysinh"];
                        if (dt.Rows[0]["diachi"] != DBNull.Value) tk.DiaChi = (string)dt.Rows[0]["diachi"];
                        if (dt.Rows[0]["dienthoai"] != DBNull.Value) tk.DienThoai = (string)dt.Rows[0]["dienthoai"];
                        tk.MaLoaiTaiKhoan = (int)dt.Rows[0]["maloaitaikhoan"];
                        switch (tk.MaLoaiTaiKhoan)
                        {
                            case 1:
                                tk.LoaiTaiKhoan = LoaiTaiKhoan.Admin;
                                Session.Add("taikhoan", tk);
                                return Redirect("/Admin/CanHo");
                            case 2:
                                tk.LoaiTaiKhoan = LoaiTaiKhoan.Member;
                                Session.Add("taikhoan", tk);
                                break;
                            case 3:
                                tk.LoaiTaiKhoan = LoaiTaiKhoan.Sales;
                                Session.Add("taikhoan", tk);
                                return Redirect("/Admin/");
                        };

                        switch ((int)dt.Rows[0]["trangthai"])
                        {
                            case 0:
                                tk.TrangThai = TrangThaiTaiKhoan.Deactive;
                                break;
                            case 1:
                                tk.TrangThai = TrangThaiTaiKhoan.Active;
                                break;
                        }
                    }
                    else
                    {
                        ViewBag.Result = false;
                        ViewBag.ErrorMessage = "Đăng nhập thất bại";
                    }

                }
            }
            catch (Exception ex)
            {
                ViewBag.Result = false;
                ViewBag.ErrorMessage = ex.Message;
            }
            return View("~/Views/Login/DangNhap.cshtml");
        }