Files
2021-11-12 12:14:22 +01:00

733 lines
26 KiB
C#

using GPW_data;
using SteamWare;
using System;
using System.Globalization;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace GPW_Commesse.WebUserControls
{
/// <summary>
/// modalità ammesse per il controllo
/// </summary>
public enum modoCommesse
{
/// <summary>
/// elenco giornate e resoconto
/// </summary>
elenco,
/// <summary>
/// edit timbrature attivo
/// </summary>
editTimb,
/// <summary>
/// edit Registro Attività attivo
/// </summary>
editRegAtt,
/// <summary>
/// edit Rilievo Temperatura attivo
/// </summary>
editRilTemp,
/// <summary>
/// display ultimi check eseguiti
/// </summary>
showCheck
}
public partial class mod_commUtLog : BaseUserControl
{
#region Protected Properties
protected bool checkVisible
{
get
{
bool answ = false;
bool.TryParse(hfShowCheck.Value, out answ);
return answ;
}
set
{
hfShowCheck.Value = $"{value}";
}
}
/// <summary>
/// Determina se visualizzare entrambe le schede...
/// </summary>
protected bool openBoth
{
get
{
return cmp_toggle.toggleValue;
}
set
{
cmp_toggle.toggleValue = value;
}
}
protected bool tempVisible
{
get
{
bool answ = false;
bool.TryParse(hfTempVisible.Value, out answ);
return answ;
}
set
{
hfTempVisible.Value = $"{value}";
}
}
#endregion Protected Properties
#region Public Properties
public modoCommesse activeMode
{
get
{
modoCommesse answ = modoCommesse.elenco;
try
{
answ = (modoCommesse)memLayer.ML.objSessionObj("activeModeComm");
}
catch
{ }
return answ;
}
set
{
memLayer.ML.setSessionVal("activeModeComm", value);
}
}
public string cssClassProgetti
{
get
{
string answ = "";
if (openBoth)
{
answ = " d-inline-block text-truncate";
}
return answ;
}
}
/// <summary>
/// indica se sia abilitato l'editing delle attività legate alle commesse e l'utente sia attivo!!!
/// </summary>
public bool regAttEnabled
{
get
{
return memLayer.ML.confReadBool("regAttEnabled") && DataProxy.currDipIsActive && DataProxy.currDipHasPayloadActive;
}
}
#endregion Public Properties
#region Private Methods
private void closeEditTemp()
{
activeMode = modoCommesse.elenco;
grView.SelectedIndex = -1;
grView.DataBind();
tempVisible = false;
//showCharts(false);
showPanels();
raiseEvent(ucEvType.Reset);
}
private void closeShowCheck()
{
activeMode = modoCommesse.elenco;
grView.SelectedIndex = -1;
grView.DataBind();
tempVisible = false;
checkVisible = false;
showPanels();
raiseEvent(ucEvType.Reset);
}
private void Cmp_dailyCheck_ehCancel(object sender, EventArgs e)
{
closeShowCheck();
}
private void cmp_rilTemp_ehCancel(object sender, EventArgs e)
{
closeEditTemp();
}
private void cmp_rilTemp_ehSave(object sender, EventArgs e)
{
closeEditTemp();
}
private void Cmp_toggle_ehToggle(object sender, EventArgs e)
{
showPanels();
}
private void editCommDay(string dataRif)
{
CultureInfo ita = new CultureInfo("it-IT");
mod_commAttivitaDesk1.idxDipCurr = DataProxy.idxDipendente;
mod_commAttivitaDesk1.valoreDateTime = Convert.ToDateTime(dataRif, ita);
mod_TagCloudProgetti1.dataRif = Convert.ToDateTime(dataRif, ita);
//salvo in sessione dati x detail timbrature
memLayer.ML.setSessionVal("inizioDet", Convert.ToDateTime(dataRif, ita).Date);
memLayer.ML.setSessionVal("fineDet", Convert.ToDateTime(dataRif, ita).Date.AddDays(1));
memLayer.ML.setSessionVal("idxDip_det", DataProxy.idxDipendente);
// imposto modalità
activeMode = modoCommesse.editRegAtt;
showPanels();
mod_commAttivitaDesk1.doUpdate();
}
private void editTemp(string dataRif)
{
CultureInfo ita = new CultureInfo("it-IT");
cmp_rilTemp.dtRif = Convert.ToDateTime(dataRif, ita);
cmp_chart.dtRif = Convert.ToDateTime(dataRif, ita);
//salvo in sessione dati x detail timbrature
memLayer.ML.setSessionVal("idxDip_det", DataProxy.idxDipendente);
// imposto modalità
tempVisible = true;
activeMode = modoCommesse.editRilTemp;
showPanels();
raiseEvent(ucEvType.ReqUpdateParent);
}
private void editTimbr(string dataRif)
{
DateTime adesso = DateTime.Now;
CultureInfo ita = new CultureInfo("it-IT");
mod_commUtMancTimbr1.valoreDateTime = Convert.ToDateTime(dataRif, ita).AddHours(adesso.Hour).AddMinutes(adesso.Minute - adesso.Minute % 5);
//salvo in sessione dati x detail timbrature
memLayer.ML.setSessionVal("inizioDet", Convert.ToDateTime(dataRif, ita).Date);
memLayer.ML.setSessionVal("fineDet", Convert.ToDateTime(dataRif, ita).Date.AddDays(1));
memLayer.ML.setSessionVal("idxDip_det", DataProxy.idxDipendente);
// imposto modalità
activeMode = modoCommesse.editTimb;
showPanels();
}
private void mod_commAttivitaDesk1_eh_nuovoValore(object sender, EventArgs e)
{
mod_TagCloudProgetti1.doUpdate();
grView.DataBind();
}
private void mod_commUtMancTimbr1_eh_nuovoValore(object sender, EventArgs e)
{
grView.DataBind();
}
private void mod_periodoAnalisi1_eh_doUpdate(object sender, EventArgs e)
{
// 2016.04.07: salvo intervallo nei 2 hidden field
hfDataFrom.Value = mod_periodoAnalisi1.intervalloAnalisi.inizio.ToString();
hfDataTo.Value = mod_periodoAnalisi1.intervalloAnalisi.fine.ToString();
// update
mod_commAttivitaDesk1.doUpdate();
grView.DataBind();
showPanels();
}
private void mod_TagCloudProgetti1_eh_newVal(object sender, EventArgs e)
{
mod_commAttivitaDesk1.doUpdate();
grView.DataBind();
}
private void mod_TagCloudProgetti1_eh_refresh(object sender, EventArgs e)
{
mod_commAttivitaDesk1.doUpdate();
grView.DataBind();
}
private void showCheck(string dataRif)
{
CultureInfo ita = new CultureInfo("it-IT");
cmp_dailyCheck.dataFrom = Convert.ToDateTime(dataRif, ita).AddDays(-2);
cmp_dailyCheck.dataTo = Convert.ToDateTime(dataRif, ita).AddDays(1);
//salvo in sessione dati x detail timbrature
memLayer.ML.setSessionVal("idxDip_det", DataProxy.idxDipendente);
// imposto modalità
checkVisible = true;
activeMode = modoCommesse.showCheck;
showPanels();
raiseEvent(ucEvType.ReqUpdateParent);
}
#endregion Private Methods
#region Protected Methods
/// <summary>
/// chiamata del button close (entrambi)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnClose_Click(object sender, EventArgs e)
{
activeMode = modoCommesse.elenco;
showPanels();
grView.SelectedIndex = -1;
grView.DataBind();
}
/// <summary>
/// visualizzazione controlli C19
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void lbShowCheck_Click(object sender, EventArgs e)
{
string dataRif = ((LinkButton)sender).CommandArgument;
activeMode = modoCommesse.showCheck;
// verifico se dip sia attivo...
if (DataProxy.currDipIsActive && DataProxy.currDipHasPayloadActive)
{
showCheck(dataRif);
}
}
/// <summary>
/// edit temperatura rilevata
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void lbShowTemp_Click(object sender, EventArgs e)
{
string dataRif = ((LinkButton)sender).CommandArgument;
activeMode = modoCommesse.editRilTemp;
// verifico se dip sia attivo...
if (DataProxy.currDipIsActive && DataProxy.currDipHasPayloadActive)
{
editTemp(dataRif);
}
}
protected void lbtShowAll_Click(object sender, EventArgs e)
{
openBoth = true;
// mostra tutto su data corrente...
string dataRif = DateTime.Today.ToString("yyyy-MM-dd");
editTimbr(dataRif);
editCommDay(dataRif);
}
protected void lnkEditComm_Click(object sender, EventArgs e)
{
string dataRif = ((LinkButton)sender).CommandArgument;
// verifico se dip sia attivo...
if (DataProxy.currDipIsActive && DataProxy.currDipHasPayloadActive)
{
editCommDay(dataRif);
// apro anche data dell'altro SE abilitato
if (openBoth)
{
editTimbr(dataRif);
}
}
}
protected void lnkEditTimbr_Click(object sender, EventArgs e)
{
string dataRif = ((LinkButton)sender).CommandArgument;
// verifico se dip sia attivo...
if (DataProxy.currDipIsActive && DataProxy.currDipHasPayloadActive)
{
editTimbr(dataRif);
// apro anche data dell'altro SE abilitato
if (openBoth)
{
editCommDay(dataRif);
}
}
}
/// <summary>
/// Avvio pagina
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
memLayer.ML.setSessionVal("maxErrMin", memLayer.ML.confReadInt("maxErrMin"));
memLayer.ML.setSessionVal("maxErrPlus", memLayer.ML.confReadInt("maxErrPlus"));
if (!Page.IsPostBack)
{
activeMode = modoCommesse.elenco;
intervalloDate periodo = new intervalloDate();
periodo.fine = DateTime.Today.AddDays(1);
periodo.inizio = periodo.fine.AddDays(memLayer.ML.confReadInt("defDayFrom"));
mod_periodoAnalisi1.intervalloAnalisi = periodo;
// salvo link in HF
hfDataFrom.Value = periodo.inizio.ToString();
hfDataTo.Value = periodo.fine.ToString();
// imposto modo tag cloud
string modoTC = memLayer.ML.confReadString("TagCloudMode");
switch (modoTC)
{
case "elenco":
mod_TagCloudProgetti1.modo = TagCloudMode.elenco;
break;
case "elencoCPF":
mod_TagCloudProgetti1.modo = TagCloudMode.elencoCPF;
break;
case "piramide":
mod_TagCloudProgetti1.modo = TagCloudMode.piramide;
break;
case "standard":
default:
mod_TagCloudProgetti1.modo = TagCloudMode.standard;
break;
}
showPanels();
tempVisible = true;
cmp_chart.dtRif = DateTime.Today;
showCharts(tempVisible);
}
grView.DataBind();
mod_commUtMancTimbr1.eh_nuovoValore += new EventHandler(mod_commUtMancTimbr1_eh_nuovoValore);
mod_commAttivitaDesk1.eh_nuovoValore += new EventHandler(mod_commAttivitaDesk1_eh_nuovoValore);
mod_TagCloudProgetti1.eh_newVal += new EventHandler(mod_TagCloudProgetti1_eh_newVal);
mod_TagCloudProgetti1.eh_refresh += mod_TagCloudProgetti1_eh_refresh;
mod_periodoAnalisi1.eh_doUpdate += mod_periodoAnalisi1_eh_doUpdate;
cmp_toggle.ehToggle += Cmp_toggle_ehToggle;
cmp_rilTemp.ehCancel += cmp_rilTemp_ehCancel;
cmp_rilTemp.ehSave += cmp_rilTemp_ehSave;
cmp_dailyCheck.ehCancel += Cmp_dailyCheck_ehCancel;
}
protected void showCharts(bool doShow)
{
divRilTemp.Visible = doShow;
divCharts.Visible = doShow;
if (doShow)
{
cmp_chart.doUpdate();
}
}
/// <summary>
/// imposta visualizzazione dei pannelli opzionali laterali a seocnda del modo attivo
/// </summary>
protected void showPanels()
{
// 2016.04.07: salvo intervallo nei 2 hidden field
hfDataFrom.Value = mod_periodoAnalisi1.intervalloAnalisi.inizio.ToString();
hfDataTo.Value = mod_periodoAnalisi1.intervalloAnalisi.fine.ToString();
// imposto valori default
bool commesse = false;
bool temp = false;
bool check = false;
bool timbr = false;
divDx.Attributes.Remove("class");
divCn.Attributes.Remove("class");
divSx.Attributes.Remove("class");
if (openBoth)
{
switch (activeMode)
{
case modoCommesse.editTimb:
case modoCommesse.editRegAtt:
commesse = true;
timbr = true;
divCn.Attributes.Add("class", "col-sm-6 px-1");
divSx.Attributes.Add("class", "col-sm-2 pr-0");
divDx.Attributes.Add("class", "col-sm-4 pl-0");
divDx.Visible = true;
divSx.Visible = true;
break;
case modoCommesse.editRilTemp:
temp = true;
divCn.Attributes.Add("class", "col-12");
divDx.Visible = false;
divSx.Visible = false;
break;
case modoCommesse.showCheck:
check = true;
divCn.Attributes.Add("class", "col-12");
divDx.Visible = false;
divSx.Visible = false;
break;
case modoCommesse.elenco:
default:
divCn.Attributes.Add("class", "col-12");
divDx.Visible = false;
divSx.Visible = false;
break;
}
}
else
{
switch (activeMode)
{
case modoCommesse.editTimb:
timbr = true;
divCn.Attributes.Add("class", "col-sm-7 col-md-8 col-lg-9");
divSx.Attributes.Add("class", "col-sm-5 col-md-4 col-lg-3");
divDx.Visible = false;
divSx.Visible = true;
break;
case modoCommesse.editRilTemp:
temp = true;
divCn.Attributes.Add("class", "col-12");
divDx.Visible = false;
divSx.Visible = false;
break;
case modoCommesse.showCheck:
check = true;
divCn.Attributes.Add("class", "col-12");
divDx.Visible = false;
divSx.Visible = false;
break;
case modoCommesse.editRegAtt:
commesse = true;
divCn.Attributes.Add("class", "col-sm-6 col-md-7 col-lg-8");
divDx.Attributes.Add("class", "col-sm-6 col-md-5 col-lg-4");
divDx.Visible = true;
divSx.Visible = false;
break;
case modoCommesse.elenco:
default:
divCn.Attributes.Add("class", "col-12");
divDx.Visible = false;
divSx.Visible = false;
break;
}
}
// fix finale!
pnlEditCom.Visible = commesse;
pnlEditOre.Visible = timbr;
mod_commAttivitaDesk1.Visible = commesse;
mod_commUtMancTimbr1.Visible = timbr;
cmp_dailyCheck.Visible = check;
showCharts(temp && tempVisible);
upMain.Update();
}
#endregion Protected Methods
#region Public Methods
/// <summary>
/// Calcola classe da permesso
/// </summary>
/// <param name="minPerm"></param>
/// <returns></returns>
public string classByPerm(object minPerm)
{
string answ = "";
if (Convert.ToDouble(minPerm) > 0)
{
answ = "lblWarning";
}
return answ;
}
/// <summary>
/// formatta la durata in ore secondo web.config (centesimale/ore:min)
/// </summary>
/// <param name="oreCent"></param>
/// <returns></returns>
public string formatDurata(object oreCent)
{
decimal ore = 0;
try
{
ore = Convert.ToDecimal(oreCent);
}
catch
{ }
string answ = "";
if (memLayer.ML.confReadBool("reviewShowOreMin"))
{
answ = utils.formOreMin(ore);
}
else
{
answ = ore.ToString("0.00");
}
return answ;
}
/// <summary>
/// fornisce img x check coerenza ore timbrate e commesse
/// </summary>
/// <param name="okLavCom"></param>
/// <returns></returns>
public string imgChk(object okLavCom)
{
string answ = "~/images/statoKo_m.png";
try
{
if (Convert.ToBoolean(okLavCom))
{
answ = "~/images/statoOk_m.png";
}
}
catch
{ }
return answ;
}
/// <summary>
/// inverte valore booleano
/// </summary>
/// <param name="isEnt"></param>
/// <returns></returns>
public bool invBool(object valore)
{
bool answ = true;
try
{
answ = !Convert.ToBoolean(valore);
}
catch
{ }
return answ;
}
/// <summary>
/// formatta stringa tooltip giustificativi
/// </summary>
/// <param name="_minPerm">permessi</param>
/// <param name="_minFer">ferie</param>
/// <param name="_minMal">malattia</param>
/// <param name="_minFest">festività</param>
/// <param name="_minMPP">MPP</param>
/// <returns></returns>
public string tooltipGiust(object _minPerm, object _minFer, object _minMal, object _minFest, object _minMPP, object _min104, object _minCassa)
{
string answ = "";
double minPerm = Convert.ToInt32(_minPerm);
double minFer = Convert.ToInt32(_minFer);
double minMal = Convert.ToInt32(_minMal);
double minFest = Convert.ToInt32(_minFest);
double minMpp = Convert.ToInt32(_minMPP);
double min104 = Convert.ToInt32(_min104);
double minCassa = Convert.ToInt32(_minCassa);
if (memLayer.ML.confReadBool("reviewShowOreMin"))
{
if (minPerm > 0) answ += string.Format("{0} Permesso ", utils.formOreMin(Convert.ToDecimal(minPerm / 60)));
if (minFer > 0) answ += string.Format("{0} Ferie ", utils.formOreMin(Convert.ToDecimal(minFer / 60)));
if (minMal > 0) answ += string.Format("{0} Malattia ", utils.formOreMin(Convert.ToDecimal(minMal / 60)));
if (minFest > 0) answ += string.Format("{0} Festività ", utils.formOreMin(Convert.ToDecimal(minFest / 60)));
if (minMpp > 0) answ += string.Format("{0} Manc.Pausa Pranzo ", utils.formOreMin(Convert.ToDecimal(minMpp / 60)));
if (min104 > 0) answ += string.Format("{0} Perm 104 ", utils.formOreMin(Convert.ToDecimal(min104 / 60)));
if (minCassa > 0) answ += string.Format("{0} Cassa Integrazione ", utils.formOreMin(Convert.ToDecimal(minCassa / 60)));
}
else
{
if (minPerm > 0) answ += string.Format("{0:0.00}h Permesso ", minPerm / 60);
if (minFer > 0) answ += string.Format("{0:0.00}h Ferie ", minFer / 60);
if (minMal > 0) answ += string.Format("{0:0.00}h Malattia ", minMal / 60);
if (minFest > 0) answ += string.Format("{0:0.00}h Festività ", minFest / 60);
if (minMpp > 0) answ += string.Format("{0:0.00}h Manc.Pausa Pranzo ", minMpp / 60);
if (min104 > 0) answ += string.Format("{0:0.00}h Perm 104 ", min104 / 60);
if (minCassa > 0) answ += string.Format("{0:0.00}h Cassa Integrazione ", minCassa / 60);
}
return answ;
}
/// <summary>
/// prepara tooltip permessi/straordinarie
/// </summary>
/// <param name="minStra"></param>
/// <param name="minPerm"></param>
/// <returns></returns>
public string tooltipPermStra(object minStra, object minPerm)
{
string answ = "";
try
{
if (memLayer.ML.confReadBool("reviewShowOreMin"))
{
answ = string.Format("Straordinarie: {0} - Permessi: {1} (h:mm)", utils.formOreMin(Convert.ToDecimal(minStra) / 60), utils.formOreMin(Convert.ToDecimal(minPerm) / 60));
}
else
{
answ = string.Format("Straordinarie: {0:0.##} h - Permessi: {1:0.##} h", Convert.ToDouble(minStra) / 60, Convert.ToDouble(minPerm) / 60);
}
}
catch
{ }
return answ;
}
/// <summary>
/// formatta stringa giustificativi
/// </summary>
/// <param name="_minPerm">permessi</param>
/// <param name="_minFer">ferie</param>
/// <param name="_minMal">malattia</param>
/// <param name="_minFest">festività</param>
/// <param name="_minMPP">MPP</param>
/// <returns></returns>
public string txtGiust(object _minPerm, object _minFer, object _minMal, object _minFest, object _minMPP, object _min104, object _minCassa)
{
string answ = "";
double minPerm = Convert.ToInt32(_minPerm);
double minFer = Convert.ToInt32(_minFer);
double minMal = Convert.ToInt32(_minMal);
double minFest = Convert.ToInt32(_minFest);
double minMpp = Convert.ToInt32(_minMPP);
double min104 = Convert.ToInt32(_min104);
double minCassa = Convert.ToInt32(_minCassa);
if (memLayer.ML.confReadBool("reviewShowOreMin"))
{
if (minPerm > 0) answ += string.Format("{0} Pe ", utils.formOreMin(Convert.ToDecimal(minPerm / 60)));
if (minFer > 0) answ += string.Format("{0} Fe ", utils.formOreMin(Convert.ToDecimal(minFer / 60)));
if (minMal > 0) answ += string.Format("{0} Ma ", utils.formOreMin(Convert.ToDecimal(minMal / 60)));
if (minFest > 0) answ += string.Format("{0} Fs ", utils.formOreMin(Convert.ToDecimal(minFest / 60)));
if (minMpp > 0) answ += string.Format("{0} Mpp ", utils.formOreMin(Convert.ToDecimal(minMpp / 60)));
if (min104 > 0) answ += string.Format("{0} 104 ", utils.formOreMin(Convert.ToDecimal(min104 / 60)));
if (minCassa > 0) answ += string.Format("{0} Cassa ", utils.formOreMin(Convert.ToDecimal(minCassa / 60)));
}
else
{
if (minPerm > 0) answ += string.Format("{0:0.00} Pe ", minPerm / 60);
if (minFer > 0) answ += string.Format("{0:0.00} Fe ", minFer / 60);
if (minMal > 0) answ += string.Format("{0:0.00} Ma ", minMal / 60);
if (minFest > 0) answ += string.Format("{0:0.00} Fs ", minFest / 60);
if (minMpp > 0) answ += string.Format("{0:0.00} Mpp ", minMpp / 60);
if (min104 > 0) answ += string.Format("{0:0.00} 104 ", min104 / 60);
if (minCassa > 0) answ += string.Format("{0:0.00} Cassa ", minCassa / 60);
}
return answ;
}
#endregion Public Methods
}
}