Merge branch 'release/StartFixRecalcDto01'

This commit is contained in:
Samuele Locatelli
2024-06-03 17:49:37 +02:00
21 changed files with 180 additions and 116 deletions
+75 -40
View File
@@ -242,11 +242,11 @@ namespace GWMS.Data.Controllers
using (GWMSContext localDbCtx = new GWMSContext(_configuration))
{
dbResult = localDbCtx
.DbSetPlantLog
.Where(x => (x.PlantId == PlantId || PlantId == 0) && x.DtEvent <= DtMaxDate)
.OrderByDescending(x => x.DtEvent)
.Take(numRec)
.ToList();
.DbSetPlantLog
.Where(x => (x.PlantId == PlantId || PlantId == 0) && x.DtEvent <= DtMaxDate)
.OrderByDescending(x => x.DtEvent)
.Take(numRec)
.ToList();
}
return dbResult;
}
@@ -370,12 +370,12 @@ namespace GWMS.Data.Controllers
using (GWMSContext localDbCtx = new GWMSContext(_configuration))
{
var plantList = localDbCtx
.DbSetPlant
.ToList();
.DbSetPlant
.ToList();
dbResult = plantList
.Select(x => PlantDTO(x.PlantId, maxRecords))
.ToList();
.Select(x => PlantDTO(x.PlantId, maxRecords))
.ToList();
}
return dbResult;
@@ -396,10 +396,10 @@ namespace GWMS.Data.Controllers
maxNum = localDbCtx.DbRebootLog.Count();
}
dbResult = localDbCtx
.DbRebootLog
.OrderByDescending(x => x.DtEvent)
.Take(maxNum)
.ToList();
.DbRebootLog
.OrderByDescending(x => x.DtEvent)
.Take(maxNum)
.ToList();
}
return dbResult;
}
@@ -805,44 +805,79 @@ namespace GWMS.Data.Controllers
List<TSData> OrderTS = new List<TSData>();
List<TSData> SoldTS = new List<TSData>();
// dati raw da recuperare...
List<PlantLogModel> rawLevelData = new List<PlantLogModel>();
List<PlantLogModel> rawMainPressData = new List<PlantLogModel>();
List<PlantLogModel> rawBHPressData = new List<PlantLogModel>();
List<PlantLogModel> rawBLPressData = new List<PlantLogModel>();
List<OrderModel> rawOpenOrderData = new List<OrderModel>();
List<OrderModel> rawDepOrderData = new List<OrderModel>();
using (GWMSContext localDbCtx = new GWMSContext(_configuration))
{
// recupero dal DB
var rawLevelData = localDbCtx
.DbSetPlantLog
.Where(x => x.FluxType == "Level" && x.PlantId == PlantId)
.OrderByDescending(x => x.DtEvent)
.Take(maxRecords)
.OrderBy(x => x.DtEvent)
.ToList();
// per prima cosa recupero dati RAW ultime 2 settimane...
var rawData = localDbCtx
.DbSetPlantLog
.Where(x => x.DtEvent > DateTime.Today.AddMonths(-2) && x.PlantId == PlantId)
.AsNoTracking()
.ToList();
var rawMainPressData = localDbCtx
.DbSetPlantLog
.Where(x => x.FluxType == "MainPress" && x.PlantId == PlantId)
// ora recupero i distinct dell'ultima settimana x capire COSA posso poi ricavare...
var countData = rawData
.Select(e => e.FluxType)
.Distinct()
.ToList();
// recupero dal DB i dati PRESENTI...
if (countData.Contains("Level"))
{
//rawLevelData = localDbCtx
// .DbSetPlantLog
rawLevelData = rawData
.Where(x => x.FluxType == "Level" && x.PlantId == PlantId)
//.AsNoTracking()
.OrderByDescending(x => x.DtEvent)
.Take(maxRecords)
.OrderBy(x => x.DtEvent)
.ToList();
}
var rawBHPressData = localDbCtx
.DbSetPlantLog
.Where(x => x.FluxType == "PressBH" && x.PlantId == PlantId)
.OrderByDescending(x => x.DtEvent)
.Take(maxRecords)
.OrderBy(x => x.DtEvent)
.ToList();
if (countData.Contains("MainPress"))
{
rawMainPressData = rawData
.Where(x => x.FluxType == "MainPress" && x.PlantId == PlantId)
//.AsNoTracking()
.OrderByDescending(x => x.DtEvent)
.Take(maxRecords)
.OrderBy(x => x.DtEvent)
.ToList();
}
var rawBLPressData = localDbCtx
.DbSetPlantLog
.Where(x => x.FluxType == "PressBL" && x.PlantId == PlantId)
.OrderByDescending(x => x.DtEvent)
.Take(maxRecords)
.OrderBy(x => x.DtEvent)
.ToList();
if (countData.Contains("PressBH"))
{
rawBHPressData = rawData
.Where(x => x.FluxType == "PressBH" && x.PlantId == PlantId)
//.AsNoTracking()
.OrderByDescending(x => x.DtEvent)
.Take(maxRecords)
.OrderBy(x => x.DtEvent)
.ToList();
}
if (countData.Contains("PressBL"))
{
rawBLPressData = rawData
.Where(x => x.FluxType == "PressBL" && x.PlantId == PlantId)
//.AsNoTracking()
.OrderByDescending(x => x.DtEvent)
.Take(maxRecords)
.OrderBy(x => x.DtEvent)
.ToList();
}
var rawOpenOrderData = localDbCtx
rawOpenOrderData = localDbCtx
.DbSetOrders
.Where(x => x.PlantId == PlantId && x.ExecutionQty == 0)
.AsNoTracking()
.OrderByDescending(x => x.DtOrder)
.Take(maxRecords)
.OrderBy(x => x.DtOrder)
@@ -852,7 +887,7 @@ namespace GWMS.Data.Controllers
int numDays = 1;
DateTime oggi = DateTime.Today;
// recupero ultimi record carichi x numDays gg
var rawDepOrderData = localDbCtx
rawDepOrderData = localDbCtx
.DbSetOrders
.Where(x => x.PlantId == PlantId && x.ExecutionQty > 0 && x.DtExecStart >= oggi.AddDays(-numDays))
.OrderBy(x => x.DtOrder)
+1 -1
View File
@@ -151,7 +151,7 @@ namespace GWMS.UI.Components
private async Task ReloadData()
{
plantsData = await DataService.PlantsGetAll();
plantsData = await DataService.PlantDtoGetAll();
// recupero dato del plant corrente
currPlantData = plantsData.Where(x => x.PlantId == PlantId).FirstOrDefault();
// solo se ho valore QR selezionato
+2 -2
View File
@@ -142,7 +142,7 @@
@code {
private List<PlantDTO> PlantsList;
private List<PlantDetailModel> PlantsList;
private List<SupplierModel> SuppliersList;
private List<TransporterModel> TransportersList;
@@ -232,7 +232,7 @@
protected async Task ReloadAllData()
{
PlantsList = await DataService.PlantsGetAll();
PlantsList = await DataService.PlantsList();
SuppliersList = await DataService.SuppliersGetAll();
TransportersList = await DataService.TransportersGetAll();
}
+2 -2
View File
@@ -56,7 +56,7 @@ namespace GWMS.UI.Controllers
{
//Log.Debug("Chiamata Get");
// serializzo i dati di PlantDTO dell'impianto richiesto
List<PlantDTO> ListRecords = await _DataService.PlantsGetAll();
List<PlantDTO> ListRecords = await _DataService.PlantDtoGetAll();
return ListRecords;
}
@@ -66,7 +66,7 @@ namespace GWMS.UI.Controllers
{
//Log.Debug($"Chiamata Get | {id}");
// serializzo i dati di PlantDTO dell'impianto richiesto
var ListRecords = await _DataService.PlantsGetAll();
var ListRecords = await _DataService.PlantDtoGetAll();
//seleziono plant...
var SelRecords = ListRecords.Where(X => X.PlantId == id).FirstOrDefault();
return SelRecords;
+61 -35
View File
@@ -235,7 +235,7 @@ namespace GWMS.UI.Data
string emailBody = "";
StringBuilder sb = new StringBuilder();
List<PlantDTO> allPlants = await PlantsGetAll();
List<PlantDTO> allPlants = await PlantDtoGetAll();
var currPlant = allPlants.Where(x => x.PlantId == newItem.PlantId).FirstOrDefault();
// inizio a comporre email
@@ -260,7 +260,7 @@ namespace GWMS.UI.Data
var plantUserList = rawUserList
.Where(x => x.Roles.Contains("User"))
.ToList();
//var plantList = await PlantsGetAll();
//var plantList = await PlantDtoGetAll();
var userListSupp = plantUserList
.Where(x => x.Claims.Where(c => c.Type == "PlantId" && c.Value == $"{newItem.PlantId}").Count() > 0)
.ToList();
@@ -916,6 +916,34 @@ namespace GWMS.UI.Data
return await Task.FromResult(answ);
}
public async Task<List<PlantDTO>> PlantDtoGetAll()
{
List<PlantDTO> dbResult = new List<PlantDTO>();
string cacheKey = "DATA:PLANTS:ListDTO";
string rawData;
var redisDataList = await distributedCache.GetAsync(cacheKey);
if (redisDataList != null)
{
rawData = Encoding.UTF8.GetString(redisDataList);
dbResult = JsonConvert.DeserializeObject<List<PlantDTO>>(rawData);
}
else
{
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
int maxRec = 100;
int.TryParse(_configuration["MaxLogRecord"], out maxRec);
dbResult = dbController.GetPlantsDTO(maxRec);
rawData = JsonConvert.SerializeObject(dbResult);
redisDataList = Encoding.UTF8.GetBytes(rawData);
await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt(true));
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Trace($"Effettuata lettura da DB + caching per PlantDtoGetAll: {ts.TotalMilliseconds} ms");
}
return await Task.FromResult(dbResult);
}
public async Task<List<PlantLogModel>> PlantLogGetFilt(int PlantId, DateTime DtMaxDate, int numRec)
{
List<PlantLogModel> dbResult = new List<PlantLogModel>();
@@ -1040,38 +1068,10 @@ namespace GWMS.UI.Data
return await Task.FromResult(answ);
}
public async Task<List<PlantDTO>> PlantsGetAll()
{
List<PlantDTO> dbResult = new List<PlantDTO>();
string cacheKey = "DATA:PLANTS:ListDTO";
string rawData;
var redisDataList = await distributedCache.GetAsync(cacheKey);
if (redisDataList != null)
{
rawData = Encoding.UTF8.GetString(redisDataList);
dbResult = JsonConvert.DeserializeObject<List<PlantDTO>>(rawData);
}
else
{
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
int maxRec = 100;
int.TryParse(_configuration["MaxLogRecord"], out maxRec);
dbResult = dbController.GetPlantsDTO(maxRec);
rawData = JsonConvert.SerializeObject(dbResult);
redisDataList = Encoding.UTF8.GetBytes(rawData);
await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt(true));
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Trace($"Effettuata lettura da DB + caching per PlantsGetAll: {ts.TotalMilliseconds} ms");
}
return await Task.FromResult(dbResult);
}
public async Task<PlantDTO> PlantsGetByCode(string PlantCode)
{
PlantDTO answ = new PlantDTO();
var ListRecords = await PlantsGetAll();
var ListRecords = await PlantDtoGetAll();
var found = ListRecords.Where(x => x.PlantCode == PlantCode).FirstOrDefault();
if (found != null)
{
@@ -1080,6 +1080,32 @@ namespace GWMS.UI.Data
return await Task.FromResult(answ);
}
public async Task<List<PlantDetailModel>> PlantsList()
{
List<PlantDetailModel> dbResult = new List<PlantDetailModel>();
string cacheKey = "DATA:PLANTS:ListModel";
string rawData;
var redisDataList = await distributedCache.GetAsync(cacheKey);
if (redisDataList != null)
{
rawData = Encoding.UTF8.GetString(redisDataList);
dbResult = JsonConvert.DeserializeObject<List<PlantDetailModel>>(rawData);
}
else
{
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
dbResult = dbController.GetPlants();
rawData = JsonConvert.SerializeObject(dbResult);
redisDataList = Encoding.UTF8.GetBytes(rawData);
await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt(true));
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Trace($"Effettuata lettura da DB + caching per PlantsList: {ts.TotalMilliseconds} ms");
}
return await Task.FromResult(dbResult);
}
public async Task<bool> PlantUpdate(PlantDTO currItem)
{
bool done = false;
@@ -1278,7 +1304,7 @@ namespace GWMS.UI.Data
await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt(true));
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Trace($"Effettuata lettura da DB + caching per PlantsGetAll: {ts.TotalMilliseconds} ms");
Log.Trace($"Effettuata lettura da DB + caching per PlantDtoGetAll: {ts.TotalMilliseconds} ms");
}
return await Task.FromResult(dbResult);
}
@@ -1318,7 +1344,7 @@ namespace GWMS.UI.Data
await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt(true));
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Trace($"Effettuata lettura da DB + caching per PlantsGetAll: {ts.TotalMilliseconds} ms");
Log.Trace($"Effettuata lettura da DB + caching per PlantDtoGetAll: {ts.TotalMilliseconds} ms");
}
return await Task.FromResult(dbResult);
}
@@ -1333,7 +1359,7 @@ namespace GWMS.UI.Data
public async Task<bool> updateMachineParameter(int PlantId, string Original_uid, string reqValue)
{
bool fatto = false;
var plantList = await PlantsGetAll();
var plantList = await PlantDtoGetAll();
var currPlant = plantList
.Where(x => x.PlantId == PlantId)
.FirstOrDefault();
@@ -1528,7 +1554,7 @@ namespace GWMS.UI.Data
int transporterId = 1;
double qtyOrd = 0;
// faccio ciclo x tutti gli impianti
List<PlantDTO> currPlantData = await PlantsGetAll();
List<PlantDTO> currPlantData = await PlantDtoGetAll();
List<WeekPlanModel> fullWeekPlan = WeekPlanGet().Result;
foreach (var item in currPlantData)
{
+1 -1
View File
@@ -2,7 +2,7 @@
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<Version>1.0.2404.1816</Version>
<Version>1.0.2406.0317</Version>
<UserSecretsId>95c9f021-52d1-4390-a670-5810b7b777b0</UserSecretsId>
<EnableNETAnalyzers>true</EnableNETAnalyzers>
<RunAnalyzersDuringBuild>true</RunAnalyzersDuringBuild>
+2 -2
View File
@@ -229,11 +229,11 @@ namespace GWMS.UI.Pages
// se ho un plantId valido --> altrimenti non abilitato
if (ClaimPlantId == 0)
{
PlantsList = await DataService.PlantsGetAll();
PlantsList = await DataService.PlantDtoGetAll();
}
else if (ClaimPlantId > 0)
{
var rawData = await DataService.PlantsGetAll();
var rawData = await DataService.PlantDtoGetAll();
PlantsList = rawData.Where(x => x.PlantId == ClaimPlantId).ToList();
SelPlantId = ClaimPlantId;
}
+5 -4
View File
@@ -1,4 +1,5 @@
using BlazorBarcodeScanner.ZXing.JS;
using GWMS.Data.DatabaseModels;
using GWMS.Data.DTO;
using GWMS.UI.Data;
using Microsoft.AspNetCore.Authorization;
@@ -18,7 +19,7 @@ namespace GWMS.UI.Pages
{
#region Private Fields
private List<PlantDTO> PlantsList;
private List<PlantDetailModel> PlantsList;
#endregion Private Fields
@@ -278,17 +279,17 @@ namespace GWMS.UI.Pages
// se ho un plantId valido --> altrimenti non abilitato
if (ClaimPlantId == 0)
{
PlantsList = await DataService.PlantsGetAll();
PlantsList = await DataService.PlantsList();
}
else if (ClaimPlantId > 0)
{
var rawData = await DataService.PlantsGetAll();
var rawData = await DataService.PlantsList();
PlantsList = rawData.Where(x => x.PlantId == ClaimPlantId).ToList();
SelPlantId = ClaimPlantId;
}
else
{
PlantsList = new List<PlantDTO>();
PlantsList = new List<PlantDetailModel>();
}
isLoading = false;
}
+5 -4
View File
@@ -1,4 +1,5 @@
using BlazorBarcodeScanner.ZXing.JS;
using GWMS.Data.DatabaseModels;
using GWMS.Data.DTO;
using GWMS.UI.Data;
using Microsoft.AspNetCore.Authorization;
@@ -19,7 +20,7 @@ namespace GWMS.UI.Pages
{
#region Private Fields
private List<PlantDTO> PlantsList;
private List<PlantDetailModel> PlantsList;
#endregion Private Fields
@@ -177,17 +178,17 @@ namespace GWMS.UI.Pages
// se ho un plantId valido --> altrimenti non abilitato
if (ClaimPlantId == 0)
{
PlantsList = await DataService.PlantsGetAll();
PlantsList = await DataService.PlantsList();
}
else if (ClaimPlantId > 0)
{
var rawData = await DataService.PlantsGetAll();
var rawData = await DataService.PlantsList();
PlantsList = rawData.Where(x => x.PlantId == ClaimPlantId).ToList();
SelPlantId = ClaimPlantId;
}
else
{
PlantsList = new List<PlantDTO>();
PlantsList = new List<PlantDetailModel>();
}
isLoading = false;
}
+2 -2
View File
@@ -339,11 +339,11 @@ namespace GWMS.UI.Pages
// se ho un plantId valido --> altrimenti non abilitato
if (ClaimPlantId == 0)
{
PlantsList = await DataService.PlantsGetAll();
PlantsList = await DataService.PlantDtoGetAll();
}
else if (ClaimPlantId > 0)
{
var rawData = await DataService.PlantsGetAll();
var rawData = await DataService.PlantDtoGetAll();
PlantsList = rawData.Where(x => x.PlantId == ClaimPlantId).ToList();
SelPlantId = ClaimPlantId;
}
+2 -2
View File
@@ -351,11 +351,11 @@ namespace GWMS.UI.Pages
// se ho un plantId valido --> altrimenti non abilitato
if (ClaimPlantId == 0)
{
PlantsList = await DataService.PlantsGetAll();
PlantsList = await DataService.PlantDtoGetAll();
}
else if (ClaimPlantId > 0)
{
var rawData = await DataService.PlantsGetAll();
var rawData = await DataService.PlantDtoGetAll();
PlantsList = rawData.Where(x => x.PlantId == ClaimPlantId).ToList();
SelPlantId = ClaimPlantId;
}
+6 -5
View File
@@ -1,4 +1,5 @@
using GWMS.Data.DTO;
using GWMS.Data.DatabaseModels;
using GWMS.Data.DTO;
using GWMS.UI.Data;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Components;
@@ -23,7 +24,7 @@ namespace GWMS.UI.Pages
private static NLog.Logger Log = LogManager.GetCurrentClassLogger();
private objItem currRecord = null;
private List<objItem> ListRecords;
private List<PlantDTO> PlantsList;
private List<PlantDetailModel> PlantsList;
#endregion Private Fields
@@ -255,17 +256,17 @@ namespace GWMS.UI.Pages
// se ho un plantId valido --> altrimenti non abilitato
if (ClaimPlantId == 0)
{
PlantsList = await DataService.PlantsGetAll();
PlantsList = await DataService.PlantsList();
}
else if (ClaimPlantId > 0)
{
var rawData = await DataService.PlantsGetAll();
var rawData = await DataService.PlantsList();
PlantsList = rawData.Where(x => x.PlantId == ClaimPlantId).ToList();
SelPlantId = ClaimPlantId;
}
else
{
PlantsList = new List<PlantDTO>();
PlantsList = new List<PlantDetailModel>();
}
isLoading = false;
await ReloadData();
+2 -2
View File
@@ -97,11 +97,11 @@ namespace GWMS.UI.Pages
// se ho un plantId valido --> altrimenti non abilitato
if (ClaimPlantId == 0)
{
ListRecords = await DataService.PlantsGetAll();
ListRecords = await DataService.PlantDtoGetAll();
}
else if (ClaimPlantId > 0)
{
var rawData = await DataService.PlantsGetAll();
var rawData = await DataService.PlantDtoGetAll();
ListRecords = rawData.Where(x => x.PlantId == ClaimPlantId).ToList();
}
else
+2 -2
View File
@@ -110,11 +110,11 @@ namespace GWMS.UI.Pages
// se ho un plantId valido --> altrimenti non abilitato
if (ClaimPlantId == 0)
{
ListRecords = await DataService.PlantsGetAll();
ListRecords = await DataService.PlantDtoGetAll();
}
else if (ClaimPlantId > 0)
{
var rawData = await DataService.PlantsGetAll();
var rawData = await DataService.PlantDtoGetAll();
ListRecords = rawData.Where(x => x.PlantId == ClaimPlantId).ToList();
}
else
+1 -1
View File
@@ -277,7 +277,7 @@ namespace GWMS.UI.Pages
protected async Task ReloadAllData()
{
isLoading = true;
PlantsList = await DataService.PlantsGetAll();
PlantsList = await DataService.PlantDtoGetAll();
SelSupplierId = 0;
SuppliersList = null;
await GetClaimsData();
+3 -3
View File
@@ -20,7 +20,7 @@ namespace GWMS.UI.Pages
private OrderModel currRecord = null;
private List<OrderModel> ListRecords;
private List<PlantDTO> PlantsList;
private List<PlantDetailModel> PlantsList;
private List<OrderModel> SearchRecords;
private List<TransporterModel> TransportersList;
@@ -306,7 +306,7 @@ namespace GWMS.UI.Pages
protected async Task ReloadAllData()
{
isLoading = true;
PlantsList = await DataService.PlantsGetAll();
PlantsList = await DataService.PlantsList();
SelTranspId = 0;
TransportersList = null;
await GetClaimsData();
@@ -323,7 +323,7 @@ namespace GWMS.UI.Pages
}
else
{
PlantsList = new List<PlantDTO>();
PlantsList = new List<PlantDetailModel>();
}
isLoading = false;
await ReloadData();
+3 -3
View File
@@ -191,7 +191,7 @@ namespace GWMS.UI.Pages
[Inject]
protected IJSRuntime JSRuntime { get; set; }
protected List<GWMS.Data.DTO.PlantDTO>? plantList { get; set; } = null;
protected List<GWMS.Data.DatabaseModels.PlantDetailModel>? plantList { get; set; } = null;
protected List<GWMS.Data.DatabaseModels.SupplierModel>? suppList { get; set; } = null;
@@ -524,7 +524,7 @@ namespace GWMS.UI.Pages
{
case "PlantId":
// elenco plant --> to dictionary!
var plantList = await DataService.PlantsGetAll();
var plantList = await DataService.PlantsList();
if (plantList != null)
{
ClaimValList = plantList
@@ -563,7 +563,7 @@ namespace GWMS.UI.Pages
// effettuo refresh valori cache plants/suppliers/transp
if (plantList == null)
{
plantList = await DataService.PlantsGetAll();
plantList = await DataService.PlantsList();
}
if (suppList == null)
{
+2 -2
View File
@@ -21,7 +21,7 @@ namespace GWMS.UI.Pages
private int _startHour = 8;
private WeekPlanModel currRecord = null;
private List<WeekPlanModel> ListRecords;
private List<PlantDTO> PlantsList;
private List<PlantDetailModel> PlantsList;
private List<SupplierModel> SuppliersList;
private List<TransporterModel> TransportersList;
@@ -252,7 +252,7 @@ namespace GWMS.UI.Pages
protected async Task ReloadAllData()
{
PlantsList = await DataService.PlantsGetAll();
PlantsList = await DataService.PlantsList();
SuppliersList = await DataService.SuppliersGetAll();
TransportersList = await DataService.TransportersGetAll();
await ReloadData();
+1 -1
View File
@@ -1,6 +1,6 @@
<body>
<i>GWMS - Gas Warehouse Management System</i>
<h4>Versione: 1.0.2404.1816</h4>
<h4>Versione: 1.0.2406.0317</h4>
<br /> Note di rilascio:
<ul>
<li>
+1 -1
View File
@@ -1 +1 @@
1.0.2404.1816
1.0.2406.0317
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<item>
<version>1.0.2404.1816</version>
<version>1.0.2406.0317</version>
<url>http://nexus.steamware.net/repository/SWS/GWMS/stable/0/GWMS.UI.zip</url>
<changelog>http://nexus.steamware.net/repository/SWS/GWMS/stable/0/ChangeLog.html</changelog>
<mandatory>false</mandatory>