using AppData;
using SteamWare;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
namespace NKC_WF.WebUserControls
{
public partial class cmp_BP_sheetList : BaseUserControl
{
#region Public Properties
///
/// Bunk corrente...
///
public int BunkId
{
set
{
hfStackID.Value = value.ToString();
// aggiorno dati mongo...
updateMongoData(BatchId, value);
// disegno datagrid...
grView.DataBind();
}
get
{
int answ = 0;
int.TryParse(hfStackID.Value, out answ);
return answ;
}
}
///
/// Num totale Sheets
///
public int numSheets
{
get
{
return grView.Rows.Count;
}
}
//
/// Indice selezionato
///
public int selIndex
{
get
{
return grView.SelectedIndex;
}
set
{
grView.SelectedIndex = value;
grView.DataBind();
}
}
///
/// SheetId selezionato
///
public int SheetIdSel
{
get
{
int answ = 0;
try
{
if (grView != null)
{
if (grView.SelectedValue != null)
{
int.TryParse(grView.SelectedValue.ToString(), out answ);
}
}
}
catch
{ }
return answ;
}
}
#endregion Public Properties
#region Public Methods
///
/// Formatta in min/sec il tempo in sec decimale
///
///
///
public string formatMinSec(object _timeSec)
{
int totSec = 0;
string answ = "";
int.TryParse(_timeSec.ToString().Replace(".", ""), out totSec);
int numMin = totSec / 60;
int numSec = totSec - (60 * numMin);
answ = $"{numMin:00}:{numSec:00}";
return answ;
}
///
/// Recupera valore YELD dato SheetID
///
///
///
public string GetSheetPartQty(object sId)
{
int answ = 0;
int sheetId = 0;
if (int.TryParse($"{sId}", out sheetId))
{
if (SheetPartQty.ContainsKey(sheetId))
{
answ = SheetPartQty[sheetId];
}
}
return $"{answ:N0}";
}
///
/// Recupera valore YELD dato SheetID
///
///
///
public string GetSheetYeld(object sId)
{
double answ = 0;
int sheetId = 0;
if (int.TryParse($"{sId}", out sheetId))
{
if (SheetYeld.ContainsKey(sheetId))
{
answ = SheetYeld[sheetId];
}
}
return $"{answ:P1}";
}
public void resetSelezione()
{
//lblStack.Text = "";
grView.SelectedIndex = -1;
grView.DataBind();
raiseEvent();
}
#endregion Public Methods
#region Protected Fields
///
/// Tabella dei dati di quante part siano presenti x foglio recuperato dai dati nesting da mongoDB
///
protected Dictionary SheetPartQty = new Dictionary();
///
/// Tabella dei dati di resa (Yeald) x foglio recuperato dai dati nesting da mongoDB
///
protected Dictionary SheetYeld = new Dictionary();
#endregion Protected Fields
#region Protected Properties
///
/// Batch corrente...
///
protected int BatchId
{
get
{
int answ = memLayer.ML.QSI("BatchId");
return answ;
}
}
#endregion Protected Properties
#region Protected Methods
protected void grView_SelectedIndexChanged(object sender, EventArgs e)
{
raiseEvent();
}
///
/// comando reset
///
///
///
protected void lbtReset_Click(object sender, EventArgs e)
{
resetSelezione();
}
protected void Page_Load(object sender, EventArgs e)
{
}
#endregion Protected Methods
#region Private Methods
///
/// Aggiorna i dati di stima recuperando da Mongo le risposte complete dal supervisor
///
/// ID del Batch di cui recuperare le info
/// ID del BUNK da considerare
private void updateMongoData(int BatchId, int BunkId)
{
SheetYeld = new Dictionary();
SheetPartQty = new Dictionary();
DataLayer dlMan = new DataLayer();
if (memLayer.ML.CRB("enableMongo"))
{
var bunkList = dlMan.taSTL.getByBatch(BatchId);
var bunkRow = bunkList.Where(x => x.StackID == BunkId).FirstOrDefault();
// da eliminare quando testato altro metodo...
#if false
// cerco da lista salvataggi Nest...
var nestAnsw = ComLib.man.getNestAnsw(BatchId);
// recupero bunk da DB
// elenchi x ricerca duplicati
List partListNest = new List();
List partListNestDupl = new List();
if (nestAnsw != null && bunkRow != null)
{
double num = 0;
double den = 1;
double currRatio = 0;
try
{
if (nestAnsw.BunkList != null)
{
foreach (var bunk in nestAnsw.BunkList)
{
if (bunkRow.StackIndex == bunk.BunkIndex)
{
// procedo SOLO per il bunk corrente...
foreach (var sheet in bunk.SheetList)
{
num = sheet.SurfaceWork > 0 ? sheet.SurfaceWork : 0;
den = sheet.SurfaceTotal > 0 ? sheet.SurfaceTotal : 1;
currRatio = ComLib.ratioProt(num, den);
if (SheetYeld.ContainsKey(sheet.SheetIndex))
{
SheetYeld[sheet.SheetIndex] = currRatio;
}
else
{
SheetYeld.Add(sheet.SheetIndex, currRatio);
}
if (SheetPartQty.ContainsKey(sheet.SheetIndex))
{
SheetPartQty[sheet.SheetIndex] = sheet.PartList.Count;
}
else
{
SheetPartQty.Add(sheet.SheetIndex, sheet.PartList.Count);
}
}
}
}
}
}
catch
{ }
}
#endif
// leggo da obj di DlMan
var statData = DLMan.GetYeldStatsFromMongoData(BatchId);
if (statData != null)
{
List sList = statData
.ListBySheet
.Where(x => x.BunkIdx == bunkRow.StackIndex)
.ToList();
// converto...
SheetYeld = sList.ToDictionary(r => r.SheetIdx, r => r.Yeld);
SheetPartQty = sList.ToDictionary(r => r.SheetIdx, r => r.NumParts);
}
}
}
#endregion Private Methods
protected void grView_PageIndexChanged(object sender, EventArgs e)
{
updateMongoData(BatchId, BunkId);
}
}
}