diff --git a/ETS_Data/DataProxy_ProjEts.cs b/ETS_Data/DataProxy_ProjEts.cs index 42c8b15..3729180 100644 --- a/ETS_Data/DataProxy_ProjEts.cs +++ b/ETS_Data/DataProxy_ProjEts.cs @@ -190,45 +190,110 @@ namespace ETS_Data bool answ = false; int inviate = 0; string oggettoEmail = utils.obj.confReadString("emailBaz_subject"); + string fromEmail = utils.obj.confReadString("_fromEmail"); string aCapo = "
"; string corpoEmail = ""; string progSett = ""; - string fromEmail = utils.obj.confReadString("_fromEmail"); + int idxDipendente = 0; + Ds_ProjEts.DipendentiRow rigaDip; + // leggo tutte commesse ed i dipendenti... + tabComm = DataProxy_ProjEts.DP.taSelCom.GetData(); + tabDip = DataProxy_ProjEts.DP.taDip.GetData(); + // ciclo su TUTTI i dipendenti inseriti come risorse in bazaar - corpoEmail += "
PROJ-ETS
"; - corpoEmail += string.Format(utils.obj.confReadString("emailBaz_body_Head") + " {1:00}/{0}", anno, settimana) + aCapo + aCapo; + // test: invio forzato sett 9, dip 5 !!! + idxDipendente = 5; + settimana = 9; + + rigaDip = (Ds_ProjEts.DipendentiRow)tabDip.Select(string.Format("idxDipendente={0}", idxDipendente))[0]; + 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... se ci sono task assegnati!!! - if (true) - { - progSett += ""; - progSett += ""; - progSett += ""; - progSett += ""; - progSett += aCapo + aCapo; - progSett += ""; - progSett += ""; - progSett += ""; - progSett += "
22.02.16 Lunedì
0232-2014 Ispra 10380088
0073-2015 La Spezia ospedale84400
23.02.16 Martedì
0073-2015 La Spezia ospedale84400
"; - } + // compongo la programmazione settimanale utente... EVENTUALMENTE CON GIORNI VUOTI!!! - corpoEmail += progSett + aCapo + aCapo; - corpoEmail += "" + utils.obj.confReadString("emailBaz_body_Firma") + ""; + progSett = getAgendDip(idxDipendente, anno, settimana); + + corpoEmail += progSett; + corpoEmail += "" + utils.obj.confReadString("emailBaz_body_Firma") + ""; try { // invio email con link + resoconto breve impegno settimanale - ETS_Data.utils.gestEmail.geAuth.mandaEmail(fromEmail, "samuele@steamware.net", oggettoEmail, corpoEmail); + utils.gestEmail.geAuth.mandaEmail(fromEmail, "samuele@steamware.net", oggettoEmail, corpoEmail); inviate++; } catch { } + + answ = inviate > 0; // controlla che ALMENO 1 email sia stata inviata... return answ; } + protected Ds_ProjEts.BazaarRisorseDataTable tabBazSingle = new Ds_ProjEts.BazaarRisorseDataTable(); + protected DS_utilsProjEts.v_selCommesseDataTable tabComm = new DS_utilsProjEts.v_selCommesseDataTable(); + protected Ds_ProjEts.DipendentiDataTable tabDip = new Ds_ProjEts.DipendentiDataTable(); + /// + /// 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; + } + /// + /// 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, 40), riga.SchemaWeek); + } + // aggiungo spaziatura + answ += "

"; + + return answ; + } + #endregion diff --git a/ETS_Data/bin/Release/ETS_Data.dll b/ETS_Data/bin/Release/ETS_Data.dll index 638f499..e97b85e 100644 Binary files a/ETS_Data/bin/Release/ETS_Data.dll and b/ETS_Data/bin/Release/ETS_Data.dll differ diff --git a/ETS_Data/utils.cs b/ETS_Data/utils.cs index f8a2179..bcf43ce 100644 --- a/ETS_Data/utils.cs +++ b/ETS_Data/utils.cs @@ -671,7 +671,7 @@ namespace ETS_Data /// /// /// - public string trimChar(object stringaIn, object maxChar) + public static string trimChar(object stringaIn, object maxChar) { string answ = ""; int maxNum = 0; @@ -1117,5 +1117,28 @@ namespace ETS_Data var day = (int)CultureInfo.CurrentCulture.Calendar.GetDayOfWeek(date); return CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(date.AddDays(4 - (day == 0 ? 7 : day)), CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday); } + /// + /// restituisce la prima data della settimana richiesta + /// + /// + /// + /// + public static DateTime FirstDateOfWeekISO8601(int year, int weekOfYear) + { + DateTime jan1 = new DateTime(year, 1, 1); + int daysOffset = DayOfWeek.Thursday - jan1.DayOfWeek; + + DateTime firstThursday = jan1.AddDays(daysOffset); + var cal = CultureInfo.CurrentCulture.Calendar; + int firstWeek = cal.GetWeekOfYear(firstThursday, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday); + + var weekNum = weekOfYear; + if (firstWeek <= 1) + { + weekNum -= 1; + } + var result = firstThursday.AddDays(weekNum * 7); + return result.AddDays(-3); + } } } diff --git a/PROJ-ETS/PROJ-ETS/Task/Execute.aspx.cs b/PROJ-ETS/PROJ-ETS/Task/Execute.aspx.cs index 990c9f6..dd146d4 100644 --- a/PROJ-ETS/PROJ-ETS/Task/Execute.aspx.cs +++ b/PROJ-ETS/PROJ-ETS/Task/Execute.aspx.cs @@ -48,8 +48,10 @@ namespace PROJ_ETS.Task string answ = "NA"; int anno = DateTime.Now.Year; int sett = datario.WeekOfYearISO8601(DateTime.Now); + + bool force = utils.obj.QSB("force"); // verifico che NON sia stata inviata email x settimana corrente... - if (DataProxy_ProjEts.DP.taLEB.getByWeek(anno, sett).Rows.Count == 0) + if (DataProxy_ProjEts.DP.taLEB.getByWeek(anno, sett).Rows.Count == 0 || force) { // invio email try diff --git a/PROJ-ETS/PROJ-ETS/WebUserControls/mod_weekPlan.ascx.cs b/PROJ-ETS/PROJ-ETS/WebUserControls/mod_weekPlan.ascx.cs index fd23f53..3c2113a 100644 --- a/PROJ-ETS/PROJ-ETS/WebUserControls/mod_weekPlan.ascx.cs +++ b/PROJ-ETS/PROJ-ETS/WebUserControls/mod_weekPlan.ascx.cs @@ -715,7 +715,7 @@ namespace PROJ_ETS.WebUserControls /// public string trimChar(object stringaIn, object maxChar) { - return utils.obj.trimChar(stringaIn, maxChar); + return utils.trimChar(stringaIn, maxChar); } /// diff --git a/PROJ-ETS/PROJ-ETS/bin/ETS_Data.dll b/PROJ-ETS/PROJ-ETS/bin/ETS_Data.dll index 638f499..e97b85e 100644 Binary files a/PROJ-ETS/PROJ-ETS/bin/ETS_Data.dll and b/PROJ-ETS/PROJ-ETS/bin/ETS_Data.dll differ diff --git a/PROJ-ETS/PROJ-ETS/bin/PROJ-ETS.dll b/PROJ-ETS/PROJ-ETS/bin/PROJ-ETS.dll index 7ec45fd..786043a 100644 Binary files a/PROJ-ETS/PROJ-ETS/bin/PROJ-ETS.dll and b/PROJ-ETS/PROJ-ETS/bin/PROJ-ETS.dll differ