public async Task <IActionResult> RegisterTeacher([FromBody] TeacherRegisterVM model) { return(await HandleRequestAsync(async() => { string imageName = Path.GetRandomFileName() + ".jpg"; var filePath = Path.Combine(Directory.GetCurrentDirectory(), @"wwwroot\Uploaded\Users"); string pathSaveImages = InitStaticFiles .CreateImageByFileName(_env, _configuration, new string[] { Directory.GetCurrentDirectory(), @"wwwroot", "Uploaded", "Users" }, imageName, model.Photo); //+38 (098) 665 34 18 model.Photo = imageName; var rezult = await _teacherService.Create(model); if (rezult) { var user = _userManager.FindByEmailAsync(model.Email).Result; var teacher = await _teacherService.GetTeacherById(user.Id); JwtInfo jwtInfo; if (teacher != null) { // Return token jwtInfo = new JwtInfo() { Token = _jwtTokenService.CreateToken(user), RefreshToken = _jwtTokenService.CreateRefreshToken(user), SchoolId = teacher.SchoolId.ToString() }; } else { // Return token jwtInfo = new JwtInfo() { Token = _jwtTokenService.CreateToken(user), RefreshToken = _jwtTokenService.CreateRefreshToken(user), }; } this._logger.LogDebug("End method LoginUser..."); return Ok(jwtInfo); } else { var invalid = new Dictionary <string, string> { { "email", "Користувач з даною електронною поштою уже зареєстрований" } }; return BadRequest(invalid); } })); }
public async Task <bool> Create(TeacherRegisterVM model) { if (_userManager.FindByEmailAsync(model.Email).Result == null) { try { var school = _context.Schools.SingleOrDefault((item) => item.Name == model.School); if (school == null) { var newSchool = new School { Name = model.School, Region = model.Region }; _context.Schools.Add(newSchool); _context.SaveChanges(); var teacher = new Teacher() { DayOfbirthday = model.DayOfbirthday, FirstName = model.FirstName, LastName = model.LastName, MiddleName = model.MiddleName, SchoolId = newSchool.Id, Image = model.Photo }; var user = new DbUser() { Email = model.Email, UserName = model.Email, PhoneNumber = model.PhoneNumber, Teacher = teacher }; var result = _userManager.CreateAsync(user, model.Password).Result; result = _userManager.AddToRoleAsync(user, "Admin").Result; return(result.Succeeded); } } catch (Exception ex) { Debug.WriteLine(ex.Message); } } return(false); }