public async Task <ActionResult> UpdateUser(Guid userId, [FromBody] DtoCreateUpdateUser updateUser) { try { Log.Information($"Executed UpdateUser({updateUser}) for user identifier: {userId}."); var resultUser = await this.userRepository.GetUserById(userId); if (resultUser == null) { Log.Warning($"User with identifier {userId} not found."); return(this.NotFound(userId)); } resultUser = this.autoMapper.Map <User>(updateUser); resultUser.Id = userId; resultUser.PasswordHash = this.passwordHasher.HashPassword(resultUser, updateUser.Password); var updated = await this.userRepository.UpdateUser(resultUser); if (!updated) { return(this.BadRequest(userId)); } var returnUser = this.autoMapper.Map <DtoReadUser>(resultUser); return(this.Ok(returnUser)); } catch (Exception ex) { Log.Fatal(ex.Message, ex); return(this.InternalServerError(ex)); } }
public async Task <ActionResult> CreateUser([FromBody] DtoCreateUpdateUser createUser) { try { Log.Information($"Executed CreateUser({createUser})."); var user = this.autoMapper.Map <User>(createUser); user.CreatedAt = DateTimeOffset.Now; var identityResult = await this.userManager.CreateAsync(user, createUser.Password); await this.databaseContext.SaveChangesAsync(); if (identityResult.Succeeded) { var returnUser = this.autoMapper.Map <DtoReadUser>(user); return(this.Ok(returnUser)); } var identityErrors = identityResult.Errors.Select(e => new IdentityErrorExt(e)); var identityErrorList = identityErrors.ToList(); Log.Fatal("Error with Asp.Net Core Identity: ", string.Join(";", identityErrorList)); return(this.InternalServerError(identityErrorList)); } catch (Exception ex) { Log.Fatal(ex.Message, ex); return(this.InternalServerError(ex)); } }
public async Task <ActionResult> CreateUser([FromBody] DtoCreateUpdateUser createUser) { try { Log.Information($"Executed CreateUser({createUser})."); var user = this.autoMapper.Map <User>(createUser); user.Id = Guid.NewGuid(); var userExists = await this.userRepository.UserNameExists(createUser.UserName); if (userExists) { return(this.Conflict(createUser)); } var inserted = await this.userRepository.InsertUser(user); if (!inserted) { return(this.BadRequest(createUser)); } var returnUser = this.autoMapper.Map <DtoReadUser>(user); return(this.Ok(returnUser)); } catch (Exception ex) { Log.Fatal(ex.Message, ex); return(this.InternalServerError(ex)); } }
public async Task <ActionResult> UpdateUser(long userId, [FromBody] DtoCreateUpdateUser updateUser) { try { Log.Information($"Executed UpdateUser({updateUser}) for user identifier: {userId}."); var resultUser = await this.databaseContext.Users.AsNoTracking().FirstOrDefaultAsync(b => b.Id == userId); if (resultUser == null) { Log.Warning($"User with identifier {userId} not found."); return(this.NotFound(userId)); } var concurrencyStamp = resultUser.ConcurrencyStamp; var createdAt = resultUser.CreatedAt; resultUser = this.autoMapper.Map <User>(updateUser); resultUser.UpdatedAt = DateTimeOffset.Now; resultUser.PasswordHash = this.passwordHasher.HashPassword(resultUser, updateUser.Password); resultUser.SecurityStamp = new Guid().ToString(); resultUser.ConcurrencyStamp = concurrencyStamp; resultUser.CreatedAt = createdAt; resultUser.Id = userId; var identityResult = await this.userManager.UpdateAsync(resultUser); await this.databaseContext.SaveChangesAsync(); if (identityResult.Succeeded) { var returnUser = this.autoMapper.Map <DtoReadUser>(resultUser); returnUser.Id = userId; return(this.Ok(returnUser)); } var identityErrors = identityResult.Errors.Select(e => new IdentityErrorExt(e)); var identityErrorList = identityErrors.ToList(); Log.Fatal("Error with Asp.Net Core Identity: ", string.Join(";", identityErrorList)); return(this.InternalServerError(identityErrorList)); } catch (Exception ex) { Log.Fatal(ex.Message, ex); return(this.InternalServerError(ex)); } }