public ActionResult Login(LoginModel model)
        {
            if (ModelState.IsValid)
            {
                var dao    = new Model.Dao.UserDao();
                var result = dao.Login(model.UserName, Encryptor.MD5Hash(model.Password));
                if (result == 1)
                {
                    var user        = dao.GetByID(model.UserName);
                    var userSession = new UserLogin();
                    userSession.UserName = user.UserName;
                    userSession.UserID   = user.ID;

                    Session.Add(Common.CommonConstants.USER_SESSION, userSession);
                    return(RedirectToAction("Index", "Home"));
                }
                else if (result == 0)
                {
                    ModelState.AddModelError("", "Account doesn't exist!");
                }
                else if (result == -1)
                {
                    ModelState.AddModelError("", "Account locked!");
                }
                else if (result == -2)
                {
                    ModelState.AddModelError("", "Incorrect password!");
                }
                else
                {
                    ModelState.AddModelError("", "Error Login!");
                }
            }
            return(View("Index"));
        }
        public ActionResult changePassword(int id, string email, string oldpass, string newpass, string repass)
        {
            var session = (UserSession)Session[CommonConstant.USER_SESSION];

            if (session == null || session.UserId != id)
            {
                return(RedirectToAction("index", "error"));
            }
            if (newpass.Equals(repass))
            {
                var username = new UserDao().findById(id).username;
                if (username != null)
                {
                    try
                    {
                        string content = "<p style=\"color: black; \">Tài khoản <b>" + username + "</b> đã được thay đổi mật khẩu vào lúc " + DateTime.Now + ".</p>";
                        content += "<p style = \"color: black;\" > Hãy chắc chắn rằng đó là bạn và liên hệ tới hòm thư " + ConfigurationManager.AppSettings["FromEmailAddress"] + " để biết thêm thông tin chi tiết.</p>;";
                        new MailHelper().SendEmail(email, "Xác thực thay đổi mật khẩu!", content);
                        bool check = new UserDao().changePassword(id, oldpass, newpass);
                        if (check)
                        {
                            TempData["Message"]   = "Đổi mật khẩu thành công";
                            TempData["TypeAlert"] = "alert-success";
                        }
                        else
                        {
                            TempData["Message"]   = "Mật khẩu cũ không đúng";
                            TempData["TypeAlert"] = "alert-danger";
                        }
                    }
                    catch (Exception)
                    {
                        TempData["Message"]   = "Đổi mật khẩu thất bại";
                        TempData["TypeAlert"] = "alert-danger";
                    }
                }
                else
                {
                    TempData["Message"]   = "Tài khoản không tồn tại";
                    TempData["TypeAlert"] = "alert-danger";
                }
            }
            else
            {
                TempData["Message"]   = "Mật khẩu không trùng nhau";
                TempData["TypeAlert"] = "alert-danger";
            }
            return(RedirectToAction("Profile", new { id }));
        }
        public new ActionResult Profile(int id)
        {
            var session = (UserSession)Session[CommonConstant.USER_SESSION];

            if (session == null || session.UserId != id)
            {
                return(RedirectToAction("index", "error"));
            }
            var       user  = new UserDao().findById(id);
            UserModel model = new UserModel()
            {
                fullname    = user.fullname,
                address     = user.address,
                email       = user.email,
                gender      = user.gender,
                id          = user.id,
                phonenumber = user.phonenumber,
                username    = user.username,
                createdAt   = user.createdAt
            };

            ViewBag.urlavatar = string.IsNullOrEmpty(user.avatar) ? @"http://placehold.it/380x500" : user.avatar;
            return(View(model));
        }