Example #1
0
 public bool SameVietaAs(WeldingInspection other)
 {
     return(Linija == other.Linija &&
            Kelias == other.Kelias &&
            Km == other.Km &&
            Pk == other.Pk &&
            M == other.M &&
            Siule == other.Siule);
 }
Example #2
0
        private static List <string> VerifyById(WeldingInspection wi, OleDbCommand cmd)
        {
            // prieš updateinant ne pirmuosius patikrinimus,
            // patikrina ar operatoriaus įrašytas suvirinimas yra duomenų bazėje ir ar duomenys teisingi;
            // grąžina neatitikimų sąrašą.
            cmd.CommandText = "SELECT * FROM ssd WHERE number = @id";
            cmd.Parameters.Clear();
            cmd.Parameters.AddWithValue("@id", wi.Id);
            List <string> problems;

            using (OleDbDataReader reader = cmd.ExecuteReader())
            {
                problems = verifyRecord(wi, reader);
            }
            return(problems);
        }
Example #3
0
        private static List <long> VerifyByVieta(WeldingInspection wi, OleDbCommand cmd)
        {
            // prieš insertinant pirmuosius suvirinimus, tikrina, ar yra duomenų bazėje su tokiu vietos kodu;
            // grąžina esamų suvirinimų su tokiu vietos kodu id sąrašą
            cmd.CommandText = "SELECT number FROM ssd WHERE Linia = @linija AND Kel = @kelias AND kilomrtras = @km AND piket = @pk AND metras = @m AND siule = @siule AND [saliginis kodas] IN ('06.4', '06.3');";
            cmd.Parameters.Clear();
            cmd.Parameters.AddWithValue("@linija", wi.Linija);
            cmd.Parameters.AddWithValue("@kelias", wi.Kelias);
            cmd.Parameters.AddWithValue("@km", wi.Km);
            DBUpdater.AddNullableParam(cmd.Parameters, wi.Pk, "@pk");
            DBUpdater.AddNullableParam(cmd.Parameters, wi.M, "@m");
            DBUpdater.AddNullableParam(cmd.Parameters, wi.Siule, "@siule");
            List <long> ids = new List <long>();

            using (OleDbDataReader reader = cmd.ExecuteReader())
            {
                while (reader.Read())
                {
                    ids.Add(Convert.ToInt64(reader[0]));
                }
            }
            return(ids);
        }
Example #4
0
        // iš Google Sheets data formato List<ILIst<Object>> padaro List<WeldingInspection>
        //   , o jeigu buvo rasta blogų duomenų, tuomet throw new BadDataException
        public static List <WeldingInspection> ConvertNepirmieji(List <IList <Object> > data, string[] mapping, string operatorius)
        {
            List <WeldingInspection> tikrinimaiList = new List <WeldingInspection>();
            List <BadData>           badDataList    = new List <BadData>();

            if (data == null || data.Count == 0)
            {
                return(tikrinimaiList);
            }
            foreach (var row in data)
            {
                object value;                        // row stulpelio value
                int    bdlCount = badDataList.Count; // kiek buvo BadData šitos row tikrinimo pradžioje

                long     id = 0;
                string   linija = null, salKodas = null, aparatas = null;
                int      kelias = -1, km = -1, m = -1;
                int?     pk = null, siule = null;
                DateTime tikrinimoData = DateTime.MinValue;
                Kelintas kelintas      = Kelintas.I;

                // specifinis nepirmiesiems
                value = getRowItem("id", mapping, row);
                string idZyma = value == null ? "no id" : value.ToString(); // žyma, pažymėti, kurioje vietoje problemos
                try
                {
                    id = Convert.ToInt64(value);
                }
                catch
                {
                    badDataList.Add(new BadData(operatorius, SheetType.nepirmieji, idZyma, "suvirinimo id"));
                }

                // tikrinami bendri pirmiems ir nepirmiems
                List <string> messages = patikrintiBendrus(row, mapping,
                                                           ref linija, ref kelias, ref km, ref pk, ref m, ref siule,
                                                           ref salKodas, ref aparatas, ref tikrinimoData);

                foreach (string message in messages)
                {
                    badDataList.Add(new BadData(operatorius, SheetType.nepirmieji, idZyma, message));
                }

                // specifinis nepirmiems
                value = getRowItem("kelintas_tikrinimas", mapping, row);
                if (isEmpty(value) || !new[] { "2", "3", "4", "papild" }.Contains(value.ToString().Trim()))
                {
                    badDataList.Add(new BadData(operatorius, SheetType.nepirmieji, idZyma, "kelintas tikrinimas"));
                }
                else
                {
                    string val = value.ToString().Trim();
                    switch (val)
                    {
                    case "2":
                        kelintas = Kelintas.II;
                        break;

                    case "3":
                        kelintas = Kelintas.III;
                        break;

                    case "4":
                        kelintas = Kelintas.IV;
                        break;

                    case "papild":
                        kelintas = Kelintas.papildomas;
                        break;
                    }
                }

                // jeigu tikrinant šitą row nebuvo aptikta problemų - new WeldingInspection
                if (bdlCount == badDataList.Count)
                {
                    WeldingInspection wi = new WeldingInspection(
                        id,
                        linija, kelias, km, pk, m, siule,
                        salKodas,
                        operatorius,
                        aparatas,
                        tikrinimoData.Date,
                        null, // suvirino
                        kelintas);
                    tikrinimaiList.Add(wi);
                }
            }

            if (badDataList.Count > 0)
            {
                throw new BadDataException("Blogi duomenys lentelėje - nepavyksta perskaityti vietos kodo", badDataList);
            }

            // jeigu visi įrašai geri
            return(tikrinimaiList);
        }
Example #5
0
        // iš Google Sheets data formato List<ILIst<Object>> padaro List<WeldingInspection>
        //   , o jeigu buvo rasta blogų duomenų, tuomet throw new BadDataException
        public static List <WeldingInspection> ConvertPirmieji(List <IList <Object> > data, string[] mapping, string operatorius)
        {
            List <WeldingInspection> tikrinimaiList = new List <WeldingInspection>();
            List <BadData>           badDataList    = new List <BadData>();
            string ifas = Properties.Settings.Default.Ifas;

            if (data == null || data.Count == 0)
            {
                return(tikrinimaiList);
            }
            foreach (var row in data)
            {
                object value;
                int    bdlCount = badDataList.Count; // kiek buvo BadData šitos row tikrinimo pradžioje

                string   linija = null, salKodas = null, aparatas = null, suvirino = null;
                int      kelias = -1, km = -1, m = -1;
                int?     pk = null, siule = null;
                DateTime tikrinimoData = DateTime.MinValue;

                // žyma, nurodyti, kurioje vietoje problemos
                string vietosKodoSurogatas = dataRowToVietosKodas(row, mapping);

                // tikrinami bendri pirmiems ir nepirmiems
                List <string> messages = patikrintiBendrus(row, mapping,
                                                           ref linija, ref kelias, ref km, ref pk, ref m, ref siule,
                                                           ref salKodas, ref aparatas, ref tikrinimoData);

                foreach (string message in messages)
                {
                    badDataList.Add(new BadData(operatorius, SheetType.pirmieji, vietosKodoSurogatas, message));
                }

                // specifinis pirmiesiems
                value = getRowItem("suvirino", mapping, row);
                if (isEmpty(value))
                {
                    badDataList.Add(new BadData(operatorius, SheetType.pirmieji, vietosKodoSurogatas, "kas suvirino"));
                }
                else
                {
                    suvirino = value.ToString().Trim();
                }

                //// specifinis pirmiesiems
                //if (kelias != -1 && kelias != 8 && pk == null)
                //{
                //    badDataList.Add(new BadData(operatorius, SheetType.pirmieji, vietosKodoSurogatas, "pk"));
                //}

                // specifinis pirmiesiems
                if ((kelias == 8 || kelias == 9) && siule != null)
                {
                    badDataList.Add(new BadData(operatorius, SheetType.pirmieji, vietosKodoSurogatas, "suvirinimas iešme, o nurodyta siūlė"));
                }

                // jeigu tikrinant šitą row nebuvo aptikta problemų - new WeldingInspection
                if (bdlCount == badDataList.Count)
                {
                    WeldingInspection wi = new WeldingInspection(
                        null,     // id
                        linija, kelias, km, pk, m, siule,
                        salKodas,
                        operatorius,
                        aparatas,
                        tikrinimoData.Date,
                        suvirino,
                        Kelintas.I);
                    tikrinimaiList.Add(wi);
                }
            }

            if (badDataList.Count > 0)
            {
                throw new BadDataException("Blogi duomenys lentelėse - nepavyksta perskaityti vietos kodo", badDataList);
            }

            // jeigu visi įrašai geri
            return(tikrinimaiList);
        }
Example #6
0
        /// <summary>
        /// Tikrina operatoriaus siūlomo WeldingInspection ir duomenų bazėje esančio įrašo laukus -
        /// lygina, ar vieni laukai sutampa ir ar kitų laukų reikšmės realios
        /// </summary>
        /// <param name="wi">operatoriaus siūlomo WeldingInspection</param>
        /// <param name="reader">iš duomenų bazės gautas įrašas</param>
        /// <returns></returns>
        private static List <string> verifyRecord(WeldingInspection wi, OleDbDataReader reader)
        {
            List <string> problems = new List <string>();

            if (reader.Read())
            {
                if (reader["Linia"].ToString() != wi.Linija)
                {
                    problems.Add("neatitinka vietos kodas (Linia)");
                }

                if (Convert.ToInt32(reader["Kel"]) != wi.Kelias)
                {
                    problems.Add("neatitinka vietos kodas (Kel)");
                }

                if (Convert.ToInt32(reader["kilomrtras"]) != wi.Km)
                {
                    problems.Add("neatitinka vietos kodas (kilomrtras)");
                }

                if (intFieldNotEqProp(reader["piket"], wi.Pk))
                {
                    problems.Add("neatitinka vietos kodas (piket)");
                }

                if (intFieldNotEqProp(reader["metras"], wi.M))
                {
                    problems.Add("neatitinka vietos kodas (metras)");
                }

                if (intFieldNotEqProp(reader["siule"], wi.Siule))
                {
                    problems.Add("neatitinka vietos kodas (siule)");
                }

                if (reader["saliginis kodas"].ToString() != wi.SalygKodas) // nereikia tikrinti null,  nes db yra privalomas
                {
                    problems.Add(string.Format("DB esantis sąlyginis kodas {0} neatitinka siūlomo sąlyginio kodo {1}",
                                               reader["saliginis kodas"], wi.SalygKodas));
                }

                if (wi.KelintasTikrinimas != Kelintas.papildomas)
                {
                    string patDataField = "", formerPatDataField = "", nextPatDataField = "";
                    switch (wi.KelintasTikrinimas)
                    {
                    case Kelintas.II:
                        patDataField       = "II_pat_data";
                        formerPatDataField = "I_pat_data";
                        nextPatDataField   = "III_pat_data";
                        break;

                    case Kelintas.III:
                        patDataField       = "III_pat_data";
                        formerPatDataField = "II_pat_data";
                        nextPatDataField   = "IV_pat_data";
                        break;

                    case Kelintas.IV:
                        patDataField       = "IV_pat_data";
                        formerPatDataField = "III_pat_data";
                        break;
                    }

                    // patDataField turi būti tuščias
                    if (reader[patDataField] != null && reader[patDataField].ToString() != string.Empty)
                    {
                        problems.Add(string.Format("{0} tikrinimas jau atliktas.", wi.KelintasTikrinimas));
                    }
                    // formerPatDataField turi būti netuščias
                    else if (reader[formerPatDataField] == null || reader[formerPatDataField].ToString() == string.Empty)
                    {
                        problems.Add(string.Format("neatliktas ankstesnis patikrinimas ({0} tuščias)", formerPatDataField));
                    }
                    // nextPatDataField turi būti tuščias.
                    // Čia būtų arba db duomenų klaida - rodytų, kad šitas tikrinimas dar neatliktas, bet atliktas vėlesnis,
                    // arba įrašas būtų pažymėtas kaip panaikintas (tuomet surašomos visų tikrinimų fake datos), bet nepakeistas sąlyginis kodas į x.6?
                    else if (nextPatDataField != "" && reader[nextPatDataField] != null && reader[nextPatDataField].ToString() != string.Empty)
                    {
                        problems.Add(string.Format("įrašyta, kad jau atliktas vėlesnis patikrinimas ({0} netuščias)", nextPatDataField));
                    }
                    // formerPatDataField turi būti ankstesnis už wi.Data
                    else if (Convert.ToDateTime(reader[formerPatDataField]) > wi.TikrinimoData)
                    {
                        problems.Add(string.Format("ankstesnis patikrinimas {0} atliktas vėliau ({1:d}) negu dabar siūlomas {2} ({3:d}).",
                                                   formerPatDataField, reader[formerPatDataField], patDataField, wi.TikrinimoData));
                    }
                }
            }
            else
            {
                problems.Add("įrašas nerastas DB");
            }

            return(problems);
        }