public ActionResult Register(registerViewModel model, HttpPostedFileBase file)
        {
            bool hasError = false;
            ViewBag.username = model.UserName;
            ViewBag.identifier = mem.imRegistering(true);
            int countLanguageValid = (from lang in user.languages
                                      where lang.languageID == model.languageDefined
                                      select lang).Count();
            int countProfile = (from us in user.UserProfiles
                                where us.UserName == model.UserName
                                select us).Count();
            if (countProfile > 0)
            {
                if ((from def in user.userDefinition
                     join use in user.UserProfiles
                         on def.usernameFK equals use
                     where use.UserName == model.UserName
                     select def.isArchived).First())
                {
                    ModelState.AddModelError("", "This username is archived currently, please try an alternative");
                    hasError = true;
                }
            }
            if (countLanguageValid < 1)
            {
                hasError = true;
                ModelState.AddModelError("", "Please check your language is valid");
            }
            if (model.Password != null)
            {
                if (model.Password.Length < 8 || sec.checkLower(model.Password) == false || sec.checkUpper(model.Password) == false || sec.containsNumber(model.Password) == false)
                {
                    hasError = true;
                    ModelState.AddModelError("", "Your passwords does not pass the validation rules");
                }
                if (model.Password != model.ConfirmPassword) { ModelState.AddModelError("", "Your passwords must match"); hasError = true; }
            }
            if (model.UserName != null && model.UserName.Length < 4) { ModelState.AddModelError("", "Your username must be at least 4 characters long"); hasError = true; }
            {
                if (model.securityQuestionID == -1) { ModelState.AddModelError("", "A security question must be selected"); hasError = true; }
                bool validPersonType = mem.personTypeValid(model.personType);
                if (validPersonType == false) { ModelState.AddModelError("", "Your person type is not recognised"); hasError = true; }

                if (hasError) { return View(new registerViewModel()); }
                UsersContext yt = new UsersContext();
                if (ModelState.IsValid && hasError == false)
                {
                    // Attempt to register the user
                    try
                    {

                        memadd.registerUser(model, false);
                        loginViewModel loggingIn = new loginViewModel();
                        loggingIn.UserName = model.UserName;
                        loggingIn.Password = model.Password;
                        loggingIn.RememberMe = true;
                        Login(loggingIn, "/Member/memberDetails/");
                        user.SaveChanges();
                        //            memadd.addUsage(model.UserName);
                        files.updateImage(file, model.UserName, "member");
                        {
                            ViewBag.Title = "Welcome " + WebSecurity.CurrentUserName + " check your details here";
                            return RedirectToAction("memberDetails", "member");
                        }
                    }
                    catch (MembershipCreateUserException e)
                    {
                        ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
                    }
                }

                // If we got this far, something failed, redisplay form
                return View(model);
            }
        }
        public PartialViewResult Login(loginViewModel model, string retrunurl)
        {
            ViewBag.archived = false;
            bool hasError = false;
            if ((from def in user.userDefinition
                 join use in user.UserProfiles
                     on def.usernameFK equals use
                 where use.UserName == model.UserName
                 where def.isArchived == true
                 where def.archiveHash != ""
                 select def).Count() > 0)
            {
                ViewBag.archived = true;
                ViewBag.url = "/Account/restore?username="******"&password="******"_LoginPartial", model);
            }
            var isUserDefined = (from def in user.userDefinition
                                 join use in user.UserProfiles
                                     on def.usernameFK equals use
                                 where use.UserName == model.UserName
                                 select def).Count();
            if (ModelState.IsValid)
            {

                if (isUserDefined > 0)
                {
                    var login = WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe);
                    if (login)
                    {
                        ViewBag.isLoggedIn = 1;
                        user.SaveChanges();
                        memadd.addUsage(model.UserName);
                    }

                    if (login == false)
                    {

                        ModelState.AddModelError("logging", "The user name or password provided is incorrect.");
                        hasError = true;
                    }
                }
                //return RedirectToAction("myFeed", "member");
            }
            var UserArchived = user.userArchive.Where(m => m.usernameFK.UserName == model.UserName).Count();
            int archiveCount = 1;
            if (isUserDefined == 1)
            {
                archiveCount = (from use in user.userDefinition
                                where use.usernameFK.UserName == model.UserName
                                where use.isArchived == true
                                select use).Count();
            }
            if ((UserArchived > 0 && archiveCount == 1) || UserArchived > 1 && archiveCount == 0)
            {
                ModelState.AddModelError("logging", "Your account has been marked as archived");
                hasError = true;
            }
            if (hasError)
            {
                return PartialView("_LoginPartial", model);
            }

            ViewBag.isLoggedIn = 0;
            //If we got this far, something failed, redisplay form
            return PartialView("_LoginPartial", model);
        }