Aggiunta in sync metodo recupero dati inventario oggetti

This commit is contained in:
Samuele Locatelli
2024-01-17 19:40:53 +01:00
parent 7181be9cb6
commit d70f271e1c
6 changed files with 192 additions and 33 deletions
+64
View File
@@ -0,0 +1,64 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwProxy.MagMan.DTO
{
public class ItemDTO
{
/// <summary>
/// Codice Univoco (DB)
/// </summary>
public int ItemID { get; set; } = 0;
/// <summary>
/// Codice Materiale di provenienza
/// </summary>
public int MatID { get; set; } = 0;
/// <summary>
/// Check if is a Remnant
/// </summary>
public bool IsRemn { get; set; } = false;
/// <summary>
/// Location
/// </summary>
public string Location { get; set; } = "";
/// <summary>
/// Qty available on wharehouse
/// </summary>
public int QtyAvail { get; set; } = 0;
/// <summary>
/// DateTime last modification
/// </summary>
public DateTime DtMod { get; set; } = DateTime.Now.AddYears(10);
/// <summary>
/// Item's Lenght
/// </summary>
public decimal LMm { get; set; } = 0;
/// <summary>
/// Item's Width
/// </summary>
public decimal WMm { get; set; } = 0;
/// <summary>
/// Item's Thikness
/// </summary>
public decimal TMm { get; set; } = 0;
/// <summary>
/// Note
/// </summary>
public string Note { get; set; } = "";
/// <summary>
/// Codice QR/Matrix Item
/// </summary>
public string ItemDtmx { get; set; } = "";
}
}
+6 -2
View File
@@ -8,7 +8,6 @@ namespace EgwProxy.MagMan.DTO
{
public class MaterialDTO
{
/// <summary>
/// Codice Univoco (DB)
/// </summary>
@@ -35,8 +34,13 @@ namespace EgwProxy.MagMan.DTO
/// </summary>
public decimal TMm { get; set; } = 0;
/// <summary>
/// Codice QR/Matrix materiale materiale
/// Codice QR/Matrix materiale
/// </summary>
public string MatDtmx { get; set; } = "";
/// <summary>
/// Elenco item e giancenze
/// </summary>
public List<ItemDTO> ItemNav { get; set; } = new List<ItemDTO>();
}
}
+62 -30
View File
@@ -15,30 +15,23 @@ namespace EgwProxy.MagMan
{
public class DataSyncro
{
#region Public Constructors
/// <summary>
/// Inizializza la libreria di comunicazione con il token assegnato
/// </summary>
/// <param name="UserToken"></param>
public DataSyncro(string UserToken)
public DataSyncro(string serverUrl, string UserToken)
{
RestToken = UserToken;
servAddr = serverUrl;
apiUrl = $"https://{servAddr}/api/";
}
/// <summary>
/// Token di chiamata per l'applicazione
/// </summary>
string RestToken = "";
#endregion Public Constructors
#region Public Methods
/// <summary>
/// Effettua chiamata test sul server (ping)
/// </summary>
/// <returns></returns>
public bool CheckRemote()
{
IPAddress address = IPAddress.Loopback;
string srvIp = servAddr.Substring(0, servAddr.IndexOf(":"));
return pingAddress(srvIp) == IPStatus.Success;
}
/// <summary>
/// Test ping x indirizzo indicato
/// </summary>
@@ -74,21 +67,17 @@ namespace EgwProxy.MagMan
}
return answ;
}
#if DEBUG
/// <summary>
/// Indirizzo server (DEBUG)
/// Effettua chiamata test sul server (ping)
/// </summary>
private static string servAddr = "localhost:7207";
#else
/// <summary>
/// Indirizzo server (Release)
/// </summary>
private static string servAddr = "magman.egalware.com";
#endif
/// <summary>
/// URL dell'API x chiamate gestione licenze
/// </summary>
private static string apiUrl = $"https://{servAddr}/api/";
/// <returns></returns>
public bool CheckRemote()
{
IPAddress address = IPAddress.Loopback;
string srvIp = servAddr.Substring(0, servAddr.IndexOf(":"));
return pingAddress(srvIp) == IPStatus.Success;
}
/// <summary>
/// Elenco Materiali dato RestToken
@@ -98,7 +87,6 @@ namespace EgwProxy.MagMan
List<MaterialDTO> answ = new List<MaterialDTO>();
// cerco online
RestClient client = new RestClient(apiUrl);
//client.Authenticator = new HttpBasicAuthenticator("username", "password");
string MKeyEnc = HttpUtility.UrlEncode(RestToken);
var request = new RestRequest($"Materials/{MKeyEnc}", Method.Get);
var response = await client.GetAsync(request);
@@ -111,5 +99,49 @@ namespace EgwProxy.MagMan
}
return await Task.FromResult(answ);
}
/// <summary>
/// Inventario per materiale
/// </summary>
/// <param name="MatID">Se 0 = tutto</param>
/// <returns></returns>
public async Task<List<MaterialDTO>> GetInventario(int MatID)
{
List<MaterialDTO> answ = new List<MaterialDTO>();
// cerco online
RestClient client = new RestClient(apiUrl);
string MKeyEnc = HttpUtility.UrlEncode(RestToken);
var request = new RestRequest($"Inventory/{MKeyEnc}?MatId={MatID}", Method.Get);
var response = await client.GetAsync(request);
// controllo risposta
if (response.StatusCode == System.Net.HttpStatusCode.OK)
{
// salvo in redis contenuto serializzato
string rawData = $"{response.Content}";
answ = JsonConvert.DeserializeObject<List<MaterialDTO>>(rawData);
}
return await Task.FromResult(answ);
}
#endregion Public Methods
#region Private Fields
/// <summary>
/// URL dell'API x chiamate gestione licenze
/// </summary>
private string apiUrl = $"";
/// <summary>
/// Token di chiamata per l'applicazione
/// </summary>
private string RestToken = "";
/// <summary>
/// Indirizzo server (URL con eventuale porta)
/// </summary>
private string servAddr = $"";
#endregion Private Fields
}
}
}
+1
View File
@@ -77,6 +77,7 @@
</ItemGroup>
<ItemGroup>
<Compile Include="DataSyncro.cs" />
<Compile Include="DTO\ItemDTO.cs" />
<Compile Include="DTO\MaterialDTO.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
+58 -1
View File
@@ -13,14 +13,29 @@ namespace DemoApp
static async Task Main(string[] args)
{
#if DEBUG
// Indirizzo server (DEBUG)
string servAddr = "localhost:7207";
// token di auth
string testToken = "91f4fec6-7e9c-4130-9df2-702d729ccdd3";
#else
// Indirizzo server (DEBUG)
string servAddr = "magman.egalware.com";
// token di auth
string testToken = "22fa4426-6670-41ad-ac2b-d7b5c3dfe849";
#endif
string sep = "--------------------------------------------";
string sepShort = "------------------";
Console.WriteLine(sep);
Console.WriteLine("- MagMan REST Demo App");
Console.WriteLine(sep);
Console.WriteLine();
string answ = "";
DataSyncro commLib = new DataSyncro(testToken);
DataSyncro commLib = new DataSyncro(servAddr, testToken);
Console.WriteLine("Premere ENT per check ping");
answ = Console.ReadLine();
bool servOk = commLib.CheckRemote();
@@ -28,21 +43,63 @@ namespace DemoApp
Console.WriteLine($"Esito controllo server: {esito}");
Console.WriteLine("Premere un tasto per lettura archivio materiali");
answ = Console.ReadLine();
// leggo materiali
var matList = await commLib.GetMaterials();
if (matList != null)
{
foreach (var item in matList)
{
Console.WriteLine(sep);
Console.WriteLine($"Mat ID: {item.MatID}");
Console.WriteLine($"Mat Code: {item.MatExtCode}");
Console.WriteLine($"Dtmx Code: {item.MatDtmx}");
Console.WriteLine($"descript: {item.MatDesc}");
Console.WriteLine($"Dimensions W x T x L: {item.WMm:N3} x {item.TMm:N3} x {item.LMm:N3}");
if (item.ItemNav != null)
{
Console.WriteLine($"Items count: {item.ItemNav.Count}");
}
Console.WriteLine(sep);
Console.WriteLine();
}
}
answ = Console.ReadLine();
// leggo inventario
var inventList = await commLib.GetInventario(0);
if (inventList != null)
{
foreach (var itemMat in inventList)
{
Console.WriteLine(sep);
Console.WriteLine($"Mat ID: {itemMat.MatID}");
Console.WriteLine($"Mat Code: {itemMat.MatExtCode}");
Console.WriteLine($"Dtmx Code: {itemMat.MatDtmx}");
Console.WriteLine($"descript: {itemMat.MatDesc}");
Console.WriteLine($"Dimensions W x T x L: {itemMat.WMm:N3} x {itemMat.TMm:N3} x {itemMat.LMm:N3}");
if (itemMat.ItemNav != null)
{
Console.WriteLine($"Items count: {itemMat.ItemNav.Count}");
if (itemMat.ItemNav.Count > 0)
{
Console.WriteLine("Inventario:");
foreach (var itemInv in itemMat.ItemNav)
{
Console.WriteLine(sepShort);
Console.WriteLine($"ID: {itemInv.ItemID}");
Console.WriteLine($"Location: {itemInv.Location}");
Console.WriteLine($"Descript: {itemInv.Note}");
Console.WriteLine($"Giacenza: {itemInv.QtyAvail}");
Console.WriteLine($"Dimensions W x T x L: {itemInv.WMm:N3} x {itemInv.TMm:N3} x {itemInv.LMm:N3}");
Console.WriteLine($"Dtmx Code: {itemInv.ItemDtmx}");
}
}
}
Console.WriteLine(sep);
Console.WriteLine();
}
}
answ = Console.ReadLine();
}
}
}
+1
View File
@@ -38,6 +38,7 @@ Public Class Form1
result += $"Dtmx Code: {item.MatDtmx}{Environment.NewLine}"
result += $"descript: {item.MatDesc}{Environment.NewLine}"
result += $"Dimensions W x T x L: {item.WMm:N3} x {item.TMm:N3} x {item.LMm:N3}{Environment.NewLine}"
'result += $"Items count: {item.ItemList.Count}"
result += $"{Environment.NewLine}"
Next
End If