public async Task <Snapshot <T>[]> GetAsync <T>(string entityId, CancellationToken cancellationToken = default) { var(start, end) = _claims.GetRange() ?? (0, _snapshotMaxReturn); var count = Math.Clamp(end - start, 0, _snapshotMaxReturn); var reverse = bool.TryParse(_claims.QueryParams.GetValueOrDefault("reverse"), out var r) && r; return(await _snapshots.GetAsync <T>(entityId, start, count, reverse, cancellationToken)); }
public async Task CreatePlanAsync( DateTime from, DateTime to) { _log.Info($"Creating distribution plan for {from:s} - {to:s}..."); var claimedGasAmounts = await _claimedGasAmountRepository.GetAsync(from, to); _log.Info("Claimed GAS amount found", new { claimedGasAmounts }); var snapshots = await _snapshotRepository.GetAsync(from, to); _log.Info($"{snapshots.Count} balance snapshots found"); var scale = _assetService.AssetGet(_gasAssetId).Accuracy; _log.Info($"GAS scale {scale}"); var distributionAmounts = DistributionPlanCalculator.CalculateAmounts(snapshots, claimedGasAmounts, scale).ToArray(); _log.Info($"{distributionAmounts.Length} distribution amounts gotten"); var distributionPlan = DistributionPlanAggregate.Create(to, distributionAmounts); _log.Info($"Distribution plan {distributionPlan.Id} created"); await _distributionPlanRepository.SaveAsync(distributionPlan); }