using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ETS_Data
{
///
/// classe proxy dati x PROJ-ETS
///
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
///
/// Singleton accesso a DataProxy
///
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
///
/// idxDipendente in sessione
///
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
///
/// Formatta blocco impegno x dipendente x una specifica data
///
/// identificativo dipendente
/// anno di riferimento
/// settimana desiderata
/// shift (add) da applicare con base lunedì (0..4)
///
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("
| {0:dd.MM.yyyy} {0:dddd} | |
", 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("| {0} | {1} |
", utils.trimChar(rigaComm.label, utils.obj.confReadInt("maxCharNomeComm")), riga.SchemaWeek);
}
// aggiungo spaziatura
answ += "
";
return answ;
}
///
/// Formatta blocco impegni del dipendente x la settimana indicata
///
/// identificativo dipendente
/// anno di riferimento
/// settimana desiderata
///
protected string getAgendDip(int idxDipendente, int anno, int sett)
{
//default
string answ = "";
// inizio a comporre tabella utente
answ += "";
// 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 += "
";
// restituisco risultato
return answ;
}
///
/// init dei table adapters
///
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();
}
///
/// effettua setup dei connection strings da web.config delal singola applicazione
///
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;
}
///
/// calcola se una commessa sia attiva (da idxFase)
///
///
///
public bool commessaAttiva(int idxFase)
{
bool answ = false;
try
{
answ = taAF.getByIdx(idxFase)[0].Attivo;
}
catch
{ }
return answ;
}
///
/// effettua export su GPW dei singoli dipendenti delle ore programmate x la settimana indicata
///
/// anno
/// num settimana 1-53
/// Utente che congela la settimana
///
public bool esportaBazaarSuGPW(int anno, int settimana, string UsernameAD)
{
bool answ = false;
try
{
taBaz.copy2GPW(anno, settimana, UsernameAD);
answ = true;
}
catch
{ }
return answ;
}
///
/// invia email ai singoli dipendenti delle ore programmate x la settimana indicata con link a bazaar
///
/// anno
/// num settimana 1-53
///
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 = "
";
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 = "PROJ-ETS
";
corpoEmail += string.Format(utils.obj.confReadString("emailBaz_body_Head") + " {1:00}/{0} - {2} {3}", anno, settimana, rigaDip.Cognome, rigaDip.Nome) + aCapo + aCapo;
corpoEmail += string.Format(@"{1}", 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 += "" + utils.obj.confReadString("emailBaz_body_Firma") + "";
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
}
}