Completata procedura recupero dati x VERO dipendente selezionato (manca il ciclo x tutti i dipendenti ora...)

This commit is contained in:
Samuele Locatelli
2016-02-24 15:32:26 +01:00
parent 9137f28b9a
commit c644ad69d4
7 changed files with 112 additions and 22 deletions
+84 -19
View File
@@ -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 = "<br />";
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 += "<div style=\"background-color: #0A64A4; margin-bottom: 0.2em; color: #DEDEDE; 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>", 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 = "<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... se ci sono task assegnati!!!
if (true)
{
progSett += "<table>";
progSett += "<tr><td colspan=\"2\" style=\"border-bottom: 1px solid black;\">22.02.16 <b>Lunedì</b></td><td></td></tr>";
progSett += "<tr><td><b>0232-2014</b> Ispra 103</td><td><b>80088</b></td></tr>";
progSett += "<tr><td>0073-2015 La Spezia ospedale</td><td><b>84400</b></td></tr>";
progSett += aCapo + aCapo;
progSett += "<tr><td colspan=\"2\" style=\"border-bottom: 1px solid black;\">23.02.16 <b>Martedì</b></td><td></td></tr>";
progSett += "<tr><td>0073-2015 La Spezia ospedale</td><td><b>84400</b></td></tr>";
progSett += "<tr><td></td><td></td></tr>";
progSett += "</table>";
}
// compongo la programmazione settimanale utente... EVENTUALMENTE CON GIORNI VUOTI!!!
corpoEmail += progSett + aCapo + aCapo;
corpoEmail += "<i>" + utils.obj.confReadString("emailBaz_body_Firma") + "</i>";
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
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();
/// <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>";
// 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>
/// 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>&nbsp;<b>{1}</b></td></tr>", utils.trimChar(rigaComm.label, 40), riga.SchemaWeek);
}
// aggiungo spaziatura
answ += "<br/><br/>";
return answ;
}
#endregion
Binary file not shown.
+24 -1
View File
@@ -671,7 +671,7 @@ namespace ETS_Data
/// </summary>
/// <param name="stringaIn"></param>
/// <returns></returns>
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);
}
/// <summary>
/// restituisce la prima data della settimana richiesta
/// </summary>
/// <param name="year"></param>
/// <param name="weekOfYear"></param>
/// <returns></returns>
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);
}
}
}
+3 -1
View File
@@ -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
@@ -715,7 +715,7 @@ namespace PROJ_ETS.WebUserControls
/// <returns></returns>
public string trimChar(object stringaIn, object maxChar)
{
return utils.obj.trimChar(stringaIn, maxChar);
return utils.trimChar(stringaIn, maxChar);
}
/// <summary>
Binary file not shown.
Binary file not shown.