157 lines
8.0 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Reflection;
using System.Data.SqlClient;
using XMLExtractor;
namespace XMLExtractor
{
public class Chapter {
public string id { get; set; }
public int idCapitolo { get; set; }
public string titoloCapitolo { get; set; }
// Scrive Tabella capitoli e Paragrafi (vuoti)
public void writeDB(SqlConnection conn, TemplateStrutturaModelli templateStrutturaModelli)
{
// I capitoli di Immobiliare Monitoraggio su DB partono da 201
// I paragrafi di Immobiliare Monitoraggio su DB partono da 201
// I dati sono estratti dallXML con indice che parte da 1
int rowsUpdatedInserted = 0;
string[] stringvalue = new string[2]{ "Capitoli", "Paragrafi"};
foreach (var value in stringvalue)
{
SqlCommand updInsCommand;
SqlCommand cmdCount = new SqlCommand("SELECT count(*) from " + value + " WHERE ID = @ID", conn);
cmdCount.Parameters.AddWithValue("@ID", Utility.CHIAVE_LAYOUT_CHAPTER + 200);
int count = (int)cmdCount.ExecuteScalar();
string command = ((count > 0) ? "UPDATE " : "INSERT INTO ") + value + " ";
// Se esiste, faccio l'update, altrimenti creo una nuova riga
if (count > 0)
command += "SET Descrizione = @descrizione WHERE ID = @ID";
else
command += value.Equals("Capitoli") ? "(ID, Descrizione, RipetiOgniPagina) VALUES (@ID, @Descrizione, 1)" :
"(ID, Nome, Descrizione) VALUES (@ID, @Nome, @Descrizione)"/*, WHERE ID = @ID"*/;
updInsCommand = new SqlCommand(command);
string Descrizione = "S" + Utility.CHIAVE_LAYOUT_CHAPTER + "." + this.titoloCapitolo + ".MonitoraggioImmobiliare";
updInsCommand.Parameters.AddWithValue("@ID", Utility.CHIAVE_LAYOUT_CHAPTER + 200);//this.idCapitolo + 200);
if (value.Equals("Capitoli"))
{
updInsCommand.Parameters.AddWithValue("@Descrizione", Descrizione);
templateStrutturaModelli.idCapitolo = Utility.CHIAVE_LAYOUT_CHAPTER + 200;//this.idCapitolo + 200;
}
else
{
updInsCommand.Parameters.AddWithValue("@Nome", Descrizione);
updInsCommand.Parameters.AddWithValue("@Descrizione", "ParagrafoVuoto");
templateStrutturaModelli.idParagrafo = Utility.CHIAVE_LAYOUT_CHAPTER + 200;//this.idCapitolo + 200;
}
updInsCommand.Connection = conn;
rowsUpdatedInserted = updInsCommand.ExecuteNonQuery();
if (rowsUpdatedInserted > 0 && value.Equals("Capitoli"))
writeTestiDB(conn, templateStrutturaModelli);
}
Utility.CHIAVE_LAYOUT_CHAPTER++;
}
// Scrive in TestiCapitoli
public void writeTestiDB(SqlConnection conn, TemplateStrutturaModelli templateStrutturaModelli)
{
SqlCommand updInsCommand;
SqlCommand cmdCount = new SqlCommand("SELECT count(*) from TestiCapitoli WHERE IdCapitolo = @ID", conn);
cmdCount.Parameters.AddWithValue("@ID", Utility.CHIAVE_LAYOUT_CHAPTER + 200);//this.idCapitolo + 200);
int count = (int)cmdCount.ExecuteScalar();
// Se esiste, faccio l'update, altrimenti creo una nuova riga
if (count > 0)
{
// UPDATE STATEMENT
updInsCommand = new SqlCommand("UPDATE TestiCapitoli SET ID = @ID, IdReport = 11, idCapitolo = @idCapitolo, Testo1 = @testo1 WHERE IdCapitolo = " + this.idCapitolo + 124, conn);
}
else
{
// INSERT STATEMENT
updInsCommand = new SqlCommand("INSERT into TestiCapitoli (ID, IdReport, idCapitolo, Testo1) VALUES (@ID, 11, @idCapitolo, @testo1)", conn);
}
// ID Report = 11 => 'Immobiliare Monitoraggio'
updInsCommand.Parameters.AddWithValue("@ID", Convert.ToInt32(new SqlCommand("SELECT MAX(ID) FROM TestiCapitoli", conn).ExecuteScalar()) + 1);
updInsCommand.Parameters.AddWithValue("@idCapitolo", Utility.CHIAVE_LAYOUT_CHAPTER + 200);//this.idCapitolo + 200);
updInsCommand.Parameters.AddWithValue("@testo1", this.titoloCapitolo);
int rowsUpdatedInserted = updInsCommand.ExecuteNonQuery();
if (rowsUpdatedInserted > 0)
writeChiaveLayoutDB(conn, templateStrutturaModelli);
}
// Scrive in ClassiLayout le chiavi layout dei Capitoli
public void writeChiaveLayoutDB(SqlConnection conn, TemplateStrutturaModelli templateStrutturaModelli)
{
SqlCommand updInsCommand;
SqlCommand cmdCount = new SqlCommand("SELECT count(*) from ClassiLayout WHERE IdChiaveLayout = @idChiaveLayout", conn);
cmdCount.Parameters.AddWithValue("@idChiaveLayout", Utility.CHIAVE_LAYOUT_CHAPTER + 3000);//this.idCapitolo + 3000);
updInsCommand = new SqlCommand("INSERT into ClassiLayout (IdChiaveLayout, Classe, Namespace, Descrizione) VALUES (@idChiaveLayout, "
+ "@classe, @NameSpace, @Descrizione)", conn);
if (!this.titoloCapitolo.Contains("Indice"))
{
updInsCommand.Parameters.AddWithValue("@IdChiaveLayout", Utility.CHIAVE_LAYOUT_CHAPTER + 3000);//this.idCapitolo + 3000);
updInsCommand.Parameters.AddWithValue("@classe", "S" + Utility.CHIAVE_LAYOUT_CHAPTER);//this.idCapitolo);
updInsCommand.Parameters.AddWithValue("@NameSpace", "Consulenza.ReportWriter.Manager.Chapter.Immobiliare.Monitoraggio");
updInsCommand.Parameters.AddWithValue("@Descrizione", "S" + Utility.CHIAVE_LAYOUT_CHAPTER + "." + this.titoloCapitolo + " - Immobiliare Monitoraggio");
}
else
{
updInsCommand.Parameters.AddWithValue("@IdChiaveLayout", Utility.CHIAVE_LAYOUT_CHAPTER + 3000);//this.idCapitolo + 3000);
updInsCommand.Parameters.AddWithValue("@classe", "S" + this.idCapitolo);//this.idCapitolo);
updInsCommand.Parameters.AddWithValue("@NameSpace", "Consulenza.ReportWriter.Manager.Chapter.Immobiliare.Monitoraggio");
updInsCommand.Parameters.AddWithValue("@Descrizione", "S" + this.idCapitolo + "." + this.titoloCapitolo + " - Immobiliare Monitoraggio");
}
templateStrutturaModelli.capitoloChiaveLayout = Utility.CHIAVE_LAYOUT_CHAPTER + 3000;////this.idCapitolo + 3000;
int rowsUpdatedInserted = updInsCommand.ExecuteNonQuery();
}
public List<string> getProperties()
{
List<string> properties = new List<string>();
ChartMediaDeiPrezzi objectChart = new ChartMediaDeiPrezzi();
foreach (var prop in objectChart.GetType().GetProperties())
{
properties.Add(prop.Name.ToLower());
}
properties.Remove("idcapitolo");
return properties;
}
public static void writeChapter(XmlNode attribute, List<string> tagList, string nextTag, Data data)
{
Chapter chapter = new Chapter();
foreach (XmlNode attr in attribute.ChildNodes)
if (!tagList.Contains(attr.Name.ToString())) {
PropertyInfo propertyInfo = chapter.GetType().GetProperty(attr.Name);
propertyInfo.SetValue(chapter, Convert.ChangeType(attr.InnerText, propertyInfo.PropertyType), null);
}
else
ReadXML.extractTag(attr, nextTag);
chapter.idCapitolo = ReadXML.idCapitolo;
data.chapterList.Add(chapter);
chapter = new Chapter();
ReadXML.idCapitolo++;
}
}
}