Beispiel #1
0
        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);
        }