public ButtonCommands(string buttonContent, ImportMainPage importPage)
            {
                this.buttonContent = buttonContent;
                this.importPage    = importPage;

                this.importPage.PropertyChanged += new PropertyChangedEventHandler(test_PropertyChanged);
            }
        public ExportTransactions(List <Transaction> transactions, MainWindow mainWindow, string currentFileName)
        {
            this.mainWindow = mainWindow;
            MessageBox.Show("Exporting data from: " + currentFileName, "", MessageBoxButton.OK);
            //BUT FIRST - check if the transaction is already exported or not
            List <Transaction> neededTransactions = newTransactions(transactions);

            SavedTransactions.addToSavedTransactions(neededTransactions);//adding the freshyl imported transactions to the saved
            WriteWorkbook  = excel.Workbooks.Open(@"C:\Users\Tocki\Desktop\Kimutatas.xlsx");
            WriteWorksheet = WriteWorkbook.Worksheets[1];
            if (neededTransactions != null)
            {
                string todaysDate = DateTime.Now.ToString("yyyy-MM-dd");
                int    row_number = 1;
                while (WriteWorksheet.Cells[row_number, 1].Value != null)
                {
                    row_number++; // get the current last row
                }
                foreach (var transctn in neededTransactions)
                {
                    WriteWorksheet.Cells[row_number, 1].Value = todaysDate;
                    WriteWorksheet.Cells[row_number, 2].Value = transctn.getTransactionDate();
                    WriteWorksheet.Cells[row_number, 3].Value = transctn.getBalance_rn();
                    WriteWorksheet.Cells[row_number, 7].Value = transctn.getTransactionPrice();
                    if (transctn.getTransactionPrice() < 0)
                    {
                        WriteWorksheet.Cells[row_number, 9].Value  = transctn.getTransactionPrice();
                        WriteWorksheet.Cells[row_number, 11].Value = transctn.getTransactionPrice();
                        WriteWorksheet.Cells[row_number, 15].Value = "havi";
                    }
                    else
                    {
                        WriteWorksheet.Cells[row_number, 8].Value  = transctn.getTransactionPrice();
                        WriteWorksheet.Cells[row_number, 10].Value = transctn.getTransactionPrice();
                        WriteWorksheet.Cells[row_number, 11].Value = transctn.getTransactionPrice();
                        WriteWorksheet.Cells[row_number, 15].Value = "havi";
                    }
                    WriteWorksheet.Cells[row_number, 14].Value = transctn.getTransactionDescription();
                    WriteWorksheet.Cells[row_number, 16].Value = transctn.getAccountNumber();
                    row_number++;
                    Range line = (Range)WriteWorksheet.Rows[row_number];
                    line.Insert();
                }
                try
                {
                    //WriteWorkbook.SaveAs(@"C:\Users\Tocki\Desktop\Kimutatas.xlsx");
                    excel.ActiveWorkbook.Save();
                    excel.Workbooks.Close();
                    excel.Quit();
                }
                catch (Exception e)
                {
                }
                ImportMainPage.getInstance(mainWindow).getUserStatistics(importerAccountNumber);
            }
            else
            {
                return;
            }
        }
 public static ImportMainPage getInstance(MainWindow mainWindow)
 {
     if (instance == null)
     {
         instance = new ImportMainPage(mainWindow);
     }
     return(instance);
 }
 public void Execute(object parameter)
 {
     mainWindow.tableDock.Background        = new SolidColorBrush(Color.FromRgb(217, 133, 59));
     mainWindow.importDock.Background       = new SolidColorBrush(Color.FromRgb(217, 133, 59));
     mainWindow.stockChartDock.Background   = new SolidColorBrush(Color.FromRgb(217, 133, 59));
     mainWindow.tableMenuTop.Visibility     = System.Windows.Visibility.Hidden;
     mainWindow.importMenuTop.Visibility    = System.Windows.Visibility.Hidden;
     mainWindow.portfolioMenuTop.Visibility = System.Windows.Visibility.Hidden;
     if (buttonContent.Equals("Import"))
     {
         mainWindow.MainFrame.Content        = ImportMainPage.getInstance(mainWindow);
         mainWindow.importMenuTop.Visibility = System.Windows.Visibility.Visible;
         mainWindow.importDock.Background    = new SolidColorBrush(Color.FromRgb(198, 61, 15));
     }
     else if (buttonContent.Equals("Database"))
     {
         mainWindow.MainFrame.Content       = TransactionMain.getInstance(mainWindow, mainWindow.getTableAttributes(), mainWindow.getAccounNumber());
         mainWindow.tableMenuTop.Visibility = System.Windows.Visibility.Visible;
         mainWindow.tableDock.Background    = new SolidColorBrush(Color.FromRgb(198, 61, 15));
     }
     else if (buttonContent.Equals("stockMarketData"))
     {
         if (mainWindow.webStockStopwatch.Elapsed == TimeSpan.FromMilliseconds(0))
         {
             mainWindow.webStockStopwatch.Start();
             StockChart stockChart = new StockChart();
             //stockChart.getNewStockData();
             //stockChart.refreshChartAttributes();
             mainWindow.MainFrame.Content           = stockChart;
             mainWindow.portfolioMenuTop.Visibility = System.Windows.Visibility.Visible;
             mainWindow.stockChartDock.Background   = new SolidColorBrush(Color.FromRgb(198, 61, 15));
         }
         else
         {
             if (mainWindow.webStockStopwatch.Elapsed <= TimeSpan.FromMinutes(1.5))
             {
                 MessageBox.Show("Please wait for " + (TimeSpan.FromMinutes(1.5) - mainWindow.webStockStopwatch.Elapsed) + " seconds!");
             }
             else
             {
                 mainWindow.webStockStopwatch.Stop();
                 mainWindow.webStockStopwatch.Reset();
             }
         }
     }
     else if (buttonContent.Equals("Exit"))
     {
         mainWindow.Close();
     }
 }
        private List <Transaction> newTransactions(List <Transaction> importedTransactions) //check if the transaction is already exported or not
        {
            List <Transaction> savedTransactions  = SavedTransactions.getSavedTransactions();
            List <Transaction> neededTransactions = new List <Transaction>();

            importerAccountNumber = importedTransactions[0].getAccountNumber();//account number is the same for all
            ThreadStart threadStart = delegate
            {
                writeAccountNumberToSql(importerAccountNumber);
            };
            Thread sqlThread = new Thread(threadStart);

            sqlThread.IsBackground = true;
            sqlThread.Start();
            sqlThread.Join();
            mainWindow.setAccountNumber(importerAccountNumber);
            if (savedTransactions.Count != 0)//if the export file was not empty we scan the list
            {
                List <Transaction> tempTransactions = new List <Transaction>();
                foreach (var saved in savedTransactions)
                {
                    //egy külön listába tesszük azokat az elemeket a már elmentet tranzakciókból ahol a bankszámlaszám
                    //megegyezik az importálandó bankszámlaszámmal
                    if (saved.getAccountNumber().Equals(importerAccountNumber))
                    {
                        tempTransactions.Add(saved);
                    }
                }
                if (tempTransactions.Count != 0)//ha van olyan már elmentett tranzakció aminek az  a bankszámlaszáma mint amit importálni akarunk
                {
                    int          explicitImported = 0;
                    StreamWriter logFile          = new StreamWriter("C:\\Users\\Tocki\\Desktop\\transactionsLog.txt", append: true);
                    foreach (var imported in importedTransactions)
                    {
                        bool redundant = false;
                        foreach (var saved in tempTransactions)
                        {
                            if (saved.getTransactionDate().Equals(imported.getTransactionDate()) &&
                                saved.getTransactionPrice().Equals(imported.getTransactionPrice()) &&
                                saved.getBalance_rn() == imported.getBalance_rn())
                            {
                                redundant = true;
                                if (ImportMainPage.getInstance(mainWindow).alwaysAsk == true)
                                {
                                    if (MessageBox.Show("This transaction is most likely to be in the Databse already!\n -- Transaction date: " + imported.getTransactionDate() + "\n-- Transaction price: " + imported.getTransactionPrice()
                                                        + "\n-- Imported on: " + saved.getWriteDate().Substring(0, 12) + "\nWould you like to import it anyways?",
                                                        "Imprt alert!",
                                                        MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
                                    {
                                        neededTransactions.Add(imported);
                                        explicitImported++;
                                        logFile.WriteLine("AccountNumber: " + imported.getAccountNumber() +
                                                          "\n ImportDate: " + imported.getTransactionDate() +
                                                          "\n TransactionPrice: "
                                                          + imported.getTransactionPrice() + " *");
                                    }
                                }
                                break;
                            }
                        }
                        if (redundant == false)
                        {
                            neededTransactions.Add(imported);;
                        }
                    }
                    logFile.Close();

                    /*
                     * if(neededTransactions.Count==0)
                     * {
                     *  //mainWindow.setTableAttributes(savedTransactions, importerAccountNumber);
                     *  //only pass the saved transactions because we didn't add new
                     *  //and the accountNumber so we can select it by user
                     * }
                     * else
                     * {
                     *  //we pass both the saved and the new transcations
                     *  List<Transaction> savedAndImported=new List<Transaction>();
                     *
                     *  //tempTrancations containts saved Transactions where the accountnumber matches with the imported Transactions
                     *  foreach (var attribue in tempTransactions)
                     *  {
                     *      savedAndImported.Add(attribue);
                     *  }
                     *  foreach (var attribue in neededTransactions)
                     *  {
                     *      savedAndImported.Add(attribue);
                     *  }
                     *  //mainWindow.setTableAttributes(savedAndImported,true);
                     * }
                     */
                    if (MessageBox.Show("You have imported " + neededTransactions.Count + " new transaction(s)!\n" +
                                        "(" + (tempTransactions.Count - explicitImported) + " was already imported)", "Import alert!",
                                        MessageBoxButton.OK, MessageBoxImage.Information) == MessageBoxResult.OK)
                    {
                        return(neededTransactions);
                    }
                    return(neededTransactions);
                }
                else //nincs olyan elmentett tranzakció aminek az lenne a bankszámlaszáma mint amit importálni akarunk
                     //tehát az összeset importáljuk
                {
                    //mainWindow.setTableAttributes(importedTransactions,"empty");
                    if (MessageBox.Show("You have imported " + importedTransactions.Count + " new transaction(s)!\n", "Import alert!",
                                        MessageBoxButton.OK, MessageBoxImage.Information) == MessageBoxResult.OK)
                    {
                        return(importedTransactions);
                    }
                    return(importedTransactions);
                }
            }
            else // még nincs elmentett tranzakció
                 // tehát az összeset importáljuk
            {
                //mainWindow.setTableAttributes(importedTransactions,"empty");
                if (MessageBox.Show("You have imported " + importedTransactions.Count + " new transaction(s)!\n", "Import alert!",
                                    MessageBoxButton.OK, MessageBoxImage.Information) == MessageBoxResult.OK)
                {
                    return(importedTransactions);
                }
                return(importedTransactions);
            }
        }