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; }