public async Task<JsonResult> ForgotPassword(ForgotPasswordViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = await UserManager.FindByEmailAsync(model.Email);
                if (user == null || !(await UserManager.IsEmailConfirmedAsync(user.Id)))
                {
                    // Don't reveal that the user does not exist or is not confirmed
                    return Json(new { success = false, msg = "Check your email to reset your password." });
                }

                // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
                // Send an email with this link
                string code = await UserManager.GeneratePasswordResetTokenAsync(user.Id);
                var callbackUrl = Url.Action("ResetPassword", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);

                IdentityMessage myMessage = new IdentityMessage();
                myMessage.Destination = user.Email;
                myMessage.Subject = "VGWager Reset Password";

                myMessage.Body = "Please reset your password by clicking <a href=\"" + callbackUrl + "\">here</a>";
                // Create credentials, specifying your user name and password.
                //var credentials = newNetworkCredential("username", "password");
                //// Create a REST transport for sending email.
                //var transportREST = Web.GetInstance(credentials);
                //// Send the email.
                //transportREST.Deliver(myMessage);

                VGWagers.Utilities.EmailService emailServ = new VGWagers.Utilities.EmailService();

                await emailServ.SendAsync(myMessage);

               // await UserManager.SendEmailAsync(user.Id, "Reset Password", "Please reset your password by clicking <a href=\"" + callbackUrl + "\">here</a>");

                return Json(new { success = false, msg = "Check your email to reset your password." });
            }

            // If we got this far, something failed, redisplay form
            return Json(new { success = false, msg = "Server Error" });
        }
        public async Task<JsonResult> RegisterJson(RegisterViewModel model, string returnUrl)
        {
          try { 
            
                if (! ModelState.IsValid)
                {  
                        var errors = GetErrorsFromModelState();
                        return Json(new { success = false, errors = errors });
                }
                else
                {
                    //switch (result)
                    //{

                    //    case SignInStatus.Success:
                    //        return Json(true);
                    //    case SignInStatus.LockedOut:
                    //    case SignInStatus.RequiresVerification:
                    //    case SignInStatus.Failure:
                    //        return Json(false);
                    //    default:
                    //        break;
                    //}
                    //return Json(false);
                    var user = new ApplicationUser { UserName = model.Username, Email = model.Email, DateOfBirth = model.DateOfBirth , TermsAndConditionAccepted = model.TermsAccepted, MarketingMailersAccepted = model.MarketingMailersAccepted };
                   
                  
                    var tempUser = await UserManager.FindByEmailAsync(model.Email);
                   
                    var result = (IdentityResult)null;

                    if (tempUser != null)
                    {
                        return Json(new { success = false, msg = "User already exists" });
                    }
                    else
                    {
                      result = await UserManager.CreateAsync(user, model.Password);
                    }   
                    if (result.Succeeded)
                    {

                       // await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);

                        // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
                        // Send an email with this link
                        // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                        // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                        // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");

                        string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                        var callbackUrl = Url.Action("ConfirmEmail", "Account",
                           new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);


                        IdentityMessage myMessage = new IdentityMessage();
                        myMessage.Destination = user.Email;
                        myMessage.Subject = "VGWager Account Confirmation";
                        
                        myMessage.Body = "Please confirm your account by clicking <a href=\""  + callbackUrl + "\">here</a>";
                        // Create credentials, specifying your user name and password.
                        //var credentials = newNetworkCredential("username", "password");
                        //// Create a REST transport for sending email.
                        //var transportREST = Web.GetInstance(credentials);
                        //// Send the email.
                        //transportREST.Deliver(myMessage);

                        VGWagers.Utilities.EmailService emailServ = new VGWagers.Utilities.EmailService();

                        await emailServ.SendAsync(myMessage);

                        //await UserManager.SendEmailAsync(user.Id,
                        //   "Confirm your account", "Please confirm your account by clicking <a href=\""
                        //   + callbackUrl + "\">here</a>");

                        Success("Check your email and confirm your account, you must be confirmed before you can log in.", true);
                        return Json(new { success = true, msg = "Check your email and confirm your account, you must be confirmed before you can log in." });
                    }
                    else
                    { 
                        return Json(new { success = false, msg = "Username and/or Email has been taken." }); 
                    }
                    
                }

            }
            catch(Exception ex)
            {
                return Json(new { success = false, msg = ex.InnerException.Message});
            }

                // If we got this far, something failed, redisplay form
                //return Json(new { success = false, msg = "Server Error" });
        }