public static GlobalRelationStrut CreaGlobalRelationStrutGrezze(List <RelationT> relazioni) { GlobalRelationStrut Gstrut = new GlobalRelationStrut(); if (relazioni == null) { return(Gstrut = null); } try { foreach (var rel in relazioni) { //IEnumerable<RelationStrut> ExistRelationStrut = Gstrut.GlobalRelazioni.Where(x => x.ID == rel.IdentificativoRelazione); bool trovato = false; foreach (var Rstrut in Gstrut.GlobalRelazioni) { if (Rstrut.ID == rel.IdentificativoRelazione) { trovato = true; Rstrut.Relazioni.Add(rel); continue; } } if (trovato == false) { RelationStrut RStrut = new RelationStrut(); RStrut.ID = rel.IdentificativoRelazione; RStrut.Relazioni.Add(rel); Gstrut.GlobalRelazioni.Add(RStrut); } } } catch (Exception exp) { Logger.PrintLC("Error filtering relations list. Error:" + exp.Message, 3, ConfigFile.ERROR); return(Gstrut = null); } return(Gstrut); }
public static GlobalRelationStrut CleanGlobalRelationStrut(GlobalRelationStrut GStrut) { try { List <RelationStrut> errorRelationStrut = new List <RelationStrut>(); //verifica tutte le strutture foreach (RelationStrut RStrut in GStrut.GlobalRelazioni) { if (RStrut.Relazioni.Count != 1) { //verifica singola struttura string tabellapadreverifica = null; string tabellafigliaverifica = null; int? cardinalitaverifica = null; int? identificativaverifica = null; bool? tiporelazioneverifica = null; List <string> campopadreverifica = new List <string>(); List <string> campofiglioverifica = new List <string>(); int contatore = 0; bool errore = false; foreach (RelationT R in RStrut.Relazioni) { if (contatore == 0) { tabellapadreverifica = R.TabellaPadre; tabellafigliaverifica = R.TabellaFiglia; cardinalitaverifica = R.Cardinalita; identificativaverifica = R.Identificativa; tiporelazioneverifica = R.TipoRelazione; campopadreverifica.Add(R.CampoPadre); campofiglioverifica.Add(R.CampoFiglio); } else { if (tabellapadreverifica != R.TabellaPadre || tabellafigliaverifica != R.TabellaFiglia || cardinalitaverifica != R.Cardinalita || identificativaverifica != R.Identificativa || tiporelazioneverifica != R.TipoRelazione) { errore = true; //PUNTO IN CUI ANDARE A SCRIVERE SULL'EXCEL ALLA RIGA APPROPRIATA R.History = "Relazione ignorata: ID " + RStrut.ID + " presenta valori diversi per uno o più dei seguenti campi: tabella padre, tabella figlia, cardinalità, identificativa e tipo relazione"; Logger.PrintLC("Relazione ignorata: ID " + RStrut.ID + " presenta valori diversi per uno o più dei seguenti campi: tabella padre, tabella figlia, cardinalità, identificativa e tipo relazione", 3, ConfigFile.ERROR); continue; } if (campopadreverifica.Contains(R.CampoPadre) || campofiglioverifica.Contains(R.CampoFiglio)) { errore = true; R.History = "Relazione ignorata: ID " + RStrut.ID + " campo padre e/o campo figlio duplicati all'interno della relazione"; Logger.PrintLC("Relazione ignorata: ID " + RStrut.ID + " campo padre e/o campo figlio duplicati all'interno della relazione", 3, ConfigFile.ERROR); continue; } else { campopadreverifica.Add(R.CampoPadre); campofiglioverifica.Add(R.CampoFiglio); } } contatore += 1; } if (errore == true) { errorRelationStrut.Add(RStrut); } } } foreach (var errore in errorRelationStrut) { RelationStrut mystrut = GStrut.GlobalRelazioni.Find(x => x == errore); if (mystrut != null) { foreach (RelationT R in mystrut.Relazioni) { RelationT comodo = mystrut.Relazioni.Find(x => !string.IsNullOrEmpty(x.History)); if (comodo != null) { if (string.IsNullOrEmpty(R.History)) { R.History = comodo.History; } } } } } } catch { // } return(GStrut); }