public async Task RegisterTeacher(RegisterNewTeacherUserAccountView viewModel) { var companies = _companyRepository.GetAll(); if (companies.Result == null || companies.Result.ToList().Count == 0) { Company company = new Company() { Name = "Test" }; await _companyRepository.Create(company); ApplicationConstants.CurrentCompanyId = company.Id; } var teacher = new Teacher(); teacher.Email = viewModel.Email; teacher.UserName = viewModel.Username; teacher.CompanyId = ApplicationConstants.CurrentCompanyId; if (!viewModel.Password.Equals(viewModel.ConfirmPassword)) { throw new AdminException("Passwords are different"); } if (!(await _userManager.FindByEmailAsync(viewModel.Email) is null) || !(await _userManager.FindByNameAsync(viewModel.Username) is null)) { throw new AdminException("Account with such Email or UserID already exists"); } teacher.BirthDate = _dateParseHelper.ParseStringToDatetime(viewModel.BirthDate); _accountMapper.MapTeacherViewModelToModel(viewModel, teacher); /// TODOOOOOOOOOOO teacher.EmailConfirmed = true; /// IdentityResult result = await _userManager.CreateAsync(teacher, viewModel.Password); if (!result.Succeeded) { string responseError = result.GetFirstError(); throw new AdminException(responseError); } ApplicationUser registeredTeacher = await _userManager.FindByNameAsync(viewModel.Username); await _userManager.AddToRoleAsync(registeredTeacher, ApplicationConstants.TEACHER_ROLE); }