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")); } }