示例#1
0
        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);
        }
示例#2
0
        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));
            }
        }