public ActionResult Register(RegisterModel model)
        {
            if (ModelState.IsValid)
            {
                Nysf.Tessitura.WebClient.MaintainTessSession();
                // Attempt to register the user
                try
                {
                    WebSecurity.CreateUserAndAccount(model.UserName, model.Password);
                    WebSecurity.Login(model.UserName, model.Password);
                    ProfilesDBContext ProfileDB = new ProfilesDBContext();
                    Profiles NewProfile = new Profiles();
                    NewProfile.UserName = model.UserName;
                    NewProfile.NyMag = model.NyMagSub;
                    NewProfile.Bio = model.Bio;
                    NewProfile.EmailSub = model.EmailSub;
                    NewProfile.FirstName = model.FirstName;
                    NewProfile.LastName = model.LastName;
                    NewProfile.GenresSerialized = model.Genres;
                    ProfileDB.ProfileList.Add(NewProfile);
                    ProfileDB.SaveChanges();
                    if (Nysf.Tessitura.WebClient.RegisterNewConstituent(model.UserName, model.FirstName, model.LastName,  92, Nysf.Types.Organization.JoesPub))
                    {
                        bool test = Nysf.Tessitura.WebClient.Login(model.UserName, model.Password);
                        if (Nysf.Tessitura.WebClient.SetNewPassword(model.Password))
                        {
                            Nysf.Tessitura.WebClient.Login(model.UserName, model.Password);
                        }
                    }

                    return RedirectToAction("Manage");
                }
                catch (MembershipCreateUserException e)
                {
                    ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
                }
                catch (Exception e)
                {
                    ModelState.AddModelError("", e.Message);
                }
            }

            // If we got this far, something failed, redisplay form
            return View(model);
        }
        public ActionResult ExternalLoginConfirmation(RegisterExternalLoginModel model, string returnUrl)
        {
            string provider = null;
            string providerUserId = null;

            if (User.Identity.IsAuthenticated || !OAuthWebSecurity.TryDeserializeProviderUserId(model.ExternalLoginData, out provider, out providerUserId))
            {
                return RedirectToAction("Manage");
            }

            if (ModelState.IsValid)
            {
                // Insert a new user into the database
                using (UsersContext db = new UsersContext())
                {
                    UserProfile user = db.UserProfiles.FirstOrDefault(u => u.UserName.ToLower() == model.UserName.ToLower());
                    // Check if user already exists
                    if (user == null)
                    {
                        // Insert name into the profile table
                        if(!Nysf.Tessitura.WebClient.LoginExists(model.UserName))
                        {
                            if (!Nysf.Tessitura.WebClient.RegisterNewConstituent(model.UserName, model.Fname, model.Lname, 92, Nysf.Types.Organization.JoesPub))
                            {
                                ModelState.AddModelError("UserName", "There was an issue registering your account please try again later.");
                                OAuthWebSecurity.DeleteAccount(provider, providerUserId);
                                ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(provider).DisplayName;
                                ViewBag.ReturnUrl = returnUrl;
                                return View(model);
                            }
                        }
                        db.UserProfiles.Add(new UserProfile { UserName = model.UserName });
                        db.SaveChanges();

                        OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName);
                        OAuthWebSecurity.Login(provider, providerUserId, createPersistentCookie: false);
                        ProfilesDBContext ProfileDB = new ProfilesDBContext();
                        Profiles prof = new Profiles();
                        prof.UserName = model.UserName;
                        prof.Bio = model.Bio;
                        prof.FirstName = model.Fname;
                        prof.LastName = model.Lname;
                        prof.EmailSub = model.Email;
                        prof.NyMag = model.Nymag;
                        string[] l = model.genrestring.Split(';');
                        prof.GenreIDs = new List<int>();
                        foreach (var item in l)
                        {
                            int temp = new int();
                            if (int.TryParse(item, out temp))
                            {
                                prof.GenreIDs.Add(temp);
                            }
                        }
                        ProfileDB.ProfileList.Add(prof);
                        ProfileDB.SaveChanges();
                        return RedirectToAction("Manage");
                    }
                    else
                    {
                        ModelState.AddModelError("UserName", "User name already exists. Please enter a different user name.");
                    }
                }
            }

            ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(provider).DisplayName;
            ViewBag.ReturnUrl = returnUrl;
            return View(model);
        }