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 } }