internal static MatchingTransactions getMatchingTransactions(HttpResponseMessage responce) { var matchingTransactions = new MatchingTransactions(); var jsonObj = JsonConvert.DeserializeObject <Dictionary <string, object> >(responce.Content.ReadAsStringAsync().Result); if (jsonObj.ContainsKey("matching_transactions")) { var transArray = JsonConvert.DeserializeObject <List <object> >(jsonObj["matching_transactions"].ToString()); foreach (var transactionObj in transArray) { var transaction = new Transaction(); transaction = JsonConvert.DeserializeObject <Transaction>(transactionObj.ToString()); matchingTransactions.Add(transaction); } } if (jsonObj.ContainsKey("page_context")) { var pageContext = new PageContext(); pageContext = JsonConvert.DeserializeObject <PageContext>(jsonObj["page_context"].ToString()); matchingTransactions.page_context = pageContext; } if (jsonObj.ContainsKey("instrumentation")) { var instrumentation = new Instrumentation(); instrumentation = JsonConvert.DeserializeObject <Instrumentation>(jsonObj["instrumentation"].ToString()); matchingTransactions.instrumentation = instrumentation; } return(matchingTransactions); }
internal static MatchingTransactions getMatchingTransactions(HttpResponseMessage responce) { var matchingTransactions = new MatchingTransactions(); var jsonObj = JsonConvert.DeserializeObject<Dictionary<string, object>>(responce.Content.ReadAsStringAsync().Result); if (jsonObj.ContainsKey("matching_transactions")) { var transArray = JsonConvert.DeserializeObject<List<object>>(jsonObj["matching_transactions"].ToString()); foreach(var transactionObj in transArray) { var transaction = new Transaction(); transaction = JsonConvert.DeserializeObject<Transaction>(transactionObj.ToString()); matchingTransactions.Add(transaction); } } if (jsonObj.ContainsKey("page_context")) { var pageContext = new PageContext(); pageContext = JsonConvert.DeserializeObject<PageContext>(jsonObj["page_context"].ToString()); matchingTransactions.page_context = pageContext; } if (jsonObj.ContainsKey("instrumentation")) { var instrumentation = new Instrumentation(); instrumentation = JsonConvert.DeserializeObject<Instrumentation>(jsonObj["instrumentation"].ToString()); matchingTransactions.instrumentation = instrumentation; } return matchingTransactions; }
private TransactionBalance[] GetTransactions(TimeGroupingType grouping, DateTime minDate, DateTime maxDate, TransactionTypeSelection selection) { var groupingSelector = GetGroupingSelector(grouping); Func <Transaction, bool> valuesPicker = null; switch (selection) { case TransactionTypeSelection.Income: valuesPicker = x => (ShowTransfers ? x.ValueWithSign : x.ValueAsProfit) > 0; break; case TransactionTypeSelection.Outcome: valuesPicker = x => (ShowTransfers ? x.ValueWithSign : x.ValueAsProfit) < 0; break; case TransactionTypeSelection.Balance: valuesPicker = x => true; break; } if (valuesPicker == null) { return(new TransactionBalance[0]); } return(FillMissingEntriesWithZeroValue( MatchingTransactions .Where(valuesPicker) .GroupBy(x => groupingSelector(x.BookDate)) .Select(x => new TransactionBalance(x.Key, x.Sum(y => (ShowTransfers ? y.ValueWithSign : y.ValueAsProfit)))) .OrderBy(x => x.BookDate), minDate, maxDate, grouping)); }
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(); }
/// <summary> /// </summary> private void ShowPreview() { MatchingTransactions.Clear(); if (mSelectedRule == null) { return; } var previewedRule = Mapper.Map <ProcessingRule>(mSelectedRule); var transactions = mTransactionDataService.GetAll(); foreach (var transaction in transactions) { if (previewedRule.AppliesTo(transaction)) { MatchingTransactions.Add(transaction); } } }