public async Task<ActionResult> Register(RegisterViewModel model) { var repository = new ParseRepository(new WebCacheProvider(HttpContext.ApplicationInstance.Context)); model.DeviceTypes = repository.FindDeviceTypes(); model.Countries = repository.FindCountriesNameAndId(); if (ModelState.IsValid) { Exception logException = default(Exception); var userManager = new MyMentorUserManager(repository, Session); try { model.CountryOfResidenceTitle = model.Countries[model.CountryOfResidence]; model.ContentTypeId = WorldIsRetriverFactory.GetWorldId(HttpContext, Session); model.CurrencyId = (repository.FindResidenceById(model.CountryOfResidence)).CurrencyId; await userManager.RegisterUser(model); var parseUser = await userManager.Login(model.UserName, model.Password, Session); Mailer.SendRegistrationSuccess(parseUser); model.ShowSuccessMessage = true; ViewBag.TeacherSuccessMessage = Strings.GetLocalizedString(Strings.RegistrationSuccessTeacher); ViewBag.TeacherSuccessMessage = string.Format(ViewBag.TeacherSuccessMessage, model.FirstName); ViewBag.StudentSuccessMessage = Strings.GetLocalizedString(Strings.RegistrationSuccessStudent); ViewBag.StudentSuccessMessage = string.Format(ViewBag.StudentSuccessMessage, model.FirstName); } catch (ParseException ex) { if (ex.Code == ParseException.ErrorCode.UsernameTaken) { ModelState.AddModelError("UserName", MyMentorResources.userExistsInTheSystem); } if (ex.Code == ParseException.ErrorCode.InvalidEmailAddress) { ModelState.AddModelError("UserName", MyMentorResources.illegalEmailAddress); } logException = ex; } catch (Exception ex) { logException = ex; mLogger.Log(LogLevel.Error, ex); ModelState.AddModelError("_FORM", MyMentorResources.registrationGeneralError); } finally { userManager.Dispose(); } if (logException != null) { await ParseLogger.Log("register new user", logException.ToString()); } } else { var isCaptchaError = ModelState["CaptchaInputText"].Errors.Count > 0; ViewBag.IsCaptchaError = isCaptchaError; } // If we got this far, something failed, redisplay form return View(model); }
public ActionResult Register() { WorldIsRetriverFactory.GetWorldId(HttpContext, Session); var model = new RegisterViewModel(); var repository = new ParseRepository(new WebCacheProvider(HttpContext.ApplicationInstance.Context)); model.DeviceTypes = repository.FindDeviceTypes(); model.Countries = repository.FindCountriesNameAndId(); ViewBag.DeviceUnSupportedText = Strings.GetLocalizedString(Strings.UnSupportedDevice); return View(model); }