public bool IsEmailExist(string emailID)
 {
     using (BanHangModel m = new BanHangModel())
     {
         var v = m.KhachHangs.FirstOrDefault(a => a.Email == emailID);
         return(v != null);
     }
 }
        public ActionResult DangKy(KhachHang khachHang)
        {
            bool   Status  = false;
            string message = "";

            // Kiểm tra tính toàn vẹn của mô hình.
            if (ModelState.IsValid)
            {
                //Kiểm tra xem người dùng đã có trong DB chưa, dùng địa chỉ email.
                bool isExist = IsEmailExist(khachHang.Email);
                if (isExist)
                {
                    //Nếu đã tồn tại thì thông báo lỗi
                    ModelState.AddModelError("AccountExist", "Tài khoản đã tồn tại với email " + khachHang.Email);
                    return(View(khachHang));
                }

                //Băm mật khẩu (hashing). Hàm băm là hàm một chiều tạo ra một chuỗi ngẫu nhiên. Mình sẽ lưu chuỗi này thay vì mật khẩu để đảm bảo bảo mật
                //Khi người dùng đăng nhập thì mình chỉ cần so sánh kết quả của hàm băm với chuỗi đã có trong DB
                //Điều này có nghĩa là không ai có thể biết mật khẩu của người dùng, kể cả quản trị viên.
                string hashed = Hash(khachHang.MatKhau);

                //Thay mật khẩu bằng mã băm
                khachHang.MatKhau = hashed;

                //keyword 'using' dùng cho Class có cài đặt interface IDisposable. Đối tượng đc sử dụng sẽ tự giải phóng tài nguyên (trong trường hợp này là
                //đối tượng 'db').
                using (BanHangModel db = new BanHangModel())
                {
                    //Thêm khách hàng vào DB
                    db.KhachHangs.Add(khachHang);
                    db.SaveChanges();

                    message = "Bạn đã đăng ký tài khoản thành công";
                    Status  = true;
                }
            }
            else
            {
                message = "Invalid request";
            }

            //Tìm hiểu về Razor để biết nó làm gì
            ViewBag.Message = message;
            ViewBag.Status  = Status;

            return(View());
        }
        public ActionResult DangNhap(KhachHangDangNhap ThongTinDangNhap, string ReturnUrl = "")
        {
            string message = "";

            using (BanHangModel m = new BanHangModel())
            {
                var v = m.KhachHangs.FirstOrDefault(a => a.Email == ThongTinDangNhap.EmailID);
                if (v != null)
                {
                    if (String.Compare(Hash(ThongTinDangNhap.Password), v.MatKhau) == 0)
                    {
                        //Tạo cookie để lưu phiên đăng nhập nếu người dùng chọn nhớ
                        int    timeOut   = ThongTinDangNhap.RememberMe ? 525600 : 20;
                        var    ticket    = new FormsAuthenticationTicket(ThongTinDangNhap.EmailID, ThongTinDangNhap.RememberMe, timeOut);
                        string encrypted = FormsAuthentication.Encrypt(ticket);
                        var    cookie    = new HttpCookie(FormsAuthentication.FormsCookieName, encrypted);
                        cookie.Expires  = DateTime.Now.AddMinutes(timeOut);
                        cookie.HttpOnly = true;
                        Response.Cookies.Add(cookie);

                        if (Url.IsLocalUrl(ReturnUrl))
                        {
                            return(Redirect(ReturnUrl));
                        }
                        else
                        {
                            return(RedirectToAction("Index", "Home"));
                        }
                    }
                    else
                    {
                        message = "Tài khoản hoặc mật khẩu không đúng";
                    }
                }
                else
                {
                    message = "Tài khoản hoặc mật khẩu không đúng";
                }
            }

            ViewBag.Message = message;
            return(View());
        }