using GPW_data; using GPW_Smart; using SteamWare; using System; using System.Web.UI; using System.Web.UI.WebControls; namespace GPW.WebUserControls { public partial class mod_timbrature : BaseUserControl { #region Protected Properties protected bool forceButtons { get { return !abilitaAll; } set { abilitaAll = !(value); } } protected bool userEnabled { get => (DataProxy.currDipIsActive && DataProxy.currDipHasPayloadActive); } #endregion Protected Properties #region Private Methods private void fixBtnInOut(bool showIn, bool showOut) { lbtEntrata.Enabled = showIn; lbtUscita.Enabled = showOut; lbtEntrata.CssClass = showIn ? "btn btn-primary btn-block" : "btn btn-outline-primary disabled btn-block"; lbtUscita.CssClass = showOut ? "btn btn-success btn-block" : "btn btn-outline-success disabled btn-block"; } private void fixFont() { divTable.Style.Clear(); divTable.Style.Add("font-size", textSize); } /// /// registro timbratura /// /// /// private int registraTimbratura(bool isEntrata) { // salvo evento entrata... string IPv4 = ""; bool approvata = false; if (IdxDipendente > 0) { // recupero IP IPv4 = Request.UserHostName; // controllo se IP locale = approvata... if (IPv4.Contains(memLayer.ML.confReadString("localNet"))) { approvata = true; } timbratrice.registraTimbratura(IdxDipendente, DateTime.Now, isEntrata, IPv4, "Web", approvata); lblWarning.Visible = false; abilitaAll = false; // se manca temperatura x il giorno --> rimando a pagina! DateTime dataRif = DateTime.Today; var tabRT = DataProxy.DP.taRT.getByKey(IdxDipendente, dataRif); if (tabRT.Rows.Count == 0) { // salvo in sessione... memLayer.ML.setSessionVal("dataRif", dataRif); // reinvio Response.Redirect($"TempRil?dataRif={dataRif:yyyy-MM-dd}"); } //aggiorno timbrature visualizzate setButtons(); updateTimbrature(); grView.DataBind(); } else { lblWarning.Text = "IdxDipendente non trovato! timbratura impossibile"; lblWarning.Visible = true; } return IdxDipendente; } /// /// fix buttons button /// private void setButtons() { // se utente ok... if (userEnabled) { // controllo SE voglio inibire i buttons... if (forceButtons) { // controllo se il prox comando DOVREBBE essere entrata o uscita bool nextIsEntrata = true; // controllo dipendente if (IdxDipendente > 0) { // ricavo ultima timbratura.. nextIsEntrata = timbratrice.nextIsEntrata(IdxDipendente); // di conseguenza cambio abilitazione ad un buttons if (nextIsEntrata) { fixBtnInOut(true, false); } else { fixBtnInOut(false, true); } } else { fixBtnInOut(false, false); } } else { fixBtnInOut(true, true); } } else { fixBtnInOut(false, false); } } /// /// update elenco ultime timbrature /// private void updateTimbrature() { // aggiorno datagrid } #endregion Private Methods #region Protected Methods protected void grView_RowCreated(object sender, GridViewRowEventArgs e) { int maxNum = e.Row.Cells.Count - 2; for (int i = numColEU * 2 + 1; i < maxNum; i++) { e.Row.Cells[i].Visible = false; } } protected void grView_SelectedIndexChanged(object sender, EventArgs e) { // rimando ai progetti sulla data indicata... DateTime dataRif = DateTime.Today; try { dataRif = Convert.ToDateTime(grView.SelectedDataKey["dataLav"]); } catch { } // salvo in sessione... memLayer.ML.setSessionVal("dataRif", dataRif); // reinvio Response.Redirect($"Progetti?dataRif={dataRif:yyyy-MM-dd}"); } protected void lbShowTemp_Click(object sender, EventArgs e) { // recupero data di riferimento try { LinkButton lbt = (LinkButton)sender; string cmdArg = lbt.CommandArgument; DateTime dataRif = DateTime.Today; DateTime.TryParse(cmdArg, out dataRif); // salvo in sessione... memLayer.ML.setSessionVal("dataRif", dataRif); // reinvio Response.Redirect($"TempRil?dataRif={dataRif:yyyy-MM-dd}"); } catch { } } /// /// timbro entrata... /// /// /// protected void lbtEntrata_Click(object sender, EventArgs e) { bool isEntrata = true; registraTimbratura(isEntrata); } /// /// uscita... /// /// /// protected void lbtUscita_Click(object sender, EventArgs e) { bool isEntrata = false; registraTimbratura(isEntrata); } protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { // verifico se ci sia un numero di righe selezionate altrimenti lo imposto... if (!memLayer.ML.isInSessionObject("numColEU")) numColEU = 2; if (!memLayer.ML.isInSessionObject("numRowTimb")) numRowTimb = 10; memLayer.ML.setSessionVal("dataRif", DateTime.Today); } setButtons(); fixFont(); } #endregion Protected Methods #region Public Methods /// /// Aggiorno visualizzazione /// public void doUpdate() { setButtons(); grView.DataBind(); } /// /// inverte valore booleano /// /// /// public bool invBool(object valore) { bool answ = true; try { answ = !Convert.ToBoolean(valore); } catch { } return answ; } #endregion Public Methods } }