public static IEnumerable <Transaction> Simulate(this ScheduledTransaction scheduledTransaction, DateTime beginDate, DateTime endDate) { var result = new List <Transaction>(); if (!scheduledTransaction.IsEnabled) { return(result); } var currentDate = scheduledTransaction.Frequency.BeginDate.Date; while (currentDate <= endDate) { if (!scheduledTransaction.DisabledDates.Contains(currentDate)) { var trans = new Transaction() { Date = currentDate, Id = Guid.NewGuid(), Memo = scheduledTransaction.Memo, ScheduledTransactionId = scheduledTransaction.Id }; foreach (var detail in scheduledTransaction.Details) { trans.Details.Add(new TransactionDetail() { Id = Guid.NewGuid(), Reference = detail.Reference, AccountId = scheduledTransaction.FromAccountId, DebitAmount = detail.Amount, TransactionId = trans.Id }); trans.Details.Add(new TransactionDetail() { Id = Guid.NewGuid(), Reference = detail.Reference, AccountId = scheduledTransaction.ToAccountId, CreditAmount = detail.Amount, TransactionId = trans.Id }); } result.Add(trans); } if (scheduledTransaction.Frequency.IsDaily) { currentDate = currentDate.AddDays(scheduledTransaction.Frequency.Value); } else if (scheduledTransaction.Frequency.IsWeekly) { currentDate = currentDate.AddDays(scheduledTransaction.Frequency.Value * 7); } else if (scheduledTransaction.Frequency.IsMonthly) { currentDate = currentDate.AddMonths(scheduledTransaction.Frequency.Value); } } return(result); }
public void AddScheduledTransaction() { var db = new Database(); var account = new Account(); db.SaveAccount(account); var scheduledTransaction = new ScheduledTransaction { Account = account, Amount = 1, RecurrenceRuleText = "FREQ=daily", Name = "test", StartDate = DateTime.UtcNow, }; // Act db.SaveScheduledTransaction(scheduledTransaction); // Assert Assert.Equal(5, db.Transactions.Count); }
public JsonResult Action(ScheduledTransactionsActionModel model) { JsonResult json = new JsonResult(); var result = false; if (model.ID > 0) // we are trying to edit a record { var scheduledTransaction = scheduledTransactionsServices.GetScheduledTransactionsByID(model.ID); scheduledTransaction.TransactionName = model.TransactionName; scheduledTransaction.Recipient = model.Recipient; scheduledTransaction.Price = model.Price; scheduledTransaction.Data = model.Data; result = scheduledTransactionsServices.UpdateScheduledTransaction(scheduledTransaction); } else // we are trying to create a record { ScheduledTransaction scheduledTransaction = new ScheduledTransaction(); scheduledTransaction.TransactionName = model.TransactionName; scheduledTransaction.Recipient = model.Recipient; scheduledTransaction.Price = model.Price; scheduledTransaction.Data = model.Data; result = scheduledTransactionsServices.SaveScheduledTransaction(scheduledTransaction); } if (result) { json.Data = new { Success = true }; } else { json.Data = new { Success = false, Message = "Unable to perform action on Scheduled Transaction" }; } return(json); }
private void ApplyScheduledTransactionExecute(ScheduledTransaction schedTrans) { //var scheduledTransaction = o as ScheduledTransaction; //var win = new SaveWindow(); //var winVm = new SaveWindowVM(); //var control = new ReceiptEntry(); //var vm = control.DataContext as ReceiptEntryVM; //var existingTransaction = o as Transaction; //var vendorAccounts = new ObservableCollection<AccountVM>(); //var paymentAccounts = new ObservableCollection<AccountVM>(); //foreach (var account in Repository.Accounts) //{ // var accountVM = new AccountVM() { Id = account.Id, Name = account.Name }; // vendorAccounts.Add(accountVM); // paymentAccounts.Add(accountVM); //} //vm.VendorAccounts = vendorAccounts; //vm.PaymentAccounts = paymentAccounts; //if (existingTransaction != null) //{ // // TODO: //} //else //{ // vm.Id = Guid.NewGuid(); // vm.SelectedPaymentAccountId = scheduledTransaction.FromAccountId; // vm.SelectedVendorAccountId = scheduledTransaction.ToAccountId; // vm.IsSpecificDate = true; // vm.Memo = scheduledTransaction.Memo; // foreach (var detail in scheduledTransaction.Details) // { // vm.LineItems.Add(new ReceiptEntryLineItemVM() { Amount = detail.Amount, Item = detail.Reference }); // } //} //winVm.Save += (s, e) => //{ // // map vm to model // if (existingTransaction != null) // update existing // { // } // else // insert new // { // if (vm.IsSpecificDate) // { // var receipt = new Receipt() { Id = vm.Id }; // var transaction = new Transaction() { Id = Guid.NewGuid(), Date = vm.Date, Memo = vm.Memo, ReceiptId = receipt.Id, ScheduledTransactionId = scheduledTransaction.Id }; // Repository.Receipts.Add(receipt); // Repository.Transactions.Add(transaction); // foreach (var lineItemVM in vm.LineItems) // { // var payFromDetail = new TransactionDetail() { Id = Guid.NewGuid(), TransactionId = transaction.Id, AccountId = vm.SelectedPaymentAccountId, DebitAmount = lineItemVM.Amount, Reference = lineItemVM.Item }; // var payToDetail = new TransactionDetail() { Id = Guid.NewGuid(), TransactionId = transaction.Id, AccountId = vm.SelectedVendorAccountId, CreditAmount = lineItemVM.Amount, Reference = lineItemVM.Item }; // Repository.TransactionDetails.Add(payFromDetail); // Repository.TransactionDetails.Add(payToDetail); // transaction.Details.Add(payFromDetail); // transaction.Details.Add(payToDetail); // } // } // } // Repository.UpdateAccountBalances(DateTime.Now.Date); // win.Close(); //}; //win.DataContext = winVm; //win.WindowContents = control; //win.ShowDialog(); }
public bool DeleteScheduledTransaction(ScheduledTransaction scheduledTransaction) { context.Entry(scheduledTransaction).State = System.Data.Entity.EntityState.Deleted; return(context.SaveChanges() > 0); }
public bool SaveScheduledTransaction(ScheduledTransaction scheduledTransaction) { context.ScheduledTransactions.Add(scheduledTransaction); return(context.SaveChanges() > 0); }
public JsonResult Action(DebtCardsActionModel model) { JsonResult json = new JsonResult(); var result = false; if (model.ID > 0) //we are trying to edit a record { var debtCards = debtCardServices.GetDebtCardsByID(model.ID); debtCards.Name = model.Name; debtCards.Limit = model.Limit; debtCards.PlannedTimeRefund = model.PlannedTimeRefund; result = debtCardServices.UpdateDebtCards(debtCards); ScheduledTransaction scheduledTransaction = new ScheduledTransaction(); ScheduledTransactionsServices scheduledTransactionsServices = new ScheduledTransactionsServices(); BalanceListingModel balanceModel = new BalanceListingModel(); BalanceController balanceController = new BalanceController(); balanceModel = balanceController.GetBalances(); DebtCardsListingModel debtsCardModel = new DebtCardsListingModel(); debtsCardModel.DebtCards = debtCardServices.GetAllDebtCards(); debtsCardModel.Transactions = transactionsServices.SearchTransactions("", null, 0, "", 0, null); foreach (var debts in debtsCardModel.DebtCards) { float remaning = debts.Limit; foreach (var transactions in debtsCardModel.Transactions) { if (transactions.BudgetsName == debts.Name) { remaning = remaning - transactions.Price; debts.Price = remaning; } } scheduledTransaction.Price = debts.Price; } scheduledTransaction.TransactionName = "Spłata karty"; scheduledTransaction.Recipient = "Bank"; scheduledTransaction.Data = model.PlannedTimeRefund; scheduledTransactionsServices.UpdateScheduledTransaction(scheduledTransaction); } else //we are trying to create a record { DebtCard debtCards = new DebtCard(); debtCards.Name = model.Name; debtCards.Limit = model.Limit; debtCards.PlannedTimeRefund = model.PlannedTimeRefund; result = debtCardServices.SaveDebtCards(debtCards); //Create Scheduled Transactions ScheduledTransaction scheduledTransaction = new ScheduledTransaction(); ScheduledTransactionsServices scheduledTransactionsServices = new ScheduledTransactionsServices(); BalanceListingModel balanceModel = new BalanceListingModel(); BalanceController balanceController = new BalanceController(); balanceModel = balanceController.GetBalances(); DebtCardsListingModel debtsCardModel = new DebtCardsListingModel(); debtsCardModel.DebtCards = debtCardServices.GetAllDebtCards(); debtsCardModel.Transactions = transactionsServices.SearchTransactions("", null, 0, "", 0, null); foreach (var debts in debtsCardModel.DebtCards) { float remaning = debts.Limit; foreach (var transactions in debtsCardModel.Transactions) { if (transactions.BudgetsName == debts.Name) { remaning = remaning - transactions.Price; debts.Price = remaning; } } if (debts.Price == 0) { scheduledTransaction.Price = debts.Price; } else { scheduledTransaction.Price = debts.Price; } } scheduledTransaction.TransactionName = "Spłata karty"; scheduledTransaction.Recipient = "Bank"; scheduledTransaction.Data = model.PlannedTimeRefund; scheduledTransactionsServices.SaveScheduledTransaction(scheduledTransaction); } if (result) { json.Data = new { Success = true }; } else { json.Data = new { Success = false, Message = "Unable to perform action on DebtCard." }; } return(json); }