public async Task <IActionResult> Create(EmployeeCreateInputModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            User user = model.To <User>();
            await userManager.CreateAsync(user, model.Password);

            await userManager.AddToRoleAsync(user, Roles.Employee);

            return(RedirectToAction(nameof(All)));
        }
Exemplo n.º 2
0
        public async Task <EmployeeCreateViewModel> CreateAsync(EmployeeCreateInputModel employeeFromView, string pictureUrl)
        {
            var checkForId = await this.employeeRepository.All().FirstOrDefaultAsync(x => x.PhoneNumber == employeeFromView.PhoneNumber);

            // If customer with phone number exists return existing view model
            if (checkForId != null)
            {
                throw new ArgumentException(string.Format(EmployeeConstants.ArgumentExceptionPhoneNumberExist, employeeFromView.PhoneNumber));
            }

            var user = await this.context.Users.FirstOrDefaultAsync(x => x.Id == employeeFromView.Id);

            if (user == null)
            {
                throw new NullReferenceException(string.Format(EmployeeConstants.NullReferenceUserId, employeeFromView.Id));
            }

            var role = await this.context.Roles.Where(x => x.Name != GlobalConstants.AdministratorRoleName).FirstOrDefaultAsync(x => x.Name == employeeFromView.RoleName);

            if (role == null)
            {
                throw new ArgumentNullException(string.Format(EmployeeConstants.ArgumentExceptionRoleNotExist, employeeFromView.RoleName), new Exception(nameof(employeeFromView.RoleName)));
            }

            user.Roles.Add(new IdentityUserRole <string> {
                RoleId = role.Id, UserId = user.Id
            });

            var employeeToDb = employeeFromView.To <Employee>();

            employeeToDb.Id      = Guid.NewGuid().ToString();
            employeeToDb.User    = user;
            employeeToDb.Picture = pictureUrl;

            await this.employeeRepository.AddAsync(employeeToDb);

            await this.employeeRepository.SaveChangesAsync();

            return(employeeToDb.To <EmployeeCreateViewModel>());
        }