public ActionResult CustomRegistration() { ViewBagAppointmentList(); var model = new RegNotProducerViewModel(); return(View(model)); }
public ActionResult CustomRegistration(RegNotProducerViewModel model) { // если модель невалидна if (!ModelState.IsValid) { return(View(model)); } // если такой пользователь уже есть var userExist = DB.Account.Any(x => x.Login == model.login); if (userExist) { ErrorMessage("Пользователь с указанным email уже зарегистрирован"); return(View(model)); } // создали и сохранили компанию var company = new AccountCompany() { Name = model.CompanyName }; DB.Entry(company).State = EntityState.Added; DB.SaveChanges(); // создали аккаунт // регионы и группы не добавляются здесь, потому что всё равно должен регистрировать админ var user = SaveAccount(accountCompany: company, RegNotProducer_ViewModel: model); user.AccountRegion = DB.Regions().Select(x => new AccountRegion(user, x)).ToList(); var group = DB.AdminGroup(); user.AccountGroup.Add(group); user.IP = Request.UserHostAddress; DB.SaveChanges(); // отправили сообщение сотрудникам EmailSender.ProducerRequestMessage(DB, user, company.Name, $"{model.PhoneNumber}, {model.login}"); SuccessMessage("Ваша заявка принята. Ожидайте, с вами свяжутся"); return(Redirect("~")); }
private Account SaveAccount(AccountCompany accountCompany, RegViewModel Reg_ViewModel = null, RegDomainViewModel RegDomain_ViewModel = null, RegNotProducerViewModel RegNotProducer_ViewModel = null, string Pass = null) { var newAccount = new Account(); newAccount.EnabledEnum = UserStatus.New; newAccount.TypeUser = (sbyte)TypeUsers.ProducerUser; newAccount.CompanyId = accountCompany.Id; // регистрация первого пользователя компании if (Reg_ViewModel != null) { newAccount.Login = Reg_ViewModel.login; newAccount.Password = Md5HashHelper.GetHash(Pass); newAccount.PasswordUpdated = DateTime.Now; newAccount.FirstName = Reg_ViewModel.FirstName; newAccount.LastName = Reg_ViewModel.LastName; newAccount.OtherName = Reg_ViewModel.OtherName; newAccount.Name = Reg_ViewModel.LastName + " " + Reg_ViewModel.FirstName + " " + Reg_ViewModel.OtherName; newAccount.Phone = Reg_ViewModel.PhoneNumber; newAccount.AppointmentId = Reg_ViewModel.AppointmentId; } // регистрация второго и последующих пользователей производителя if (RegDomain_ViewModel != null) { newAccount.Login = RegDomain_ViewModel.Mailname + "@" + DB.CompanyDomainName.Single(x => x.Id == RegDomain_ViewModel.EmailDomain).Name; newAccount.Password = Md5HashHelper.GetHash(Pass); newAccount.PasswordUpdated = DateTime.Now; newAccount.FirstName = RegDomain_ViewModel.FirstName; newAccount.LastName = RegDomain_ViewModel.LastName; newAccount.OtherName = RegDomain_ViewModel.OtherName; newAccount.Name = RegDomain_ViewModel.LastName + " " + RegDomain_ViewModel.FirstName + " " + RegDomain_ViewModel.OtherName; newAccount.Phone = RegDomain_ViewModel.PhoneNumber; newAccount.AppointmentId = RegDomain_ViewModel.AppointmentId; } // Если компания в списке отсутствует if (RegNotProducer_ViewModel != null) { // создали новую должность var appointment = new AccountAppointment() { Name = RegNotProducer_ViewModel.Appointment, GlobalEnabled = false }; DB.Entry(appointment).State = EntityState.Added; DB.SaveChanges(); newAccount.Login = RegNotProducer_ViewModel.login; newAccount.FirstName = RegNotProducer_ViewModel.FirstName; newAccount.LastName = RegNotProducer_ViewModel.LastName; newAccount.OtherName = RegNotProducer_ViewModel.OtherName; newAccount.Name = RegNotProducer_ViewModel.LastName + " " + RegNotProducer_ViewModel.FirstName + " " + RegNotProducer_ViewModel.OtherName; newAccount.Phone = RegNotProducer_ViewModel.PhoneNumber; newAccount.AppointmentId = appointment.Id; // особый статус newAccount.EnabledEnum = UserStatus.Request; } DB.Entry(newAccount).State = EntityState.Added; DB.SaveChanges(); return(newAccount); }