예제 #1
0
        public async Task <OperationDetails> Create(UserDto userDto)
        {
            ApplicationUser user = await _unitOfWork.UserManager
                                   .FindByEmailAsync(userDto.Email);

            if (user == null)
            {
                user = new ApplicationUser
                {
                    Email     = userDto.Email,
                    UserName  = userDto.Email,
                    FirstName = userDto.FirstName,
                    LastName  = userDto.LastName
                };

                var result = await _unitOfWork.UserManager
                             .CreateAsync(user, userDto.Password);

                if (result.Succeeded)
                {
                    if (userDto.Role == SecurityRoles.Developer)
                    {
                        await _unitOfWork.UserManager
                        .AddToRoleAsync(user.Id, SecurityRoles.Developer);

                        _unitOfWork.Developers.Create(new Developer
                        {
                            DeveloperId = user.Id
                        });
                    }
                    else
                    {
                        await _unitOfWork.UserManager
                        .AddToRoleAsync(user.Id, SecurityRoles.Manager);

                        _unitOfWork.Managers.Create(new Manager
                        {
                            ManagerId = user.Id
                        });
                    }

                    await _unitOfWork.SaveAsync();

                    return(new OperationDetails(succedeed: true,
                                                message: "The registration was successful", prop: ""));
                }
                else
                {
                    return(new OperationDetails(succedeed: false,
                                                message: result.Errors.FirstOrDefault(), prop: ""));
                }
            }
            else
            {
                return(new OperationDetails(succedeed: false,
                                            message: "Login is already exists.", prop: "Email"));
            }
        }