public void MapTeacherViewModelToModel(RegisterNewTeacherUserAccountView viewModel, Teacher model) { model.FirstName = viewModel.FirstName; model.LastName = viewModel.LastName; model.MiddleName = viewModel.MiddleName; model.PhoneNumber = viewModel.PhoneNumber; model.AddressLine = viewModel.AddressLine; }
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); }
public async Task <IActionResult> RegisterTeacher(RegisterNewTeacherUserAccountView viewModel) { try { await _adminService.RegisterTeacher(viewModel); return(RedirectToAction("ShowTeachers")); } catch (BaseException ex) { ModelState.AddModelError(string.Empty, ex.Message); return(View(viewName: "Teachers/RegisterNewTeacher")); } }