public async Task <ActionResult> ForgotPassword(FindAccount forgotPassword)
        {
            string message = "";
            bool   status  = false;

            var account = await context.Users.SingleOrDefaultAsync(a => a.Email == forgotPassword.UsernameOrEmail || a.Username == forgotPassword.UsernameOrEmail);

            if (account != null)
            {
                #region Generate Reset Password Code
                account.ResetPasswordCode = Guid.NewGuid();
                #endregion

                #region Send Verification Email
                SendEmail(account.Email, account.ResetPasswordCode.ToString(), account.FirstName, "", "", "ResetPassword");
                #endregion

                context.Configuration.ValidateOnSaveEnabled = false; // To avoid Confirm Password does not match issue on save changes
                await context.SaveChangesAsync();

                status  = true;
                message = $"Reset Password link has been sent to your email address:";
                ViewData.Add("Email", account.Email);
            }
            else
            {
                message = "Account not found";
            }
            ViewBag.Message = message;
            ViewBag.Status  = status;
            return(View());
        }
        public async Task <ActionResult> FindDriver(FindAccount findDriver)
        {
            string message = "";

            var account = await context.Users.SingleOrDefaultAsync(a => a.Email == findDriver.UsernameOrEmail || a.Username == findDriver.UsernameOrEmail);

            if (account != null && account.UserType.Equals("Driver"))
            {
                // Driver found
                var location = await context.DriverLocations.FindAsync(account.Username);

                if (location != null)
                {
                    // Location found, redirect to details
                    return(RedirectToAction("Details", new { Id = account.Username }));
                }
                else
                {
                    // Location not found, redirect to create
                    return(RedirectToAction("Create", new { Id = account.Username }));
                }
            }
            else
            {
                // Driver not found
                message = "Driver not found";
            }

            ViewBag.Message = message;
            return(View());
        }
        public async Task FindAccountAsync(string queryStringValue)
        {
            var testValues = queryStringValue.Split(",");
            var query      = new Dictionary <String, StringValues>();

            query.TryAdd(testValues[0], testValues[1]);
            string body    = "";
            var    request = TestFactory.CreateHttpRequest(query, body);

            var         option      = Options.Create(_appSettings);
            FindAccount findAccount = new FindAccount(option);

            var response = await findAccount.Run(request, logger);

            try
            {
                var result = (OkObjectResult)response;
                Assert.Equal(200, result.StatusCode);
            }
            catch (InvalidCastException)
            {
                //var result = (ResponseContentModel)((BadRequestObjectResult)response).Value;
                //Assert.Equal(409, result.status);
            }
        }