321 lines
12 KiB
C#
321 lines
12 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.Text;
|
||
using System.Data;
|
||
using System.Text.RegularExpressions;
|
||
using DataAccessLayer;
|
||
|
||
namespace PDFGenerator.BusinessLayer.DataSection
|
||
{
|
||
public class ClsFunzioniGeneriche
|
||
{
|
||
//=================================================
|
||
|
||
private static StructColor[] _sc;
|
||
public static StructColor[] Colors
|
||
{
|
||
get
|
||
{
|
||
if (_sc == null)
|
||
_sc = GetColori();
|
||
return _sc;
|
||
}
|
||
}
|
||
|
||
private static StructColor[] GetColori()
|
||
{
|
||
|
||
StructColor[] sc = null;
|
||
|
||
DataAccessDE dataAccess = new DataAccessDE(DBProvider.SqlServerStampeC6);
|
||
DataTable dt = dataAccess.ExecuteDataTableStoredProcedure(DBProvider.SqlServerStampeC6, "sp_getColors", null);
|
||
|
||
if (dt != null)
|
||
if (dt.Rows.Count > 0)
|
||
{
|
||
sc = new StructColor[dt.Rows.Count + 1];
|
||
|
||
//usiamo il primo slot per il colore da usare in caso di failure...
|
||
sc[0].Blue = 0;
|
||
sc[0].Red = 0;
|
||
sc[0].Green = 0;
|
||
|
||
int i = 1;
|
||
|
||
foreach (DataRow dr in dt.Rows)
|
||
{
|
||
sc[i].Codice = dr["Codice"].ToString();
|
||
sc[i].Codice = sc[i].Codice.Trim();
|
||
sc[i].Tipo = dr["Tipo"].ToString();
|
||
sc[i].Blue = (Int16)dr["Blue"];
|
||
sc[i].Red = (Int16)dr["Red"];
|
||
sc[i].Green = (Int16)dr["Green"];
|
||
sc[i].Descrizione = dr["Descrizione Breve"].ToString();
|
||
i++;
|
||
}
|
||
}
|
||
|
||
|
||
|
||
return sc;
|
||
}
|
||
|
||
//============================================================
|
||
public static int findRightColors(StructColor toBeFound)
|
||
{
|
||
int foundIdx = 0;
|
||
for (int c = 1; c < ClsFunzioniGeneriche.Colors.Length; c++)
|
||
{
|
||
if ((ClsFunzioniGeneriche.Colors[c].Codice == toBeFound.Codice) && (ClsFunzioniGeneriche.Colors[c].Tipo == toBeFound.Tipo))
|
||
{
|
||
foundIdx = c;
|
||
break;
|
||
}
|
||
}
|
||
return foundIdx;
|
||
}
|
||
|
||
//public static bool GetPianificazioneAttivo(DataSectionParameter dataSectionParameter)
|
||
//{
|
||
|
||
// bool _pianificazioniAttiva = false;
|
||
// DataTable dt = SectionManager.GetDataSection("ClsFunzioniGeneriche_GetPianificazioneAttivo", dataSectionParameter);
|
||
|
||
// if (dt.Rows.Count > 0)
|
||
// _pianificazioniAttiva = true;
|
||
|
||
// return _pianificazioniAttiva;
|
||
//}
|
||
|
||
public static void AggiungiColonneDaContrattoSintesi(ref DataTable dt, DataTable dtContrattoSintesi)
|
||
{
|
||
|
||
if (!dt.Columns.Contains("TIPOPRODOTTO"))
|
||
{
|
||
DataColumn colTipoProdottoContrattoSintesi = new DataColumn("TIPOPRODOTTO", typeof(string));
|
||
dt.Columns.Add(colTipoProdottoContrattoSintesi);
|
||
}
|
||
|
||
if (!dt.Columns.Contains("DataSottoscrizione"))
|
||
{
|
||
DataColumn colDataSottoscrizione = new DataColumn("DataSottoscrizione", typeof(string));
|
||
dt.Columns.Add(colDataSottoscrizione);
|
||
}
|
||
|
||
if (!dt.Columns.Contains("RendimentoDaInizioAnno"))
|
||
{
|
||
DataColumn colRendimentoDaInizioAnno = new DataColumn("RendimentoDaInizioAnno", typeof(double));
|
||
dt.Columns.Add(colRendimentoDaInizioAnno);
|
||
}
|
||
|
||
if (!dt.Columns.Contains("RendimentoDaSottoscrizione"))
|
||
{
|
||
DataColumn colRendimentoDaSottoscrizione = new DataColumn("RendimentoDaSottoscrizione", typeof(double));
|
||
dt.Columns.Add(colRendimentoDaSottoscrizione);
|
||
}
|
||
if (!dt.Columns.Contains("CVN"))
|
||
{
|
||
DataColumn colCVN = new DataColumn("CVN", typeof(double));
|
||
dt.Columns.Add(colCVN);
|
||
}
|
||
|
||
if (!dt.Columns.Contains("PartitaViaggiante"))
|
||
{
|
||
DataColumn colPartitaViaggiante = new DataColumn("PartitaViaggiante", typeof(int));
|
||
dt.Columns.Add(colPartitaViaggiante);
|
||
}
|
||
|
||
StringBuilder expression = new StringBuilder();
|
||
|
||
if (dtContrattoSintesi != null)
|
||
{
|
||
foreach (DataRow rw in dtContrattoSintesi.Rows)
|
||
{
|
||
// codice contratto
|
||
expression.Append("(contratto like '");
|
||
expression.Append(rw["codiceContratto"].ToString());
|
||
expression.Append("%') and ");
|
||
|
||
// rw riga contenente i contratti
|
||
switch (rw["TIPOPRODOTTO"].ToString())
|
||
{
|
||
case "FI":
|
||
case "GE":
|
||
case "ASUL":
|
||
case "ASU1":
|
||
case "ASVI":
|
||
case "ASCM":
|
||
case "CC":
|
||
// Da confrontare: codice_Interno, codice_SottoProdotto
|
||
// codice interno
|
||
expression.Append("(CodiceInterno like '");
|
||
expression.Append(rw["codiceInterno"].ToString());
|
||
expression.Append("' ");
|
||
|
||
if (rw["codiceInterno"].ToString() == "")
|
||
expression.Append(" OR CodiceInterno is null ");
|
||
|
||
expression.Append(") AND ");
|
||
|
||
// codice_SottoProdotto
|
||
expression.Append("(codicesottoprodotto like '");
|
||
expression.Append(rw["codicesottoProdotto"].ToString());
|
||
expression.Append("' ");
|
||
|
||
if (rw["codicesottoProdotto"].ToString() == "")
|
||
expression.Append(" OR codicesottoprodotto is null ) ");
|
||
else
|
||
expression.Append(" ) ");
|
||
break;
|
||
|
||
|
||
case "DT":
|
||
// codice interno
|
||
expression.Append("(CodiceInterno like '");
|
||
expression.Append(rw["codiceInterno"].ToString());
|
||
expression.Append("%' ");
|
||
|
||
if (rw["codiceInterno"].ToString() == "")
|
||
expression.Append(" OR CodiceInterno is null ");
|
||
|
||
//expression.Append(") AND ");
|
||
|
||
//// codice_SottoProdotto
|
||
//if (dt.Columns.Contains("controvalore_attuale"))
|
||
// expression.Append("(controvalore_attuale = '");
|
||
//else
|
||
// expression.Append("(Controvalore = '");
|
||
|
||
//expression.Append(rw["ctv"].ToString().Replace(",","."));
|
||
//expression.Append("' ");
|
||
|
||
//if (rw["ctv"].ToString() == "")
|
||
// expression.Append(" OR Controvalore is null ) ");
|
||
//else
|
||
expression.Append(" ) ");
|
||
|
||
break;
|
||
|
||
case "ASD":
|
||
//codiceInterno
|
||
// codice interno
|
||
expression.Append("(CodiceInterno like '");
|
||
expression.Append(rw["codiceInterno"].ToString());
|
||
expression.Append("' ");
|
||
|
||
if (rw["codiceInterno"].ToString() == "")
|
||
expression.Append(" OR CodiceInterno is null) ");
|
||
else
|
||
expression.Append(" ) ");
|
||
|
||
break;
|
||
|
||
case "GES":
|
||
|
||
//codiceMAF
|
||
expression.Append("(codicemaf like '");
|
||
expression.Append(rw["codiceMaf"].ToString());
|
||
expression.Append("' ");
|
||
|
||
if (rw["codiceMaf"].ToString() == "")
|
||
expression.Append(" OR codicemaf is null ");
|
||
|
||
expression.Append(") AND ");
|
||
|
||
// codice interno
|
||
expression.Append("(CodiceInterno like '");
|
||
expression.Append(rw["codiceInterno"].ToString());
|
||
expression.Append("' ");
|
||
|
||
if (rw["codiceInterno"].ToString() == "")
|
||
expression.Append(" OR CodiceInterno is null ) ");
|
||
else
|
||
expression.Append(" ) ");
|
||
break;
|
||
|
||
|
||
}
|
||
|
||
DataRow[] drArray = dt.Select(expression.ToString());
|
||
|
||
if (drArray.Length > 0)
|
||
{
|
||
|
||
foreach (DataRow riga in drArray)
|
||
{
|
||
riga["TIPOPRODOTTO"] = rw["TIPOPRODOTTO"];
|
||
riga["DataSottoscrizione"] = rw["DatadiSottoscrizione"];
|
||
riga["RendimentoDaInizioAnno"] = rw["RendimentoDaInizioAnno"];
|
||
riga["RendimentoDaSottoscrizione"] = rw["RendimentoDaSottoscrizione"];
|
||
riga["CVN"] = rw["CVN"];
|
||
riga["PartitaViaggiante"] = rw["partvia"];
|
||
}
|
||
}
|
||
expression.Length = 0;
|
||
}
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Formatta l'indirizzo passato come parametro di input mettendo la prima lettera
|
||
/// di ciascuna parola maiuscola, lasciando l'eventuale numero romano con caratteri maiuscoli
|
||
/// </summary>
|
||
/// <param name="indirizzo"></param>
|
||
/// <returns></returns>
|
||
public static string FormattaIndirizzo(string indirizzo)
|
||
{
|
||
//V Uso dell'espressione regolare per catturare il problema sulle vie con numeri romani
|
||
// MAmi.CapitalizeText(GREGORIO VII) --> Gregorio Vii
|
||
|
||
string p1 = "^m*(d?c{0,3}|c[dm])"
|
||
+ "(l?x{0,3}|x[lc])(v?i{0,3}|i[vx])$";
|
||
string t1 = indirizzo.Trim();
|
||
|
||
string[] appoggio = t1.Split(' ');
|
||
FormatNum MAmi = new FormatNum();
|
||
Match m1 = null;
|
||
int k = -1;
|
||
for (int i = 0; i < appoggio.Length; ++i)
|
||
{
|
||
m1 = Regex.Match(appoggio[i].ToLower(), p1);
|
||
if (m1.Success && appoggio[i].ToUpper() != "DI")
|
||
k = i;
|
||
|
||
// D. 29/09/2009
|
||
// ho commentato la riga sotto per risolvere il problema di "VIA M.ROMITI, 68 RES.LE PIETRARE" per cui veniva la "r" di romiti e la "L" di "le pietrare"
|
||
// Per coerenza <20> stato scelto di mettere sia la "r" di romiti che la "l" di "le pietrare".
|
||
// Se si dovessero ricreare delle anomalie per casistiche non prese in considerazione ad oggi scommenatre il codice sotto.
|
||
|
||
//if (appoggio[i].Contains("."))
|
||
// k = i;
|
||
}
|
||
|
||
string the_address = string.Empty;
|
||
|
||
for (int i = 0; i < appoggio.Length; ++i)
|
||
if (i != k)
|
||
the_address += MAmi.CapitalizeText(appoggio[i]);
|
||
else
|
||
{
|
||
if (appoggio[i].Contains("."))
|
||
{
|
||
string[] split_punto = appoggio[i].Split('.');
|
||
for (int j = 0; j < split_punto.Length; ++j)
|
||
{
|
||
the_address += MAmi.CapitalizeText(split_punto[j]);
|
||
if (the_address.EndsWith(" "))
|
||
the_address = the_address.Remove(the_address.LastIndexOf(' '), 1);
|
||
if (j != split_punto.Length - 1)
|
||
the_address += ".";
|
||
}
|
||
the_address += " ";
|
||
}
|
||
else
|
||
the_address += appoggio[i].ToUpper() + " ";
|
||
}
|
||
|
||
return the_address.Trim();
|
||
}
|
||
}
|
||
}
|