103 lines
5.4 KiB
C#

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<string> 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;
}
}
}