157 lines
8.0 KiB
C#
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++;
|
|
}
|
|
|
|
}
|
|
}
|