using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using SteamWare; using GPW_data; using System.Globalization; using System.Data; using System.Drawing; namespace GPW_Admin.WebUserControls { public partial class mod_reviewTimbrature : BaseUserControl { #region Protected Properties /// /// valore selezionato x dettaglio giornaliero utente /// protected DateTime dataRif { get { DateTime answ = DateTime.Now; try { answ = Convert.ToDateTime(memLayer.ML.objSessionObj("dataRif")); } catch { } return answ; } set { memLayer.ML.setSessionVal("dataRif", value); } } /// /// idx dipendente loggato /// protected int IdxDipendente { get { int idx = 0; try { idx = memLayer.ML.IntSessionObj("IdxDipendente"); } catch { } return idx; } } #endregion Protected Properties #region Public Properties /// /// determina se si debba mostrare cognome nome (altrimenti IDX anonimo) /// public bool showCognomeNome { get { return memLayer.ML.confReadBool("reviewShowCN"); } } /// /// verifica se l'utente possa approvare la modifica oraria /// public bool userCanApprove { get { bool answ = false; try { answ = user_std.UtSn.userHasRight("GPW_admin") && chkLicOk; } catch { } return answ; } } #endregion Public Properties #region Private Methods /// /// imposto ODS /// private void checkFixOds() { memLayer.ML.setSessionVal("idxDip_sel", filtroDip.valoreInt); grViewExpl.DataBind(); mod_elencoTimbr1.doUpdate(); } /// /// seleziono /// /// /// private void filtroDip_eh_selValore(object sender, EventArgs e) { // imposto ods grViewExpl.SelectedIndex = -1; setDetailVisib(false); checkFixOds(); } private void mod_elencoTimbr1_eh_nuovoValore(object sender, EventArgs e) { checkFixOds(); } /// /// set visibilità grView dettagli /// /// private void setDetailVisib(bool value) { pnlDettagli.Visible = value; //mod_elencoTimbr1.Visible = value; grViewGiust.Visible = value; } /// /// aggiorna i 3 datagrid /// private void updateVisual() { // aggiorno visualizzazioni grViewExpl.DataBind(); mod_elencoTimbr1.doUpdate(); grViewGiust.DataBind(); } #endregion Private Methods #region Protected Methods /// /// inserisce un giust nuovo x dipendente/data /// /// /// protected void btNewGiust_Click(object sender, EventArgs e) { int idxDip = memLayer.ML.IntSessionObj("idxDip_det"); // calcola ed inserisce giustificativi DataProxy.DP.taGiust.giustInsByDate(idxDip, dataRif, "PERM"); updateVisual(); } /// /// gestione evento richiesta nuovo valore (mostra footer, ...) /// /// /// protected void btnNew_Click(object sender, EventArgs e) { // reset selezione... resetSelezioneGiust(); int idxDip = memLayer.ML.IntSessionObj("idxDip_det"); // calcola ed inserisce giustificativi DataProxy.DP.taGiust.giustInsByDate(idxDip, dataRif, "PERM"); updateVisual(); } /// /// reset della selezione /// /// /// protected void btnReset_Click(object sender, EventArgs e) { resetSelezione(); } /// /// reset della selezione /// /// /// protected void btnResetGiust_Click(object sender, EventArgs e) { resetSelezioneGiust(); } /// /// ricalcola giornate periodo visualizzato per i dipendenti selezionati /// /// /// protected void btnRicalcPeriodo_Click(object sender, EventArgs e) { // eseguo la stored di update dato condizione di filtro x periodo e dipendente... DataProxy.DP.taTimbExpl.stp_ricalcolaTimbExpl_byPeriodoUser(memLayer.ML.IntSessionObj("idxDip_sel"), Convert.ToDateTime(memLayer.ML.objSessionObj("_inizio")), Convert.ToDateTime(memLayer.ML.objSessionObj("_fine"))); DataProxy.DP.taRA.stp_ricalcolaRegAttivitaExpl_byPeriodoUser(memLayer.ML.IntSessionObj("idxDip_sel"), Convert.ToDateTime(memLayer.ML.objSessionObj("_inizio")), Convert.ToDateTime(memLayer.ML.objSessionObj("_fine"))); // aggiorno checkFixOds(); } protected void chkshowAll_CheckedChanged(object sender, EventArgs e) { filtroDip.ods = odsDip; grViewExpl.DataBind(); } /// /// cambia stato visibilità week-end... /// /// /// protected void chkWE_CheckedChanged(object sender, EventArgs e) { // imposto ods checkFixOds(); } /// /// evento cancellazione riga /// /// /// protected void grView_RowDeleted(object sender, GridViewDeletedEventArgs e) { grViewExpl.DataBind(); } /// /// evento update righe /// /// /// protected void grView_RowUpdated(object sender, GridViewUpdatedEventArgs e) { grViewExpl.DataBind(); } /// /// mostro visualizzazione dati di dettaglio! /// /// /// protected void grViewExpl_SelectedIndexChanged(object sender, EventArgs e) { dataRif = Convert.ToDateTime(grViewExpl.SelectedDataKey["dataLav"]).Date; setDetailVisib(true); // mostra timbrature memLayer.ML.setSessionVal("inizioDet", dataRif); memLayer.ML.setSessionVal("fineDet", dataRif.AddDays(1)); memLayer.ML.setSessionVal("idxDip_det", grViewExpl.SelectedDataKey["idxDipendente"]); mod_elencoTimbr1.doUpdate(); // mostra commesse memLayer.ML.setSessionVal("idxDipendente", grViewExpl.SelectedDataKey["idxDipendente"]); CultureInfo ita = new CultureInfo("it-IT"); mod_commAttivitaDesk1.idxDipCurr = Convert.ToInt32(grViewExpl.SelectedDataKey["idxDipendente"]); mod_commAttivitaDesk1.valoreDateTime = Convert.ToDateTime(dataRif, ita); mod_commAttivitaDesk1.doUpdate(); grViewExpl.DataBind(); } /// /// annulla inserimento nuovo valore da footer /// /// /// protected void lblCanc_click(object sender, EventArgs e) { // annullo inserimento: nascondo footer, bind controlli... grViewGiust.FooterRow.Visible = false; } /// /// inserisce nuovo valore da footer /// /// /// protected void lblIns_click(object sender, EventArgs e) { // click su inserimento, chiamo il metodo insert dell'ObjectDataSource odsGiust.Insert(); } /// /// aggiornamento x delete /// /// /// protected void odsGiust_Deleted(object sender, ObjectDataSourceStatusEventArgs e) { updateVisual(); } protected void odsGiust_Inserting(object sender, ObjectDataSourceMethodEventArgs e) { } /// /// aggiornamento x update /// /// /// protected void odsGiust_Updated(object sender, ObjectDataSourceStatusEventArgs e) { updateVisual(); } /// /// caricamento pagina /// /// /// protected void Page_Load(object sender, EventArgs e) { grViewExpl.PageSize = utils.pageSize; if (!Page.IsPostBack) { // imposto intervallo date...1 mese... intervalloDate date = new intervalloDate(); date.fine = DateTime.Now.Date.AddDays(1); date.inizio = date.fine.AddMonths(-1); cmp_periodoAnalisi.intervalloAnalisi = date; // altri fix filtroDip.ods = odsDip; memLayer.ML.emptySessionVal("idxDip_sel"); memLayer.ML.setSessionVal("maxErrMin", memLayer.ML.confReadInt("maxErrMin")); memLayer.ML.setSessionVal("maxErrPlus", memLayer.ML.confReadInt("maxErrPlus")); filtroDip.reselFirst(); setDetailVisib(false); // determino visibilità link export... hlExport.Visible = memLayer.ML.cdvb("ExportORE_SPS"); hlExportComm.Visible = memLayer.ML.cdvb("ExportCommesse"); } filtroDip.eh_selValore += new EventHandler(filtroDip_eh_selValore); mod_elencoTimbr1.eh_nuovoValore += new EventHandler(mod_elencoTimbr1_eh_nuovoValore); hlExport.Visible = chkLicOk; hlExportComm.Visible = chkLicOk; } #endregion Protected Methods #region Public Methods /// /// /// /// /// public string classByNL(object minutiNonLav) { string answ = ""; try { if (Convert.ToDouble(minutiNonLav) > 0) { answ = "lblWarning"; } } catch { } return answ; } /// /// calcola cognome-nome da idx /// /// /// public string cognomeNome(object idxDip) { string answ = ""; int IdxDipendente = 0; if (int.TryParse($"{idxDip}", out IdxDipendente)) { answ = DataProxy.DP.cognomeNomeByIdx(IdxDipendente); } return answ; } /// /// restituisce il colore data valore ok commessa /// /// /// public Color coloreComm(object okLavCom) { Color answ = Color.Orange; try { if (toBool(okLavCom)) { answ = Color.Black; } } catch { } return answ; } /// /// restituisce il colore dato minMpp (se > 0 è verde, altrimenti marrone) /// /// /// public Color coloreMPP(object minMpp) { Color answ = Color.FromName("#995511"); if (minMpp != null) { try { if (minMpp.ToString() != "0") { answ = Color.FromName("#66AA22"); } } catch { } } return answ; } public void doUpdate() { grViewExpl.PageSize = utils.pageSize; grViewExpl.DataBind(); } /// /// 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 = string.Format("{0}:{1:00}", Math.Floor(ore), Math.Round((ore - Math.Floor(ore)) * 60)); answ = utils.formOreMin(ore); } else { answ = ore.ToString("0.00"); } return answ; } /// /// inverte valore booleano /// /// /// public bool invBool(object valore) { bool answ = true; try { answ = !Convert.ToBoolean(valore); } catch { } return answ; } /// /// calcola se sia visibile con criterio GREATER THAN ZERO /// /// /// public bool isGTZ(object valore) { bool answ = false; try { if (Convert.ToDouble(valore) > 0) { answ = true; } } catch { } return answ; } /// /// resetta la selezione dei valori in caso di modifiche su altri controlli /// public void resetSelezione() { grViewExpl.SelectedIndex = -1; grViewExpl.DataBind(); setDetailVisib(false); } /// /// resetta la selezione dei valori in caso di modifiche su altri controlli /// public void resetSelezioneGiust() { grViewGiust.SelectedIndex = -1; grViewGiust.DataBind(); } /// /// prepara tooltip permessi/straordinarie /// /// /// /// /// public string tooltipPermStra(object minStra, object minPerm, object minMpp) { string answ = ""; try { answ = string.Format("Straordinarie: {0:0.##} min, Permessi: {1:0.##} min", minStra, minPerm); if (Convert.ToInt32(minMpp) > 0) { answ += string.Format(", Pranzo: {0:0.##} min", minMpp); } } catch { } return answ; } #endregion Public Methods } }