public async Task SetAnimalAsync(ITransaction transaction, Animal animal) { _transaction = transaction; Animal = animal; var activeDate = Animal?.LastCalculated ?? DateTime.UtcNow; VersionScheduleRecord activeRulesetRecord = await _scheduleProvider.GetActiveRulesetRecordAsync(_transaction, activeDate); ActiveRuleset = await _rulesets.ByIdAsync(_transaction, activeRulesetRecord.RulesetId, activeRulesetRecord.RulesetId); }
public async Task <IActionResult> Get(string userId, string animalId) { using (var tx = _transactionManager.CreateTransaction()) { Task <Animal> animalTask = _animals.ByIdAsync(tx, userId, animalId); Task <VersionScheduleRecord> currentRulesetRecordTask = _scheduleProvider.GetActiveRulesetRecordAsync(tx, DateTime.UtcNow); Task.WaitAll(animalTask, currentRulesetRecordTask); Animal animal = await animalTask; VersionScheduleRecord currentRulesetRecord = await currentRulesetRecordTask; if (currentRulesetRecord.Start > animal.LastCalculated) { await RunEventsAsync(tx, animal, Enumerable.Empty <AnimalEvent>()); } await tx.CommitAsync(); return(Json(animal)); } }