Exemplo n.º 1
0
        public async Task <List <TransactionImportFileRow> > GenerateImportFileData(IList <Operation> operations, IList <OperationPair> operationPairs)
        {
            foreach (var pair in operationPairs)
            {
                operations.Remove(pair.Operation1);
                operations.Remove(pair.Operation2);
            }

            var predictionModelData = await _transferAccountPredictor.CreatePredictionModel();

            var fileRows         = new List <TransactionImportFileRow>();
            var accountFullNames = await _context.Set <Account>().GetAccountFullNamesAsync();

            foreach (var pair in operationPairs)
            {
                string account1Name = accountFullNames.Where(q => q.Code == pair.AccountCode1).SingleOrDefault()?.FullName
                                      ?? throw new KeyNotFoundException($"Brak konta o kodzie: {pair.AccountCode1}");
                string account2Name = accountFullNames.Where(q => q.Code == pair.AccountCode2).SingleOrDefault()?.FullName
                                      ?? throw new KeyNotFoundException($"Brak konta o kodzie: {pair.AccountCode2}");

                var row = new TransactionImportFileRow()
                {
                    Account = account1Name,
                    Date    = new DateTime[] { pair.Date1, pair.Date2 }.Min(),
                    Deposit         = pair.Amount1,
                    Description     = pair.Description1,
                    Memo            = pair.Description1,
                    TransferAccount = account2Name,
                    TransferMemo    = pair.Description2
                };
                fileRows.Add(row);
            }

            string defaultTransferAccountGuid = accountFullNames.Where(q => q.Code == "DEFAULT TRANSFER ACCOUNT").SingleOrDefault()?.Guid
                                                ?? throw new KeyNotFoundException($"Brak konta o kodzie: DEFAULT TRANSFER ACCOUNT");

            foreach (var operation in operations)
            {
                var guid = predictionModelData.PredictTransferAccount(operation, defaultTransferAccountGuid);

                string account1Name = accountFullNames.Where(q => q.Code == operation.AccountCode).SingleOrDefault()?.FullName
                                      ?? throw new KeyNotFoundException($"Brak konta o kodzie: {operation.AccountCode}");
                string account2Name = accountFullNames.Where(q => q.Guid == guid).SingleOrDefault()?.FullName
                                      ?? throw new KeyNotFoundException($"Brak konta o GUID: {guid}");

                var row = new TransactionImportFileRow()
                {
                    Account         = account1Name,
                    Date            = operation.Date,
                    Deposit         = operation.Amount,
                    Description     = operation.Description,
                    TransferAccount = account2Name
                };
                fileRows.Add(row);
            }

            return(fileRows);
        }
        private void UpdateDisplayedTransaction(int newIndex)
        {
            TransactionImportFileRow transaction = _view.TransactionData[newIndex];

            UpdateIndex(newIndex);
            _view.TbxAccountText         = transaction.Account;
            _view.TbxAmountText          = transaction.Deposit.ToString();
            _view.TbxDescriptionText     = transaction.Description;
            _view.TbxTransactionDateText = transaction.Date.ToString();
            _view.TbxTransferMemoText    = transaction.TransferMemo;
            if (_view.AvailableTransferAccounts.Contains(transaction.TransferAccount))
            {
                _view.LbTransferAccountSelectedItem = transaction.TransferAccount;
            }
            else
            {
                _view.LbTransferAccountSelectedItem = _view.AvailableTransferAccounts.First();
            }

            UpdatePrevAndNextButtonEnabled();
        }
        public void OnLbTransferAccountSelectedIndexChange(object sender, EventArgs e)
        {
            TransactionImportFileRow transaction = _view.TransactionData[_view.Index];

            transaction.TransferAccount = _view.LbTransferAccountSelectedItem;
        }