public ActionResult Register(Models.UserModel User)
        {
            if (ModelState.IsValid)
            {
                using (var db = new mainDBEntities())
                {
                    var crypto = new SimpleCrypto.PBKDF2();

                    var encrpPass = crypto.Compute(User.Password);

                    var sysUser = db.SystemUsers.Create();

                    sysUser.Email        = User.Email;
                    sysUser.Password     = encrpPass;
                    sysUser.PasswordSalt = crypto.Salt;
                    sysUser.UserID       = Guid.NewGuid();

                    db.SystemUsers.Add(sysUser);
                    db.SaveChanges();

                    return(RedirectToAction("Index", "Home"));
                }
            }
            return(View(User));
        }
        public ActionResult ForgotPassword(string UserName)
        {
            //check user existance
            var user = UserName;

            if (user == null)
            {
                TempData["Message"] = "Email does not exist in database.";
            }
            else
            {
                //generate password token
                var token = "as4da2sd1a";
                //create url with above token
                var resetLink = "<a href='" + Url.Action("ResetPassword", "Account", new { un = UserName, rt = token }, "http") + "'>Reset Password</a>";
                //get user emailid
                var db      = new mainDBEntities();
                var emailid = (from i in db.SystemUsers
                               where i.Email == UserName
                               select i.Email).FirstOrDefault();
                //send mail
                string subject = "Password request";
                string body    = "<b>Please click the link to reset your password</b><br/>" + resetLink; //edit it
                try
                {
                    SendEMail(emailid, subject, body);
                    TempData["Message"] = "Mail Sent.";
                }
                catch (Exception ex)
                {
                    TempData["Message"] = "Error occured while sending email." + ex.Message;
                }
                //only for testing
                TempData["Message"] = resetLink;
            }

            return(View());
        }