public TransactionOperationEventArgs(TransactionItemViewModel transaction)
        {
            if (transaction == null)
            {
                throw new ArgumentNullException(nameof(transaction));
            }

            Transaction = transaction;
        }
        public void Post([FromBody] TransactionItemViewModel value)
        {
            TransactionItem item = new TransactionItem();
            item.ProductId = value.ProductId;
            item.VendingTransactionId = value.VendingTransactionId;
            item.SalePrice = value.SalePrice;

            _db.AddTransactionItem(item);
        }
Exemple #3
0
        private IEnumerable <TransactionItemView> Transform(IEnumerable <Transaction> transactions)
        {
            var groupsByContact = TransactionItemViewModel.CreateGrouping(transactions);
            var views           = new List <TransactionItemView>();

            foreach (var item in groupsByContact)
            {
                views.Add(RegisterTransformation(item));
            }
            return(views);
        }
        public ActionResult Create(int?id)
        {
            int.TryParse(id.ToString(), out int accountId);
            var model = new TransactionItemViewModel()
            {
                TransactionType = "DEP",
                AccountId       = accountId,
                DateCreated     = DateTime.Now
            };

            return(View(model));
        }
Exemple #5
0
        private void Items_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
        {
            if (e.NewItems != null)
            {
                var transactions = e.NewItems.OfType <Transaction>();

                //  looks for ViewItems with an existing Contact
                {
                    var addingItems_iterator = _groupingItemViews.Where(p => transactions.Any(t => t.Contact.Name == p.ClassId));
                    foreach (var item in addingItems_iterator)
                    {
                        //  sends the Transactions for a specific contact to his view
                        item.AddSubItem(transactions.Where(p => p.Contact.Name == item.ClassId));
                    }
                }

                //  looks for transactions with a new registered Contact
                {
                    var newItems_iterator = transactions.Where(p => !_groupingItemViews.Any(t => t.ClassId == p.Contact.Name));
                    var views             = TransactionItemViewModel.CreateGrouping(newItems_iterator).Select(p =>
                    {
                        return(RegisterTransformation(p));
                    }).ToList();
                    if (views.Any())
                    {
                        resumeDashboardGrid.Children.AddVertical(views);
                    }
                }
            }

            if (e.OldItems != null)
            {
                foreach (var item in e.OldItems)
                {
                    var transaction = item as Transaction;

                    var items_iterator = _groupingItemViews.FirstOrDefault(p => p.ClassId == transaction.Contact.Name);
                    items_iterator.RemoveSubItem(transaction);

                    if (items_iterator.IsEmpty)
                    {
                        resumeDashboardGrid.Children.Remove(items_iterator);
                    }
                }
            }
        }
        public IActionResult List(int accountId)
        {
            var list = new List <TransactionItemViewModel>();

            if (accountId > 0)
            {
                var items = _transactionService.GetTransactions(accountId);

                items.ForEach(x =>
                {
                    var entity = new TransactionItemViewModel();
                    x.CopyTo(entity);
                    list.Add(entity);
                });
            }
            return(PartialView("TransactionList", list));
        }
        public IActionResult Index(int?id)
        {
            var list = new List <TransactionItemViewModel>();

            int.TryParse(id.ToString(), out int accountId);
            var items = _transactionService.GetTransactions(accountId);

            items.ForEach(x =>
            {
                var entity = new TransactionItemViewModel();
                x.CopyTo(entity);
                list.Add(entity);
            });

            var model = new TransactionViewModel()
            {
                AccountId       = accountId,
                TransactionList = list
            };

            return(View(model));
        }
        public async Task <IActionResult> Create(TransactionItemViewModel model)
        {
            if (ModelState.IsValid)
            {
                TimeSpan ts = new TimeSpan();


                var account = _accountService.GetAccount(model.AccountId);

                var transaction = new Transaction()
                {
                    TransactionType = model.TransactionType,
                    AccountId       = model.AccountId,
                    DateCreated     = model.DateCreated,
                    Balance         = account?.Balance ?? 0,
                    RowVersion      = ts.ToByteArray()
                };
                var recipient = new Transaction();

                switch (model.TransactionType)
                {
                case "DEP":
                    transaction.Debit   = model.Amount;
                    transaction.Balance = transaction.Balance + transaction.Debit;
                    account.Balance     = transaction.Balance;
                    break;

                case "WIT":
                    transaction.Credit  = model.Amount;
                    transaction.Balance = transaction.Balance - transaction.Credit;
                    account.Balance     = transaction.Balance;
                    break;

                case "TOA":
                case "TSA":
                    transaction.Credit      = model.Amount;
                    transaction.ToAccountId = model.ToAccountId;

                    var recipientAccount = _accountService.GetAccount(model.ToAccountId);

                    recipient.AccountId       = transaction.ToAccountId;
                    recipient.TransactionType = "TRF";
                    recipient.Debit           = model.Amount;
                    recipient.ToAccountId     = model.AccountId;
                    recipient.DateCreated     = DateTime.Now;
                    recipient.Balance         = recipientAccount.Balance + model.Amount;

                    _accountService.UpdateAccount(recipientAccount);

                    _transactionService.CreateTransaction(recipient);
                    break;

                default:
                    break;
                }

                _transactionService.CreateTransaction(transaction);
                _accountService.UpdateAccount(account);



                return(RedirectToAction("Index", new RouteValueDictionary(new { id = model.AccountId })));
            }
            return(View(model));
        }
Exemple #9
0
        protected override async void OnStartup(StartupEventArgs e)
        {
            var appId = Marshal.GetTypeLibGuidForAssembly(Assembly.GetExecutingAssembly()).ToString();

            _appMutex = new Mutex(initiallyOwned: true, name: appId, createdNew: out _isOwner);

            if (!_isOwner)
            {
                MessageBox.Show("The application is already running.");
                Current.Shutdown();
                return;
            }

            XmlConfigurator.Configure();

            base.OnStartup(e);

            _dbFile = ConfigurationManager.ConnectionStrings["HomeBankConnection"].ConnectionString;

            _sessionFactoryProvider = new SessionFactoryProvider(_dbFile);
            _sessionProvider        = new SessionProvider(_sessionFactoryProvider);

            _unitOfWorkFactory     = new UnitOfWorkFactory(_sessionProvider);
            _categoryRepository    = new SqliteCategoryRepository(_sessionProvider);
            _transactionRepository = new SqliteTransactionRepository(_sessionProvider);

            _statisticService   = new StatisticService(_transactionRepository);
            _communalCalculator = new CommunalCalculator(_communalSettings);

            var categoryItemViewModel = new CategoryItemViewModel(_eventBus);
            var categoryViewModel     = await CategoryViewModel.CreateAsync(
                _eventBus,
                _yesNoDialogServiceFactory,
                _errorDialogServiceFactory,
                _unitOfWorkFactory,
                _categoryRepository);

            var transactionItemViewModel = new TransactionItemViewModel(_eventBus, _transactionRepository, categoryViewModel.Categories);
            var transactionViewModel     = await TransactionViewModel.CreateAsync(
                _eventBus,
                _yesNoDialogServiceFactory,
                _unitOfWorkFactory,
                _categoryRepository,
                _transactionRepository);

            var statisticViewModel = await StatisticViewModel.CreateAsync(_eventBus, _statisticService);

            statisticViewModel.Type      = CategoryTypeFilter.All;
            statisticViewModel.StartDate = DateTime.Now;
            statisticViewModel.EndDate   = DateTime.Now;

            var communalViewModel = new CommunalViewModel(_eventBus, _communalCalculator);
            var settingsViewModel = new SettingsViewModel(_eventBus, _communalSettings);

            var childrenViewModels = new ViewModel[]
            {
                transactionViewModel,
                categoryViewModel,
                statisticViewModel,
                communalViewModel,
                settingsViewModel,
                categoryItemViewModel,
                transactionItemViewModel
            };

            if (_mainView == null)
            {
                _mainViewModel = new MainViewModel(
                    _eventBus,
                    childrenViewModels,
                    _categoryRepository,
                    _transactionRepository);

                transactionViewModel.Type      = CategoryTypeFilter.All;
                transactionViewModel.StartDate = DateTime.Now;
                transactionViewModel.EndDate   = DateTime.Now;

                _mainView = new MainView(_mainViewModel);

                _mainView.Show();
            }

            HandleExceptions();
        }