diff --git a/GPW_Admin/WebUserControls/mod_commAttivitaDesk.ascx.cs b/GPW_Admin/WebUserControls/mod_commAttivitaDesk.ascx.cs index 9ee0458..e74f28c 100644 --- a/GPW_Admin/WebUserControls/mod_commAttivitaDesk.ascx.cs +++ b/GPW_Admin/WebUserControls/mod_commAttivitaDesk.ascx.cs @@ -13,18 +13,47 @@ namespace GPW_Admin.WebUserControls { public partial class mod_commAttivitaDesk : System.Web.UI.UserControl { + #region Public Events - #region area protected / private + /// + /// evento update valori + /// + public event EventHandler eh_nuovoValore; - protected void Page_Load(object sender, EventArgs e) + #endregion Public Events + + #region Protected Properties + + /// + /// fase selezionata + /// + protected int idxFaseSel { - if (!Page.IsPostBack) + get { - refreshControlli(); - pnlHeader.Visible = enableFull; - lblTitle.Text = string.Format("{0:dddd dd/MM/yyyy}", valoreDateTime); + return memLayer.ML.IntSessionObj("idxFaseSel"); + } + set + { + memLayer.ML.setSessionVal("idxFaseSel", value); } } + + /// + /// progetto selezionato + /// + protected int idxProjSel + { + get + { + return memLayer.ML.IntSessionObj("idxProjSel"); + } + set + { + memLayer.ML.setSessionVal("idxProjSel", value); + } + } + /// /// minuti selezionati nel controllo radio in testa /// @@ -39,6 +68,108 @@ namespace GPW_Admin.WebUserControls memLayer.ML.setSessionVal("stdMinDurata", value); } } + + #endregion Protected Properties + + #region Public Properties + + /// + /// abilitato editing + nuovo + delete + clona + /// + public bool enableFull + { + get + { + bool answ = false; + try + { + answ = memLayer.ML.BoolSessionObj("enableEditComm"); + } + catch + { } + return answ; + } + set + { + memLayer.ML.setSessionVal("enableEditComm", value); + } + } + + /// + /// idxDipendente selezionato (0=tutti) + /// + public int idxDipCurr + { + get + { + return memLayer.ML.IntSessionObj("idxDipCurr"); + } + set + { + memLayer.ML.setSessionVal("idxDipCurr", value); + } + } + + /// + /// progetto selezionato.. + /// + public string idxProgetto + { + get + { + return idxProjSel.ToString(); + } + } + + /// + /// stato attuale del controllo + /// + public statoControllo stato + { + get + { + statoControllo answ = statoControllo.item; + try + { + answ = (statoControllo)memLayer.ML.objSessionObj("statoControlloRA"); + } + catch + { } + return answ; + } + set + { + memLayer.ML.setSessionVal("statoControlloRA", value); + } + } + + /// + /// valore datetime selezionato! + /// + public DateTime valoreDateTime + { + get + { + DateTime answ = DateTime.Now; + try + { + answ = Convert.ToDateTime(memLayer.ML.objSessionObj("dataRif")); + } + catch + { } + return answ; + } + set + { + memLayer.ML.setSessionVal("dataRif", value); + lblTitle.Text = string.Format("{0:dddd dd/MM/yyyy}", value); + } + } + + #endregion Public Properties + + #region Private Methods + /// /// refresh dei controlli /// @@ -56,6 +187,7 @@ namespace GPW_Admin.WebUserControls //idxFaseSel = DataProxy.DP.taRA.getByKey(idxRASel)[0].idxFase; //idxProjSel = idxPrjByFase(idxFaseSel); break; + case statoControllo.insert: grView.ShowFooter = true; grView.DataBind(); @@ -86,6 +218,7 @@ namespace GPW_Admin.WebUserControls { } doDataBound = false; break; + case statoControllo.item: grView.ShowFooter = false; // cerco di impostare inizio/fine @@ -111,6 +244,7 @@ namespace GPW_Admin.WebUserControls } } break; + default: break; } @@ -119,28 +253,7 @@ namespace GPW_Admin.WebUserControls grView.DataBind(); } } - /// - /// salvo in session che il prox comando è clonare... - /// - /// - /// - protected void imgClona_Click(object sender, ImageClickEventArgs e) - { - if (sender != null) - { - ImageButton lbtn = (ImageButton)sender; - int idxRa = 0; - try - { - idxRa = Convert.ToInt32(lbtn.CommandArgument); - } - catch - { } - // chiamo clona! - DataProxy.DP.taRA.clonaRecord(idxRa); - updateControl(); - } - } + /// /// fa update del controllo e chiama evento update esterno /// @@ -154,120 +267,84 @@ namespace GPW_Admin.WebUserControls eh_nuovoValore(this, new EventArgs()); } } + + #endregion Private Methods + + #region Protected Methods + /// - /// completato insert! aggiorno! + /// richiesta creazioen nuovo record /// /// /// - protected void odsRA_Inserted(object sender, ObjectDataSourceStatusEventArgs e) + protected void btnNew_Click(object sender, EventArgs e) { - stato = statoControllo.item; - refreshControlli(); - } - /// - /// effettuato update - /// - /// - /// - protected void grView_RowUpdated(object sender, GridViewUpdatedEventArgs e) - { - updateControl(); - } - /// - /// riga eliminata - /// - /// - /// - protected void grView_RowDeleted(object sender, GridViewDeletedEventArgs e) - { - updateControl(); - } - /// - /// recupera i dati di un nuovo record contenuti nel footer di un gridView; - /// questi devono esses opportunamente nominati (es: txt{0}, dl{0}, ...) - /// - /// - /// - protected void doInsert() - { - //recupero la riga footer... - int idxDip = DataProxy.idxDipendente; - int idxFase = 0; - DateTime inizio = DateTime.Now; - DateTime fine = DateTime.Now; - string descr = ""; - try + if (grView.Rows.Count > 0) { - idxFase = Convert.ToInt32(((DropDownList)grView.FooterRow.FindControl("ddlFase")).SelectedValue); - inizio = ((mod_dateTime)grView.FooterRow.FindControl("dtInizio")).valoreDateTime; - fine = ((mod_dateTime)grView.FooterRow.FindControl("dtFine")).valoreDateTime; - descr = ((TextBox)grView.FooterRow.FindControl("txtDescrizione")).Text; + // controllo: se ho righe mostro il footer... + stato = statoControllo.insert; + refreshControlli(); } - catch - { } - DataProxy.DP.taRA.Insert(idxDip, idxFase, inizio, fine, descr, 0); - } - /// - /// riga in edit - /// - /// - /// - protected void grView_RowEditing(object sender, GridViewEditEventArgs e) - { - if (e != null) + else { - grView.SelectedIndex = e.NewEditIndex; - int idxRASel = Convert.ToInt32(grView.SelectedDataKey["idxRA"]); - // salvo in sessione valori selezionati - idxFaseSel = DataProxy.DP.taRA.getByKey(idxRASel)[0].idxFase; - idxProjSel = idxPrjByFase(idxFaseSel); - } - } - /// - /// riga popolata - /// - /// - /// - protected void grView_RowDataBound(object sender, GridViewRowEventArgs e) - { - if (e != null) - { - // controllo la riga - GridViewRow riga = e.Row; - if (grView.EditIndex >= 0 || grView.ShowFooter) + // default: inizia ora la dichiarazione + double oraStart = DateTime.Now.Hour; + int durataMinuti = memLayer.ML.IntSessionObj("stdMinDurata"); + // se c'è timbratura ingresso prendo quella come ora inizio... + try { + // recupero tab timbrature delal giornata... + DS_Applicazione.TimbratureDataTable tabTimbrature = DataProxy.DP.taTimb.getByIdxDipPeriodo(DataProxy.idxDipendente, valoreDateTime, valoreDateTime.AddDays(1)); + // sono ordinate DEC x cui prendo l'ultima... + int numRow = tabTimbrature.Rows.Count; + if (numRow > 0) + { + DS_Applicazione.TimbratureRow riga = tabTimbrature[numRow - 1]; + oraStart = Convert.ToDouble(riga.dataOra.Hour + (double)riga.dataOra.Minute / 60); + } + } + catch + { } + // altrimenti duplico ultima entry utente.. + DataProxy.DP.taRA.clonaLastRA_Utente(DataProxy.idxDipendente, valoreDateTime.AddHours(oraStart), durataMinuti); + updateControl(); + } + } + + /// + /// sistemo eventuali "headers" + /// + /// + /// + protected void ddlFase_DataBound(object sender, EventArgs e) + { + if (sender != null) + { + // cerco eventuali controlli tipo "ancestor" e li disattivo! + DropDownList ddlFase_int = (DropDownList)sender; + ListItem li = new ListItem(); + while (li != null) + { + li = ddlFase_int.Items.FindByValue("0"); try { - //pre-seleziono idx progetto x ods fase... - DropDownList ddlProj_int = (DropDownList)riga.FindControl("ddlProgetto"); - if (idxProjSel >= 0 && (ddlProj_int != null)) - { - ddlProj_int.SelectedValue = idxProjSel.ToString(); - } - DropDownList ddlFase_int = (DropDownList)riga.FindControl("ddlFase"); - if (idxFaseSel >= 0 && (ddlFase_int != null)) - { - ddlFase_int.SelectedValue = idxFaseSel.ToString(); - } + li.Attributes.Add("style", "color:gray;"); + li.Attributes.Add("disabled", "true"); + li.Value = "-1"; + li.Text = string.Format("[ {0} ]", li.Text); } catch { } } + try + { + ddlFase_int.SelectedIndex = 1; + } + catch + { } } } - /// - /// intercetto update! - /// - /// - /// - protected void odsRA_Updating(object sender, ObjectDataSourceMethodEventArgs e) - { - if (e != null) - { - DropDownList ddlfase_int = (DropDownList)grView.Rows[grView.EditIndex].FindControl("ddlFase"); - e.InputParameters["idxFase"] = ddlfase_int.SelectedValue; - } - } + /// /// aggiorno ods fasi... /// @@ -332,34 +409,33 @@ namespace GPW_Admin.WebUserControls } } } + /// - /// progetto selezionato + /// recupera i dati di un nuovo record contenuti nel footer di un gridView; + /// questi devono esses opportunamente nominati (es: txt{0}, dl{0}, ...) /// - protected int idxProjSel + /// + /// + protected void doInsert() { - get + //recupero la riga footer... + int idxDip = DataProxy.idxDipendente; + int idxFase = 0; + DateTime inizio = DateTime.Now; + DateTime fine = DateTime.Now; + string descr = ""; + try { - return memLayer.ML.IntSessionObj("idxProjSel"); - } - set - { - memLayer.ML.setSessionVal("idxProjSel", value); - } - } - /// - /// fase selezionata - /// - protected int idxFaseSel - { - get - { - return memLayer.ML.IntSessionObj("idxFaseSel"); - } - set - { - memLayer.ML.setSessionVal("idxFaseSel", value); + idxFase = Convert.ToInt32(((DropDownList)grView.FooterRow.FindControl("ddlFase")).SelectedValue); + inizio = ((mod_dateTime)grView.FooterRow.FindControl("dtInizio")).valoreDateTime; + fine = ((mod_dateTime)grView.FooterRow.FindControl("dtFine")).valoreDateTime; + descr = ((TextBox)grView.FooterRow.FindControl("txtDescrizione")).Text; } + catch + { } + DataProxy.DP.taRA.Insert(idxDip, idxFase, inizio, fine, descr, 0); } + /// /// generico comando riga /// @@ -375,211 +451,147 @@ namespace GPW_Admin.WebUserControls stato = statoControllo.item; updateControl(); break; + case "Insert": doInsert(); stato = statoControllo.item; updateControl(); break; + default: break; } } } - #endregion - - #region area public - /// - /// idxDipendente selezionato (0=tutti) - /// - public int idxDipCurr - { - get - { - return memLayer.ML.IntSessionObj("idxDipCurr"); - } - set - { - memLayer.ML.setSessionVal("idxDipCurr", value); - } - } - /// - /// progetto selezionato.. - /// - public string idxProgetto - { - get - { - return idxProjSel.ToString(); - } - } - /// - /// abilitato editing + nuovo + delete + clona - /// - public bool enableFull - { - get - { - bool answ = false; - try - { - answ = memLayer.ML.BoolSessionObj("enableEditComm"); - } - catch - { } - return answ; - } - set - { - memLayer.ML.setSessionVal("enableEditComm", value); - } - } - /// - /// stato attuale del controllo - /// - public statoControllo stato - { - get - { - statoControllo answ = statoControllo.item; - try - { - answ = (statoControllo)memLayer.ML.objSessionObj("statoControlloRA"); - } - catch - { } - return answ; - } - set - { - memLayer.ML.setSessionVal("statoControlloRA", value); - } - } - /// - /// valore datetime selezionato! - /// - public DateTime valoreDateTime - { - get - { - DateTime answ = DateTime.Now; - try - { - answ = Convert.ToDateTime(memLayer.ML.objSessionObj("dataRif")); - } - catch - { } - return answ; - } - set - { - memLayer.ML.setSessionVal("dataRif", value); - lblTitle.Text = string.Format("{0:dddd dd/MM/yyyy}", value); - } - } - /// - /// evento update valori - /// - public event EventHandler eh_nuovoValore; - /// - /// effettua traduzione del lemma - /// - /// - /// - public string traduci(string lemma) - { - return user_std.UtSn.Traduci(lemma); - } - /// - /// aggiorna - /// - public void doUpdate() - { - refreshControlli(); - } - - /// - /// calcola idxProgetto da idxFase - /// - /// - /// - public int idxPrjByFase(object idxFase) - { - int answ = 0; - try - { - answ = DataProxy.DP.taAF.getByIdx(Convert.ToInt32(idxFase))[0].idxProgetto; - } - catch - { } - return answ; - } - /// - /// sistemo eventuali "headers" + /// riga popolata /// /// /// - protected void ddlFase_DataBound(object sender, EventArgs e) + protected void grView_RowDataBound(object sender, GridViewRowEventArgs e) { - if (sender != null) + if (e != null) { - // cerco eventuali controlli tipo "ancestor" e li disattivo! - DropDownList ddlFase_int = (DropDownList)sender; - ListItem li = new ListItem(); - while (li != null) + // controllo la riga + GridViewRow riga = e.Row; + if (grView.EditIndex >= 0 || grView.ShowFooter) { - li = ddlFase_int.Items.FindByValue("0"); try { - li.Attributes.Add("style", "color:gray;"); - li.Attributes.Add("disabled", "true"); - li.Value = "-1"; - li.Text = string.Format("[ {0} ]", li.Text); + //pre-seleziono idx progetto x ods fase... + DropDownList ddlProj_int = (DropDownList)riga.FindControl("ddlProgetto"); + if (idxProjSel >= 0 && (ddlProj_int != null)) + { + ddlProj_int.SelectedValue = idxProjSel.ToString(); + } + DropDownList ddlFase_int = (DropDownList)riga.FindControl("ddlFase"); + if (idxFaseSel >= 0 && (ddlFase_int != null)) + { + ddlFase_int.SelectedValue = idxFaseSel.ToString(); + } } catch { } } - try - { - ddlFase_int.SelectedIndex = 1; - } - catch - { } } } + /// - /// richiesta creazioen nuovo record + /// riga eliminata /// /// /// - protected void btnNew_Click(object sender, EventArgs e) + protected void grView_RowDeleted(object sender, GridViewDeletedEventArgs e) { - if (grView.Rows.Count > 0) + updateControl(); + } + + /// + /// riga in edit + /// + /// + /// + protected void grView_RowEditing(object sender, GridViewEditEventArgs e) + { + if (e != null) { - // controllo: se ho righe mostro il footer... - stato = statoControllo.insert; - refreshControlli(); + grView.SelectedIndex = e.NewEditIndex; + int idxRASel = Convert.ToInt32(grView.SelectedDataKey["idxRA"]); + // salvo in sessione valori selezionati + idxFaseSel = DataProxy.DP.taRA.getByKey(idxRASel)[0].idxFase; + idxProjSel = idxPrjByFase(idxFaseSel); } - else + } + + /// + /// effettuato update + /// + /// + /// + protected void grView_RowUpdated(object sender, GridViewUpdatedEventArgs e) + { + updateControl(); + } + + /// + /// salvo in session che il prox comando è clonare... + /// + /// + /// + protected void imgClona_Click(object sender, ImageClickEventArgs e) + { + if (sender != null) { - // default: inizia ora la dichiarazione - double oraStart = DateTime.Now.Hour; - int durataMinuti = memLayer.ML.IntSessionObj("stdMinDurata"); - // se c'è timbratura ingresso prendo quella come ora inizio... + ImageButton lbtn = (ImageButton)sender; + int idxRa = 0; try { - DS_Applicazione.TimbratureRow riga = DataProxy.DP.taTimb.getByIdxDipPeriodo(DataProxy.idxDipendente, valoreDateTime, valoreDateTime.AddDays(1))[0]; - oraStart = Convert.ToDouble(riga.dataOra.Hour + riga.dataOra.Minute / 60); + idxRa = Convert.ToInt32(lbtn.CommandArgument); } catch { } - // altrimenti duplico ultima entry utente.. - DataProxy.DP.taRA.clonaLastRA_Utente(DataProxy.idxDipendente, valoreDateTime.AddHours(oraStart), durataMinuti); + // chiamo clona! + DataProxy.DP.taRA.clonaRecord(idxRa); updateControl(); } } + /// + /// completato insert! aggiorno! + /// + /// + /// + protected void odsRA_Inserted(object sender, ObjectDataSourceStatusEventArgs e) + { + stato = statoControllo.item; + refreshControlli(); + } + + /// + /// intercetto update! + /// + /// + /// + protected void odsRA_Updating(object sender, ObjectDataSourceMethodEventArgs e) + { + if (e != null) + { + DropDownList ddlfase_int = (DropDownList)grView.Rows[grView.EditIndex].FindControl("ddlFase"); + e.InputParameters["idxFase"] = ddlfase_int.SelectedValue; + } + } + + protected void Page_Load(object sender, EventArgs e) + { + if (!Page.IsPostBack) + { + refreshControlli(); + pnlHeader.Visible = enableFull; + lblTitle.Text = string.Format("{0:dddd dd/MM/yyyy}", valoreDateTime); + } + } + /// /// esegue ricerca progetto/fase x sovrascrivere /// @@ -615,6 +627,17 @@ namespace GPW_Admin.WebUserControls refreshControlli(); } + #endregion Protected Methods + + #region Public Methods + + /// + /// aggiorna + /// + public void doUpdate() + { + refreshControlli(); + } /// /// formatta la durata in ore secondo web.config (centesimale/ore:min) @@ -642,7 +665,33 @@ namespace GPW_Admin.WebUserControls return answ; } - #endregion + /// + /// calcola idxProgetto da idxFase + /// + /// + /// + public int idxPrjByFase(object idxFase) + { + int answ = 0; + try + { + answ = DataProxy.DP.taAF.getByIdx(Convert.ToInt32(idxFase))[0].idxProgetto; + } + catch + { } + return answ; + } + /// + /// effettua traduzione del lemma + /// + /// + /// + public string traduci(string lemma) + { + return user_std.UtSn.Traduci(lemma); + } + + #endregion Public Methods } } \ No newline at end of file diff --git a/GPW_Commesse/WebUserControls/mod_TagCloudProgetti.ascx.cs b/GPW_Commesse/WebUserControls/mod_TagCloudProgetti.ascx.cs index 88b551b..e235d64 100644 --- a/GPW_Commesse/WebUserControls/mod_TagCloudProgetti.ascx.cs +++ b/GPW_Commesse/WebUserControls/mod_TagCloudProgetti.ascx.cs @@ -183,8 +183,15 @@ namespace GPW_Commesse.WebUserControls // se c'è timbratura ingresso prendo quella come ora inizio... try { - DS_Applicazione.TimbratureRow riga = DataProxy.DP.taTimb.getByIdxDipPeriodo(DataProxy.idxDipendente, dataRif, dataRif.AddDays(1))[0]; - oraStart = Convert.ToDouble(riga.dataOra.Hour + (double)riga.dataOra.Minute / 60); + // recupero tab timbrature delal giornata... + DS_Applicazione.TimbratureDataTable tabTimbrature = DataProxy.DP.taTimb.getByIdxDipPeriodo(DataProxy.idxDipendente, dataRif, dataRif.AddDays(1)); + // sono ordinate DEC x cui prendo l'ultima... + int numRow = tabTimbrature.Rows.Count; + if (numRow > 0) + { + DS_Applicazione.TimbratureRow riga = tabTimbrature[numRow - 1]; + oraStart = Convert.ToDouble(riga.dataOra.Hour + (double)riga.dataOra.Minute / 60); + } } catch { } diff --git a/GPW_Commesse/WebUserControls/mod_commAttivitaDesk.ascx.cs b/GPW_Commesse/WebUserControls/mod_commAttivitaDesk.ascx.cs index 7a6519a..c3074eb 100644 --- a/GPW_Commesse/WebUserControls/mod_commAttivitaDesk.ascx.cs +++ b/GPW_Commesse/WebUserControls/mod_commAttivitaDesk.ascx.cs @@ -201,8 +201,15 @@ namespace GPW_Commesse.WebUserControls // se c'è timbratura ingresso prendo quella come ora inizio... try { - DS_Applicazione.TimbratureRow riga = DataProxy.DP.taTimb.getByIdxDipPeriodo(DataProxy.idxDipendente, valoreDateTime, valoreDateTime.AddDays(1))[0]; - oraStart = Convert.ToDouble(riga.dataOra.Hour + (double)riga.dataOra.Minute / 60); + // recupero tab timbrature delal giornata... + DS_Applicazione.TimbratureDataTable tabTimbrature = DataProxy.DP.taTimb.getByIdxDipPeriodo(DataProxy.idxDipendente, valoreDateTime, valoreDateTime.AddDays(1)); + // sono ordinate DEC x cui prendo l'ultima... + int numRow = tabTimbrature.Rows.Count; + if (numRow > 0) + { + DS_Applicazione.TimbratureRow riga = tabTimbrature[numRow - 1]; + oraStart = Convert.ToDouble(riga.dataOra.Hour + (double)riga.dataOra.Minute / 60); + } } catch { } diff --git a/GPW_Commesse/WebUserControls/mod_commUtLog.ascx.cs b/GPW_Commesse/WebUserControls/mod_commUtLog.ascx.cs index a734f46..4b96e3f 100644 --- a/GPW_Commesse/WebUserControls/mod_commUtLog.ascx.cs +++ b/GPW_Commesse/WebUserControls/mod_commUtLog.ascx.cs @@ -339,7 +339,7 @@ namespace GPW_Commesse.WebUserControls break; } showPanels(); - tempVisible = true; + tempVisible = false; cmp_chart.dtRif = DateTime.Today; } showCharts(tempVisible); diff --git a/Jenkinsfile b/Jenkinsfile index cb19366..5b006fa 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -10,7 +10,7 @@ pipeline { steps { /* calcolo numero versione... diverso x branch MASTER/DEVELOP */ script { - withEnv(['NEXT_BUILD_NUMBER=4155']) { + withEnv(['NEXT_BUILD_NUMBER=4156']) { // env.versionNumber = VersionNumber(versionNumberString : '2.7.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true) env.versionNumber = VersionNumber(versionNumberString : '2.7.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}') env.APP_NAME = 'GPW'