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 } }