public bool SameVietaAs(WeldingInspection other) { return(Linija == other.Linija && Kelias == other.Kelias && Km == other.Km && Pk == other.Pk && M == other.M && Siule == other.Siule); }
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); }
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); }
// 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); }
// 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); }
/// <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); }