Пример #1
0
        /// <summary>
        /// Parsetaan Osuuspankin tiedoista yksittäisiä maksuja. Tiedot joita voi parsea löytyvät kohdasta Tilit -> Verkkotiliote, ja siitä tietyn välin maksut
        /// Ei mikään erityisen hyvä komponentti, joten toimii vain tiettyjen maksujen kanssa. Omalla kuitenkin parsesi iloisesti 1.1.2012 - 30.11.2012-väliset maksut, että jotenkin toimii
        /// Poikkeuksia voi olla, sillä ei kaikenlaisia maksuja omasta historiasta löydy(esim tilisiirrot ulkomaille heittäis poikkeuksen varmaankin)
        /// Yksi rivi, josta koitetaan parsea pitäisi näyttää suunnilleen:
        /// 3.11.2012	3.11.2012	-44	106	TILISIIRTO	TNNET OY	FI29 1045 3000 1397 57 /NDEAFIHH	00000 00396 73001 60188	    20121103/593497/JC0742	
        /// </summary>
        private void ParseTapahtumat()
        {
            string[] separator = new string[] { "\r\n" };
            string[] kentatTaulukko = TextBoxSyote.Text.Split(separator, StringSplitOptions.None);
            try
            {
                foreach (string maksu in kentatTaulukko)
                {
                    if (maksu.Equals("")) return;
                    Tilitapahtuma t = new Tilitapahtuma();
                    string[] maksuTaulu = maksu.Trim().Split(' ');
                    t.Päivämäärä = DateTime.Parse(maksuTaulu[0]);
                    t.Summa = Convert.ToDouble(maksuTaulu[2]);
                    t.Selitys = maksuTaulu[4];

                    string uusi = "";
                    for (int i = 5; i < maksuTaulu.Length; i++)
                    {
                        uusi = uusi + maksuTaulu[i] + " ";
                    }

                    string[] stringSeparators = new string[] { "Viesti:" };
                    string[] uusiTaulu = uusi.Split(stringSeparators, StringSplitOptions.None);
                    if (uusiTaulu.Length > 1)
                    {
                        t.Kohde = uusiTaulu[0];
                    }
                    else
                    {
                        stringSeparators = new string[] { "FI" };
                        uusiTaulu = uusi.Split(stringSeparators, StringSplitOptions.None);
                        if (uusiTaulu.Length > 1)
                        {
                            t.Kohde = uusiTaulu[0];
                            t.Tilinumero = "FI" + uusiTaulu[1];
                        }
                    }

                    if(t.Selitys.ToLower().Equals("automaattinosto")) t.Kohde = "Automaatti";
                    if(t.Selitys.ToLower().Equals("palkka")) t.Kohde = "Palkka";

                    ListaTapahtumat.Add(t);
                }
            }
            catch (FormatException)
            {
                MessageBox.Show("Ongelma maksujen kääntämisessä");
            }
        }
        /// <summary>
        /// Kysytään käyttäjältä haluaako hän tallentaa nykyiset auki olevat tilitapahtumat, jonka jälkeen avataan OpenFileDialog, jossa käyttäjä hakee haluamansa
        /// .las-päättyvän Tililaskuri-tiedoston, jonka jälkeen nykyinen lista tilitapahutmista tyhjennetään ja tiedostosta parsetaan tapahtumat kyseiseen listaan,
        /// päivittäen lopulta tapahtumat datagrid-elementtiin
        /// </summary>
        /// <param name="target">Tapahtuman kutsuja, tässä tapauksessa Tililaskuri</param>
        /// <param name="e">Tapahtuman eventit, ei tarvita</param>
        private void SuoritaAvaaKomento(object target, ExecutedRoutedEventArgs e)
        {
            KyllaEiPeruutaDialog dialog = new KyllaEiPeruutaDialog();
            dialog.ShowDialog();
            if (dialog.DialogResult.HasValue && dialog.DialogResult.Value)
            {
                if (dialog.PainettiinkoPeruuta == true) return;
                SuoritaTallennaKomento(target, null);
            }

            OpenFileDialog dlg = new OpenFileDialog();
            dlg.FileName = ".las";
            dlg.DefaultExt = ".las";
            dlg.Filter = "Tililaskuri-tiedostot (.las)|*.las";
            Nullable<bool> result = dlg.ShowDialog();
            if (result == true)
            {
                ListaTapahtumat.Clear();
                string filename = dlg.FileName;
                StreamReader reader = new StreamReader(filename);
                string line;
                while ((line = reader.ReadLine()) != null)
                {
                    Tilitapahtuma t = new Tilitapahtuma();
                    char[] separator = new char[] { '|' };
                    string[] kentat = line.Split(separator, StringSplitOptions.None);
                    t.Kohde = kentat[0];
                    t.Päivämäärä = DateTime.Parse(kentat[1]);
                    t.Summa = Convert.ToDouble(kentat[2]);
                    t.Selitys = kentat[3];
                    t.Tilinumero = kentat[4];
                    ListaTapahtumat.Add(t);
                }

                HaeTapahtumat(this, null);
            }
        }