private DataTable checkRows(DataTable rowsTable)
        {
            // atlieka eilučių tikrinimo darbą
            DataTable resultTable = new DataTable();

            resultTable.Columns.Add("id", typeof(int));
            resultTable.Columns.Add("errorMsg", typeof(string));

            foreach (DataRow drow in rowsTable.Rows)
            {
                int         id = Convert.ToInt32(drow["id"]);
                VietosKodas vk;

                // preliminarus patikrinimas
                try
                {
                    vk = new VietosKodas(drow);
                }
                catch (InvalidDuomenysException ide)
                {
                    resultTable.Rows.Add(id, ide.Message);
                    continue;
                }
                catch (InvalidKodasException ike)
                {
                    resultTable.Rows.Add(id, ike.Message);
                    continue;
                }
                catch (Exception ex)
                {
                    resultTable.Rows.Add(id, ex.Message);
                    continue;
                }

                // patikrinimas, nagrinėjant kodą
                try
                {
                    VietosKodasParser.parseSuvirinimas(vk);
                }
                catch (InvalidKodasException ike)
                {
                    resultTable.Rows.Add(id, ike.Message);
                    continue;
                }
                catch (Exception ex)
                {
                    resultTable.Rows.Add(id, ex.Message);
                    continue;
                }

                resultTable.Rows.Add(id, "");
            }
            return(resultTable);
        }
Beispiel #2
0
    public Suvirinimas(DataRow row)
    {
        id    = Convert.ToInt32(row["id"]);
        data  = (DateTime)row["aktas_data"];
        vieta = new Vieta();
        try
        {
            vieta = VietosKodasParser.parseSuvirinimas(new VietosKodas(row));
        }
        catch (InvalidDuomenysException invd)
        {
            errMsg = invd.Message;
        }
        catch (InvalidKodasException invk)
        {
            errMsg = invk.Message;
        }
        catch (Exception ex)
        {
            errMsg = ex.Message;
        }
        finally
        {
            // nežinau, kaip pagaminamas Vieta vieta:
            // jeigu tiesiog surašomi laukai į mąsyvą, tai čia užtektų vieta.toString(),
            // o jeigu ten kažkas dar tikrinama, tuomet esant netinkamam vietos kodui, man
            // nepagamintų objekto Vieta ir tas savo ruožtų neduotų vieta.toString();
            this.strVietosKodas = string.Format("{0}{1}.{2}{3}{4}{5}.{6}{7}.{8}{9}.{10}",
                                                row["k11"], row["k12"],
                                                row["k21"], row["k22"], row["k23"], row["k24"],
                                                row["k31"], row["k32"],
                                                row["k41"], row["k42"],
                                                row["k51"]);
        }

        aktoNr           = row["aktas_Nr"].ToString();
        suvirintojas     = new Suvirintojas(row["suvirintojo_vardas"].ToString(), row["suvirintojo_kodas"].ToString(), row["suvirintojo_įmonė"].ToString());
        operatorius      = new Operatorius(row["operatoriaus_vardas"].ToString(), Convert.ToInt32(row["operatoriaus_kodas"]));
        kelioMeistras    = new KMFilialo(row["kelio_meistro_vardas"].ToString(), row["kelio_meistro_meistrija"].ToString());
        begioTipas       = row["bėgio_tipas"].ToString();
        begioTemperatura = Convert.ToInt32(row["salyg_begioTemp"]);
        protarpis        = Convert.ToInt32(row["begis_protarpisMm"]);
    }
        private Dictionary <string, string> generateDicByDataRow(DataRow drow)
        {
            Dictionary <string, string> bkdata = new Dictionary <string, string>();

            // paprasti
            bkdata.Add("akto_data", ((DateTime)drow["aktas_data"]).ToString("yyyy-MM-dd"));
            bkdata.Add("akto_nr", drow["aktas_nr"].ToString());
            bkdata.Add("begio_tipas", drow["begio_tipas"].ToString());
            bkdata.Add("formos_gm", drow["medz_formaGamMetai"].ToString());
            bkdata.Add("misinio_gm", drow["medz_misinGamMetai"].ToString());
            bkdata.Add("kas_virino", drow["padalinys"].ToString());
            bkdata.Add("misinio_kodas", drow["misinys"].ToString());
            bkdata.Add("partijos_nr", drow["medz_misinPartNr"].ToString());
            bkdata.Add("porcijos_nr", drow["medz_misinPorcNr"].ToString());
            bkdata.Add("filialo_KM", drow["KM_vardas"].ToString());
            bkdata.Add("temp_begio", drow["salyg_begioTemp"].ToString());
            bkdata.Add("temp_oro", drow["salyg_oroTemp"].ToString());
            bkdata.Add("protarpis", drow["begis_protarpisMm"].ToString());
            bkdata.Add("suvirintojo_kodas", drow["suvirintojas_kodas"].ToString());
            bkdata.Add("suvirintojo_padalinys", drow["virino_padalinys"].ToString());
            bkdata.Add("suvirintojo_vardas", drow["suvirintojas"].ToString());

            // sąlyginiai
            if ((bool)drow["arRangovas"])
            {
                bkdata.Add("statusas", "rangovo įmonės pavadinimas");
            }
            else
            {
                bkdata.Add("statusas", "struktūrinio padalinio pavadinimas");
            }

            if ((bool)drow["salyg_arSausa"])
            {
                bkdata.Add("sausa_dregna", "sausa");
            }
            else
            {
                bkdata.Add("sausa_dregna", "drėgna");
            }

            if (((bool)drow["tikrin_arDefektas"]))
            {
                bkdata.Add("ar_defektas", "defekto kodas");
                bkdata.Add("defekto_kodas", drow["tikrin_defKodas"].ToString());
                // sandūrą aprašantis tekstas kapojamas į tris dalis ir kiekviena priskiriama
                // atskirai akto eilutei. Jeigu tekstas netelpa į tris dalis (apie 250 simbolių),
                // jis nukandamas.
                string[] eilutes = new string[3];
                splitString(drow["tikrin_sanduruCharakter"].ToString(), ref eilutes);
                bkdata.Add("sanduros_charakteristika_0", eilutes[0]);
                bkdata.Add("sanduros_charakteristika_1", eilutes[1]);
                bkdata.Add("sanduros_charakteristika_2", eilutes[2]);
            }
            else
            {
                bkdata.Add("ar_defektas", "defektų nenustatyta");
                bkdata.Add("defekto_kodas", "---");
                bkdata.Add("sanduros_charakteristika_0", "---");
            }

            // sudėtiniai
            bkdata.Add("nbb_defektoskopas", string.Format("{0}, {1} Nr. {2}",
                                                          drow["df_kodas"].ToString(),
                                                          drow["df_tipas"].ToString(),
                                                          drow["df_nr"].ToString()));
            bkdata.Add("nbb_operatorius", string.Format("{0}, {1}",
                                                        drow["operatorius_kodas"].ToString(),
                                                        drow["operatorius"].ToString()));
            bkdata.Add("sutvarke", string.Format("{0}, {1} {2}",
                                                 drow["sutvarke_padalinys"].ToString(),
                                                 drow["sutvarke_vadovasPareigos"].ToString(),
                                                 drow["sutvarke_vadovas"].ToString()));
            bkdata.Add("nelygumai", string.Format("{0} / {1}",
                                                  getStringOfSignedDec(drow["tikrin_nelygumaiVirsausMm"]),
                                                  getStringOfSignedDec(drow["tikrin_nelygumaiSonoMm"])));

            // prefix - nuo jo priklauso, į katrą lentelę rašys;
            // kelio kodo lentelėje visi bookmarkai prasideda iš "k",
            // o iešmo kodo lentelėje visi bookmarkai prasideda iš "i"
            string prfx;

            if ((int)drow["k21"] == 8 || (int)drow["k21"] == 9)
            {
                prfx = "i";
            }
            else
            {
                prfx = "k";
            }

            // vietos kodas
            bkdata.Add(prfx + "k11", drow["k11"].ToString());
            bkdata.Add(prfx + "k12", drow["k12"].ToString());
            bkdata.Add(prfx + "k21", drow["k21"].ToString());
            bkdata.Add(prfx + "k22", drow["k22"].ToString());
            bkdata.Add(prfx + "k23", drow["k23"].ToString());
            bkdata.Add(prfx + "k24", drow["k24"].ToString());
            bkdata.Add(prfx + "k31", drow["k31"].ToString());
            bkdata.Add(prfx + "k32", drow["k32"].ToString());
            bkdata.Add(prfx + "k41", drow["k41"].ToString());
            bkdata.Add(prfx + "k42", drow["k42"].ToString());
            bkdata.Add(prfx + "k51", drow["k51"].ToString());

            // parsinamas vietos kodas, kad suprasti, ką koks skaitmuo reiškia
            Vieta vt = VietosKodasParser.parseSuvirinimas(new VietosKodas(drow));

            // vietos kodo aprasymai lentelėse

            // XX.xxxx.xx.xx.x
            // jeigu stotis ir jeigu ta stotis didelė - rašomas stoties pavadinimas
            if (vt.galimosStotys.Count > 0 && vt.galimosStotys[0].kodas != "0")
            {
                bkdata.Add(prfx + "k_aprasymas_1_12", "Stotis " + vt.galimosStotys[0].pavadinimas);
            }
            // jeigu maža stotis rašomas linijos pavadinimas
            else if (vt.galimosStotys.Count > 0)
            {
                bkdata.Add(prfx + "k_aprasymas_1_12", "Linija " + vt.galimosStotys[0].linija.pavadinimas);
            }
            // jeigu tarpstotis
            else
            {
                bkdata.Add(prfx + "k_aprasymas_1_12", "Linija " + vt.tarpstotis.stotis1.linija.pavadinimas);
            }

            int b = Convert.ToInt32(drow["k21"]);
            int f = Convert.ToInt32(drow["k51"]);

            // xx.Xxxx.xx.xx.x
            // jeigu iešmas didelėje stotyje
            if (b == 8)
            {
                bkdata.Add(prfx + "k_aprasymas_2_1", "Iešmo kodas didelėje stotyje");
            }
            // jeigu iešmas mažoje stotyje
            else if (b == 9)
            {
                bkdata.Add(prfx + "k_aprasymas_2_1", "Iešmo kodas mažoje stotyje");
            }
            // jeigu didelė stotis arba jeigu trumpas kelias nesvarbu kokioje stotyje
            else if ((vt.galimosStotys.Count > 0 && vt.galimosStotys[0].kodas != "0") || b == 6 || b == 7)
            {
                bkdata.Add(prfx + "k_aprasymas_2_1", "Stoties kelio kodas");
            }
            // jeigu tarpstotis arba jeigu maža stotis ne iešmas ir ne trumpas kelias
            else
            {
                bkdata.Add(prfx + "k_aprasymas_2_1", "Kelio numeris");
            }

            // xx.xXXX.xx.xx.x
            // visais atvejais, kai nurodyta kelio koordinatė
            if (vt.koordinate != null)
            {
                bkdata.Add(prfx + "k_aprasymas_2_234", "Kelio koordinatės kilometras");
            }
            else
            // iešmas didelėje stotyje
            if (b == 8)
            {
                bkdata.Add(prfx + "k_aprasymas_2_234", "Iešmo Nr.");
            }
            else
            {
                bkdata.Add(prfx + "k_aprasymas_2_234", "Stoties kelio Nr.");
            }
            // xx.xxxx.XX.xx.x
            // didelės stoties iešme
            if (b == 8)
            {
                bkdata.Add(prfx + "k_aprasymas_3_12", "00 didelėje stotyje");
            }
            // mažos stoties iešme
            else if (b == 9)
            {
                bkdata.Add(prfx + "k_aprasymas_3_12", "Iešmo Nr. mažoje stotyje");
            }
            // ne iešmas ir nurodyta pilna koordinatė
            else if (vt.koordinate != null && vt.koordinate.yraPilna)
            {
                bkdata.Add(prfx + "k_aprasymas_3_12", "Kelio koordinatės piketas");
            }
            // kai nurodytas atstumas nuo iešmo
            else if (vt.atstumasNuoIesmo != null)
            {
                bkdata.Add(prfx + "k_aprasymas_3_12", "Atstumas nuo iešmo, m");
            }
            // čia būtų toks keistas atvejis, kai nurodyta kelio koordinatė, bet ji nepilna ir tai nėra mažos stoties iešmas
            else
            {
                bkdata.Add(prfx + "k_aprasymas_3_12", ""); // neturėtų būti
            }
            // xx.xxxx.xx.XX.x
            // kai iešmas
            if (b == 8 || b == 9)
            {
                bkdata.Add(prfx + "k_aprasymas_4_12", "Iešmo sandūros Nr.");
            }
            // kai nurodyta kelio koordinatė ir ji pilna
            else if (vt.koordinate != null && vt.koordinate.yraPilna)
            {
                bkdata.Add(prfx + "k_aprasymas_4_12", "Atstumas nuo piketinio stulpelio, m");
            }
            // kai nurodytas atstumas nuo iešmo
            else if (vt.atstumasNuoIesmo != null)
            {
                bkdata.Add(prfx + "k_aprasymas_4_12", "Atstumas nuo iešmo, m");
            }
            else
            {
                bkdata.Add(prfx + "k_aprasymas_4_12", ""); // neturėtų būti
            }
            // xx.xxxx.xx.xx.X
            // iešme
            if (b == 8 || b == 9)
            {
                bkdata.Add(prfx + "k_aprasymas_5_1", "------------");
            }
            // ne iešme
            else if (f == 0)
            {
                bkdata.Add(prfx + "k_aprasymas_5_1", "Kairioji siūlė");
            }
            // ne iešme
            else if (f == 9)
            {
                bkdata.Add(prfx + "k_aprasymas_5_1", "Dešinioji siūlė");
            }
            else
            {
                bkdata.Add(prfx + "k_aprasymas_5_1", ""); // neturėtų būti
            }
            return(bkdata);
        }