internal static void AddIdentityErrors(this ModelStateDictionary modelState, IdentityResult identityResult)
 {
     modelState.AddIdentityErrors(identityResult.Errors);
 }
예제 #2
0
        public async Task <UserRegisterResponse> Register(RegisterUserViewModelWithRole model, ModelStateDictionary state)
        {
            IdentityResult result;

            switch (model.UserRole)
            {
            case UserRoles.Dispatcher:
                var dispatcher = Mapper.Map <Dispatcher>(model);
                result = await CreateAsync(dispatcher, model.Password);

                if (result.Succeeded)
                {
                    dispatcher = await FindByNameAsync(dispatcher.UserName) as Dispatcher;

                    if (dispatcher == null)
                    {
                        break;
                    }

                    await AddToRolesAsync(dispatcher.Id, model.UserRole);

                    return(new UserRegisterResponse("Диспетчет успешно добавлен"));
                }
                break;

            case UserRoles.Driver:
                var driver = Mapper.Map <Driver>(model);
                result = await CreateAsync(driver, model.Password);

                if (result.Succeeded)
                {
                    driver = await FindByNameAsync(driver.UserName) as Driver;

                    if (driver == null)
                    {
                        break;
                    }

                    await AddToRolesAsync(driver.Id, model.UserRole);

                    return(new UserRegisterResponse("Водитель успешно добавлен"));
                }
                break;

            default:
                var user = Mapper.Map <User>(model);
                result = await CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    user = await FindByNameAsync(user.UserName);

                    await AddToRolesAsync(user.Id, model.UserRole);

                    return(new UserRegisterResponse("Пользователь успешно добавлен"));
                }
                break;
            }
            state.AddIdentityErrors(result);
            return(new UserRegisterResponse(false));
        }