public async Task <ActionResult> Flows() { var lContext = new IRRContext(); var filter = new BsonDocument(); var sortFlows = Builders <Flow> .Sort.Descending(p => p.Date); var lFlows = await lContext.Flows.Find(filter).Sort(sortFlows).ToListAsync(); var model = new FlowsModel { Flows = lFlows }; return(View(model)); }
protected override void OnPropertyChanged(object sender, PropertyChangedEventArgs propertyChangedEventArgs) { BalanceModel.Series.Clear(); FlowsModel.Series.Clear(); YearBalanceModel.Series.Clear(); if (MatchingTransactions.Any()) { var minDate = MatchingTransactions.Min(x => x.BookDate); var maxDate = MatchingTransactions.Max(x => x.BookDate); var balances = GetTransactions(TimeGroupingType.Month, minDate, maxDate, TransactionTypeSelection.Balance); SetTwoColorArea(balances, BalanceModel, OxyColors.Green, TimeGroupingType.Month); //SetColumns(values, BalanceModel); //todo: make switchable var incomes = GetTransactions(TimeGroupingType.Month, minDate, maxDate, TransactionTypeSelection.Income); var outcomes = GetTransactions(TimeGroupingType.Month, minDate, maxDate, TransactionTypeSelection.Outcome); SetTwoColorArea(incomes, FlowsModel, OxyColors.Green, TimeGroupingType.Month); SetTwoColorArea(outcomes, FlowsModel, OxyColors.Red, TimeGroupingType.Month); SetTwoColorArea(GetTransactions(TimeGroupingType.Year, minDate, maxDate, TransactionTypeSelection.Balance), YearBalanceModel, OxyColors.Green, TimeGroupingType.Year); var incomesDict = incomes.ToDictionary(x => x.BookDate, x => x.Value); var outcomesDict = outcomes.ToDictionary(x => x.BookDate, x => x.Value); var summaries = new List <TransactionsSummary>(); foreach (var date in incomes.Select(x => x.BookDate).Concat(outcomes.Select(x => x.BookDate)).Distinct().OrderByDescending(x => x).ToArray()) { incomesDict.TryGetValue(date, out decimal income); outcomesDict.TryGetValue(date, out decimal outcome); summaries.Add(new TransactionsSummary { GrossIncome = income, GrossOutcome = -outcome, Name = date.ToString("yyyy.MM") }); } Balances = summaries.ToArray(); RaisePropertyChanged(nameof(Balances)); } BalanceModel.InvalidatePlot(true); BalanceModel.ResetAllAxes(); FlowsModel.InvalidatePlot(true); FlowsModel.ResetAllAxes(); YearBalanceModel.InvalidatePlot(true); YearBalanceModel.ResetAllAxes(); }
public async Task <Result> Handle(ListFlowQuery request, CancellationToken cancellationToken) { Result result; try { int?skip = request.Skip.ToNullableInt(); int?top = request.Top.ToNullableInt(); var flowDomains = await _flowReadRepository.ListAsync(request.Filter, skip, top); var flowModels = _mapper.Map <IEnumerable <FlowModel> >(flowDomains); var count = flowModels.Count(); var sourcesModel = new FlowsModel { Value = flowModels, Count = count, NextLink = null }; result = Result.Ok(sourcesModel); } catch (FilterODataException) { result = Result.Fail(new System.Collections.Generic.List <Failure>() { new HandlerFault() { Code = HandlerFaultCode.InvalidQueryFilter.Name, Message = HandlerFailures.InvalidQueryFilter, Target = "$filter" } } ); } catch { result = Result.Fail(CustomFailures.ListFlowFailure); } return(result); }