using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; using System.Xml; using XMLExtractor; namespace XMLExtractor { public class Section { public string id { get; set; } public int idCapitolo { get; set; } public int idSezione { get; set; } public static void writeSection(XmlNode attribute, List tagList, string nextTag, Data data) { //ReadXML.idPagina = 1; foreach (XmlNode attr in attribute.ChildNodes) if (!tagList.Contains(attr.Name.ToString())) { Section section = new Section(); section.id = attr.InnerText; section.idCapitolo = ReadXML.idCapitolo; section.idSezione = ReadXML.idSezione; data.sectionList.Add(section); } else ReadXML.extractTag(attr, "pagina"); ReadXML.idSezione++; } public void writeDB(SqlConnection conn, Data data, TemplateStrutturaModelli templateStrutturaModelli) { // Le sezioni di Immobiliare Monitoraggio su DB partono da 201 (compreso) // I dati sono estratti dallXML con indice che parte da 1 int rowsUpdatedInserted = 0; //conn.Open(); SqlCommand updInsCommand; SqlCommand cmdCount = new SqlCommand("SELECT count(*) from Sezioni WHERE ID = @ID", conn); cmdCount.Parameters.AddWithValue("@ID", Utility.CHIAVE_LAYOUT_SECTION + 200); int count = (int)cmdCount.ExecuteScalar(); // Se esiste, faccio l'update, altrimenti creo una nuova riga if (count > 0) updInsCommand = new SqlCommand("UPDATE Sezioni SET Descrizione = @descrizione WHERE ID = @ID", conn); else updInsCommand = new SqlCommand("INSERT into Sezioni (ID, Descrizione) VALUES (@ID, @Descrizione)", conn); string Descrizione = "S" + Utility.CHIAVE_LAYOUT_SECTION/*this.idCapitolo*/ + "." + this.id + ".MonitoraggioImmobiliare"; updInsCommand.Parameters.AddWithValue("@ID", Utility.CHIAVE_LAYOUT_SECTION + 200); updInsCommand.Parameters.AddWithValue("@Descrizione", Descrizione); rowsUpdatedInserted = updInsCommand.ExecuteNonQuery(); //if (rowsUpdatedInserted != 0) // this.idSezione = Utility.CHIAVE_LAYOUT_SECTION + 200; templateStrutturaModelli.idSezione = Utility.CHIAVE_LAYOUT_SECTION + 200; Chapter chapter = (Chapter) data.chapterList.AsEnumerable().FirstOrDefault(x => x.idCapitolo == this.idCapitolo); if (chapter != null) { //chapter.idCapitolo = this.idSezione; chapter.writeDB(conn, templateStrutturaModelli); } if (rowsUpdatedInserted > 0) writeChiaveLayoutDB(conn, data, templateStrutturaModelli); Utility.CHIAVE_LAYOUT_SECTION++; } // Scrive in ClassiLayout le chiavi layout dei Capitoli public void writeChiaveLayoutDB(SqlConnection conn, Data data, TemplateStrutturaModelli templateStrutturaModelli) { Chapter chapter = (Chapter) data.chapterList.AsEnumerable().FirstOrDefault(x => x.idCapitolo == this.idCapitolo); SqlCommand updInsCommand; SqlCommand cmdCount = new SqlCommand("SELECT count(*) from ClassiLayout WHERE IdChiaveLayout = @idChiaveLayout", conn); cmdCount.Parameters.AddWithValue("@idChiaveLayout", Utility.CHIAVE_LAYOUT_SECTION + 3500); // INSERT STATEMENT updInsCommand = new SqlCommand("INSERT into ClassiLayout (IdChiaveLayout, Classe, Namespace, Descrizione) VALUES (@idChiaveLayout, " + "@classe, @NameSpace, @Descrizione)", conn); // idChiaveLayout parte da 526 => 'Immobiliare Monitoraggio' //updInsCommand.Parameters.AddWithValue("@ID", Convert.ToInt32(new SqlCommand("SELECT MAX(ID) FROM Report", conn).ExecuteScalar())); updInsCommand.Parameters.AddWithValue("@IdChiaveLayout", Utility.CHIAVE_LAYOUT_SECTION + 3500); if (!chapter.titoloCapitolo.Contains("Indice")) { updInsCommand.Parameters.AddWithValue("@classe", "S" + Utility.CHIAVE_LAYOUT_SECTION); updInsCommand.Parameters.AddWithValue("@NameSpace", "Consulenza.ReportWriter.Manager.Section.Immobiliare.Monitoraggio"); updInsCommand.Parameters.AddWithValue("@Descrizione", "S" + Utility.CHIAVE_LAYOUT_SECTION + "." + chapter.titoloCapitolo + " - Immobiliare Monitoraggio"); } else { updInsCommand.Parameters.AddWithValue("@classe", "S" + chapter.idCapitolo); updInsCommand.Parameters.AddWithValue("@NameSpace", "Consulenza.ReportWriter.Manager.Section.Immobiliare.Monitoraggio"); updInsCommand.Parameters.AddWithValue("@Descrizione", "S" + chapter.idCapitolo + "." + chapter.titoloCapitolo + " - Immobiliare Monitoraggio"); } int rowsUpdatedInserted = updInsCommand.ExecuteNonQuery(); templateStrutturaModelli.sezioneChiaveLayout = Utility.CHIAVE_LAYOUT_SECTION + 3500; } } }