public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            string email = model.EmailOrPhone;

            if (model.EmailOrPhone.All(char.IsDigit) && CitizenBusinessLayer.IsPhoneNumberExists(model.EmailOrPhone))
            {
                email = CitizenBusinessLayer.GetCitizenByPhone(model.EmailOrPhone).Email;
            }
            var result = await SignInManager.PasswordSignInAsync(email, model.Password, model.RememberMe, shouldLockout : true);

            switch (result)
            {
            case SignInStatus.Success:
                return(RedirectToLocal(returnUrl));

            case SignInStatus.LockedOut:
                return(View("Lockout"));

            case SignInStatus.RequiresVerification:
                return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }));

            case SignInStatus.Failure:
            default:
                ModelState.AddModelError("InvalidCredentials", "Invalid login attempt.");
                return(View(model));
            }
        }