public async Task UpdateText(UpdateTranslationTextRequest request) { // Update HasText flag var matchConditions = new FilterDefinition <BsonDocument>[] { new BsonDocument( "_id", new ObjectId(request.ArticleId) ), new BsonDocument( BsonPropertyHelper.GetPropertyName <ArticleEntity>(f => f.Translations), new BsonDocument("$elemMatch", new BsonDocument(BsonPropertyHelper.GetPropertyName <TranslationEntity>(f => f.Language), request.Language)) ), }; var updateDefinition = new BsonDocument( "$set", new BsonDocument { { $"{BsonPropertyHelper.GetPropertyName<ArticleEntity>(f => f.Translations)}.$.{BsonPropertyHelper.GetPropertyName<TranslationEntity>(f => f.HasText)}", true } } ); await _dbContext.GetGenericArticlesCollection().UpdateOneAsync( Builders <BsonDocument> .Filter.And(matchConditions), updateDefinition ); // Update file var s3Client = _s3Client.GetClient(); var result = await s3Client.PutObjectAsync(new Amazon.S3.Model.PutObjectRequest { BucketName = _settings.AWSBucket, Key = GetTranslationTextFilename(request.ArticleId, new Translation { Language = request.Language }), ContentBody = request.Text }); if (result.HttpStatusCode != System.Net.HttpStatusCode.OK) { throw new InternalException(ExceptionCodes.TRANSLATION_ERROR_UPLOADING_TEXT, $"Error uploading translation with language '{request.Language}'"); } }
public async Task UpdateText(UpdateTranslationTextRequest request) { request.ValidateAndThrow(); await _translationService.UpdateText(request); }