private static async Task PostLog(ILoggingStore store, UssdRequest request, UssdResponse response, DateTime startTime, DateTime endTime, bool dispose) { if (store == null) { return; } var log = await store.Find(request.SessionId); if (log == null) { return; } log.EndTime = endTime; log.DurationInMilliseconds = endTime.Subtract(log.StartTime).TotalMilliseconds; log.ErrorStackTrace = response.Exception == null ? null : response.Exception.StackTrace; var entry = new UssdSessionLogEntry { StartTime = startTime, EndTime = endTime, DurationInMilliseconds = endTime.Subtract(startTime).TotalMilliseconds, UssdRequest = request, UssdResponse = response, }; await store.Update(log); await store.AddEntry(request.SessionId, entry); if (dispose) { store.Dispose(); } }
public async Task AddEntry(string sessionId, UssdSessionLogEntry entry) { var filter = Builders <MongoDbSessionLog> .Filter.Where(x => x.SessionId == sessionId); var update = Builders <MongoDbSessionLog> .Update.AddToSet(x => x.Entries, entry); await Collection.UpdateOneAsync(filter, update); }