using GPW_data; using SteamWare; using System; using System.Globalization; using System.Web.UI; using System.Web.UI.WebControls; namespace GPW_Commesse.WebUserControls { /// /// modalità ammesse per il controllo /// public enum modoCommesse { /// /// elenco giornate e resoconto /// elenco, /// /// edit timbrature attivo /// editTimb, /// /// edit Registro Attività attivo /// editRegAtt, /// /// edit Rilievo Temperatura attivo /// editRilTemp, /// /// display ultimi check eseguiti /// 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}"; } } /// /// Determina se visualizzare entrambe le schede... /// 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; } } /// /// indica se sia abilitato l'editing delle attività legate alle commesse e l'utente sia attivo!!! /// 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 /// /// chiamata del button close (entrambi) /// /// /// protected void btnClose_Click(object sender, EventArgs e) { activeMode = modoCommesse.elenco; showPanels(); grView.SelectedIndex = -1; grView.DataBind(); } /// /// visualizzazione controlli C19 /// /// /// 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); } } /// /// edit temperatura rilevata /// /// /// 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); } } } /// /// Avvio pagina /// /// /// 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(); } } /// /// imposta visualizzazione dei pannelli opzionali laterali a seocnda del modo attivo /// 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 /// /// Calcola classe da permesso /// /// /// public string classByPerm(object minPerm) { string answ = ""; if (Convert.ToDouble(minPerm) > 0) { answ = "lblWarning"; } return answ; } /// /// formatta la durata in ore secondo web.config (centesimale/ore:min) /// /// /// 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; } /// /// fornisce img x check coerenza ore timbrate e commesse /// /// /// public string imgChk(object okLavCom) { string answ = "~/images/statoKo_m.png"; try { if (Convert.ToBoolean(okLavCom)) { answ = "~/images/statoOk_m.png"; } } catch { } return answ; } /// /// inverte valore booleano /// /// /// public bool invBool(object valore) { bool answ = true; try { answ = !Convert.ToBoolean(valore); } catch { } return answ; } /// /// formatta stringa tooltip giustificativi /// /// permessi /// ferie /// malattia /// festività /// MPP /// 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; } /// /// prepara tooltip permessi/straordinarie /// /// /// /// 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; } /// /// formatta stringa giustificativi /// /// permessi /// ferie /// malattia /// festività /// MPP /// 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 } }