public async Task <Guid?> CreateDatasetNominationAsync(ClaimsPrincipal user, DatasetNomination nomination, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); var userId = GetUserId(user); if (!userId.HasValue) { return(null); } var name = GetUserName(user); var email = GetUserEmail(user); var record = nomination.ToDatasetNominationStorageItem(d => { d.CreatedByUserId = userId.Value.ToString(); d.CreatedByUserName = name; d.CreatedByUserEmail = email; d.Created = DateTime.UtcNow; d.DatasetId = WellKnownIds.DatasetNominationDatasetId; }); await this.Client.CreateDocumentAsync(UserDataDocumentCollectionUri, record).ConfigureAwait(false); return(record.Id); }
public async Task <Guid?> UpdateDatasetNominationAsync(ClaimsPrincipal user, DatasetNomination nomination, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); var userId = GetUserId(user); if (!userId.HasValue) { return(null); } var name = GetUserName(user); var email = GetUserEmail(user); var options = new FeedOptions { PartitionKey = new PartitionKey(WellKnownIds.DatasetNominationDatasetId.ToString()) }; var uri = this.UserDataDocumentCollectionUri; var existingDocument = this.Client.CreateDocumentQuery <DatasetNominationStorageItem>(uri, options) .Where(r => r.Id == nomination.Id) .AsEnumerable() .SingleOrDefault(); if (existingDocument == null) { throw new InvalidOperationException("Dataset Nomination not found."); } var storageItem = nomination.ToDatasetNominationStorageItem((d) => { d.Created = existingDocument.Created; d.CreatedByUserId = existingDocument.CreatedByUserId; d.CreatedByUserName = existingDocument.CreatedByUserName; d.CreatedByUserEmail = existingDocument.CreatedByUserEmail; d.ModifiedByUserName = name; d.ModifiedByUserEmail = email; d.Modified = DateTime.UtcNow; }); uri = UserDataDocumentUriById(storageItem.Id.ToString()); await this.Client.ReplaceDocumentAsync(uri, storageItem); return(nomination.Id); }