public ActionResult SignUpCvk(string key) { if (key == null) { throw new BusinessLogicException("Вы не можете зарегистрироваться, так как вы не указали код приглашения"); } key = key.Replace("`", ""); var inviteEntity = InviteService.GetInvite(key); if (inviteEntity == null) { throw new BusinessLogicException("Вы не можете зарегистрироваться, так как вы указали неправильный код приглашения"); } if (inviteEntity.State == (byte)InviteState.Requested) { throw new BusinessLogicException("Вы не можете зарегистрироваться, так как ваш запрос еще не рассмотрели"); } if (inviteEntity.State == (byte)InviteState.Used) { throw new BusinessLogicException("Вы не можете зарегистрироваться, так как данный ключ уже был использован"); } return(View("signupcvk", new SignUpCvkViewModel { Email = inviteEntity.Email, InviteKey = key, PhoneNumber = inviteEntity.Phone, })); }
public ActionResult SignUpWithKey(InviteSignUpWithKeyViewModel model, bool?isdialog) { if (ModelState.IsValid) { string key = string.IsNullOrWhiteSpace(model.InviteKey) ? null : model.InviteKey.Trim().ToLower(); if (key != string.Empty) { string email = string.IsNullOrWhiteSpace(model.Email) ? null : model.Email.Trim().ToLower(); key = key.Replace("`", ""); var inviteEntity = InviteService.GetInvite(key); if (inviteEntity == null) { throw new BusinessLogicException("Вы не можете зарегистрироваться, так как вы указали неправильный код приглашения"); } if (inviteEntity.State == (byte)InviteState.Requested) { throw new BusinessLogicException("Вы не можете зарегистрироваться, так как ваш запрос еще не рассмотрели"); } if (inviteEntity.State == (byte)InviteState.Used) { throw new BusinessLogicException("Вы не можете зарегистрироваться, так как данный ключ уже был использован"); } if (inviteEntity.State != (byte)InviteState.Used || inviteEntity.State != (byte)InviteState.Requested) { var phone = UserService.NormalizePhoneNumber(model.PhoneNumber); var encryptedPhoneNumber = CryptographyService.DecryptPhone(phone); var existedUsersCount = DataService.PerThread.BaseUserSet.OfType <User>().Count(u => u.EncryptedPhoneNumber == encryptedPhoneNumber); if (existedUsersCount != 0) { throw new ValidationException("Пользователь с таким номером телефона уже зарегистрирован"); } var user = (User)AccountService.SignUp(email, email, model.Password); user.FirstName = inviteEntity.Name; user.SurName = inviteEntity.Surname; user.Patronymic = inviteEntity.Patronymic; user.InviteTicket = inviteEntity; user.PhoneNumber = phone; user.Info = inviteEntity.UserInfo; user.UTCOffset = (short)TimeSpan.Parse(model.UTCOffset).TotalMinutes; UserService.NormalizePhoneNumber(user); inviteEntity.State = (byte)InviteState.Used; DataService.PerThread.SaveChanges(); AccountService.TrySignIn(email, model.Password, true, HttpContext.Request.UserHostAddress); MonitoringService.AsynchLogUserRegistration(user.Id, HttpContext.Request.UserHostAddress); return(RedirectToAction("index", "user", null)); } } } if (isdialog.HasValue) { if (isdialog.Value) { return(View("SignUpWithKey", "_LightLayout", model)); } } return(View(model)); }