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;
 }
Example #3
0
        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));
        }
Example #4
0
        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();
        }
Example #5
0
        /// <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);
                }
            }
        }