using EgwProxy.Icoel.Compac;
using EgwProxy.Icoel.SizerService;
using System;
using System.Collections.Generic;
namespace EgwProxy.Icoel
{
public class Connector
{
#region Public Constructors
///
/// Inizializazzione classe con salvataggio ip/porta del webservice del sizer
///
///
///
public Connector(string ipAddress, string tcpPort)
{
this.ipAddress = ipAddress;
this.tcpPort = tcpPort;
}
#endregion Public Constructors
#region Public Methods
///
/// Verifica il fornitore e se non ci fosse crea
///
///
public void CheckGrower(GrowerInfo GrowerData)
{
using (var Client = new ComClient(ipAddress, tcpPort))
{
Client.CheckGrower(GrowerData.GrowerCode, GrowerData.GrowerName);
}
}
///
/// Invia un lotto in coda produzione sul sizer
///
/// Batch da accodare
public void EnqueueBatch(GrowerInfo GrowerData, Guid varGuid, Guid layGuid)
{
using (var Client = new ComClient(ipAddress, tcpPort))
{
string sizingProfile = Client.GetCurrentBatch().SizingProfileName;
Batch newBatch = CreateBatch(GrowerData, varGuid, layGuid, sizingProfile);
Client.MettiLottoInCoda(newBatch);
}
}
///
/// Recupera elenco dei Batch correnti (su L1 SX e L2 DX)
///
///
public Dictionary GetCurrentBatch()
{
Dictionary outVal = new Dictionary();
using (var Client = new ComClient(ipAddress, tcpPort))
{
//Client.GetCurrentBatch();
for (int i = 1; i <= 2; i++)
{
var batch = Client.GetCurrentBatchByLane(i);
outVal.Add(i, batch);
}
}
return outVal;
}
///
/// Restituisce un dictionary di varietà e relativi layout
///
///
///
public Dictionary GetLayoutAndVariety()
{
Dictionary outVal = new Dictionary();
using (var Client = new ComClient(ipAddress, tcpPort))
{
Variety[] varietiesList = Client.GetActiveVarieties();
foreach (var item in varietiesList)
{
// recupero layout della varietà
var layoutList = Client.GetLayouts(item.Id);
outVal.Add(item, layoutList);
}
}
// restituisco dati
return outVal;
}
///
/// Restituisce un array di Layout validi data Guid della Variety
///
///
///
public Layout[] GetLayoutForVariety(Guid varGuid)
{
Layout[] outVal = new Layout[1];
using (var Client = new ComClient(ipAddress, tcpPort))
{
// recupero layout della varietà
var layoutList = Client.GetLayouts(varGuid);
outVal = layoutList;
}
// restituisco dati
return outVal;
}
///
/// Restituisce un dictionary di layout validi x un array di varietà fornito
///
///
///
public Dictionary GetLayoutForVarietyList(Variety[] varietiesList)
{
Dictionary outVal = new Dictionary();
using (var Client = new ComClient(ipAddress, tcpPort))
{
foreach (var item in varietiesList)
{
// recupero layout della varietà
var layoutList = Client.GetLayouts(item.Id);
outVal.Add(item, layoutList);
}
}
// restituisco dati
return outVal;
}
///
/// Restituisce elenco delle Variety
///
/// Solo attive (true) o tutte (false)
///
public Variety[] GetVarietyList(bool onlyActive = true)
{
Variety[] varietiesList;
using (var cClient = new ComClient(ipAddress, tcpPort))
{
if (onlyActive)
{
varietiesList = cClient.GetActiveVarieties();
}
else
{
varietiesList = cClient.GetAllVarieties();
}
}
return varietiesList;
}
#endregion Public Methods
#region Private Properties
///
/// Inidirizzo IP
///
private string ipAddress { get; set; } = "127.0.0.1";
///
/// Porta del webservice (SOAP)
///
private string tcpPort { get; set; } = "8001";
#endregion Private Properties
#region Private Methods
///
/// Genera un obj batch dati i parametri necessari
///
///
///
///
///
///
private Batch CreateBatch(GrowerInfo GrowerData, Guid VarietyId, Guid LayoutId, string SizingProfileName)
{
var batch = new Batch();
batch.AvoidLayoutChange = true;
batch.AvoidSavingOldLayouts = true;
batch.GrowerCode = GrowerData.GrowerCode;
batch.Comments = new string[GrowerData.Comments.Count];
batch.Comments = GrowerData.Comments.ToArray();
batch.VarietyId = VarietyId;
batch.LayoutId = LayoutId;
batch.SizingProfileName = SizingProfileName;
return batch;
}
#endregion Private Methods
}
}