public ActionResult Registration([Bind(Exclude = "IsEmailVerified, ActivationCode")] Account account)
        {
            if (ModelState.IsValid)
            {
                #region email already exists
                var isExist = IsEmailAlreadyExisting(account.EmailID);
                if (isExist)
                {
                    ModelState.AddModelError("EmailExists", "There is already an account with this email");
                    return(View(account));
                }
                #endregion

                if (!account.AgreedPolicy)
                {
                    ModelState.AddModelError("PolicyNotAgreed", "Your agreement with our policy is required");
                    return(View(account));
                }

                #region generate Activation Code
                account.ActivationCode = Guid.NewGuid().ToString();
                #endregion

                #region password hashing
                account.Password        = account.Password;
                account.ConfirmPassword = account.ConfirmPassword;
                #endregion

                #region save to database
                account.IsEmailVerified = false;
                databaseHandler.AccountRepository.InsertAccount(account);
                SendVerificationLinkEmail(account.EmailID, account.ActivationCode.ToString());
                message = "Account activation link has been sent to your email " + account.EmailID;
                status  = true;
                NotificationCenter.AddRegistrationSuccessfull(message);

                #endregion

                ViewBag.Message = message;
                ViewBag.Status  = status;
            }
            return(View(account));
        }