From f5629e49b8b1b918993aba13801171dbc0bcbac8 Mon Sep 17 00:00:00 2001 From: samuele Date: Mon, 12 Dec 2011 18:05:42 +0000 Subject: [PATCH] update gestione scarico F10: da testare!!! git-svn-id: https://keyhammer.ath.cx/svn/GMW/trunk@395 365432ac-a1b5-4ffd-bb28-6d3099d32164 --- .../mod_pageTitleAndSearch.ascx.cs | 2 +- .../mod_sanpos_associaz_F10_F18.ascx | 3 + .../mod_sanpos_associaz_F10_F18.ascx.cs | 20 + ...d_sanpos_associaz_F10_F18.ascx.designer.cs | 9 + .../mod_sanpos_consumoF10.ascx | 50 + .../mod_sanpos_consumoF10.ascx.cs | 318 ++ .../mod_sanpos_consumoF10.ascx.designer.cs | 124 + .../mod_sanpos_controlloLiquidi.ascx | 5 +- .../mod_sanpos_controlloLiquidi.ascx.cs | 20 + ...d_sanpos_controlloLiquidi.ascx.designer.cs | 9 + .../mod_sanpos_creazioneF18.ascx | 12 +- .../mod_sanpos_creazioneF18.ascx.cs | 20 + .../mod_sanpos_creazioneF18.ascx.designer.cs | 9 + .../WebUserControls/mod_spostaDataMatrix.ascx | 7 +- .../mod_spostaDataMatrix.ascx.cs | 29 + .../mod_spostaDataMatrix.ascx.designer.cs | 9 + GMW/GMW/bin/GMW.dll | Bin 995840 -> 998912 bytes GMW/GMW/bin/GMW_data.dll | Bin 1424384 -> 1424384 bytes GMW/GMW/bin/SteamWare.XML | 3355 +++++++++++++++++ GMW/GMW/bin/SteamWare.dll | Bin 420352 -> 420352 bytes GMW/GMW/obj/Debug/GMW.dll | Bin 995840 -> 998912 bytes .../obj/Debug/ResolveAssemblyReference.cache | Bin 74796 -> 74796 bytes GMW/GMW/sanpos_consumoF10.aspx | 5 + GMW/GMW/sanpos_consumoF10.aspx.cs | 17 + GMW/GMW/sanpos_consumoF10.aspx.designer.cs | 25 + GMW/GMW_data/bin/Debug/GMW_data.dll | Bin 1424384 -> 1424384 bytes GMW/GMW_data/bin/Debug/SteamWare.dll | Bin 420352 -> 420352 bytes GMW/GMW_data/bin/Debug/SteamWare.xml | 3355 +++++++++++++++++ GMW/GMW_data/obj/Debug/GMW_data.dll | Bin 1424384 -> 1424384 bytes .../obj/Debug/ResolveAssemblyReference.cache | Bin 45889 -> 45889 bytes 30 files changed, 7395 insertions(+), 8 deletions(-) create mode 100644 GMW/GMW/WebUserControls/mod_sanpos_consumoF10.ascx create mode 100644 GMW/GMW/WebUserControls/mod_sanpos_consumoF10.ascx.cs create mode 100644 GMW/GMW/WebUserControls/mod_sanpos_consumoF10.ascx.designer.cs create mode 100644 GMW/GMW/sanpos_consumoF10.aspx create mode 100644 GMW/GMW/sanpos_consumoF10.aspx.cs create mode 100644 GMW/GMW/sanpos_consumoF10.aspx.designer.cs diff --git a/GMW/GMW/WebUserControls/mod_pageTitleAndSearch.ascx.cs b/GMW/GMW/WebUserControls/mod_pageTitleAndSearch.ascx.cs index 4d66a9b3..f26a877e 100644 --- a/GMW/GMW/WebUserControls/mod_pageTitleAndSearch.ascx.cs +++ b/GMW/GMW/WebUserControls/mod_pageTitleAndSearch.ascx.cs @@ -22,7 +22,7 @@ public partial class mod_pageTitleAndSearch : ApplicationUserControl lblTitolo.Text = traduci(_titolo); } - + #endregion } diff --git a/GMW/GMW/WebUserControls/mod_sanpos_associaz_F10_F18.ascx b/GMW/GMW/WebUserControls/mod_sanpos_associaz_F10_F18.ascx index 0a3b8da3..9fb12ae4 100644 --- a/GMW/GMW/WebUserControls/mod_sanpos_associaz_F10_F18.ascx +++ b/GMW/GMW/WebUserControls/mod_sanpos_associaz_F10_F18.ascx @@ -12,6 +12,9 @@
+ +
diff --git a/GMW/GMW/WebUserControls/mod_sanpos_associaz_F10_F18.ascx.cs b/GMW/GMW/WebUserControls/mod_sanpos_associaz_F10_F18.ascx.cs index da5e4ecf..0f1231a5 100644 --- a/GMW/GMW/WebUserControls/mod_sanpos_associaz_F10_F18.ascx.cs +++ b/GMW/GMW/WebUserControls/mod_sanpos_associaz_F10_F18.ascx.cs @@ -58,10 +58,30 @@ namespace GMW.WebUserControls // labels lblPostazione.Text = string.Format("{2}: {0} ({1})", postazione_name, postazione_IP, traduci("postazione")); lblPrinter.Text = string.Format("{1}: {0}", postazione_printer, traduci("stampante")); + lblCurrentPage.Text = traduci(PagCorrente); // buttons btnAssocia.Text = traduci("btnAssocia"); } /// + /// restituisce il nome della pagina corrente + /// + protected string PagCorrente + { + get + { + string answ = ""; + Uri MyUrl = Request.Url; + string delimStr = "/"; + char[] delimiter = delimStr.ToCharArray(); + string[] finalUrl = MyUrl.LocalPath.ToString().Split(delimiter); + int n = finalUrl.Length; + answ = finalUrl[n - 1].ToString(); + DataLayer_AnagGen.PermessiRow riga = (DataLayer_AnagGen.PermessiRow)user_std.UtSn.permessi.Select(string.Format("URL = '{0}'", answ))[0]; + answ = riga.NOME; + return answ; + } + } + /// /// wrapper traduzione /// /// diff --git a/GMW/GMW/WebUserControls/mod_sanpos_associaz_F10_F18.ascx.designer.cs b/GMW/GMW/WebUserControls/mod_sanpos_associaz_F10_F18.ascx.designer.cs index 03116fc5..427bb6c3 100644 --- a/GMW/GMW/WebUserControls/mod_sanpos_associaz_F10_F18.ascx.designer.cs +++ b/GMW/GMW/WebUserControls/mod_sanpos_associaz_F10_F18.ascx.designer.cs @@ -40,6 +40,15 @@ namespace GMW.WebUserControls { /// protected global::System.Web.UI.WebControls.Label lblPrinter; + /// + /// lblCurrentPage control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblCurrentPage; + /// /// hlMenu control. /// diff --git a/GMW/GMW/WebUserControls/mod_sanpos_consumoF10.ascx b/GMW/GMW/WebUserControls/mod_sanpos_consumoF10.ascx new file mode 100644 index 00000000..7aa51531 --- /dev/null +++ b/GMW/GMW/WebUserControls/mod_sanpos_consumoF10.ascx @@ -0,0 +1,50 @@ +<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="mod_sanpos_consumoF10.ascx.cs" + Inherits="GMW.WebUserControls.mod_sanpos_consumoF10" %> +<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %> + +
+
+
+
+ +
+
+ +
+
+ +
+ +
+
+
+ +
+
+ +
+
+
+
+
+ +
+ + +
+
+
+ +
+
+ +
+
+
+
+
+
diff --git a/GMW/GMW/WebUserControls/mod_sanpos_consumoF10.ascx.cs b/GMW/GMW/WebUserControls/mod_sanpos_consumoF10.ascx.cs new file mode 100644 index 00000000..17ff19ec --- /dev/null +++ b/GMW/GMW/WebUserControls/mod_sanpos_consumoF10.ascx.cs @@ -0,0 +1,318 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; +using SteamWare; +using GMW_data; + +namespace GMW.WebUserControls +{ + public partial class mod_sanpos_consumoF10 : System.Web.UI.UserControl + { + /// + /// caricamento pagina + /// + /// + /// + protected void Page_Load(object sender, EventArgs e) + { + if (!Page.IsPostBack) + { + calcolaPostazione(); + traduciObj(); + } + doChecks(); + lblGitterBoxAttivo.Text = ""; + if (currUdcFrom != "") + { + lblGitterBoxAttivo.Text += string.Format("UDC FROM: {0}", currUdcFrom); + } + if (lblGitterBoxAttivo.Text == "") + { + lblGitterBoxAttivo.Text = "..."; + } + } + /// + /// effettua controlli visibilità + /// + private void doChecks() + { + checkBarcode(); + checkConsuma(); + } + /// + /// sistemo labels oggetti + /// + private void traduciObj() + { + // labels + lblPostazione.Text = string.Format("{2}: {0} ({1})", postazione_name, postazione_IP, traduci("postazione")); + lblPrinter.Text = string.Format("{1}: {0}", postazione_printer, traduci("stampante")); + lblCurrentPage.Text = traduci(PagCorrente); + // buttons + btnConsuma.Text = traduci("btnConsumaUdcF10"); + } + /// + /// restituisce il nome della pagina corrente + /// + protected string PagCorrente + { + get + { + string answ = ""; + Uri MyUrl = Request.Url; + string delimStr = "/"; + char[] delimiter = delimStr.ToCharArray(); + string[] finalUrl = MyUrl.LocalPath.ToString().Split(delimiter); + int n = finalUrl.Length; + answ = finalUrl[n - 1].ToString(); + DataLayer_AnagGen.PermessiRow riga = (DataLayer_AnagGen.PermessiRow)user_std.UtSn.permessi.Select(string.Format("URL = '{0}'", answ))[0]; + answ = riga.NOME; + return answ; + } + } + /// + /// wrapper traduzione + /// + /// + /// + public string traduci(object lemma) + { + return user_std.UtSn.Traduci(lemma.ToString()); + } + /// + /// calcola postazione corrente (ip, name, printer) + /// + private void calcolaPostazione() + { + postazione_IP = Request.UserHostName; + postazione_name = dnsUtils.DetermineCompName(postazione_IP); + // cerco stampante x postazione + postazione_printer = "n.d."; + try + { + DS_Applicazione.ElencoPostazioniDataTable tabPost = DataProxy.obj.taElPost.getByCod(postazione_name); + if (tabPost.Rows.Count > 0) + { + postazione_printer = tabPost[0].stampante; + } + else + { + tabPost = DataProxy.obj.taElPost.getByCod("default"); + postazione_printer = tabPost[0].stampante; + } + } + catch + { } + } + /// + /// indica name della postazione corrente + /// + protected string postazione_name + { + get + { + return memLayer.ML.StringSessionObj("postazione_name"); + } + set + { + memLayer.ML.setSessionVal("postazione_name", value); + } + } + /// + /// indica ip della postazione corrente + /// + protected string postazione_IP + { + get + { + return memLayer.ML.StringSessionObj("postazione_IP"); + } + set + { + memLayer.ML.setSessionVal("postazione_IP", value); + } + } + /// + /// indica stampante associata alla postazione corrente + /// + protected string postazione_printer + { + get + { + return memLayer.ML.StringSessionObj("postazione_printer"); + } + set + { + memLayer.ML.setSessionVal("postazione_printer", value); + } + } + /// + /// indica UDC FROM (F10) selezionato + /// + protected string currUdcFrom + { + get + { + return memLayer.ML.StringSessionObj("currUdcFrom"); + } + set + { + memLayer.ML.setSessionVal("currUdcFrom", value, false); + } + } + /// + /// indica se i caratteri vadano forzati a maiuscoli + /// + public bool forceUppercase + { + get + { + return memLayer.ML.confReadBool("forceUppercase"); + } + } + /// + /// decodifica il tipo barcode acquisito + /// + public tipoCodiceBarcode tipoBCode + { + get + { + tipoCodiceBarcode answ = tipoCodiceBarcode.ND; + int trovati = 0; + // controllo non si tratti di un comando... + string preCmd = memLayer.ML.confReadString("prefComandi"); + if (barcodeIn.StartsWith(preCmd)) + { + answ = tipoCodiceBarcode.Comando; + } + // controllo se sia un particolare "P" + else if (barcodeIn.StartsWith("P")) + { + answ = tipoCodiceBarcode.Particolare; + } + else + { + try + { + // cerco tra gitterbox (UDC)... + trovati = MagClass.magazzino.taCartellini.getByUdc(barcodeIn).Rows.Count; + if (trovati > 0) + { + answ = tipoCodiceBarcode.UDC; + } + } + catch + { + } + } + return answ; + } + } + /// + /// valore barcode + /// + public string barcodeIn + { + get + { + return txtBarcode.Text.Trim(); + } + set + { + txtBarcode.Text = value; + } + } + /// + /// controlla se ci sia un barcode + /// + private void checkBarcode() + { + if (barcodeIn != "") + { + DS_Applicazione.ElencoCartelliniRow rigaCart; + string tipoImballo = ""; + lblMessaggi.Text = string.Format("Barcode digitato: {0}", barcodeIn); + switch (tipoBCode) + { + + case tipoCodiceBarcode.UDC: + // procedo solo se UDC esistente + if (MagClass.magazzino.checkUDC(barcodeIn)) + { + // cerco di recuperare riga UDC + try + { + rigaCart = DataProxy.obj.taCartellini.stp_getByUdc(barcodeIn)[0]; + tipoImballo = rigaCart.CodImballo; + } + catch + { } + // controllo il tipo imballo dell'UDC per decidere se sia F10 o F18... + if (tipoImballo == memLayer.ML.confReadString("CodImballoLiquidi")) + { + // salvo UDC from + currUdcFrom = barcodeIn; + } + else + { + lblMessaggi.Text += " - codice UDC non valido / non trovato."; + pnlAll.CssClass = "stileComandoKo"; + } + } + + break; + default: + lblMessaggi.Text += " - codice non riconosciuto!"; + pnlAll.CssClass = "stileComandoND"; + break; + } + barcodeIn = ""; + } + else + { + lblMessaggi.Text = "...attesa barcode..."; + } + //grView.DataBind(); + txtBarcode.Focus(); + } + /// + /// controllo l'abilitazioen alla stampa UDC: + /// - particolare ok + /// - qta > 0 + /// - almeno 1 trattamento + /// altrimenti disabilito btn stampa + /// + private void checkConsuma() + { + bool associaOk = false; + if (currUdcFrom != "") + { + associaOk = true; + } + btnConsuma.Enabled = associaOk; + } + /// + /// genera i barcode di + /// - trattamenti + /// - nuovo x pezzi liquidi + /// e lancia la relativa stampa + /// + /// + /// + protected void btnConsuma_Click(object sender, EventArgs e) + { + if (currUdcFrom != "") + { + // associo i 2 cartellini + MagClass.magazzino.scaricaUdcMpWip(currUdcFrom); + // indico UDC associati! + lblMessaggi.Text = string.Format("{0} {1}", traduci("effettuatoConsumoUDC"), currUdcFrom); + currUdcFrom = ""; + lblGitterBoxAttivo.Text = ""; + } + } + } +} \ No newline at end of file diff --git a/GMW/GMW/WebUserControls/mod_sanpos_consumoF10.ascx.designer.cs b/GMW/GMW/WebUserControls/mod_sanpos_consumoF10.ascx.designer.cs new file mode 100644 index 00000000..c9958367 --- /dev/null +++ b/GMW/GMW/WebUserControls/mod_sanpos_consumoF10.ascx.designer.cs @@ -0,0 +1,124 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:2.0.50727.4963 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace GMW.WebUserControls { + + + public partial class mod_sanpos_consumoF10 { + + /// + /// pnlAll control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Panel pnlAll; + + /// + /// lblPostazione control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblPostazione; + + /// + /// lblPrinter control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblPrinter; + + /// + /// lblCurrentPage control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblCurrentPage; + + /// + /// hlMenu control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.HyperLink hlMenu; + + /// + /// lblGitterBoxAttivo control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblGitterBoxAttivo; + + /// + /// lblMessaggi control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblMessaggi; + + /// + /// lblBarcode control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblBarcode; + + /// + /// txtBarcode control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtBarcode; + + /// + /// aceParticolare control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::AjaxControlToolkit.AutoCompleteExtender aceParticolare; + + /// + /// lblConsuma control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblConsuma; + + /// + /// btnConsuma control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button btnConsuma; + } +} diff --git a/GMW/GMW/WebUserControls/mod_sanpos_controlloLiquidi.ascx b/GMW/GMW/WebUserControls/mod_sanpos_controlloLiquidi.ascx index 71a85a4e..1da8844a 100644 --- a/GMW/GMW/WebUserControls/mod_sanpos_controlloLiquidi.ascx +++ b/GMW/GMW/WebUserControls/mod_sanpos_controlloLiquidi.ascx @@ -12,6 +12,9 @@
+ +
@@ -64,7 +67,7 @@
-
+
diff --git a/GMW/GMW/WebUserControls/mod_sanpos_controlloLiquidi.ascx.cs b/GMW/GMW/WebUserControls/mod_sanpos_controlloLiquidi.ascx.cs index 298c7f57..fbbb6394 100644 --- a/GMW/GMW/WebUserControls/mod_sanpos_controlloLiquidi.ascx.cs +++ b/GMW/GMW/WebUserControls/mod_sanpos_controlloLiquidi.ascx.cs @@ -54,6 +54,7 @@ namespace GMW.WebUserControls lblQta.Text = traduci("lblQuantita"); lblNote.Text = traduci("lblNote"); lblAnnoTratt.Text = traduci("lblAnnoTratt"); + lblCurrentPage.Text = traduci(PagCorrente); //txtBox txtQta.Text = memLayer.ML.confReadString("QtaImballoLiquidi"); txtAnno.Text = DateTime.Now.Year.ToString(); @@ -63,6 +64,25 @@ namespace GMW.WebUserControls btnSvuota.ToolTip = traduci("btnSvuota"); } /// + /// restituisce il nome della pagina corrente + /// + protected string PagCorrente + { + get + { + string answ = ""; + Uri MyUrl = Request.Url; + string delimStr = "/"; + char[] delimiter = delimStr.ToCharArray(); + string[] finalUrl = MyUrl.LocalPath.ToString().Split(delimiter); + int n = finalUrl.Length; + answ = finalUrl[n - 1].ToString(); + DataLayer_AnagGen.PermessiRow riga = (DataLayer_AnagGen.PermessiRow)user_std.UtSn.permessi.Select(string.Format("URL = '{0}'", answ))[0]; + answ = riga.NOME; + return answ; + } + } + /// /// wrapper traduzione /// /// diff --git a/GMW/GMW/WebUserControls/mod_sanpos_controlloLiquidi.ascx.designer.cs b/GMW/GMW/WebUserControls/mod_sanpos_controlloLiquidi.ascx.designer.cs index 5e4f351f..12fc50a6 100644 --- a/GMW/GMW/WebUserControls/mod_sanpos_controlloLiquidi.ascx.designer.cs +++ b/GMW/GMW/WebUserControls/mod_sanpos_controlloLiquidi.ascx.designer.cs @@ -40,6 +40,15 @@ namespace GMW.WebUserControls { /// protected global::System.Web.UI.WebControls.Label lblPrinter; + /// + /// lblCurrentPage control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblCurrentPage; + /// /// hlMenu control. /// diff --git a/GMW/GMW/WebUserControls/mod_sanpos_creazioneF18.ascx b/GMW/GMW/WebUserControls/mod_sanpos_creazioneF18.ascx index e60b5d47..c474f715 100644 --- a/GMW/GMW/WebUserControls/mod_sanpos_creazioneF18.ascx +++ b/GMW/GMW/WebUserControls/mod_sanpos_creazioneF18.ascx @@ -1,4 +1,5 @@ -<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="mod_sanpos_creazioneF18.ascx.cs" Inherits="GMW.WebUserControls.mod_sanpos_creazioneF18" %> +<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="mod_sanpos_creazioneF18.ascx.cs" + Inherits="GMW.WebUserControls.mod_sanpos_creazioneF18" %> <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
@@ -11,6 +12,8 @@
+ +
@@ -31,9 +34,8 @@
-
-
+
@@ -42,8 +44,8 @@

- +
diff --git a/GMW/GMW/WebUserControls/mod_sanpos_creazioneF18.ascx.cs b/GMW/GMW/WebUserControls/mod_sanpos_creazioneF18.ascx.cs index aff1f66e..d9ced037 100644 --- a/GMW/GMW/WebUserControls/mod_sanpos_creazioneF18.ascx.cs +++ b/GMW/GMW/WebUserControls/mod_sanpos_creazioneF18.ascx.cs @@ -51,12 +51,32 @@ namespace GMW.WebUserControls lblPrinter.Text = string.Format("{1}: {0}", postazione_printer, traduci("stampante")); lblQta.Text = traduci("lblQuantita"); lblNote.Text = traduci("lblNote"); + lblCurrentPage.Text = traduci(PagCorrente); //txtBox txtQta.Text = memLayer.ML.confReadString("QtaImballoLiquidiDaSpedire"); // buttons btnStampa.Text = traduci("btnStampa"); } /// + /// restituisce il nome della pagina corrente + /// + protected string PagCorrente + { + get + { + string answ = ""; + Uri MyUrl = Request.Url; + string delimStr = "/"; + char[] delimiter = delimStr.ToCharArray(); + string[] finalUrl = MyUrl.LocalPath.ToString().Split(delimiter); + int n = finalUrl.Length; + answ = finalUrl[n - 1].ToString(); + DataLayer_AnagGen.PermessiRow riga = (DataLayer_AnagGen.PermessiRow)user_std.UtSn.permessi.Select(string.Format("URL = '{0}'", answ))[0]; + answ = riga.NOME; + return answ; + } + } + /// /// wrapper traduzione /// /// diff --git a/GMW/GMW/WebUserControls/mod_sanpos_creazioneF18.ascx.designer.cs b/GMW/GMW/WebUserControls/mod_sanpos_creazioneF18.ascx.designer.cs index 60236896..507e2373 100644 --- a/GMW/GMW/WebUserControls/mod_sanpos_creazioneF18.ascx.designer.cs +++ b/GMW/GMW/WebUserControls/mod_sanpos_creazioneF18.ascx.designer.cs @@ -40,6 +40,15 @@ namespace GMW.WebUserControls { /// protected global::System.Web.UI.WebControls.Label lblPrinter; + /// + /// lblCurrentPage control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblCurrentPage; + /// /// hlMenu control. /// diff --git a/GMW/GMW/WebUserControls/mod_spostaDataMatrix.ascx b/GMW/GMW/WebUserControls/mod_spostaDataMatrix.ascx index 2a0237f7..6dcbd0c4 100644 --- a/GMW/GMW/WebUserControls/mod_spostaDataMatrix.ascx +++ b/GMW/GMW/WebUserControls/mod_spostaDataMatrix.ascx @@ -3,7 +3,12 @@
- +
+ +
+ +
diff --git a/GMW/GMW/WebUserControls/mod_spostaDataMatrix.ascx.cs b/GMW/GMW/WebUserControls/mod_spostaDataMatrix.ascx.cs index 0e8367a1..d475f8d2 100644 --- a/GMW/GMW/WebUserControls/mod_spostaDataMatrix.ascx.cs +++ b/GMW/GMW/WebUserControls/mod_spostaDataMatrix.ascx.cs @@ -26,6 +26,7 @@ namespace GMW.WebUserControls } checkBarcode(); lblPezziGitterbox.Text = string.Format("{0} pz.", pezziGitterbox); + lblCurrentPage.Text = traduci(PagCorrente); if (currGitterBox != "") { lblGitterBoxAttivo.Text = string.Format("Gitterbox selezionato {0}", currGitterBox); @@ -36,6 +37,34 @@ namespace GMW.WebUserControls } } /// + /// restituisce il nome della pagina corrente + /// + protected string PagCorrente + { + get + { + string answ = ""; + Uri MyUrl = Request.Url; + string delimStr = "/"; + char[] delimiter = delimStr.ToCharArray(); + string[] finalUrl = MyUrl.LocalPath.ToString().Split(delimiter); + int n = finalUrl.Length; + answ = finalUrl[n - 1].ToString(); + DataLayer_AnagGen.PermessiRow riga = (DataLayer_AnagGen.PermessiRow)user_std.UtSn.permessi.Select(string.Format("URL = '{0}'", answ))[0]; + answ = riga.NOME; + return answ; + } + } + /// + /// wrapper traduzione + /// + /// + /// + public string traduci(object lemma) + { + return user_std.UtSn.Traduci(lemma.ToString()); + } + /// /// num pezzi del gitterbox /// public int pezziGitterbox diff --git a/GMW/GMW/WebUserControls/mod_spostaDataMatrix.ascx.designer.cs b/GMW/GMW/WebUserControls/mod_spostaDataMatrix.ascx.designer.cs index 563cc807..0087befe 100644 --- a/GMW/GMW/WebUserControls/mod_spostaDataMatrix.ascx.designer.cs +++ b/GMW/GMW/WebUserControls/mod_spostaDataMatrix.ascx.designer.cs @@ -22,6 +22,15 @@ namespace GMW.WebUserControls { /// protected global::System.Web.UI.WebControls.Panel pnlAll; + /// + /// lblCurrentPage control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblCurrentPage; + /// /// hlMenu control. /// diff --git a/GMW/GMW/bin/GMW.dll b/GMW/GMW/bin/GMW.dll index 21cf441aff73eb36dc1eb673eefced6e0c2e76c3..a74633741c300ff655fa37bdae7a7307609f7ee1 100644 GIT binary patch delta 105741 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 MM*MfGyiMT$10T!pj{pDw diff --git a/GMW/GMW/bin/GMW_data.dll b/GMW/GMW/bin/GMW_data.dll index 645496598cc683b5d72bbcccb0e0e34fbcbb2c00..b81d0b30080215fbec2926ae6e6a3c3404e0c11d 100644 GIT binary patch delta 119 zcmZqp5!Ub{Y(fX~X|rdI-L2h>t=&wm-OR1sEUn$Ft=(*`-R!O19If4)t=(L$-Q2C+ zJgwclt=)XB-TbZH0%Tf3QByO~?NSz5bUTf5m>yV+a2Ia<3pTf4bhySZDt zd0M-9Tf6yMyZKwY1zNiWTf2o?yMgs>#T>ed=b>Yz_dkwJ;t4 diff --git a/GMW/GMW/bin/SteamWare.XML b/GMW/GMW/bin/SteamWare.XML index 6809ec2a..becf76be 100644 --- a/GMW/GMW/bin/SteamWare.XML +++ b/GMW/GMW/bin/SteamWare.XML @@ -4,5 +4,3360 @@ SteamWare + + + classe gesione log files applicazioni + + + + + directory base x logs + + + + + nome del file corrente + + + + + max mb di log da accumulare + + + + + controlla se si debba mantenere sotto controllo la dimensioen della cartella logs + + + + + singleton del logger + + + + + avvio del logger nella dir desiderata + + + + + avvio del logger nella dir desiderata + + + + + avvio del logger nella dir desiderata con il max di dati indicato + + + + + resetta il logfile odierno + + + + + scrive sul file log di default il valore della variabile string passata su una riga... (tab delim?!?) + + testo iniziale del log + + + + + scrive un messaggio di log con etichetta pre + + testo messaggio + tipo di log da registrare (etichetta [...]) + + + + + fornisce il nome del file in cui loggare (ed eventualmente crea...) + + + + + provvede a verificare la dim della cartella dei log e cancella i + vecchi fino a restare a dim inferiori a _logMaxMb + + + + + fornisce il file + vecchio + + + + + + + livello di log applicazione (da web.config, chiave '_logLevel') + + + + + tipo di log ammesso + + + + + informazioni di debug + + + + + errori + + + + + eccezioni nell'esecuzione try/catch + + + + + errori fatali + + + + + informazioni opzionali + + + + + log dei lemmi invocati per traduzione da vocabolario + + + + + fase di avvio componente + + + + + avvisi + + + + + classe di wrap verso i TableAdapter impiegati + + + + + metodo protected di avvio della classe + + + + + procedura di avvio dei tableAdapter + + + + + procedura di avvio dei tableAdapter + + + + + effettua setup dei connection strings da web.config delal singola applicazione + + + + + effettua setup dei connection strings da web.config delal singola applicazione + + + + + setup delle tabelle vocabolario + + + + + prende l'oggetto tabVocabolario in ram e lo trasforma in dictionary + + + + + + tableAdapter diritti + + + + + tableAdapter permessi + + + + + tableAdapter funzione + + + + + tableAdapter permessi2funzione + + + + + tableAdapter CdC + + + + + tableAdapter utenti + + + + + tableAdapter userData (user/pwd) + + + + + tableAdapter userDataExt (user/pwd) + + + + + table adapter lingue + + + + + table adapter vocabolario + + + + + table adapter versione vocabolario + + + + + table adapter versione anagrafica + + + + + oggetto vocabolario organizzato come dizionario con chiave lang#lemma e valore la traduzione + + + + + resetta il vocabolario rileggendo i dati... + + + + + crea nel db corrente il lemma richiesto e lo valorizza come "--{0}--" + + + + + + + classe singleton x la gestione dei tableadapters + + + + + elenco lingue ammesse da vocabolario... + + + + + classe di gestione lettura + + + + + esegue parsing fornendo dati ed headers + + + + + + + + esegue parsing fornendo dati + + + + + + + esegue parsing fornendo dati come stream + + + + + + + esegue parsing fornendo dati come stream ed headers + + + + + + + + struttura di comando da input utente (es: via barcode) + + + + + definisce se il comando sia valido o no + + + + + testo da mostrare dato il comando + + + + + comando registrato + + + + + comando precedentemente inserito + + + + + descrizione del comando + + + + + descrizione del comando precedente + + + + + valore del comando + + + + + valore tradotto del comando + + + + + costruttore del metodo... + + + + + Base class for every user control in the application, containing some common + behaviour and utility methods. + It is not meant to be be used directly. + + + + + tipo id controllo con classi di base comune da cui derivare gli *.asmx + + + + + nome della pagina correntemente caricata + + + + + memorizza la pagina precedente (ovvero la corrente ma non da page-object ma in session... + + + + + stringa con CDC in (...) dei cdc abilitati (da permesso gerarchicamente a discendere...) + + + + + stringa con elenco CDC abilitati (da permesso gerarchicamente a discendere...) + + + + + tabella diritti + + + + + tabella di tutti i cdc + + + + + tipo di anagrafica usata + + + + + importo il tipo di vista del modulo + + + + + elenco testuale csv dei cdc accessibili all'utente (x filtri tipo IN(...)) + + + + + numero di righe standard x i datagrid + + + + + numero di righe standard x i datagrid di anagrafica + + + + + numero di righe standard x i datagrid lunghi + + + + + numero di righe standard x i datagrid medi + + + + + numero di righe standard x i datagrid su mezza pagina + + + + + numero di righe standard x i selettori popup + + + + + indirizzo email dell'admin applicativo cui vanno le email in caso di anomalie... + + + + + indirizzo email dell'applicativo da cui partono le email in caso di anomalie... + + + + + indirizzo server SMTP + + + + + elenco delle pagine "safe" ovvero da non autorizzare - da web.config + + + + + elenco delle pagine "common" ovvero da autorizzare ma senza bisogno diritti in anagrafica - da web.config + + + + + valore che determina se è possibile forzare impersonificazioen utente... + + + + + livello di log (1-->5) + + + + + dir di logging + + + + + MAIN: esecuzione al caricamento del modulo delle routines di controllo utente e creazione pagina + + + + + + + predisposizione dati x pagina da cache/database a seconda della disponibilità in cache o refresh (B.1.4) + + + + + popola gli oggetti e le labels... (B.1.6) + + + + + disegna la pagina: prima i controlli poi il datagrid + + + + + aggiunge i link x i selettori + + + + + sistema i vari controlli della pagina + + + + + aggiorna eventuali datalist e datagrid + + + + + sistema tutte le labels traducendo i lemmi nella lingua utente ed in inglese + + + + + calcola come percentuale la radio dividendo/divisore + + + + + + + + limita una stringa al numero max di caratteri imposto + + + + + + + + Reads data from a stream until the end is reached. The + data is returned as a byte array. An IOException is + thrown if any of the underlying IO calls fail. + + The stream to read data from + The initial buffer length + + + + converte una data in formato aaaammgg in stringa gg/mm/aaaa + + + + + + + converte una data in formato aaaammgg in stringa aaaa-mm-gg + + + + + + + converte una stringa in formato gg/mm/aaaa in stringa(intero data) in formato aaaammgg + + + + + + + converte una datetime in un intero tipo yyyymmddhhmmss + + + + + + + formatta la data in formato dateTime in una data formato italiano come stringa gg/mm/aaaa + + + + + + + invia un alert jscript con messaggio indicato... + + messaggio dell'alert da mandare + + + + scrive immediatamente sulla pagina web il messaggio di avanzamento... + + + + + + restituisce una scringa formattata in testa e coda x essere un corretto comando javascript + + + + + + + invio email senza log + + + + + + + + + + invio email con log + + + + + + + + + + caricamento dati applicazione da sessione (B.1.3) + + + + + setup datamanagers... + + + + + reset update del modulo corrente + + + + + (ri)carica i dataset del modulo + + + + + verifica se tutti i dataset richiesti sono disponibili i cache + + + + + + salva nella cache i dataset caricati + + + + + carica dalla cache i dataset necessari + + + + + legge i valori standard x dataset e parametri + + + + + leggi i parametri di configurazione standard dell'applicativo + + + + + genera la stringa dei cdc autorizzati dell'utente + + + + + legge il dataset dei CdC + + + + + caricamento dati user da sessione (B.1.1) + + + + + verifica che l'utente abbia almeno un permesso per la pagina corrente altrimenti redirect ad unauthorized + + + + + salva in variabile pagina il nome della pagina corrente + + + + + selezione delle posizioni cdc autorizzate come stringa di filtraggio su POSIZIONE LIKE, se non ce ne fossero redirige su unauthorized.aspx + + + + + + risponde alla domanda se l'utente abbia permesso tipo writable (S) nel permessi2funzione + + + + + + verifica la condizione booleana e formatta di conseguenza la stringa di filtraggio da accodare al filtro x CdC autorizzati + + condizione + tipo di eguaglianza + nome parametro + valore parametro + + + + + crea la stringa di filtraggio x data secondo modalità tipo inizio/fine/durante... + + + + + + crea la stringa di filtraggio x data secondo modalità tipo minoreUguale / uguale / maggioreUguale... + + + + + + verifica la condizione booleana e formatta di conseguenza la stringa di filtraggio tipo LIKE x i campi inseriti separati da # SE valParam !="" + + + + + + + + esegue la ricerca dei cdc nelle posizioni indicate dal filtro e restituisce elenco distinct degli stessi + + filtro con cui cercare i cdc (del tipo " (POSIZIONE LIKE 'T.1.2.3%') OR ... " + stringa di filtraggio ricostruita per l'elenco dei cdc fino a quel momento trovati + ultimo cdc trovato + cdc corrente + + + + + restituisce il cdc dell'utente data la sua matricola + + + + + + + restituisce l'utente AS dall'utente win + + + + + + + restituisce la descr del CdC + + + + + + + invia la stringa jscript di conferma pre-cancellazione + + + + + + restituisce la stringa del path corretto per l'immagine richiesta nel formato "~/images/{0}{1}" + + verrà usato x posizione {0}, tipo "view" + verrà usato x posizione {1}, tipo "_s.png" + + + + + restituisce la stringa del path corretto per l'immagine richiesta nel formato "~/images/{0}{1}" + + verrà usato x posizione {0}, tipo "view" + verrà usato x posizione {1}, tipo "_s.png" + tipo del file richiesto..." + + + + + effettua traduzione del lemma + + + + + + + effettua traduzione in inglese del lemma + + + + + + + definisce visibilità + + + + + + + effettua la registrazione degli eventi + + + + + effettua l'inserimento vero e proprio dell'evento letto dai valori in session x l'utente corrente... + + evento da loggare + valori originali + nuovi valori + filtro associato + + + + salva in sessione i valori indicati + + dictionary dei valori vecchi + dictionary dei valori nuovi + bool su abilitazione al log dell'oggetto + descrizione evento da loggare + filtro associato all'evento + restituisce il numero di elementi contenuti, -1 significa nessuna differenza... + + + + salva in sessione i valori per un oggetto che sta x essere eliminato + + dictionary dei valori vecchi + bool su abilitazione al log dell'oggetto + descrizione evento da loggare + filtro associato all'evento + restituisce il numero di elementi contenuti, -1 significa nessuna differenza... + + + + imposto il tipo di anagrafica del controlloS + + + + + variabile salvata in view state x la stringa di sorting - dg 2 + + + + + variabile salvata in view state x la stringa di sorting - dg 2 + + + + + legge e scrive in viewState la stringa di filtraggio... + + + + + variabile salvata in viewstate x la direzione del sorting + + + + + genera la stringa filtro x i cdc autorizzati x l'user + + + + + + tipo di vista del modulo + + + + + Summary description for selettori + + + + + + + + + + + + + + + carica i dati CdC se in cache o da TableAdapter + + + + + restituisce l'elenco di tutti i cdc + + + + + + restituisce l'elenco di tutti i cdc della gerarchia dell'utente + + + + + + Represents a strongly typed in-memory cache of data. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + classe di gestione dei db x creazione/update alla versione richiesta + + + + + oggetto connessione + + + + + stringa di connessione + + + + + dir che contiene gli script da eseguire... + + + + + formato del file SQL impiegato (nel senso di formato come iFormat del tipo "App_{0:0000}.sql" --> da App_0001.sql ad App_9999.sql) + + + + + avvio protected della classe + + + + + esegue gli script di sql di update dal file richiesto + + + + + + + + Aggiorna il db eseguendo gli script dalla versione di partenza a quella di arrivo + + NB: per definizione rev 0 = resetta svuotando DB, rev 1 crea tabelle iniziali, rev 2 inserisce i valori di default + + nome DB di cui cercare script + revisione di partenza + revisione di arrivo + timeout max per ogni operazione + + + + + verifica se il db indicato esiste o meno... + + + + + + + + crea il db indicato con i parametri di connessione specificati + + + + + + + + Represents a strongly typed in-memory cache of data. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + classe con funzioni specifiche di calcolo + + + + + inizializzazione classe + + + + + elenco dei caratteri base 36: 0..9A..Z + + + + + + converte da base di dimensione nBase a valore intero + + valore in formato nBase + base, max 36 (0..9A..Z) + + + + + metodo di accesso singleton + + + + + tipo di chart (2D/3D) + + + + + 2D + + + + + 3D + + + + + web control che disegna un grafico a torta + + + + + altezza di default + + + + + larghezza di default + + + + + padding di default + + + + + legenda visibile di default + + + + + soglia minima 5% per mostrare il dato + + + + + renderizza il contenuto + + + + + + disegna la leggenda html laterale... + + + + + + disegna piechart 2-dim + + + + + + disegna piechart 3d ellittica + + + + + + traduce la stringa colore in oggetto colore + + + + + + + converte intero a stringa esadecimale + + + + + + + converte stringa esadecimale a intero + + + + + + + tipo di grafico (2D/3D) + + + + + ampiezza del grafico + + + + + altezza del grafico + + + + + padding grafico/container + + + + + boolean se si debba mostrale la legenda + + + + + percentuale minima da mostrare + + + + + serie di dati (tipizzata) ma mostrare + + + + + testo associato al controllo + + + + + layer gestione vari tipi di memoria: cache, session... + + + + + lettore file configurazione + + + + + oggetto singleton x accesso al layer di memoria + + + + + classe gestione accessi a Session, cache, viewstate, configuration... + + + + + legge dalla config un valore bool + + + + + + + legge dalla config un valore string + + + + + + + legge dalla config un valore int + + + + + + + carica dalla sessione un dato di tipo object generico + + + + + + + carica dalla sessione un dato di tipo boolean (se vuoto false) + + + + + + + carica dalla sessione un dato di tipo string + + + + + + + carica dalla sessione un dato di tipo long + + + + + + + carica dalla sessione un dato di tipo int + + + + + + + inserisce in session un valore + + + + + + + salvo un valore come cookie + + + + + + + + restituisco un valore da cookie + + + + + + + inserisce in session un valore + + nome della variabile + valore associato + indica se debba sopravvivere ad update (inserita in elenco valSess2SurvUpd) + + + + + svuota una variabile dalla session + + + + + + restituisce true se è presente in session l'oggetto richiesto + + + + + + + carica dalla Cache un dato di tipo object generico + + + + + + + carica dalla Cachee un dato di tipo boolean (se vuoto false) + + + + + + + carica dalla Cachee un dato di tipo string + + + + + + + inserisce in Cache un valore + + nome della variabile + valore + + + + inserisce in Cache un valore e su richiesta regitra tra le tab in cache da svuotare on update.. + + nome della variabile + valore + da registrare come tabella da svuotare on update? + + + + + svuota una variabile dalla Cache + + + + + + restituisce true se è presente in cache l'oggetto richiesto + + + + + + + aggiunge la stringa corrente nel dictionary delle tabelle messe in cache e da aggiornare su comando update + + + + + + aggiunge la stringa corrente nel dictionary delle tabelle messe in session che vanno preservate da comando update (es: oggetto selezionato...) + + + + + + + forza lo svuotamento delel tabelle indicate come in cache... + + + + + elenco dictionary delle tab in cache da aggiornare con update svuotando da cache... + + + + + elenco dictionary dei valori in session da NON aggiornare con update... + + + + + classe gestione parametri deviceper stampa + + + + + creazione oggetto parametri per stampa + + + + + + + + + + + + formato output + + + + + altezza + + + + + larghezza + + + + + margine Sx + + + + + margine Dx + + + + + margine Top + + + + + margine Bottom + + + + + enumeratore modalità login + + + + + login AD normale + + + + + forza utente fornendo password + + + + + forza ad un utente standard scelto dall'elenco + + + + + enumeratore modalità scrittura tag siteMap + + + + + nodo di tipo iniziale - apertura + + + + + nodo di tipo foglia + + + + + nodo di tipo finale - chiusura + + + + + enumeratore tipi di anagrafica + + + + + tipo di anagrafica Brembo + + + + + tipo di anagrafica generica + + + + + tipo di vista del modulo + + + + + modalità selezione + + + + + modalità editing + + + + + tipologia di file immagine + + + + + formato gif (no alpha channel) + + + + + formato jpeg + + + + + formato png + + + + + tipo di immagini usate per le icone di comando in web applications + + + + + icona annulla (croce rossa) + + + + + icona approva (simbolo coccarda) + + + + + icona barcode in campo bianco + + + + + icona barcode in campo arancio + + + + + icona clona (magic wand) + + + + + icona converma (spunta verde) + + + + + icona elimina (cestino) + + + + + icona modifica (matita) + + + + + icona notepad (blocco note) + + + + + icona notepad + pdf (blocco note) + + + + + icona nuovo (segno +) + + + + + icona seleziona (lente) + + + + + icona semaforo giallo + + + + + icona semaforo rosso + + + + + icona semaforo verde + + + + + icona stampa (printer) + + + + + dimensione immagini usate per le icone di comando in web applications + + + + + formato piccolo + + + + + formato medio + + + + + formato grande + + + + + modalità di esecuzione applicativi + + + + + modalità normale + + + + + modalità debug + + + + + salvataggio di tutti i lemmi tradotti + + + + + struttura che definisce i parametri di un turno di lavoro + + + + + definisce un intervalo di 2 date + + + + + data inizio + + + + + data fine + + + + + indica se sia valido il dato, ovvero inizio e fine > 0 e FINE >= INIZIO + + + + + struttura orario ordinarie/strordinarie + + + + + ore ordinarie + + + + + ore straordinarie + + + + + classe di funzioni inerenti le date + + + + + inizializzazione empty + + + + + calcola il turno di riferimento data una data di riferimento + + + + + + + effettua l'operazione di intersezione tra 2 intervali di date restituendo ulteriore intervallo: NB se sono intervali disgiunti restituisce 9/9/9999 x inizio e fine + + + + + + + + oggetto mese precedente alla dataLilmite + + + + + + oggetto mese corrente fino alla dataLilmite + + + + + + confronta le date e restituisce true se le date sono nello stesso mese + + + + + + + + restituisce l'intervallo del giorno completo che comprende la data indicata + + + + + + + restituisce l'intervallo di N giorni fino alla data indicata + + + + + + + + restituisce l'intervallo della settimana corrente per la data indicata + + + + + + + restituisce l'intervallo del mese corrente per la data indicata + + + + + + + restituisce l'intervallo del mese che comprendela data indicata + + + + + + + restituisce l'intervallo dell'anno corrente per la data indicata + + + + + + + oggetto singleton + + + + + classe di gestione delle email + + + + + stringa nel nome DNS o dell'ip del server SMTP + + + + + metodo static per la gestione delle email + + + + + + metodo static per la gestione delle email + + + + + + + procedura invio email + + email mittente + email destinatario + oggetto dell'email + corpo del messaggio + + + + procedura invio email + scrittura in log! + + email mittente + email destinatario + oggetto dell'email + corpo del messaggio + + + + metodo singleton gestione email... + + + + + Tipo di comparazione, Binary == CaseSensitive, Text = insensitive + + + + + tipo controllo : binario + + + + + tipo controllo : text + + + + + Funzione di splitting compatibile con multi-character e multi-line + + + + + stringa da splittare + + + + + Delimiter con cui splittare + + + + + Costruttore dello Splitter + + + + + comparatore case sensitive + + + + + + + + comparatore case insensitive + + + + + + + + parte principale dello splitter + + stringa da splittare + delimitatore ricercato + true=il delimiter è un blocco unico, false=qualsiasi oggetto del delimiter fa split (come split base) + + 0 -> Binary=CaseSensitive, 1 -> Text=case insensitive + + + + + elimina dal nome file il tipo (desinenza) + + + + + + + Classe di metodi che estendono quelli base applicati alle string + + + + + Trasforma in MAIUSCOLo il primo carattere della stringa + + stringa da processare + stringa processata + + + + restituisce la stringa completa e corretta del filepath del server (anche con vDir) + + path relativo alla cartella iis dell'applicativo + path fisico tradotto + + + + effettua escape di stringhe di ricerca di tipo filtro per apici e altri caratteri non ammessi + + + + + + + fornisce dati di base per l'utente + + + + + fornisce cognome e nome utente formattati a partire dall'username e dalla tabella UTENTE + + + + + + + restituisce la riga completa dall'username richiesto + + + + + + + + calcola il nome del computer dato l'IP + + + + + + + Represents a strongly typed in-memory cache of data. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + classe gestione utente: auth e permission/ruoli - versione GENERICA + + + + + cancella da session l'utente + + + + + carica la riga dati utente + + + + + carica la riga dati utente da SOLO USERNAME + + + + + Carica la tabella diritti dell'utente da db e salva in session + + + + + Carica la tabella diritti dell'utente da db e salva in session + + + + + Carica la tabella diritti dell'utente da db e salva in session SOLO per il CDC indicato + + + + + + Effettua setup dei permessi una volta salvati i diritti + + + + + imposta la lingua utente dal valore della riga DB + + + + + costruisce la mappa del sito per l'utente + + + + + formatta un nodo in modo corretto dai dati indicati + + + + + + + + + inizializza la gestione utente... + + + + + traduce il lemma nella lingua dell'user corrente + + + + + + + traduce il lemma in inglese + + + + + + + traduce il lemma nella lingua richiesta + + + + + + + traduce il lemma nella lingua dell'user e in inglese tra parentesi + + + + + + + LogOff utente con reset dati + + + + + + + + Procedura da chiamare DOPO aver messo in session i dati utente/dominio x caricare gli altri dati + + + + + + + + Procedura da chiamare DOPO aver messo in session i dati utente/dominio x caricare gli altri dati + + + + + + + + controllo utente/pwd da tab + + + + + + + + Procedura da chiamare DOPO aver messo in session i dati utente/dominio x caricare gli altri dati CON I DIRITTI SOLO per il CDC indicato + + + + + + + + + salva dati accessori quali il cdc dell'utente... + + + + + verifica nella tab diritti se l'utente abbia il right richiesto e fornisce bool in risposta + + + + + + + verifica le credenziali AD dell'utente... + + + + + + + + conta il numero di permessi utente per la pagina attuale e restituisce true se ne trova almeno 1 + + + + + + + verifica se il permesso utente per la pagina attuale sia write per almeno 1 diritto assegnato (restituisce true se ne trova almeno 1 con permessi2funzione.readwrite='S') + + + + + + + ricarica e ri-traduce la mappa sito per l'utente... + + + + + retituisce il nome apgina dai permessi utente + + + + + + restituisce cognome e nome di un utente dato username... + + username + + + + + restituisce cognome e nome di un utente data la matricola... + + matricola + + + + + restituisce cognome e nome di un utente dato username e dominio... + + username + dominio + + + + + restituisce cognome e nome di un utente dato username... + + username + + + + + restituisce cognome e nome di un utente dato username e dominio... + + username + dominio + + + + + restituisce cognome e nome di un utente dato username eventualmente comprensivo di dominio... + + {dominio\}userName + + + + + restituisce l'elenco delle funzioni abilitate dato modulo ed username partendo dalla radice dell'albero dei diritti + + + + + + + + restituisce l'elenco degli utenti dato i diritti che devono avere come modulo/funzione + + nome del modulo + nome della funzione + tabella utenti + + + + restituisce l'elenco delle email degli utenti dato i diritti che devono avere come modulo/funzione + + nome del modulo + nome della funzione + stringa di email separate da "," + + + + crea un nuovo utente con le credenziali indicate + + + + + + + + + + + + assegna il diritto all'utente indicato + + + + + + + + + + + toglier il diritto all'utente indicato + + + + + + + + + + + restituisce la tabella (per utente corrente) dei CDC abilitati per l'applicazione attuale da sessione (se non c'è salva...) + + modulo di cui si testano i diritti + + + + + versione statica della classe utente come singleton UtenTeSignletoN + + + + + restituisce la tabella diritti da session + + + + + tabella dei permessi utente + + + + + tabella dei permessi utente di tipo "WRITE" enabled + + + + + retituisce username AD + + + + + oggetto utente con metodi get/set + + + + + oggetto password con metodi get/set + + + + + oggetto dominio con metodi get/set + + + + + oggetto modulo (applicazione) con metodi get/set + + + + + oggetto lingua utente con metodi get/set + + + + + oggetto runMode corrente + + + + + restituisce true se utente forzato da forceUser.aspx + + + + + restituisce i valori della riga utente da db + + + + + restituisce una stringa formattata con cognome, nome e matricola + + + + + restituisce una stringa della sigla dell'utente + + + + + restituisce una stringa formattata con cognome e nome + + + + + restituisce una stringa formattata con cognome + + + + + restituisce una stringa formattata con nome + + + + + fornisce un file XML della mappa del sito abilitato per l'utente... + + + + + è un boolean che indica se in session ci siano user/dominio e quindi utente autenticato in rpecedenza... + + + + + Accesso in lettura e scrittura al filesystem per gestione files upload e download + + + + + path di lavoro dei metodi leggi/scrivi + + + + + verifica esistenza directory ed eventualmente crea restituendo nome completo di "/" finale + + + + + + + restituisce una tab di files dato l'elenco dei files + + + + + + + setta le directory + + + + + + oggetto WebClient + + + + + inizializza il metodo alla cartella indicata + + + non serve +... x retrocompatibilità... + + + + metodo di avvio empty + + + + + cerca di caricare il fileinfo o da httpcontext-application re-position o direttamente come workpath + nomefile + + + + + + + cerca di caricare il fileinfo o da httpcontext-application re-position o direttamente come workpath + nomefile + + + + + + + + cerca di caricare la directoryInfo o da httpcontext-application re-position o direttamente come workpath + + + + + + + Legge i dati da uno stream fino a quando arriva alla fine. + I dati sono restituiti come un byte[] array. un eccezione IOException è + sollevata se una delle chiamate IO sottostanti fallisce. + + Lo stream da cui leggere + Lunghezza buffer iniziale (-1 = default 32k) + + + + verifica esistenza directory, eventualmente crea e restituisce controllo DirectoryInfo + + + + + + ottiene il dataset dei files presenti nella directory indicata esplicitamente + + dir da indicizzare... già mappata! ( es SteamwareStrings.getFilePath(...) ) + + + + + ottiene il dataset dei files presenti nella directory indicata all'istanziazione dell'oggetto + + + + + + ottiene il dataset dei files DEL TIPO "like {param}" presenti nella directory indicata all'istanziazione dell'oggetto + + + + + + elenco dei files come array di oggetti FileInfo + + + + + + elenco dei files come array di oggetti FileInfo filtrati per parametro + + + + + + + elimina la directory di lavoro se è dir virtuale mappata + + + + + + elimina tutti i files con la regexp indicata da una directory, true se cancellato almeno uno + + regexp selezione files in dir (* = tutti!!!) + + + + + verifica se il file indicato esista in workDir + + + + + + + elimina il file indicato dalla directory di lavoro + + + + + + + restituisce lo stream del file richiesto + + + + + + + restituisce la stringa letta dal file richiesto + + + + + + + scrive il file dallo stream byte[] inviato + + + + + + + + scrive il file dalla stringa inviata + + + + + + + + converte una string in un byte[] + + + + + + + converte un byte[] in una string + + + + + + + sposta il file da From a To... + + + + + + + + + copia il file da From a To... + + + + + + + + + copia il file da From a To... + + + + + + + + + + imposta la dir di lavoro + + + + + + imposta la dir di lavoro + + + non serve +... x retrocompatibilità... + + + + imposta la dir di lavoro impostandola dal mapPath corretto della web app... + + + + + + esegue un comando in shell + + + + + + + + + esegue un comando in shell + + + + + + + + + Scarica un file dall'url fornito nella directory indicata x il filemover col nome richiesto + + url del file + nome con cui salvare il file + + + + + comprime zip il file indicato + + + + + + + comprime zip i files corrispondenti alla RegExp indicata nella dir corrente + + Espressione ricerca, come *.txt + Nome del file zip da creare + + + + + scompatta tutto il contenuto di un file zip + + + + + + + scompatta uno specifico file contenuto in un file zip + + + + + + + elimina il file indicato + + + + + + + calcola la dim della directory corrente... + + + + + + + elimina il file + vecchio + + + + + + + versione statica (singleton) del'oggetto fileMover + + + + + classe per effettuare confronto tra valori disomogeneri per tipo e costruire diff testuali + + + + + valore originale + + + + + nuovo valore + + + + + dictionary dei parametri vecchi + + + + + dictionary dei parametri nuovi + + + + + inizializzazione classe + + + + + valorizza i diff dei valori old e new + + + + + calcola solo il vettore dei valori old (x delete) + + + + + oggetto statico per il confronto valori + + + + + stringa diff dei valori originali modificati + + + + + stringa diff dei valori nuovi modificati + + + + + dictionary dei parametri old + + + + + dictionary dei parametri new + + + + + classe gestione logging esteso di eventi e note utente (correlabili) + + + + + TableAdapter di accesso alla tabella anagrafica filtraggi + + + + + TableAdapter di accesso alla tabella anagrafica record + + + + + TableAdapter di accesso alla tabella logging record di eventi + + + + + TableAdapter di accesso alla tabella logging utente + + + + + TableAdapter di accesso alla vista logging eventi + + + + + TableAdapter di accesso alla vista logging utente + + + + + effettua setup dei connection strings da web.config delal singola applicazione + + + + + avvio i tari tableAdapters + + + + + avvio della classe istanziando db e + + + + + oggetto statico di accesso ai metodi della classe... + + + + + tabella eventi + + + + + + tabella note + + + + + + tabella eventi secondo filtro + + filtro gestito come condizione "LIKE '%{0}%'" rispetto al filtro salvato con l'evento + + + + + tabella note secondo filtro + + filtro gestito come condizione "LIKE '%{0}%'" rispetto al filtro salvato con l'evento + + + + + tabella eventi secondo filtro e condizione ulteriore WHERE esplicitata + + filtro gestito come condizione "LIKE '%{0}%'" rispetto al filtro salvato con l'evento + ulteriore condizione WHERE per filtrare i dati (testo {0} della condizione "WHERE {0}" + + + + + tabella note secondo filtro e condizione ulteriore WHERE esplicitata + + filtro gestito come condizione "LIKE '%{0}%'" rispetto al filtro salvato con l'evento + ulteriore condizione WHERE per filtrare i dati (testo {0} della condizione "WHERE {0}" + + + + + tabella note secondo filtro + + filtro gestito come condizione "LIKE '%{0}%'" rispetto al filtro salvato con l'evento + + + + + inserisce l'evento indicato dai parametri + + user che ha generato l'evento + pagina/form applicaizone in cui l'evento si è generato + valore originale(se c'è) + valore nuovo/modificato + descrizione evento (poi gestita con anagrafica interna) + filtro logico evento (poi gestita con anagrafica interna) + + + + inserisce la nota utente indicata dai parametri, restituisce idx della nota creata... + + user che ha inserito la nota + testo della nota + valore ulteriore da associare alla nota (es: label, codice, versione, ...) + filtro logico evento (poi gestita con anagrafica interna) + intero dell'idx della nota creata + + + + associa l'evento e la nota indicati + + idx del record da associare + idx chiave della nota da associare + + + + associa l'ultimo evento del filtro indicato alla nota + + filtro associato all'ultimo evento... + idx chiave della nota da associare + + + + segna come cestinati tutti gli eventi dell'utente indicato non ancora associati o cestinati + + utente generatore dell'evento + + + + segna come cestinati tutti gli eventi dell'utente indicato non ancora associati o cestinati + + utente generatore dell'evento + + + + Elimina gli eventi cestinati generati dall'utente indicato + + utente generatore dell'evento + + + + Elimina gli eventi cestinati anteriori alla data selezionata + + dataOra dell'evento + + + + effettua la registrazione dell'evento in session + + + + + metodo di comportamento del controllo di logging + + + + + nasconde pannello log + + + + + memorizza log inserito + + + + + mostra pannello log + + + + + metodo di comportamento del controllo di logging + + + + + indica il primo step del doppio livello di approvazione (completamento) + + + + + SOLO con incremento indice di revisione dell'oggetto approvato + + + + + SOLO mantenendo indice di revisione corrente + + + + + permette SIA con revisione che senza (e anche rev -1) + + + + + Pagina base applicazioni SteamWare da cui derivare le altre + + + + + Iniziazlizzazione void (non fa nulla) + + + + + Metodo MAIN: viene eseguita al caricamento ed effettua delle routines per il controllo utente e istanzia l'oggetto memLayer + + + + + + + rimanda alla pagina di Work In Progress salvando in session un titolo ed una descrizione che al pagina wip poi mostrerà all'utente + + titolo da mostrare nella pagina WIP + descrizione da mostrare nella pagina WIP + diff --git a/GMW/GMW/bin/SteamWare.dll b/GMW/GMW/bin/SteamWare.dll index 6b8480ea01125a0f8b0cc56117c2565e2db9901b..d02639d123bd69827c1e9ca8cbfb47e303d77395 100644 GIT binary patch delta 108 zcmZp;BH3_7azY35DYIvd-L2h>t=&wm-OR1sEUn$FTf5mbO$Ck_Z>ja2an^6f&tqG{ zM7FQpe#De5Mn?yz!H)q5n1Hwrh%Fk}7%Y<57=nUbf>SyT=2uL;?6&4>UemRE%+t2} JB(ZH_2LLsaDVzWR delta 108 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 MM*MfGyiMT$10T!pj{pDw diff --git a/GMW/GMW/obj/Debug/ResolveAssemblyReference.cache b/GMW/GMW/obj/Debug/ResolveAssemblyReference.cache index 3ea04271a3bc43cee72e182f91e475446dd92489..120e87a268e3a92ad20157f474057e4291b81d37 100644 GIT binary patch delta 6983 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 diff --git a/GMW/GMW/sanpos_consumoF10.aspx b/GMW/GMW/sanpos_consumoF10.aspx new file mode 100644 index 00000000..71f4ce69 --- /dev/null +++ b/GMW/GMW/sanpos_consumoF10.aspx @@ -0,0 +1,5 @@ +<%@ Page Title="" Language="C#" MasterPageFile="~/WebMasterPages/AjaxSimpleFull.master" AutoEventWireup="true" CodeBehind="sanpos_consumoF10.aspx.cs" Inherits="GMW.sanpos_consumoF10" %> +<%@ Register src="WebUserControls/mod_sanpos_consumoF10.ascx" tagname="mod_sanpos_consumoF10" tagprefix="uc1" %> + + + diff --git a/GMW/GMW/sanpos_consumoF10.aspx.cs b/GMW/GMW/sanpos_consumoF10.aspx.cs new file mode 100644 index 00000000..509fd12a --- /dev/null +++ b/GMW/GMW/sanpos_consumoF10.aspx.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +namespace GMW +{ + public partial class sanpos_consumoF10 : System.Web.UI.Page + { + protected void Page_Load(object sender, EventArgs e) + { + + } + } +} diff --git a/GMW/GMW/sanpos_consumoF10.aspx.designer.cs b/GMW/GMW/sanpos_consumoF10.aspx.designer.cs new file mode 100644 index 00000000..b7f1406b --- /dev/null +++ b/GMW/GMW/sanpos_consumoF10.aspx.designer.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:2.0.50727.4963 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace GMW { + + + public partial class sanpos_consumoF10 { + + /// + /// mod_sanpos_consumoF101 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::GMW.WebUserControls.mod_sanpos_consumoF10 mod_sanpos_consumoF101; + } +} diff --git a/GMW/GMW_data/bin/Debug/GMW_data.dll b/GMW/GMW_data/bin/Debug/GMW_data.dll index 645496598cc683b5d72bbcccb0e0e34fbcbb2c00..b81d0b30080215fbec2926ae6e6a3c3404e0c11d 100644 GIT binary patch delta 119 zcmZqp5!Ub{Y(fX~X|rdI-L2h>t=&wm-OR1sEUn$Ft=(*`-R!O19If4)t=(L$-Q2C+ zJgwclt=)XB-TbZH0%Tf3QByO~?NSz5bUTf5m>yV+a2Ia<3pTf4bhySZDt zd0M-9Tf6yMyZKwY1zNiWTf2o?yMgs>#T>ed=b>Yz_dkwJ;t4 diff --git a/GMW/GMW_data/bin/Debug/SteamWare.dll b/GMW/GMW_data/bin/Debug/SteamWare.dll index 6b8480ea01125a0f8b0cc56117c2565e2db9901b..d02639d123bd69827c1e9ca8cbfb47e303d77395 100644 GIT binary patch delta 108 zcmZp;BH3_7azY35DYIvd-L2h>t=&wm-OR1sEUn$FTf5mbO$Ck_Z>ja2an^6f&tqG{ zM7FQpe#De5Mn?yz!H)q5n1Hwrh%Fk}7%Y<57=nUbf>SyT=2uL;?6&4>UemRE%+t2} JB(ZH_2LLsaDVzWR delta 108 zcmZp;BH3_7azY35!sN@1-L2h>t=&wm-OR1sEUn$FTf5mbO$At#p3i%;v&&)m-y^r@ z%v^DB`w>&N7#$s;20sQMU;^SgAhu{=W3WhKV+aa%3I6h2KRe9d*l&XH!wXqGZ?SteamWare + + + classe gesione log files applicazioni + + + + + directory base x logs + + + + + nome del file corrente + + + + + max mb di log da accumulare + + + + + controlla se si debba mantenere sotto controllo la dimensioen della cartella logs + + + + + singleton del logger + + + + + avvio del logger nella dir desiderata + + + + + avvio del logger nella dir desiderata + + + + + avvio del logger nella dir desiderata con il max di dati indicato + + + + + resetta il logfile odierno + + + + + scrive sul file log di default il valore della variabile string passata su una riga... (tab delim?!?) + + testo iniziale del log + + + + + scrive un messaggio di log con etichetta pre + + testo messaggio + tipo di log da registrare (etichetta [...]) + + + + + fornisce il nome del file in cui loggare (ed eventualmente crea...) + + + + + provvede a verificare la dim della cartella dei log e cancella i + vecchi fino a restare a dim inferiori a _logMaxMb + + + + + fornisce il file + vecchio + + + + + + + livello di log applicazione (da web.config, chiave '_logLevel') + + + + + tipo di log ammesso + + + + + informazioni di debug + + + + + errori + + + + + eccezioni nell'esecuzione try/catch + + + + + errori fatali + + + + + informazioni opzionali + + + + + log dei lemmi invocati per traduzione da vocabolario + + + + + fase di avvio componente + + + + + avvisi + + + + + classe di wrap verso i TableAdapter impiegati + + + + + metodo protected di avvio della classe + + + + + procedura di avvio dei tableAdapter + + + + + procedura di avvio dei tableAdapter + + + + + effettua setup dei connection strings da web.config delal singola applicazione + + + + + effettua setup dei connection strings da web.config delal singola applicazione + + + + + setup delle tabelle vocabolario + + + + + prende l'oggetto tabVocabolario in ram e lo trasforma in dictionary + + + + + + tableAdapter diritti + + + + + tableAdapter permessi + + + + + tableAdapter funzione + + + + + tableAdapter permessi2funzione + + + + + tableAdapter CdC + + + + + tableAdapter utenti + + + + + tableAdapter userData (user/pwd) + + + + + tableAdapter userDataExt (user/pwd) + + + + + table adapter lingue + + + + + table adapter vocabolario + + + + + table adapter versione vocabolario + + + + + table adapter versione anagrafica + + + + + oggetto vocabolario organizzato come dizionario con chiave lang#lemma e valore la traduzione + + + + + resetta il vocabolario rileggendo i dati... + + + + + crea nel db corrente il lemma richiesto e lo valorizza come "--{0}--" + + + + + + + classe singleton x la gestione dei tableadapters + + + + + elenco lingue ammesse da vocabolario... + + + + + classe di gestione lettura + + + + + esegue parsing fornendo dati ed headers + + + + + + + + esegue parsing fornendo dati + + + + + + + esegue parsing fornendo dati come stream + + + + + + + esegue parsing fornendo dati come stream ed headers + + + + + + + + struttura di comando da input utente (es: via barcode) + + + + + definisce se il comando sia valido o no + + + + + testo da mostrare dato il comando + + + + + comando registrato + + + + + comando precedentemente inserito + + + + + descrizione del comando + + + + + descrizione del comando precedente + + + + + valore del comando + + + + + valore tradotto del comando + + + + + costruttore del metodo... + + + + + Base class for every user control in the application, containing some common + behaviour and utility methods. + It is not meant to be be used directly. + + + + + tipo id controllo con classi di base comune da cui derivare gli *.asmx + + + + + nome della pagina correntemente caricata + + + + + memorizza la pagina precedente (ovvero la corrente ma non da page-object ma in session... + + + + + stringa con CDC in (...) dei cdc abilitati (da permesso gerarchicamente a discendere...) + + + + + stringa con elenco CDC abilitati (da permesso gerarchicamente a discendere...) + + + + + tabella diritti + + + + + tabella di tutti i cdc + + + + + tipo di anagrafica usata + + + + + importo il tipo di vista del modulo + + + + + elenco testuale csv dei cdc accessibili all'utente (x filtri tipo IN(...)) + + + + + numero di righe standard x i datagrid + + + + + numero di righe standard x i datagrid di anagrafica + + + + + numero di righe standard x i datagrid lunghi + + + + + numero di righe standard x i datagrid medi + + + + + numero di righe standard x i datagrid su mezza pagina + + + + + numero di righe standard x i selettori popup + + + + + indirizzo email dell'admin applicativo cui vanno le email in caso di anomalie... + + + + + indirizzo email dell'applicativo da cui partono le email in caso di anomalie... + + + + + indirizzo server SMTP + + + + + elenco delle pagine "safe" ovvero da non autorizzare - da web.config + + + + + elenco delle pagine "common" ovvero da autorizzare ma senza bisogno diritti in anagrafica - da web.config + + + + + valore che determina se è possibile forzare impersonificazioen utente... + + + + + livello di log (1-->5) + + + + + dir di logging + + + + + MAIN: esecuzione al caricamento del modulo delle routines di controllo utente e creazione pagina + + + + + + + predisposizione dati x pagina da cache/database a seconda della disponibilità in cache o refresh (B.1.4) + + + + + popola gli oggetti e le labels... (B.1.6) + + + + + disegna la pagina: prima i controlli poi il datagrid + + + + + aggiunge i link x i selettori + + + + + sistema i vari controlli della pagina + + + + + aggiorna eventuali datalist e datagrid + + + + + sistema tutte le labels traducendo i lemmi nella lingua utente ed in inglese + + + + + calcola come percentuale la radio dividendo/divisore + + + + + + + + limita una stringa al numero max di caratteri imposto + + + + + + + + Reads data from a stream until the end is reached. The + data is returned as a byte array. An IOException is + thrown if any of the underlying IO calls fail. + + The stream to read data from + The initial buffer length + + + + converte una data in formato aaaammgg in stringa gg/mm/aaaa + + + + + + + converte una data in formato aaaammgg in stringa aaaa-mm-gg + + + + + + + converte una stringa in formato gg/mm/aaaa in stringa(intero data) in formato aaaammgg + + + + + + + converte una datetime in un intero tipo yyyymmddhhmmss + + + + + + + formatta la data in formato dateTime in una data formato italiano come stringa gg/mm/aaaa + + + + + + + invia un alert jscript con messaggio indicato... + + messaggio dell'alert da mandare + + + + scrive immediatamente sulla pagina web il messaggio di avanzamento... + + + + + + restituisce una scringa formattata in testa e coda x essere un corretto comando javascript + + + + + + + invio email senza log + + + + + + + + + + invio email con log + + + + + + + + + + caricamento dati applicazione da sessione (B.1.3) + + + + + setup datamanagers... + + + + + reset update del modulo corrente + + + + + (ri)carica i dataset del modulo + + + + + verifica se tutti i dataset richiesti sono disponibili i cache + + + + + + salva nella cache i dataset caricati + + + + + carica dalla cache i dataset necessari + + + + + legge i valori standard x dataset e parametri + + + + + leggi i parametri di configurazione standard dell'applicativo + + + + + genera la stringa dei cdc autorizzati dell'utente + + + + + legge il dataset dei CdC + + + + + caricamento dati user da sessione (B.1.1) + + + + + verifica che l'utente abbia almeno un permesso per la pagina corrente altrimenti redirect ad unauthorized + + + + + salva in variabile pagina il nome della pagina corrente + + + + + selezione delle posizioni cdc autorizzate come stringa di filtraggio su POSIZIONE LIKE, se non ce ne fossero redirige su unauthorized.aspx + + + + + + risponde alla domanda se l'utente abbia permesso tipo writable (S) nel permessi2funzione + + + + + + verifica la condizione booleana e formatta di conseguenza la stringa di filtraggio da accodare al filtro x CdC autorizzati + + condizione + tipo di eguaglianza + nome parametro + valore parametro + + + + + crea la stringa di filtraggio x data secondo modalità tipo inizio/fine/durante... + + + + + + crea la stringa di filtraggio x data secondo modalità tipo minoreUguale / uguale / maggioreUguale... + + + + + + verifica la condizione booleana e formatta di conseguenza la stringa di filtraggio tipo LIKE x i campi inseriti separati da # SE valParam !="" + + + + + + + + esegue la ricerca dei cdc nelle posizioni indicate dal filtro e restituisce elenco distinct degli stessi + + filtro con cui cercare i cdc (del tipo " (POSIZIONE LIKE 'T.1.2.3%') OR ... " + stringa di filtraggio ricostruita per l'elenco dei cdc fino a quel momento trovati + ultimo cdc trovato + cdc corrente + + + + + restituisce il cdc dell'utente data la sua matricola + + + + + + + restituisce l'utente AS dall'utente win + + + + + + + restituisce la descr del CdC + + + + + + + invia la stringa jscript di conferma pre-cancellazione + + + + + + restituisce la stringa del path corretto per l'immagine richiesta nel formato "~/images/{0}{1}" + + verrà usato x posizione {0}, tipo "view" + verrà usato x posizione {1}, tipo "_s.png" + + + + + restituisce la stringa del path corretto per l'immagine richiesta nel formato "~/images/{0}{1}" + + verrà usato x posizione {0}, tipo "view" + verrà usato x posizione {1}, tipo "_s.png" + tipo del file richiesto..." + + + + + effettua traduzione del lemma + + + + + + + effettua traduzione in inglese del lemma + + + + + + + definisce visibilità + + + + + + + effettua la registrazione degli eventi + + + + + effettua l'inserimento vero e proprio dell'evento letto dai valori in session x l'utente corrente... + + evento da loggare + valori originali + nuovi valori + filtro associato + + + + salva in sessione i valori indicati + + dictionary dei valori vecchi + dictionary dei valori nuovi + bool su abilitazione al log dell'oggetto + descrizione evento da loggare + filtro associato all'evento + restituisce il numero di elementi contenuti, -1 significa nessuna differenza... + + + + salva in sessione i valori per un oggetto che sta x essere eliminato + + dictionary dei valori vecchi + bool su abilitazione al log dell'oggetto + descrizione evento da loggare + filtro associato all'evento + restituisce il numero di elementi contenuti, -1 significa nessuna differenza... + + + + imposto il tipo di anagrafica del controlloS + + + + + variabile salvata in view state x la stringa di sorting - dg 2 + + + + + variabile salvata in view state x la stringa di sorting - dg 2 + + + + + legge e scrive in viewState la stringa di filtraggio... + + + + + variabile salvata in viewstate x la direzione del sorting + + + + + genera la stringa filtro x i cdc autorizzati x l'user + + + + + + tipo di vista del modulo + + + + + Summary description for selettori + + + + + + + + + + + + + + + carica i dati CdC se in cache o da TableAdapter + + + + + restituisce l'elenco di tutti i cdc + + + + + + restituisce l'elenco di tutti i cdc della gerarchia dell'utente + + + + + + Represents a strongly typed in-memory cache of data. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + classe di gestione dei db x creazione/update alla versione richiesta + + + + + oggetto connessione + + + + + stringa di connessione + + + + + dir che contiene gli script da eseguire... + + + + + formato del file SQL impiegato (nel senso di formato come iFormat del tipo "App_{0:0000}.sql" --> da App_0001.sql ad App_9999.sql) + + + + + avvio protected della classe + + + + + esegue gli script di sql di update dal file richiesto + + + + + + + + Aggiorna il db eseguendo gli script dalla versione di partenza a quella di arrivo + + NB: per definizione rev 0 = resetta svuotando DB, rev 1 crea tabelle iniziali, rev 2 inserisce i valori di default + + nome DB di cui cercare script + revisione di partenza + revisione di arrivo + timeout max per ogni operazione + + + + + verifica se il db indicato esiste o meno... + + + + + + + + crea il db indicato con i parametri di connessione specificati + + + + + + + + Represents a strongly typed in-memory cache of data. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + classe con funzioni specifiche di calcolo + + + + + inizializzazione classe + + + + + elenco dei caratteri base 36: 0..9A..Z + + + + + + converte da base di dimensione nBase a valore intero + + valore in formato nBase + base, max 36 (0..9A..Z) + + + + + metodo di accesso singleton + + + + + tipo di chart (2D/3D) + + + + + 2D + + + + + 3D + + + + + web control che disegna un grafico a torta + + + + + altezza di default + + + + + larghezza di default + + + + + padding di default + + + + + legenda visibile di default + + + + + soglia minima 5% per mostrare il dato + + + + + renderizza il contenuto + + + + + + disegna la leggenda html laterale... + + + + + + disegna piechart 2-dim + + + + + + disegna piechart 3d ellittica + + + + + + traduce la stringa colore in oggetto colore + + + + + + + converte intero a stringa esadecimale + + + + + + + converte stringa esadecimale a intero + + + + + + + tipo di grafico (2D/3D) + + + + + ampiezza del grafico + + + + + altezza del grafico + + + + + padding grafico/container + + + + + boolean se si debba mostrale la legenda + + + + + percentuale minima da mostrare + + + + + serie di dati (tipizzata) ma mostrare + + + + + testo associato al controllo + + + + + layer gestione vari tipi di memoria: cache, session... + + + + + lettore file configurazione + + + + + oggetto singleton x accesso al layer di memoria + + + + + classe gestione accessi a Session, cache, viewstate, configuration... + + + + + legge dalla config un valore bool + + + + + + + legge dalla config un valore string + + + + + + + legge dalla config un valore int + + + + + + + carica dalla sessione un dato di tipo object generico + + + + + + + carica dalla sessione un dato di tipo boolean (se vuoto false) + + + + + + + carica dalla sessione un dato di tipo string + + + + + + + carica dalla sessione un dato di tipo long + + + + + + + carica dalla sessione un dato di tipo int + + + + + + + inserisce in session un valore + + + + + + + salvo un valore come cookie + + + + + + + + restituisco un valore da cookie + + + + + + + inserisce in session un valore + + nome della variabile + valore associato + indica se debba sopravvivere ad update (inserita in elenco valSess2SurvUpd) + + + + + svuota una variabile dalla session + + + + + + restituisce true se è presente in session l'oggetto richiesto + + + + + + + carica dalla Cache un dato di tipo object generico + + + + + + + carica dalla Cachee un dato di tipo boolean (se vuoto false) + + + + + + + carica dalla Cachee un dato di tipo string + + + + + + + inserisce in Cache un valore + + nome della variabile + valore + + + + inserisce in Cache un valore e su richiesta regitra tra le tab in cache da svuotare on update.. + + nome della variabile + valore + da registrare come tabella da svuotare on update? + + + + + svuota una variabile dalla Cache + + + + + + restituisce true se è presente in cache l'oggetto richiesto + + + + + + + aggiunge la stringa corrente nel dictionary delle tabelle messe in cache e da aggiornare su comando update + + + + + + aggiunge la stringa corrente nel dictionary delle tabelle messe in session che vanno preservate da comando update (es: oggetto selezionato...) + + + + + + + forza lo svuotamento delel tabelle indicate come in cache... + + + + + elenco dictionary delle tab in cache da aggiornare con update svuotando da cache... + + + + + elenco dictionary dei valori in session da NON aggiornare con update... + + + + + classe gestione parametri deviceper stampa + + + + + creazione oggetto parametri per stampa + + + + + + + + + + + + formato output + + + + + altezza + + + + + larghezza + + + + + margine Sx + + + + + margine Dx + + + + + margine Top + + + + + margine Bottom + + + + + enumeratore modalità login + + + + + login AD normale + + + + + forza utente fornendo password + + + + + forza ad un utente standard scelto dall'elenco + + + + + enumeratore modalità scrittura tag siteMap + + + + + nodo di tipo iniziale - apertura + + + + + nodo di tipo foglia + + + + + nodo di tipo finale - chiusura + + + + + enumeratore tipi di anagrafica + + + + + tipo di anagrafica Brembo + + + + + tipo di anagrafica generica + + + + + tipo di vista del modulo + + + + + modalità selezione + + + + + modalità editing + + + + + tipologia di file immagine + + + + + formato gif (no alpha channel) + + + + + formato jpeg + + + + + formato png + + + + + tipo di immagini usate per le icone di comando in web applications + + + + + icona annulla (croce rossa) + + + + + icona approva (simbolo coccarda) + + + + + icona barcode in campo bianco + + + + + icona barcode in campo arancio + + + + + icona clona (magic wand) + + + + + icona converma (spunta verde) + + + + + icona elimina (cestino) + + + + + icona modifica (matita) + + + + + icona notepad (blocco note) + + + + + icona notepad + pdf (blocco note) + + + + + icona nuovo (segno +) + + + + + icona seleziona (lente) + + + + + icona semaforo giallo + + + + + icona semaforo rosso + + + + + icona semaforo verde + + + + + icona stampa (printer) + + + + + dimensione immagini usate per le icone di comando in web applications + + + + + formato piccolo + + + + + formato medio + + + + + formato grande + + + + + modalità di esecuzione applicativi + + + + + modalità normale + + + + + modalità debug + + + + + salvataggio di tutti i lemmi tradotti + + + + + struttura che definisce i parametri di un turno di lavoro + + + + + definisce un intervalo di 2 date + + + + + data inizio + + + + + data fine + + + + + indica se sia valido il dato, ovvero inizio e fine > 0 e FINE >= INIZIO + + + + + struttura orario ordinarie/strordinarie + + + + + ore ordinarie + + + + + ore straordinarie + + + + + classe di funzioni inerenti le date + + + + + inizializzazione empty + + + + + calcola il turno di riferimento data una data di riferimento + + + + + + + effettua l'operazione di intersezione tra 2 intervali di date restituendo ulteriore intervallo: NB se sono intervali disgiunti restituisce 9/9/9999 x inizio e fine + + + + + + + + oggetto mese precedente alla dataLilmite + + + + + + oggetto mese corrente fino alla dataLilmite + + + + + + confronta le date e restituisce true se le date sono nello stesso mese + + + + + + + + restituisce l'intervallo del giorno completo che comprende la data indicata + + + + + + + restituisce l'intervallo di N giorni fino alla data indicata + + + + + + + + restituisce l'intervallo della settimana corrente per la data indicata + + + + + + + restituisce l'intervallo del mese corrente per la data indicata + + + + + + + restituisce l'intervallo del mese che comprendela data indicata + + + + + + + restituisce l'intervallo dell'anno corrente per la data indicata + + + + + + + oggetto singleton + + + + + classe di gestione delle email + + + + + stringa nel nome DNS o dell'ip del server SMTP + + + + + metodo static per la gestione delle email + + + + + + metodo static per la gestione delle email + + + + + + + procedura invio email + + email mittente + email destinatario + oggetto dell'email + corpo del messaggio + + + + procedura invio email + scrittura in log! + + email mittente + email destinatario + oggetto dell'email + corpo del messaggio + + + + metodo singleton gestione email... + + + + + Tipo di comparazione, Binary == CaseSensitive, Text = insensitive + + + + + tipo controllo : binario + + + + + tipo controllo : text + + + + + Funzione di splitting compatibile con multi-character e multi-line + + + + + stringa da splittare + + + + + Delimiter con cui splittare + + + + + Costruttore dello Splitter + + + + + comparatore case sensitive + + + + + + + + comparatore case insensitive + + + + + + + + parte principale dello splitter + + stringa da splittare + delimitatore ricercato + true=il delimiter è un blocco unico, false=qualsiasi oggetto del delimiter fa split (come split base) + + 0 -> Binary=CaseSensitive, 1 -> Text=case insensitive + + + + + elimina dal nome file il tipo (desinenza) + + + + + + + Classe di metodi che estendono quelli base applicati alle string + + + + + Trasforma in MAIUSCOLo il primo carattere della stringa + + stringa da processare + stringa processata + + + + restituisce la stringa completa e corretta del filepath del server (anche con vDir) + + path relativo alla cartella iis dell'applicativo + path fisico tradotto + + + + effettua escape di stringhe di ricerca di tipo filtro per apici e altri caratteri non ammessi + + + + + + + fornisce dati di base per l'utente + + + + + fornisce cognome e nome utente formattati a partire dall'username e dalla tabella UTENTE + + + + + + + restituisce la riga completa dall'username richiesto + + + + + + + + calcola il nome del computer dato l'IP + + + + + + + Represents a strongly typed in-memory cache of data. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + classe gestione utente: auth e permission/ruoli - versione GENERICA + + + + + cancella da session l'utente + + + + + carica la riga dati utente + + + + + carica la riga dati utente da SOLO USERNAME + + + + + Carica la tabella diritti dell'utente da db e salva in session + + + + + Carica la tabella diritti dell'utente da db e salva in session + + + + + Carica la tabella diritti dell'utente da db e salva in session SOLO per il CDC indicato + + + + + + Effettua setup dei permessi una volta salvati i diritti + + + + + imposta la lingua utente dal valore della riga DB + + + + + costruisce la mappa del sito per l'utente + + + + + formatta un nodo in modo corretto dai dati indicati + + + + + + + + + inizializza la gestione utente... + + + + + traduce il lemma nella lingua dell'user corrente + + + + + + + traduce il lemma in inglese + + + + + + + traduce il lemma nella lingua richiesta + + + + + + + traduce il lemma nella lingua dell'user e in inglese tra parentesi + + + + + + + LogOff utente con reset dati + + + + + + + + Procedura da chiamare DOPO aver messo in session i dati utente/dominio x caricare gli altri dati + + + + + + + + Procedura da chiamare DOPO aver messo in session i dati utente/dominio x caricare gli altri dati + + + + + + + + controllo utente/pwd da tab + + + + + + + + Procedura da chiamare DOPO aver messo in session i dati utente/dominio x caricare gli altri dati CON I DIRITTI SOLO per il CDC indicato + + + + + + + + + salva dati accessori quali il cdc dell'utente... + + + + + verifica nella tab diritti se l'utente abbia il right richiesto e fornisce bool in risposta + + + + + + + verifica le credenziali AD dell'utente... + + + + + + + + conta il numero di permessi utente per la pagina attuale e restituisce true se ne trova almeno 1 + + + + + + + verifica se il permesso utente per la pagina attuale sia write per almeno 1 diritto assegnato (restituisce true se ne trova almeno 1 con permessi2funzione.readwrite='S') + + + + + + + ricarica e ri-traduce la mappa sito per l'utente... + + + + + retituisce il nome apgina dai permessi utente + + + + + + restituisce cognome e nome di un utente dato username... + + username + + + + + restituisce cognome e nome di un utente data la matricola... + + matricola + + + + + restituisce cognome e nome di un utente dato username e dominio... + + username + dominio + + + + + restituisce cognome e nome di un utente dato username... + + username + + + + + restituisce cognome e nome di un utente dato username e dominio... + + username + dominio + + + + + restituisce cognome e nome di un utente dato username eventualmente comprensivo di dominio... + + {dominio\}userName + + + + + restituisce l'elenco delle funzioni abilitate dato modulo ed username partendo dalla radice dell'albero dei diritti + + + + + + + + restituisce l'elenco degli utenti dato i diritti che devono avere come modulo/funzione + + nome del modulo + nome della funzione + tabella utenti + + + + restituisce l'elenco delle email degli utenti dato i diritti che devono avere come modulo/funzione + + nome del modulo + nome della funzione + stringa di email separate da "," + + + + crea un nuovo utente con le credenziali indicate + + + + + + + + + + + + assegna il diritto all'utente indicato + + + + + + + + + + + toglier il diritto all'utente indicato + + + + + + + + + + + restituisce la tabella (per utente corrente) dei CDC abilitati per l'applicazione attuale da sessione (se non c'è salva...) + + modulo di cui si testano i diritti + + + + + versione statica della classe utente come singleton UtenTeSignletoN + + + + + restituisce la tabella diritti da session + + + + + tabella dei permessi utente + + + + + tabella dei permessi utente di tipo "WRITE" enabled + + + + + retituisce username AD + + + + + oggetto utente con metodi get/set + + + + + oggetto password con metodi get/set + + + + + oggetto dominio con metodi get/set + + + + + oggetto modulo (applicazione) con metodi get/set + + + + + oggetto lingua utente con metodi get/set + + + + + oggetto runMode corrente + + + + + restituisce true se utente forzato da forceUser.aspx + + + + + restituisce i valori della riga utente da db + + + + + restituisce una stringa formattata con cognome, nome e matricola + + + + + restituisce una stringa della sigla dell'utente + + + + + restituisce una stringa formattata con cognome e nome + + + + + restituisce una stringa formattata con cognome + + + + + restituisce una stringa formattata con nome + + + + + fornisce un file XML della mappa del sito abilitato per l'utente... + + + + + è un boolean che indica se in session ci siano user/dominio e quindi utente autenticato in rpecedenza... + + + + + Accesso in lettura e scrittura al filesystem per gestione files upload e download + + + + + path di lavoro dei metodi leggi/scrivi + + + + + verifica esistenza directory ed eventualmente crea restituendo nome completo di "/" finale + + + + + + + restituisce una tab di files dato l'elenco dei files + + + + + + + setta le directory + + + + + + oggetto WebClient + + + + + inizializza il metodo alla cartella indicata + + + non serve +... x retrocompatibilità... + + + + metodo di avvio empty + + + + + cerca di caricare il fileinfo o da httpcontext-application re-position o direttamente come workpath + nomefile + + + + + + + cerca di caricare il fileinfo o da httpcontext-application re-position o direttamente come workpath + nomefile + + + + + + + + cerca di caricare la directoryInfo o da httpcontext-application re-position o direttamente come workpath + + + + + + + Legge i dati da uno stream fino a quando arriva alla fine. + I dati sono restituiti come un byte[] array. un eccezione IOException è + sollevata se una delle chiamate IO sottostanti fallisce. + + Lo stream da cui leggere + Lunghezza buffer iniziale (-1 = default 32k) + + + + verifica esistenza directory, eventualmente crea e restituisce controllo DirectoryInfo + + + + + + ottiene il dataset dei files presenti nella directory indicata esplicitamente + + dir da indicizzare... già mappata! ( es SteamwareStrings.getFilePath(...) ) + + + + + ottiene il dataset dei files presenti nella directory indicata all'istanziazione dell'oggetto + + + + + + ottiene il dataset dei files DEL TIPO "like {param}" presenti nella directory indicata all'istanziazione dell'oggetto + + + + + + elenco dei files come array di oggetti FileInfo + + + + + + elenco dei files come array di oggetti FileInfo filtrati per parametro + + + + + + + elimina la directory di lavoro se è dir virtuale mappata + + + + + + elimina tutti i files con la regexp indicata da una directory, true se cancellato almeno uno + + regexp selezione files in dir (* = tutti!!!) + + + + + verifica se il file indicato esista in workDir + + + + + + + elimina il file indicato dalla directory di lavoro + + + + + + + restituisce lo stream del file richiesto + + + + + + + restituisce la stringa letta dal file richiesto + + + + + + + scrive il file dallo stream byte[] inviato + + + + + + + + scrive il file dalla stringa inviata + + + + + + + + converte una string in un byte[] + + + + + + + converte un byte[] in una string + + + + + + + sposta il file da From a To... + + + + + + + + + copia il file da From a To... + + + + + + + + + copia il file da From a To... + + + + + + + + + + imposta la dir di lavoro + + + + + + imposta la dir di lavoro + + + non serve +... x retrocompatibilità... + + + + imposta la dir di lavoro impostandola dal mapPath corretto della web app... + + + + + + esegue un comando in shell + + + + + + + + + esegue un comando in shell + + + + + + + + + Scarica un file dall'url fornito nella directory indicata x il filemover col nome richiesto + + url del file + nome con cui salvare il file + + + + + comprime zip il file indicato + + + + + + + comprime zip i files corrispondenti alla RegExp indicata nella dir corrente + + Espressione ricerca, come *.txt + Nome del file zip da creare + + + + + scompatta tutto il contenuto di un file zip + + + + + + + scompatta uno specifico file contenuto in un file zip + + + + + + + elimina il file indicato + + + + + + + calcola la dim della directory corrente... + + + + + + + elimina il file + vecchio + + + + + + + versione statica (singleton) del'oggetto fileMover + + + + + classe per effettuare confronto tra valori disomogeneri per tipo e costruire diff testuali + + + + + valore originale + + + + + nuovo valore + + + + + dictionary dei parametri vecchi + + + + + dictionary dei parametri nuovi + + + + + inizializzazione classe + + + + + valorizza i diff dei valori old e new + + + + + calcola solo il vettore dei valori old (x delete) + + + + + oggetto statico per il confronto valori + + + + + stringa diff dei valori originali modificati + + + + + stringa diff dei valori nuovi modificati + + + + + dictionary dei parametri old + + + + + dictionary dei parametri new + + + + + classe gestione logging esteso di eventi e note utente (correlabili) + + + + + TableAdapter di accesso alla tabella anagrafica filtraggi + + + + + TableAdapter di accesso alla tabella anagrafica record + + + + + TableAdapter di accesso alla tabella logging record di eventi + + + + + TableAdapter di accesso alla tabella logging utente + + + + + TableAdapter di accesso alla vista logging eventi + + + + + TableAdapter di accesso alla vista logging utente + + + + + effettua setup dei connection strings da web.config delal singola applicazione + + + + + avvio i tari tableAdapters + + + + + avvio della classe istanziando db e + + + + + oggetto statico di accesso ai metodi della classe... + + + + + tabella eventi + + + + + + tabella note + + + + + + tabella eventi secondo filtro + + filtro gestito come condizione "LIKE '%{0}%'" rispetto al filtro salvato con l'evento + + + + + tabella note secondo filtro + + filtro gestito come condizione "LIKE '%{0}%'" rispetto al filtro salvato con l'evento + + + + + tabella eventi secondo filtro e condizione ulteriore WHERE esplicitata + + filtro gestito come condizione "LIKE '%{0}%'" rispetto al filtro salvato con l'evento + ulteriore condizione WHERE per filtrare i dati (testo {0} della condizione "WHERE {0}" + + + + + tabella note secondo filtro e condizione ulteriore WHERE esplicitata + + filtro gestito come condizione "LIKE '%{0}%'" rispetto al filtro salvato con l'evento + ulteriore condizione WHERE per filtrare i dati (testo {0} della condizione "WHERE {0}" + + + + + tabella note secondo filtro + + filtro gestito come condizione "LIKE '%{0}%'" rispetto al filtro salvato con l'evento + + + + + inserisce l'evento indicato dai parametri + + user che ha generato l'evento + pagina/form applicaizone in cui l'evento si è generato + valore originale(se c'è) + valore nuovo/modificato + descrizione evento (poi gestita con anagrafica interna) + filtro logico evento (poi gestita con anagrafica interna) + + + + inserisce la nota utente indicata dai parametri, restituisce idx della nota creata... + + user che ha inserito la nota + testo della nota + valore ulteriore da associare alla nota (es: label, codice, versione, ...) + filtro logico evento (poi gestita con anagrafica interna) + intero dell'idx della nota creata + + + + associa l'evento e la nota indicati + + idx del record da associare + idx chiave della nota da associare + + + + associa l'ultimo evento del filtro indicato alla nota + + filtro associato all'ultimo evento... + idx chiave della nota da associare + + + + segna come cestinati tutti gli eventi dell'utente indicato non ancora associati o cestinati + + utente generatore dell'evento + + + + segna come cestinati tutti gli eventi dell'utente indicato non ancora associati o cestinati + + utente generatore dell'evento + + + + Elimina gli eventi cestinati generati dall'utente indicato + + utente generatore dell'evento + + + + Elimina gli eventi cestinati anteriori alla data selezionata + + dataOra dell'evento + + + + effettua la registrazione dell'evento in session + + + + + metodo di comportamento del controllo di logging + + + + + nasconde pannello log + + + + + memorizza log inserito + + + + + mostra pannello log + + + + + metodo di comportamento del controllo di logging + + + + + indica il primo step del doppio livello di approvazione (completamento) + + + + + SOLO con incremento indice di revisione dell'oggetto approvato + + + + + SOLO mantenendo indice di revisione corrente + + + + + permette SIA con revisione che senza (e anche rev -1) + + + + + Pagina base applicazioni SteamWare da cui derivare le altre + + + + + Iniziazlizzazione void (non fa nulla) + + + + + Metodo MAIN: viene eseguita al caricamento ed effettua delle routines per il controllo utente e istanzia l'oggetto memLayer + + + + + + + rimanda alla pagina di Work In Progress salvando in session un titolo ed una descrizione che al pagina wip poi mostrerà all'utente + + titolo da mostrare nella pagina WIP + descrizione da mostrare nella pagina WIP + diff --git a/GMW/GMW_data/obj/Debug/GMW_data.dll b/GMW/GMW_data/obj/Debug/GMW_data.dll index 645496598cc683b5d72bbcccb0e0e34fbcbb2c00..b81d0b30080215fbec2926ae6e6a3c3404e0c11d 100644 GIT binary patch delta 119 zcmZqp5!Ub{Y(fX~X|rdI-L2h>t=&wm-OR1sEUn$Ft=(*`-R!O19If4)t=(L$-Q2C+ zJgwclt=)XB-TbZH0%Tf3QByO~?NSz5bUTf5m>yV+a2Ia<3pTf4bhySZDt zd0M-9Tf6yMyZKwY1zNiWTf2o?yMgs>#T>ed=b>Yz_dkwJ;t4 diff --git a/GMW/GMW_data/obj/Debug/ResolveAssemblyReference.cache b/GMW/GMW_data/obj/Debug/ResolveAssemblyReference.cache index 93abf44ea316d2a7d2a83b5f8d5054b882af3048..dc6c8c5a859f9980ab280d3e53571418a9a09fb4 100644 GIT binary patch delta 28 kcmX^3jOpMrrVSm8jAENR88@)9?KAjmA=tjzo}Fn80Iquq{Qv*} delta 28 kcmX^3jOpMrrVSm8jG~)688@)92|2$$exrJ`Jv-AH0I