public async Task UploadNewImageForUser(long userId, IFormFile image) { UserImage newUserImage = new UserImage { Extension = Path.GetExtension(image.FileName) }; // Register new image await _databaseContext.UserImages.AddAsync(newUserImage); await _databaseContext.SaveChangesAsync(); using (FileStream fileStream = File.Create(GetImagePath(newUserImage))) { await image.CopyToAsync(fileStream); } User targetUser = _databaseContext.Users.Include(user => user.Image).Single(user => user.Id == userId); UserImage oldUserImage = targetUser.Image; // Swap user image first, to ensure that foreign key constraint is not broken by removing the old image targetUser.ImageId = newUserImage.Id; await _databaseContext.SaveChangesAsync(); if (_databaseContext.UserImages.First().Id != oldUserImage.Id) { File.Delete(GetImagePath(oldUserImage)); _databaseContext.UserImages.Remove(oldUserImage); await _databaseContext.SaveChangesAsync(); } }
public async Task <IActionResult> Register([FromBody] UserCredentials userCredentials) { byte[] salt = _hashService.GenerateSalt(); await _databaseContext.Users.AddAsync(new User { CreatedAt = DateTime.Now, Name = userCredentials.Username, Password = _hashService.HashPassword(userCredentials.Password, salt), Salt = Convert.ToBase64String(salt) }); await _databaseContext.SaveChangesAsync(); if (_authService.Authorize(userCredentials.Username, userCredentials.Password, out ClientSession clientSession)) { return(Ok(clientSession)); } return(Unauthorized()); }
public async Task PostMessage([FromBody] Message message) { await _database.Messages.AddAsync(message); await _database.SaveChangesAsync(); }