private IEnumerable <IResult> LoadPostings() { // Get filtered transactions during specified time frame var transactionsResult = new GetPostingsResult(AccountId, CreateFilter(PageSize), eventAggregator); yield return(transactionsResult); yield return(new SingleResult { Action = () => { TotalIncome = 0; TotalExpense = 0; TransactionRecords.Clear(); } }); foreach (var r in transactionsResult.TransactionRecords) { var result = CreateTransactionRecordResult(r); yield return(result); PostAction(result); } }
public IEnumerable <IResult> DeleteTransaction(int transactionId) { yield return(Show.Busy(new BusyScreen { Message = "Deleting..." })); // Remove transaction on server var request = new DeleteTransactionResult(userId, CurrentAccount.Id, transactionId); yield return(request); // Remove transaction locally var transactionToDelete = TransactionRecords.Where(record => record.TransactionId == transactionId).Single(); var index = TransactionRecords.IndexOf(transactionToDelete); TransactionRecords.Remove(transactionToDelete); // Correct remained balance for following transactions if (TransactionRecords.Count > 0 && index < TransactionRecords.Count) { var deletedAmount = transactionToDelete.Income > 0 ? -transactionToDelete.Income : transactionToDelete.Expense; for (int i = index; i < TransactionRecords.Count; i++) { TransactionRecords[i].Balance += deletedAmount; } } yield return(Show.NotBusy()); }
public IEnumerable <IResult> DeleteTransaction(PostingRecord transactionRecord) { var openConfirmationResult = new OpenConfirmationResult(eventAggregator) { Message = string.Format(Resources.Strings.PostingViewModelBase_DeleteConfirmation_Message, transactionRecord.TransactionId), Title = Resources.Strings.PostingViewModelBase_DeleteConfirmation_Title, Options = MessageBoxOptions.Yes | MessageBoxOptions.Cancel, }; yield return(openConfirmationResult); if (openConfirmationResult.Selected == MessageBoxOptions.Yes) { // Load transaction from server (used below to determine if the deleted posting was transfer) var request = new GetPostingResult(AccountId, transactionRecord.TransactionId, eventAggregator); yield return(request); // Remove transaction on server var request2 = new DeleteTransactionResult(AccountId, transactionRecord.TransactionId); yield return(request2); // Update accounts balance accountsRepository.Download(AccountId); // Update category usage if (transactionRecord.Category != null) { categoriesRepository.Download(transactionRecord.Category.Id); } // For transfer the 2-nd account should also be updated if (request.Transaction is TransferDTO) { int secondAccountId = ((TransferDTO)request.Transaction).SecondAccountId.Value; accountsRepository.Download(secondAccountId); } // Remove transaction locally var transactionToDelete = TransactionRecords.Where(record => record.TransactionId == transactionRecord.TransactionId).Single(); var index = TransactionRecords.IndexOf(transactionToDelete); TransactionRecords.Remove(transactionToDelete); // Correct remained balance for following transactions if (TransactionRecords.Count > 0 && index < TransactionRecords.Count) { var deletedAmount = transactionToDelete.Income > 0 ? -transactionToDelete.Income : transactionToDelete.Expense; for (int i = index; i < TransactionRecords.Count; i++) { ((PostingRecord)TransactionRecords[i]).Balance += deletedAmount; } } } }
public Task PlotData() { var spentTotal = TransactionRecords.Sum(t => Math.Abs(t.Amount)); TransactionSlices = from record in TransactionRecords group record by record.MccGroup into trxSlice select new PieSlice(trxSlice.Key, trxSlice.Sum(trx => Convert.ToDouble(trx.Amount))); PlotModel.Series.Add(new PieSeries() { ItemsSource = TransactionSlices, StrokeThickness = 2.0, InsideLabelPosition = 0.8, AngleSpan = 360, StartAngle = 0 }); return(Task.CompletedTask); }
private void CallSubmitWins(Action actionOnDone) { if (transactionRecords.transactions.Count <= 0) { actionOnDone?.Invoke(); return; //Nothing to submit } string jsonString = JsonUtility.ToJson(transactionRecords); StartCoroutine(SubmitTransactions(URLs.INSERT_TRANSACTIONS, jsonString, actionOnDone)); transactionRecords = new TransactionRecords(); }
IEnumerator GetTransactions(Action onFinish) { WWWForm form = new WWWForm(); UnityWebRequest request = UnityWebRequest.Post(URLs.GET_TRANSACTIONS, form); yield return(request.SendWebRequest()); if (request.isNetworkError || request.isHttpError) { Debug.Log("Error: " + request.error); } else { Debug.Log("Transactions Recieved"); transactionsRecords = JsonUtility.FromJson <TransactionRecords>(request.downloadHandler.text); onFinish?.Invoke(); } }
protected void Init() { if (TransactionRecords == null) { TransactionRecords = new BindableCollection <PostingRecordBase>(); } else { TransactionRecords.Clear(); } StartDate = DateTime.Now.Date; EndDate = StartDate; UseStartDate = false; UseEndDate = false; ContainsText = string.Empty; TotalIncome = 0; TotalExpense = 0; TotalPostingsCount = 0; }
void Start() { transactionRecords = new TransactionRecords(); Utils.ShuffleArray <CardData>(CardsData.instance.cardsArray); LoadPair(); }
protected virtual void PostAction(AddTransactionRecordBaseResult result) { TotalIncome += result.Income; TotalExpense -= result.Expense; TransactionRecords.Add(result.TransactionRecord); }