Files
MoonPro.net/MP-ADM/WebUserControls/mod_anagArticoli.ascx.cs
T
2024-07-31 14:47:55 +02:00

310 lines
11 KiB
C#

using MapoDb;
using Newtonsoft.Json;
using SteamWare;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web.UI.WebControls;
namespace MP_ADM.WebUserControls
{
public partial class mod_anagArticoli : BaseUserControl
{
#region Public Methods
public bool delEnabled(object _idx)
{
bool answ = false;
string codArticolo = $"{_idx}";
// cerco in cache redis...
string redKeyArtUsed = $"{DataLayer.redKeyArtUsed}:{codArticolo}";
string redKeyTabCheckArt = DataLayer.redKeyTabCheckArt;
string rawData = memLayer.ML.getRSV(redKeyArtUsed);
if (!string.IsNullOrEmpty(rawData))
{
bool.TryParse(rawData, out answ);
}
else
{
// controllo non sia stato mai prodotto sennò non posso cancellare...
try
{
// cerco in cache se ci sia la tabella con gli articoli impiegati...
string rawTable = memLayer.ML.getRSV(redKeyTabCheckArt);
List<string> artList = new List<string>();
if (!string.IsNullOrEmpty(rawTable))
{
artList = JsonConvert.DeserializeObject<List<string>>(rawTable);
}
// rileggo...
if (artList == null || artList.Count == 0)
{
var tabArticoli = DataLayerObj.taAnagArt.getUsed();
var codList = tabArticoli.Select(x => x.CodArticolo);
foreach (string cod in codList)
{
artList.Add(cod);
}
// SE fosse vuoto aggiungo comunque il cado "ND"...
if (artList.Count == 0)
{
artList.Add("ND");
}
// salvo
rawTable = JsonConvert.SerializeObject(artList);
memLayer.ML.setRSV(redKeyTabCheckArt, rawTable, 60 * memLayer.ML.cdvi("cacheCheckArtUsato"));
}
// cerco nella tabella: se ci fosse --> disabilitato delete
bool usato = false;
if (artList != null && artList.Count > 0)
{
usato = artList.Contains(codArticolo);
}
answ = !usato;
memLayer.ML.setRSV(redKeyArtUsed, $"{answ}", 60 * memLayer.ML.cdvi("cacheCheckArtUsato"));
}
catch
{ }
}
return answ;
}
/// <summary>
/// definisce scrivibilità/editabilità del controllo
/// </summary>
/// <returns></returns>
public bool isWritable()
{
return true;
}
/// <summary>
/// resetta la selezione dei valori in caso di modifiche su altri controlli
/// </summary>
public void resetSelezione()
{
memLayer.ML.emptySessionVal(string.Format("{0}_sel", _idxGridView));
grView.SelectedIndex = -1;
grView.DataBind();
lblWarning.Visible = false;
raiseReset();
}
#endregion Public Methods
#region Protected Fields
protected string _idxGridView;
#endregion Protected Fields
#region Protected Methods
/// <summary>
/// crea un nuovo record e ricarica...
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnNew_Click(object sender, EventArgs e)
{
// recupero codAzienda corrente...
string CodAzienda = "*";
var listConf = DataLayerObj.taConfig.GetData();
var recAzienda = listConf.Where(x => x.chiave.Equals("AZIENDA", StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault();
if (recAzienda != null)
{
CodAzienda = recAzienda.valore != "*" ? recAzienda.valore : recAzienda.valoreStd;
}
string tempCode = string.Format("_{0:yyyyMMdd-HHmmss}", DateTime.Now);
string tempName = string.Format("Nuovo articolo creato {0:dd/MM/yyyy HH:mm:ss}", DateTime.Now);
DataLayerObj.taAnagArt.insert(tempCode, tempName, "", "", "ART", CodAzienda);
// reset!
resetSelezione();
}
/// <summary>
/// reset della selezione
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnReset_Click(object sender, EventArgs e)
{
resetSelezione();
}
/// <summary>
/// elenco colonne del datagrid
/// </summary>
/// <returns></returns>
protected DataColumnCollection colonneObj()
{
MapoDb.DS_ProdTempi.DatiMacchineDataTable tabella = new MapoDb.DS_ProdTempi.DatiMacchineDataTable();
DataColumnCollection colonne = tabella.Columns;
return colonne;
}
protected void ddlTipo_SelectedIndexChanged(object sender, EventArgs e)
{
grView.PageIndex = 0;
}
/// <summary>
/// traduce gli header delle colonne
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void grView_DataBound(object sender, EventArgs e)
{
if (grView.Rows.Count > 0)
{
LinkButton lb;
// aggiorno gli headers
foreach (TableCell cella in grView.HeaderRow.Cells)
{
try
{
lb = (LinkButton)cella.Controls[0];
lb.Text = traduci(lb.Text);
}
catch
{ }
}
int totRecord = grView.Rows.Count + grView.PageSize * (grView.PageCount - 1);
lblNumRec.Text = string.Format("{0} records of ~ {1}", grView.Rows.Count, totRecord);
}
else
{
lblNumRec.Text = "";
}
}
/// <summary>
/// gestione cambio selezione valore
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void grView_SelectedIndexChanged(object sender, EventArgs e)
{
// salvo in session il valore selezionato...
memLayer.ML.setSessionVal(string.Format("{0}_sel", _idxGridView), grView.SelectedValue, false);
// sollevo evento nuovo valore...
raiseSelNew();
}
protected void lbtReset_Click(object sender, EventArgs e)
{
txtSearch.Text = "";
}
/// <summary>
/// svuoto da cache post update
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ods_Updated(object sender, ObjectDataSourceStatusEventArgs e)
{
// evento come nuovo...
raiseNewVal();
}
protected void ods_Updating(object sender, ObjectDataSourceMethodEventArgs e)
{
// verifico eventuali nulli --> ""
if (e.InputParameters["DescArticolo"] == null) e.InputParameters["DescArticolo"] = "";
if (e.InputParameters["CurrRev"] == null) e.InputParameters["CurrRev"] = "";
if (e.InputParameters["Disegno"] == null) e.InputParameters["Disegno"] = "";
// rimuovo a capo x tutti i campi
for (int i = 0; i < e.InputParameters.Count; i++)
{
e.InputParameters[i] = e.InputParameters[i].ToString().Replace("/n", "").Replace("/r", "");
}
}
/// inizializzazione valori di default </summary> <param name="e"></param>
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
_idxGridView = "IdxMacchina";
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
}
/// <summary>
/// recupera i dati di un nuovo record contenuti nel footer di un gridView; questi devono
/// esses opportunamente nominati (es: txt{0}, dl{0}, ...)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void recuperaFooter(object sender, ObjectDataSourceMethodEventArgs e)
{
//recupero la riga footer...
DataColumnCollection colonne = colonneObj();
string nomeCol;
string tipoColonna = "";
foreach (DataColumn colonna in colonne)
{
nomeCol = colonna.ColumnName;
// cerco un textbox o quello che sia...
if (grView.FooterRow.FindControl(string.Format("txt{0}", nomeCol)) != null)
{
tipoColonna = "textBox";
}
else if (grView.FooterRow.FindControl(string.Format("dl{0}", nomeCol)) != null)
{
tipoColonna = "dropDownList";
}
else if (grView.FooterRow.FindControl(string.Format("chk{0}", nomeCol)) != null)
{
tipoColonna = "checkBox";
}
else if (grView.FooterRow.FindControl(string.Format("selAjax_{0}", nomeCol)) != null)
{
tipoColonna = "selAjax";
}
// in base al tipo salvo negli inputparameters dell'ODS
switch (tipoColonna)
{
case "textBox":
e.InputParameters[nomeCol] = ((TextBox)grView.FooterRow.FindControl(string.Format("txt{0}", nomeCol))).Text;
break;
case "dropDownList":
e.InputParameters[nomeCol] = ((DropDownList)grView.FooterRow.FindControl(string.Format("dl{0}", nomeCol))).SelectedValue;
break;
case "checkBox":
e.InputParameters[nomeCol] = ((CheckBox)grView.FooterRow.FindControl(string.Format("chk{0}", nomeCol))).Checked;
break;
//case "selAjax":
// e.InputParameters[nomeCol] = ((mod_selettore_ajax)grView.FooterRow.FindControl(string.Format("selAjax_{0}", nomeCol))).valore;
// break;
default:
break;
}
tipoColonna = "";
}
}
#endregion Protected Methods
#region Private Methods
/// <summary>
/// nuovo valore creato...
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void mod_newOdl1_eh_nuovoValore(object sender, EventArgs e)
{
// aggiorno!
resetSelezione();
}
#endregion Private Methods
}
}