Example #1
0
        public async Task <ActionResult> Add(RegisterUserViewModelWithRole model)
        {
            if (ModelState.IsValid)
            {
                var response = await UserManager.Register(model, ModelState);

                if (response.IsSuccessfull)
                {
                    this.FlashSuccess(response.Message);
                    return(RedirectToAction("Index"));
                }
            }
            return(View(model));
        }
Example #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));
        }