Files
NKC/NKC_WF/WebUserControls/cmp_batchList.ascx.cs
Samuele Locatelli ad0879a295 Order History:
- aggiunti buttons x detail
- gestione blocco buttons dove non gestiti (history page)
2025-04-23 17:59:20 +02:00

560 lines
16 KiB
C#

using AppData;
using NKC_SDK;
using SteamWare;
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace NKC_WF.WebUserControls
{
public partial class cmp_batchList : BaseUserControl
{
#region Public Properties
public bool ActionEnab
{
get
{
return chkActEnab.Checked;
}
set
{
chkActEnab.Checked = value;
}
}
public bool deleteEnabled
{
get
{
bool answ = false;
bool.TryParse(hfDeleteEnabled.Value, out answ);
return answ;
}
set
{
hfDeleteEnabled.Value = value.ToString();
}
}
/// <summary>
/// Indica se abilitare creazioen automatica dei PNG x le parts nel batch
/// </summary>
public bool forceCreatePng
{
get
{
bool answ = false;
if (!string.IsNullOrEmpty(hfCreatePng.Value))
{
bool.TryParse(hfCreatePng.Value, out answ);
}
return answ;
}
set
{
hfCreatePng.Value = $"{value}";
}
}
/// <summary>
/// modalità funzionamento controllo
/// </summary>
public BatchListMode listMode { get; set; } = BatchListMode.Standard;
public bool showSplit
{
get
{
return chkShowSplit.Checked;
}
set
{
chkShowSplit.Checked = value;
}
}
#endregion Public Properties
#region Public Methods
/// <summary>
/// Converte il codice stato in effettivo campo
/// </summary>
/// <param name="_status"></param>
/// <returns></returns>
public string BStatus(object _status)
{
string answ = ComLib.BatchStatusDescr(_status);
return answ;
}
/// <summary>
/// Codice CSS in base a status...
/// </summary>
/// <param name="_status"></param>
/// <returns></returns>
public string cssByStatus(object _status)
{
string answ = "text-muted";
BatchStatus bStatus = (BatchStatus)Enum.Parse(typeof(BatchStatus), _status.ToString());
switch (bStatus)
{
case BatchStatus.Imported:
break;
case BatchStatus.EstimationRequested:
answ = "btn btn-sm pe-none btn-info";
break;
case BatchStatus.EstimationDone:
answ = "btn btn-sm pe-none btn-primary";
break;
case BatchStatus.NestRequested:
answ = "btn btn-sm pe-none btn-warning";
break;
case BatchStatus.NestDone:
//answ = "font-weight-bold text-success";
answ = "btn btn-sm pe-none btn-success";
break;
case BatchStatus.Approved:
answ = "btn btn-sm pe-none btn-success";
break;
case BatchStatus.Discarded:
answ = "btn btn-sm pe-none btn-secondary";
break;
case BatchStatus.Errors:
case BatchStatus.ErrorsOnEstim:
case BatchStatus.ErrorsOnNesting:
answ = "btn btn-sm pe-none btn-danger";
break;
case BatchStatus.PartOk:
answ = "btn btn-sm pe-none btn-outline-success";
break;
case BatchStatus.PartKo:
answ = "btn btn-sm pe-none btn-outline-secondary";
break;
}
return answ;
}
/// <summary>
/// Codice CSS in base a BatchType...
/// </summary>
/// <param name="_BatchType"></param>
/// <returns></returns>
public string cssIconByType(object _BatchType)
{
string answ = "fa fa-circle-thin";
int status = -1;
int.TryParse(_BatchType.ToString(), out status);
switch (status)
{
case 0:
answ = "fa fa-file-text-o";
break;
case 1:
answ = "fa fa-file-text";
break;
case 2:
answ = "fa fa-scissors";
break;
default:
break;
}
return answ;
}
public void doUpdate()
{
lblLastRefresh.Text = $"{DateTime.Now:HH:mm:ss}";
checkFixOds();
grView.DataBind();
currSelRow = lastSelRow;
var currBStatus = CurrBatchStatus;
fixDetails();
}
/// <summary>
/// Determina se sia visibile previewin base a BatchType...
/// </summary>
/// <param name="_BatchType"></param>
/// <returns></returns>
public bool hasPreviewByType(object _BatchType)
{
bool answ = false;
int status = -1;
int.TryParse(_BatchType.ToString(), out status);
switch (status)
{
case 0:
case 2:
answ = true;
break;
case 1:
default:
answ = false;
break;
}
return answ;
}
/// <summary>
/// Verifica se sia visualizzabile preview dato stato
/// </summary>
/// <param name="_status"></param>
/// <returns></returns>
public bool isPreviewVisible(object _status)
{
bool answ = false;
int status = -1;
int.TryParse(_status.ToString(), out status);
// solo stati 4 (nesting done), 5 (approvato), 6 (eliminazione logica)
if (status > 3 && status < 7)
{
answ = true;
}
return answ;
}
/// <summary>
/// Tooltip in base a BatchType...
/// </summary>
/// <param name="_BatchType"></param>
/// <returns></returns>
public string tooltipByType(object _BatchType)
{
string answ = "-";
answ = traduci($"tooltipBatchType_{_BatchType}");
return answ;
}
#endregion Public Methods
#region Protected Properties
/// <summary>
/// BatchId selezionato
/// </summary>
protected int BatchIdSel
{
get
{
int answ = 0;
if (grView.SelectedValue != null)
{
int.TryParse(grView.SelectedValue.ToString(), out answ);
}
return answ;
}
}
/// <summary>
/// Status corrente del batch
/// </summary>
protected BatchStatus CurrBatchStatus
{
get
{
return ComLib.BStatus(BatchIdSel);
}
}
protected int currSelRow
{
get
{
return grView.SelectedIndex;
}
set
{
grView.SelectedIndex = value;
}
}
protected int lastSelRow
{
get
{
int answ = -1;
try
{
answ = memLayer.ML.IntSessionObj("UsrLastBatchSel");
}
catch
{ }
return answ;
}
set
{
memLayer.ML.setSessionVal("UsrLastBatchSel", value);
}
}
#endregion Protected Properties
#region Protected Methods
protected void chkShowSplit_CheckedChanged(object sender, EventArgs e)
{
// deseleziono...
resetSelezione();
}
protected void ddlStatus_SelectedIndexChanged(object sender, EventArgs e)
{
checkFixOds();
}
protected void grView_PageIndexChanged(object sender, EventArgs e)
{
checkFixOds();
}
protected void grView_SelectedIndexChanged(object sender, EventArgs e)
{
Timer1.Interval = slowTimer;
fixDetails();
}
protected void lbRedoEval_Click(object sender, EventArgs e)
{
LinkButton lbt = (LinkButton)sender;
if (!string.IsNullOrEmpty(lbt.CommandArgument))
{
// cerco batch...
var prevBatch = DLMan.taBL.getLastByTakt(lbt.CommandArgument);
if (prevBatch != null && prevBatch.Count > 0)
{
int BatchId = prevBatch[0].BatchID;
// elimino gli errori vecchi della richiesta
DS_App.BatchListDataTable batchTab = DLMan.taBL.getByKey(BatchId);
if (batchTab != null && batchTab.Rows.Count > 0)
{
try
{
var bRow = (DS_App.BatchListRow)batchTab.Rows[0];
DLMan.taEL.deteteByParent("", bRow.EnvNum);
// cerco se ci siano batch descendant...
var childBatch = DLMan.taBL.getDescendByKey(BatchId);
if (childBatch != null && childBatch.Count > 0)
{
foreach (var item in childBatch)
{
DLMan.taEL.deteteByParent("", item.EnvNum);
}
}
}
catch (Exception exc)
{
Log.Instance.Error($"Eccezione in eliminazione EL precedenti{Environment.NewLine}{exc}");
}
}
}
// eseguo richiesta reset
DLMan.taBL.redoPartValid(lbt.CommandArgument);
// eventualmente mando primo batch da validare...
bool newValidSent = ComLib.sendFirstValidationBatch(forceCreatePng);
// refresh!
resetSelezione();
}
}
protected void lbtDisableDel_Click(object sender, EventArgs e)
{
deleteEnabled = false;
resetSelezione();
}
protected void lbtEnableDel_Click(object sender, EventArgs e)
{
deleteEnabled = true;
resetSelezione();
}
/// <summary>
/// comando reset
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void lbtReset_Click(object sender, EventArgs e)
{
resetSelezione();
}
/// <summary>
/// Caricamento pagina
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
deleteEnabled = false;
cmp_numRow.numRow = 25;
grView.PageSize = cmp_numRow.numRow;
divDetail.Visible = false;
// in base al ListMode decido cosa mostrare...
checkFixOds();
checkFixMode();
cmp_batchDetail.BtnActEnab = ActionEnab;
}
cmp_batchDetail.eh_doRefresh += Cmp_batchDetail_eh_doRefresh;
cmp_numRow.eh_doRefresh += Cmp_numRow_eh_doRefresh;
}
protected void Timer1_Tick(object sender, EventArgs e)
{
doUpdate();
}
#endregion Protected Methods
#region Private Fields
private int fastTimer = 2000;
private int slowTimer = 4000;
#endregion Private Fields
#region Private Methods
/// <summary>
/// In base al modo richiesto imposta filtraggi...
/// </summary>
private void checkFixMode()
{
ListItem currItem = null;
int valore = -100;
if (listMode == BatchListMode.Standard || listMode == BatchListMode.FullHistory)
{
foreach (var item in ddlStatus.Items)
{
try
{
currItem = (ListItem)item;
int.TryParse(currItem.Value, out valore);
if (valore > 7)
{
currItem.Enabled = false;
}
}
catch
{ }
}
}
else
{
foreach (var item in ddlStatus.Items)
{
try
{
currItem = (ListItem)item;
int.TryParse(currItem.Value, out valore);
if (valore < 8 && valore >= 0)
{
currItem.Enabled = false;
}
}
catch
{ }
}
}
}
private void checkFixOds()
{
// sistemo tipo di ODS dato config...
if (memLayer.ML.CRB("batchListUseStoredLight"))
{
ods.SelectMethod = "getByStatusLight";
}
else
{
ods.SelectMethod = "getByStatus";
}
//ods.SelectMethod=
string isPartVal = "";
switch (listMode)
{
case BatchListMode.PartsEval:
isPartVal = "1";
break;
case BatchListMode.FileEval:
isPartVal = "2";
break;
case BatchListMode.FullHistory:
isPartVal = "3";
ods.FilterExpression = "";
break;
case BatchListMode.Standard:
default:
isPartVal = "0";
break;
}
hfPartValid.Value = isPartVal;
}
private void Cmp_batchDetail_eh_doRefresh(object sender, EventArgs e)
{
resetSelezione();
}
private void Cmp_numRow_eh_doRefresh(object sender, EventArgs e)
{
// recupero num righe ed aggiorno...
grView.PageSize = cmp_numRow.numRow;
checkFixOds();
grView.DataBind();
}
private void fixDetails()
{
lastSelRow = currSelRow;
divDetail.Visible = currSelRow >= 0;
if (divDetail.Visible)
{
// recupero BatchId selezionato
cmp_batchDetail.BatchId = BatchIdSel;
cmp_batchDetail.doUpdate();
updPanelDetail.Update();
}
}
private void resetSelezione()
{
// reimposto timer rapido...
Timer1.Interval = fastTimer;
checkFixOds();
currSelRow = -1;
lastSelRow = -1;
grView.DataBind();
divDetail.Visible = false;
updPanelDetail.Update();
raiseReset();
}
#endregion Private Methods
}
}