public async Task <IActionResult> SignUp([FromBody] RegisterModel model) { if (ModelState.IsValid) { // Добавляем нового юзера, если указанного Email еще нет в бд User user = await _db.Users.FirstOrDefaultAsync(u => u.Email == model.Email); if (user == null) { // ищем роль RolesScroll roleKey = model.Doctor == true ? RolesScroll.Doctor : RolesScroll.Patient; int intRoleKey = (int)roleKey; Role userRole = await _db.Roles.FirstOrDefaultAsync(r => r.Id == intRoleKey); // добавляем пользователя в бд User newUser = new User() { Email = model.Email, Fio = model.Fio, Password = model.GetPassword(), RoleKey = userRole.Id }; _db.Users.Add(newUser); await _db.SaveChangesAsync(); // добавляем врача или пациента switch (roleKey) { case RolesScroll.Doctor: Doctor newDoctor = new Doctor() { User = newUser }; _db.Doctors.Add(newDoctor); // Jcjeifi fiwwdmccp, cmwicw98jc __dee9c0+ckei ncdjnj for (int i = 1; i <= 5; i++) { DoctorWorkingTime newWorkingDay = new DoctorWorkingTime() { Start = "08:00", End = "20:00", Doctor = newDoctor, WeekdayNumber = i, }; _db.DoctorWorkingTimes.Add(newWorkingDay); } break; case RolesScroll.Patient: Patient newPatient = new Patient() { User = newUser }; _db.Patients.Add(newPatient); break; } await _db.SaveChangesAsync(); // генерим токен с данными пользователя, чтоб юзер бл сразу авторизованным после регистрации var identity = GetIdentity(model.Email, model.GetPassword()); string jwt = GenJWT(identity); var response = new { access_token = jwt }; return(Ok(response)); } else { return(BadRequest(new { errorText = "Пользователь с таким емейлом уже зарегистрирован." })); } } return(BadRequest(model)); }