348 lines
16 KiB
C#
348 lines
16 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
|
|
namespace ETS_Data
|
|
{
|
|
/// <summary>
|
|
/// classe proxy dati x PROJ-ETS
|
|
/// </summary>
|
|
public class DataProxy_ProjEts
|
|
{
|
|
/* Ds_ProjEts */
|
|
|
|
#region Protected Fields
|
|
|
|
protected Ds_ProjEts.BazaarRisorseDataTable tabBazSingle = new Ds_ProjEts.BazaarRisorseDataTable();
|
|
protected DS_utilsProjEts.v_selCommesseDataTable tabComm = new DS_utilsProjEts.v_selCommesseDataTable();
|
|
protected Ds_ProjEts.Dip2ATRDataTable tabD2ATR = new Ds_ProjEts.Dip2ATRDataTable();
|
|
protected Ds_ProjEts.DipendentiDataTable tabDip = new Ds_ProjEts.DipendentiDataTable();
|
|
|
|
#endregion Protected Fields
|
|
|
|
#region Public Fields
|
|
|
|
/// <summary>
|
|
/// Singleton accesso a DataProxy
|
|
/// </summary>
|
|
public static DataProxy_ProjEts DP = new DataProxy_ProjEts();
|
|
|
|
public Ds_ProjEtsTableAdapters.AnagCommFasiTableAdapter taACF;
|
|
public Ds_ProjEtsTableAdapters.AnagFasiTableAdapter taAF;
|
|
public Ds_ProjEtsTableAdapters.AnagLabelsTableAdapter taAL;
|
|
public Ds_ProjEtsTableAdapters.AnagProgettiTableAdapter taAP;
|
|
public Ds_ProjEtsTableAdapters.AnagTipoRisorseTableAdapter taATR;
|
|
public Ds_ProjEtsTableAdapters.BazaarRisorseTableAdapter taBaz;
|
|
public Ds_ProjEtsTableAdapters.BdgtRisorseFasiTableAdapter taBRF;
|
|
public Ds_ProjEtsTableAdapters.Dip2ATRTableAdapter taD2ATR;
|
|
public Ds_ProjEtsTableAdapters.DatiCommessaTableAdapter taDC;
|
|
public Ds_ProjEtsTableAdapters.DatiCommFornTableAdapter taDCF;
|
|
public Ds_ProjEtsTableAdapters.DatiCommIntegTableAdapter taDCI;
|
|
public Ds_ProjEtsTableAdapters.DipendentiTableAdapter taDip;
|
|
public DS_utilsProjEtsTableAdapters.v_FattureETSTableAdapter taFattETS;
|
|
public Ds_ProjEtsTableAdapters.ImpiegoRisorseTableAdapter taIR;
|
|
public Ds_ProjEtsTableAdapters.LabelsCommTableAdapter taL2C;
|
|
public Ds_ProjEtsTableAdapters.LogEmailBazTableAdapter taLEB;
|
|
public Ds_ProjEtsTableAdapters.ReleasedWeekTableAdapter taReW;
|
|
public DS_utilsProjEtsTableAdapters.v_selClientiTableAdapter taSelCli;
|
|
public DS_utilsProjEtsTableAdapters.v_selCommesseTableAdapter taSelCom;
|
|
public DS_utilsProjEtsTableAdapters.v_selFornitoriClaTableAdapter taSelForn;
|
|
public DS_utilsProjEtsTableAdapters.v_selProgettiTableAdapter taSelPro;
|
|
public Ds_ProjEtsTableAdapters.TimbratureExplTableAdapter taTE;
|
|
public Ds_ProjEtsTableAdapters.TLockBazRATableAdapter taTLB;
|
|
public Ds_ProjEtsTableAdapters.v_CommessaTableAdapter taVComm;
|
|
|
|
#endregion Public Fields
|
|
|
|
/* DS_utilsProjEts */
|
|
|
|
#region Protected Constructors
|
|
|
|
protected DataProxy_ProjEts()
|
|
{
|
|
initTA();
|
|
setupConnectionStringBase();
|
|
}
|
|
|
|
#endregion Protected Constructors
|
|
|
|
#region Public Properties
|
|
|
|
/// <summary>
|
|
/// idxDipendente in sessione
|
|
/// </summary>
|
|
public static int idxDipendente
|
|
{
|
|
get
|
|
{
|
|
int idx = 0;
|
|
try
|
|
{
|
|
idx = utils.obj.IntSessionObj("IdxDipendente");
|
|
}
|
|
catch
|
|
{ }
|
|
return idx;
|
|
}
|
|
set
|
|
{
|
|
utils.obj.setSessionVal("idxDipendente", value);
|
|
}
|
|
}
|
|
|
|
#endregion Public Properties
|
|
|
|
#region Protected Methods
|
|
|
|
/// <summary>
|
|
/// Formatta blocco impegno x dipendente x una specifica data
|
|
/// </summary>
|
|
/// <param name="idxDipendente">identificativo dipendente</param>
|
|
/// <param name="anno">anno di riferimento</param>
|
|
/// <param name="sett">settimana desiderata</param>
|
|
/// <param name="shiftDay">shift (add) da applicare con base lunedì (0..4)</param>
|
|
/// <returns></returns>
|
|
protected string getAgendByDate(int idxDipendente, int anno, int sett, int shiftDay)
|
|
{
|
|
// variabili
|
|
string answ = "";
|
|
DS_utilsProjEts.v_selCommesseRow rigaComm;
|
|
|
|
// parto dal lunedì della sett indicata!
|
|
DateTime dataRif = datario.FirstDateOfWeekISO8601(anno, sett);
|
|
dataRif = dataRif.AddDays(shiftDay);
|
|
|
|
// inserisco intestazione con data
|
|
answ += string.Format("<tr><td colspan=\"2\" style=\"border-bottom: 1px solid black; font-size: 1.2em;\">{0:dd.MM.yyyy} <b>{0:dddd}</b></td><td></td></tr>", dataRif).ToUpper();
|
|
|
|
// recupero tutte le assegnazioni x la giornata indicata (cerco alla posizione shiftDay se è != 0)
|
|
Ds_ProjEts.BazaarRisorseRow[] commGG = (Ds_ProjEts.BazaarRisorseRow[])tabBazSingle.Select(string.Format("SUBSTRING(SchemaWeek, {0}, 1) <> 0", shiftDay + 1));
|
|
foreach (Ds_ProjEts.BazaarRisorseRow riga in commGG)
|
|
{
|
|
// recupero dati commessa...
|
|
rigaComm = (DS_utilsProjEts.v_selCommesseRow)tabComm.Select(string.Format("value = {0}", riga.idxFase))[0];
|
|
answ += string.Format("<tr><td>{0}</td><td> <b>{1}</b></td></tr>", utils.trimChar(rigaComm.label, utils.obj.confReadInt("maxCharNomeComm")), riga.SchemaWeek);
|
|
}
|
|
// aggiungo spaziatura
|
|
answ += "<br/><br/>";
|
|
|
|
return answ;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Formatta blocco impegni del dipendente x la settimana indicata
|
|
/// </summary>
|
|
/// <param name="idxDipendente">identificativo dipendente</param>
|
|
/// <param name="anno">anno di riferimento</param>
|
|
/// <param name="sett">settimana desiderata</param>
|
|
/// <returns></returns>
|
|
protected string getAgendDip(int idxDipendente, int anno, int sett)
|
|
{
|
|
//default
|
|
string answ = "";
|
|
// inizio a comporre tabella utente
|
|
answ += "<table style=\"width: 100%;\">";
|
|
// recupero i dati x il dipendente corrente...
|
|
tabBazSingle = DataProxy_ProjEts.DP.taBaz.getByAnnoSettDip(anno, sett, idxDipendente);
|
|
// compongo la settimana a partire dalla data richiesta...
|
|
for (int i = 0; i < 5; i++)
|
|
{
|
|
answ += getAgendByDate(idxDipendente, anno, sett, i);
|
|
}
|
|
answ += "</table>";
|
|
// restituisco risultato
|
|
return answ;
|
|
}
|
|
|
|
/// <summary>
|
|
/// init dei table adapters
|
|
/// </summary>
|
|
protected void initTA()
|
|
{
|
|
taACF = new Ds_ProjEtsTableAdapters.AnagCommFasiTableAdapter();
|
|
taAF = new Ds_ProjEtsTableAdapters.AnagFasiTableAdapter();
|
|
taAL = new Ds_ProjEtsTableAdapters.AnagLabelsTableAdapter();
|
|
taAP = new Ds_ProjEtsTableAdapters.AnagProgettiTableAdapter();
|
|
taATR = new Ds_ProjEtsTableAdapters.AnagTipoRisorseTableAdapter();
|
|
taDC = new Ds_ProjEtsTableAdapters.DatiCommessaTableAdapter();
|
|
taDCF = new Ds_ProjEtsTableAdapters.DatiCommFornTableAdapter();
|
|
taDCI = new Ds_ProjEtsTableAdapters.DatiCommIntegTableAdapter();
|
|
taBRF = new Ds_ProjEtsTableAdapters.BdgtRisorseFasiTableAdapter();
|
|
taBaz = new Ds_ProjEtsTableAdapters.BazaarRisorseTableAdapter();
|
|
taD2ATR = new Ds_ProjEtsTableAdapters.Dip2ATRTableAdapter();
|
|
taDip = new Ds_ProjEtsTableAdapters.DipendentiTableAdapter();
|
|
taIR = new Ds_ProjEtsTableAdapters.ImpiegoRisorseTableAdapter();
|
|
taL2C = new Ds_ProjEtsTableAdapters.LabelsCommTableAdapter();
|
|
taLEB = new Ds_ProjEtsTableAdapters.LogEmailBazTableAdapter();
|
|
taReW = new Ds_ProjEtsTableAdapters.ReleasedWeekTableAdapter();
|
|
taTE = new Ds_ProjEtsTableAdapters.TimbratureExplTableAdapter();
|
|
taTLB = new Ds_ProjEtsTableAdapters.TLockBazRATableAdapter();
|
|
taVComm = new Ds_ProjEtsTableAdapters.v_CommessaTableAdapter();
|
|
taSelCli = new DS_utilsProjEtsTableAdapters.v_selClientiTableAdapter();
|
|
taSelPro = new DS_utilsProjEtsTableAdapters.v_selProgettiTableAdapter();
|
|
taSelCom = new DS_utilsProjEtsTableAdapters.v_selCommesseTableAdapter();
|
|
taSelForn = new DS_utilsProjEtsTableAdapters.v_selFornitoriClaTableAdapter();
|
|
taFattETS = new DS_utilsProjEtsTableAdapters.v_FattureETSTableAdapter();
|
|
}
|
|
|
|
/// <summary>
|
|
/// effettua setup dei connection strings da web.config delal singola applicazione
|
|
/// </summary>
|
|
protected virtual void setupConnectionStringBase()
|
|
{
|
|
// connections del db
|
|
taACF.Connection.ConnectionString = utils.obj.confReadString("ETS_PROJConnectionString");
|
|
taAF.Connection.ConnectionString = utils.obj.confReadString("ETS_PROJConnectionString");
|
|
taAL.Connection.ConnectionString = utils.obj.confReadString("ETS_PROJConnectionString");
|
|
taAP.Connection.ConnectionString = utils.obj.confReadString("ETS_PROJConnectionString");
|
|
taATR.Connection.ConnectionString = utils.obj.confReadString("ETS_PROJConnectionString");
|
|
taDC.Connection.ConnectionString = utils.obj.confReadString("ETS_PROJConnectionString");
|
|
taDCF.Connection.ConnectionString = utils.obj.confReadString("ETS_PROJConnectionString");
|
|
taDCI.Connection.ConnectionString = utils.obj.confReadString("ETS_PROJConnectionString");
|
|
taBRF.Connection.ConnectionString = utils.obj.confReadString("ETS_PROJConnectionString");
|
|
taBaz.Connection.ConnectionString = utils.obj.confReadString("ETS_PROJConnectionString");
|
|
taD2ATR.Connection.ConnectionString = utils.obj.confReadString("ETS_PROJConnectionString");
|
|
taDip.Connection.ConnectionString = utils.obj.confReadString("ETS_PROJConnectionString");
|
|
taIR.Connection.ConnectionString = utils.obj.confReadString("ETS_PROJConnectionString");
|
|
taL2C.Connection.ConnectionString = utils.obj.confReadString("ETS_PROJConnectionString");
|
|
taLEB.Connection.ConnectionString = utils.obj.confReadString("ETS_PROJConnectionString");
|
|
taReW.Connection.ConnectionString = utils.obj.confReadString("ETS_PROJConnectionString");
|
|
taTE.Connection.ConnectionString = utils.obj.confReadString("ETS_PROJConnectionString");
|
|
taTLB.Connection.ConnectionString = utils.obj.confReadString("ETS_PROJConnectionString");
|
|
taVComm.Connection.ConnectionString = utils.obj.confReadString("ETS_PROJConnectionString");
|
|
taSelCli.Connection.ConnectionString = utils.obj.confReadString("ETS_PROJConnectionString");
|
|
taSelPro.Connection.ConnectionString = utils.obj.confReadString("ETS_PROJConnectionString");
|
|
taSelCom.Connection.ConnectionString = utils.obj.confReadString("ETS_PROJConnectionString");
|
|
taSelForn.Connection.ConnectionString = utils.obj.confReadString("ETS_PROJConnectionString");
|
|
taFattETS.Connection.ConnectionString = utils.obj.confReadString("ETS_PROJConnectionString");
|
|
}
|
|
|
|
#endregion Protected Methods
|
|
|
|
#region Public Methods
|
|
|
|
public string CognomeNomeByIdx(int idxDip)
|
|
{
|
|
string answ = "";
|
|
#if false
|
|
try
|
|
{
|
|
DS_Applicazione.DipendentiRow rigaDip = taDipendenti.getByIdx(idxDip)[0];
|
|
answ = string.Format("{0} {1}", rigaDip.Cognome, rigaDip.Nome);
|
|
}
|
|
catch
|
|
{ }
|
|
#endif
|
|
return answ;
|
|
}
|
|
|
|
/// <summary>
|
|
/// calcola se una commessa sia attiva (da idxFase)
|
|
/// </summary>
|
|
/// <param name="idxFase"></param>
|
|
/// <returns></returns>
|
|
public bool commessaAttiva(int idxFase)
|
|
{
|
|
bool answ = false;
|
|
try
|
|
{
|
|
answ = taAF.getByIdx(idxFase)[0].Attivo;
|
|
}
|
|
catch
|
|
{ }
|
|
return answ;
|
|
}
|
|
|
|
/// <summary>
|
|
/// effettua export su GPW dei singoli dipendenti delle ore programmate x la settimana indicata
|
|
/// </summary>
|
|
/// <param name="anno">anno</param>
|
|
/// <param name="settimana">num settimana 1-53</param>
|
|
/// <param name="UsernameAD">Utente che congela la settimana</param>
|
|
/// <returns></returns>
|
|
public bool esportaBazaarSuGPW(int anno, int settimana, string UsernameAD)
|
|
{
|
|
bool answ = false;
|
|
try
|
|
{
|
|
taBaz.copy2GPW(anno, settimana, UsernameAD);
|
|
answ = true;
|
|
}
|
|
catch
|
|
{ }
|
|
return answ;
|
|
}
|
|
|
|
/// <summary>
|
|
/// invia email ai singoli dipendenti delle ore programmate x la settimana indicata con link a bazaar
|
|
/// </summary>
|
|
/// <param name="anno">anno</param>
|
|
/// <param name="settimana">num settimana 1-53</param>
|
|
/// <returns></returns>
|
|
public bool inviaEmailBazaar(int anno, int settimana)
|
|
{
|
|
bool answ = false;
|
|
int inviate = 0;
|
|
string oggettoEmail = utils.obj.confReadString("emailBaz_subject");
|
|
string fromEmail = utils.obj.confReadString("_fromEmail");
|
|
string toEmail = "";
|
|
string aCapo = "<br />";
|
|
string corpoEmail = "";
|
|
string progSett = "";
|
|
int idxDipendente = 0;
|
|
// leggo tutte commesse ed i dipendenti...
|
|
tabComm = DataProxy_ProjEts.DP.taSelCom.GetData();
|
|
tabDip = DataProxy_ProjEts.DP.taDip.GetData();
|
|
tabD2ATR = DataProxy_ProjEts.DP.taD2ATR.getBazOrd(true);
|
|
Ds_ProjEts.DipendentiRow rigaDip;
|
|
|
|
// ciclo su TUTTI i dipendenti inseriti come risorse in bazaar
|
|
foreach (Ds_ProjEts.Dip2ATRRow riga in tabD2ATR)
|
|
{
|
|
idxDipendente = riga.idxDipendente;
|
|
rigaDip = (Ds_ProjEts.DipendentiRow)tabDip.Select(string.Format("idxDipendente={0}", idxDipendente))[0];
|
|
|
|
// se sono in testing resetto email a mia...
|
|
if (utils.obj.confReadBool("testMode"))
|
|
{
|
|
toEmail = utils.obj.confReadString("stdEmail");
|
|
}
|
|
else
|
|
{
|
|
toEmail = rigaDip.email;
|
|
}
|
|
|
|
corpoEmail = "<div style=\"background-color: #0A64A4; margin-bottom: 0.2em; color: #FDFDFD; text-align: center; font-size: 2em; font-weight: bold; width: 100%;\">PROJ-ETS</div>";
|
|
corpoEmail += string.Format(utils.obj.confReadString("emailBaz_body_Head") + " <b>{1:00}/{0}</b> - {2} {3}", anno, settimana, rigaDip.Cognome, rigaDip.Nome) + aCapo + aCapo;
|
|
corpoEmail += string.Format(@"<a href='{0}/Bazaar'>{1}</a>", utils.obj.confReadString("baseUrl"), utils.obj.confReadString("emailBaz_body_Link"));
|
|
corpoEmail += aCapo + aCapo;
|
|
// compongo la programmazione settimanale utente... EVENTUALMENTE CON GIORNI VUOTI!!!
|
|
|
|
progSett = getAgendDip(idxDipendente, anno, settimana);
|
|
|
|
corpoEmail += progSett;
|
|
corpoEmail += "<i style=\"color: #696969;\">" + utils.obj.confReadString("emailBaz_body_Firma") + "</i>";
|
|
try
|
|
{
|
|
// invio email con link + resoconto breve impegno settimanale
|
|
utils.gestEmail.geAuth.mandaEmail(fromEmail, toEmail, oggettoEmail, corpoEmail);
|
|
inviate++;
|
|
}
|
|
catch
|
|
{ }
|
|
|
|
if (utils.obj.confReadBool("testMode") && inviate > 5)
|
|
{
|
|
answ = true;
|
|
return answ;
|
|
}
|
|
}
|
|
|
|
answ = inviate > 0; // controlla che ALMENO 1 email sia stata inviata...
|
|
return answ;
|
|
}
|
|
|
|
#endregion Public Methods
|
|
}
|
|
} |