public void UpdateTransaction(ShopTransaction transaction) { var filter = Builders <Session> .Filter; var transactionIdAndSessionIdFilter = filter.Eq(x => x.Guid, _activeSessionId) & filter.ElemMatch(x => x.Transactions, x => x.Guid == transaction.Guid); SessionsCollection.UpdateOne(transactionIdAndSessionIdFilter, Builders <Session> .Update.Set(x => x.Transactions[-1], transaction)); }
public void DeleteTransaction(ShopTransaction transaction) { List <ShopTransaction> transactions = GetTransactions(); transactions.RemoveAll(x => x.Guid == transaction.Guid); SaveTransactions(transactions); }
public void InsertTransaction(ShopTransaction transaction) { List <ShopTransaction> transactions = GetTransactions(); transactions.Add(transaction); SaveTransactions(transactions); }
public void SaveTransaction(ShopTransaction transaction) { // Try to update var filter = Builders <Session> .Filter; var transactionIdAndSessionIdFilter = filter.Eq(x => x.Guid, _activeSessionId) & filter.ElemMatch(x => x.Transactions, x => x.Guid == transaction.Guid); UpdateResult updateResult = SessionsCollection.UpdateOne(transactionIdAndSessionIdFilter, Builders <Session> .Update.Set(x => x.Transactions[-1], transaction)); // Update failed -> insert if (updateResult.ModifiedCount == 0) { SessionsCollection.FindOneAndUpdate(x => x.Guid == _activeSessionId, Builders <Session> .Update.Push(x => x.Transactions, transaction)); } }
public void SaveTransaction(ShopTransaction transaction) { List <ShopTransaction> transactions = GetTransactions(); // If transaction already exists -> update if (transactions.Any(x => x.Guid == transaction.Guid)) { transactions.RemoveAll(x => x.Guid == transaction.Guid); transactions.Add(transaction); } // Else, insert else { transactions.Add(transaction); } SaveTransactions(transactions); }
public void DeleteTransaction(ShopTransaction transaction) { SessionsCollection.UpdateOne(x => x.Guid == _activeSessionId, Builders <Session> .Update.PullFilter(x => x.Transactions, x => x.Guid == transaction.Guid)); }
// Insert/Update could be replaced with SaveTransaction(ShopTransaction transaction) public void InsertTransaction(ShopTransaction transaction) { SessionsCollection.FindOneAndUpdate(x => x.Guid == _activeSessionId, Builders <Session> .Update.Push(x => x.Transactions, transaction)); }