public async Task <IServiceResult> Register([FromBody] UserSaved register) { try { var user = await _userManager.FindByEmailAsync(register.Email); if (user != null) { return(new ServiceResult(false, message: "Duplicate user")); } user = _mapper.Map <UserSaved, User>(register); var result = await _userManager.CreateAsync(user, register.Password); if (result.Succeeded) { var currentUser = await _userManager.FindByNameAsync(user.UserName); var role = await _userManager.AddToRoleAsync(currentUser, "User"); _logger.LogInformation($"User {user.Email} with id: {user.Id} created."); return(new ServiceResult(payload: currentUser.UserName)); } return(new ServiceResult(false, message: " Duplicate UserName ")); } catch (Exception e) { _logger.LogError($"Can not create user {register.Email}. {e.Message}"); return(new ServiceResult(false, message: e.Message)); } }
/// <summary> /// Savers changes to a user to the database /// </summary> /// <param name="user"></param> public void SaveUser(IUser user) { if (UserSaving.IsRaisedEventCancelled(new SaveEventArgs <IUser>(user), this)) { return; } var uow = _uowProvider.GetUnitOfWork(); using (var repository = _repositoryFactory.CreateUserRepository(uow)) { repository.AddOrUpdate(user); uow.Commit(); } UserSaved.RaiseEvent(new SaveEventArgs <IUser>(user, false), this); }
public async Task PublishSaveEventAsync(int userId) { var dbUser = _repository.FindBy <User>(u => u.Id == userId) .Include(u => u.UserGroups) .ThenInclude(ug => ug.ApplicationUserGroup) .Include(u => u.Plants) .FirstOrDefault(); if (dbUser == null) { _logger.LogError($"User with id {userId} has not been found in the database. Cannot publish save event."); return; } var plants = dbUser.Plants.Select(up => new UserPlantSaved { UserId = up.UserId, PlantId = up.PlantId } ).ToArray(); var userGroups = dbUser.UserGroups.ToList().Select(ug => new UserGroupSaved { Id = ug.ApplicationUserGroupId } ).ToArray(); var user = new UserSaved { Id = dbUser.Id, UserName = dbUser.UserName, FirstName = dbUser.FirstName, LastName = dbUser.LastName, Email = dbUser.Email, IsDeleted = dbUser.IsDeleted, Plants = plants, Groups = userGroups }; await _busClient.PublishAsync <UserSaved>(user); }