351 lines
15 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using Consulenza.WebTemplateModeler.Entity;
using System.Data;
using System.Transactions;
using System.Net;
using System.Net.Sockets;
using System.Configuration;
namespace Consulenza.WebTemplateModeler
{
public class WebTemplateManager
{
public List<Modello> GetModelli() {
return getModelli();
}
public Modello GetModello(int idModello)
{
return getModello(idModello);
}
public Modello GetModello(int idModello, string codicePB)
{
Modello modello = getModello(idModello);
modello.Templates = getTemplates(idModello, codicePB);
return modello;
}
public List<Vincolo> GetVincoli(long chiave,long proposta, string modello)
{
List<Vincolo> vincoli = getVincoli(chiave,proposta, modello);
return vincoli;
}
public List<Vincolo> GetVincoliNoChiave(string codiceAgente, string codiceFiscale, string codiceMandato, string codiceRete, long proposta, string modello)
{
List<Vincolo> vincoli = getVincoliNoChiave(codiceAgente, codiceFiscale, codiceMandato, codiceRete, proposta, modello);
return vincoli;
}
public List<Template> GetTemplates(int idModello, string codicePB)
{
return getTemplates(idModello, codicePB);
}
public Template GetTemplate(int idTemplate, string isDefault)
{
Template template = getTemplate(idTemplate, isDefault);
template.Schede = getSchedeTemplate(idTemplate,isDefault);
return template;
}
public List<SchedaTemplate> GetSchedeTemplate(int idTemplate, string isDefault)
{
return getSchedeTemplate(idTemplate, isDefault);
}
public int SetTemplate(string nomeTemplate, string codicePB, int idModello, List<Option> opzTemplate, List<SchedaTemplate> schede)
{
return setTemplate(nomeTemplate, codicePB, idModello, opzTemplate, schede);
}
public int DelTemplate(int idTemplate) {
return delTemplate(idTemplate); }
private List<Modello> getModelli() {
List<Parametro> param = new List<Parametro>();
DataTable dt = DataAccess.ExecuteDataTableStoredProcedure(DBProvider.SqlServerWebTemplateReportModeler, "SEL_MODELLO", param);
return (from DataRow row in dt.Rows
select new Modello
{
Id = int.Parse(row["idModello"].ToString()),
Nome = row["nomeModello"].ToString(),
Rete = row["rete"].ToString(),
Options = Option.Format(row["opzModello"].ToString())
}).ToList<Modello>();
}
private Modello getModello(int idModello)
{
string ipPath = GetIPPath();
List<Parametro> param = new List<Parametro>();
param.Add(new Parametro { Value = idModello, ParameterName = "idModello" });
DataTable dt = DataAccess.ExecuteDataTableStoredProcedure(DBProvider.SqlServerWebTemplateReportModeler, "SEL_MODELLO", param);
string banca = dt.Rows[0]["banca"].ToString();
string rete = dt.Rows[0]["rete"].ToString().Trim();
Modello modello = new Modello
{
Id = int.Parse(dt.Rows[0]["idModello"].ToString()),
Nome = dt.Rows[0]["nomeModello"].ToString(),
Rete = rete,
Options = Option.Format(dt.Rows[0]["opzModello"].ToString().Replace("[BANCA]", banca))
};
modello.Schede = (from DataRow row in dt.Rows
select new Scheda
{
Id = int.Parse(row["idScheda"].ToString()),
NomeImmagine = ipPath + rete+ row["nomeImmagineScheda"].ToString(),
NumTab = int.Parse(row["numTab"].ToString()),
Sezioni = row["sezioni"].ToString(),
TestoHTML = row["testoHTML"].ToString().Replace("[BANCA]", banca),
Vincoli = Vincolo.Format(row["vincoli"].ToString()),
Options = Option.Format(row["opzScheda"].ToString().Replace("[BANCA]", banca))
}).ToList<Scheda>();
dt = DataAccess.ExecuteDataTableSqlStatement(DBProvider.SqlServerWebTemplateReportModeler, "SELECT * FROM tabs where idModello = " + modello.Id + " order by numTab asc", new List<Parametro>());
modello.Tabs = (from DataRow row in dt.Rows
select new Tabs
{
IdModello = int.Parse(row["idModello"].ToString()),
NumTab = int.Parse(row["NumTab"].ToString()),
Titolo = row["Titolo"].ToString().Replace("[BANCA]", banca)
}).ToList<Tabs>();
filtraSchede(modello.Schede);
return modello;
}
public List<Vincolo> getVincoli(long chiave,long proposta, string modello)
{
List<Vincolo> vincoli = new List<Vincolo>();
try
{
List<Parametro> param = new List<Parametro>();
param.Add(new Parametro { Value = chiave, ParameterName = "chiave" });
DataTable dt = DataAccess.ExecuteDataTableStoredProcedure(DBProvider.SqlServerConsulenzaUnica, "rep_vincoli_" + modello, param);
foreach (DataColumn dc in dt.Columns)
{
vincoli.Add(new Vincolo
{
Key = dc.ColumnName,
Value = dt.Rows[0][dc.ColumnName].ToString()
});
}
}
catch (Exception ex) {
}
return vincoli;
}
public List<Vincolo> getVincoliNoChiave(string codiceAgente, string codiceFiscale, string codiceMandato, string codiceRete, long proposta, string modello)
{
List<Vincolo> vincoli = new List<Vincolo>();
try
{
string querySQL = "SELECT * FROM vInfoCliente WHERE codFis = '" + codiceFiscale + "' AND codMan='" + codiceMandato + "' AND Agente = '" + codiceAgente + "' AND rete = '" + codiceRete + "'";
var dtChiave = DataAccess.ExecuteDataTableSqlStatement(DBProvider.SqlServerConsulenzaUnica, querySQL, null);
if (dtChiave.Rows.Count == 0)
{
querySQL = "SELECT * FROM vInfoCliente WHERE pIva = '" + codiceFiscale + "' AND codMan='" + codiceMandato + "' AND Agente = '" + codiceAgente + "' AND rete = '" + codiceRete + "'";
dtChiave = DataAccess.ExecuteDataTableSqlStatement(DBProvider.SqlServerConsulenzaUnica, querySQL, null);
}
var chiave = dtChiave.Rows[0]["chiaveclientePb"].ToString();
List<Parametro> param = new List<Parametro>();
param.Add(new Parametro { Value = chiave, ParameterName = "chiave" });
DataTable dt = DataAccess.ExecuteDataTableStoredProcedure(DBProvider.SqlServerConsulenzaUnica, "rep_vincoli_" + modello, param);
foreach (DataColumn dc in dt.Columns)
{
vincoli.Add(new Vincolo
{
Key = dc.ColumnName,
Value = dt.Rows[0][dc.ColumnName].ToString()
});
}
}
catch (Exception ex)
{
}
return vincoli;
}
private List<Template> getTemplates(int idModello, string codicePB)
{
List<Parametro> param = new List<Parametro>();
param.Add(new Parametro { Value = idModello, ParameterName = "idModello" });
param.Add(new Parametro { Value = codicePB, ParameterName = "codicePB" });
param.Add(new Parametro { Value = 0, ParameterName = "idTemplate" });
param.Add(new Parametro { Value = "", ParameterName = "isDefault" });
DataTable dt = DataAccess.ExecuteDataTableStoredProcedure(DBProvider.SqlServerWebTemplateReportModeler, "SEL_TEMPLATE", param);
return (from DataRow row in dt.Rows
select new Template
{
Id = int.Parse(row["idTemplate"].ToString()),
Nome = row["nomeTemplate"].ToString(),
CodicePb = row["codicePB"].ToString(),
IsDefault = row["Default"].ToString(),
IdModello = int.Parse(row["idModello"].ToString()),
Options = Option.Format(row["opzioni"].ToString())
}).ToList<Template>();
}
private Template getTemplate(int idTemplate, string isDefault)
{
List<Parametro> param = new List<Parametro>();
param.Add(new Parametro { Value = "", ParameterName = "idModello" });
param.Add(new Parametro { Value = "", ParameterName = "codicePB" });
param.Add(new Parametro { Value = idTemplate, ParameterName = "idTemplate" });
param.Add(new Parametro { Value = isDefault, ParameterName = "isDefault" });
DataTable dt = DataAccess.ExecuteDataTableStoredProcedure(DBProvider.SqlServerWebTemplateReportModeler, "SEL_TEMPLATE", param);
return (from DataRow row in dt.Rows
select new Template
{
Id = int.Parse(row["idTemplate"].ToString()),
Nome = row["nomeTemplate"].ToString(),
CodicePb = row["codicePB"].ToString(),
IsDefault = row["Default"].ToString(),
IdModello = int.Parse(row["idModello"].ToString()),
Options = Option.Format(row["opzioni"].ToString())
}).Last<Template>();
}
private List<SchedaTemplate> getSchedeTemplate(int idTemplate, string isDefault)
{
List<Parametro> param = new List<Parametro>();
param.Add(new Parametro { Value = idTemplate, ParameterName = "idTemplate" });
param.Add(new Parametro { Value = isDefault, ParameterName = "default" });
DataTable dt = DataAccess.ExecuteDataTableStoredProcedure(DBProvider.SqlServerWebTemplateReportModeler, "SEL_SCHEDETEMPLATE", param);
return (from DataRow row in dt.Rows
select new SchedaTemplate
{
Id = int.Parse(row["idSchede"].ToString()),
Options = Option.Format(row["opzioni"].ToString())
}).ToList<SchedaTemplate>();
}
private int setTemplate(string nomeTemplate, string codicePB, int idModello, List<Option> Options, List<SchedaTemplate> schede)
{
using (TransactionScope scope = new TransactionScope())
{
List<Parametro> pTemplate = new List<Parametro>();
pTemplate.Add(new Parametro { Value = nomeTemplate, ParameterName = "nomeTemplate" });
pTemplate.Add(new Parametro { Value = codicePB, ParameterName = "codicePB" });
pTemplate.Add(new Parametro { Value = idModello, ParameterName = "idModello" });
pTemplate.Add(new Parametro { Value = Option.Format(Options), ParameterName = "opzioni" });
int IdTemplate = (Int32)DataAccess.ExecuteScalarStoredProcedure(DBProvider.SqlServerWebTemplateReportModeler, "INS_TEMPLATE", pTemplate);
for (int i = 0; i < schede.Count; i++)
{
List<Parametro> pSchedeTemplate = new List<Parametro>();
pSchedeTemplate.Add(new Parametro { Value = IdTemplate, ParameterName = "idTemplate" });
pSchedeTemplate.Add(new Parametro { Value = schede[i].Id, ParameterName = "idSchede" });
pSchedeTemplate.Add(new Parametro { Value = (i + 1), ParameterName = "ordine" });
pSchedeTemplate.Add(new Parametro { Value = Option.Format(schede[i].Options), ParameterName = "opzioni" });
DataAccess.ExecuteScalarStoredProcedure(DBProvider.SqlServerWebTemplateReportModeler, "INS_SCHEDETEMPLATE", pSchedeTemplate);
}
scope.Complete();
return IdTemplate;
}
}
private int delTemplate(int idTemplate)
{
List<Parametro> pTemplate = new List<Parametro>();
pTemplate.Add(new Parametro { Value = idTemplate, ParameterName = "idTemplate" });
DataAccess.ExecuteNonQueryStoredProcedure(DBProvider.SqlServerWebTemplateReportModeler, "DEL_TEMPLATE", pTemplate);
return 1;
}
public static string GetIpHost()
{
string host = "???";
try
{
IPAddress[] ipv4Addresses = Array.FindAll(
Dns.GetHostEntry(string.Empty).AddressList,
a => a.AddressFamily == AddressFamily.InterNetwork);
host = ipv4Addresses[0].ToString();
switch (host) {
case "10.10.33.181":
host = "P1P2";
break;
case "10.14.152.9":
case "10.10.33.174":
host = "P1";
break;
case "10.14.152.29":
case "10.10.33.180":
host = "P2";
break;
case "10.10.33.169":
case "10.14.152.21":
host = "C";
break;
case "10.14.152.27":
host = "T";
break;
case "10.0.0.77":
host = "P2";
break;
default:
break;
}
}
catch {
host = "err";
}
return host;
}
public static string GetIPPath()
{
//IPAddress[] ipv4Addresses = Array.FindAll(
//Dns.GetHostEntry(string.Empty).AddressList,
//a => a.AddressFamily == AddressFamily.InterNetwork);
//return "http://" + ipv4Addresses[0].ToString() + "/Consulenza.Unica.Services/imgreport/";
return ConfigurationManager.AppSettings["UrlImageSchede"].ToString()+"/";
}
private void filtraSchede(List<Scheda> schede)
{
try
{
string[] dsezioni = ConfigurationManager.AppSettings["disableSchede"].ToString().Split(',');
foreach (string dsezione in dsezioni)
{
foreach (Scheda scheda in schede)
{
if (dsezione.Equals(scheda.Sezioni))
{
schede.Remove(scheda);
break;
}
}
}
}
catch { }
}
}
}