Compare commits
153 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 52dffc36d7 | |||
| 58c90034af | |||
| c96b2eba1d | |||
| 2a4e46240c | |||
| 3739f888f9 | |||
| e406fce2eb | |||
| aa19832649 | |||
| 25d5ba81d2 | |||
| 822a0fdfb8 | |||
| b4a4db08d1 | |||
| 9d9dcecb1c | |||
| fd5433f3c9 | |||
| 4b365e1760 | |||
| 693687a1ee | |||
| a45b70af9b | |||
| 153438e4d6 | |||
| f63d153d5b | |||
| 85298a16d7 | |||
| 16ccb1c57e | |||
| ecfa85ff38 | |||
| b45b728eb1 | |||
| 1dfd0c60d1 | |||
| 76f6151f75 | |||
| 39559e3151 | |||
| 9625911cf1 | |||
| 3e0b496764 | |||
| cd902129a5 | |||
| 4f14df94bb | |||
| 879e54d194 | |||
| a4a9bb55b6 | |||
| 1eab3ad672 | |||
| bd505ab5ef | |||
| a68471ec6f | |||
| 8f3239b6d6 | |||
| d6e5b07e2d | |||
| 89492349b6 | |||
| 971f2c51e9 | |||
| dbfc13e968 | |||
| cb42c0a7ca | |||
| 06bae1d955 | |||
| 9459492599 | |||
| c208513988 | |||
| f0dc98a4f8 | |||
| 7742d49b08 | |||
| d6ed7c56a4 | |||
| d17175b405 | |||
| 38b89c9a81 | |||
| e31f773b34 | |||
| 74b4c50b00 | |||
| 4fda312aac | |||
| 165c7ebb5f | |||
| b0274e0f33 | |||
| c52a35082f | |||
| c572a9556e | |||
| fb74462ecd | |||
| 003f8792c4 | |||
| 8757528de3 | |||
| 5e3bbc23da | |||
| 2cbe549751 | |||
| a28d7cbc4a | |||
| 9670e170f2 | |||
| b6c514ebe9 | |||
| 50ac4a9e30 | |||
| 4122e27d17 | |||
| 2d8a4db24a | |||
| ac7b284397 | |||
| 70469bc51d | |||
| e84e352795 | |||
| 603e8df10f | |||
| 11751c2adb | |||
| 45ecc0f796 | |||
| b7193732a5 | |||
| e139e98309 | |||
| cc71178b7f | |||
| 43589701fd | |||
| 24e8999f95 | |||
| 5050878708 | |||
| 528f368a99 | |||
| 7c0c172231 | |||
| 2c7c06058b | |||
| eaa75482e0 | |||
| df6fa1ad77 | |||
| d96c9205fa | |||
| c9a845fc81 | |||
| e5325be058 | |||
| 911e8cbd05 | |||
| 01330d3bb2 | |||
| 1effa123fb | |||
| 921582e436 | |||
| d2c549d471 | |||
| 82d8737157 | |||
| 9bd4b07db7 | |||
| cc559063b3 | |||
| 95e9a8ee8a | |||
| 19986dc38d | |||
| 5f8611bf63 | |||
| 9d6e624a77 | |||
| ed54dafcdb | |||
| 64e574bfba | |||
| 4b3d4a4639 | |||
| 5d6535b85b | |||
| 3d7730aaa9 | |||
| cf787b3c71 | |||
| 76c3fa1ecf | |||
| 99256c0bed | |||
| 9d3e781f0e | |||
| 4f1b6f7861 | |||
| 0ab48fdd99 | |||
| cda14a810b | |||
| 30e4cd863b | |||
| a231f9ac8c | |||
| 4ba86de5c0 | |||
| 768c435943 | |||
| dacbc8a6a6 | |||
| fe4c3e2f93 | |||
| 2a93efc1e3 | |||
| e4bfb2eaa3 | |||
| f59d9b49f5 | |||
| c3afb4140e | |||
| c731932339 | |||
| afb4d5d2cc | |||
| 82d167bfef | |||
| 6755380008 | |||
| 7e5ad0279f | |||
| 4741f98c66 | |||
| 6eb8e8c55d | |||
| ea2d912e05 | |||
| 6bbc8b6fa0 | |||
| 14fb396c00 | |||
| f9068995a8 | |||
| c64efc5aca | |||
| eee32daf4b | |||
| 1d1112cc46 | |||
| 11570f93f8 | |||
| 17f24c9209 | |||
| 3eb27c942a | |||
| e6dcfc2ca2 | |||
| 6c3ea45bea | |||
| 9c729c678f | |||
| 6e0f4b1fed | |||
| 26bf86bcab | |||
| d58e41ba06 | |||
| 227e17aa35 | |||
| 65c7ec3863 | |||
| a086b3cdcd | |||
| 1ca0a4737c | |||
| 46854b969f | |||
| 341029019f | |||
| 82eea1eb0b | |||
| ce5fc70204 | |||
| ead61e3e16 | |||
| bd80c01404 | |||
| fd0356bae4 |
+15
-6
@@ -6,13 +6,22 @@ variables:
|
||||
# helper x fix pacchetti nuget da repo locale nexus.steamware.net
|
||||
.nuget-fix: &nuget-fix
|
||||
- |
|
||||
$hasSource = C:\Tools\nuget.exe sources list | find "`"Steamware Nexus`"" /C
|
||||
if ($hasSource -eq 0) {
|
||||
C:\Tools\nuget.exe sources Add -Name "`"Steamware Nexus`"" -Source https://nexus.steamware.net/repository/nuget-group -username "`"nugetUser`"" -password "`"viaDante16`""
|
||||
} else {
|
||||
C:\Tools\nuget.exe sources Update -Name "`"Steamware Nexus`"" -Source https://nexus.steamware.net/repository/nuget-group -username "`"nugetUser`"" -password "`"viaDante16`""
|
||||
echo "esecuzione Nuget FIX steps"
|
||||
dotnet nuget list source
|
||||
$hasSource = dotnet nuget list source | Select-String -Pattern "Steamware Nexus Proxy"
|
||||
if (! [String]::IsNullOrWhiteSpace($hasSource)) {
|
||||
dotnet nuget remove source "`"Steamware Nexus Proxy`""
|
||||
}
|
||||
echo $hasSource
|
||||
$hasSource = dotnet nuget list source | Select-String -Pattern "Steamware Nexus"
|
||||
if (! [String]::IsNullOrWhiteSpace($hasSource)) {
|
||||
dotnet nuget remove source "`"Steamware Nexus`""
|
||||
}
|
||||
$hasSource = dotnet nuget list source | Select-String -Pattern "nexus-proxy-v3"
|
||||
if (! [String]::IsNullOrWhiteSpace($hasSource)) {
|
||||
dotnet nuget remove source nexus-proxy-v3
|
||||
}
|
||||
dotnet nuget add source https://nexus.steamware.net/repository/nuget-group-3/index.json -n "Steamware Nexus" -u nugetUser -p $NEXUS_PASSWD --store-password-in-clear-text
|
||||
echo "Steamware Nexus Source added"
|
||||
|
||||
# helper creazione hash files
|
||||
.hashBuild: &hashBuild
|
||||
|
||||
@@ -56,8 +56,6 @@ namespace GWMS.Data
|
||||
string connString = DbConfig.ADMIN_CONNECTION_STRING;
|
||||
if (!optionsBuilder.IsConfigured)
|
||||
{
|
||||
//connString = _configuration.GetConnectionString("GWMS.Data");
|
||||
//connString = "Server=localhost;port=3306;database=GWMS;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;";
|
||||
var serverVersion = ServerVersion.AutoDetect(connString);
|
||||
optionsBuilder.UseMySql(connString, serverVersion);
|
||||
}
|
||||
|
||||
@@ -6,7 +6,10 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace GWMS.Data
|
||||
{
|
||||
public class Constants
|
||||
public class Const
|
||||
{
|
||||
|
||||
// classi utilità x cache REDIS dati DB
|
||||
public const string rKeyConfig = "GWMS";
|
||||
}
|
||||
}
|
||||
@@ -12,13 +12,6 @@ namespace GWMS.Data.Controllers
|
||||
{
|
||||
public class GWMSController : IDisposable
|
||||
{
|
||||
#region Private Fields
|
||||
|
||||
private static IConfiguration _configuration;
|
||||
private static NLog.Logger Log = LogManager.GetCurrentClassLogger();
|
||||
|
||||
#endregion Private Fields
|
||||
|
||||
#region Public Constructors
|
||||
|
||||
public GWMSController(IConfiguration configuration)
|
||||
@@ -30,6 +23,30 @@ namespace GWMS.Data.Controllers
|
||||
|
||||
#region Public Methods
|
||||
|
||||
/// <summary>
|
||||
/// Esegue pulizia allarmi impianto richiesto
|
||||
/// </summary>
|
||||
/// <param name="PlantId"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<int> AlarmLogCleanDup(int PlantId)
|
||||
{
|
||||
int numMod = 0;
|
||||
using (GWMSContext localDbCtx = new GWMSContext(_configuration))
|
||||
{
|
||||
try
|
||||
{
|
||||
// eseguo stored
|
||||
string sqlCommand = $"CALL stp_deleteDuplicatedAlarms ({PlantId});";
|
||||
numMod = await localDbCtx.Database.ExecuteSqlRawAsync(sqlCommand);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
Log.Error($"Eccezione in AlarmLogCleanDup{Environment.NewLine}{exc}");
|
||||
}
|
||||
}
|
||||
return numMod;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Recupero elenco allarmi (ultimi?)
|
||||
/// </summary>
|
||||
@@ -37,21 +54,21 @@ namespace GWMS.Data.Controllers
|
||||
/// <param name="skipRec"></param>
|
||||
/// <param name="numRec"></param>
|
||||
/// <returns></returns>
|
||||
public List<AlarmLogModel> AlarmLogGetFilt(int PlantId, int skipRec, int numRec)
|
||||
public async Task<List<AlarmLogModel>> AlarmLogGetFilt(int PlantId, int skipRec, int numRec)
|
||||
{
|
||||
List<AlarmLogModel> dbResult = new List<AlarmLogModel>();
|
||||
using (GWMSContext localDbCtx = new GWMSContext(_configuration))
|
||||
{
|
||||
try
|
||||
{
|
||||
dbResult = localDbCtx
|
||||
dbResult = await localDbCtx
|
||||
.DbSetAlarmLog
|
||||
.Where(x => x.PlantId == PlantId)
|
||||
.Include(p => p.Plant)
|
||||
.OrderByDescending(x => x.AlarmLogId)
|
||||
.Skip(skipRec)
|
||||
.Take(numRec)
|
||||
.ToList();
|
||||
.ToListAsync();
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
@@ -64,7 +81,7 @@ namespace GWMS.Data.Controllers
|
||||
/// <summary>
|
||||
/// Inserimento di un record AlarmLog
|
||||
/// </summary>
|
||||
/// <param name="PlantLogModel">Record da inserire (senza ID...)</param>
|
||||
/// <param name="newItem">Record da inserire</param>
|
||||
/// <returns></returns>
|
||||
public async Task<bool> AlarmLogInsert(AlarmLogModel newItem)
|
||||
{
|
||||
@@ -74,8 +91,8 @@ namespace GWMS.Data.Controllers
|
||||
try
|
||||
{
|
||||
localDbCtx
|
||||
.DbSetAlarmLog
|
||||
.Add(newItem);
|
||||
.DbSetAlarmLog
|
||||
.Add(newItem);
|
||||
await localDbCtx.SaveChangesAsync();
|
||||
fatto = true;
|
||||
}
|
||||
@@ -101,6 +118,10 @@ namespace GWMS.Data.Controllers
|
||||
return roundDate;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Forza migrazione DB se necessario
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public bool DbForceMigrate()
|
||||
{
|
||||
bool answ = false;
|
||||
@@ -113,7 +134,7 @@ namespace GWMS.Data.Controllers
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
Log.Error($"Eccezione in DbForceMigrate");
|
||||
Log.Error($"Eccezione in DbForceMigrate{Environment.NewLine}{exc}");
|
||||
}
|
||||
}
|
||||
return answ;
|
||||
@@ -149,69 +170,74 @@ namespace GWMS.Data.Controllers
|
||||
return dbResult;
|
||||
}
|
||||
|
||||
public OrderModel GetOrderByCode(string OrderCode)
|
||||
public async Task<OrderModel> GetOrderByCodeAsync(string OrderCode)
|
||||
{
|
||||
OrderModel dbResult = new OrderModel();
|
||||
using (GWMSContext localDbCtx = new GWMSContext(_configuration))
|
||||
{
|
||||
dbResult = localDbCtx
|
||||
.DbSetOrders
|
||||
.Where(x => (x.OrderCode == OrderCode))
|
||||
.Include(p => p.Plant)
|
||||
.Include(s => s.Supplier)
|
||||
.Include(t => t.Transporter)
|
||||
.FirstOrDefault();
|
||||
dbResult = await localDbCtx
|
||||
.DbSetOrders
|
||||
.Where(x => (x.OrderCode == OrderCode))
|
||||
.Include(p => p.Plant)
|
||||
.Include(s => s.Supplier)
|
||||
.Include(t => t.Transporter)
|
||||
.FirstOrDefaultAsync();
|
||||
}
|
||||
return dbResult;
|
||||
}
|
||||
|
||||
public OrderModel GetOrderById(int OrderId)
|
||||
public async Task<OrderModel> GetOrderByIdAsync(int OrderId)
|
||||
{
|
||||
OrderModel dbResult = new OrderModel();
|
||||
using (GWMSContext localDbCtx = new GWMSContext(_configuration))
|
||||
{
|
||||
dbResult = localDbCtx
|
||||
.DbSetOrders
|
||||
.Where(x => (x.OrderId == OrderId))
|
||||
.Include(p => p.Plant)
|
||||
.Include(s => s.Supplier)
|
||||
.Include(t => t.Transporter)
|
||||
.FirstOrDefault();
|
||||
dbResult = await localDbCtx
|
||||
.DbSetOrders
|
||||
.Where(x => (x.OrderId == OrderId))
|
||||
.Include(p => p.Plant)
|
||||
.Include(s => s.Supplier)
|
||||
.Include(t => t.Transporter)
|
||||
.FirstOrDefaultAsync();
|
||||
}
|
||||
return dbResult;
|
||||
}
|
||||
|
||||
public List<OrderModel> GetOrdersFilt(int PlantId, int SupplierId, int TransporterId, DateTime DtStart, DateTime DtEnd, bool ShowClosed)
|
||||
public async Task<List<OrderModel>> GetOrdersFiltAsync(int PlantId, int SupplierId, int TransporterId, DateTime DtStart, DateTime DtEnd, bool ShowClosed)
|
||||
{
|
||||
List<OrderModel> dbResult = new List<OrderModel>();
|
||||
using (GWMSContext localDbCtx = new GWMSContext(_configuration))
|
||||
{
|
||||
dbResult = localDbCtx
|
||||
.DbSetOrders
|
||||
.Where(x => (x.PlantId == PlantId || PlantId == 0) && (x.SupplierId == SupplierId || SupplierId == 0) && (x.TransporterId == TransporterId || TransporterId == 0) && (x.DtOrder >= DtStart && x.DtOrder <= DtEnd) && (x.ExecutionQty == 0 || ShowClosed))
|
||||
.Include(p => p.Plant)
|
||||
.Include(s => s.Supplier)
|
||||
.Include(t => t.Transporter)
|
||||
.OrderByDescending(x => x.DtOrder)
|
||||
.ToList();
|
||||
dbResult = await localDbCtx
|
||||
.DbSetOrders
|
||||
.Where(x => (x.PlantId == PlantId || PlantId == 0)
|
||||
&& (x.SupplierId == SupplierId || SupplierId == 0)
|
||||
&& (x.TransporterId == TransporterId || TransporterId == 0)
|
||||
&& (x.DtOrder >= DtStart && x.DtOrder <= DtEnd)
|
||||
&& (x.ExecutionQty == 0 || ShowClosed))
|
||||
.Include(p => p.Plant)
|
||||
.Include(s => s.Supplier)
|
||||
.Include(t => t.Transporter)
|
||||
.OrderByDescending(x => x.DtOrder)
|
||||
.ToListAsync();
|
||||
}
|
||||
return dbResult;
|
||||
}
|
||||
|
||||
public List<OrderModel> GetOrdersOpen(int PlantId)
|
||||
public async Task<List<OrderModel>> GetOrdersOpenAsync(int PlantId)
|
||||
{
|
||||
List<OrderModel> dbResult = new List<OrderModel>();
|
||||
// limite ordini aperti: creati all'anno 0001 --> verifico anno start < 2000
|
||||
using (GWMSContext localDbCtx = new GWMSContext(_configuration))
|
||||
{
|
||||
dbResult = localDbCtx
|
||||
.DbSetOrders
|
||||
.Where(x => (x.PlantId == PlantId || PlantId == 0) && (x.DtExecStart < x.DtOrder && x.DtExecStart.Year < 2000))
|
||||
.Include(p => p.Plant)
|
||||
.Include(s => s.Supplier)
|
||||
.Include(t => t.Transporter)
|
||||
.OrderByDescending(x => x.DtOrder)
|
||||
.ToList();
|
||||
dbResult = await localDbCtx
|
||||
.DbSetOrders
|
||||
.Where(x => (x.PlantId == PlantId || PlantId == 0)
|
||||
&& (x.DtExecStart < x.DtOrder && x.DtExecStart.Year < 2000))
|
||||
.Include(p => p.Plant)
|
||||
.Include(s => s.Supplier)
|
||||
.Include(t => t.Transporter)
|
||||
.OrderByDescending(x => x.DtOrder)
|
||||
.ToListAsync();
|
||||
}
|
||||
return dbResult;
|
||||
}
|
||||
@@ -229,28 +255,6 @@ namespace GWMS.Data.Controllers
|
||||
return dbResult;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Elenco log registrati x plant
|
||||
/// </summary>
|
||||
/// <param name="PlantId">se 0 = tutto</param>
|
||||
/// <param name="DtMaxDate">consigliato arrotondamento al minuto o multiplo</param>
|
||||
/// <param name="numRec">num rec max da recuperare</param>
|
||||
/// <returns></returns>
|
||||
public List<PlantLogModel> GetPlantLog(int PlantId, DateTime DtMaxDate, int numRec)
|
||||
{
|
||||
List<PlantLogModel> dbResult = new List<PlantLogModel>();
|
||||
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();
|
||||
}
|
||||
return dbResult;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Elenco in formato di lista DTO resoconti giornalieri x Plant
|
||||
/// - elenco record livelli giornalieri
|
||||
@@ -261,7 +265,7 @@ namespace GWMS.Data.Controllers
|
||||
/// <param name="DtStart">data inizio</param>
|
||||
/// <param name="DtEnd">data fine</param>
|
||||
/// <returns></returns>
|
||||
public List<PlantLevSumDTO> GetPlantLogSummary(int PlantId, DateTime DtStart, DateTime DtEnd)
|
||||
public List<PlantLevSumDTO> GetPlantLevSumDto(int PlantId, DateTime DtStart, DateTime DtEnd)
|
||||
{
|
||||
List<PlantLevSumDTO> dbResult = new List<PlantLevSumDTO>();
|
||||
if (PlantId > 0)
|
||||
@@ -294,7 +298,8 @@ namespace GWMS.Data.Controllers
|
||||
// recupero i dati della gioranta indicata
|
||||
var currLevelTS = dbLevels
|
||||
.Where(x => x.DtEvent > dataCurr && x.DtEvent <= dataCurr.AddDays(1))
|
||||
.Select(x => new TSData() { DtEvent = x.DtEvent, ValDouble = x.ValNumber })
|
||||
.Select(x => new TSData(x.DtEvent, x.ValNumber, true))
|
||||
//.Select(x => new TSData() { DtEvent = x.DtEvent, ValDouble = x.ValNumber })
|
||||
.ToList();
|
||||
// SOLO SE ho almeno 1 record livello
|
||||
if (currLevelTS.Count > 0)
|
||||
@@ -332,11 +337,13 @@ namespace GWMS.Data.Controllers
|
||||
{
|
||||
newRec.ExecutionTS = dbOrders
|
||||
.Where(x => x.DtExecStart >= dataCurr && x.DtExecStart < dataCurr.AddDays(1))
|
||||
.Select(x => new TSData() { DtEvent = x.DtOrder, ValDouble = x.ExecutionQty }).ToList();
|
||||
.Select(x => new TSData(x.DtOrder, x.ExecutionQty, true)).ToList();
|
||||
//.Select(x => new TSData() { DtEvent = x.DtOrder, ValDouble = x.ExecutionQty }).ToList();
|
||||
|
||||
newRec.OrderTS = dbOrders
|
||||
.Where(x => x.DtExecStart >= dataCurr && x.DtExecStart < dataCurr.AddDays(1))
|
||||
.Select(x => new TSData() { DtEvent = x.DtOrder, ValDouble = x.OrderQty }).ToList();
|
||||
.Select(x => new TSData(x.DtOrder, x.OrderQty, true)).ToList();
|
||||
//.Select(x => new TSData() { DtEvent = x.DtOrder, ValDouble = x.OrderQty }).ToList();
|
||||
|
||||
newRec.OrdersIds = dbOrders
|
||||
.Where(x => x.DtExecStart >= dataCurr && x.DtExecStart < dataCurr.AddDays(1))
|
||||
@@ -352,6 +359,28 @@ namespace GWMS.Data.Controllers
|
||||
return dbResult;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Elenco log registrati x plant
|
||||
/// </summary>
|
||||
/// <param name="PlantId">se 0 = tutto</param>
|
||||
/// <param name="DtMaxDate">consigliato arrotondamento al minuto o multiplo</param>
|
||||
/// <param name="numRec">num rec max da recuperare</param>
|
||||
/// <returns></returns>
|
||||
public List<PlantLogModel> GetPlantLog(int PlantId, DateTime DtMaxDate, int numRec)
|
||||
{
|
||||
List<PlantLogModel> dbResult = new List<PlantLogModel>();
|
||||
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();
|
||||
}
|
||||
return dbResult;
|
||||
}
|
||||
|
||||
public List<PlantDetailModel> GetPlants()
|
||||
{
|
||||
List<PlantDetailModel> dbResult = new List<PlantDetailModel>();
|
||||
@@ -370,12 +399,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 +425,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;
|
||||
}
|
||||
@@ -428,31 +457,31 @@ namespace GWMS.Data.Controllers
|
||||
return dbResult;
|
||||
}
|
||||
|
||||
public List<WeekPlanModel> GetWeekPlan()
|
||||
public async Task<List<WeekPlanModel>> GetWeekPlanAsync()
|
||||
{
|
||||
List<WeekPlanModel> dbResult = new List<WeekPlanModel>();
|
||||
using (GWMSContext localDbCtx = new GWMSContext(_configuration))
|
||||
{
|
||||
dbResult = localDbCtx
|
||||
.DbSetPlantSupplWeekPlan
|
||||
.Include(p => p.Plant)
|
||||
.Include(s => s.Supplier)
|
||||
.Include(t => t.Transporter)
|
||||
.ToList();
|
||||
dbResult = await localDbCtx
|
||||
.DbSetPlantSupplWeekPlan
|
||||
.Include(p => p.Plant)
|
||||
.Include(s => s.Supplier)
|
||||
.Include(t => t.Transporter)
|
||||
.ToListAsync();
|
||||
}
|
||||
return dbResult;
|
||||
}
|
||||
|
||||
public bool HasPlantLog()
|
||||
public async Task<bool> HasPlantLog()
|
||||
{
|
||||
bool answ = false;
|
||||
using (GWMSContext localDbCtx = new GWMSContext(_configuration))
|
||||
{
|
||||
try
|
||||
{
|
||||
var numRecord = localDbCtx
|
||||
var numRecord = await localDbCtx
|
||||
.DbSetPlantLog
|
||||
.Count();
|
||||
.CountAsync();
|
||||
answ = numRecord > 0;
|
||||
}
|
||||
catch
|
||||
@@ -462,33 +491,52 @@ namespace GWMS.Data.Controllers
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Eliminazione di un ordine
|
||||
/// Eliminazione di un ordine dato record completo
|
||||
/// </summary>
|
||||
/// <param name="Item2Del"></param>
|
||||
/// <returns></returns>
|
||||
public bool OrderDelete(OrderModel Item2Del)
|
||||
public async Task<bool> OrderDeleteAsync(OrderModel Item2Del)
|
||||
{
|
||||
bool done = false;
|
||||
using (GWMSContext localDbCtx = new GWMSContext(_configuration))
|
||||
{
|
||||
try
|
||||
if (Item2Del != null)
|
||||
{
|
||||
if (Item2Del != null)
|
||||
{
|
||||
var rec2del = localDbCtx
|
||||
.DbSetOrders
|
||||
.Where(x => x.OrderId == Item2Del.OrderId)
|
||||
.FirstOrDefault();
|
||||
localDbCtx
|
||||
.DbSetOrders
|
||||
.Remove(rec2del);
|
||||
localDbCtx.SaveChanges();
|
||||
done = true;
|
||||
}
|
||||
var rec2del = await localDbCtx
|
||||
.DbSetOrders
|
||||
.Where(x => x.OrderId == Item2Del.OrderId)
|
||||
.FirstOrDefaultAsync();
|
||||
localDbCtx
|
||||
.DbSetOrders
|
||||
.Remove(rec2del);
|
||||
int numDone = await localDbCtx.SaveChangesAsync();
|
||||
done = numDone > 0;
|
||||
}
|
||||
catch (Exception exc)
|
||||
}
|
||||
return done;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Eliminazione di un ordine dao codice ID univoco
|
||||
/// </summary>
|
||||
/// <param name="orderId"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<bool> OrderDeleteAsync(int orderId)
|
||||
{
|
||||
bool done = false;
|
||||
using (GWMSContext localDbCtx = new GWMSContext(_configuration))
|
||||
{
|
||||
if (orderId > 0)
|
||||
{
|
||||
Log.Error($"Eccezione in OrderDelete:{Environment.NewLine}{exc}");
|
||||
var rec2del = await localDbCtx
|
||||
.DbSetOrders
|
||||
.Where(x => x.OrderId == orderId)
|
||||
.FirstOrDefaultAsync();
|
||||
localDbCtx
|
||||
.DbSetOrders
|
||||
.Remove(rec2del);
|
||||
int numDone = await localDbCtx.SaveChangesAsync();
|
||||
done = numDone > 0;
|
||||
}
|
||||
}
|
||||
return done;
|
||||
@@ -565,55 +613,12 @@ namespace GWMS.Data.Controllers
|
||||
return done;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Recupera un record ParamSend
|
||||
/// </summary>
|
||||
/// <param name="updItem"></param>
|
||||
/// <returns></returns>
|
||||
public ParamSendModel ParamSendGet(int PlantId, string ParamUid)
|
||||
{
|
||||
ParamSendModel result = new ParamSendModel();
|
||||
using (GWMSContext localDbCtx = new GWMSContext(_configuration))
|
||||
{
|
||||
try
|
||||
{
|
||||
result = localDbCtx
|
||||
.DbSetParamSend
|
||||
.Where(x => x.PlantId == PlantId && x.ParamUid == ParamUid)
|
||||
.FirstOrDefault();
|
||||
|
||||
if (result == null && PlantId > 0 && !string.IsNullOrEmpty(ParamUid))
|
||||
{
|
||||
ParamSendModel currData = new ParamSendModel()
|
||||
{
|
||||
PlantId = PlantId,
|
||||
ParamUid = ParamUid,
|
||||
enabled = false
|
||||
};
|
||||
|
||||
if (currData != null)
|
||||
{
|
||||
localDbCtx.
|
||||
DbSetParamSend
|
||||
.Add(currData);
|
||||
localDbCtx.SaveChanges();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
Log.Error($"Eccezione in ParamSendGet:{Environment.NewLine}{exc}");
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Elenco di TUTTI i parametri gestiti
|
||||
/// </summary>
|
||||
/// <param name="updItem"></param>
|
||||
/// <returns></returns>
|
||||
public List<ParamSendModel> ParamSendGetAll()
|
||||
public async Task<List<ParamSendModel>> ParamSendGetAllAsync()
|
||||
{
|
||||
List<ParamSendModel> listParams = new List<ParamSendModel>();
|
||||
using (GWMSContext localDbCtx = new GWMSContext(_configuration))
|
||||
@@ -621,54 +626,83 @@ namespace GWMS.Data.Controllers
|
||||
try
|
||||
{
|
||||
// elenco parametri gestiti
|
||||
listParams = localDbCtx
|
||||
.DbSetParamSend
|
||||
//.Where(x => x.enabled)
|
||||
.ToList();
|
||||
listParams = await localDbCtx
|
||||
.DbSetParamSend
|
||||
//.Where(x => x.enabled)
|
||||
.ToListAsync();
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
Log.Error($"Eccezione in ParamSendGetAll:{Environment.NewLine}{exc}");
|
||||
Log.Error($"Eccezione in ParamSendGetAllAsync:{Environment.NewLine}{exc}");
|
||||
}
|
||||
}
|
||||
return listParams;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Recupera un record ParamSend
|
||||
/// </summary>
|
||||
/// <param name="updItem"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<ParamSendModel> ParamSendGetAsync(int PlantId, string ParamUid)
|
||||
{
|
||||
ParamSendModel result = new ParamSendModel();
|
||||
using (GWMSContext localDbCtx = new GWMSContext(_configuration))
|
||||
{
|
||||
result = await localDbCtx
|
||||
.DbSetParamSend
|
||||
.Where(x => x.PlantId == PlantId && x.ParamUid == ParamUid)
|
||||
.FirstOrDefaultAsync();
|
||||
|
||||
if (result == null && PlantId > 0 && !string.IsNullOrEmpty(ParamUid))
|
||||
{
|
||||
ParamSendModel currData = new ParamSendModel()
|
||||
{
|
||||
PlantId = PlantId,
|
||||
ParamUid = ParamUid,
|
||||
enabled = false
|
||||
};
|
||||
|
||||
if (currData != null)
|
||||
{
|
||||
localDbCtx.
|
||||
DbSetParamSend
|
||||
.Add(currData);
|
||||
await localDbCtx.SaveChangesAsync();
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Aggiorna un record ParamSend
|
||||
/// </summary>
|
||||
/// <param name="updItem"></param>
|
||||
/// <returns></returns>
|
||||
public bool ParamSendUpdate(ParamSendModel updItem)
|
||||
public async Task<bool> ParamSendUpdateAsync(ParamSendModel updItem)
|
||||
{
|
||||
bool done = false;
|
||||
using (GWMSContext localDbCtx = new GWMSContext(_configuration))
|
||||
{
|
||||
try
|
||||
ParamSendModel currData = null;
|
||||
currData = await localDbCtx
|
||||
.DbSetParamSend
|
||||
.Where(x => x.PlantId == updItem.PlantId && x.ParamUid == updItem.ParamUid)
|
||||
.FirstOrDefaultAsync();
|
||||
if (currData != null)
|
||||
{
|
||||
ParamSendModel currData = null;
|
||||
currData = localDbCtx
|
||||
.DbSetParamSend
|
||||
.Where(x => x.PlantId == updItem.PlantId && x.ParamUid == updItem.ParamUid)
|
||||
.FirstOrDefault();
|
||||
if (currData != null)
|
||||
{
|
||||
localDbCtx.Entry(currData).CurrentValues.SetValues(updItem);
|
||||
localDbCtx.SaveChanges();
|
||||
}
|
||||
else
|
||||
{
|
||||
localDbCtx
|
||||
.DbSetParamSend
|
||||
.Add(updItem);
|
||||
localDbCtx.SaveChanges();
|
||||
}
|
||||
done = true;
|
||||
localDbCtx.Entry(currData).CurrentValues.SetValues(updItem);
|
||||
await localDbCtx.SaveChangesAsync();
|
||||
}
|
||||
catch (Exception exc)
|
||||
else
|
||||
{
|
||||
Log.Error($"Eccezione in ParamSendUpdate:{Environment.NewLine}{exc}");
|
||||
localDbCtx
|
||||
.DbSetParamSend
|
||||
.Add(updItem);
|
||||
localDbCtx.SaveChanges();
|
||||
}
|
||||
done = true;
|
||||
}
|
||||
return done;
|
||||
}
|
||||
@@ -678,44 +712,37 @@ namespace GWMS.Data.Controllers
|
||||
/// </summary>
|
||||
/// <param name="Item2Del"></param>
|
||||
/// <returns></returns>
|
||||
public bool ParamSetDelete(ParamSetModel Item2Del)
|
||||
public async Task<bool> ParamSetDeleteAsync(ParamSetModel Item2Del)
|
||||
{
|
||||
bool done = false;
|
||||
using (GWMSContext localDbCtx = new GWMSContext(_configuration))
|
||||
{
|
||||
try
|
||||
if (Item2Del != null)
|
||||
{
|
||||
if (Item2Del != null)
|
||||
{
|
||||
var rec2del = localDbCtx
|
||||
.DbSetParamSet
|
||||
.Where(x => x.ParamSetId == Item2Del.ParamSetId)
|
||||
.FirstOrDefault();
|
||||
localDbCtx
|
||||
.DbSetParamSet
|
||||
.Remove(rec2del);
|
||||
localDbCtx.SaveChanges();
|
||||
done = true;
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
Log.Error($"Eccezione in ParamSetDelete:{Environment.NewLine}{exc}");
|
||||
var rec2del = await localDbCtx
|
||||
.DbSetParamSet
|
||||
.Where(x => x.ParamSetId == Item2Del.ParamSetId)
|
||||
.FirstOrDefaultAsync();
|
||||
localDbCtx
|
||||
.DbSetParamSet
|
||||
.Remove(rec2del);
|
||||
await localDbCtx.SaveChangesAsync();
|
||||
done = true;
|
||||
}
|
||||
}
|
||||
return done;
|
||||
}
|
||||
|
||||
public List<ParamSetModel> ParamSetGet(int PlantId, string ParamUid)
|
||||
public async Task<List<ParamSetModel>> ParamSetGetAsync(int PlantId, string ParamUid)
|
||||
{
|
||||
List<ParamSetModel> dbResult = new List<ParamSetModel>();
|
||||
using (GWMSContext localDbCtx = new GWMSContext(_configuration))
|
||||
{
|
||||
dbResult = localDbCtx
|
||||
.DbSetParamSet
|
||||
.Where(x => (x.PlantId == PlantId || PlantId == 0) && (x.ParamUid == ParamUid || ParamUid == ""))
|
||||
.OrderBy(x => x.Scadenza)
|
||||
.ToList();
|
||||
dbResult = await localDbCtx
|
||||
.DbSetParamSet
|
||||
.Where(x => (x.PlantId == PlantId || PlantId == 0) && (x.ParamUid == ParamUid || ParamUid == ""))
|
||||
.OrderBy(x => x.Scadenza)
|
||||
.ToListAsync();
|
||||
}
|
||||
return dbResult;
|
||||
}
|
||||
@@ -751,36 +778,28 @@ namespace GWMS.Data.Controllers
|
||||
/// </summary>
|
||||
/// <param name="updItem"></param>
|
||||
/// <returns></returns>
|
||||
public bool ParamSetUpdate(ParamSetModel updItem)
|
||||
public async Task<bool> ParamSetUpdateAsync(ParamSetModel updItem)
|
||||
{
|
||||
bool done = false;
|
||||
using (GWMSContext localDbCtx = new GWMSContext(_configuration))
|
||||
{
|
||||
try
|
||||
ParamSetModel currData = null;
|
||||
currData = await localDbCtx
|
||||
.DbSetParamSet
|
||||
.Where(x => x.ParamSetId == updItem.ParamSetId)
|
||||
.FirstOrDefaultAsync();
|
||||
if (currData != null)
|
||||
{
|
||||
ParamSetModel currData = null;
|
||||
currData = localDbCtx
|
||||
.DbSetParamSet
|
||||
.Where(x => x.ParamSetId == updItem.ParamSetId)
|
||||
.FirstOrDefault();
|
||||
if (currData != null)
|
||||
{
|
||||
localDbCtx.Entry(currData).CurrentValues.SetValues(updItem);
|
||||
localDbCtx.SaveChanges();
|
||||
}
|
||||
else
|
||||
{
|
||||
localDbCtx
|
||||
.DbSetParamSet
|
||||
.Add(updItem);
|
||||
localDbCtx.SaveChanges();
|
||||
}
|
||||
done = true;
|
||||
localDbCtx.Entry(currData).CurrentValues.SetValues(updItem);
|
||||
}
|
||||
catch (Exception exc)
|
||||
else
|
||||
{
|
||||
Log.Error($"Eccezione in ParamSetUpdate:{Environment.NewLine}{exc}");
|
||||
localDbCtx
|
||||
.DbSetParamSet
|
||||
.Add(updItem);
|
||||
}
|
||||
await localDbCtx.SaveChangesAsync();
|
||||
done = true;
|
||||
}
|
||||
return done;
|
||||
}
|
||||
@@ -805,44 +824,77 @@ 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 ultimo mese...
|
||||
var rawData = localDbCtx
|
||||
.DbSetPlantLog
|
||||
.Where(x => x.DtEvent > DateTime.Today.AddMonths(-1) && x.PlantId == PlantId)
|
||||
.AsNoTracking()
|
||||
.ToList();
|
||||
|
||||
var rawMainPressData = localDbCtx
|
||||
.DbSetPlantLog
|
||||
.Where(x => x.FluxType == "MainPress" && x.PlantId == PlantId)
|
||||
// ora recupero i distinct 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 = 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 +904,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)
|
||||
@@ -888,19 +940,24 @@ namespace GWMS.Data.Controllers
|
||||
}
|
||||
|
||||
LevelTS = rawLevelData
|
||||
.Select(x => new TSData() { DtEvent = x.DtEvent, ValDouble = x.ValNumber }).ToList();
|
||||
.Select(x => new TSData(x.DtEvent, x.ValNumber, true)).ToList();
|
||||
//.Select(x => new TSData() { DtEvent = x.DtEvent, ValDouble = x.ValNumber }).ToList();
|
||||
|
||||
OrderTS = rawOpenOrderData
|
||||
.Select(x => new TSData() { DtEvent = x.DtOrder, ValDouble = x.OrderQty }).ToList();
|
||||
.Select(x => new TSData(x.DtOrder, x.OrderQty, true)).ToList();
|
||||
//.Select(x => new TSData() { DtEvent = x.DtOrder, ValDouble = x.OrderQty }).ToList();
|
||||
|
||||
PressMainTS = rawMainPressData
|
||||
.Select(x => new TSData() { DtEvent = x.DtEvent, ValDouble = x.ValNumber }).ToList();
|
||||
.Select(x => new TSData(x.DtEvent, x.ValNumber, true)).ToList();
|
||||
//.Select(x => new TSData() { DtEvent = x.DtEvent, ValDouble = x.ValNumber }).ToList();
|
||||
|
||||
PressBHTS = rawBHPressData
|
||||
.Select(x => new TSData() { DtEvent = x.DtEvent, ValDouble = x.ValNumber }).ToList();
|
||||
.Select(x => new TSData(x.DtEvent, x.ValNumber, true)).ToList();
|
||||
//.Select(x => new TSData() { DtEvent = x.DtEvent, ValDouble = x.ValNumber }).ToList();
|
||||
|
||||
PressBLTS = rawBLPressData
|
||||
.Select(x => new TSData() { DtEvent = x.DtEvent, ValDouble = x.ValNumber }).ToList();
|
||||
.Select(x => new TSData(x.DtEvent, x.ValNumber, true)).ToList();
|
||||
//.Select(x => new TSData() { DtEvent = x.DtEvent, ValDouble = x.ValNumber }).ToList();
|
||||
|
||||
PressTS.Add("Main", PressMainTS);
|
||||
PressTS.Add("BH", PressBHTS);
|
||||
@@ -991,52 +1048,38 @@ namespace GWMS.Data.Controllers
|
||||
/// </summary>
|
||||
/// <param name="updItem"></param>
|
||||
/// <returns></returns>
|
||||
public bool PlantUpdate(PlantDTO updItem)
|
||||
public async Task<bool> PlantUpdateAsync(PlantDTO updItem)
|
||||
{
|
||||
bool done = false;
|
||||
using (GWMSContext localDbCtx = new GWMSContext(_configuration))
|
||||
{
|
||||
try
|
||||
PlantDetailModel currData = await localDbCtx
|
||||
.DbSetPlant
|
||||
.Where(x => x.PlantId == updItem.PlantId)
|
||||
.FirstOrDefaultAsync();
|
||||
if (currData != null)
|
||||
{
|
||||
PlantDetailModel currData = localDbCtx
|
||||
.DbSetPlant
|
||||
.Where(x => x.PlantId == updItem.PlantId)
|
||||
.FirstOrDefault();
|
||||
if (currData != null)
|
||||
{
|
||||
// aggiorno valori
|
||||
currData.LevelReorder = updItem.LevelReorder;
|
||||
currData.LevelMax = updItem.LevelMax;
|
||||
localDbCtx.Entry(currData).State = EntityState.Modified;
|
||||
localDbCtx.SaveChanges();
|
||||
}
|
||||
done = true;
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
Log.Error($"Eccezione in PlantUpdate:{Environment.NewLine}{exc}");
|
||||
// aggiorno valori
|
||||
currData.LevelReorder = updItem.LevelReorder;
|
||||
currData.LevelMax = updItem.LevelMax;
|
||||
localDbCtx.Entry(currData).State = EntityState.Modified;
|
||||
int numDone = await localDbCtx.SaveChangesAsync();
|
||||
done = numDone > 0;
|
||||
}
|
||||
}
|
||||
return done;
|
||||
}
|
||||
|
||||
public bool RecordRebootLog(RebootLogModel newItem)
|
||||
public async Task<bool> RecordRebootLogAsync(RebootLogModel newItem)
|
||||
{
|
||||
bool done = false;
|
||||
using (GWMSContext localDbCtx = new GWMSContext(_configuration))
|
||||
{
|
||||
try
|
||||
{
|
||||
localDbCtx
|
||||
.DbRebootLog
|
||||
.Add(newItem);
|
||||
localDbCtx.SaveChanges();
|
||||
done = true;
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
Log.Error($"Eccezione durante RecordRebootLog{Environment.NewLine}{exc}");
|
||||
}
|
||||
localDbCtx
|
||||
.DbRebootLog
|
||||
.Add(newItem);
|
||||
int numRec = await localDbCtx.SaveChangesAsync();
|
||||
done = numRec > 0;
|
||||
}
|
||||
return done;
|
||||
}
|
||||
@@ -1139,5 +1182,12 @@ namespace GWMS.Data.Controllers
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
|
||||
#region Private Fields
|
||||
|
||||
private static IConfiguration _configuration;
|
||||
private static Logger Log = LogManager.GetCurrentClassLogger();
|
||||
|
||||
#endregion Private Fields
|
||||
}
|
||||
}
|
||||
@@ -20,7 +20,7 @@ namespace GWMS.Data.DatabaseModels
|
||||
|
||||
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
public int PlantDataId { get; set; }
|
||||
|
||||
|
||||
public DateTime DtEvent { get; set; } = DateTime.Now;
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
@@ -10,13 +12,14 @@ namespace GWMS.Data.DatabaseModels
|
||||
/// <summary>
|
||||
/// Classe fake x il conteggio tabelle e check preliminari
|
||||
/// </summary>
|
||||
[Keyless]
|
||||
[Table("DbSetCounts")]
|
||||
public class TableCount
|
||||
{
|
||||
#region Public Properties
|
||||
|
||||
public int Count { get; set; }
|
||||
public string TableName { get; set; }
|
||||
[Key]
|
||||
public string TableName { get; set; } = "ND";
|
||||
public int Count { get; set; } = 0;
|
||||
|
||||
#endregion Public Properties
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using NLog;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace GWMS.Data
|
||||
@@ -43,17 +44,21 @@ namespace GWMS.Data
|
||||
|
||||
public static bool ExecMigrationIdentity()
|
||||
{
|
||||
Log.Info($"ExecMigrationIdentity: Start");
|
||||
// esecuzione migrazione
|
||||
var migrateTask = Task.Run(async () => await DbAdmin.migrateDbIdentity());
|
||||
migrateTask.Wait();
|
||||
Log.Info($"ExecMigrationIdentity: Completed");
|
||||
return migrateTask.Result;
|
||||
}
|
||||
|
||||
public static bool ExecMigrationMain()
|
||||
{
|
||||
Log.Info($"ExecMigrationMain: Start");
|
||||
// esecuzione migrazione
|
||||
var migrateTask = Task.Run(async () => await DbAdmin.migrateDbMain());
|
||||
migrateTask.Wait();
|
||||
Log.Info($"ExecMigrationMain: Completed");
|
||||
return migrateTask.Result;
|
||||
}
|
||||
|
||||
@@ -74,6 +79,8 @@ namespace GWMS.Data
|
||||
return serverVersion;
|
||||
}
|
||||
|
||||
private static Logger Log = LogManager.GetCurrentClassLogger();
|
||||
|
||||
#endregion Public Methods
|
||||
}
|
||||
}
|
||||
@@ -24,9 +24,8 @@
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="6.0.2" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||
<PackageReference Include="NLog" Version="4.7.14" />
|
||||
<PackageReference Include="NLog" Version="5.3.2" />
|
||||
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="6.0.1" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -88,19 +88,13 @@ namespace GWMS.Data
|
||||
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
||||
{
|
||||
// default
|
||||
string connString = "Server=localhost;port=3306;database=GWMS;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;";
|
||||
|
||||
// tento setup da config
|
||||
try
|
||||
{
|
||||
// uso conn string calcolata
|
||||
connString = DbConfig.CONNECTION_STRING;
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
string connString = DbConfig.CONNECTION_STRING;
|
||||
//if (string.IsNullOrEmpty(connString))
|
||||
//{
|
||||
// connString = "Server=localhost;port=3306;database=GWMS_PZZFRR;user=user_PZZFRR;pwd=pwd_M3T@n0;sslmode=None;";
|
||||
//}
|
||||
if (!optionsBuilder.IsConfigured)
|
||||
{
|
||||
//connString = "Server=localhost;port=3306;database=GWMS;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;";
|
||||
var serverVersion = ServerVersion.AutoDetect(connString);
|
||||
optionsBuilder.UseMySql(connString, serverVersion);
|
||||
}
|
||||
@@ -125,6 +119,9 @@ namespace GWMS.Data
|
||||
|
||||
modelBuilder.Entity<ParamSendModel>().HasKey(c => new { c.PlantId, c.ParamUid });
|
||||
|
||||
modelBuilder.Entity<PlantLogModel>().HasIndex(c => new { c.PlantId }, "IX_PlantLog_PlantId");
|
||||
modelBuilder.Entity<PlantLogModel>().HasIndex(c => new { c.PlantId, c.DtEvent }, "IX_PlantLog_PlantDtEv");
|
||||
|
||||
modelBuilder.Seed();
|
||||
|
||||
OnModelCreatingPartial(modelBuilder);
|
||||
|
||||
+13
-6
@@ -2,9 +2,6 @@
|
||||
using Newtonsoft.Json.Converters;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace GWMS.Data
|
||||
{
|
||||
@@ -27,7 +24,7 @@ namespace GWMS.Data
|
||||
/// <summary>
|
||||
/// Fattore per eventuale divisione (es leggo 1234 --> 12,34 con factor=100)
|
||||
/// </summary>
|
||||
public int factor { get; set; } = 1;
|
||||
public decimal factor { get; set; } = 1;
|
||||
|
||||
/// <summary>
|
||||
/// Indice nell'area di memoria (da valore iniziale = 0)
|
||||
@@ -248,18 +245,28 @@ namespace GWMS.Data
|
||||
/// <summary>
|
||||
/// Valore MASSIMO (SE impostato)
|
||||
/// </summary>
|
||||
public int valMax { get; set; }
|
||||
public double valMax { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Valore minimo (SE impostato)
|
||||
/// </summary>
|
||||
public int valMin { get; set; }
|
||||
public double valMin { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Ordinamento
|
||||
/// </summary>
|
||||
public int displOrdinal { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// Valore parametro (come stringa, decimali con ",", default VUOTO), sul CNC/PLC
|
||||
/// </summary>
|
||||
public string value { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Descrizione valore
|
||||
/// </summary>
|
||||
public string description { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Indica se sia abilitato in scrittura (WRITE)
|
||||
/// </summary>
|
||||
|
||||
@@ -0,0 +1,313 @@
|
||||
// <auto-generated />
|
||||
using System;
|
||||
using GWMS.Data;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace GWMS.User.Migrations
|
||||
{
|
||||
[DbContext(typeof(UserIdentityDbContext))]
|
||||
[Migration("20240411155438_RemoveTableCount")]
|
||||
partial class RemoveTableCount
|
||||
{
|
||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||
{
|
||||
#pragma warning disable 612, 618
|
||||
modelBuilder
|
||||
.HasAnnotation("ProductVersion", "6.0.2")
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 64);
|
||||
|
||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b =>
|
||||
{
|
||||
b.Property<string>("Id")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("ConcurrencyStamp")
|
||||
.IsConcurrencyToken()
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("varchar(256)");
|
||||
|
||||
b.Property<string>("NormalizedName")
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("varchar(256)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("NormalizedName")
|
||||
.IsUnique()
|
||||
.HasDatabaseName("RoleNameIndex");
|
||||
|
||||
b.ToTable("AspNetRoles", (string)null);
|
||||
|
||||
b.HasData(
|
||||
new
|
||||
{
|
||||
Id = "315208c3-0fb0-421d-b373-8f4730106dd5",
|
||||
ConcurrencyStamp = "9bd570a3-2012-42a8-bb38-0030e0d45de2",
|
||||
Name = "Undef",
|
||||
NormalizedName = "UNDEF"
|
||||
},
|
||||
new
|
||||
{
|
||||
Id = "757673aa-ea00-4b6a-8c98-f75b3dcd65b7",
|
||||
ConcurrencyStamp = "55cbb043-dbd6-4018-a834-050c2a15c30f",
|
||||
Name = "ExtUser",
|
||||
NormalizedName = "EXTUSER"
|
||||
},
|
||||
new
|
||||
{
|
||||
Id = "b5083225-0c73-40cb-a7be-db0747b20dca",
|
||||
ConcurrencyStamp = "496441df-9b5b-4df2-bdc2-54a073a4a912",
|
||||
Name = "ExtTransp",
|
||||
NormalizedName = "EXTTRANSP"
|
||||
},
|
||||
new
|
||||
{
|
||||
Id = "b5136e2c-f9e9-43ae-8cfd-d4b2883b963a",
|
||||
ConcurrencyStamp = "2009b165-9681-4891-934e-020a35e6fc80",
|
||||
Name = "User",
|
||||
NormalizedName = "USER"
|
||||
},
|
||||
new
|
||||
{
|
||||
Id = "0bbf8f56-fcc8-4afd-9865-805881ca4067",
|
||||
ConcurrencyStamp = "759f05b6-3995-4763-b76a-aef212eb17f1",
|
||||
Name = "Admin",
|
||||
NormalizedName = "ADMIN"
|
||||
},
|
||||
new
|
||||
{
|
||||
Id = "55fd587f-bfea-40b2-8e44-3ad95a9a9ee1",
|
||||
ConcurrencyStamp = "8b2b2fbf-ba91-420a-b490-13e02916d8a1",
|
||||
Name = "SuperAdmin",
|
||||
NormalizedName = "SUPERADMIN"
|
||||
});
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("ClaimType")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("ClaimValue")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("RoleId")
|
||||
.IsRequired()
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("RoleId");
|
||||
|
||||
b.ToTable("AspNetRoleClaims", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b =>
|
||||
{
|
||||
b.Property<string>("Id")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<int>("AccessFailedCount")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("ConcurrencyStamp")
|
||||
.IsConcurrencyToken()
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("Email")
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("varchar(256)");
|
||||
|
||||
b.Property<bool>("EmailConfirmed")
|
||||
.HasColumnType("tinyint(1)");
|
||||
|
||||
b.Property<bool>("LockoutEnabled")
|
||||
.HasColumnType("tinyint(1)");
|
||||
|
||||
b.Property<DateTimeOffset?>("LockoutEnd")
|
||||
.HasColumnType("datetime(6)");
|
||||
|
||||
b.Property<string>("NormalizedEmail")
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("varchar(256)");
|
||||
|
||||
b.Property<string>("NormalizedUserName")
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("varchar(256)");
|
||||
|
||||
b.Property<string>("PasswordHash")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("PhoneNumber")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<bool>("PhoneNumberConfirmed")
|
||||
.HasColumnType("tinyint(1)");
|
||||
|
||||
b.Property<string>("SecurityStamp")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<bool>("TwoFactorEnabled")
|
||||
.HasColumnType("tinyint(1)");
|
||||
|
||||
b.Property<string>("UserName")
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("varchar(256)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("NormalizedEmail")
|
||||
.HasDatabaseName("EmailIndex");
|
||||
|
||||
b.HasIndex("NormalizedUserName")
|
||||
.IsUnique()
|
||||
.HasDatabaseName("UserNameIndex");
|
||||
|
||||
b.ToTable("AspNetUsers", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("ClaimType")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("ClaimValue")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("UserId")
|
||||
.IsRequired()
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("UserId");
|
||||
|
||||
b.ToTable("AspNetUserClaims", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
|
||||
{
|
||||
b.Property<string>("LoginProvider")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("ProviderKey")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("ProviderDisplayName")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("UserId")
|
||||
.IsRequired()
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.HasKey("LoginProvider", "ProviderKey");
|
||||
|
||||
b.HasIndex("UserId");
|
||||
|
||||
b.ToTable("AspNetUserLogins", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
|
||||
{
|
||||
b.Property<string>("UserId")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("RoleId")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.HasKey("UserId", "RoleId");
|
||||
|
||||
b.HasIndex("RoleId");
|
||||
|
||||
b.ToTable("AspNetUserRoles", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
|
||||
{
|
||||
b.Property<string>("UserId")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("LoginProvider")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("Value")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.HasKey("UserId", "LoginProvider", "Name");
|
||||
|
||||
b.ToTable("AspNetUserTokens", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
|
||||
{
|
||||
b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("RoleId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
|
||||
{
|
||||
b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("UserId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
|
||||
{
|
||||
b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("UserId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
|
||||
{
|
||||
b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("RoleId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("UserId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
|
||||
{
|
||||
b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("UserId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,122 @@
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace GWMS.User.Migrations
|
||||
{
|
||||
public partial class RemoveTableCount : Migration
|
||||
{
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropTable(
|
||||
name: "DbSetCounts");
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "Name",
|
||||
table: "AspNetUserTokens",
|
||||
type: "varchar(255)",
|
||||
nullable: false,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(128)",
|
||||
oldMaxLength: 128)
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "LoginProvider",
|
||||
table: "AspNetUserTokens",
|
||||
type: "varchar(255)",
|
||||
nullable: false,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(128)",
|
||||
oldMaxLength: 128)
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "ProviderKey",
|
||||
table: "AspNetUserLogins",
|
||||
type: "varchar(255)",
|
||||
nullable: false,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(128)",
|
||||
oldMaxLength: 128)
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "LoginProvider",
|
||||
table: "AspNetUserLogins",
|
||||
type: "varchar(255)",
|
||||
nullable: false,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(128)",
|
||||
oldMaxLength: 128)
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
}
|
||||
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "Name",
|
||||
table: "AspNetUserTokens",
|
||||
type: "varchar(128)",
|
||||
maxLength: 128,
|
||||
nullable: false,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(255)")
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "LoginProvider",
|
||||
table: "AspNetUserTokens",
|
||||
type: "varchar(128)",
|
||||
maxLength: 128,
|
||||
nullable: false,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(255)")
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "ProviderKey",
|
||||
table: "AspNetUserLogins",
|
||||
type: "varchar(128)",
|
||||
maxLength: 128,
|
||||
nullable: false,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(255)")
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "LoginProvider",
|
||||
table: "AspNetUserLogins",
|
||||
type: "varchar(128)",
|
||||
maxLength: 128,
|
||||
nullable: false,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(255)")
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "DbSetCounts",
|
||||
columns: table => new
|
||||
{
|
||||
Count = table.Column<int>(type: "int", nullable: false),
|
||||
TableName = table.Column<string>(type: "longtext", nullable: true)
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
})
|
||||
.Annotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
// <auto-generated />
|
||||
using System;
|
||||
using GWMS.Data;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace GWMS.User.Migrations
|
||||
{
|
||||
[DbContext(typeof(UserIdentityDbContext))]
|
||||
[Migration("20240418104749_ReAddTableCounter4Identity")]
|
||||
partial class ReAddTableCounter4Identity
|
||||
{
|
||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||
{
|
||||
#pragma warning disable 612, 618
|
||||
modelBuilder
|
||||
.HasAnnotation("ProductVersion", "6.0.2")
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 64);
|
||||
|
||||
modelBuilder.Entity("GWMS.Data.DatabaseModels.TableCount", b =>
|
||||
{
|
||||
b.Property<string>("TableName")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<int>("Count")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.HasKey("TableName");
|
||||
|
||||
b.ToTable("DbSetCounts");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace GWMS.User.Migrations
|
||||
{
|
||||
public partial class ReAddTableCounter4Identity : Migration
|
||||
{
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.CreateTable(
|
||||
name: "DbSetCounts",
|
||||
columns: table => new
|
||||
{
|
||||
TableName = table.Column<string>(type: "varchar(255)", nullable: false)
|
||||
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||
Count = table.Column<int>(type: "int", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_DbSetCounts", x => x.TableName);
|
||||
})
|
||||
.Annotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
}
|
||||
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropTable(
|
||||
name: "DbSetCounts");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,748 @@
|
||||
// <auto-generated />
|
||||
using System;
|
||||
using GWMS.Data;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace GWMS.Data.Migrations
|
||||
{
|
||||
[DbContext(typeof(GWMSContext))]
|
||||
[Migration("20240604150033_AddPlantLogDtEvIdx")]
|
||||
partial class AddPlantLogDtEvIdx
|
||||
{
|
||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||
{
|
||||
#pragma warning disable 612, 618
|
||||
modelBuilder
|
||||
.HasAnnotation("ProductVersion", "6.0.2")
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 64);
|
||||
|
||||
modelBuilder.Entity("GWMS.Data.DatabaseModels.AlarmLogModel", b =>
|
||||
{
|
||||
b.Property<int>("AlarmLogId")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<DateTime>("DtEvent")
|
||||
.HasColumnType("datetime(6)");
|
||||
|
||||
b.Property<int>("Index")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("MemAddress")
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("varchar(50)");
|
||||
|
||||
b.Property<int>("PlantId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<uint>("Status")
|
||||
.HasColumnType("int unsigned");
|
||||
|
||||
b.Property<string>("ValDecoded")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.HasKey("AlarmLogId");
|
||||
|
||||
b.HasIndex("PlantId");
|
||||
|
||||
b.ToTable("AlarmLog");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("GWMS.Data.DatabaseModels.AnKeyValModel", b =>
|
||||
{
|
||||
b.Property<string>("KeyName")
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("varchar(50)")
|
||||
.HasColumnOrder(0);
|
||||
|
||||
b.Property<string>("Descript")
|
||||
.HasMaxLength(250)
|
||||
.HasColumnType("varchar(250)")
|
||||
.HasColumnOrder(4)
|
||||
.HasComment("Descrizione dell'item");
|
||||
|
||||
b.Property<int>("ValFloat")
|
||||
.HasColumnType("int")
|
||||
.HasColumnOrder(2);
|
||||
|
||||
b.Property<int>("ValInt")
|
||||
.HasColumnType("int")
|
||||
.HasColumnOrder(1);
|
||||
|
||||
b.Property<string>("ValString")
|
||||
.HasMaxLength(250)
|
||||
.HasColumnType("varchar(250)")
|
||||
.HasColumnOrder(3);
|
||||
|
||||
b.HasKey("KeyName");
|
||||
|
||||
b.ToTable("AnKeyVal");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("GWMS.Data.DatabaseModels.ConfigModel", b =>
|
||||
{
|
||||
b.Property<string>("KeyName")
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("varchar(50)")
|
||||
.HasColumnOrder(0);
|
||||
|
||||
b.Property<string>("Note")
|
||||
.HasMaxLength(250)
|
||||
.HasColumnType("varchar(250)")
|
||||
.HasColumnOrder(3);
|
||||
|
||||
b.Property<string>("Val")
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("varchar(50)")
|
||||
.HasColumnOrder(1);
|
||||
|
||||
b.Property<string>("ValStd")
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("varchar(50)")
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Valore di default/riferimento per la variabile");
|
||||
|
||||
b.HasKey("KeyName");
|
||||
|
||||
b.ToTable("Config");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("GWMS.Data.DatabaseModels.ItemModel", b =>
|
||||
{
|
||||
b.Property<int>("ItemId")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int")
|
||||
.HasColumnOrder(0);
|
||||
|
||||
b.Property<string>("ItemCode")
|
||||
.HasMaxLength(100)
|
||||
.HasColumnType("varchar(100)")
|
||||
.HasColumnOrder(1);
|
||||
|
||||
b.Property<string>("ItemDesc")
|
||||
.HasMaxLength(250)
|
||||
.HasColumnType("varchar(250)")
|
||||
.HasColumnOrder(2);
|
||||
|
||||
b.Property<string>("ItemType")
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("varchar(50)")
|
||||
.HasColumnOrder(3);
|
||||
|
||||
b.Property<string>("UM")
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("varchar(50)")
|
||||
.HasColumnOrder(4);
|
||||
|
||||
b.HasKey("ItemId");
|
||||
|
||||
b.ToTable("Items");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("GWMS.Data.DatabaseModels.ListValModel", b =>
|
||||
{
|
||||
b.Property<string>("TabName")
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("varchar(50)")
|
||||
.HasColumnName("TabName")
|
||||
.HasColumnOrder(0);
|
||||
|
||||
b.Property<string>("FieldName")
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("varchar(50)")
|
||||
.HasColumnName("FieldName")
|
||||
.HasColumnOrder(1);
|
||||
|
||||
b.Property<string>("Val")
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("varchar(50)")
|
||||
.HasColumnName("Val")
|
||||
.HasColumnOrder(2);
|
||||
|
||||
b.Property<string>("Descript")
|
||||
.HasMaxLength(250)
|
||||
.HasColumnType("varchar(250)")
|
||||
.HasColumnName("Descript")
|
||||
.HasColumnOrder(3);
|
||||
|
||||
b.Property<int>("Ordinal")
|
||||
.HasColumnType("int")
|
||||
.HasColumnName("Ordinal")
|
||||
.HasColumnOrder(4);
|
||||
|
||||
b.HasKey("TabName", "FieldName", "Val");
|
||||
|
||||
b.ToTable("ListVal");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("GWMS.Data.DatabaseModels.OrderModel", b =>
|
||||
{
|
||||
b.Property<int>("OrderId")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<DateTime>("DtETA")
|
||||
.HasColumnType("datetime(6)");
|
||||
|
||||
b.Property<DateTime>("DtExecEnd")
|
||||
.HasColumnType("datetime(6)");
|
||||
|
||||
b.Property<DateTime>("DtExecStart")
|
||||
.HasColumnType("datetime(6)");
|
||||
|
||||
b.Property<DateTime>("DtOrder")
|
||||
.HasColumnType("datetime(6)");
|
||||
|
||||
b.Property<double>("ExecutionQty")
|
||||
.HasColumnType("double");
|
||||
|
||||
b.Property<double>("LevelEnd")
|
||||
.HasColumnType("double");
|
||||
|
||||
b.Property<double>("LevelStart")
|
||||
.HasColumnType("double");
|
||||
|
||||
b.Property<string>("OrderCode")
|
||||
.HasMaxLength(100)
|
||||
.HasColumnType("varchar(100)");
|
||||
|
||||
b.Property<string>("OrderDesc")
|
||||
.HasMaxLength(250)
|
||||
.HasColumnType("varchar(250)");
|
||||
|
||||
b.Property<double>("OrderQty")
|
||||
.HasColumnType("double");
|
||||
|
||||
b.Property<int>("PlantId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("SupplierId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("TransporterId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.HasKey("OrderId");
|
||||
|
||||
b.HasIndex("PlantId");
|
||||
|
||||
b.HasIndex("SupplierId");
|
||||
|
||||
b.HasIndex("TransporterId");
|
||||
|
||||
b.ToTable("Order");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("GWMS.Data.DatabaseModels.ParamSendModel", b =>
|
||||
{
|
||||
b.Property<int>("PlantId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("ParamUid")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<DateTime>("LastSend")
|
||||
.HasColumnType("datetime(6)");
|
||||
|
||||
b.Property<DateTime>("VetoSend")
|
||||
.HasColumnType("datetime(6)");
|
||||
|
||||
b.Property<bool>("enabled")
|
||||
.HasColumnType("tinyint(1)");
|
||||
|
||||
b.Property<int>("windEnd")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("windStart")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.HasKey("PlantId", "ParamUid");
|
||||
|
||||
b.ToTable("ParamSend");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("GWMS.Data.DatabaseModels.ParamSetModel", b =>
|
||||
{
|
||||
b.Property<int>("ParamSetId")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("Note")
|
||||
.HasMaxLength(250)
|
||||
.HasColumnType("varchar(250)");
|
||||
|
||||
b.Property<string>("ParamUid")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<int>("PlantId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<DateTime>("Scadenza")
|
||||
.HasColumnType("datetime(6)");
|
||||
|
||||
b.Property<decimal>("TargetVal")
|
||||
.HasColumnType("decimal(65,30)");
|
||||
|
||||
b.HasKey("ParamSetId");
|
||||
|
||||
b.ToTable("ParamSet");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantDetailModel", b =>
|
||||
{
|
||||
b.Property<int>("PlantId")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<double>("LevelMax")
|
||||
.HasColumnType("double");
|
||||
|
||||
b.Property<double>("LevelReorder")
|
||||
.HasColumnType("double");
|
||||
|
||||
b.Property<double>("OrderQtyStd")
|
||||
.HasColumnType("double");
|
||||
|
||||
b.Property<string>("PlantCode")
|
||||
.HasMaxLength(100)
|
||||
.HasColumnType("varchar(100)");
|
||||
|
||||
b.Property<string>("PlantDesc")
|
||||
.HasMaxLength(250)
|
||||
.HasColumnType("varchar(250)");
|
||||
|
||||
b.HasKey("PlantId");
|
||||
|
||||
b.ToTable("PlantDetail");
|
||||
|
||||
b.HasData(
|
||||
new
|
||||
{
|
||||
PlantId = 1,
|
||||
LevelMax = 26000.0,
|
||||
LevelReorder = 15000.0,
|
||||
OrderQtyStd = 18000.0,
|
||||
PlantCode = "PIZ03",
|
||||
PlantDesc = "Collecchio"
|
||||
},
|
||||
new
|
||||
{
|
||||
PlantId = 2,
|
||||
LevelMax = 28000.0,
|
||||
LevelReorder = 15000.0,
|
||||
OrderQtyStd = 18000.0,
|
||||
PlantCode = "PIZ04",
|
||||
PlantDesc = "Noceto"
|
||||
},
|
||||
new
|
||||
{
|
||||
PlantId = 3,
|
||||
LevelMax = 24000.0,
|
||||
LevelReorder = 15000.0,
|
||||
OrderQtyStd = 18000.0,
|
||||
PlantCode = "PIZ05",
|
||||
PlantDesc = "Baganzola"
|
||||
},
|
||||
new
|
||||
{
|
||||
PlantId = 4,
|
||||
LevelMax = 26000.0,
|
||||
LevelReorder = 15000.0,
|
||||
OrderQtyStd = 18000.0,
|
||||
PlantCode = "PIZ08",
|
||||
PlantDesc = "Pilastrello"
|
||||
},
|
||||
new
|
||||
{
|
||||
PlantId = 5,
|
||||
LevelMax = 26000.0,
|
||||
LevelReorder = 15000.0,
|
||||
OrderQtyStd = 18000.0,
|
||||
PlantCode = "PIZ09",
|
||||
PlantDesc = "Guardamiglio"
|
||||
});
|
||||
});
|
||||
|
||||
modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantLogModel", b =>
|
||||
{
|
||||
b.Property<int>("PlantDataId")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<DateTime>("DtEvent")
|
||||
.HasColumnType("datetime(6)");
|
||||
|
||||
b.Property<string>("FluxType")
|
||||
.HasMaxLength(250)
|
||||
.HasColumnType("varchar(250)");
|
||||
|
||||
b.Property<int>("PlantId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<double>("ValNumber")
|
||||
.HasColumnType("double");
|
||||
|
||||
b.Property<string>("ValString")
|
||||
.HasMaxLength(250)
|
||||
.HasColumnType("varchar(250)");
|
||||
|
||||
b.HasKey("PlantDataId");
|
||||
|
||||
b.HasIndex(new[] { "PlantId", "DtEvent" }, "IX_PlantLog_PlantDtEv");
|
||||
|
||||
b.HasIndex(new[] { "PlantId" }, "IX_PlantLog_PlantId");
|
||||
|
||||
b.ToTable("PlantLog");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantStatusModel", b =>
|
||||
{
|
||||
b.Property<int>("PlantId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("FluxType")
|
||||
.HasMaxLength(250)
|
||||
.HasColumnType("varchar(250)");
|
||||
|
||||
b.Property<DateTime>("DtEvent")
|
||||
.HasColumnType("datetime(6)");
|
||||
|
||||
b.Property<double>("ValNumber")
|
||||
.HasColumnType("double");
|
||||
|
||||
b.Property<string>("ValString")
|
||||
.HasMaxLength(250)
|
||||
.HasColumnType("varchar(250)");
|
||||
|
||||
b.HasKey("PlantId", "FluxType");
|
||||
|
||||
b.ToTable("PlantStatus");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("GWMS.Data.DatabaseModels.RebootLogModel", b =>
|
||||
{
|
||||
b.Property<int>("RecordId")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<DateTime>("DtEvent")
|
||||
.HasColumnType("datetime(6)");
|
||||
|
||||
b.Property<string>("Item")
|
||||
.HasMaxLength(250)
|
||||
.HasColumnType("varchar(250)");
|
||||
|
||||
b.Property<string>("Payload")
|
||||
.HasMaxLength(250)
|
||||
.HasColumnType("varchar(250)");
|
||||
|
||||
b.HasKey("RecordId");
|
||||
|
||||
b.ToTable("RebootLog");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("GWMS.Data.DatabaseModels.SupplierModel", b =>
|
||||
{
|
||||
b.Property<int>("SupplierId")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("SupplierCode")
|
||||
.HasMaxLength(100)
|
||||
.HasColumnType("varchar(100)");
|
||||
|
||||
b.Property<string>("SupplierDesc")
|
||||
.HasMaxLength(250)
|
||||
.HasColumnType("varchar(250)");
|
||||
|
||||
b.HasKey("SupplierId");
|
||||
|
||||
b.ToTable("Supplier");
|
||||
|
||||
b.HasData(
|
||||
new
|
||||
{
|
||||
SupplierId = 1,
|
||||
SupplierCode = "LIQUIGAS",
|
||||
SupplierDesc = "Liquigas"
|
||||
},
|
||||
new
|
||||
{
|
||||
SupplierId = 2,
|
||||
SupplierCode = "VULKANGAS",
|
||||
SupplierDesc = "Vulkangas"
|
||||
});
|
||||
});
|
||||
|
||||
modelBuilder.Entity("GWMS.Data.DatabaseModels.TransporterModel", b =>
|
||||
{
|
||||
b.Property<int>("TransporterId")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<double>("PositionLatitude")
|
||||
.HasColumnType("double");
|
||||
|
||||
b.Property<double>("PositionLongitude")
|
||||
.HasColumnType("double");
|
||||
|
||||
b.Property<DateTime>("PositionUpdated")
|
||||
.HasColumnType("datetime(6)");
|
||||
|
||||
b.Property<string>("TransporterCode")
|
||||
.HasMaxLength(100)
|
||||
.HasColumnType("varchar(100)");
|
||||
|
||||
b.Property<string>("TransporterDesc")
|
||||
.HasMaxLength(250)
|
||||
.HasColumnType("varchar(250)");
|
||||
|
||||
b.HasKey("TransporterId");
|
||||
|
||||
b.ToTable("Transporter");
|
||||
|
||||
b.HasData(
|
||||
new
|
||||
{
|
||||
TransporterId = 1,
|
||||
PositionLatitude = 0.0,
|
||||
PositionLongitude = 0.0,
|
||||
PositionUpdated = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
|
||||
TransporterCode = "LEVO",
|
||||
TransporterDesc = "Levorato"
|
||||
},
|
||||
new
|
||||
{
|
||||
TransporterId = 2,
|
||||
PositionLatitude = 0.0,
|
||||
PositionLongitude = 0.0,
|
||||
PositionUpdated = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
|
||||
TransporterCode = "TRAF",
|
||||
TransporterDesc = "Traffik"
|
||||
});
|
||||
});
|
||||
|
||||
modelBuilder.Entity("GWMS.Data.DatabaseModels.WeekPlanModel", b =>
|
||||
{
|
||||
b.Property<int>("WeekPlanId")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int")
|
||||
.HasColumnOrder(0);
|
||||
|
||||
b.Property<int>("DayNum")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("DeliveryHour")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("Note")
|
||||
.HasMaxLength(250)
|
||||
.HasColumnType("varchar(250)");
|
||||
|
||||
b.Property<int>("PlantId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("SupplierId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("TransporterId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.HasKey("WeekPlanId");
|
||||
|
||||
b.HasIndex("PlantId");
|
||||
|
||||
b.HasIndex("SupplierId");
|
||||
|
||||
b.HasIndex("TransporterId");
|
||||
|
||||
b.ToTable("WeekPlan");
|
||||
|
||||
b.HasData(
|
||||
new
|
||||
{
|
||||
WeekPlanId = 1,
|
||||
DayNum = 1,
|
||||
DeliveryHour = 20,
|
||||
Note = "18K",
|
||||
PlantId = 2,
|
||||
SupplierId = 1,
|
||||
TransporterId = 1
|
||||
},
|
||||
new
|
||||
{
|
||||
WeekPlanId = 2,
|
||||
DayNum = 2,
|
||||
DeliveryHour = 20,
|
||||
Note = "18K",
|
||||
PlantId = 2,
|
||||
SupplierId = 1,
|
||||
TransporterId = 1
|
||||
},
|
||||
new
|
||||
{
|
||||
WeekPlanId = 3,
|
||||
DayNum = 3,
|
||||
DeliveryHour = 20,
|
||||
Note = "18K",
|
||||
PlantId = 2,
|
||||
SupplierId = 1,
|
||||
TransporterId = 2
|
||||
},
|
||||
new
|
||||
{
|
||||
WeekPlanId = 4,
|
||||
DayNum = 4,
|
||||
DeliveryHour = 15,
|
||||
Note = "9K",
|
||||
PlantId = 2,
|
||||
SupplierId = 1,
|
||||
TransporterId = 1
|
||||
},
|
||||
new
|
||||
{
|
||||
WeekPlanId = 5,
|
||||
DayNum = 4,
|
||||
DeliveryHour = 20,
|
||||
Note = "18K",
|
||||
PlantId = 2,
|
||||
SupplierId = 1,
|
||||
TransporterId = 1
|
||||
},
|
||||
new
|
||||
{
|
||||
WeekPlanId = 6,
|
||||
DayNum = 6,
|
||||
DeliveryHour = 20,
|
||||
Note = "18K",
|
||||
PlantId = 2,
|
||||
SupplierId = 1,
|
||||
TransporterId = 1
|
||||
},
|
||||
new
|
||||
{
|
||||
WeekPlanId = 7,
|
||||
DayNum = 2,
|
||||
DeliveryHour = 14,
|
||||
Note = "3K",
|
||||
PlantId = 3,
|
||||
SupplierId = 1,
|
||||
TransporterId = 1
|
||||
},
|
||||
new
|
||||
{
|
||||
WeekPlanId = 8,
|
||||
DayNum = 2,
|
||||
DeliveryHour = 15,
|
||||
Note = "15K",
|
||||
PlantId = 4,
|
||||
SupplierId = 1,
|
||||
TransporterId = 1
|
||||
},
|
||||
new
|
||||
{
|
||||
WeekPlanId = 9,
|
||||
DayNum = 2,
|
||||
DeliveryHour = 17,
|
||||
Note = "18K",
|
||||
PlantId = 1,
|
||||
SupplierId = 2,
|
||||
TransporterId = 2
|
||||
});
|
||||
});
|
||||
|
||||
modelBuilder.Entity("GWMS.Data.DatabaseModels.AlarmLogModel", b =>
|
||||
{
|
||||
b.HasOne("GWMS.Data.DatabaseModels.PlantDetailModel", "Plant")
|
||||
.WithMany()
|
||||
.HasForeignKey("PlantId")
|
||||
.OnDelete(DeleteBehavior.Restrict)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("Plant");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("GWMS.Data.DatabaseModels.OrderModel", b =>
|
||||
{
|
||||
b.HasOne("GWMS.Data.DatabaseModels.PlantDetailModel", "Plant")
|
||||
.WithMany()
|
||||
.HasForeignKey("PlantId")
|
||||
.OnDelete(DeleteBehavior.Restrict)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("GWMS.Data.DatabaseModels.SupplierModel", "Supplier")
|
||||
.WithMany()
|
||||
.HasForeignKey("SupplierId")
|
||||
.OnDelete(DeleteBehavior.Restrict)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("GWMS.Data.DatabaseModels.TransporterModel", "Transporter")
|
||||
.WithMany()
|
||||
.HasForeignKey("TransporterId")
|
||||
.OnDelete(DeleteBehavior.Restrict)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("Plant");
|
||||
|
||||
b.Navigation("Supplier");
|
||||
|
||||
b.Navigation("Transporter");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantLogModel", b =>
|
||||
{
|
||||
b.HasOne("GWMS.Data.DatabaseModels.PlantDetailModel", "Plant")
|
||||
.WithMany()
|
||||
.HasForeignKey("PlantId")
|
||||
.OnDelete(DeleteBehavior.Restrict)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("Plant");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantStatusModel", b =>
|
||||
{
|
||||
b.HasOne("GWMS.Data.DatabaseModels.PlantDetailModel", "Plant")
|
||||
.WithMany()
|
||||
.HasForeignKey("PlantId")
|
||||
.OnDelete(DeleteBehavior.Restrict)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("Plant");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("GWMS.Data.DatabaseModels.WeekPlanModel", b =>
|
||||
{
|
||||
b.HasOne("GWMS.Data.DatabaseModels.PlantDetailModel", "Plant")
|
||||
.WithMany()
|
||||
.HasForeignKey("PlantId")
|
||||
.OnDelete(DeleteBehavior.Restrict)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("GWMS.Data.DatabaseModels.SupplierModel", "Supplier")
|
||||
.WithMany()
|
||||
.HasForeignKey("SupplierId")
|
||||
.OnDelete(DeleteBehavior.Restrict)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("GWMS.Data.DatabaseModels.TransporterModel", "Transporter")
|
||||
.WithMany()
|
||||
.HasForeignKey("TransporterId")
|
||||
.OnDelete(DeleteBehavior.Restrict)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("Plant");
|
||||
|
||||
b.Navigation("Supplier");
|
||||
|
||||
b.Navigation("Transporter");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,541 @@
|
||||
using Microsoft.EntityFrameworkCore.Metadata;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace GWMS.Data.Migrations
|
||||
{
|
||||
public partial class AddPlantLogDtEvIdx : Migration
|
||||
{
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.AlterColumn<int>(
|
||||
name: "WeekPlanId",
|
||||
table: "WeekPlan",
|
||||
type: "int",
|
||||
nullable: false,
|
||||
oldClrType: typeof(int),
|
||||
oldType: "int")
|
||||
.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn)
|
||||
.Annotation("Relational:ColumnOrder", 0)
|
||||
.OldAnnotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn);
|
||||
|
||||
migrationBuilder.AlterColumn<int>(
|
||||
name: "Ordinal",
|
||||
table: "ListVal",
|
||||
type: "int",
|
||||
nullable: false,
|
||||
oldClrType: typeof(int),
|
||||
oldType: "int")
|
||||
.Annotation("Relational:ColumnOrder", 4);
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "Descript",
|
||||
table: "ListVal",
|
||||
type: "varchar(250)",
|
||||
maxLength: 250,
|
||||
nullable: true,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(250)",
|
||||
oldMaxLength: 250,
|
||||
oldNullable: true)
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.Annotation("Relational:ColumnOrder", 3)
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "Val",
|
||||
table: "ListVal",
|
||||
type: "varchar(50)",
|
||||
maxLength: 50,
|
||||
nullable: false,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(50)",
|
||||
oldMaxLength: 50)
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.Annotation("Relational:ColumnOrder", 2)
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "FieldName",
|
||||
table: "ListVal",
|
||||
type: "varchar(50)",
|
||||
maxLength: 50,
|
||||
nullable: false,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(50)",
|
||||
oldMaxLength: 50)
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.Annotation("Relational:ColumnOrder", 1)
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "TabName",
|
||||
table: "ListVal",
|
||||
type: "varchar(50)",
|
||||
maxLength: 50,
|
||||
nullable: false,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(50)",
|
||||
oldMaxLength: 50)
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.Annotation("Relational:ColumnOrder", 0)
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "UM",
|
||||
table: "Items",
|
||||
type: "varchar(50)",
|
||||
maxLength: 50,
|
||||
nullable: true,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(50)",
|
||||
oldMaxLength: 50,
|
||||
oldNullable: true)
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.Annotation("Relational:ColumnOrder", 4)
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "ItemType",
|
||||
table: "Items",
|
||||
type: "varchar(50)",
|
||||
maxLength: 50,
|
||||
nullable: true,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(50)",
|
||||
oldMaxLength: 50,
|
||||
oldNullable: true)
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.Annotation("Relational:ColumnOrder", 3)
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "ItemDesc",
|
||||
table: "Items",
|
||||
type: "varchar(250)",
|
||||
maxLength: 250,
|
||||
nullable: true,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(250)",
|
||||
oldMaxLength: 250,
|
||||
oldNullable: true)
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.Annotation("Relational:ColumnOrder", 2)
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "ItemCode",
|
||||
table: "Items",
|
||||
type: "varchar(100)",
|
||||
maxLength: 100,
|
||||
nullable: true,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(100)",
|
||||
oldMaxLength: 100,
|
||||
oldNullable: true)
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.Annotation("Relational:ColumnOrder", 1)
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
migrationBuilder.AlterColumn<int>(
|
||||
name: "ItemId",
|
||||
table: "Items",
|
||||
type: "int",
|
||||
nullable: false,
|
||||
oldClrType: typeof(int),
|
||||
oldType: "int")
|
||||
.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn)
|
||||
.Annotation("Relational:ColumnOrder", 0)
|
||||
.OldAnnotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn);
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "ValStd",
|
||||
table: "Config",
|
||||
type: "varchar(50)",
|
||||
maxLength: 50,
|
||||
nullable: true,
|
||||
comment: "Valore di default/riferimento per la variabile",
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(50)",
|
||||
oldMaxLength: 50,
|
||||
oldNullable: true,
|
||||
oldComment: "Valore di default/riferimento per la variabile")
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.Annotation("Relational:ColumnOrder", 2)
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "Val",
|
||||
table: "Config",
|
||||
type: "varchar(50)",
|
||||
maxLength: 50,
|
||||
nullable: true,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(50)",
|
||||
oldMaxLength: 50,
|
||||
oldNullable: true)
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.Annotation("Relational:ColumnOrder", 1)
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "Note",
|
||||
table: "Config",
|
||||
type: "varchar(250)",
|
||||
maxLength: 250,
|
||||
nullable: true,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(250)",
|
||||
oldMaxLength: 250,
|
||||
oldNullable: true)
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.Annotation("Relational:ColumnOrder", 3)
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "KeyName",
|
||||
table: "Config",
|
||||
type: "varchar(50)",
|
||||
maxLength: 50,
|
||||
nullable: false,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(50)",
|
||||
oldMaxLength: 50)
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.Annotation("Relational:ColumnOrder", 0)
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "ValString",
|
||||
table: "AnKeyVal",
|
||||
type: "varchar(250)",
|
||||
maxLength: 250,
|
||||
nullable: true,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(250)",
|
||||
oldMaxLength: 250,
|
||||
oldNullable: true)
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.Annotation("Relational:ColumnOrder", 3)
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
migrationBuilder.AlterColumn<int>(
|
||||
name: "ValInt",
|
||||
table: "AnKeyVal",
|
||||
type: "int",
|
||||
nullable: false,
|
||||
oldClrType: typeof(int),
|
||||
oldType: "int")
|
||||
.Annotation("Relational:ColumnOrder", 1);
|
||||
|
||||
migrationBuilder.AlterColumn<int>(
|
||||
name: "ValFloat",
|
||||
table: "AnKeyVal",
|
||||
type: "int",
|
||||
nullable: false,
|
||||
oldClrType: typeof(int),
|
||||
oldType: "int")
|
||||
.Annotation("Relational:ColumnOrder", 2);
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "Descript",
|
||||
table: "AnKeyVal",
|
||||
type: "varchar(250)",
|
||||
maxLength: 250,
|
||||
nullable: true,
|
||||
comment: "Descrizione dell'item",
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(250)",
|
||||
oldMaxLength: 250,
|
||||
oldNullable: true,
|
||||
oldComment: "Descrizione dell'item")
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.Annotation("Relational:ColumnOrder", 4)
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "KeyName",
|
||||
table: "AnKeyVal",
|
||||
type: "varchar(50)",
|
||||
maxLength: 50,
|
||||
nullable: false,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(50)",
|
||||
oldMaxLength: 50)
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.Annotation("Relational:ColumnOrder", 0)
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_PlantLog_PlantDtEv",
|
||||
table: "PlantLog",
|
||||
columns: new[] { "PlantId", "DtEvent" });
|
||||
}
|
||||
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropIndex(
|
||||
name: "IX_PlantLog_PlantDtEv",
|
||||
table: "PlantLog");
|
||||
|
||||
migrationBuilder.AlterColumn<int>(
|
||||
name: "WeekPlanId",
|
||||
table: "WeekPlan",
|
||||
type: "int",
|
||||
nullable: false,
|
||||
oldClrType: typeof(int),
|
||||
oldType: "int")
|
||||
.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn)
|
||||
.OldAnnotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn)
|
||||
.OldAnnotation("Relational:ColumnOrder", 0);
|
||||
|
||||
migrationBuilder.AlterColumn<int>(
|
||||
name: "Ordinal",
|
||||
table: "ListVal",
|
||||
type: "int",
|
||||
nullable: false,
|
||||
oldClrType: typeof(int),
|
||||
oldType: "int")
|
||||
.OldAnnotation("Relational:ColumnOrder", 4);
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "Descript",
|
||||
table: "ListVal",
|
||||
type: "varchar(250)",
|
||||
maxLength: 250,
|
||||
nullable: true,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(250)",
|
||||
oldMaxLength: 250,
|
||||
oldNullable: true)
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("Relational:ColumnOrder", 3);
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "Val",
|
||||
table: "ListVal",
|
||||
type: "varchar(50)",
|
||||
maxLength: 50,
|
||||
nullable: false,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(50)",
|
||||
oldMaxLength: 50)
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("Relational:ColumnOrder", 2);
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "FieldName",
|
||||
table: "ListVal",
|
||||
type: "varchar(50)",
|
||||
maxLength: 50,
|
||||
nullable: false,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(50)",
|
||||
oldMaxLength: 50)
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("Relational:ColumnOrder", 1);
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "TabName",
|
||||
table: "ListVal",
|
||||
type: "varchar(50)",
|
||||
maxLength: 50,
|
||||
nullable: false,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(50)",
|
||||
oldMaxLength: 50)
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("Relational:ColumnOrder", 0);
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "UM",
|
||||
table: "Items",
|
||||
type: "varchar(50)",
|
||||
maxLength: 50,
|
||||
nullable: true,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(50)",
|
||||
oldMaxLength: 50,
|
||||
oldNullable: true)
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("Relational:ColumnOrder", 4);
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "ItemType",
|
||||
table: "Items",
|
||||
type: "varchar(50)",
|
||||
maxLength: 50,
|
||||
nullable: true,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(50)",
|
||||
oldMaxLength: 50,
|
||||
oldNullable: true)
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("Relational:ColumnOrder", 3);
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "ItemDesc",
|
||||
table: "Items",
|
||||
type: "varchar(250)",
|
||||
maxLength: 250,
|
||||
nullable: true,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(250)",
|
||||
oldMaxLength: 250,
|
||||
oldNullable: true)
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("Relational:ColumnOrder", 2);
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "ItemCode",
|
||||
table: "Items",
|
||||
type: "varchar(100)",
|
||||
maxLength: 100,
|
||||
nullable: true,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(100)",
|
||||
oldMaxLength: 100,
|
||||
oldNullable: true)
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("Relational:ColumnOrder", 1);
|
||||
|
||||
migrationBuilder.AlterColumn<int>(
|
||||
name: "ItemId",
|
||||
table: "Items",
|
||||
type: "int",
|
||||
nullable: false,
|
||||
oldClrType: typeof(int),
|
||||
oldType: "int")
|
||||
.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn)
|
||||
.OldAnnotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn)
|
||||
.OldAnnotation("Relational:ColumnOrder", 0);
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "ValStd",
|
||||
table: "Config",
|
||||
type: "varchar(50)",
|
||||
maxLength: 50,
|
||||
nullable: true,
|
||||
comment: "Valore di default/riferimento per la variabile",
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(50)",
|
||||
oldMaxLength: 50,
|
||||
oldNullable: true,
|
||||
oldComment: "Valore di default/riferimento per la variabile")
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("Relational:ColumnOrder", 2);
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "Val",
|
||||
table: "Config",
|
||||
type: "varchar(50)",
|
||||
maxLength: 50,
|
||||
nullable: true,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(50)",
|
||||
oldMaxLength: 50,
|
||||
oldNullable: true)
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("Relational:ColumnOrder", 1);
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "Note",
|
||||
table: "Config",
|
||||
type: "varchar(250)",
|
||||
maxLength: 250,
|
||||
nullable: true,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(250)",
|
||||
oldMaxLength: 250,
|
||||
oldNullable: true)
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("Relational:ColumnOrder", 3);
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "KeyName",
|
||||
table: "Config",
|
||||
type: "varchar(50)",
|
||||
maxLength: 50,
|
||||
nullable: false,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(50)",
|
||||
oldMaxLength: 50)
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("Relational:ColumnOrder", 0);
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "ValString",
|
||||
table: "AnKeyVal",
|
||||
type: "varchar(250)",
|
||||
maxLength: 250,
|
||||
nullable: true,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(250)",
|
||||
oldMaxLength: 250,
|
||||
oldNullable: true)
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("Relational:ColumnOrder", 3);
|
||||
|
||||
migrationBuilder.AlterColumn<int>(
|
||||
name: "ValInt",
|
||||
table: "AnKeyVal",
|
||||
type: "int",
|
||||
nullable: false,
|
||||
oldClrType: typeof(int),
|
||||
oldType: "int")
|
||||
.OldAnnotation("Relational:ColumnOrder", 1);
|
||||
|
||||
migrationBuilder.AlterColumn<int>(
|
||||
name: "ValFloat",
|
||||
table: "AnKeyVal",
|
||||
type: "int",
|
||||
nullable: false,
|
||||
oldClrType: typeof(int),
|
||||
oldType: "int")
|
||||
.OldAnnotation("Relational:ColumnOrder", 2);
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "Descript",
|
||||
table: "AnKeyVal",
|
||||
type: "varchar(250)",
|
||||
maxLength: 250,
|
||||
nullable: true,
|
||||
comment: "Descrizione dell'item",
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(250)",
|
||||
oldMaxLength: 250,
|
||||
oldNullable: true,
|
||||
oldComment: "Descrizione dell'item")
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("Relational:ColumnOrder", 4);
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "KeyName",
|
||||
table: "AnKeyVal",
|
||||
type: "varchar(50)",
|
||||
maxLength: 50,
|
||||
nullable: false,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "varchar(50)",
|
||||
oldMaxLength: 50)
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("MySql:CharSet", "utf8mb4")
|
||||
.OldAnnotation("Relational:ColumnOrder", 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,8 @@ using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace GWMS.Data.Migrations
|
||||
{
|
||||
[DbContext(typeof(GWMSContext))]
|
||||
@@ -14,8 +16,8 @@ namespace GWMS.Data.Migrations
|
||||
{
|
||||
#pragma warning disable 612, 618
|
||||
modelBuilder
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 64)
|
||||
.HasAnnotation("ProductVersion", "5.0.10");
|
||||
.HasAnnotation("ProductVersion", "6.0.2")
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 64);
|
||||
|
||||
modelBuilder.Entity("GWMS.Data.DatabaseModels.AlarmLogModel", b =>
|
||||
{
|
||||
@@ -53,22 +55,27 @@ namespace GWMS.Data.Migrations
|
||||
{
|
||||
b.Property<string>("KeyName")
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("varchar(50)");
|
||||
.HasColumnType("varchar(50)")
|
||||
.HasColumnOrder(0);
|
||||
|
||||
b.Property<string>("Descript")
|
||||
.HasMaxLength(250)
|
||||
.HasColumnType("varchar(250)")
|
||||
.HasColumnOrder(4)
|
||||
.HasComment("Descrizione dell'item");
|
||||
|
||||
b.Property<int>("ValFloat")
|
||||
.HasColumnType("int");
|
||||
.HasColumnType("int")
|
||||
.HasColumnOrder(2);
|
||||
|
||||
b.Property<int>("ValInt")
|
||||
.HasColumnType("int");
|
||||
.HasColumnType("int")
|
||||
.HasColumnOrder(1);
|
||||
|
||||
b.Property<string>("ValString")
|
||||
.HasMaxLength(250)
|
||||
.HasColumnType("varchar(250)");
|
||||
.HasColumnType("varchar(250)")
|
||||
.HasColumnOrder(3);
|
||||
|
||||
b.HasKey("KeyName");
|
||||
|
||||
@@ -79,19 +86,23 @@ namespace GWMS.Data.Migrations
|
||||
{
|
||||
b.Property<string>("KeyName")
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("varchar(50)");
|
||||
.HasColumnType("varchar(50)")
|
||||
.HasColumnOrder(0);
|
||||
|
||||
b.Property<string>("Note")
|
||||
.HasMaxLength(250)
|
||||
.HasColumnType("varchar(250)");
|
||||
.HasColumnType("varchar(250)")
|
||||
.HasColumnOrder(3);
|
||||
|
||||
b.Property<string>("Val")
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("varchar(50)");
|
||||
.HasColumnType("varchar(50)")
|
||||
.HasColumnOrder(1);
|
||||
|
||||
b.Property<string>("ValStd")
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("varchar(50)")
|
||||
.HasColumnOrder(2)
|
||||
.HasComment("Valore di default/riferimento per la variabile");
|
||||
|
||||
b.HasKey("KeyName");
|
||||
@@ -103,23 +114,28 @@ namespace GWMS.Data.Migrations
|
||||
{
|
||||
b.Property<int>("ItemId")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
.HasColumnType("int")
|
||||
.HasColumnOrder(0);
|
||||
|
||||
b.Property<string>("ItemCode")
|
||||
.HasMaxLength(100)
|
||||
.HasColumnType("varchar(100)");
|
||||
.HasColumnType("varchar(100)")
|
||||
.HasColumnOrder(1);
|
||||
|
||||
b.Property<string>("ItemDesc")
|
||||
.HasMaxLength(250)
|
||||
.HasColumnType("varchar(250)");
|
||||
.HasColumnType("varchar(250)")
|
||||
.HasColumnOrder(2);
|
||||
|
||||
b.Property<string>("ItemType")
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("varchar(50)");
|
||||
.HasColumnType("varchar(50)")
|
||||
.HasColumnOrder(3);
|
||||
|
||||
b.Property<string>("UM")
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("varchar(50)");
|
||||
.HasColumnType("varchar(50)")
|
||||
.HasColumnOrder(4);
|
||||
|
||||
b.HasKey("ItemId");
|
||||
|
||||
@@ -131,26 +147,31 @@ namespace GWMS.Data.Migrations
|
||||
b.Property<string>("TabName")
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("varchar(50)")
|
||||
.HasColumnName("TabName");
|
||||
.HasColumnName("TabName")
|
||||
.HasColumnOrder(0);
|
||||
|
||||
b.Property<string>("FieldName")
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("varchar(50)")
|
||||
.HasColumnName("FieldName");
|
||||
.HasColumnName("FieldName")
|
||||
.HasColumnOrder(1);
|
||||
|
||||
b.Property<string>("Val")
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("varchar(50)")
|
||||
.HasColumnName("Val");
|
||||
.HasColumnName("Val")
|
||||
.HasColumnOrder(2);
|
||||
|
||||
b.Property<string>("Descript")
|
||||
.HasMaxLength(250)
|
||||
.HasColumnType("varchar(250)")
|
||||
.HasColumnName("Descript");
|
||||
.HasColumnName("Descript")
|
||||
.HasColumnOrder(3);
|
||||
|
||||
b.Property<int>("Ordinal")
|
||||
.HasColumnType("int")
|
||||
.HasColumnName("Ordinal");
|
||||
.HasColumnName("Ordinal")
|
||||
.HasColumnOrder(4);
|
||||
|
||||
b.HasKey("TabName", "FieldName", "Val");
|
||||
|
||||
@@ -333,6 +354,15 @@ namespace GWMS.Data.Migrations
|
||||
OrderQtyStd = 18000.0,
|
||||
PlantCode = "PIZ08",
|
||||
PlantDesc = "Pilastrello"
|
||||
},
|
||||
new
|
||||
{
|
||||
PlantId = 5,
|
||||
LevelMax = 26000.0,
|
||||
LevelReorder = 15000.0,
|
||||
OrderQtyStd = 18000.0,
|
||||
PlantCode = "PIZ09",
|
||||
PlantDesc = "Guardamiglio"
|
||||
});
|
||||
});
|
||||
|
||||
@@ -361,7 +391,9 @@ namespace GWMS.Data.Migrations
|
||||
|
||||
b.HasKey("PlantDataId");
|
||||
|
||||
b.HasIndex("PlantId");
|
||||
b.HasIndex(new[] { "PlantId", "DtEvent" }, "IX_PlantLog_PlantDtEv");
|
||||
|
||||
b.HasIndex(new[] { "PlantId" }, "IX_PlantLog_PlantId");
|
||||
|
||||
b.ToTable("PlantLog");
|
||||
});
|
||||
@@ -497,7 +529,8 @@ namespace GWMS.Data.Migrations
|
||||
{
|
||||
b.Property<int>("WeekPlanId")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
.HasColumnType("int")
|
||||
.HasColumnOrder(0);
|
||||
|
||||
b.Property<int>("DayNum")
|
||||
.HasColumnType("int");
|
||||
|
||||
@@ -5,6 +5,8 @@ using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace GWMS.User.Migrations
|
||||
{
|
||||
[DbContext(typeof(UserIdentityDbContext))]
|
||||
@@ -14,16 +16,18 @@ namespace GWMS.User.Migrations
|
||||
{
|
||||
#pragma warning disable 612, 618
|
||||
modelBuilder
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 64)
|
||||
.HasAnnotation("ProductVersion", "5.0.7");
|
||||
.HasAnnotation("ProductVersion", "6.0.2")
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 64);
|
||||
|
||||
modelBuilder.Entity("GWMS.Data.DatabaseModels.TableCount", b =>
|
||||
{
|
||||
b.Property<string>("TableName")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<int>("Count")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("TableName")
|
||||
.HasColumnType("longtext");
|
||||
b.HasKey("TableName");
|
||||
|
||||
b.ToTable("DbSetCounts");
|
||||
});
|
||||
@@ -51,48 +55,48 @@ namespace GWMS.User.Migrations
|
||||
.IsUnique()
|
||||
.HasDatabaseName("RoleNameIndex");
|
||||
|
||||
b.ToTable("AspNetRoles");
|
||||
b.ToTable("AspNetRoles", (string)null);
|
||||
|
||||
b.HasData(
|
||||
new
|
||||
{
|
||||
Id = "339a7ac3-4fcd-4baa-bd19-a6a09d1b7c5d",
|
||||
ConcurrencyStamp = "3caf0732-df97-4b81-ba2c-9fb51e34532a",
|
||||
Id = "315208c3-0fb0-421d-b373-8f4730106dd5",
|
||||
ConcurrencyStamp = "9bd570a3-2012-42a8-bb38-0030e0d45de2",
|
||||
Name = "Undef",
|
||||
NormalizedName = "UNDEF"
|
||||
},
|
||||
new
|
||||
{
|
||||
Id = "47c8d4fb-6925-4ef0-a830-5df33e705d7a",
|
||||
ConcurrencyStamp = "9671ece6-f70a-4ca6-88db-64562e007c72",
|
||||
Id = "757673aa-ea00-4b6a-8c98-f75b3dcd65b7",
|
||||
ConcurrencyStamp = "55cbb043-dbd6-4018-a834-050c2a15c30f",
|
||||
Name = "ExtUser",
|
||||
NormalizedName = "EXTUSER"
|
||||
},
|
||||
new
|
||||
{
|
||||
Id = "2d87821f-5c6d-4d9e-98d7-7ae801030100",
|
||||
ConcurrencyStamp = "9ee56f2f-558f-4579-9ad7-4a6150e3d822",
|
||||
Id = "b5083225-0c73-40cb-a7be-db0747b20dca",
|
||||
ConcurrencyStamp = "496441df-9b5b-4df2-bdc2-54a073a4a912",
|
||||
Name = "ExtTransp",
|
||||
NormalizedName = "EXTTRANSP"
|
||||
},
|
||||
new
|
||||
{
|
||||
Id = "db1d1ac5-905d-46a5-bcf4-ef8a5f3f715c",
|
||||
ConcurrencyStamp = "3244e9d3-ab0e-45ae-97b6-c8c74f57cf64",
|
||||
Id = "b5136e2c-f9e9-43ae-8cfd-d4b2883b963a",
|
||||
ConcurrencyStamp = "2009b165-9681-4891-934e-020a35e6fc80",
|
||||
Name = "User",
|
||||
NormalizedName = "USER"
|
||||
},
|
||||
new
|
||||
{
|
||||
Id = "7e3dc53b-c152-440f-a49d-6c3a2f6bf6eb",
|
||||
ConcurrencyStamp = "a0a109e5-ab8e-4e20-9aa8-eba3c429fd12",
|
||||
Id = "0bbf8f56-fcc8-4afd-9865-805881ca4067",
|
||||
ConcurrencyStamp = "759f05b6-3995-4763-b76a-aef212eb17f1",
|
||||
Name = "Admin",
|
||||
NormalizedName = "ADMIN"
|
||||
},
|
||||
new
|
||||
{
|
||||
Id = "2fcd8455-143a-4ebc-b41c-e9bdf6a0315b",
|
||||
ConcurrencyStamp = "549b8a8d-ba83-4b79-be88-fde0bd4cc60f",
|
||||
Id = "55fd587f-bfea-40b2-8e44-3ad95a9a9ee1",
|
||||
ConcurrencyStamp = "8b2b2fbf-ba91-420a-b490-13e02916d8a1",
|
||||
Name = "SuperAdmin",
|
||||
NormalizedName = "SUPERADMIN"
|
||||
});
|
||||
@@ -118,7 +122,7 @@ namespace GWMS.User.Migrations
|
||||
|
||||
b.HasIndex("RoleId");
|
||||
|
||||
b.ToTable("AspNetRoleClaims");
|
||||
b.ToTable("AspNetRoleClaims", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b =>
|
||||
@@ -182,7 +186,7 @@ namespace GWMS.User.Migrations
|
||||
.IsUnique()
|
||||
.HasDatabaseName("UserNameIndex");
|
||||
|
||||
b.ToTable("AspNetUsers");
|
||||
b.ToTable("AspNetUsers", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
|
||||
@@ -205,18 +209,16 @@ namespace GWMS.User.Migrations
|
||||
|
||||
b.HasIndex("UserId");
|
||||
|
||||
b.ToTable("AspNetUserClaims");
|
||||
b.ToTable("AspNetUserClaims", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
|
||||
{
|
||||
b.Property<string>("LoginProvider")
|
||||
.HasMaxLength(128)
|
||||
.HasColumnType("varchar(128)");
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("ProviderKey")
|
||||
.HasMaxLength(128)
|
||||
.HasColumnType("varchar(128)");
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("ProviderDisplayName")
|
||||
.HasColumnType("longtext");
|
||||
@@ -229,7 +231,7 @@ namespace GWMS.User.Migrations
|
||||
|
||||
b.HasIndex("UserId");
|
||||
|
||||
b.ToTable("AspNetUserLogins");
|
||||
b.ToTable("AspNetUserLogins", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
|
||||
@@ -244,7 +246,7 @@ namespace GWMS.User.Migrations
|
||||
|
||||
b.HasIndex("RoleId");
|
||||
|
||||
b.ToTable("AspNetUserRoles");
|
||||
b.ToTable("AspNetUserRoles", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
|
||||
@@ -253,19 +255,17 @@ namespace GWMS.User.Migrations
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("LoginProvider")
|
||||
.HasMaxLength(128)
|
||||
.HasColumnType("varchar(128)");
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.HasMaxLength(128)
|
||||
.HasColumnType("varchar(128)");
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("Value")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.HasKey("UserId", "LoginProvider", "Name");
|
||||
|
||||
b.ToTable("AspNetUserTokens");
|
||||
b.ToTable("AspNetUserTokens", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
|
||||
|
||||
@@ -6,10 +6,10 @@ DROP PROCEDURE IF EXISTS DeletePlantLogrecords;
|
||||
DELIMITER $$
|
||||
|
||||
CREATE PROCEDURE DeletePlantLogrecords(
|
||||
IN pStartDate DATETIME,
|
||||
IN pPlantId INT,
|
||||
IN pMinInt INT,
|
||||
IN pFluxType VARCHAR(250)
|
||||
IN pStartDate DATETIME,
|
||||
IN pPlantId INT,
|
||||
IN pMinInt INT,
|
||||
IN pFluxType VARCHAR(250)
|
||||
)
|
||||
BEGIN
|
||||
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
|
||||
USE GWMS_PZZFRR;
|
||||
DROP PROCEDURE IF EXISTS stp_deleteDuplicatedAlarms;
|
||||
|
||||
DELIMITER $$
|
||||
|
||||
CREATE PROCEDURE `stp_deleteDuplicatedAlarms`(
|
||||
IN `PlantIdReq` INT
|
||||
)
|
||||
BEGIN
|
||||
|
||||
-- Eliminazione allarmi duplicati + indicazione AllOk al secondo (ultimo) della serie per chiusura'
|
||||
|
||||
-- Step 1: Eliminazione record 'interni' duplicati (in una sequenza lascia solo primo ed ultimo)
|
||||
DELETE
|
||||
FROM AlarmLog
|
||||
WHERE AlarmLogId IN (
|
||||
SELECT AlarmLogId
|
||||
FROM (
|
||||
SELECT
|
||||
AlarmLogId,
|
||||
PlantId,
|
||||
`Status` AS CurState,
|
||||
LAG(`Status`) OVER (ORDER BY AlarmLogId) AS prev_State,
|
||||
LEAD(`Status`) OVER (ORDER BY AlarmLogId) AS next_State
|
||||
FROM AlarmLog
|
||||
WHERE PlantId = PlantIdReq
|
||||
) AS cte
|
||||
WHERE
|
||||
(CurState = prev_State) AND (CurState = next_State)
|
||||
);
|
||||
|
||||
-- Step 2: Cambio secondo record in "ALL OK"
|
||||
UPDATE AlarmLog
|
||||
SET `Status` = 0,
|
||||
ValDecoded = 'ALL OK'
|
||||
WHERE AlarmLogId IN (
|
||||
SELECT AlarmLogId
|
||||
FROM (
|
||||
SELECT
|
||||
AlarmLogId,
|
||||
PlantId,
|
||||
`Status` AS CurState,
|
||||
LAG(`Status`) OVER (ORDER BY AlarmLogId) AS prev_State,
|
||||
LEAD(`Status`) OVER (ORDER BY AlarmLogId) AS next_State
|
||||
FROM AlarmLog
|
||||
WHERE PlantId = PlantIdReq
|
||||
) AS cte
|
||||
WHERE
|
||||
(CurState = prev_State) AND (CurState != next_State)
|
||||
);
|
||||
|
||||
-- Step 3: Eliminazione eventuali record duplicati 'ALL OK'
|
||||
DELETE
|
||||
FROM AlarmLog
|
||||
WHERE AlarmLogId IN (
|
||||
SELECT AlarmLogId
|
||||
FROM (
|
||||
SELECT
|
||||
AlarmLogId,
|
||||
PlantId,
|
||||
`Status` AS CurState,
|
||||
LAG(`Status`) OVER (ORDER BY AlarmLogId) AS prev_State,
|
||||
LEAD(`Status`) OVER (ORDER BY AlarmLogId) AS next_State
|
||||
FROM AlarmLog
|
||||
WHERE PlantId = PlantIdReq
|
||||
) AS cte
|
||||
WHERE
|
||||
(CurState = prev_State) AND (CurState = 0)
|
||||
);
|
||||
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
||||
+36
-1
@@ -1,5 +1,7 @@
|
||||
using System;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.SqlTypes;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
@@ -8,10 +10,43 @@ namespace GWMS.Data
|
||||
{
|
||||
public class TSData
|
||||
{
|
||||
#region Public Constructors
|
||||
|
||||
///// <summary>
|
||||
///// Init generico per retrocompatibilità e deserializzazione
|
||||
///// </summary>
|
||||
public TSData() { }
|
||||
|
||||
/// <summary>
|
||||
/// Costruttore "Smart" per la creazione rapida e ottimizzata
|
||||
/// </summary>
|
||||
/// <param name="dt"></param>
|
||||
/// <param name="val"></param>
|
||||
/// <param name="doRound"></param>
|
||||
public TSData(DateTime dt, double val, bool doRound = true)
|
||||
{
|
||||
if (doRound)
|
||||
{
|
||||
// Arrotonda al secondo: crea una nuova data ignorando i Tick (millisecondi)
|
||||
DtEvent = new DateTime(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second);
|
||||
// Arrotonda a 2 decimali
|
||||
ValDouble = Math.Round(val, 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
DtEvent = dt;
|
||||
ValDouble = val;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Public Constructors
|
||||
|
||||
#region Public Properties
|
||||
|
||||
[JsonProperty("d")]
|
||||
public DateTime DtEvent { get; set; } = DateTime.Now;
|
||||
|
||||
[JsonProperty("v")]
|
||||
public double ValDouble { get; set; } = 0;
|
||||
|
||||
#endregion Public Properties
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using GWMS.Data.DatabaseModels;
|
||||
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using NLog;
|
||||
using System;
|
||||
|
||||
namespace GWMS.Data
|
||||
@@ -33,7 +34,9 @@ namespace GWMS.Data
|
||||
Database.Migrate();
|
||||
}
|
||||
catch (Exception exc)
|
||||
{ }
|
||||
{
|
||||
Log.Error($"Eccezione in UserIdentityDbContext{Environment.NewLine}{exc}");
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Public Constructors
|
||||
@@ -64,5 +67,11 @@ namespace GWMS.Data
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Private Fields
|
||||
|
||||
private static Logger Log = LogManager.GetCurrentClassLogger();
|
||||
|
||||
#endregion Private Fields
|
||||
}
|
||||
}
|
||||
@@ -10,7 +10,7 @@
|
||||
@{
|
||||
if (User.Identity.IsAuthenticated)
|
||||
{
|
||||
<form class="form-inline" asp-area="Identity" asp-page="/Account/Logout" asp-route-returnUrl="@Url.Page("/", new { area = "" })" method="post">
|
||||
<form class="form-inline" asp-area="Identity" asp-page="/Account/Logout" method="post">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<p>Premendo sul pulsante effettuerai il logout dal sistema.</p>
|
||||
|
||||
@@ -146,22 +146,21 @@ namespace GWMS.UI.Areas.Identity.Pages.Account
|
||||
string uid = getReqPar("uid", "");
|
||||
string uem = getReqPar("uem", "");
|
||||
string pag = getReqPar("pag", "Transporters");
|
||||
string jumpRedir = _configuration["jumpRedir"];
|
||||
string baseAppPath = $"{_configuration["RuntimeOpt:BaseAppPath"]}";
|
||||
|
||||
await Task.Delay(1);
|
||||
if (!string.IsNullOrEmpty(uid) && !string.IsNullOrEmpty(uem))
|
||||
{
|
||||
var user = await _userManager.FindByEmailAsync(uem);
|
||||
//var userById = await _userManager.FindByIdAsync(userId);
|
||||
if (user != null)
|
||||
{
|
||||
if (user.Id == uid)
|
||||
{
|
||||
// se corrispondono --> signini!
|
||||
await _signInManager.SignInAsync(user, false);
|
||||
_logger.LogInformation("Forced User log in via URL token");
|
||||
_logger.LogInformation($"Forced User log in via URL token for {uem}");
|
||||
// salto a pagina target da conf + req
|
||||
nextPage = string.IsNullOrEmpty(pag) ? jumpRedir : $"{jumpRedir}{pag}";
|
||||
nextPage = string.IsNullOrEmpty(pag) ? baseAppPath : $"{baseAppPath}{pag}";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Identity;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Mvc.RazorPages;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace GWMS.UI.Areas.Identity.Pages.Account
|
||||
@@ -17,15 +18,17 @@ namespace GWMS.UI.Areas.Identity.Pages.Account
|
||||
|
||||
private readonly ILogger<LogoutModel> _logger;
|
||||
private readonly SignInManager<IdentityUser> _signInManager;
|
||||
private IConfiguration _configuration;
|
||||
|
||||
#endregion Private Fields
|
||||
|
||||
#region Public Constructors
|
||||
|
||||
public LogoutModel(SignInManager<IdentityUser> signInManager, ILogger<LogoutModel> logger)
|
||||
public LogoutModel(SignInManager<IdentityUser> signInManager, ILogger<LogoutModel> logger, IConfiguration configuration)
|
||||
{
|
||||
_signInManager = signInManager;
|
||||
_logger = logger;
|
||||
_configuration = configuration;
|
||||
}
|
||||
|
||||
#endregion Public Constructors
|
||||
@@ -36,6 +39,8 @@ namespace GWMS.UI.Areas.Identity.Pages.Account
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
public async Task<IActionResult> OnPost(string returnUrl = null)
|
||||
{
|
||||
await _signInManager.SignOutAsync();
|
||||
@@ -46,7 +51,8 @@ namespace GWMS.UI.Areas.Identity.Pages.Account
|
||||
}
|
||||
else
|
||||
{
|
||||
return RedirectToPage();
|
||||
string appDir = $"{_configuration["RuntimeOpt:BaseUrl"]}{_configuration["RuntimeOpt:BaseAppPath"]}";
|
||||
return Redirect(appDir);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace GWMS.UI.Components
|
||||
{
|
||||
public abstract class BaseComp : ComponentBase, IDisposable
|
||||
{
|
||||
#region Public Methods
|
||||
|
||||
public virtual void Dispose()
|
||||
{
|
||||
// Opzionale: logga quando l'utente lascia la pagina/componente
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
|
||||
#region Protected Fields
|
||||
|
||||
/// <summary>
|
||||
/// Sorgente statica condivisa per tutto il layer UI
|
||||
/// </summary>
|
||||
protected static readonly ActivitySource UIActivitySource = new ActivitySource("GWMS.UI");
|
||||
|
||||
#endregion Protected Fields
|
||||
|
||||
#region Protected Properties
|
||||
|
||||
[Inject]
|
||||
protected NavigationManager Navigation { get; set; } = default!;
|
||||
|
||||
#endregion Protected Properties
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
/// <summary>
|
||||
/// Avvia un'attività tracciata con metadati standard del componente
|
||||
/// </summary>
|
||||
protected Activity? StartTracing(string operationName)
|
||||
{
|
||||
// Verifica se qualcuno sta ascoltando questa sorgente
|
||||
if (!UIActivitySource.HasListeners()) return null;
|
||||
|
||||
// init activity con nome gestito
|
||||
var activity = UIActivitySource.StartActivity($"{GetType().Name}:{operationName}");
|
||||
|
||||
// Aggiungiamo tag standard utili per il debug su Uptrace
|
||||
activity?.SetTag("ui.component_type", GetType().Name);
|
||||
activity?.SetTag("ui.url", Navigation.Uri);
|
||||
activity?.SetTag("data.source", "UI");
|
||||
|
||||
return activity;
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
<div class="form-row text-light">
|
||||
<div class="col-5 pr-0 text-left">
|
||||
GWMS <span class="small">v.@version</span>
|
||||
<string>GWMS</string> <span class="small">v.@version</span><small> | Srv: @nodeId</small>
|
||||
</div>
|
||||
<div class="col-7 pl-0 text-right">
|
||||
<span class="small">@adesso</span>
|
||||
@@ -8,9 +8,3 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@code {
|
||||
protected DateTime adesso = DateTime.Now;
|
||||
|
||||
Version version = typeof(Program).Assembly.GetName().Version;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace GWMS.UI.Components
|
||||
{
|
||||
public partial class CmpFooter : IDisposable
|
||||
{
|
||||
#region Public Methods
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
if (aTimer != null)
|
||||
{
|
||||
aTimer.Elapsed -= ElapsedTimer;
|
||||
aTimer.Stop();
|
||||
aTimer.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
public void ElapsedTimer(Object source, System.Timers.ElapsedEventArgs e)
|
||||
{
|
||||
var pUpd = Task.Run(async () =>
|
||||
{
|
||||
adesso = DateTime.Now;
|
||||
await InvokeAsync(StateHasChanged);
|
||||
});
|
||||
pUpd.Wait();
|
||||
}
|
||||
|
||||
public void StartTimer()
|
||||
{
|
||||
if (aTimer != null)
|
||||
{
|
||||
aTimer.Stop();
|
||||
aTimer.Dispose();
|
||||
}
|
||||
int tOutPeriod = 1000;
|
||||
aTimer = new System.Timers.Timer(tOutPeriod);
|
||||
aTimer.Elapsed += ElapsedTimer;
|
||||
aTimer.Enabled = true;
|
||||
aTimer.Start();
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
|
||||
#region Protected Fields
|
||||
|
||||
protected DateTime adesso = DateTime.Now;
|
||||
|
||||
private string nodeId = Environment.MachineName;
|
||||
|
||||
#endregion Protected Fields
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
var rawVers = typeof(Program).Assembly.GetName().Version;
|
||||
version = rawVers != null ? rawVers : new Version("0.0.0.0");
|
||||
nodeId = Environment.MachineName;
|
||||
#if DEBUG
|
||||
// nome completo...
|
||||
#else
|
||||
//Se non fosse develop --> prende gli ultimi 2 caratteri(es. "01")
|
||||
if (nodeId.Length > 2)
|
||||
{
|
||||
nodeId = nodeId.Substring(nodeId.Length - 2);
|
||||
}
|
||||
#endif
|
||||
StartTimer();
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Private Fields
|
||||
|
||||
private System.Timers.Timer aTimer = null!;
|
||||
private Version? version = null!;
|
||||
|
||||
#endregion Private Fields
|
||||
|
||||
#region Private Properties
|
||||
|
||||
[Inject]
|
||||
private IConfiguration Configuration { get; set; }
|
||||
|
||||
#endregion Private Properties
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
@using Microsoft.AspNetCore.Components.Authorization
|
||||
@using GWMS.UI.Data
|
||||
|
||||
@inject AuthenticationStateProvider AuthenticationStateProvider
|
||||
@inject MessageService MServ
|
||||
|
||||
<AuthorizeView>
|
||||
<Authorized>
|
||||
@@ -30,9 +32,13 @@
|
||||
</NotAuthorized>
|
||||
</AuthorizeView>
|
||||
|
||||
@code{
|
||||
@code {
|
||||
|
||||
private string userName = "";
|
||||
private string userName
|
||||
{
|
||||
get => MServ.UserName;
|
||||
set => MServ.UserName = value;
|
||||
}
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
await forceReload();
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
@using GWMS.UI.Data
|
||||
@using Microsoft.Extensions.Configuration
|
||||
|
||||
@inherits BaseComp
|
||||
|
||||
@inject MessageService AppMService
|
||||
@inject GWMSDataService DataService
|
||||
@inject NavigationManager NavManager
|
||||
@@ -181,135 +183,3 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@code {
|
||||
|
||||
private List<SupplierModel> suppList;
|
||||
private List<TransporterModel> transpList;
|
||||
|
||||
protected OrderModel _currItem = new OrderModel();
|
||||
protected int _supplierId { get; set; } = 0;
|
||||
|
||||
[Parameter]
|
||||
public OrderModel currItem
|
||||
{
|
||||
get
|
||||
{
|
||||
return _currItem = null;
|
||||
}
|
||||
set
|
||||
{
|
||||
_currItem = value;
|
||||
}
|
||||
}
|
||||
|
||||
private bool editAll { get; set; } = false;
|
||||
|
||||
[Parameter]
|
||||
public EventCallback<int> DataReset { get; set; }
|
||||
[Parameter]
|
||||
public EventCallback<int> DataUpdated { get; set; }
|
||||
[Parameter]
|
||||
public int SupplierId
|
||||
{
|
||||
get
|
||||
{
|
||||
return _supplierId;
|
||||
}
|
||||
set
|
||||
{
|
||||
_supplierId = value;
|
||||
// condiziono visualizzazione...
|
||||
var pUpd = Task.Run(async () => await ReloadAllData());
|
||||
pUpd.Wait();
|
||||
}
|
||||
}
|
||||
|
||||
private async Task saveUpdate()
|
||||
{
|
||||
if (_currItem != null)
|
||||
{
|
||||
await DataService.OrderUpdate(_currItem);
|
||||
await DataUpdated.InvokeAsync(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Order null!");
|
||||
}
|
||||
}
|
||||
|
||||
private async Task cancelUpdate()
|
||||
{
|
||||
await DataReset.InvokeAsync(0);
|
||||
}
|
||||
|
||||
private async Task deleteRecord()
|
||||
{
|
||||
if (!await JSRuntime.InvokeAsync<bool>("confirm", "Sicuro di voler eliminare l'ordine selezionato??"))
|
||||
return;
|
||||
|
||||
if (_currItem != null)
|
||||
{
|
||||
await DataService.OrderDelete(_currItem);
|
||||
await DataUpdated.InvokeAsync(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("User null!");
|
||||
}
|
||||
}
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
await ReloadAllData();
|
||||
await JSRuntime.InvokeVoidAsync("displayQr", "qrCodeImg", rawCode);
|
||||
}
|
||||
|
||||
protected string rawCode
|
||||
{
|
||||
get
|
||||
{
|
||||
string answ = "";
|
||||
if (_currItem != null)
|
||||
{
|
||||
answ = _currItem.OrderCode;
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
|
||||
protected async Task ReloadAllData()
|
||||
{
|
||||
suppList = await DataService.SuppliersGetAll();
|
||||
transpList = await DataService.TransportersGetAll();
|
||||
|
||||
// vedere anche https://www.mikesdotnetting.com/article/340/working-with-query-strings-in-blazor
|
||||
var uri = NavManager.ToAbsoluteUri(NavManager.Uri);
|
||||
var currMode = GetQueryParm("currMode");
|
||||
if (!string.IsNullOrEmpty(currMode))
|
||||
{
|
||||
editAll = currMode.Equals("debug");
|
||||
}
|
||||
}
|
||||
|
||||
// Blazor: get query parm from the URL
|
||||
protected string GetQueryParm(string parmName)
|
||||
{
|
||||
var uriBuilder = new UriBuilder(NavManager.Uri);
|
||||
var q = System.Web.HttpUtility.ParseQueryString(uriBuilder.Query);
|
||||
return q[parmName] ?? "";
|
||||
}
|
||||
|
||||
///// <summary>
|
||||
///// Restituisce URL immagine QRCode
|
||||
///// </summary>
|
||||
///// <param name="QrValue">Parametro da renderizzare con QRCode</param>
|
||||
///// <returns></returns>
|
||||
//protected string getImgUrl(object QrValue)
|
||||
//{
|
||||
// string baseUrl = $"{Configuration["ZCodeUrl"]}/HOME/QR_site/JSON?val=";
|
||||
// string payload = "{'baseUrl':'{0}','parameters':['" + $"{QrValue}" + "']}";
|
||||
// string answ = $"{baseUrl}{payload}";
|
||||
// return answ;
|
||||
//}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,171 @@
|
||||
using GWMS.Data.DatabaseModels;
|
||||
using GWMS.UI.Data;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Microsoft.JSInterop;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace GWMS.UI.Components
|
||||
{
|
||||
public partial class OrderAdminEditor
|
||||
{
|
||||
#region Public Properties
|
||||
|
||||
[Parameter]
|
||||
public OrderModel currItem
|
||||
{
|
||||
get
|
||||
{
|
||||
return _currItem = null;
|
||||
}
|
||||
set
|
||||
{
|
||||
_currItem = value;
|
||||
}
|
||||
}
|
||||
|
||||
[Parameter]
|
||||
public EventCallback<int> DataReset { get; set; }
|
||||
|
||||
[Parameter]
|
||||
public EventCallback<int> DataUpdated { get; set; }
|
||||
|
||||
[Parameter]
|
||||
public int SupplierId
|
||||
{
|
||||
get
|
||||
{
|
||||
return _supplierId;
|
||||
}
|
||||
set
|
||||
{
|
||||
_supplierId = value;
|
||||
// condiziono visualizzazione...
|
||||
var pUpd = Task.Run(async () => await ReloadAllData());
|
||||
pUpd.Wait();
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Public Properties
|
||||
|
||||
#region Protected Fields
|
||||
|
||||
protected OrderModel _currItem = new OrderModel();
|
||||
|
||||
#endregion Protected Fields
|
||||
|
||||
#region Protected Properties
|
||||
|
||||
protected int _supplierId { get; set; } = 0;
|
||||
|
||||
[Inject]
|
||||
protected MessageService MServ { get; set; } = null;
|
||||
|
||||
protected string rawCode
|
||||
{
|
||||
get
|
||||
{
|
||||
string answ = "";
|
||||
if (_currItem != null)
|
||||
{
|
||||
answ = _currItem.OrderCode;
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Protected Properties
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
// Blazor: get query parm from the URL
|
||||
protected string GetQueryParm(string parmName)
|
||||
{
|
||||
var uriBuilder = new UriBuilder(NavManager.Uri);
|
||||
var q = System.Web.HttpUtility.ParseQueryString(uriBuilder.Query);
|
||||
return q[parmName] ?? "";
|
||||
}
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
await ReloadAllData();
|
||||
await JSRuntime.InvokeVoidAsync("displayQr", "qrCodeImg", rawCode);
|
||||
}
|
||||
|
||||
protected async Task ReloadAllData()
|
||||
{
|
||||
suppList = await DataService.SuppliersGetAllAsync();
|
||||
transpList = await DataService.TransportersGetAllAsync();
|
||||
|
||||
// vedere anche https://www.mikesdotnetting.com/article/340/working-with-query-strings-in-blazor
|
||||
var uri = NavManager.ToAbsoluteUri(NavManager.Uri);
|
||||
var currMode = GetQueryParm("currMode");
|
||||
if (!string.IsNullOrEmpty(currMode))
|
||||
{
|
||||
editAll = currMode.Equals("debug");
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Private Fields
|
||||
|
||||
private List<SupplierModel> suppList;
|
||||
private List<TransporterModel> transpList;
|
||||
|
||||
#endregion Private Fields
|
||||
|
||||
#region Private Properties
|
||||
|
||||
private bool editAll { get; set; } = false;
|
||||
|
||||
#endregion Private Properties
|
||||
|
||||
#region Private Methods
|
||||
|
||||
private async Task cancelUpdate()
|
||||
{
|
||||
await DataReset.InvokeAsync(0);
|
||||
}
|
||||
|
||||
private async Task deleteRecord()
|
||||
{
|
||||
if (!await JSRuntime.InvokeAsync<bool>("confirm", "Sicuro di voler eliminare l'ordine selezionato??"))
|
||||
return;
|
||||
|
||||
if (_currItem != null)
|
||||
{
|
||||
using var activity = StartTracing("Delete");
|
||||
await DataService.OrderDeleteAsync(_currItem);
|
||||
activity?.SetTag("order.code", _currItem.OrderCode);
|
||||
activity?.SetTag("order.operator", MServ.UserName);
|
||||
activity?.SetTag("order.quantity_req", _currItem.OrderQty);
|
||||
await DataUpdated.InvokeAsync(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("User null!");
|
||||
}
|
||||
}
|
||||
|
||||
private async Task saveUpdate()
|
||||
{
|
||||
if (_currItem != null)
|
||||
{
|
||||
using var activity = StartTracing("SaveUpdate");
|
||||
await DataService.OrderUpdateAsync(_currItem);
|
||||
activity?.SetTag("order.code", _currItem.OrderCode);
|
||||
activity?.SetTag("order.operator", MServ.UserName);
|
||||
activity?.SetTag("order.quantity_req", _currItem.OrderQty);
|
||||
await DataUpdated.InvokeAsync(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Order null!");
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,6 @@
|
||||
@if (@_currItem != null)
|
||||
@inherits BaseComp
|
||||
|
||||
@if (@_currItem != null)
|
||||
{
|
||||
<ul class="list-group">
|
||||
<li class="list-group-item active">
|
||||
@@ -41,4 +43,5 @@
|
||||
}
|
||||
}
|
||||
</ul>
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,23 +1,69 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using GWMS.UI.Components;
|
||||
using GWMS.UI.Data;
|
||||
using GWMS.Data.DatabaseModels;
|
||||
using GWMS.Data.DTO;
|
||||
using GWMS.UI.Data;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace GWMS.UI.Components
|
||||
{
|
||||
public partial class OrderLoad : ComponentBase
|
||||
public partial class OrderLoad
|
||||
{
|
||||
#region Private Fields
|
||||
#region Public Properties
|
||||
|
||||
private PlantDTO currPlantData = null;
|
||||
private List<PlantDTO> plantsData = new List<PlantDTO>();
|
||||
public string _orderCode { get; set; } = "";
|
||||
public int _plantId { get; set; } = 0;
|
||||
|
||||
#endregion Private Fields
|
||||
[Parameter]
|
||||
public OrderModel currItem
|
||||
{
|
||||
get
|
||||
{
|
||||
return _currItem;
|
||||
}
|
||||
set
|
||||
{
|
||||
_currItem = value;
|
||||
}
|
||||
}
|
||||
|
||||
[Parameter]
|
||||
public EventCallback<bool> loadCompleted { get; set; }
|
||||
|
||||
[Parameter]
|
||||
public string OrderCode
|
||||
{
|
||||
get
|
||||
{
|
||||
return _orderCode;
|
||||
}
|
||||
set
|
||||
{
|
||||
_orderCode = value;
|
||||
var pUpd = Task.Run(async () => await ReloadData());
|
||||
pUpd.Wait();
|
||||
}
|
||||
}
|
||||
|
||||
[Parameter]
|
||||
public int PlantId
|
||||
{
|
||||
get
|
||||
{
|
||||
return _plantId;
|
||||
}
|
||||
set
|
||||
{
|
||||
_plantId = value;
|
||||
var pUpd = Task.Run(async () => await ReloadData());
|
||||
pUpd.Wait();
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Public Properties
|
||||
|
||||
#region Protected Fields
|
||||
|
||||
@@ -30,6 +76,9 @@ namespace GWMS.UI.Components
|
||||
[Inject]
|
||||
protected GWMSDataService DataService { get; set; }
|
||||
|
||||
[Inject]
|
||||
protected MessageService MServ { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// verifica correttezza plant/ordine
|
||||
/// </summary>
|
||||
@@ -93,84 +142,12 @@ namespace GWMS.UI.Components
|
||||
|
||||
#endregion Protected Properties
|
||||
|
||||
#region Public Properties
|
||||
|
||||
public string _orderCode { get; set; } = "";
|
||||
|
||||
public int _plantId { get; set; } = 0;
|
||||
|
||||
[Parameter]
|
||||
public OrderModel currItem
|
||||
{
|
||||
get
|
||||
{
|
||||
return _currItem;
|
||||
}
|
||||
set
|
||||
{
|
||||
_currItem = value;
|
||||
}
|
||||
}
|
||||
|
||||
[Parameter]
|
||||
public EventCallback<bool> loadCompleted { get; set; }
|
||||
|
||||
[Parameter]
|
||||
public string OrderCode
|
||||
{
|
||||
get
|
||||
{
|
||||
return _orderCode;
|
||||
}
|
||||
set
|
||||
{
|
||||
_orderCode = value;
|
||||
var pUpd = Task.Run(async () => await ReloadData());
|
||||
pUpd.Wait();
|
||||
}
|
||||
}
|
||||
|
||||
[Parameter]
|
||||
public int PlantId
|
||||
{
|
||||
get
|
||||
{
|
||||
return _plantId;
|
||||
}
|
||||
set
|
||||
{
|
||||
_plantId = value;
|
||||
var pUpd = Task.Run(async () => await ReloadData());
|
||||
pUpd.Wait();
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Public Properties
|
||||
|
||||
#region Private Methods
|
||||
|
||||
private async Task ReloadData()
|
||||
{
|
||||
plantsData = await DataService.PlantsGetAll();
|
||||
// recupero dato del plant corrente
|
||||
currPlantData = plantsData.Where(x => x.PlantId == PlantId).FirstOrDefault();
|
||||
// solo se ho valore QR selezionato
|
||||
if (!string.IsNullOrEmpty(OrderCode))
|
||||
{
|
||||
currItem = await DataService.OrderGetByCode(OrderCode);
|
||||
}
|
||||
else
|
||||
{
|
||||
currItem = null;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
protected async Task RefillEnd()
|
||||
{
|
||||
using var activity = StartTracing("RefillEnd");
|
||||
//using var activity = UIActivitySource.StartActivity("RefillEnd");
|
||||
if (currPlantData != null)
|
||||
{
|
||||
// aggiorno il record corrente con livello e dataora inizio carico...
|
||||
@@ -179,7 +156,15 @@ namespace GWMS.UI.Components
|
||||
}
|
||||
|
||||
// salvo...
|
||||
await DataService.OrderUpdate(_currItem);
|
||||
await DataService.OrderUpdateAsync(_currItem);
|
||||
|
||||
// telemetria!
|
||||
activity?.SetStatus(ActivityStatusCode.Ok);
|
||||
activity?.SetTag("order.code", _currItem.OrderCode);
|
||||
activity?.SetTag("order.operator", MServ.UserName);
|
||||
activity?.SetTag("order.level_start", _currItem.LevelStart);
|
||||
activity?.SetTag("order.level_end", _currItem.LevelEnd);
|
||||
activity?.SetTag("plant.level_act", currPlantData.LevelAct);
|
||||
|
||||
// segnalo completato
|
||||
await loadCompleted.InvokeAsync(true);
|
||||
@@ -187,6 +172,8 @@ namespace GWMS.UI.Components
|
||||
|
||||
protected async Task RefillStart()
|
||||
{
|
||||
//using var activity = ActivitySource.StartActivity("RefillEnd");
|
||||
using var activity = StartTracing("RefillStart");
|
||||
if (currPlantData != null)
|
||||
{
|
||||
// aggiorno il record corrente con livello e dataora inizio carico...
|
||||
@@ -195,9 +182,43 @@ namespace GWMS.UI.Components
|
||||
}
|
||||
|
||||
// salvo...
|
||||
await DataService.OrderUpdate(_currItem);
|
||||
await DataService.OrderUpdateAsync(_currItem);
|
||||
|
||||
// telemetria!
|
||||
activity?.SetStatus(ActivityStatusCode.Ok);
|
||||
activity?.SetTag("order.code", _currItem.OrderCode);
|
||||
activity?.SetTag("order.operator", MServ.UserName);
|
||||
activity?.SetTag("order.level_start", _currItem.LevelStart);
|
||||
activity?.SetTag("plant.level_act", currPlantData.LevelAct);
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Private Fields
|
||||
|
||||
private PlantDTO currPlantData = null;
|
||||
private List<PlantDTO> plantsData = new List<PlantDTO>();
|
||||
|
||||
#endregion Private Fields
|
||||
|
||||
#region Private Methods
|
||||
|
||||
private async Task ReloadData()
|
||||
{
|
||||
plantsData = await DataService.PlantDtoGetAllAsync();
|
||||
// recupero dato del plant corrente
|
||||
currPlantData = plantsData.Where(x => x.PlantId == PlantId).FirstOrDefault();
|
||||
// solo se ho valore QR selezionato
|
||||
if (!string.IsNullOrEmpty(OrderCode))
|
||||
{
|
||||
currItem = await DataService.OrderGetByCodeAsync(OrderCode);
|
||||
}
|
||||
else
|
||||
{
|
||||
currItem = null;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
}
|
||||
}
|
||||
@@ -123,7 +123,7 @@
|
||||
{
|
||||
if (_currItem != null)
|
||||
{
|
||||
await DataService.OrderUpdate(_currItem);
|
||||
await DataService.OrderUpdateAsync(_currItem);
|
||||
await DataUpdated.InvokeAsync(1);
|
||||
}
|
||||
else
|
||||
@@ -158,20 +158,7 @@
|
||||
|
||||
protected async Task ReloadAllData()
|
||||
{
|
||||
transpList = await DataService.TransportersGetAll();
|
||||
transpList = await DataService.TransportersGetAllAsync();
|
||||
}
|
||||
|
||||
///// <summary>
|
||||
///// Restituisce URL immagine QRCode
|
||||
///// </summary>
|
||||
///// <param name="QrValue">Parametro da renderizzare con QRCode</param>
|
||||
///// <returns></returns>
|
||||
//protected string getImgUrl(object QrValue)
|
||||
//{
|
||||
// string baseUrl = $"{Configuration["ZCodeUrl"]}/HOME/QR_site/JSON?val=";
|
||||
// string payload = "{'baseUrl':'{0}','parameters':['" + $"{QrValue}" + "']}";
|
||||
// string answ = $"{baseUrl}{payload}";
|
||||
// return answ;
|
||||
//}
|
||||
|
||||
}
|
||||
@@ -76,7 +76,7 @@
|
||||
{
|
||||
if (_currItem != null)
|
||||
{
|
||||
await DataService.OrderUpdate(_currItem);
|
||||
await DataService.OrderUpdateAsync(_currItem);
|
||||
await DataUpdated.InvokeAsync(1);
|
||||
}
|
||||
else
|
||||
@@ -111,20 +111,7 @@
|
||||
|
||||
protected async Task ReloadAllData()
|
||||
{
|
||||
transpList = await DataService.TransportersGetAll();
|
||||
transpList = await DataService.TransportersGetAllAsync();
|
||||
}
|
||||
|
||||
///// <summary>
|
||||
///// Restituisce URL immagine QRCode
|
||||
///// </summary>
|
||||
///// <param name="QrValue">Parametro da renderizzare con QRCode</param>
|
||||
///// <returns></returns>
|
||||
//protected string getImgUrl(object QrValue)
|
||||
//{
|
||||
// string baseUrl = $"{Configuration["ZCodeUrl"]}/HOME/QR_site/JSON?val=";
|
||||
// string payload = "{'baseUrl':'{0}','parameters':['" + $"{QrValue}" + "']}";
|
||||
// string answ = $"{baseUrl}{payload}";
|
||||
// return answ;
|
||||
//}
|
||||
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
using GWMS.Data.DatabaseModels;
|
||||
using GWMS.UI.Data;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.JSInterop;
|
||||
using NLog;
|
||||
using System;
|
||||
@@ -53,17 +54,59 @@ namespace GWMS.UI.Components
|
||||
|
||||
#endregion Public Properties
|
||||
|
||||
#region Protected Fields
|
||||
|
||||
protected objItem _currItem = new objItem();
|
||||
protected int _plantId = 0;
|
||||
protected string ParamUid = "";
|
||||
|
||||
#endregion Protected Fields
|
||||
|
||||
#region Protected Properties
|
||||
|
||||
protected decimal CalcVal
|
||||
[Inject]
|
||||
protected IConfiguration _configuration { get; set; } = null!;
|
||||
|
||||
#endregion Protected Properties
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
// fix arrotondamento
|
||||
roundFactor = _configuration.GetValue<int>("RuntimeOpt:RoundFact", 10);
|
||||
await ReloadData();
|
||||
}
|
||||
|
||||
protected async Task ReloadData()
|
||||
{
|
||||
ListRecords = null;
|
||||
try
|
||||
{
|
||||
ListRecords = await DataService.ParamSetGetFiltAsync(PlantId, ParamUid);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
Log.Error($"Eccezione in ReloadData:{Environment.NewLine}{exc}");
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Private Fields
|
||||
|
||||
private static NLog.Logger Log = LogManager.GetCurrentClassLogger();
|
||||
|
||||
private objItem _currItem = new objItem();
|
||||
|
||||
private int _plantId = 0;
|
||||
|
||||
private List<ParamSetModel> ListRecords;
|
||||
|
||||
private string ParamUid = "";
|
||||
|
||||
/// <summary>
|
||||
/// fattore arrotondamento valori calcolati
|
||||
/// </summary>
|
||||
private int roundFactor = 100;
|
||||
|
||||
#endregion Private Fields
|
||||
|
||||
#region Private Properties
|
||||
|
||||
private decimal CalcVal
|
||||
{
|
||||
get
|
||||
{
|
||||
@@ -88,9 +131,12 @@ namespace GWMS.UI.Components
|
||||
}
|
||||
|
||||
[Inject]
|
||||
protected GWMSDataService DataService { get; set; }
|
||||
private GWMSDataService DataService { get; set; }
|
||||
|
||||
protected int totalCount
|
||||
[Inject]
|
||||
private IJSRuntime JSRuntime { get; set; }
|
||||
|
||||
private int totalCount
|
||||
{
|
||||
get
|
||||
{
|
||||
@@ -103,40 +149,6 @@ namespace GWMS.UI.Components
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Protected Properties
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
protected async Task ChildUpdated()
|
||||
{
|
||||
//await DataReset.InvokeAsync(0);
|
||||
await Task.Delay(1);
|
||||
}
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
await ReloadData();
|
||||
}
|
||||
|
||||
protected void setCalc()
|
||||
{
|
||||
currItem.reqValDec = Math.Round(CalcVal * 1000) / 1000;
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Private Fields
|
||||
|
||||
private static NLog.Logger Log = LogManager.GetCurrentClassLogger();
|
||||
private List<ParamSetModel> ListRecords;
|
||||
|
||||
#endregion Private Fields
|
||||
|
||||
#region Private Properties
|
||||
|
||||
[Inject]
|
||||
private IJSRuntime JSRuntime { get; set; }
|
||||
|
||||
#endregion Private Properties
|
||||
|
||||
#region Private Methods
|
||||
@@ -146,17 +158,10 @@ namespace GWMS.UI.Components
|
||||
await DataReset.InvokeAsync(0);
|
||||
}
|
||||
|
||||
private async Task ReloadData()
|
||||
private async Task ChildUpdated()
|
||||
{
|
||||
ListRecords = null;
|
||||
try
|
||||
{
|
||||
ListRecords = await DataService.ParamSetGetFilt(PlantId, ParamUid);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
Log.Error($"Eccezione in ReloadData:{Environment.NewLine}{exc}");
|
||||
}
|
||||
//await EC_DataReset.InvokeAsync(0);
|
||||
await Task.Delay(1);
|
||||
}
|
||||
|
||||
private async Task saveUpdate()
|
||||
@@ -166,7 +171,7 @@ namespace GWMS.UI.Components
|
||||
|
||||
if (_currItem != null)
|
||||
{
|
||||
await DataService.updateMachineParameter(IdxMacchina, _currItem.uid, _currItem.reqValue);
|
||||
await DataService.UpdateMachineParameterAsync(IdxMacchina, _currItem.uid, _currItem.reqValue);
|
||||
await DataUpdated.InvokeAsync(0);
|
||||
}
|
||||
else
|
||||
@@ -175,6 +180,11 @@ namespace GWMS.UI.Components
|
||||
}
|
||||
}
|
||||
|
||||
private void setCalc()
|
||||
{
|
||||
currItem.reqValDec = Math.Round(CalcVal * roundFactor) / roundFactor;
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
}
|
||||
}
|
||||
@@ -51,13 +51,13 @@ namespace GWMS.UI.Components
|
||||
// salvo!
|
||||
var pUpd = Task.Run(async () =>
|
||||
{
|
||||
await DataService.ParamSendUpdate(currRecord);
|
||||
await DataService.ParamSendUpdateAsync(currRecord);
|
||||
|
||||
// se viene abilitato --> verifico comunque invio
|
||||
if (value)
|
||||
{
|
||||
// test set parametri + invio...
|
||||
await DataService.ParamsSendCheck();
|
||||
await DataService.ParamsSendCheckAsync();
|
||||
paramSent = true;
|
||||
}
|
||||
await ReloadData();
|
||||
@@ -112,7 +112,7 @@ namespace GWMS.UI.Components
|
||||
// salvo!
|
||||
var pUpd = Task.Run(async () =>
|
||||
{
|
||||
await DataService.ParamSendUpdate(currRecord);
|
||||
await DataService.ParamSendUpdateAsync(currRecord);
|
||||
await ReloadData();
|
||||
});
|
||||
pUpd.Wait();
|
||||
@@ -131,7 +131,7 @@ namespace GWMS.UI.Components
|
||||
// salvo!
|
||||
var pUpd = Task.Run(async () =>
|
||||
{
|
||||
await DataService.ParamSendUpdate(currRecord);
|
||||
await DataService.ParamSendUpdateAsync(currRecord);
|
||||
await ReloadData();
|
||||
});
|
||||
pUpd.Wait();
|
||||
@@ -147,7 +147,7 @@ namespace GWMS.UI.Components
|
||||
currRecord = null;
|
||||
try
|
||||
{
|
||||
currRecord = await DataService.ParamSendGet(PlantIdSel, ParamUidSel);
|
||||
currRecord = await DataService.ParamSendGetAsync(PlantIdSel, ParamUidSel);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
@if (currRecord != null)
|
||||
{
|
||||
<ParamSetEditor currItem="@currRecord" DataReset="ResetData" DataUpdated="UpdateData"></ParamSetEditor>
|
||||
<ParamSetEditor currItem="@currRecord" EC_DataReset="ResetData" EC_DataUpdated="UpdateData"></ParamSetEditor>
|
||||
}
|
||||
@if (ListRecords == null)
|
||||
{
|
||||
|
||||
@@ -5,9 +5,7 @@ using Microsoft.JSInterop;
|
||||
using NLog;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using static GWMS.Data.IobObjects;
|
||||
|
||||
namespace GWMS.UI.Components
|
||||
{
|
||||
@@ -107,7 +105,7 @@ namespace GWMS.UI.Components
|
||||
TargetVal = 0,
|
||||
Note = "Nuovo record"
|
||||
};
|
||||
await DataService.ParamSetUpdate(newRecord);
|
||||
await DataService.ParamSetUpdateAsync(newRecord);
|
||||
await ReloadData();
|
||||
}
|
||||
|
||||
@@ -117,7 +115,7 @@ namespace GWMS.UI.Components
|
||||
ListRecords = null;
|
||||
try
|
||||
{
|
||||
ListRecords = await DataService.ParamSetGetFilt(PlantIdSel, ParamUidSel);
|
||||
ListRecords = await DataService.ParamSetGetFiltAsync(PlantIdSel, ParamUidSel);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
@@ -147,7 +145,7 @@ namespace GWMS.UI.Components
|
||||
|
||||
if (selRecord != null)
|
||||
{
|
||||
await DataService.ParamSetDelete(selRecord);
|
||||
await DataService.ParamSetDeleteAsync(selRecord);
|
||||
}
|
||||
await ReloadData();
|
||||
}
|
||||
@@ -161,7 +159,7 @@ namespace GWMS.UI.Components
|
||||
protected async Task UpdateData()
|
||||
{
|
||||
currRecord = null;
|
||||
await DataService.ParamSetUpdate(currRecord);
|
||||
//await DataService.ParamSetUpdateAsync(currRecord);
|
||||
await ReloadData();
|
||||
}
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Valore</span>
|
||||
</div>
|
||||
<input Decimals="2" @bind="@_currItem.TargetVal" class="form-control text-right" title="Valore Richiesto" />
|
||||
<InputNumber @bind-value="@_currItem.TargetVal" class="form-control text-right" title="Valore Richiesto" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,40 +1,15 @@
|
||||
using AutoMapper.Configuration;
|
||||
using GWMS.Data.DatabaseModels;
|
||||
using GWMS.Data.DTO;
|
||||
using GWMS.Data.DatabaseModels;
|
||||
using GWMS.UI.Data;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Microsoft.AspNetCore.Identity;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.JSInterop;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using static GWMS.Data.IobObjects;
|
||||
|
||||
namespace GWMS.UI.Components
|
||||
{
|
||||
public partial class ParamSetEditor
|
||||
{
|
||||
#region Protected Fields
|
||||
|
||||
protected ParamSetModel _currItem = new ParamSetModel();
|
||||
|
||||
#endregion Protected Fields
|
||||
|
||||
#region Private Properties
|
||||
|
||||
[Inject]
|
||||
private IJSRuntime JSRuntime { get; set; }
|
||||
|
||||
#endregion Private Properties
|
||||
|
||||
#region Protected Properties
|
||||
|
||||
[Inject]
|
||||
protected GWMSDataService DataService { get; set; }
|
||||
|
||||
#endregion Protected Properties
|
||||
|
||||
#region Public Properties
|
||||
|
||||
[Parameter]
|
||||
@@ -51,40 +26,45 @@ namespace GWMS.UI.Components
|
||||
}
|
||||
|
||||
[Parameter]
|
||||
public EventCallback<int> DataReset { get; set; }
|
||||
public EventCallback<int> EC_DataReset { get; set; }
|
||||
|
||||
[Parameter]
|
||||
public EventCallback<int> DataUpdated { get; set; }
|
||||
public EventCallback<int> EC_DataUpdated { get; set; }
|
||||
|
||||
[Parameter]
|
||||
public string IdxMacchina { get; set; } = "";
|
||||
|
||||
#endregion Public Properties
|
||||
|
||||
#region Private Methods
|
||||
#region Protected Fields
|
||||
|
||||
private async Task cancelUpdate()
|
||||
protected ParamSetModel _currItem = new ParamSetModel();
|
||||
|
||||
#endregion Protected Fields
|
||||
|
||||
/// <summary>
|
||||
/// fattore arrotondamento valori calcolati
|
||||
/// </summary>
|
||||
private int roundFactor = 100;
|
||||
[Inject]
|
||||
protected IConfiguration _configuration { get; set; } = null!;
|
||||
protected override void OnParametersSet()
|
||||
{
|
||||
await DataReset.InvokeAsync(0);
|
||||
}
|
||||
|
||||
private async Task saveUpdate()
|
||||
{
|
||||
if (!await JSRuntime.InvokeAsync<bool>("confirm", "Sicuro di voler modificare la programmazione del parametro?"))
|
||||
return;
|
||||
|
||||
// fix arrotondamento
|
||||
roundFactor = _configuration.GetValue<int>("RuntimeOpt:RoundFact", 10);
|
||||
// aggiorno targetVal...
|
||||
if (_currItem != null)
|
||||
{
|
||||
await DataService.ParamSetUpdate(_currItem);
|
||||
await DataUpdated.InvokeAsync(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Record null!");
|
||||
_currItem.TargetVal = Math.Round(_currItem.TargetVal * roundFactor) / roundFactor;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
#region Protected Properties
|
||||
|
||||
[Inject]
|
||||
protected GWMSDataService DataService { get; set; }
|
||||
|
||||
#endregion Protected Properties
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
@@ -94,5 +74,37 @@ namespace GWMS.UI.Components
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Private Properties
|
||||
|
||||
[Inject]
|
||||
private IJSRuntime JSRuntime { get; set; }
|
||||
|
||||
#endregion Private Properties
|
||||
|
||||
#region Private Methods
|
||||
|
||||
private async Task cancelUpdate()
|
||||
{
|
||||
await EC_DataReset.InvokeAsync(0);
|
||||
}
|
||||
|
||||
private async Task saveUpdate()
|
||||
{
|
||||
if (!await JSRuntime.InvokeAsync<bool>("confirm", "Sicuro di voler modificare la programmazione del parametro?"))
|
||||
return;
|
||||
|
||||
if (_currItem != null)
|
||||
{
|
||||
await DataService.ParamSetUpdateAsync(_currItem);
|
||||
await EC_DataUpdated.InvokeAsync(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Record null!");
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
}
|
||||
}
|
||||
@@ -94,7 +94,7 @@ namespace GWMS.UI.Components
|
||||
{
|
||||
if (_currItem != null)
|
||||
{
|
||||
await DataService.PlantUpdate(_currItem);
|
||||
await DataService.PlantUpdateAsync(_currItem);
|
||||
await DataUpdated.InvokeAsync(0);
|
||||
}
|
||||
else
|
||||
|
||||
@@ -15,17 +15,6 @@
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@*<div class="row py-0">
|
||||
<div class="col-4 col-md-6 col-lg-8 font-weight-bold">
|
||||
<h2 class="mb-0">@currItem.PlantCode</h2>
|
||||
</div>
|
||||
<div class="col-8 col-md-6 col-lg-4 pl-0 text-right align-bottom">
|
||||
<button class="btn btn-primary btn-block" @onclick="() => ShowDetail(currItem.PlantId)">
|
||||
<b>@currItem.PlantDesc <i class="fas fa-angle-double-right"></i></b>
|
||||
</button>
|
||||
</div>
|
||||
</div>*@
|
||||
}
|
||||
</div>
|
||||
<div class="card-body p-0 p-md-1 p-lg-2">
|
||||
@@ -94,14 +83,20 @@
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<ul class="list-group">
|
||||
<li class="list-group-item @headerStatus d-flex justify-content-between align-items-center px-0 py-1 small">
|
||||
<div class="px-1" title="@checkRTime">
|
||||
SERBATOIO <i class="fas fa-play @playStatus"></i>
|
||||
</div>
|
||||
<div class="px-1 text-right">
|
||||
<span><i class="fas fa-database"></i> Livello:</span><span>@currItem.LevelAct.ToString("N0")/@currItem.LevelMax.ToString("N0")</span> | <span style="font-size:1.2em;"><b>@currItem.LevelRatio</b> <sub>%</sub></span>
|
||||
</div>
|
||||
</li>
|
||||
@{
|
||||
headerStatus = deviceOnline ? "list-group-item-info" : "text-secondary";
|
||||
playCss = dataIsRT ? "text-success" : "text-danger";
|
||||
checkRTime = dataIsRT ? $"Dati Realtime aggiornati al {_currItem.LastUpdate}" : $"Mancata ricezione: ultimo aggiornamento {_currItem.LastUpdate}";
|
||||
<li class="list-group-item @headerStatus d-flex justify-content-between align-items-center px-0 py-1 small">
|
||||
<div class="px-1" title="@checkRTime">
|
||||
SERBATOIO
|
||||
<i class="fas fa-play @playCss"></i>
|
||||
</div>
|
||||
<div class="px-1 text-right">
|
||||
<span><i class="fas fa-database"></i> Livello:</span><span>@currItem.LevelAct.ToString("N0")/@currItem.LevelMax.ToString("N0")</span> | <span style="font-size:1.2em;"><b>@currItem.LevelRatio</b> <sub>%</sub></span>
|
||||
</div>
|
||||
</li>
|
||||
}
|
||||
<li class="list-group-item align-items-center px-1 py-2">
|
||||
<div class="d-flex flex-column">
|
||||
<div class="px-1 py-0 flex-grow-1">
|
||||
@@ -121,32 +116,52 @@
|
||||
</li>
|
||||
<li class="list-group-item d-flex justify-content-between align-items-center p-1 p-md-2">
|
||||
<div class="col-6">
|
||||
@if (currItem.SoldTS != null && currItem.SoldTS.Count > 0 && currItem.SoldTS[0].ValDouble > 0)
|
||||
<div><i class="fas fa-file-invoice-dollar"></i> Venduto Ieri: </div>
|
||||
@if (PlantLevelDto != null && PlantLevelDto.Count > 1)
|
||||
{
|
||||
<div><i class="fas fa-file-invoice-dollar"></i> Venduto Ieri: </div>
|
||||
<div style="font-size:1.2em;"><b>@currItem.SoldTS[0].ValDouble.ToString("N1")</b> <span class="small"> <sub>kg</sub></span></div>
|
||||
@if (PlantLevelDto[1].QtaVenduta > 0)
|
||||
{
|
||||
<div style="font-size:1.2em;"><b>@($"{PlantLevelDto[1].QtaVenduta:N0}")</b> <span class="small"> <sub>kg</sub></span></div>
|
||||
@* <div style="font-size:1.2em;" class="text-secondary"><b>@($"{currItem.SoldTS[0].ValDouble:N0}")</b> <span class="small"> <sub>kg</sub></span></div> *@
|
||||
}
|
||||
else
|
||||
{
|
||||
<div style="font-size:1.2em;"><b>ND</b> <span class="small"></span></div>
|
||||
<div style="font-size:0.8em;"><span class="small text-danger">(<i>@($"{PlantLevelDto[1].QtaVenduta:N0}")<sub>kg</sub></i>)</span></div>
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
<div><i class="fas fa-file-invoice-dollar"></i> Venduto Ieri: </div>
|
||||
<div style="font-size:1.2em;"><b>ND</b> <span class="small"> <sub>kg</sub></span></div>
|
||||
<div style="font-size:1.2em;" class="text-secondary"><b>NA</b> <span class="small"></span></div>
|
||||
}
|
||||
</div>
|
||||
<div class="col-6 text-right">
|
||||
@if (currItem.SoldTS != null && currItem.SoldTS.Count > 1 && currItem.SoldTS[1].ValDouble > 0)
|
||||
<div><i class="fas fa-file-invoice-dollar"></i> Venduto Oggi: </div>
|
||||
@if (PlantLevelDto != null && PlantLevelDto.Count > 0)
|
||||
{
|
||||
<div><i class="fas fa-file-invoice-dollar"></i> Venduto Oggi: </div>
|
||||
<div style="font-size:1.2em;"><b>@currItem.SoldTS[1].ValDouble.ToString("N1")</b> <span class="small"> <sub>kg</sub></span></div>
|
||||
@if (PlantLevelDto[0].QtaVenduta > 0)
|
||||
{
|
||||
<div style="font-size:1.2em;"><b>@($"{PlantLevelDto[0].QtaVenduta:N0}")</b> <span class="small"> <sub>kg</sub></span></div>
|
||||
|
||||
@* <div style="font-size:1.2em;" class="text-secondary"><b>@($"{currItem.SoldTS[1].ValDouble:N0}")</b> <span class="small"> <sub>kg</sub></span></div> *@
|
||||
}
|
||||
else
|
||||
{
|
||||
<div style="font-size:1.2em;"><b>ND</b> <span class="small"></span></div>
|
||||
<div style="font-size:0.8em;"><span class="small text-danger">(<i>@($"{PlantLevelDto[0].QtaVenduta:N0}") <sub>kg</sub></i>)</span></div>
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
<div><i class="fas fa-file-invoice-dollar"></i> Venduto Oggi: </div>
|
||||
<div style="font-size:1.2em;"><b>ND</b> <span class="small"> <sub>kg</sub></span></div>
|
||||
<div style="font-size:1.2em;" class="text-secondary"><b>NA</b> <span class="small"></span></div>
|
||||
}
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-12 small text-right">
|
||||
<sup class="px-1">updated: @($"{DateTime.Now:HH:mm:ss}")</sup>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -5,6 +5,7 @@ using Microsoft.AspNetCore.Components;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
@@ -13,66 +14,8 @@ namespace GWMS.UI.Components
|
||||
{
|
||||
public partial class PlantOverview
|
||||
{
|
||||
#region Protected Fields
|
||||
|
||||
protected PlantDTO _currItem = new PlantDTO();
|
||||
|
||||
protected List<chartJsData.chartJsTSerie> LevelVal = new List<chartJsData.chartJsTSerie>();
|
||||
|
||||
/// <summary>
|
||||
/// fattore di riduzione x visualizzare meno punti (in base alla numerosità...
|
||||
/// </summary>
|
||||
protected int redFact = 1;
|
||||
|
||||
#endregion Protected Fields
|
||||
|
||||
#region Private Properties
|
||||
|
||||
[Inject]
|
||||
private IConfiguration Configuration { get; set; }
|
||||
|
||||
[Inject]
|
||||
private NavigationManager NavManager { get; set; }
|
||||
|
||||
private int SelPlantId
|
||||
{
|
||||
get
|
||||
{
|
||||
int answ = 0;
|
||||
if (AppMService.Order_Filter != null)
|
||||
{
|
||||
answ = AppMService.Order_Filter.PlantId;
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!AppMService.Order_Filter.PlantId.Equals(value))
|
||||
{
|
||||
AppMService.Order_Filter.PlantId = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Private Properties
|
||||
|
||||
#region Protected Properties
|
||||
|
||||
[Inject]
|
||||
protected MessageService AppMService { get; set; }
|
||||
|
||||
[Inject]
|
||||
protected GWMSDataService DataService { get; set; }
|
||||
|
||||
#endregion Protected Properties
|
||||
|
||||
#region Public Properties
|
||||
|
||||
public string checkRTime
|
||||
{
|
||||
get => DateTime.Now.Subtract(_currItem.LastUpdate).TotalMinutes > 2 ? $"Mancata ricezione: ultimo aggiornamento {_currItem.LastUpdate}" : $"Dati Realtime aggiornati al {_currItem.LastUpdate}";
|
||||
}
|
||||
|
||||
[Parameter]
|
||||
public PlantDTO currItem
|
||||
{
|
||||
@@ -87,54 +30,55 @@ namespace GWMS.UI.Components
|
||||
{
|
||||
var dataReload = Task.Run(async () =>
|
||||
{
|
||||
// legge i valori di plantLog ultimi 2 gg...
|
||||
SelectOrderData plantLevFilt = new SelectOrderData()
|
||||
{
|
||||
PlantId = value.PlantId,
|
||||
DateEnd = DateTime.Today.AddDays(1),
|
||||
DateStart = DateTime.Today.AddDays(-1),
|
||||
ShowClosed = false
|
||||
};
|
||||
PlantLevelDto = await DataService.PlantsAnalisysByFiltAsync(plantLevFilt);
|
||||
|
||||
// aggiunta delay o non riesce a disegnare
|
||||
int ChartWaitDelay = 150;
|
||||
int.TryParse(Configuration["ChartWaitDelay"], out ChartWaitDelay);
|
||||
Thread.Sleep(ChartWaitDelay);
|
||||
await Task.Delay(ChartWaitDelay);
|
||||
await HandleRedraw();
|
||||
});
|
||||
dataReload.Wait();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public string headerStatus
|
||||
{
|
||||
get
|
||||
{
|
||||
string answ = "";
|
||||
int TimeoutOffline = 5;
|
||||
int.TryParse(Configuration["TimeoutOffline"], out TimeoutOffline);
|
||||
answ = DateTime.Now.Subtract(_currItem.LastUpdate).TotalMinutes > TimeoutOffline ? "text-secondary" : "list-group-item-info";
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
|
||||
public string playStatus
|
||||
{
|
||||
get => DateTime.Now.Subtract(_currItem.LastUpdate).TotalMinutes > 2 ? "text-danger" : "text-success";
|
||||
}
|
||||
|
||||
#endregion Public Properties
|
||||
|
||||
#region Private Methods
|
||||
#region Protected Fields
|
||||
|
||||
private void fixRedFactor()
|
||||
{
|
||||
int answ = 1;
|
||||
int numCount = _currItem.LevelTS.Count;
|
||||
// passo a 2h se > 3 gg
|
||||
if (numCount > 240)
|
||||
answ = 5;
|
||||
// passo a 3h se > 5 gg
|
||||
else if (numCount > 120)
|
||||
answ = 4;
|
||||
// passo a 4h se > 10 gg
|
||||
else if (numCount > 72)
|
||||
answ = 3;
|
||||
redFact = answ;
|
||||
}
|
||||
protected PlantDTO _currItem = new PlantDTO();
|
||||
|
||||
#endregion Private Methods
|
||||
protected string checkRTime;
|
||||
protected string headerStatus;
|
||||
protected List<chartJsData.chartJsTSerie> LevelVal = new List<chartJsData.chartJsTSerie>();
|
||||
|
||||
protected string playCss = "";
|
||||
|
||||
/// <summary>
|
||||
/// fattore di riduzione x visualizzare meno punti (in base alla numerosità...
|
||||
/// </summary>
|
||||
protected int redFact = 1;
|
||||
|
||||
#endregion Protected Fields
|
||||
|
||||
#region Protected Properties
|
||||
|
||||
[Inject]
|
||||
protected MessageService AppMService { get; set; }
|
||||
|
||||
[Inject]
|
||||
protected GWMSDataService DataService { get; set; }
|
||||
|
||||
#endregion Protected Properties
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
@@ -174,11 +118,23 @@ namespace GWMS.UI.Components
|
||||
return answ;
|
||||
}
|
||||
|
||||
protected string getPressData(string valore, string formato)
|
||||
{
|
||||
string answ = "";
|
||||
if (currItem.PressAct.ContainsKey(valore))
|
||||
{
|
||||
answ = currItem.PressAct[valore].ToString(formato);
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
protected async Task HandleRedraw()
|
||||
{
|
||||
checkRt();
|
||||
fixRedFactor();
|
||||
await Task.Delay(1);
|
||||
LevelVal = _currItem.LevelTS.OrderByDescending(x => x.DtEvent).Where((cat, index) => index % redFact == 0).OrderBy(x => x.DtEvent).Select(r => new chartJsData.chartJsTSerie() { x = r.DtEvent, y = r.ValDouble }).ToList();
|
||||
await Task.Delay(1);
|
||||
}
|
||||
|
||||
protected override async Task OnAfterRenderAsync(bool firstRender)
|
||||
@@ -210,18 +166,68 @@ namespace GWMS.UI.Components
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Public Methods
|
||||
#region Private Properties
|
||||
|
||||
public string getPressData(string valore, string formato)
|
||||
[Inject]
|
||||
private IConfiguration Configuration { get; set; }
|
||||
|
||||
private bool dataIsRT { get; set; } = false;
|
||||
private bool deviceOnline { get; set; } = false;
|
||||
|
||||
[Inject]
|
||||
private NavigationManager NavManager { get; set; }
|
||||
|
||||
private List<PlantLevSumDTO>? PlantLevelDto { get; set; } = null;
|
||||
|
||||
private int SelPlantId
|
||||
{
|
||||
string answ = "";
|
||||
if (currItem.PressAct.ContainsKey(valore))
|
||||
get
|
||||
{
|
||||
answ = currItem.PressAct[valore].ToString(formato);
|
||||
int answ = 0;
|
||||
if (AppMService.Order_Filter != null)
|
||||
{
|
||||
answ = AppMService.Order_Filter.PlantId;
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!AppMService.Order_Filter.PlantId.Equals(value))
|
||||
{
|
||||
AppMService.Order_Filter.PlantId = value;
|
||||
}
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
#endregion Private Properties
|
||||
|
||||
#region Private Methods
|
||||
|
||||
private void checkRt()
|
||||
{
|
||||
DateTime adesso = DateTime.Now;
|
||||
int TimeoutOffline = 5;
|
||||
int.TryParse(Configuration["TimeoutOffline"], out TimeoutOffline);
|
||||
deviceOnline = adesso.Subtract(_currItem.LastUpdate).TotalMinutes <= TimeoutOffline;
|
||||
dataIsRT = adesso.Subtract(_currItem.LastUpdate).TotalMinutes <= 2;
|
||||
}
|
||||
|
||||
private void fixRedFactor()
|
||||
{
|
||||
int answ = 1;
|
||||
int numCount = _currItem.LevelTS.Count;
|
||||
// passo a 2h se > 3 gg
|
||||
if (numCount > 240)
|
||||
answ = 5;
|
||||
// passo a 3h se > 5 gg
|
||||
else if (numCount > 120)
|
||||
answ = 4;
|
||||
// passo a 4h se > 10 gg
|
||||
else if (numCount > 72)
|
||||
answ = 3;
|
||||
redFact = answ;
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
}
|
||||
}
|
||||
@@ -78,6 +78,8 @@
|
||||
protected async Task Processing()
|
||||
{
|
||||
processRunning = true;
|
||||
DbConfig.ExecMigrationMain();
|
||||
DbConfig.ExecMigrationIdentity();
|
||||
await ReloadData();
|
||||
}
|
||||
|
||||
|
||||
@@ -142,7 +142,7 @@
|
||||
|
||||
@code {
|
||||
|
||||
private List<PlantDTO> PlantsList;
|
||||
private List<PlantDetailModel> PlantsList;
|
||||
private List<SupplierModel> SuppliersList;
|
||||
private List<TransporterModel> TransportersList;
|
||||
|
||||
@@ -195,7 +195,7 @@
|
||||
{
|
||||
if (_currItem != null)
|
||||
{
|
||||
DataService.WeekPlanUpdate(_currItem);
|
||||
DataService.WeekPlanUpdateAsync(_currItem);
|
||||
await DataUpdated.InvokeAsync(1);
|
||||
}
|
||||
else
|
||||
@@ -211,7 +211,7 @@
|
||||
|
||||
if (_currItem != null)
|
||||
{
|
||||
DataService.WeekPlanDelete(_currItem);
|
||||
DataService.WeekPlanDeleteAsync(_currItem);
|
||||
await DataUpdated.InvokeAsync(1);
|
||||
}
|
||||
else
|
||||
@@ -232,9 +232,9 @@
|
||||
|
||||
protected async Task ReloadAllData()
|
||||
{
|
||||
PlantsList = await DataService.PlantsGetAll();
|
||||
SuppliersList = await DataService.SuppliersGetAll();
|
||||
TransportersList = await DataService.TransportersGetAll();
|
||||
PlantsList = await DataService.PlantsListAsync();
|
||||
SuppliersList = await DataService.SuppliersGetAllAsync();
|
||||
TransportersList = await DataService.TransportersGetAllAsync();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -8,6 +8,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Threading.Tasks;
|
||||
using static GWMS.Data.IobObjects;
|
||||
|
||||
@@ -42,7 +43,7 @@ namespace GWMS.UI.Controllers
|
||||
public IOBController(GWMSDataService DataService)
|
||||
{
|
||||
_DataService = DataService;
|
||||
//Log.Debug("Avviata classe IOBController");
|
||||
Log.Debug("Avvio classe IOBController");
|
||||
}
|
||||
|
||||
#endregion Public Constructors
|
||||
@@ -87,6 +88,7 @@ namespace GWMS.UI.Controllers
|
||||
[HttpGet("addTask2Exe/{id}")]
|
||||
public async Task<string> addTask2Exe(string id, string taskName, string taskVal)
|
||||
{
|
||||
Log.Info($"addTask2Exe | {id} | {taskName} | {taskVal}");
|
||||
string answ = "";
|
||||
// converto stringa in tipo task...
|
||||
taskType tName = taskType.nihil;
|
||||
@@ -113,7 +115,7 @@ namespace GWMS.UI.Controllers
|
||||
/// <summary>
|
||||
/// Controllo status Alive
|
||||
///
|
||||
/// GET: IOB/alive
|
||||
/// GET: IOB/version
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet("alive")]
|
||||
@@ -123,6 +125,17 @@ namespace GWMS.UI.Controllers
|
||||
return $"OK";
|
||||
}
|
||||
|
||||
[HttpGet("version")]
|
||||
public string version()
|
||||
{
|
||||
var version = Assembly
|
||||
.GetExecutingAssembly()
|
||||
.GetName()
|
||||
.Version?
|
||||
.ToString() ?? "unknown";
|
||||
return version;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Esegue verifica livelli ed eventuale creazione ordini refill
|
||||
///
|
||||
@@ -133,6 +146,7 @@ namespace GWMS.UI.Controllers
|
||||
[HttpGet("checkLevels/{id}")]
|
||||
public async Task<string> checkLevels(string id)
|
||||
{
|
||||
Log.Info($"checkLevels | {id}");
|
||||
//Log.Debug($"Chiamata checkLevels | {id}");
|
||||
bool fatto = false;
|
||||
// ...verifica per ricalcolo ordini...
|
||||
@@ -164,7 +178,7 @@ namespace GWMS.UI.Controllers
|
||||
[HttpGet("enabled/{id}")]
|
||||
public async Task<string> enabled(string id)
|
||||
{
|
||||
//Log.Debug($"Chiamata enabled | {id}");
|
||||
Log.Debug($"Enabled | {id}");
|
||||
string answ = "ND";
|
||||
// se id nullo --> KO!
|
||||
if (id == null)
|
||||
@@ -173,7 +187,7 @@ namespace GWMS.UI.Controllers
|
||||
}
|
||||
else
|
||||
{
|
||||
var currPlant = await _DataService.PlantsGetByCode(id);
|
||||
var currPlant = await _DataService.PlantsGetByCodeAsync(id);
|
||||
answ = (currPlant != null && currPlant.PlantId > 0) ? "OK" : "NO";
|
||||
}
|
||||
return answ;
|
||||
@@ -241,7 +255,7 @@ namespace GWMS.UI.Controllers
|
||||
[HttpGet("flog/{id}")]
|
||||
public async Task<string> flog(string id, string flux, string valore, string dtEve, string dtCurr, string cnt)
|
||||
{
|
||||
//Log.Debug($"Chiamata flog | {id} | {flux} | {valore} | {dtEve} | {dtCurr} | {cnt}");
|
||||
Log.Debug($"flog | {id} | {flux} | {valore} | {dtEve} | {dtCurr} | {cnt}");
|
||||
bool fatto = false;
|
||||
// formato yyyymmddHHMMSSnnn ovvero da anno a millisecondi
|
||||
if (cnt == null)
|
||||
@@ -255,7 +269,7 @@ namespace GWMS.UI.Controllers
|
||||
dtCurr = dtCurr.Length > 17 ? dtCurr.Substring(0, 17) : dtCurr;
|
||||
DateTime dataOraEvento = DateTime.Now;
|
||||
DateTime dtEvento, dtCorrente;
|
||||
// controllo: se ho valori dt x evento e orario DIVERSI per acquisitore IOB calcolo dataOraEvento corretto
|
||||
// controllo: se ho valori DtEvent x evento e orario DIVERSI per acquisitore IOB calcolo dataOraEvento corretto
|
||||
if (dtEve != dtCurr)
|
||||
{
|
||||
Int64 delta = 0;
|
||||
@@ -290,7 +304,7 @@ namespace GWMS.UI.Controllers
|
||||
}
|
||||
|
||||
// recupero plant!
|
||||
var currPlant = await _DataService.PlantsGetByCode(id);
|
||||
var currPlant = await _DataService.PlantsGetByCodeAsync(id);
|
||||
if (currPlant != null && currPlant.PlantId > 0)
|
||||
{
|
||||
// converto in plantLogModel...
|
||||
@@ -306,7 +320,7 @@ namespace GWMS.UI.Controllers
|
||||
List<PlantLogModel> newData = new List<PlantLogModel>();
|
||||
newData.Add(newItem);
|
||||
// insert!
|
||||
fatto = await _DataService.PlantLogInsert(newData);
|
||||
fatto = await _DataService.PlantLogInsertAsync(newData);
|
||||
|
||||
// effettuo SEMPRE verifica per ricalcolo ordini...
|
||||
await _DataService.checkLevels();
|
||||
@@ -337,25 +351,25 @@ namespace GWMS.UI.Controllers
|
||||
[HttpPost("flogJson/{id}")]
|
||||
public async Task<string> flogJson(string id, [FromBody] flogJsonPayload rawData)
|
||||
{
|
||||
//Log.Debug($"Chiamata flogJson | {id}");
|
||||
Log.Debug($"flogJson | {id} | {rawData.fluxData.Count} logs");
|
||||
bool fatto = false;
|
||||
// verifico ci sia valore
|
||||
if (rawData != null && !string.IsNullOrEmpty(id))
|
||||
{
|
||||
// recupero plant!
|
||||
var currPlant = await _DataService.PlantsGetByCode(id);
|
||||
var currPlant = await _DataService.PlantsGetByCodeAsync(id);
|
||||
if (currPlant != null && currPlant.PlantId > 0)
|
||||
{
|
||||
// conversione dati
|
||||
List<PlantLogModel> plData = rawData.fluxData.Select(jpl => _DataService.convertFluxToPL(currPlant.PlantId, jpl)).ToList();
|
||||
Log.Trace($"flogJson | {id} | Convertiti {plData.Count} record");
|
||||
Log.Debug($"flogJson | {id} | Convertiti {plData.Count} record");
|
||||
// insert!
|
||||
fatto = await _DataService.PlantLogInsert(plData);
|
||||
Log.Trace($"flogJson | {id} | PlantLogInsert --> esito: {fatto}");
|
||||
fatto = await _DataService.PlantLogInsertAsync(plData);
|
||||
Log.Debug($"flogJson | {id} | PlantLogInsertAsync --> esito: {fatto}");
|
||||
|
||||
// effettuo SEMPRE verifica per ricalcolo ordini...
|
||||
await _DataService.checkLevels();
|
||||
Log.Trace($"flogJson | {id} | chiamata checkLevels");
|
||||
Log.Debug($"flogJson | {id} | chiamata checkLevels");
|
||||
// leggo parametri correnti...
|
||||
try
|
||||
{
|
||||
@@ -376,7 +390,7 @@ namespace GWMS.UI.Controllers
|
||||
if (trovato.writable && string.IsNullOrEmpty(item.valore))
|
||||
{
|
||||
taskType currTask = (taskType)Enum.Parse(typeof(taskType), trovato.uid);
|
||||
await _DataService.addCheckTask4Machine(id, currTask, item.valore);
|
||||
await _DataService.AddCheckTask4MachineAsync(id, currTask, item.valore);
|
||||
}
|
||||
}
|
||||
// altrimenti AGGIUNGO (READ ONLY)...
|
||||
@@ -396,10 +410,10 @@ namespace GWMS.UI.Controllers
|
||||
fatto = true;
|
||||
}
|
||||
// faccio upsert innovations!
|
||||
await _DataService.upsertCurrObjItems(id, innovazioni);
|
||||
await _DataService.UpsertCurrObjItemsAsync(id, innovazioni);
|
||||
|
||||
// ultimo step: controllo invio quotidiano parametri gestiti (compreso validità parametri setup)
|
||||
await _DataService.ParamsSendCheck();
|
||||
await _DataService.ParamsSendCheckAsync();
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
@@ -429,7 +443,7 @@ namespace GWMS.UI.Controllers
|
||||
[HttpPost("forceSplitOdl/{id}")]
|
||||
public string forceSplitOdl(string id)
|
||||
{
|
||||
//Log.Debug($"Chiamata forceSplitOdl | {id}");
|
||||
Log.Debug($"Chiamata forceSplitOdl | {id}");
|
||||
return "OK";
|
||||
}
|
||||
|
||||
@@ -448,7 +462,7 @@ namespace GWMS.UI.Controllers
|
||||
[HttpPost("forceSplitOdlFull/{id}")]
|
||||
public string forceSplitOdlFull(string id, bool doConfirm, bool qtyFromLast, int? roundStep, string keyRichiesta = "")
|
||||
{
|
||||
//Log.Debug($"Chiamata forceSplitOdlFull | {id}");
|
||||
Log.Debug($"Chiamata forceSplitOdlFull | {id}");
|
||||
return "OK";
|
||||
}
|
||||
|
||||
@@ -461,7 +475,7 @@ namespace GWMS.UI.Controllers
|
||||
[HttpGet]
|
||||
public string Get()
|
||||
{
|
||||
//Log.Debug("Chiamata Get");
|
||||
Log.Debug("Chiamata Get");
|
||||
return "OK";
|
||||
}
|
||||
|
||||
@@ -475,7 +489,7 @@ namespace GWMS.UI.Controllers
|
||||
[HttpGet("{id}")]
|
||||
public string Get(int id)
|
||||
{
|
||||
//Log.Debug($"Chiamata Get | {id}");
|
||||
Log.Debug($"Chiamata Get | {id}");
|
||||
return "OK";
|
||||
}
|
||||
|
||||
@@ -490,7 +504,7 @@ namespace GWMS.UI.Controllers
|
||||
[HttpGet("getCounter/{id}")]
|
||||
public string getCounter(string id)
|
||||
{
|
||||
//Log.Debug($"Chiamata getCounter | {id}");
|
||||
Log.Debug($"Chiamata getCounter | {id}");
|
||||
return "0";
|
||||
}
|
||||
|
||||
@@ -505,7 +519,7 @@ namespace GWMS.UI.Controllers
|
||||
[HttpGet("getCounterTCRec/{id}")]
|
||||
public string getCounterTCRec(string id)
|
||||
{
|
||||
//Log.Debug($"Chiamata getCounterTCRec | {id}");
|
||||
Log.Debug($"Chiamata getCounterTCRec | {id}");
|
||||
return "0";
|
||||
}
|
||||
|
||||
@@ -520,7 +534,7 @@ namespace GWMS.UI.Controllers
|
||||
[HttpGet("getCurrData/{id}")]
|
||||
public string getCurrData(string id)
|
||||
{
|
||||
//Log.Debug($"Chiamata getCurrData | {id}");
|
||||
Log.Debug($"Chiamata getCurrData | {id}");
|
||||
return $"{id}";
|
||||
}
|
||||
|
||||
@@ -535,7 +549,7 @@ namespace GWMS.UI.Controllers
|
||||
[HttpGet("getCurrODL/{id}")]
|
||||
public string getCurrODL(string id)
|
||||
{
|
||||
//Log.Debug($"Chiamata getCurrODL | {id}");
|
||||
Log.Debug($"Chiamata getCurrODL | {id}");
|
||||
return "1";
|
||||
}
|
||||
|
||||
@@ -548,7 +562,7 @@ namespace GWMS.UI.Controllers
|
||||
[HttpGet("getCurrOdlRow/{id}")]
|
||||
public string getCurrOdlRow(string id)
|
||||
{
|
||||
//Log.Debug($"Chiamata getCurrOdlRow | {id}");
|
||||
Log.Debug($"Chiamata getCurrOdlRow | {id}");
|
||||
return "";
|
||||
}
|
||||
|
||||
@@ -561,7 +575,7 @@ namespace GWMS.UI.Controllers
|
||||
[HttpGet("getCurrOdlStart/{id}")]
|
||||
public string getCurrOdlStart(string id)
|
||||
{
|
||||
//Log.Debug($"Chiamata getCurrOdlStart | {id}");
|
||||
Log.Debug($"Chiamata getCurrOdlStart | {id}");
|
||||
return $"{DateTime.Now}";
|
||||
}
|
||||
|
||||
@@ -574,7 +588,7 @@ namespace GWMS.UI.Controllers
|
||||
[HttpGet("getCurrStatoRow/{id}")]
|
||||
public string getCurrStatoRow(string id)
|
||||
{
|
||||
//Log.Debug($"Chiamata getCurrStatoRow | {id}");
|
||||
Log.Debug($"Chiamata getCurrStatoRow | {id}");
|
||||
return "";
|
||||
}
|
||||
|
||||
@@ -587,7 +601,7 @@ namespace GWMS.UI.Controllers
|
||||
[HttpGet("getFiles/{id}")]
|
||||
public string getFiles(string id)
|
||||
{
|
||||
//Log.Debug($"Chiamata getFiles | {id}");
|
||||
Log.Debug($"Chiamata getFiles | {id}");
|
||||
return "";
|
||||
}
|
||||
|
||||
@@ -600,7 +614,7 @@ namespace GWMS.UI.Controllers
|
||||
[HttpGet("getIdlePeriod/{id}")]
|
||||
public int getIdlePeriod(string id)
|
||||
{
|
||||
//Log.Debug($"Chiamata getIdlePeriod | {id}");
|
||||
Log.Debug($"Chiamata getIdlePeriod | {id}");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -612,7 +626,7 @@ namespace GWMS.UI.Controllers
|
||||
[HttpGet("getIob2call/{id}")]
|
||||
public string getIob2call(string id)
|
||||
{
|
||||
//Log.Debug($"Chiamata getIob2call | {id}");
|
||||
Log.Debug($"Chiamata getIob2call | {id}");
|
||||
return "";
|
||||
}
|
||||
|
||||
@@ -624,7 +638,7 @@ namespace GWMS.UI.Controllers
|
||||
[HttpGet("getM2IOB/{id}")]
|
||||
public string getM2IOB(string id)
|
||||
{
|
||||
//Log.Debug($"Chiamata getM2IOB | {id}");
|
||||
Log.Debug($"Chiamata getM2IOB | {id}");
|
||||
return "";
|
||||
}
|
||||
|
||||
@@ -637,6 +651,7 @@ namespace GWMS.UI.Controllers
|
||||
[HttpGet("getObjItems/{id}")]
|
||||
public async Task<string> getObjItems(string id)
|
||||
{
|
||||
Log.Info($"getObjItems | {id}");
|
||||
string answ = "";
|
||||
if (string.IsNullOrWhiteSpace(id))
|
||||
{
|
||||
@@ -674,6 +689,7 @@ namespace GWMS.UI.Controllers
|
||||
[HttpGet("getObjItems2Write/{id}")]
|
||||
public async Task<string> getObjItems2Write(string id)
|
||||
{
|
||||
Log.Info($"getObjItems2Write | {id}");
|
||||
string answ = "";
|
||||
if (string.IsNullOrWhiteSpace(id))
|
||||
{
|
||||
@@ -713,6 +729,7 @@ namespace GWMS.UI.Controllers
|
||||
[HttpGet("getTask2Exe/{id}")]
|
||||
public async Task<string> getTask2Exe(string id)
|
||||
{
|
||||
Log.Info($"getTask2Exe | {id}");
|
||||
string answ = "";
|
||||
try
|
||||
{
|
||||
@@ -738,7 +755,7 @@ namespace GWMS.UI.Controllers
|
||||
[HttpGet("input/{id}")]
|
||||
public string input(string id, string valore, string dtEve, string dtCurr, string cnt)
|
||||
{
|
||||
//Log.Debug($"Chiamata input | {id} | {valore} | {dtEve} | {dtCurr} | {cnt}");
|
||||
Log.Debug($"Chiamata input | {id} | {valore} | {dtEve} | {dtCurr} | {cnt}");
|
||||
string answ = "OK";
|
||||
#if false
|
||||
// formato yyyymmddHHMMSSnnn ovvero da anno a millisecondi
|
||||
@@ -770,14 +787,14 @@ namespace GWMS.UI.Controllers
|
||||
[HttpPost]
|
||||
public void Post([FromBody] string value)
|
||||
{
|
||||
//Log.Debug("Chiamata Post");
|
||||
Log.Debug("Chiamata Post");
|
||||
}
|
||||
|
||||
// PUT api/IOB/5
|
||||
[HttpPut("{id}")]
|
||||
public void Put(int id, [FromBody] string value)
|
||||
{
|
||||
//Log.Debug($"Chiamata Put | {id}");
|
||||
Log.Debug($"Chiamata Put | {id}");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -791,6 +808,7 @@ namespace GWMS.UI.Controllers
|
||||
[HttpGet("remTask2Exe/{id}")]
|
||||
public async Task<string> remTask2Exe(string id, string taskName)
|
||||
{
|
||||
Log.Info($"remTask2Exe | {id} | {taskName}");
|
||||
string answ = "";
|
||||
try
|
||||
{
|
||||
@@ -799,7 +817,7 @@ namespace GWMS.UI.Controllers
|
||||
bool fatto = Enum.TryParse(taskName, out tName);
|
||||
if (fatto)
|
||||
{
|
||||
await _DataService.remTask4Machine(id, tName);
|
||||
await _DataService.RemTask4MachineAsync(id, tName);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -826,28 +844,23 @@ namespace GWMS.UI.Controllers
|
||||
[HttpPost("saveConf/{id}")]
|
||||
public async Task<string> saveConf(string id, [FromBody] System.Text.Json.JsonElement rawQuery)
|
||||
{
|
||||
Log.Info($"saveConf | {id}");
|
||||
// problema deserializzaizone ENUM con classe nuova dotnet 5:
|
||||
// https://github.com/graphql-dotnet/graphql-dotnet/issues/1439
|
||||
|
||||
string answ = "";
|
||||
// recupero come stringa il json ricevuto
|
||||
string rawJson = rawQuery.ToString();
|
||||
if (!string.IsNullOrEmpty(rawJson))
|
||||
string rawData = rawQuery.ToString();
|
||||
if (!string.IsNullOrEmpty(rawData))
|
||||
{
|
||||
var currMemMap = JsonConvert.DeserializeObject<plcMemMap>(rawJson);
|
||||
|
||||
if (string.IsNullOrWhiteSpace(id))
|
||||
{
|
||||
answ = "Missing IOB";
|
||||
}
|
||||
else
|
||||
{
|
||||
// se != null --> salvo!
|
||||
if (currMemMap != null)
|
||||
{
|
||||
await _DataService.saveMemMap(id, currMemMap);
|
||||
answ = "OK";
|
||||
}
|
||||
bool done = await _DataService.SaveMemMapAsync(id, rawData);
|
||||
answ = done ? "OK" : "ERROR";
|
||||
}
|
||||
}
|
||||
return answ;
|
||||
@@ -863,6 +876,7 @@ namespace GWMS.UI.Controllers
|
||||
[HttpPost("sendAlarmBankUpdate/{id}")]
|
||||
public async Task<string> sendAlarmBankUpdate(string id, string memAddr, int index, uint currStatus, [FromBody] List<string> ActiveAlarms)
|
||||
{
|
||||
Log.Info($"sendAlarmBankUpdate | {id}");
|
||||
string answ = "ND";
|
||||
// se id nullo --> KO!
|
||||
if (id == null)
|
||||
@@ -872,7 +886,7 @@ namespace GWMS.UI.Controllers
|
||||
else
|
||||
{
|
||||
// recupero plant...
|
||||
var currPlant = await _DataService.PlantsGetByCode(id);
|
||||
var currPlant = await _DataService.PlantsGetByCodeAsync(id);
|
||||
string alarmDecoded = "-";
|
||||
if (ActiveAlarms != null && ActiveAlarms.Count > 0)
|
||||
{
|
||||
@@ -899,9 +913,9 @@ namespace GWMS.UI.Controllers
|
||||
/// <param name="GWIP">IP del Gateway</param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("sendReboot")]
|
||||
public string sendReboot(string idxMacchina, string mac)
|
||||
public async Task<string> sendReboot(string idxMacchina, string mac)
|
||||
{
|
||||
//Log.Debug($"Chiamata sendReboot | {idxMacchina} | {mac}");
|
||||
Log.Warn($"sendReboot | {idxMacchina} | {mac}");
|
||||
string answ = "";
|
||||
try
|
||||
{
|
||||
@@ -912,7 +926,7 @@ namespace GWMS.UI.Controllers
|
||||
Item = idxMacchina,
|
||||
Payload = mac
|
||||
};
|
||||
_DataService.RebootLogInsert(newItem);
|
||||
await _DataService.RebootLogInsertAsync(newItem);
|
||||
answ = "OK";
|
||||
}
|
||||
catch
|
||||
@@ -929,6 +943,7 @@ namespace GWMS.UI.Controllers
|
||||
[HttpPost("setObjItems/{id}")]
|
||||
public async Task<string> setObjItems(string id, [FromBody] List<objItem> currParams)
|
||||
{
|
||||
Log.Info($"setObjItems | {id}");
|
||||
string answ = "";
|
||||
if (string.IsNullOrWhiteSpace(id))
|
||||
{
|
||||
@@ -939,7 +954,7 @@ namespace GWMS.UI.Controllers
|
||||
// se != null --> salvo!
|
||||
if (currParams != null)
|
||||
{
|
||||
await _DataService.setCurrObjItems(id, currParams);
|
||||
await _DataService.SetCurrObjItemsAsync(id, currParams);
|
||||
answ = "OK";
|
||||
}
|
||||
}
|
||||
@@ -955,7 +970,7 @@ namespace GWMS.UI.Controllers
|
||||
[HttpPost("uploadFile/{id}")]
|
||||
public string uploadFile(string id)
|
||||
{
|
||||
//Log.Debug($"Chiamata uploadFile | {id}");
|
||||
Log.Debug($"Chiamata uploadFile | {id}");
|
||||
string answ = "";
|
||||
#if false
|
||||
// questa classe è derivata da Controller.Response... x cui recupero lo stream in altro modo...
|
||||
@@ -1002,6 +1017,7 @@ namespace GWMS.UI.Controllers
|
||||
[HttpPost("upsertObjItems/{id}")]
|
||||
public async Task<string> upsertObjItems(string id, [FromBody] List<objItem> innovazioni)
|
||||
{
|
||||
Log.Info($"upsertObjItems | {id}");
|
||||
string answ = "";
|
||||
if (string.IsNullOrWhiteSpace(id))
|
||||
{
|
||||
@@ -1013,7 +1029,7 @@ namespace GWMS.UI.Controllers
|
||||
if (innovazioni != null)
|
||||
{
|
||||
// salvo
|
||||
await _DataService.upsertCurrObjItems(id, innovazioni);
|
||||
await _DataService.UpsertCurrObjItemsAsync(id, innovazioni);
|
||||
answ = "OK";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,16 +47,16 @@ namespace GWMS.UI.Controllers
|
||||
[HttpDelete("{id}")]
|
||||
public void Delete(int id)
|
||||
{
|
||||
//Log.Debug($"Chiamata Delete | {id}");
|
||||
Log.Debug($"PlantData: Chiamata Delete | {id} | nothing 2 do");
|
||||
}
|
||||
|
||||
// GET: api/PlantData
|
||||
[HttpGet]
|
||||
public async Task<List<PlantDTO>> Get()
|
||||
{
|
||||
//Log.Debug("Chiamata Get");
|
||||
Log.Debug("PlantData: Chiamata Get");
|
||||
// serializzo i dati di PlantDTO dell'impianto richiesto
|
||||
List<PlantDTO> ListRecords = await _DataService.PlantsGetAll();
|
||||
List<PlantDTO> ListRecords = await _DataService.PlantDtoGetAllAsync();
|
||||
return ListRecords;
|
||||
}
|
||||
|
||||
@@ -64,9 +64,9 @@ namespace GWMS.UI.Controllers
|
||||
[HttpGet("{id}")]
|
||||
public async Task<PlantDTO> Get(int id)
|
||||
{
|
||||
//Log.Debug($"Chiamata Get | {id}");
|
||||
Log.Debug($"PlantData: Chiamata Get | id: {id}");
|
||||
// serializzo i dati di PlantDTO dell'impianto richiesto
|
||||
var ListRecords = await _DataService.PlantsGetAll();
|
||||
var ListRecords = await _DataService.PlantDtoGetAllAsync();
|
||||
//seleziono plant...
|
||||
var SelRecords = ListRecords.Where(X => X.PlantId == id).FirstOrDefault();
|
||||
return SelRecords;
|
||||
@@ -76,14 +76,14 @@ namespace GWMS.UI.Controllers
|
||||
[HttpPost]
|
||||
public void Post([FromBody] string value)
|
||||
{
|
||||
//Log.Debug("Chiamata Post");
|
||||
Log.Debug("PlantData: Chiamata Post | nothing 2 do");
|
||||
}
|
||||
|
||||
// PUT api/PlantData/5
|
||||
[HttpPut("{id}")]
|
||||
public void Put(int id, [FromBody] string value)
|
||||
{
|
||||
//Log.Debug($"Chiamata Put | {id}");
|
||||
Log.Debug("PlantData: Chiamata Put | nothing 2 do");
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
|
||||
@@ -62,7 +62,7 @@ namespace GWMS.UI.Controllers
|
||||
DateTime limite = DateTime.Today.AddHours(dayHour).AddMinutes(dayMin);
|
||||
|
||||
// serializzo i dati di PlantDTO dell'impianto richiesto
|
||||
var ListRecords = await _DataService.PlantLogGetFilt(0, limite, 100);
|
||||
var ListRecords = await _DataService.PlantLogGetFiltAsync(0, limite, 100);
|
||||
return ListRecords;
|
||||
}
|
||||
|
||||
@@ -78,7 +78,7 @@ namespace GWMS.UI.Controllers
|
||||
DateTime limite = DateTime.Today.AddHours(dayHour).AddMinutes(dayMin);
|
||||
|
||||
// serializzo i dati di PlantDTO dell'impianto richiesto
|
||||
var ListRecords = await _DataService.PlantLogGetFilt(id, limite, 100);
|
||||
var ListRecords = await _DataService.PlantLogGetFiltAsync(id, limite, 100);
|
||||
return ListRecords;
|
||||
}
|
||||
|
||||
@@ -91,7 +91,7 @@ namespace GWMS.UI.Controllers
|
||||
// verifico ci sia valore
|
||||
if (newItems != null)
|
||||
{
|
||||
fatto = await _DataService.PlantLogInsert(newItems);
|
||||
fatto = await _DataService.PlantLogInsertAsync(newItems);
|
||||
}
|
||||
if (fatto)
|
||||
{
|
||||
|
||||
+1290
-505
File diff suppressed because it is too large
Load Diff
@@ -13,6 +13,7 @@ namespace GWMS.UI.Data
|
||||
private string _pageIcon;
|
||||
private string _pageName;
|
||||
private string _searchVal;
|
||||
private string _userName;
|
||||
private bool _showSearch;
|
||||
|
||||
#endregion Private Fields
|
||||
@@ -68,6 +69,20 @@ namespace GWMS.UI.Data
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public string UserName
|
||||
{
|
||||
get => _userName;
|
||||
set
|
||||
{
|
||||
if (_userName != value)
|
||||
{
|
||||
_userName = value;
|
||||
ReportPageUpd();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public string PageName
|
||||
{
|
||||
get => _pageName;
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<Version>1.0.2406.0417</Version>
|
||||
<UserSecretsId>95c9f021-52d1-4390-a670-5810b7b777b0</UserSecretsId>
|
||||
<EnableNETAnalyzers>true</EnableNETAnalyzers>
|
||||
<RunAnalyzersDuringBuild>true</RunAnalyzersDuringBuild>
|
||||
<ServerGarbageCollection>true</ServerGarbageCollection>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Remove="Services\**" />
|
||||
<Content Remove="Services\**" />
|
||||
<EmbeddedResource Remove="Services\**" />
|
||||
<None Remove="Services\**" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Remove="QuartzHostedService.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Remove="bundleconfig.json" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Remove="NLog.config.dev" />
|
||||
<None Remove="NLog.config.disabled" />
|
||||
<None Remove="NLog.config.rel" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<_WebToolingArtifacts Remove="Properties\PublishProfiles\IIS02.pubxml" />
|
||||
<_WebToolingArtifacts Remove="Properties\PublishProfiles\IISProfile.pubxml" />
|
||||
<_WebToolingArtifacts Remove="Properties\PublishProfiles\IISProfileLinux.pubxml" />
|
||||
<_WebToolingArtifacts Remove="Properties\PublishProfiles\IISProfileWin.pubxml" />
|
||||
<_WebToolingArtifacts Remove="Properties\PublishProfiles\W2019-IIS-DEV.pubxml" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Include="NLog.config.rel">
|
||||
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="NLog.config.dev">
|
||||
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\GWMS.Data\GWMS.Data.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="AspNetCore.HealthChecks.MySql" Version="6.0.2" />
|
||||
<PackageReference Include="AspNetCore.HealthChecks.Redis" Version="6.0.2" />
|
||||
<PackageReference Include="AspNetCore.HealthChecks.System" Version="6.0.2" />
|
||||
<PackageReference Include="AspNetCore.HealthChecks.UI" Version="6.0.4" />
|
||||
<PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="6.0.4" />
|
||||
<PackageReference Include="AspNetCore.HealthChecks.UI.InMemory.Storage" Version="6.0.4" />
|
||||
<PackageReference Include="AspNetCore.HealthChecks.Uris" Version="6.0.3" />
|
||||
<PackageReference Include="BlazorBarcodeScanner.ZXing.JS" Version="0.2.7" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="6.0.2" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="6.0.2" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="6.0.2" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="6.0.2">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="6.0.2" />
|
||||
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="6.0.2" ExcludeAssets="All" />
|
||||
<PackageReference Include="NLog.Web.AspNetCore" Version="5.3.11" />
|
||||
<PackageReference Include="ZXingBlazor" Version="0.1.6" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="bundleconfig.json" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Update="Components\ParamEditor - Copy.razor.cs">
|
||||
<DependentUpon>ParamEditor.razor.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Update="Pages\Transporters - Copy - Copy.razor.cs">
|
||||
<DependentUpon>Transporters - Copy.razor.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Update="Pages\Transporters - Copy.razor.cs">
|
||||
<DependentUpon>Transporters.razor.cs</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<Target Name="PreBuild" AfterTargets="PreBuildEvent">
|
||||
<Exec Command="powershell.exe -ExecutionPolicy Unrestricted -NoProfile -NonInteractive -File $(ProjectDir)\pre-build.ps1 -ProjectDir $(ProjectDir) -ProjectPath $(ProjectPath) -Config $(Configuration)" />
|
||||
</Target>
|
||||
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
|
||||
<Exec Command="powershell.exe -ExecutionPolicy Unrestricted -NoProfile -NonInteractive -File $(ProjectDir)\post-build.ps1 -ProjectDir $(ProjectDir) -ProjectPath $(ProjectPath) -Config $(Configuration)" />
|
||||
</Target>
|
||||
</Project>
|
||||
+47
-13
@@ -2,22 +2,34 @@
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<Version>1.0.2402.1919</Version>
|
||||
<Version>1.2.2603.1310</Version>
|
||||
<UserSecretsId>95c9f021-52d1-4390-a670-5810b7b777b0</UserSecretsId>
|
||||
<EnableNETAnalyzers>true</EnableNETAnalyzers>
|
||||
<RunAnalyzersDuringBuild>true</RunAnalyzersDuringBuild>
|
||||
<ServerGarbageCollection>true</ServerGarbageCollection>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Remove="Services\**" />
|
||||
<Content Remove="Services\**" />
|
||||
<EmbeddedResource Remove="Services\**" />
|
||||
<None Remove="Services\**" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Remove="QuartzHostedService.cs" />
|
||||
<Compile Remove="Services\BlazorTimer.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Remove="bundleconfig.json" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Remove="NLog.config.dev" />
|
||||
<None Remove="NLog.config.disabled" />
|
||||
<None Remove="NLog.config.rel" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<_WebToolingArtifacts Remove="Properties\PublishProfiles\IIS02.pubxml" />
|
||||
<_WebToolingArtifacts Remove="Properties\PublishProfiles\IISProfile.pubxml" />
|
||||
@@ -26,17 +38,26 @@
|
||||
<_WebToolingArtifacts Remove="Properties\PublishProfiles\W2019-IIS-DEV.pubxml" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Include="NLog.config.rel">
|
||||
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="NLog.config.dev">
|
||||
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\GWMS.Data\GWMS.Data.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="AspNetCore.HealthChecks.MySql" Version="6.0.2" />
|
||||
<PackageReference Include="AspNetCore.HealthChecks.Redis" Version="6.0.2" />
|
||||
<PackageReference Include="AspNetCore.HealthChecks.System" Version="6.0.2" />
|
||||
<PackageReference Include="AspNetCore.HealthChecks.Redis" Version="6.0.4" />
|
||||
<PackageReference Include="AspNetCore.HealthChecks.System" Version="6.0.5" />
|
||||
<PackageReference Include="AspNetCore.HealthChecks.UI" Version="6.0.4" />
|
||||
<PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="6.0.4" />
|
||||
<PackageReference Include="AspNetCore.HealthChecks.UI.InMemory.Storage" Version="6.0.4" />
|
||||
<PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="6.0.5" />
|
||||
<PackageReference Include="AspNetCore.HealthChecks.UI.InMemory.Storage" Version="6.0.5" />
|
||||
<PackageReference Include="AspNetCore.HealthChecks.Uris" Version="6.0.3" />
|
||||
<PackageReference Include="BlazorBarcodeScanner.ZXing.JS" Version="0.2.7" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="6.0.2" />
|
||||
@@ -46,16 +67,21 @@
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="6.0.2" />
|
||||
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="6.0.2" ExcludeAssets="All" />
|
||||
<PackageReference Include="NLog.Web.AspNetCore" Version="4.14.0" />
|
||||
<PackageReference Include="NLog" Version="6.1.1" />
|
||||
<PackageReference Include="NLog.Targets.OpenTelemetryProtocol" Version="1.2.6" />
|
||||
<PackageReference Include="NLog.Web.AspNetCore" Version="6.1.2" />
|
||||
<PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.15.0" />
|
||||
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.15.0" />
|
||||
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.15.0" />
|
||||
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.15.0" />
|
||||
<PackageReference Include="OpenTelemetry.Instrumentation.EntityFrameworkCore" Version="1.15.0-beta.1" />
|
||||
<PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.15.0" />
|
||||
<PackageReference Include="OpenTelemetry.Instrumentation.StackExchangeRedis" Version="1.15.0-beta.1" />
|
||||
<PackageReference Include="StackExchange.Redis" Version="2.7.33" />
|
||||
<PackageReference Include="ZXingBlazor" Version="0.1.6" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Services\" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="bundleconfig.json" />
|
||||
</ItemGroup>
|
||||
@@ -72,7 +98,15 @@
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Update="NLog.config">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
<Target Name="PreBuild" AfterTargets="PreBuildEvent">
|
||||
<Exec Command="powershell.exe -ExecutionPolicy Unrestricted -NoProfile -NonInteractive -File $(ProjectDir)\pre-build.ps1 -ProjectDir $(ProjectDir) -ProjectPath $(ProjectPath) -Config $(Configuration)" />
|
||||
</Target>
|
||||
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
|
||||
<Exec Command="powershell.exe -ExecutionPolicy Unrestricted -NoProfile -NonInteractive -File $(ProjectDir)\post-build.ps1 -ProjectDir $(ProjectDir) -ProjectPath $(ProjectPath)" />
|
||||
<Exec Command="powershell.exe -ExecutionPolicy Unrestricted -NoProfile -NonInteractive -File $(ProjectDir)\post-build.ps1 -ProjectDir $(ProjectDir) -ProjectPath $(ProjectPath) -Config $(Configuration)" />
|
||||
</Target>
|
||||
</Project>
|
||||
|
||||
+17
-11
@@ -110,20 +110,26 @@ namespace GWMS.UI.Health
|
||||
|
||||
public static async Task<HealthCheckResult> PingCheck(string hostName)
|
||||
{
|
||||
using (var thePing = new Ping())
|
||||
if (hostName.Contains("::") || hostName.Contains("0.0.0.0"))
|
||||
{
|
||||
var pingResult = await thePing.SendPingAsync(hostName);
|
||||
var description = $"Ping to {hostName}";
|
||||
var healthCheckData = new Dictionary<string, object>();
|
||||
healthCheckData.Add("RoundTripMS", pingResult.RoundtripTime);
|
||||
healthCheckData.Add("ActualIPAddress", pingResult.Address.ToString());
|
||||
if (pingResult.Status == IPStatus.Success)
|
||||
return HealthCheckResult.Unhealthy($"Wrong Hostname: {hostName}");
|
||||
}
|
||||
else
|
||||
{
|
||||
using (var thePing = new Ping())
|
||||
{
|
||||
description += $" - {pingResult.RoundtripTime}ms";
|
||||
return HealthCheckResult.Healthy(description, healthCheckData);
|
||||
var pingResult = await thePing.SendPingAsync(hostName);
|
||||
var description = $"Ping to {hostName}";
|
||||
var healthCheckData = new Dictionary<string, object>();
|
||||
healthCheckData.Add("RoundTripMS", pingResult.RoundtripTime);
|
||||
healthCheckData.Add("ActualIPAddress", pingResult.Address.ToString());
|
||||
if (pingResult.Status == IPStatus.Success)
|
||||
{
|
||||
description += $" - {pingResult.RoundtripTime}ms";
|
||||
return HealthCheckResult.Healthy(description, healthCheckData);
|
||||
}
|
||||
return HealthCheckResult.Unhealthy(description + $" {hostName}", null, healthCheckData);
|
||||
}
|
||||
|
||||
return HealthCheckResult.Unhealthy(description + $" {hostName}", null, healthCheckData);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+11
-3
@@ -29,7 +29,7 @@
|
||||
layout="${longdate} ${uppercase:${level}} ${message}" />
|
||||
-->
|
||||
<target xsi:type="File" name="fileTarget" fileName="${basedir}/logs/${shortdate}.log" layout="${longdate} | ${uppercase:${level}} | ${logger:shortName=false} | ${message}" />
|
||||
<target xsi:type="ColoredConsole" name="consoleTarget" layout="${longdate} | ${uppercase:${level}} | ${logger:shortName=true}| ${message}" />
|
||||
<target xsi:type="ColoredConsole" name="consoleTarget" layout="${longdate} | ${uppercase:${level}} | ${logger:shortName=true} | ${message}" />
|
||||
</targets>
|
||||
|
||||
<rules>
|
||||
@@ -39,8 +39,16 @@
|
||||
Write all events with minimal level of Debug (So Debug, Info, Warn, Error and Fatal, but not Trace) to "f"
|
||||
<logger name="*" minlevel="Debug" writeTo="f" />
|
||||
-->
|
||||
<logger name="*" minlevel="Trace" writeTo="consoleTarget" />
|
||||
|
||||
<logger name="System.*" finalMinLevel="Warn" />
|
||||
<logger name="Microsoft.*" finalMinLevel="Warn" />
|
||||
<!--<logger name="Microsoft.AspNetCore.SignalR" finalMinLevel="Debug" />
|
||||
<logger name="Microsoft.AspNetCore.Http.Connections" finalMinLevel="Debug" />-->
|
||||
<logger name="Microsoft.AspNetCore.*" finalMinLevel="Warn" />
|
||||
<logger name="Microsoft.Hosting.Lifetime*" finalMinLevel="Info" />
|
||||
|
||||
<logger name="*" minlevel="Debug" writeTo="consoleTarget" />
|
||||
<!--<logger name="Microsoft.*" maxlevel="Info" final="true" />-->
|
||||
<logger name="*" minlevel="Trace" writeTo="fileTarget" />
|
||||
<logger name="*" minlevel="Debug" writeTo="fileTarget" />
|
||||
</rules>
|
||||
</nlog>
|
||||
@@ -0,0 +1,54 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
|
||||
autoReload="true"
|
||||
throwExceptions="false"
|
||||
internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log">
|
||||
|
||||
<!-- optional, add some variables
|
||||
https://github.com/nlog/NLog/wiki/Configuration-file#variables
|
||||
-->
|
||||
<variable name="myvar" value="myvalue" />
|
||||
|
||||
<!--
|
||||
See https://github.com/nlog/nlog/wiki/Configuration-file
|
||||
for information on customizing logging rules and outputs.
|
||||
-->
|
||||
<targets>
|
||||
|
||||
<!--
|
||||
add your targets here
|
||||
See https://github.com/nlog/NLog/wiki/Targets for possible targets.
|
||||
See https://github.com/nlog/NLog/wiki/Layout-Renderers for the possible layout renderers.
|
||||
-->
|
||||
|
||||
<!--
|
||||
Write events to a file with the date in the filename.
|
||||
<target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
|
||||
layout="${longdate} ${uppercase:${level}} ${message}" />
|
||||
-->
|
||||
<target xsi:type="File" name="fileTarget" fileName="${basedir}/logs/${shortdate}.log" layout="${longdate} | ${uppercase:${level}} | ${logger:shortName=false} | ${message}" />
|
||||
<target xsi:type="ColoredConsole" name="consoleTarget" layout="${longdate} | ${uppercase:${level}} | ${logger:shortName=true} | ${message}" />
|
||||
</targets>
|
||||
|
||||
<rules>
|
||||
<!-- add your logging rules here -->
|
||||
|
||||
<!--
|
||||
Write all events with minimal level of Debug (So Debug, Info, Warn, Error and Fatal, but not Trace) to "f"
|
||||
<logger name="*" minlevel="Debug" writeTo="f" />
|
||||
-->
|
||||
|
||||
<logger name="System.*" finalMinLevel="Warn" />
|
||||
<logger name="Microsoft.*" finalMinLevel="Warn" />
|
||||
<!--<logger name="Microsoft.AspNetCore.SignalR" finalMinLevel="Debug" />
|
||||
<logger name="Microsoft.AspNetCore.Http.Connections" finalMinLevel="Debug" />-->
|
||||
<logger name="Microsoft.AspNetCore.*" finalMinLevel="Warn" />
|
||||
<logger name="Microsoft.Hosting.Lifetime*" finalMinLevel="Info" />
|
||||
|
||||
<logger name="*" minlevel="Debug" writeTo="consoleTarget" />
|
||||
<!--<logger name="Microsoft.*" maxlevel="Info" final="true" />-->
|
||||
<logger name="*" minlevel="Debug" writeTo="fileTarget" />
|
||||
</rules>
|
||||
</nlog>
|
||||
@@ -0,0 +1,53 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
|
||||
autoReload="true"
|
||||
throwExceptions="false"
|
||||
internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log">
|
||||
|
||||
<!-- optional, add some variables
|
||||
https://github.com/nlog/NLog/wiki/Configuration-file#variables
|
||||
-->
|
||||
<variable name="myvar" value="myvalue" />
|
||||
|
||||
<!--
|
||||
See https://github.com/nlog/nlog/wiki/Configuration-file
|
||||
for information on customizing logging rules and outputs.
|
||||
-->
|
||||
<targets>
|
||||
|
||||
<!--
|
||||
add your targets here
|
||||
See https://github.com/nlog/NLog/wiki/Targets for possible targets.
|
||||
See https://github.com/nlog/NLog/wiki/Layout-Renderers for the possible layout renderers.
|
||||
-->
|
||||
|
||||
<!--
|
||||
Write events to a file with the date in the filename.
|
||||
<target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
|
||||
layout="${longdate} ${uppercase:${level}} ${message}" />
|
||||
-->
|
||||
<target xsi:type="File" name="fileTarget" fileName="${basedir}/logs/${shortdate}.log" layout="${longdate} | ${uppercase:${level}} | ${logger:shortName=false} | ${message}" />
|
||||
<target xsi:type="ColoredConsole" name="consoleTarget" layout="${longdate} | ${uppercase:${level}} | ${logger:shortName=true} | ${message}" />
|
||||
</targets>
|
||||
|
||||
<rules>
|
||||
<!-- add your logging rules here -->
|
||||
|
||||
<!--
|
||||
Write all events with minimal level of Debug (So Debug, Info, Warn, Error and Fatal, but not Trace) to "f"
|
||||
<logger name="*" minlevel="Debug" writeTo="f" />
|
||||
-->
|
||||
<logger name="System.*" finalMinLevel="Warn" />
|
||||
<logger name="Microsoft.*" finalMinLevel="Warn" />
|
||||
<!--<logger name="Microsoft.AspNetCore.SignalR" finalMinLevel="Debug" />-->
|
||||
<!--<logger name="Microsoft.AspNetCore.Http.Connections" finalMinLevel="Debug" />-->
|
||||
<logger name="Microsoft.AspNetCore.*" finalMinLevel="Info" />
|
||||
<logger name="Microsoft.Hosting.Lifetime*" finalMinLevel="Info" />
|
||||
|
||||
<logger name="*" minlevel="Info" writeTo="consoleTarget" />
|
||||
<!--<logger name="Microsoft.*" maxlevel="Info" final="true" />-->
|
||||
<logger name="*" minlevel="Info" writeTo="fileTarget" />
|
||||
</rules>
|
||||
</nlog>
|
||||
@@ -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.PlantDtoGetAllAsync();
|
||||
}
|
||||
else if (ClaimPlantId > 0)
|
||||
{
|
||||
var rawData = await DataService.PlantsGetAll();
|
||||
var rawData = await DataService.PlantDtoGetAllAsync();
|
||||
PlantsList = rawData.Where(x => x.PlantId == ClaimPlantId).ToList();
|
||||
SelPlantId = ClaimPlantId;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -174,28 +175,6 @@ namespace GWMS.UI.Pages
|
||||
|
||||
protected DateTime vetoScan = DateTime.Now;
|
||||
|
||||
#if false
|
||||
private async Task LocalReceivedBarcodeText(BarcodeReceivedEventArgs args)
|
||||
{
|
||||
DateTime adesso = DateTime.Now;
|
||||
// input
|
||||
string ordCode = args.BarcodeText;
|
||||
// non nullo
|
||||
if (!string.IsNullOrEmpty(ordCode))
|
||||
{
|
||||
// non veto...
|
||||
if (adesso.Subtract(vetoScan).TotalMinutes > 0)
|
||||
{
|
||||
vetoScan = adesso.AddSeconds(4);
|
||||
//NavManager.NavigateTo($"CodeProcess/{ordCode}");
|
||||
OrderCode = ordCode;
|
||||
var result = ProcessBarcode(ordCode);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
protected void ScanDoneHandler(string value)
|
||||
{
|
||||
DateTime adesso = DateTime.Now;
|
||||
@@ -224,7 +203,7 @@ namespace GWMS.UI.Pages
|
||||
{
|
||||
OrderCode = Barcode;
|
||||
});
|
||||
var ordine = await DataService.OrderGetByCode(Barcode);
|
||||
var ordine = await DataService.OrderGetByCodeAsync(Barcode);
|
||||
if (ordine != null)
|
||||
{
|
||||
if (ordine.DtExecEnd > ordine.DtOrder)
|
||||
@@ -278,17 +257,17 @@ namespace GWMS.UI.Pages
|
||||
// se ho un plantId valido --> altrimenti non abilitato
|
||||
if (ClaimPlantId == 0)
|
||||
{
|
||||
PlantsList = await DataService.PlantsGetAll();
|
||||
PlantsList = await DataService.PlantsListAsync();
|
||||
}
|
||||
else if (ClaimPlantId > 0)
|
||||
{
|
||||
var rawData = await DataService.PlantsGetAll();
|
||||
var rawData = await DataService.PlantsListAsync();
|
||||
PlantsList = rawData.Where(x => x.PlantId == ClaimPlantId).ToList();
|
||||
SelPlantId = ClaimPlantId;
|
||||
}
|
||||
else
|
||||
{
|
||||
PlantsList = new List<PlantDTO>();
|
||||
PlantsList = new List<PlantDetailModel>();
|
||||
}
|
||||
isLoading = false;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -135,7 +136,8 @@ namespace GWMS.UI.Pages
|
||||
{
|
||||
MessageService.SelPlantId = "0";
|
||||
MessageService.SelOrderCode = "";
|
||||
NavManager.NavigateTo($"{Configuration["BaseUrl"]}GasStation");
|
||||
string fullUrl = $"{Configuration["RuntimeOpt:BaseUrl"]}{Configuration["RuntimeOpt:BaseAppPath"]}";
|
||||
NavManager.NavigateTo($"{fullUrl}GasStation", true);
|
||||
}
|
||||
|
||||
protected void OrderCompleted()
|
||||
@@ -177,17 +179,17 @@ namespace GWMS.UI.Pages
|
||||
// se ho un plantId valido --> altrimenti non abilitato
|
||||
if (ClaimPlantId == 0)
|
||||
{
|
||||
PlantsList = await DataService.PlantsGetAll();
|
||||
PlantsList = await DataService.PlantsListAsync();
|
||||
}
|
||||
else if (ClaimPlantId > 0)
|
||||
{
|
||||
var rawData = await DataService.PlantsGetAll();
|
||||
var rawData = await DataService.PlantsListAsync();
|
||||
PlantsList = rawData.Where(x => x.PlantId == ClaimPlantId).ToList();
|
||||
SelPlantId = ClaimPlantId;
|
||||
}
|
||||
else
|
||||
{
|
||||
PlantsList = new List<PlantDTO>();
|
||||
PlantsList = new List<PlantDetailModel>();
|
||||
}
|
||||
isLoading = false;
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
@using GWMS.UI.Components
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header table-primary">
|
||||
<div class="card-header table-primary px-1">
|
||||
<div class="row">
|
||||
<div class="col-6 col-lg-2 h3">
|
||||
Elenco Ordini
|
||||
@@ -12,7 +12,7 @@
|
||||
<div class="d-flex justify-content-between">
|
||||
<div class="p-2">
|
||||
<div class="form-group mb-0">
|
||||
<Button id="btnReset" class="btn btn-info btn-sm btn-block" Clicked="ResetFilter" title="Reset Filter"><span class="oi oi-loop-circular"></span></Button>
|
||||
<button id="btnReset" class="btn btn-info btn-sm btn-block" @onclick="@ResetFilter" title="Reset Filter"><span class="oi oi-loop-circular"></span></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="p-2">
|
||||
@@ -37,16 +37,12 @@
|
||||
<div class="d-flex justify-content-between">
|
||||
<div class="p-2">
|
||||
<div class="input-group input-group-sm">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">inizio:</span>
|
||||
</div>
|
||||
<span class="input-group-text">
|
||||
<span class="fas fa-calendar"></span>
|
||||
</span>
|
||||
<input class="form-control form-control-sm" type="date" @bind="@DateStart"></input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="p-2">
|
||||
<div class="input-group input-group-sm">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">fine:</span>
|
||||
<span class="input-group-text">→</span>
|
||||
</div>
|
||||
<input class="form-control form-control-sm" type="date" @bind="@DateEnd"></input>
|
||||
</div>
|
||||
@@ -72,10 +68,6 @@
|
||||
}
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="p-2">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">
|
||||
<span class="fas fa-industry" aria-hidden="true"></span>
|
||||
|
||||
@@ -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<SupplierModel> SuppliersList;
|
||||
|
||||
@@ -268,7 +268,7 @@ namespace GWMS.UI.Pages
|
||||
private async Task ReloadData()
|
||||
{
|
||||
isLoading = true;
|
||||
SearchRecords = await DataService.OrdersGetFilt(AppMService.Order_Filter);
|
||||
SearchRecords = await DataService.OrdersGetFiltAsync(AppMService.Order_Filter);
|
||||
ListRecords = SearchRecords.Skip(numRecord * (currPage - 1)).Take(numRecord).ToList();
|
||||
isLoading = false;
|
||||
}
|
||||
@@ -291,9 +291,10 @@ namespace GWMS.UI.Pages
|
||||
currRecord = new OrderModel()
|
||||
{
|
||||
DtOrder = adesso,
|
||||
DtETA = adesso.AddDays(1),
|
||||
PlantId = SelPlantId,
|
||||
SupplierId = SelSupplierId,
|
||||
OrderDesc = $"Ord Man {currPlant.PlantDesc} - {adesso}",
|
||||
OrderDesc = $"Ord Man {currPlant.PlantDesc} - {adesso} | Orders",
|
||||
OrderQty = 1000,
|
||||
TransporterId = 1,
|
||||
OrderCode = $"O{currPlant.PlantCode}{adesso:yyMMddHHmm}",
|
||||
@@ -306,7 +307,7 @@ namespace GWMS.UI.Pages
|
||||
protected void Edit(OrderModel selRecord)
|
||||
{
|
||||
// rileggo dal DB il record corrente...
|
||||
var pUpd = Task.Run(async () => currRecord = await DataService.OrderGetByCode(selRecord.OrderCode));
|
||||
var pUpd = Task.Run(async () => currRecord = await DataService.OrderGetByCodeAsync(selRecord.OrderCode));
|
||||
pUpd.Wait();
|
||||
}
|
||||
|
||||
@@ -333,23 +334,23 @@ namespace GWMS.UI.Pages
|
||||
protected async Task ReloadAllData()
|
||||
{
|
||||
isLoading = true;
|
||||
SuppliersList = await DataService.SuppliersGetAll();
|
||||
SuppliersList = await DataService.SuppliersGetAllAsync();
|
||||
PlantsList = null;
|
||||
await GetClaimsData();
|
||||
// se ho un plantId valido --> altrimenti non abilitato
|
||||
if (ClaimPlantId == 0)
|
||||
{
|
||||
PlantsList = await DataService.PlantsGetAll();
|
||||
PlantsList = await DataService.PlantsListAsync();
|
||||
}
|
||||
else if (ClaimPlantId > 0)
|
||||
{
|
||||
var rawData = await DataService.PlantsGetAll();
|
||||
var rawData = await DataService.PlantsListAsync();
|
||||
PlantsList = rawData.Where(x => x.PlantId == ClaimPlantId).ToList();
|
||||
SelPlantId = ClaimPlantId;
|
||||
}
|
||||
else
|
||||
{
|
||||
PlantsList = new List<PlantDTO>();
|
||||
PlantsList = new List<PlantDetailModel>();
|
||||
}
|
||||
isLoading = false;
|
||||
await ReloadData();
|
||||
|
||||
@@ -28,24 +28,24 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-lg-4 text-right">
|
||||
<div class="d-flex justify-content-between">
|
||||
<div class="p-2">
|
||||
<div class="input-group input-group-sm">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">inizio:</span>
|
||||
</div>
|
||||
<input class="form-control form-control-sm" type="date" @bind="@DateStart"></input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="p-2">
|
||||
<div class="input-group input-group-sm">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">fine:</span>
|
||||
</div>
|
||||
<input class="form-control form-control-sm" type="date" @bind="@DateEnd"></input>
|
||||
<div class="d-flex justify-content-between">
|
||||
<div class="p-2">
|
||||
<div class="input-group input-group-sm">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">inizio:</span>
|
||||
</div>
|
||||
<input class="form-control form-control-sm" type="date" @bind="@DateStart"></input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="p-2">
|
||||
<div class="input-group input-group-sm">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">fine:</span>
|
||||
</div>
|
||||
<input class="form-control form-control-sm" type="date" @bind="@DateEnd"></input>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-lg-4 text-right">
|
||||
<div class="d-flex justify-content-between">
|
||||
@@ -180,9 +180,16 @@
|
||||
</button>
|
||||
}
|
||||
}
|
||||
else if (ShowAddNew && record.HasRefill)
|
||||
else if (record.HasRefill)
|
||||
{
|
||||
<button class="btn btn-sm btn-success" @onclick="() => CreateNew(record)" title="Aggiunta nuovo Ordine"><i class="far fa-calendar-plus"></i></button>
|
||||
if (ShowAddNew)
|
||||
{
|
||||
<button class="btn btn-sm btn-success" @onclick="() => CreateNew(record)" title="Aggiunta nuovo Ordine"><i class="far fa-calendar-plus"></i></button>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="bg-warning text-center p-1 small text-danger" title="Selezionare Fornitore"><i class="fas fa-industry"></i> <i class="fas fa-arrow-up"></i></div>
|
||||
}
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -146,7 +146,7 @@ namespace GWMS.UI.Pages
|
||||
[Inject]
|
||||
protected GWMSDataService DataService { get; set; }
|
||||
|
||||
protected DateTime DateEnd
|
||||
private DateTime DateEnd
|
||||
{
|
||||
get
|
||||
{
|
||||
@@ -168,7 +168,7 @@ namespace GWMS.UI.Pages
|
||||
}
|
||||
}
|
||||
|
||||
protected DateTime DateStart
|
||||
private DateTime DateStart
|
||||
{
|
||||
get
|
||||
{
|
||||
@@ -251,23 +251,13 @@ namespace GWMS.UI.Pages
|
||||
}
|
||||
}
|
||||
|
||||
private void OnDateEndChanged(DateTime? date)
|
||||
{
|
||||
DateEnd = (DateTime)date;
|
||||
}
|
||||
|
||||
private void OnDateStartChanged(DateTime? date)
|
||||
{
|
||||
DateStart = (DateTime)date;
|
||||
}
|
||||
|
||||
private async Task ReloadData()
|
||||
{
|
||||
isLoading = true;
|
||||
ListRecords = null;
|
||||
try
|
||||
{
|
||||
SearchRecords = await DataService.PlantsAnalisysGetByCode(AppMService.Order_Filter);
|
||||
SearchRecords = await DataService.PlantsAnalisysByFiltAsync(AppMService.Order_Filter);
|
||||
SearchRecords = SearchRecords.Where(x => x.HasRefill || !_ShowOnlyRefill).ToList();
|
||||
ListRecords = SearchRecords.Skip(numRecord * (currPage - 1)).Take(numRecord).ToList();
|
||||
}
|
||||
@@ -291,25 +281,26 @@ namespace GWMS.UI.Pages
|
||||
var currSuppl = SuppliersList.Where(x => x.SupplierId == SelSupplierId).FirstOrDefault();
|
||||
if (currPlant != null && currSuppl != null)
|
||||
{
|
||||
DateTime ordDate = currItem.DataRif.AddDays(-1);
|
||||
DateTime ordDate = currItem.DataRif.AddDays(-1).AddHours(1);
|
||||
// calcolo il delta crescita come il delta min * num ore durata fillup...
|
||||
var minIncr = currItem.DeltaMin * (currItem.FillEnd.Subtract(currItem.FillStart).TotalHours);
|
||||
// creo un nuovo record
|
||||
currRecord = new OrderModel()
|
||||
{
|
||||
DtOrder = ordDate,
|
||||
PlantId = SelPlantId,
|
||||
SupplierId = SelSupplierId,
|
||||
OrderDesc = $"Ord Man {currPlant.PlantDesc} - {ordDate}",
|
||||
OrderDesc = $"Ord Man {currPlant.PlantDesc} - {ordDate} | PlantAnalisys",
|
||||
TransporterId = 1,
|
||||
OrderCode = $"O{currPlant.PlantCode}{ordDate:yyMMddHHmm}",
|
||||
LevelStart = Math.Round(currItem.LevelMin),
|
||||
LevelEnd = Math.Round(currItem.LevelMax),
|
||||
DtExecStart = currItem.FillStart,
|
||||
DtExecEnd = currItem.FillEnd,
|
||||
ExecutionQty = Math.Ceiling((currItem.LevelMax - currItem.LevelMin) / currItem.DeltaMin) * currItem.DeltaMin,
|
||||
OrderQty = Math.Ceiling((currItem.LevelMax - currItem.LevelMin) / 2000) * 2000
|
||||
LevelStart = Math.Floor(currItem.LevelMin),
|
||||
LevelEnd = Math.Ceiling(currItem.LevelMax),
|
||||
DtExecStart = currItem.FillStart.AddMinutes(-1),
|
||||
DtETA = currItem.FillStart.AddSeconds(10),
|
||||
DtExecEnd = currItem.FillEnd.AddMinutes(1),
|
||||
ExecutionQty = Math.Ceiling((currItem.LevelMax - currItem.LevelMin + minIncr) / currItem.DeltaMin) * currItem.DeltaMin,
|
||||
OrderQty = Math.Ceiling((currItem.LevelMax - currItem.LevelMin + minIncr) / 2000) * 2000
|
||||
};
|
||||
//// aggiorno filtro
|
||||
//AppMService.Order_Filter = SelectOrderData.Init(5, 10);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -318,7 +309,7 @@ namespace GWMS.UI.Pages
|
||||
// rileggo dal DB il record corrente...
|
||||
var pUpd = Task.Run(async () =>
|
||||
{
|
||||
currRecord = await DataService.OrderGetById(selRecord.OrdersIds.FirstOrDefault());
|
||||
currRecord = await DataService.OrderGetByIdAsync(selRecord.OrdersIds.FirstOrDefault());
|
||||
});
|
||||
pUpd.Wait();
|
||||
}
|
||||
@@ -345,17 +336,17 @@ namespace GWMS.UI.Pages
|
||||
protected async Task ReloadAllData()
|
||||
{
|
||||
isLoading = true;
|
||||
SuppliersList = await DataService.SuppliersGetAll();
|
||||
SuppliersList = await DataService.SuppliersGetAllAsync();
|
||||
PlantsList = null;
|
||||
await GetClaimsData();
|
||||
// se ho un plantId valido --> altrimenti non abilitato
|
||||
if (ClaimPlantId == 0)
|
||||
{
|
||||
PlantsList = await DataService.PlantsGetAll();
|
||||
PlantsList = await DataService.PlantDtoGetAllAsync();
|
||||
}
|
||||
else if (ClaimPlantId > 0)
|
||||
{
|
||||
var rawData = await DataService.PlantsGetAll();
|
||||
var rawData = await DataService.PlantDtoGetAllAsync();
|
||||
PlantsList = rawData.Where(x => x.PlantId == ClaimPlantId).ToList();
|
||||
SelPlantId = ClaimPlantId;
|
||||
}
|
||||
@@ -380,7 +371,7 @@ namespace GWMS.UI.Pages
|
||||
SearchRecords = null;
|
||||
ListRecords = null;
|
||||
AppMService.Order_Filter = SelectOrderData.Init(5, 10);
|
||||
await DataService.PlantsAnalisysReset(AppMService.Order_Filter);
|
||||
await DataService.PlantsAnalisysResetAsync(AppMService.Order_Filter);
|
||||
await ReloadAllData();
|
||||
}
|
||||
|
||||
@@ -393,7 +384,7 @@ namespace GWMS.UI.Pages
|
||||
protected async Task UpdateData()
|
||||
{
|
||||
currRecord = null;
|
||||
await DataService.PlantsAnalisysReset(AppMService.Order_Filter);
|
||||
await DataService.PlantsAnalisysResetAsync(AppMService.Order_Filter);
|
||||
await ReloadData();
|
||||
}
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
{
|
||||
<tr class="@checkSelect(@record.uid)">
|
||||
<td class="text-nowrap">
|
||||
@if (record.writable)
|
||||
@if (record.writable || editAll)
|
||||
{
|
||||
if (currRecord == null)
|
||||
{
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using GWMS.Data.DTO;
|
||||
using GWMS.Data.DatabaseModels;
|
||||
using GWMS.UI.Data;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
@@ -17,30 +17,168 @@ namespace GWMS.UI.Pages
|
||||
[Authorize(Roles = "SuperAdmin, Admin, User")]
|
||||
public partial class PlantParameters : ComponentBase, IDisposable
|
||||
{
|
||||
#region Public Methods
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
aTimer.Stop();
|
||||
aTimer.Dispose();
|
||||
AppMService.EA_SearchUpdated -= OnSeachUpdated;
|
||||
}
|
||||
|
||||
public async void OnSeachUpdated()
|
||||
{
|
||||
await UpdateData();
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
|
||||
#region Protected Properties
|
||||
|
||||
[Inject]
|
||||
protected IJSRuntime JSRuntime { get; set; }
|
||||
|
||||
[Inject]
|
||||
protected NavigationManager NavManager { get; set; }
|
||||
|
||||
protected int totalCount
|
||||
{
|
||||
get
|
||||
{
|
||||
int answ = 0;
|
||||
if (ListRecords != null)
|
||||
{
|
||||
answ = ListRecords.Count;
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Protected Properties
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
protected void ElapsedTimer(Object source, System.Timers.ElapsedEventArgs e)
|
||||
{
|
||||
var pUpd = Task.Run(async () =>
|
||||
{
|
||||
await ReloadData();
|
||||
await InvokeAsync(StateHasChanged);
|
||||
});
|
||||
pUpd.Wait();
|
||||
}
|
||||
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
var currMode = GetQueryParm("currMode");
|
||||
if (!string.IsNullOrWhiteSpace(currMode))
|
||||
{
|
||||
editAll = currMode.Equals("debug");
|
||||
}
|
||||
}
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
AppMService.ShowSearch = false;
|
||||
AppMService.PageName = "Parametri Impianto";
|
||||
AppMService.PageIcon = "fas fa-folder-open pr-2";
|
||||
AppMService.EA_SearchUpdated += OnSeachUpdated;
|
||||
StartTimer();
|
||||
await ReloadAllData();
|
||||
}
|
||||
|
||||
protected void StartTimer()
|
||||
{
|
||||
int tOutPeriod = 3000;
|
||||
int.TryParse(Configuration["ReloadParamTimer"], out tOutPeriod);
|
||||
aTimer = new System.Timers.Timer(tOutPeriod);
|
||||
aTimer.Elapsed += ElapsedTimer;
|
||||
aTimer.Enabled = true;
|
||||
aTimer.Start();
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Private Fields
|
||||
|
||||
private static System.Timers.Timer aTimer;
|
||||
|
||||
private static NLog.Logger Log = LogManager.GetCurrentClassLogger();
|
||||
private objItem currRecord = null;
|
||||
private List<objItem> ListRecords;
|
||||
private List<PlantDTO> PlantsList;
|
||||
|
||||
#endregion Private Fields
|
||||
|
||||
#region Protected Fields
|
||||
|
||||
/// <summary>
|
||||
/// Valore PlantId filtrato da claim
|
||||
/// </summary>
|
||||
protected int ClaimPlantId = -1;
|
||||
private int ClaimPlantId = -1;
|
||||
|
||||
#endregion Protected Fields
|
||||
private objItem currRecord = null;
|
||||
|
||||
private bool editAll = false;
|
||||
|
||||
private List<objItem> ListRecords;
|
||||
|
||||
private List<PlantDetailModel> PlantsList;
|
||||
|
||||
#endregion Private Fields
|
||||
|
||||
#region Private Properties
|
||||
|
||||
[Inject]
|
||||
private MessageService AppMService { get; set; }
|
||||
|
||||
[Inject]
|
||||
private AuthenticationStateProvider AuthenticationStateProvider { get; set; }
|
||||
|
||||
[Inject]
|
||||
private IConfiguration Configuration { get; set; }
|
||||
|
||||
[Inject]
|
||||
private GWMSDataService DataService { get; set; }
|
||||
|
||||
private DateTime DateEnd
|
||||
{
|
||||
get
|
||||
{
|
||||
DateTime answ = DateTime.Today.AddDays(1);
|
||||
if (AppMService.Order_Filter != null)
|
||||
{
|
||||
answ = AppMService.Order_Filter.DateEnd;
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!AppMService.Order_Filter.DateEnd.Equals(value))
|
||||
{
|
||||
AppMService.Order_Filter.DateEnd = value;
|
||||
var pUpd = Task.Run(async () => await ReloadData());
|
||||
pUpd.Wait();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private DateTime DateStart
|
||||
{
|
||||
get
|
||||
{
|
||||
DateTime answ = DateTime.Today.AddDays(-1);
|
||||
if (AppMService.Order_Filter != null)
|
||||
{
|
||||
answ = AppMService.Order_Filter.DateStart;
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!AppMService.Order_Filter.DateStart.Equals(value))
|
||||
{
|
||||
AppMService.Order_Filter.DateStart = value;
|
||||
var pUpd = Task.Run(async () => await ReloadData());
|
||||
pUpd.Wait();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private bool isLoading { get; set; } = false;
|
||||
|
||||
private string SelPlantCode
|
||||
@@ -84,98 +222,33 @@ namespace GWMS.UI.Pages
|
||||
|
||||
#endregion Private Properties
|
||||
|
||||
#region Protected Properties
|
||||
|
||||
[Inject]
|
||||
protected MessageService AppMService { get; set; }
|
||||
|
||||
[Inject]
|
||||
protected AuthenticationStateProvider AuthenticationStateProvider { get; set; }
|
||||
|
||||
[Inject]
|
||||
protected GWMSDataService DataService { get; set; }
|
||||
|
||||
protected DateTime DateEnd
|
||||
{
|
||||
get
|
||||
{
|
||||
DateTime answ = DateTime.Today.AddDays(1);
|
||||
if (AppMService.Order_Filter != null)
|
||||
{
|
||||
answ = AppMService.Order_Filter.DateEnd;
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!AppMService.Order_Filter.DateEnd.Equals(value))
|
||||
{
|
||||
AppMService.Order_Filter.DateEnd = value;
|
||||
var pUpd = Task.Run(async () => await ReloadData());
|
||||
pUpd.Wait();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected DateTime DateStart
|
||||
{
|
||||
get
|
||||
{
|
||||
DateTime answ = DateTime.Today.AddDays(-1);
|
||||
if (AppMService.Order_Filter != null)
|
||||
{
|
||||
answ = AppMService.Order_Filter.DateStart;
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!AppMService.Order_Filter.DateStart.Equals(value))
|
||||
{
|
||||
AppMService.Order_Filter.DateStart = value;
|
||||
var pUpd = Task.Run(async () => await ReloadData());
|
||||
pUpd.Wait();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected bool editAll
|
||||
{
|
||||
get
|
||||
{
|
||||
bool answ = false;
|
||||
var currMode = GetQueryParm("currMode");
|
||||
if (!string.IsNullOrEmpty(currMode))
|
||||
{
|
||||
answ = currMode.Equals("debug");
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
|
||||
[Inject]
|
||||
protected IJSRuntime JSRuntime { get; set; }
|
||||
|
||||
[Inject]
|
||||
protected NavigationManager NavManager { get; set; }
|
||||
|
||||
protected int totalCount
|
||||
{
|
||||
get
|
||||
{
|
||||
int answ = 0;
|
||||
if (ListRecords != null)
|
||||
{
|
||||
answ = ListRecords.Count;
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Protected Properties
|
||||
|
||||
#region Private Methods
|
||||
|
||||
private string checkSelect(string uid)
|
||||
{
|
||||
string answ = "";
|
||||
if (currRecord != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
answ = (currRecord.uid == uid) ? "table-info" : "";
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
private void Edit(objItem selRecord)
|
||||
{
|
||||
currRecord = selRecord;
|
||||
}
|
||||
|
||||
private async Task ForceReload()
|
||||
{
|
||||
await ReloadData();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Recupero Claims dell'utente...
|
||||
///
|
||||
@@ -200,6 +273,38 @@ namespace GWMS.UI.Pages
|
||||
}
|
||||
}
|
||||
|
||||
// Blazor: get query parm from the URL
|
||||
private string GetQueryParm(string parmName)
|
||||
{
|
||||
var uriBuilder = new UriBuilder(NavManager.Uri);
|
||||
var q = System.Web.HttpUtility.ParseQueryString(uriBuilder.Query);
|
||||
return q[parmName] ?? "";
|
||||
}
|
||||
|
||||
private async Task ReloadAllData()
|
||||
{
|
||||
isLoading = true;
|
||||
PlantsList = null;
|
||||
await GetClaimsData();
|
||||
// se ho un plantId valido --> altrimenti non abilitato
|
||||
if (ClaimPlantId == 0)
|
||||
{
|
||||
PlantsList = await DataService.PlantsListAsync();
|
||||
}
|
||||
else if (ClaimPlantId > 0)
|
||||
{
|
||||
var rawData = await DataService.PlantsListAsync();
|
||||
PlantsList = rawData.Where(x => x.PlantId == ClaimPlantId).ToList();
|
||||
SelPlantId = ClaimPlantId;
|
||||
}
|
||||
else
|
||||
{
|
||||
PlantsList = new List<PlantDetailModel>();
|
||||
}
|
||||
isLoading = false;
|
||||
await ReloadData();
|
||||
}
|
||||
|
||||
private async Task ReloadData()
|
||||
{
|
||||
isLoading = true;
|
||||
@@ -215,145 +320,37 @@ namespace GWMS.UI.Pages
|
||||
isLoading = false;
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
protected void Edit(objItem selRecord)
|
||||
{
|
||||
currRecord = selRecord;
|
||||
}
|
||||
|
||||
protected async Task ForceReload()
|
||||
{
|
||||
await ReloadData();
|
||||
}
|
||||
|
||||
// Blazor: get query parm from the URL
|
||||
protected string GetQueryParm(string parmName)
|
||||
{
|
||||
var uriBuilder = new UriBuilder(NavManager.Uri);
|
||||
var q = System.Web.HttpUtility.ParseQueryString(uriBuilder.Query);
|
||||
return q[parmName] ?? "";
|
||||
}
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
AppMService.ShowSearch = false;
|
||||
AppMService.PageName = "Parametri Impianto";
|
||||
AppMService.PageIcon = "fas fa-folder-open pr-2";
|
||||
AppMService.EA_SearchUpdated += OnSeachUpdated;
|
||||
StartTimer();
|
||||
await ReloadAllData();
|
||||
}
|
||||
|
||||
protected async Task ReloadAllData()
|
||||
{
|
||||
isLoading = true;
|
||||
PlantsList = null;
|
||||
await GetClaimsData();
|
||||
// se ho un plantId valido --> altrimenti non abilitato
|
||||
if (ClaimPlantId == 0)
|
||||
{
|
||||
PlantsList = await DataService.PlantsGetAll();
|
||||
}
|
||||
else if (ClaimPlantId > 0)
|
||||
{
|
||||
var rawData = await DataService.PlantsGetAll();
|
||||
PlantsList = rawData.Where(x => x.PlantId == ClaimPlantId).ToList();
|
||||
SelPlantId = ClaimPlantId;
|
||||
}
|
||||
else
|
||||
{
|
||||
PlantsList = new List<PlantDTO>();
|
||||
}
|
||||
isLoading = false;
|
||||
await ReloadData();
|
||||
}
|
||||
|
||||
protected async Task RemoveItem(objItem selRecord)
|
||||
private async Task RemoveItem(objItem selRecord)
|
||||
{
|
||||
if (!await JSRuntime.InvokeAsync<bool>("confirm", $"Sicuro di voler rimuovere il parametro {selRecord.uid} ({selRecord.name})?"))
|
||||
return;
|
||||
|
||||
if (selRecord != null)
|
||||
{
|
||||
await DataService.remObjItem(SelPlantCode, selRecord);
|
||||
await DataService.RemObjItemAsync(SelPlantCode, selRecord);
|
||||
}
|
||||
await ReloadAllData();
|
||||
}
|
||||
|
||||
protected void ResetData()
|
||||
private void ResetData()
|
||||
{
|
||||
DataService.rollBackEdit(currRecord);
|
||||
currRecord = null;
|
||||
}
|
||||
|
||||
protected void Select(objItem selRecord)
|
||||
private void Select(objItem selRecord)
|
||||
{
|
||||
// applico filtro da selezione
|
||||
currRecord = selRecord;
|
||||
}
|
||||
|
||||
protected async Task UpdateData()
|
||||
private async Task UpdateData()
|
||||
{
|
||||
currRecord = null;
|
||||
await DataService.PlantsAnalisysReset(AppMService.Order_Filter);
|
||||
await DataService.PlantsAnalisysResetAsync(AppMService.Order_Filter);
|
||||
await ReloadData();
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Public Methods
|
||||
|
||||
public string checkSelect(string uid)
|
||||
{
|
||||
string answ = "";
|
||||
if (currRecord != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
answ = (currRecord.uid == uid) ? "table-info" : "";
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
aTimer.Stop();
|
||||
aTimer.Dispose();
|
||||
AppMService.EA_SearchUpdated -= OnSeachUpdated;
|
||||
}
|
||||
|
||||
public void ElapsedTimer(Object source, System.Timers.ElapsedEventArgs e)
|
||||
{
|
||||
var pUpd = Task.Run(async () =>
|
||||
{
|
||||
await ReloadData();
|
||||
await InvokeAsync(StateHasChanged);
|
||||
});
|
||||
pUpd.Wait();
|
||||
}
|
||||
|
||||
public async void OnSeachUpdated()
|
||||
{
|
||||
await UpdateData();
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
public void StartTimer()
|
||||
{
|
||||
int tOutPeriod = 3000;
|
||||
int.TryParse(Configuration["ReloadParamTimer"], out tOutPeriod);
|
||||
aTimer = new System.Timers.Timer(tOutPeriod);
|
||||
aTimer.Elapsed += ElapsedTimer;
|
||||
aTimer.Enabled = true;
|
||||
aTimer.Start();
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
#endregion Private Methods
|
||||
}
|
||||
}
|
||||
@@ -14,13 +14,28 @@ namespace GWMS.UI.Pages
|
||||
[Authorize(Roles = "SuperAdmin, Admin")]
|
||||
public partial class PlantSetup : ComponentBase, IDisposable
|
||||
{
|
||||
#region Private Fields
|
||||
#region Public Methods
|
||||
|
||||
private PlantDTO currRecord = null;
|
||||
public string checkSelect(int PlantId)
|
||||
{
|
||||
string answ = "";
|
||||
if (currRecord != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
answ = (currRecord.PlantId == PlantId) ? "table-info" : "";
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
private List<PlantDTO> ListRecords;
|
||||
public void Dispose()
|
||||
{
|
||||
}
|
||||
|
||||
#endregion Private Fields
|
||||
#endregion Public Methods
|
||||
|
||||
#region Protected Fields
|
||||
|
||||
@@ -64,6 +79,46 @@ namespace GWMS.UI.Pages
|
||||
|
||||
#endregion Protected Properties
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
protected void Edit(PlantDTO selRecord)
|
||||
{
|
||||
// rileggo dal DB il record corrente...
|
||||
var pUpd = Task.Run(async () => currRecord = await DataService.PlantDtoGetByCodeAsync(selRecord.PlantCode));
|
||||
pUpd.Wait();
|
||||
}
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
AppMService.ShowSearch = false;
|
||||
AppMService.PageName = "Setup Impianti";
|
||||
AppMService.PageIcon = "fas fa-wrench pr-2";
|
||||
await ReloadAllData();
|
||||
}
|
||||
|
||||
protected void ResetData()
|
||||
{
|
||||
DataService.rollBackEdit(currRecord);
|
||||
currRecord = null;
|
||||
}
|
||||
|
||||
protected async Task UpdateData()
|
||||
{
|
||||
currRecord = null;
|
||||
await DataService.FlushRedisCache();
|
||||
await ReloadAllData();
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Private Fields
|
||||
|
||||
private PlantDTO currRecord = null;
|
||||
|
||||
private List<PlantDTO> ListRecords;
|
||||
|
||||
#endregion Private Fields
|
||||
|
||||
#region Private Methods
|
||||
|
||||
/// <summary>
|
||||
@@ -97,11 +152,11 @@ namespace GWMS.UI.Pages
|
||||
// se ho un plantId valido --> altrimenti non abilitato
|
||||
if (ClaimPlantId == 0)
|
||||
{
|
||||
ListRecords = await DataService.PlantsGetAll();
|
||||
ListRecords = await DataService.PlantDtoGetAllAsync();
|
||||
}
|
||||
else if (ClaimPlantId > 0)
|
||||
{
|
||||
var rawData = await DataService.PlantsGetAll();
|
||||
var rawData = await DataService.PlantDtoGetAllAsync();
|
||||
ListRecords = rawData.Where(x => x.PlantId == ClaimPlantId).ToList();
|
||||
}
|
||||
else
|
||||
@@ -111,60 +166,5 @@ namespace GWMS.UI.Pages
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
protected void Edit(PlantDTO selRecord)
|
||||
{
|
||||
// rileggo dal DB il record corrente...
|
||||
var pUpd = Task.Run(async () => currRecord = await DataService.PlantsGetByCode(selRecord.PlantCode));
|
||||
pUpd.Wait();
|
||||
}
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
AppMService.ShowSearch = false;
|
||||
AppMService.PageName = "Setup Impianti";
|
||||
AppMService.PageIcon = "fas fa-wrench pr-2";
|
||||
await ReloadAllData();
|
||||
}
|
||||
|
||||
protected void ResetData()
|
||||
{
|
||||
DataService.rollBackEdit(currRecord);
|
||||
currRecord = null;
|
||||
}
|
||||
|
||||
protected async Task UpdateData()
|
||||
{
|
||||
currRecord = null;
|
||||
await DataService.InvalidateAllCache();
|
||||
await ReloadAllData();
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Public Methods
|
||||
|
||||
public string checkSelect(int PlantId)
|
||||
{
|
||||
string answ = "";
|
||||
if (currRecord != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
answ = (currRecord.PlantId == PlantId) ? "table-info" : "";
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
}
|
||||
}
|
||||
@@ -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.PlantDtoGetAllAsync();
|
||||
}
|
||||
else if (ClaimPlantId > 0)
|
||||
{
|
||||
var rawData = await DataService.PlantsGetAll();
|
||||
var rawData = await DataService.PlantDtoGetAllAsync();
|
||||
ListRecords = rawData.Where(x => x.PlantId == ClaimPlantId).ToList();
|
||||
}
|
||||
else
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
await DataService.InvalidateAllCache();
|
||||
await DataService.FlushRedisCache();
|
||||
|
||||
NavManager.NavigateTo("Index");
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
||||
<link rel="manifest" href="/site.webmanifest">
|
||||
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="~/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="~/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="~/favicon-16x16.png">
|
||||
<link rel="manifest" href="~/site.webmanifest">
|
||||
<link rel="mask-icon" href="~/safari-pinned-tab.svg" color="#5bbad5">
|
||||
<meta name="msapplication-TileColor" content="#da532c">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
@@ -10,19 +10,18 @@
|
||||
Ordini Fornitore
|
||||
</div>
|
||||
<div class="col-12 col-lg-4 text-right">
|
||||
|
||||
<div class="d-flex justify-content-between">
|
||||
<div class="p-2">
|
||||
<div class="input-group input-group-sm">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">inizio:</span>
|
||||
<span class="input-group-text">
|
||||
<span class="fas fa-calendar"></span>
|
||||
</span>
|
||||
</div>
|
||||
<input class="form-control form-control-sm" type="date" @bind="@DateStart"></input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="p-2">
|
||||
<div class="input-group input-group-sm">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">fine:</span>
|
||||
<span class="input-group-text">→</span>
|
||||
</div>
|
||||
<input class="form-control form-control-sm" type="date" @bind="@DateEnd"></input>
|
||||
</div>
|
||||
@@ -48,10 +47,6 @@
|
||||
}
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="p-2">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">
|
||||
<span class="fas fa-industry" aria-hidden="true"></span>
|
||||
|
||||
+231
-204
@@ -15,16 +15,42 @@ namespace GWMS.UI.Pages
|
||||
[Authorize(Roles = "SuperAdmin, Admin, ExtUser")]
|
||||
public partial class Suppliers : ComponentBase, IDisposable
|
||||
{
|
||||
#region Private Fields
|
||||
#region Public Properties
|
||||
|
||||
private OrderModel currRecord = null;
|
||||
[Parameter]
|
||||
public string SupplierIdReq { get; set; } = "";
|
||||
|
||||
private List<OrderModel> ListRecords;
|
||||
private List<PlantDTO> PlantsList;
|
||||
private List<OrderModel> SearchRecords;
|
||||
private List<SupplierModel> SuppliersList;
|
||||
#endregion Public Properties
|
||||
|
||||
#endregion Private Fields
|
||||
#region Public Methods
|
||||
|
||||
public string checkSelect(int OrderId)
|
||||
{
|
||||
string answ = "";
|
||||
if (currRecord != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
answ = (currRecord.OrderId == OrderId) ? "table-info" : "";
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
AppMService.EA_SearchUpdated -= OnSeachUpdated;
|
||||
}
|
||||
|
||||
public async void OnSeachUpdated()
|
||||
{
|
||||
await UpdateData();
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
|
||||
#region Protected Fields
|
||||
|
||||
@@ -35,6 +61,181 @@ namespace GWMS.UI.Pages
|
||||
|
||||
#endregion Protected Fields
|
||||
|
||||
#region Protected Properties
|
||||
|
||||
[Inject]
|
||||
protected MessageService AppMService { get; set; }
|
||||
|
||||
[Inject]
|
||||
protected AuthenticationStateProvider AuthenticationStateProvider { get; set; }
|
||||
|
||||
[Inject]
|
||||
protected GWMSDataService DataService { get; set; }
|
||||
|
||||
protected DateTime DateEnd
|
||||
{
|
||||
get
|
||||
{
|
||||
DateTime answ = DateTime.Today.AddDays(1);
|
||||
if (AppMService.Order_Filter != null)
|
||||
{
|
||||
answ = AppMService.Order_Filter.DateEnd;
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!AppMService.Order_Filter.DateEnd.Equals(value))
|
||||
{
|
||||
AppMService.Order_Filter.DateEnd = value;
|
||||
var pUpd = Task.Run(async () => await ReloadData());
|
||||
pUpd.Wait();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected DateTime DateStart
|
||||
{
|
||||
get
|
||||
{
|
||||
DateTime answ = DateTime.Today.AddDays(-1);
|
||||
if (AppMService.Order_Filter != null)
|
||||
{
|
||||
answ = AppMService.Order_Filter.DateStart;
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!AppMService.Order_Filter.DateStart.Equals(value))
|
||||
{
|
||||
AppMService.Order_Filter.DateStart = value;
|
||||
var pUpd = Task.Run(async () => await ReloadData());
|
||||
pUpd.Wait();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Inject]
|
||||
protected IJSRuntime JSRuntime { get; set; }
|
||||
|
||||
[Inject]
|
||||
protected NavigationManager NavManager { get; set; }
|
||||
|
||||
protected int totalCount
|
||||
{
|
||||
get
|
||||
{
|
||||
int answ = 0;
|
||||
if (SearchRecords != null)
|
||||
{
|
||||
answ = SearchRecords.Count;
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Protected Properties
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
protected void Edit(OrderModel selRecord)
|
||||
{
|
||||
// rileggo dal DB il record corrente...
|
||||
var pUpd = Task.Run(async () => currRecord = await DataService.OrderGetByCodeAsync(selRecord.OrderCode));
|
||||
pUpd.Wait();
|
||||
}
|
||||
|
||||
protected void ForceReload(int newNum)
|
||||
{
|
||||
numRecord = newNum;
|
||||
}
|
||||
|
||||
protected void ForceReloadPage(int newNum)
|
||||
{
|
||||
currPage = newNum;
|
||||
}
|
||||
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
AppMService.ShowSearch = false;
|
||||
AppMService.PageName = "Fornitore";
|
||||
AppMService.PageIcon = "fas fa-industry pr-2";
|
||||
AppMService.EA_SearchUpdated += OnSeachUpdated;
|
||||
}
|
||||
|
||||
protected override async Task OnParametersSetAsync()
|
||||
{
|
||||
ShowClosed = false;
|
||||
await ReloadAllData();
|
||||
}
|
||||
|
||||
protected async Task ReloadAllData()
|
||||
{
|
||||
isLoading = true;
|
||||
PlantsList = await DataService.PlantsListAsync();
|
||||
SelSupplierId = 0;
|
||||
SuppliersList = null;
|
||||
await GetClaimsData();
|
||||
// se ho un plantId valido --> altrimenti non abilitato
|
||||
if (ClaimSupplierId == 0)
|
||||
{
|
||||
SuppliersList = await DataService.SuppliersGetAllAsync();
|
||||
}
|
||||
else if (ClaimSupplierId > 0)
|
||||
{
|
||||
var rawData = await DataService.SuppliersGetAllAsync();
|
||||
SuppliersList = rawData.Where(x => x.SupplierId == ClaimSupplierId).ToList();
|
||||
SelSupplierId = ClaimSupplierId;
|
||||
}
|
||||
else
|
||||
{
|
||||
PlantsList = new List<PlantDetailModel>();
|
||||
}
|
||||
isLoading = false;
|
||||
await ReloadData();
|
||||
}
|
||||
|
||||
protected void ResetData()
|
||||
{
|
||||
DataService.rollBackEdit(currRecord);
|
||||
currRecord = null;
|
||||
}
|
||||
|
||||
protected async Task ResetFilter(SelectOrderData newFilter)
|
||||
{
|
||||
currRecord = null;
|
||||
SearchRecords = null;
|
||||
ListRecords = null;
|
||||
AppMService.Order_Filter = SelectOrderData.Init(5, 7);
|
||||
await ReloadAllData();
|
||||
}
|
||||
|
||||
protected void Select(OrderModel selRecord)
|
||||
{
|
||||
// applico filtro da selezione
|
||||
currRecord = selRecord;
|
||||
}
|
||||
|
||||
protected async Task UpdateData()
|
||||
{
|
||||
currRecord = null;
|
||||
await ReloadData();
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Private Fields
|
||||
|
||||
private OrderModel currRecord = null;
|
||||
|
||||
private List<OrderModel> ListRecords;
|
||||
private List<PlantDetailModel> PlantsList;
|
||||
private List<OrderModel> SearchRecords;
|
||||
private List<SupplierModel> SuppliersList;
|
||||
|
||||
#endregion Private Fields
|
||||
|
||||
#region Private Properties
|
||||
|
||||
private int _currPage { get; set; } = 1;
|
||||
@@ -115,91 +316,30 @@ namespace GWMS.UI.Pages
|
||||
}
|
||||
}
|
||||
|
||||
private bool ShowClosed
|
||||
{
|
||||
get
|
||||
{
|
||||
bool answ = true;
|
||||
if (AppMService.Order_Filter != null)
|
||||
{
|
||||
answ = AppMService.Order_Filter.ShowClosed;
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!AppMService.Order_Filter.ShowClosed.Equals(value))
|
||||
{
|
||||
AppMService.Order_Filter.ShowClosed = value;
|
||||
var pUpd = Task.Run(async () => await ReloadData());
|
||||
pUpd.Wait();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Private Properties
|
||||
|
||||
#region Protected Properties
|
||||
|
||||
[Inject]
|
||||
protected MessageService AppMService { get; set; }
|
||||
|
||||
[Inject]
|
||||
protected AuthenticationStateProvider AuthenticationStateProvider { get; set; }
|
||||
|
||||
[Inject]
|
||||
protected GWMSDataService DataService { get; set; }
|
||||
|
||||
protected DateTime DateEnd
|
||||
{
|
||||
get
|
||||
{
|
||||
DateTime answ = DateTime.Today.AddDays(1);
|
||||
if (AppMService.Order_Filter != null)
|
||||
{
|
||||
answ = AppMService.Order_Filter.DateEnd;
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!AppMService.Order_Filter.DateEnd.Equals(value))
|
||||
{
|
||||
AppMService.Order_Filter.DateEnd = value;
|
||||
var pUpd = Task.Run(async () => await ReloadData());
|
||||
pUpd.Wait();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected DateTime DateStart
|
||||
{
|
||||
get
|
||||
{
|
||||
DateTime answ = DateTime.Today.AddDays(-1);
|
||||
if (AppMService.Order_Filter != null)
|
||||
{
|
||||
answ = AppMService.Order_Filter.DateStart;
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!AppMService.Order_Filter.DateStart.Equals(value))
|
||||
{
|
||||
AppMService.Order_Filter.DateStart = value;
|
||||
var pUpd = Task.Run(async () => await ReloadData());
|
||||
pUpd.Wait();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Inject]
|
||||
protected IJSRuntime JSRuntime { get; set; }
|
||||
|
||||
[Inject]
|
||||
protected NavigationManager NavManager { get; set; }
|
||||
|
||||
protected int totalCount
|
||||
{
|
||||
get
|
||||
{
|
||||
int answ = 0;
|
||||
if (SearchRecords != null)
|
||||
{
|
||||
answ = SearchRecords.Count;
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Protected Properties
|
||||
|
||||
#region Public Properties
|
||||
|
||||
[Parameter]
|
||||
public string SupplierIdReq { get; set; } = "";
|
||||
|
||||
#endregion Public Properties
|
||||
|
||||
#region Private Methods
|
||||
|
||||
/// <summary>
|
||||
@@ -239,124 +379,11 @@ namespace GWMS.UI.Pages
|
||||
private async Task ReloadData()
|
||||
{
|
||||
isLoading = true;
|
||||
SearchRecords = await DataService.OrdersGetFilt(AppMService.Order_Filter);
|
||||
SearchRecords = await DataService.OrdersGetFiltAsync(AppMService.Order_Filter);
|
||||
ListRecords = SearchRecords.Skip(numRecord * (currPage - 1)).Take(numRecord).ToList();
|
||||
isLoading = false;
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
protected void Edit(OrderModel selRecord)
|
||||
{
|
||||
// rileggo dal DB il record corrente...
|
||||
var pUpd = Task.Run(async () => currRecord = await DataService.OrderGetByCode(selRecord.OrderCode));
|
||||
pUpd.Wait();
|
||||
}
|
||||
|
||||
protected void ForceReload(int newNum)
|
||||
{
|
||||
numRecord = newNum;
|
||||
}
|
||||
|
||||
protected void ForceReloadPage(int newNum)
|
||||
{
|
||||
currPage = newNum;
|
||||
}
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
AppMService.ShowSearch = false;
|
||||
AppMService.PageName = "Fornitore";
|
||||
AppMService.PageIcon = "fas fa-industry pr-2";
|
||||
AppMService.EA_SearchUpdated += OnSeachUpdated;
|
||||
await ReloadAllData();
|
||||
}
|
||||
|
||||
protected async Task ReloadAllData()
|
||||
{
|
||||
isLoading = true;
|
||||
PlantsList = await DataService.PlantsGetAll();
|
||||
SelSupplierId = 0;
|
||||
SuppliersList = null;
|
||||
await GetClaimsData();
|
||||
// se ho un plantId valido --> altrimenti non abilitato
|
||||
if (ClaimSupplierId == 0)
|
||||
{
|
||||
SuppliersList = await DataService.SuppliersGetAll();
|
||||
}
|
||||
else if (ClaimSupplierId > 0)
|
||||
{
|
||||
var rawData = await DataService.SuppliersGetAll();
|
||||
SuppliersList = rawData.Where(x => x.SupplierId == ClaimSupplierId).ToList();
|
||||
SelSupplierId = ClaimSupplierId;
|
||||
}
|
||||
else
|
||||
{
|
||||
PlantsList = new List<PlantDTO>();
|
||||
}
|
||||
isLoading = false;
|
||||
await ReloadData();
|
||||
}
|
||||
|
||||
protected void ResetData()
|
||||
{
|
||||
DataService.rollBackEdit(currRecord);
|
||||
currRecord = null;
|
||||
}
|
||||
|
||||
protected async Task ResetFilter(SelectOrderData newFilter)
|
||||
{
|
||||
currRecord = null;
|
||||
SearchRecords = null;
|
||||
ListRecords = null;
|
||||
AppMService.Order_Filter = SelectOrderData.Init(5, 7);
|
||||
await ReloadAllData();
|
||||
}
|
||||
|
||||
protected void Select(OrderModel selRecord)
|
||||
{
|
||||
// applico filtro da selezione
|
||||
currRecord = selRecord;
|
||||
}
|
||||
|
||||
protected async Task UpdateData()
|
||||
{
|
||||
currRecord = null;
|
||||
await ReloadData();
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Public Methods
|
||||
|
||||
public string checkSelect(int OrderId)
|
||||
{
|
||||
string answ = "";
|
||||
if (currRecord != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
answ = (currRecord.OrderId == OrderId) ? "table-info" : "";
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
AppMService.EA_SearchUpdated -= OnSeachUpdated;
|
||||
}
|
||||
|
||||
public async void OnSeachUpdated()
|
||||
{
|
||||
await UpdateData();
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
}
|
||||
}
|
||||
@@ -90,7 +90,7 @@ namespace GWMS.UI.Pages
|
||||
|
||||
protected async Task SendEmail()
|
||||
{
|
||||
await DataService.TestSendEmail(emailDest, emailOggetto, emailCorpo);
|
||||
await DataService.TestSendEmailAsync(emailDest, emailOggetto, emailCorpo);
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
@@ -3,86 +3,92 @@
|
||||
@using GWMS.UI.Components
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header table-primary pb-0 mb-0">
|
||||
<div class="card-header table-primary pb-0 mb-0 px-1">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="row">
|
||||
<div class="col-6 pr-0 col-lg-8 h3 mb-0">
|
||||
<div class="d-flex justify-content-between">
|
||||
<div class="px-1 h3">
|
||||
Consegne
|
||||
</div>
|
||||
<div class="col-6 col-lg-4">
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<button class="btn btn-sm btn-block btn-secondary" @onclick="() => ToggleFiltPeriod()"><i class="far fa-calendar-alt"></i> <i class="@icnFiltTime"></i></button>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<button class="btn btn-sm btn-block btn-secondary" @onclick="() => ToggleFiltDest()"><i class="fas fa-gas-pump"></i> <i class="@icnFiltDest"></i></button>
|
||||
</div>
|
||||
<div class="px-1">
|
||||
<div class="d-flex">
|
||||
@if (!showFiltTime)
|
||||
{
|
||||
<div class="px-1">
|
||||
<button class="btn btn-sm btn-primary px-4" @onclick="() => ToggleFiltPeriod()"><i class="far fa-calendar-alt"></i> <i class="fas fas fa-chevron-down"></i></button>
|
||||
</div>
|
||||
}
|
||||
@if (!showFiltDest)
|
||||
{
|
||||
<div class="px-1">
|
||||
<button class="btn btn-sm btn-primary px-4" @onclick="() => ToggleFiltDest()"><i class="fas fa-gas-pump"></i> <i class="fas fas fa-chevron-down"></i></button>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 text-right">
|
||||
<div class="d-flex small mb-1">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">
|
||||
<span class="fas fa-truck-moving" aria-hidden="true"></span>
|
||||
</span>
|
||||
</div>
|
||||
<select @bind="SelTranspId" class="form-control form-control-sm" title="Trasportatore">
|
||||
<option value="0">--- Tutti ---</option>
|
||||
@if (TransportersList != null)
|
||||
{
|
||||
foreach (var item in TransportersList)
|
||||
{
|
||||
<option value="@item.TransporterId">@item.TransporterCode | @item.TransporterDesc</option>
|
||||
}
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
@if (showFiltTime)
|
||||
{
|
||||
<div class="row small">
|
||||
<div class="col-6">
|
||||
<div class="input-group input-group-sm">
|
||||
<input class="form-control form-control-sm" type="date" @bind="@DateStart"></input>
|
||||
<div class="d-flex small mb-1">
|
||||
<div class="input-group input-group-sm">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">
|
||||
<span class="fas fa-calendar"></span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<div class="input-group input-group-sm">
|
||||
<input class="form-control form-control-sm" type="date" @bind="@DateEnd"></input>
|
||||
<input class="form-control form-control-sm" type="date" @bind="@DateStart"></input>
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">→</span>
|
||||
</div>
|
||||
<input class="form-control form-control-sm" type="date" @bind="@DateEnd"></input>
|
||||
<button class="btn btn-sm btn-info" @onclick="() => ToggleFiltPeriod()"><i class="far fa-calendar-alt"></i> <i class="fas fa-chevron-up"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if (showFiltDest)
|
||||
{
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">
|
||||
<span class="fas fa-gas-pump" aria-hidden="true"></span>
|
||||
</span>
|
||||
</div>
|
||||
<select @bind="@SelPlantId" class="form-control form-control-sm">
|
||||
<option value="0">--- Tutti ---</option>
|
||||
@if (PlantsList != null)
|
||||
{
|
||||
foreach (var item in PlantsList)
|
||||
{
|
||||
<option value="@item.PlantId">@item.PlantCode | @item.PlantDesc</option>
|
||||
}
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="d-flex small mb-1">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">
|
||||
<span class="fas fa-truck-moving" aria-hidden="true"></span>
|
||||
<span class="fas fa-gas-pump"></span>
|
||||
</span>
|
||||
</div>
|
||||
<select @bind="SelTranspId" class="form-control form-control-sm" title="Trasportatore">
|
||||
<select @bind="@SelPlantId" class="form-control form-control-sm">
|
||||
<option value="0">--- Tutti ---</option>
|
||||
@if (TransportersList != null)
|
||||
@if (PlantsList != null)
|
||||
{
|
||||
foreach (var item in TransportersList)
|
||||
foreach (var item in PlantsList)
|
||||
{
|
||||
<option value="@item.TransporterId">@item.TransporterCode | @item.TransporterDesc</option>
|
||||
<option value="@item.PlantId">@item.PlantCode | @item.PlantDesc</option>
|
||||
}
|
||||
}
|
||||
</select>
|
||||
<button class="btn btn-sm btn-info" @onclick="() => ToggleFiltDest()"><i class="fas fa-gas-pump"></i> <i class="fas fas fa-chevron-up"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
+251
-232
@@ -15,16 +15,35 @@ namespace GWMS.UI.Pages
|
||||
[Authorize(Roles = "SuperAdmin, Admin, ExtTransp")]
|
||||
public partial class Transporters : ComponentBase, IDisposable
|
||||
{
|
||||
#region Private Fields
|
||||
#region Public Methods
|
||||
|
||||
private OrderModel currRecord = null;
|
||||
public string checkSelect(int OrderId)
|
||||
{
|
||||
string answ = "";
|
||||
if (currRecord != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
answ = (currRecord.OrderId == OrderId) ? "table-info" : "";
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
private List<OrderModel> ListRecords;
|
||||
private List<PlantDTO> PlantsList;
|
||||
private List<OrderModel> SearchRecords;
|
||||
private List<TransporterModel> TransportersList;
|
||||
public void Dispose()
|
||||
{
|
||||
AppMService.EA_SearchUpdated -= OnSeachUpdated;
|
||||
}
|
||||
|
||||
#endregion Private Fields
|
||||
public async void OnSeachUpdated()
|
||||
{
|
||||
await UpdateData();
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
|
||||
#region Protected Fields
|
||||
|
||||
@@ -34,6 +53,206 @@ namespace GWMS.UI.Pages
|
||||
|
||||
#endregion Protected Fields
|
||||
|
||||
#region Protected Properties
|
||||
|
||||
[Inject]
|
||||
protected MessageService AppMService { get; set; }
|
||||
|
||||
[Inject]
|
||||
protected AuthenticationStateProvider AuthenticationStateProvider { get; set; }
|
||||
|
||||
[Inject]
|
||||
protected GWMSDataService DataService { get; set; }
|
||||
|
||||
protected DateTime DateEnd
|
||||
{
|
||||
get
|
||||
{
|
||||
DateTime answ = DateTime.Today.AddDays(1);
|
||||
if (AppMService.Order_Filter != null)
|
||||
{
|
||||
answ = AppMService.Order_Filter.DateEnd;
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!AppMService.Order_Filter.DateEnd.Equals(value))
|
||||
{
|
||||
AppMService.Order_Filter.DateEnd = value;
|
||||
var pUpd = Task.Run(async () => await ReloadData());
|
||||
pUpd.Wait();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected DateTime DateStart
|
||||
{
|
||||
get
|
||||
{
|
||||
DateTime answ = DateTime.Today.AddDays(-1);
|
||||
if (AppMService.Order_Filter != null)
|
||||
{
|
||||
answ = AppMService.Order_Filter.DateStart;
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!AppMService.Order_Filter.DateStart.Equals(value))
|
||||
{
|
||||
AppMService.Order_Filter.DateStart = value;
|
||||
var pUpd = Task.Run(async () => await ReloadData());
|
||||
pUpd.Wait();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Inject]
|
||||
protected IJSRuntime JSRuntime { get; set; }
|
||||
|
||||
[Inject]
|
||||
protected NavigationManager NavManager { get; set; }
|
||||
|
||||
protected bool showFiltDest { get; set; } = false;
|
||||
protected bool showFiltTime { get; set; } = false;
|
||||
protected bool showFiltTrasp { get; set; } = false;
|
||||
|
||||
protected int totalCount
|
||||
{
|
||||
get
|
||||
{
|
||||
int answ = 0;
|
||||
if (ListRecords != null)
|
||||
{
|
||||
answ = ListRecords.Count;
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Protected Properties
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
protected void Edit(OrderModel selRecord)
|
||||
{
|
||||
// rileggo dal DB il record corrente...
|
||||
var pUpd = Task.Run(async () => currRecord = await DataService.OrderGetByCodeAsync(selRecord.OrderCode));
|
||||
pUpd.Wait();
|
||||
}
|
||||
|
||||
protected void ForceReload(int newNum)
|
||||
{
|
||||
numRecord = newNum;
|
||||
}
|
||||
|
||||
protected void ForceReloadPage(int newNum)
|
||||
{
|
||||
currPage = newNum;
|
||||
}
|
||||
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
SelPlantId = 0;
|
||||
SelTranspId = 0;
|
||||
AppMService.ShowSearch = false;
|
||||
AppMService.PageName = "Fornitore";
|
||||
AppMService.PageIcon = "fas fa-industry pr-2";
|
||||
AppMService.EA_SearchUpdated += OnSeachUpdated;
|
||||
}
|
||||
|
||||
protected override async Task OnParametersSetAsync()
|
||||
{
|
||||
ShowClosed = false;
|
||||
await ReloadAllData();
|
||||
}
|
||||
|
||||
protected async Task ReloadAllData()
|
||||
{
|
||||
isLoading = true;
|
||||
PlantsList = await DataService.PlantsListAsync();
|
||||
SelTranspId = 0;
|
||||
TransportersList = null;
|
||||
await GetClaimsData();
|
||||
// se ho un plantId valido --> altrimenti non abilitato
|
||||
if (ClaimTransporterId == 0)
|
||||
{
|
||||
TransportersList = await DataService.TransportersGetAllAsync();
|
||||
}
|
||||
else if (ClaimTransporterId > 0)
|
||||
{
|
||||
var rawData = await DataService.TransportersGetAllAsync();
|
||||
TransportersList = rawData.Where(x => x.TransporterId == ClaimTransporterId).ToList();
|
||||
SelTranspId = ClaimTransporterId;
|
||||
}
|
||||
else
|
||||
{
|
||||
PlantsList = new List<PlantDetailModel>();
|
||||
}
|
||||
isLoading = false;
|
||||
await ReloadData();
|
||||
}
|
||||
|
||||
protected void ResetData()
|
||||
{
|
||||
DataService.rollBackEdit(currRecord);
|
||||
currRecord = null;
|
||||
}
|
||||
|
||||
protected async Task ResetFilter(SelectOrderData newFilter)
|
||||
{
|
||||
currRecord = null;
|
||||
SearchRecords = null;
|
||||
ListRecords = null;
|
||||
AppMService.Order_Filter = SelectOrderData.Init(5, 7);
|
||||
await ReloadAllData();
|
||||
}
|
||||
|
||||
protected void Select(OrderModel selRecord)
|
||||
{
|
||||
// applico filtro da selezione
|
||||
currRecord = selRecord;
|
||||
}
|
||||
|
||||
protected void ToggleFiltDest()
|
||||
{
|
||||
showFiltDest = !showFiltDest;
|
||||
if (!showFiltDest)
|
||||
{
|
||||
SelPlantId = 0;
|
||||
}
|
||||
}
|
||||
|
||||
protected void ToggleFiltPeriod()
|
||||
{
|
||||
showFiltTime = !showFiltTime;
|
||||
}
|
||||
|
||||
protected void ToggleFiltTransp()
|
||||
{
|
||||
showFiltTrasp = !showFiltTrasp;
|
||||
}
|
||||
|
||||
protected async Task UpdateData()
|
||||
{
|
||||
currRecord = null;
|
||||
await ReloadData();
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Private Fields
|
||||
|
||||
private OrderModel currRecord = null;
|
||||
|
||||
private List<OrderModel> ListRecords;
|
||||
private List<PlantDetailModel> PlantsList;
|
||||
private List<OrderModel> SearchRecords;
|
||||
private List<TransporterModel> TransportersList;
|
||||
|
||||
#endregion Private Fields
|
||||
|
||||
#region Private Properties
|
||||
|
||||
private int _currPage { get; set; } = 1;
|
||||
@@ -56,18 +275,12 @@ namespace GWMS.UI.Pages
|
||||
|
||||
private string icnFiltDest
|
||||
{
|
||||
get
|
||||
{
|
||||
return showFiltDest ? "fas fa-chevron-up" : "fas fa-chevron-down";
|
||||
}
|
||||
get => showFiltDest ? "fas fa-chevron-up" : "fas fa-chevron-down";
|
||||
}
|
||||
|
||||
private string icnFiltTime
|
||||
{
|
||||
get
|
||||
{
|
||||
return showFiltTime ? "fas fa-chevron-up" : "fas fa-chevron-down";
|
||||
}
|
||||
get => showFiltTime ? "fas fa-chevron-up" : "fas fa-chevron-down";
|
||||
}
|
||||
|
||||
private string icnFiltTran
|
||||
@@ -140,90 +353,30 @@ namespace GWMS.UI.Pages
|
||||
}
|
||||
}
|
||||
|
||||
private bool ShowClosed
|
||||
{
|
||||
get
|
||||
{
|
||||
bool answ = true;
|
||||
if (AppMService.Order_Filter != null)
|
||||
{
|
||||
answ = AppMService.Order_Filter.ShowClosed;
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!AppMService.Order_Filter.ShowClosed.Equals(value))
|
||||
{
|
||||
AppMService.Order_Filter.ShowClosed = value;
|
||||
var pUpd = Task.Run(async () => await ReloadData());
|
||||
pUpd.Wait();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Private Properties
|
||||
|
||||
#region Protected Properties
|
||||
|
||||
[Inject]
|
||||
protected MessageService AppMService { get; set; }
|
||||
|
||||
[Inject]
|
||||
protected AuthenticationStateProvider AuthenticationStateProvider { get; set; }
|
||||
|
||||
[Inject]
|
||||
protected GWMSDataService DataService { get; set; }
|
||||
|
||||
protected DateTime DateEnd
|
||||
{
|
||||
get
|
||||
{
|
||||
DateTime answ = DateTime.Today.AddDays(1);
|
||||
if (AppMService.Order_Filter != null)
|
||||
{
|
||||
answ = AppMService.Order_Filter.DateEnd;
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!AppMService.Order_Filter.DateEnd.Equals(value))
|
||||
{
|
||||
AppMService.Order_Filter.DateEnd = value;
|
||||
var pUpd = Task.Run(async () => await ReloadData());
|
||||
pUpd.Wait();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected DateTime DateStart
|
||||
{
|
||||
get
|
||||
{
|
||||
DateTime answ = DateTime.Today.AddDays(-1);
|
||||
if (AppMService.Order_Filter != null)
|
||||
{
|
||||
answ = AppMService.Order_Filter.DateStart;
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!AppMService.Order_Filter.DateStart.Equals(value))
|
||||
{
|
||||
AppMService.Order_Filter.DateStart = value;
|
||||
var pUpd = Task.Run(async () => await ReloadData());
|
||||
pUpd.Wait();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Inject]
|
||||
protected IJSRuntime JSRuntime { get; set; }
|
||||
|
||||
[Inject]
|
||||
protected NavigationManager NavManager { get; set; }
|
||||
|
||||
protected bool showFiltDest { get; set; } = false;
|
||||
|
||||
protected bool showFiltTime { get; set; } = false;
|
||||
|
||||
protected bool showFiltTrasp { get; set; } = false;
|
||||
|
||||
protected int totalCount
|
||||
{
|
||||
get
|
||||
{
|
||||
int answ = 0;
|
||||
if (ListRecords != null)
|
||||
{
|
||||
answ = ListRecords.Count;
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Protected Properties
|
||||
|
||||
#region Private Methods
|
||||
|
||||
/// <summary>
|
||||
@@ -266,145 +419,11 @@ namespace GWMS.UI.Pages
|
||||
private async Task ReloadData()
|
||||
{
|
||||
isLoading = true;
|
||||
SearchRecords = await DataService.OrdersGetFilt(AppMService.Order_Filter);
|
||||
SearchRecords = await DataService.OrdersGetFiltAsync(AppMService.Order_Filter);
|
||||
ListRecords = SearchRecords.Skip(numRecord * (currPage - 1)).Take(numRecord).ToList();
|
||||
isLoading = false;
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
protected void Edit(OrderModel selRecord)
|
||||
{
|
||||
// rileggo dal DB il record corrente...
|
||||
var pUpd = Task.Run(async () => currRecord = await DataService.OrderGetByCode(selRecord.OrderCode));
|
||||
pUpd.Wait();
|
||||
}
|
||||
|
||||
protected void ForceReload(int newNum)
|
||||
{
|
||||
numRecord = newNum;
|
||||
}
|
||||
|
||||
protected void ForceReloadPage(int newNum)
|
||||
{
|
||||
currPage = newNum;
|
||||
}
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
SelPlantId = 0;
|
||||
SelTranspId = 0;
|
||||
AppMService.ShowSearch = false;
|
||||
AppMService.PageName = "Fornitore";
|
||||
AppMService.PageIcon = "fas fa-industry pr-2";
|
||||
AppMService.EA_SearchUpdated += OnSeachUpdated;
|
||||
await ReloadAllData();
|
||||
}
|
||||
|
||||
protected async Task ReloadAllData()
|
||||
{
|
||||
isLoading = true;
|
||||
PlantsList = await DataService.PlantsGetAll();
|
||||
SelTranspId = 0;
|
||||
TransportersList = null;
|
||||
await GetClaimsData();
|
||||
// se ho un plantId valido --> altrimenti non abilitato
|
||||
if (ClaimTransporterId == 0)
|
||||
{
|
||||
TransportersList = await DataService.TransportersGetAll();
|
||||
}
|
||||
else if (ClaimTransporterId > 0)
|
||||
{
|
||||
var rawData = await DataService.TransportersGetAll();
|
||||
TransportersList = rawData.Where(x => x.TransporterId == ClaimTransporterId).ToList();
|
||||
SelTranspId = ClaimTransporterId;
|
||||
}
|
||||
else
|
||||
{
|
||||
PlantsList = new List<PlantDTO>();
|
||||
}
|
||||
isLoading = false;
|
||||
await ReloadData();
|
||||
}
|
||||
|
||||
protected void ResetData()
|
||||
{
|
||||
DataService.rollBackEdit(currRecord);
|
||||
currRecord = null;
|
||||
}
|
||||
|
||||
protected async Task ResetFilter(SelectOrderData newFilter)
|
||||
{
|
||||
currRecord = null;
|
||||
SearchRecords = null;
|
||||
ListRecords = null;
|
||||
AppMService.Order_Filter = SelectOrderData.Init(5, 7);
|
||||
await ReloadAllData();
|
||||
}
|
||||
|
||||
protected void Select(OrderModel selRecord)
|
||||
{
|
||||
// applico filtro da selezione
|
||||
currRecord = selRecord;
|
||||
}
|
||||
|
||||
protected void ToggleFiltDest()
|
||||
{
|
||||
showFiltDest = !showFiltDest;
|
||||
if (!showFiltDest)
|
||||
{
|
||||
SelPlantId = 0;
|
||||
}
|
||||
}
|
||||
|
||||
protected void ToggleFiltPeriod()
|
||||
{
|
||||
showFiltTime = !showFiltTime;
|
||||
}
|
||||
|
||||
protected void ToggleFiltTransp()
|
||||
{
|
||||
showFiltTrasp = !showFiltTrasp;
|
||||
}
|
||||
|
||||
protected async Task UpdateData()
|
||||
{
|
||||
currRecord = null;
|
||||
await ReloadData();
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Public Methods
|
||||
|
||||
public string checkSelect(int OrderId)
|
||||
{
|
||||
string answ = "";
|
||||
if (currRecord != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
answ = (currRecord.OrderId == OrderId) ? "table-info" : "";
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
AppMService.EA_SearchUpdated -= OnSeachUpdated;
|
||||
}
|
||||
|
||||
public async void OnSeachUpdated()
|
||||
{
|
||||
await UpdateData();
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
}
|
||||
}
|
||||
@@ -137,7 +137,7 @@ namespace GWMS.UI.Pages
|
||||
// clear any error messages
|
||||
strError = "";
|
||||
|
||||
UsersAll = await DataService.UserDataGetFilt(searchVal);
|
||||
UsersAll = await DataService.UserDataGetFiltAsync(searchVal);
|
||||
|
||||
// filtro visualizzazione x tipo SE richeisto
|
||||
if (FiltUserRole != "0")
|
||||
@@ -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;
|
||||
|
||||
@@ -496,9 +496,9 @@ namespace GWMS.UI.Pages
|
||||
CurrentUserClaimVal = "0";
|
||||
}
|
||||
|
||||
string baseUrl = Configuration["BaseUrl"];
|
||||
string baseAppPath = Configuration["BaseAppPath"];
|
||||
string redirPage = Configuration["QrRedirPage"];
|
||||
string baseUrl = Configuration["RuntimeOpt:BaseUrl"];
|
||||
string baseAppPath = Configuration["RuntimeOpt:BaseAppPath"];
|
||||
string redirPage = Configuration["RuntimeOpt:QrRedirPage"];
|
||||
if (!string.IsNullOrEmpty(baseAppPath))
|
||||
{
|
||||
if (baseUrl.EndsWith("/"))
|
||||
@@ -524,7 +524,7 @@ namespace GWMS.UI.Pages
|
||||
{
|
||||
case "PlantId":
|
||||
// elenco plant --> to dictionary!
|
||||
var plantList = await DataService.PlantsGetAll();
|
||||
var plantList = await DataService.PlantsListAsync();
|
||||
if (plantList != null)
|
||||
{
|
||||
ClaimValList = plantList
|
||||
@@ -534,7 +534,7 @@ namespace GWMS.UI.Pages
|
||||
|
||||
case "SupplierId":
|
||||
// elenco plant --> to dictionary!
|
||||
var suppList = await DataService.SuppliersGetAll();
|
||||
var suppList = await DataService.SuppliersGetAllAsync();
|
||||
if (suppList != null)
|
||||
{
|
||||
ClaimValList = suppList
|
||||
@@ -544,7 +544,7 @@ namespace GWMS.UI.Pages
|
||||
|
||||
case "TransporterId":
|
||||
// elenco plant --> to dictionary!
|
||||
var transpList = await DataService.TransportersGetAll();
|
||||
var transpList = await DataService.TransportersGetAllAsync();
|
||||
if (transpList != null)
|
||||
{
|
||||
ClaimValList = transpList
|
||||
@@ -563,15 +563,15 @@ namespace GWMS.UI.Pages
|
||||
// effettuo refresh valori cache plants/suppliers/transp
|
||||
if (plantList == null)
|
||||
{
|
||||
plantList = await DataService.PlantsGetAll();
|
||||
plantList = await DataService.PlantsListAsync();
|
||||
}
|
||||
if (suppList == null)
|
||||
{
|
||||
suppList = await DataService.SuppliersGetAll();
|
||||
suppList = await DataService.SuppliersGetAllAsync();
|
||||
}
|
||||
if (transpList == null)
|
||||
{
|
||||
transpList = await DataService.TransportersGetAll();
|
||||
transpList = await DataService.TransportersGetAllAsync();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -206,7 +206,7 @@ namespace GWMS.UI.Pages
|
||||
private async Task ReloadData()
|
||||
{
|
||||
isLoading = true;
|
||||
ListRecords = await DataService.WeekPlanGet();
|
||||
ListRecords = await DataService.WeekPlanGetAsync();
|
||||
// calcolo min/max...
|
||||
checkHourRange();
|
||||
isLoading = false;
|
||||
@@ -252,9 +252,9 @@ namespace GWMS.UI.Pages
|
||||
|
||||
protected async Task ReloadAllData()
|
||||
{
|
||||
PlantsList = await DataService.PlantsGetAll();
|
||||
SuppliersList = await DataService.SuppliersGetAll();
|
||||
TransportersList = await DataService.TransportersGetAll();
|
||||
PlantsList = await DataService.PlantsListAsync();
|
||||
SuppliersList = await DataService.SuppliersGetAllAsync();
|
||||
TransportersList = await DataService.TransportersGetAllAsync();
|
||||
await ReloadData();
|
||||
}
|
||||
|
||||
|
||||
+286
-39
@@ -1,54 +1,301 @@
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using GWMS.Data;
|
||||
using GWMS.UI.Areas.Identity;
|
||||
using GWMS.UI.Data;
|
||||
using HealthChecks.UI.Client;
|
||||
using Microsoft.AspNetCore.Builder;
|
||||
using Microsoft.AspNetCore.Components.Authorization;
|
||||
using Microsoft.AspNetCore.Diagnostics.HealthChecks;
|
||||
using Microsoft.AspNetCore.HttpOverrides;
|
||||
using Microsoft.AspNetCore.Identity;
|
||||
using Microsoft.AspNetCore.Identity.UI.Services;
|
||||
using Microsoft.AspNetCore.Localization;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Diagnostics.HealthChecks;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using NLog;
|
||||
using NLog.Targets;
|
||||
using NLog.Web;
|
||||
using OpenTelemetry.Resources;
|
||||
using OpenTelemetry.Trace;
|
||||
using StackExchange.Redis;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Globalization;
|
||||
|
||||
namespace GWMS.UI
|
||||
// ====================================================================
|
||||
// 1. IL "FIX" CRITICO PER HTTP/2 (OTLP GRPC)
|
||||
// Deve essere la prima riga eseguita.
|
||||
// ====================================================================
|
||||
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
|
||||
|
||||
var logger = LogManager.Setup().LoadConfigurationFromAppSettings().GetCurrentClassLogger();
|
||||
logger.Info("GMWS.UI Application Starting Up");
|
||||
|
||||
try
|
||||
{
|
||||
public class Program
|
||||
var builder = WebApplication.CreateBuilder(args);
|
||||
|
||||
// Setup NLog come provider di logging
|
||||
builder.Logging.ClearProviders();
|
||||
builder.Host.UseNLog();
|
||||
|
||||
// ====================================================================
|
||||
// 2. CONFIGURAZIONE SERVIZI (ex ConfigureServices)
|
||||
// ====================================================================
|
||||
var Configuration = builder.Configuration;
|
||||
|
||||
// REDIS setup
|
||||
string connStringRedis = Configuration.GetConnectionString("Redis");
|
||||
string redisSrvAddr = connStringRedis.Contains(":")
|
||||
? connStringRedis.Substring(0, connStringRedis.IndexOf(":"))
|
||||
: "127.0.0.1";
|
||||
|
||||
var redisMultiplexer = ConnectionMultiplexer.Connect(connStringRedis);
|
||||
builder.Services.AddSingleton<IConnectionMultiplexer>(redisMultiplexer);
|
||||
|
||||
// --- SETUP OPENTELEMETRY ---
|
||||
var otelEnabled = Configuration.GetValue<bool>("Otel:EnableTracing", false);
|
||||
var otelEndpoint = Configuration["Otel:Endpoint"];
|
||||
var otelDsn = Configuration["Otel:Dsn"];
|
||||
|
||||
if (otelEnabled)
|
||||
{
|
||||
#region Public Methods
|
||||
var appVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version?.ToString() ?? "1.0.0";
|
||||
|
||||
public static IHostBuilder CreateHostBuilder(string[] args) =>
|
||||
Host.CreateDefaultBuilder(args)
|
||||
.ConfigureWebHostDefaults(webBuilder =>
|
||||
{
|
||||
webBuilder.UseStartup<Startup>();
|
||||
})
|
||||
.ConfigureLogging(logging =>
|
||||
{
|
||||
logging.ClearProviders();
|
||||
logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
|
||||
})
|
||||
.UseNLog();
|
||||
builder.Services.AddOpenTelemetry()
|
||||
.WithTracing(tracerProviderBuilder =>
|
||||
{
|
||||
tracerProviderBuilder
|
||||
.SetResourceBuilder(ResourceBuilder.CreateDefault()
|
||||
.AddService(serviceName: "GWMS", serviceVersion: appVersion))
|
||||
.AddSource("GWMS.Data")
|
||||
.AddSource("GWMS.UI")
|
||||
.AddAspNetCoreInstrumentation(options =>
|
||||
{
|
||||
options.Filter = ctx => !ctx.Request.Path.StartsWithSegments("/health");
|
||||
})
|
||||
//.AddHttpClientInstrumentation()
|
||||
.AddHttpClientInstrumentation(options =>
|
||||
{
|
||||
// Questo evita di tracciare le chiamate in USCITA verso l'endpoint health
|
||||
options.FilterHttpRequestMessage = (httpRequestMessage) =>
|
||||
{
|
||||
var uri = httpRequestMessage.RequestUri?.ToString() ?? "";
|
||||
// Escludi chiamate che contengono /health o che puntano a localhost/loopback
|
||||
return !uri.Contains("/health") && !uri.Contains("[::]") && !uri.Contains("127.0.0.1");
|
||||
};
|
||||
})
|
||||
.AddEntityFrameworkCoreInstrumentation()
|
||||
.AddRedisInstrumentation(redisMultiplexer);
|
||||
|
||||
public static void Main(string[] args)
|
||||
if (!string.IsNullOrWhiteSpace(otelEndpoint))
|
||||
{
|
||||
tracerProviderBuilder.AddOtlpExporter(options =>
|
||||
{
|
||||
options.Endpoint = new Uri(otelEndpoint);
|
||||
|
||||
// --- LOGICA ADATTIVA PROTOCOLLO ---
|
||||
if (otelEndpoint.Contains(":4318"))
|
||||
{
|
||||
options.Protocol = OpenTelemetry.Exporter.OtlpExportProtocol.HttpProtobuf;
|
||||
// L'SDK aggiunge automaticamente /v1/traces se non presente
|
||||
}
|
||||
else
|
||||
{
|
||||
options.Protocol = OpenTelemetry.Exporter.OtlpExportProtocol.Grpc;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(otelDsn))
|
||||
{
|
||||
options.Headers = $"uptrace-dsn={otelDsn}";
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Configurazione NLog OTLP Target
|
||||
if (!string.IsNullOrWhiteSpace(otelEndpoint))
|
||||
{
|
||||
// inclusione NLog:
|
||||
// https://github.com/NLog/NLog/wiki/Getting-started-with-ASP.NET-Core-5
|
||||
// https://codewithmukesh.com/blog/logging-with-nlog-in-aspnet-core/
|
||||
var logger = NLog.Web.NLogBuilder.ConfigureNLog("NLog.config").GetCurrentClassLogger();
|
||||
try
|
||||
var otlpTarget = new OtlpTarget
|
||||
{
|
||||
logger.Info("GMWS.UI Application Starting Up");
|
||||
CreateHostBuilder(args).Build().Run();
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
logger.Error(exception, "Stopped GMWS.UI program because of exception");
|
||||
throw;
|
||||
}
|
||||
finally
|
||||
{
|
||||
NLog.LogManager.Shutdown();
|
||||
}
|
||||
}
|
||||
Name = "UptraceRealtime",
|
||||
Endpoint = otelEndpoint,
|
||||
ServiceName = "GWMS.Data"
|
||||
};
|
||||
|
||||
#endregion Public Methods
|
||||
// --- LOGICA ADATTIVA PER NLOG ---
|
||||
if (otelEndpoint.Contains(":4318"))
|
||||
{
|
||||
otlpTarget.UseHttp = true;
|
||||
// NLog richiede l'URL completo per i log se usi HTTP
|
||||
if (!otelEndpoint.EndsWith("/v1/logs"))
|
||||
{
|
||||
otlpTarget.Endpoint = otelEndpoint.TrimEnd('/') + "/v1/logs";
|
||||
}
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(otelDsn))
|
||||
{
|
||||
otlpTarget.Headers = $"uptrace-dsn={otelDsn}";
|
||||
}
|
||||
|
||||
var nlogConfig = LogManager.Configuration ?? new NLog.Config.LoggingConfiguration();
|
||||
nlogConfig.AddTarget(otlpTarget);
|
||||
nlogConfig.AddRule(NLog.LogLevel.Info, NLog.LogLevel.Fatal, otlpTarget);
|
||||
LogManager.Configuration = nlogConfig;
|
||||
LogManager.ReconfigExistingLoggers();
|
||||
}
|
||||
}
|
||||
|
||||
// Init DB Logic
|
||||
string dbServerAddr = Configuration["DbConfig:Server"];
|
||||
string nKey = Configuration["DbConfig:nKey"];
|
||||
string sKey = Configuration["DbConfig:sKey"];
|
||||
DbConfig.InitDb(dbServerAddr, nKey, sKey);
|
||||
DbConfig.CheckUser(nKey, sKey);
|
||||
DbConfig.ExecMigrationMain();
|
||||
|
||||
string connStringDB = DbConfig.CONNECTION_STRING;
|
||||
|
||||
// HealthChecks
|
||||
builder.Services.AddHealthChecks()
|
||||
.AddMySql(connStringDB, "MySql instance")
|
||||
.AddAsyncCheck($"DB PING ({dbServerAddr})", () => GWMS.UI.Health.Checks.PingCheck(dbServerAddr))
|
||||
.AddAsyncCheck($"Redis PING ({redisSrvAddr})", () => GWMS.UI.Health.Checks.PingCheck(redisSrvAddr))
|
||||
.AddProcessAllocatedMemoryHealthCheck(512, "Max Process memory (<512MB)", failureStatus: HealthStatus.Degraded)
|
||||
.AddRedis(connStringRedis, "Redis", failureStatus: HealthStatus.Degraded)
|
||||
.AddAsyncCheck("MySql Root User", () => GWMS.UI.Health.Checks.DbUserRoot("MySql"))
|
||||
.AddAsyncCheck("MySql Identity", () => GWMS.UI.Health.Checks.DbIdentity(DbConfig.DATABASE_NAME))
|
||||
.AddAsyncCheck("MySql PlantLog", () => GWMS.UI.Health.Checks.DbPlantTable(DbConfig.DATABASE_NAME));
|
||||
|
||||
builder.Services.AddHealthChecksUI(s =>
|
||||
{
|
||||
s.AddHealthCheckEndpoint("GWMS_Services", "health");
|
||||
s.SetEvaluationTimeInSeconds(60);
|
||||
s.SetHeaderText("GWMS Health Check Status");
|
||||
}).AddInMemoryStorage();
|
||||
|
||||
// Identity & DB
|
||||
var serverVersion = DbConfig.MysqlServerVersion(connStringDB);
|
||||
builder.Services.AddDbContext<UserIdentityDbContext>(options =>
|
||||
options.UseMySql(connStringDB, serverVersion));
|
||||
|
||||
builder.Services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
|
||||
.AddRoles<IdentityRole>()
|
||||
.AddEntityFrameworkStores<UserIdentityDbContext>();
|
||||
|
||||
// Auth & Cookies
|
||||
builder.Services.ConfigureApplicationCookie(o =>
|
||||
{
|
||||
o.ExpireTimeSpan = TimeSpan.FromDays(30);
|
||||
o.SlidingExpiration = true;
|
||||
});
|
||||
builder.Services.Configure<DataProtectionTokenProviderOptions>(o => o.TokenLifespan = TimeSpan.FromHours(3));
|
||||
|
||||
// Email
|
||||
builder.Services.AddTransient<IEmailSender, MailKitEmailSender>();
|
||||
builder.Services.Configure<MailKitEmailSenderOptions>(options =>
|
||||
{
|
||||
options.Host_Address = Configuration["ExternalProviders:MailKit:SMTP:Address"];
|
||||
options.Host_Port = Convert.ToInt32(Configuration["ExternalProviders:MailKit:SMTP:Port"]);
|
||||
options.Host_Username = Configuration["ExternalProviders:MailKit:SMTP:Account"];
|
||||
options.Host_Password = Configuration["ExternalProviders:MailKit:SMTP:Password"];
|
||||
options.Sender_EMail = Configuration["ExternalProviders:MailKit:SMTP:SenderEmail"];
|
||||
options.Sender_Name = Configuration["ExternalProviders:MailKit:SMTP:SenderName"];
|
||||
});
|
||||
|
||||
builder.Services.AddLocalization();
|
||||
builder.Services.AddRazorPages();
|
||||
builder.Services.AddServerSideBlazor();
|
||||
builder.Services.AddDatabaseDeveloperPageExceptionFilter();
|
||||
|
||||
// Services
|
||||
builder.Services.AddScoped<AuthenticationStateProvider, RevalidatingIdentityAuthenticationStateProvider<IdentityUser>>();
|
||||
builder.Services.AddScoped<GWMSDataService>();
|
||||
builder.Services.AddScoped<MessageService>();
|
||||
|
||||
var app = builder.Build();
|
||||
|
||||
|
||||
// ====================================================================
|
||||
// 3. CONFIGURAZIONE PIPELINE (ex Configure)
|
||||
// ====================================================================
|
||||
|
||||
app.UsePathBase(Configuration["RuntimeOpt:BaseAppPath"]);
|
||||
|
||||
if (app.Environment.IsDevelopment())
|
||||
{
|
||||
app.UseDeveloperExceptionPage();
|
||||
app.UseMigrationsEndPoint();
|
||||
}
|
||||
else
|
||||
{
|
||||
app.UseExceptionHandler("/Error");
|
||||
app.UseHsts();
|
||||
}
|
||||
|
||||
|
||||
// ====================================================================
|
||||
// Imposta cultura globale
|
||||
// ====================================================================
|
||||
#if true
|
||||
var supportedCultures = new[] { new CultureInfo("it-IT") };
|
||||
app.UseRequestLocalization(new RequestLocalizationOptions
|
||||
{
|
||||
DefaultRequestCulture = new RequestCulture("it-IT"),
|
||||
SupportedCultures = supportedCultures,
|
||||
FallBackToParentCultures = false
|
||||
});
|
||||
CultureInfo.DefaultThreadCurrentCulture = CultureInfo.CreateSpecificCulture("it-IT");
|
||||
#else
|
||||
var culture = new CultureInfo("en-US");
|
||||
|
||||
var localizationOptions = new RequestLocalizationOptions
|
||||
{
|
||||
DefaultRequestCulture = new Microsoft.AspNetCore.Localization.RequestCulture(culture),
|
||||
SupportedCultures = new List<CultureInfo> { culture },
|
||||
SupportedUICultures = new List<CultureInfo> { culture }
|
||||
};
|
||||
|
||||
// ⚠️ IMPORTANTE: questo deve venire PRIMA di MapBlazorHub
|
||||
app.UseRequestLocalization(localizationOptions);
|
||||
|
||||
CultureInfo.DefaultThreadCurrentCulture = culture;
|
||||
CultureInfo.DefaultThreadCurrentUICulture = culture;
|
||||
#endif
|
||||
|
||||
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
||||
{
|
||||
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
|
||||
});
|
||||
|
||||
app.UseHttpsRedirection();
|
||||
app.UseStaticFiles();
|
||||
app.UseRouting();
|
||||
|
||||
app.UseAuthentication();
|
||||
app.UseAuthorization();
|
||||
|
||||
app.MapControllers();
|
||||
app.MapBlazorHub();
|
||||
app.MapHealthChecksUI();
|
||||
app.MapHealthChecks("/health", new HealthCheckOptions
|
||||
{
|
||||
Predicate = _ => true,
|
||||
ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse
|
||||
});
|
||||
app.MapFallbackToPage("/_Host");
|
||||
|
||||
app.Run();
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
logger.Error(exception, "Stopped GMWS.UI program because of exception");
|
||||
throw;
|
||||
}
|
||||
finally
|
||||
{
|
||||
LogManager.Shutdown();
|
||||
}
|
||||
@@ -1,234 +0,0 @@
|
||||
using GWMS.Data;
|
||||
using GWMS.UI.Areas.Identity;
|
||||
using GWMS.UI.Data;
|
||||
using HealthChecks.UI.Client;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Builder;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Microsoft.AspNetCore.Components.Authorization;
|
||||
using Microsoft.AspNetCore.Diagnostics.HealthChecks;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.AspNetCore.HttpOverrides;
|
||||
using Microsoft.AspNetCore.HttpsPolicy;
|
||||
using Microsoft.AspNetCore.Identity;
|
||||
using Microsoft.AspNetCore.Identity.UI;
|
||||
using Microsoft.AspNetCore.Identity.UI.Services;
|
||||
using Microsoft.AspNetCore.Localization;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Diagnostics.HealthChecks;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace GWMS.UI
|
||||
{
|
||||
public class Startup
|
||||
{
|
||||
#region Public Constructors
|
||||
|
||||
public Startup(IConfiguration configuration)
|
||||
{
|
||||
Configuration = configuration;
|
||||
}
|
||||
|
||||
#endregion Public Constructors
|
||||
|
||||
#region Public Properties
|
||||
|
||||
public IConfiguration Configuration { get; }
|
||||
|
||||
#endregion Public Properties
|
||||
|
||||
#region Public Methods
|
||||
|
||||
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
|
||||
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
|
||||
{
|
||||
if (env.IsDevelopment())
|
||||
{
|
||||
app.UseDeveloperExceptionPage();
|
||||
app.UseMigrationsEndPoint();
|
||||
}
|
||||
else
|
||||
{
|
||||
app.UseExceptionHandler("/Error");
|
||||
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
|
||||
app.UseHsts();
|
||||
}
|
||||
|
||||
// cultura IT...
|
||||
var supportedCultures = new[]{
|
||||
new CultureInfo("it-IT")
|
||||
};
|
||||
app.UseRequestLocalization(new RequestLocalizationOptions
|
||||
{
|
||||
DefaultRequestCulture = new RequestCulture("it-IT"),
|
||||
SupportedCultures = supportedCultures,
|
||||
FallBackToParentCultures = false
|
||||
});
|
||||
CultureInfo.DefaultThreadCurrentCulture = CultureInfo.CreateSpecificCulture("it-IT");
|
||||
|
||||
//// Registrazione Elmah:
|
||||
//// https://github.com/ElmahCore/ElmahCore
|
||||
//app.UseElmah();
|
||||
|
||||
// fix forwarders
|
||||
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
||||
{
|
||||
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
|
||||
});
|
||||
|
||||
app.UsePathBase(Configuration["BaseAppPath"]);
|
||||
|
||||
app.UseAuthentication();
|
||||
|
||||
app.UseHttpsRedirection();
|
||||
app.UseStaticFiles();
|
||||
|
||||
app.UseRouting();
|
||||
|
||||
app.UseAuthentication();
|
||||
app.UseAuthorization();
|
||||
|
||||
app.UseEndpoints(endpoints =>
|
||||
{
|
||||
endpoints.MapControllers();
|
||||
endpoints.MapBlazorHub();
|
||||
endpoints.MapHealthChecksUI();
|
||||
endpoints.MapHealthChecks("/health", new HealthCheckOptions
|
||||
{
|
||||
Predicate = _ => true,
|
||||
ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse
|
||||
});
|
||||
endpoints.MapFallbackToPage("/_Host");
|
||||
});
|
||||
}
|
||||
|
||||
// This method gets called by the runtime. Use this method to add services to the container.
|
||||
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
|
||||
public void ConfigureServices(IServiceCollection services)
|
||||
{
|
||||
// init info x DB
|
||||
string dbServerAddr = Configuration["DbConfig:Server"];
|
||||
string nKey = Configuration["DbConfig:nKey"];
|
||||
string sKey = Configuration["DbConfig:sKey"];
|
||||
DbConfig.InitDb(dbServerAddr, nKey, sKey);
|
||||
// inizializzo il DB e creo (se necessario) l'utente
|
||||
DbConfig.CheckUser(nKey, sKey);
|
||||
// verifico se serve applicazione migrazioni
|
||||
DbConfig.ExecMigrationMain();
|
||||
//DbConfig.ExecMigrationIdentity();
|
||||
|
||||
// altri parametri per check vari
|
||||
string connStringDB = DbConfig.CONNECTION_STRING;
|
||||
string connStringRedis = Configuration.GetConnectionString("Redis");
|
||||
string redisSrvAddr = connStringRedis.Substring(0, connStringRedis.IndexOf(":"));
|
||||
|
||||
// healthchecks
|
||||
services.AddHealthChecks()
|
||||
.AddMySql(connStringDB, "MySql instance")
|
||||
.AddAsyncCheck($"DB PING ({dbServerAddr})", () => Health.Checks.PingCheck(dbServerAddr))
|
||||
.AddAsyncCheck($"Redis PING ({redisSrvAddr})", () => Health.Checks.PingCheck(redisSrvAddr))
|
||||
.AddProcessAllocatedMemoryHealthCheck(512, "Max Process memory (<512MB)", failureStatus: HealthStatus.Degraded) // 512 MB max allocated memory
|
||||
.AddRedis(Configuration.GetConnectionString("Redis"), "Redis", failureStatus: HealthStatus.Degraded)
|
||||
.AddAsyncCheck($"MySql Root User", () => Health.Checks.DbUserRoot("MySql"))
|
||||
.AddAsyncCheck($"MySql Identity", () => Health.Checks.DbIdentity(DbConfig.DATABASE_NAME))
|
||||
.AddAsyncCheck($"MySql PlantLog", () => Health.Checks.DbPlantTable(DbConfig.DATABASE_NAME))
|
||||
;
|
||||
|
||||
services
|
||||
.AddHealthChecksUI(s =>
|
||||
{
|
||||
s.AddHealthCheckEndpoint("GWMS_Services", "health");
|
||||
s.SetEvaluationTimeInSeconds(60);
|
||||
//s.SetEvaluationTimeInSeconds(60);
|
||||
s.SetMinimumSecondsBetweenFailureNotifications(120);
|
||||
s.SetApiMaxActiveRequests(5);
|
||||
s.SetHeaderText("GWMS Health Check Status");
|
||||
})
|
||||
.AddInMemoryStorage();
|
||||
|
||||
// abilitazione x email management con MailKit
|
||||
services.AddTransient<IEmailSender, MailKitEmailSender>();
|
||||
services.Configure<MailKitEmailSenderOptions>(options =>
|
||||
{
|
||||
options.Host_Address = Configuration["ExternalProviders:MailKit:SMTP:Address"];
|
||||
options.Host_Port = Convert.ToInt32(Configuration["ExternalProviders:MailKit:SMTP:Port"]);
|
||||
options.Host_Username = Configuration["ExternalProviders:MailKit:SMTP:Account"];
|
||||
options.Host_Password = Configuration["ExternalProviders:MailKit:SMTP:Password"];
|
||||
options.Sender_EMail = Configuration["ExternalProviders:MailKit:SMTP:SenderEmail"];
|
||||
options.Sender_Name = Configuration["ExternalProviders:MailKit:SMTP:SenderName"];
|
||||
});
|
||||
|
||||
// cookie applicazione da 14 gg (defaul) a 30
|
||||
services.ConfigureApplicationCookie(o =>
|
||||
{
|
||||
o.ExpireTimeSpan = TimeSpan.FromDays(30);
|
||||
o.SlidingExpiration = true;
|
||||
});
|
||||
// token di sicurezza dati a 3h
|
||||
services.Configure<DataProtectionTokenProviderOptions>(o =>
|
||||
o.TokenLifespan = TimeSpan.FromHours(3));
|
||||
|
||||
// setup MySql
|
||||
//string connString = Configuration.GetConnectionString("AdminConnection");
|
||||
var serverVersion = DbConfig.MysqlServerVersion(connStringDB);
|
||||
services.AddDbContext<UserIdentityDbContext>(options =>
|
||||
options.UseMySql(connStringDB, serverVersion));
|
||||
|
||||
// identity management
|
||||
services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
|
||||
.AddRoles<IdentityRole>()
|
||||
.AddEntityFrameworkStores<UserIdentityDbContext>();
|
||||
// rif auth
|
||||
// https://stackoverflow.com/questions/60687879/require-authorization-on-all-blazor-pages/60688109#60688109
|
||||
// https://www.c-sharpcorner.com/article/understand-basic-of-authorization-in-blazor-server-app/#:~:text=Authentication%20is%20a%20process%20of%20validating%20a%20user,UI%20option%20can%20be%20accessible%20by%20the%20user.
|
||||
|
||||
// non funziona --> messo attributo in _Imports.razor e esclusione in Index page
|
||||
#if false
|
||||
// richiesta esplicita autorizzazione
|
||||
services.AddAuthorization(options =>
|
||||
{
|
||||
options.FallbackPolicy = new AuthorizationPolicyBuilder()
|
||||
.RequireAuthenticatedUser()
|
||||
.Build();
|
||||
});
|
||||
#endif
|
||||
|
||||
|
||||
//// Elmah
|
||||
//services.AddElmah();
|
||||
//string elmaConn = "Data Source=SQL2016DEV;Initial Catalog=Elmah;User ID=sa;Password=keyhammer16;integrated security=False;MultipleActiveResultSets=True;App=SHERPA.BBM;";
|
||||
//services.AddElmah<SqlErrorLog>(options =>
|
||||
//{
|
||||
// options.ConnectionString = elmaConn;
|
||||
//});
|
||||
|
||||
services.AddStackExchangeRedisCache(options =>
|
||||
{
|
||||
//options.Configuration = "localhost:6379";
|
||||
options.ConfigurationOptions = new StackExchange.Redis.ConfigurationOptions() { KeepAlive = 180, DefaultDatabase = 12, EndPoints = { { "localhost", 6379 } } };
|
||||
options.InstanceName = "GWMS:";
|
||||
});
|
||||
|
||||
services.AddLocalization();
|
||||
|
||||
services.AddRazorPages();
|
||||
services.AddServerSideBlazor();
|
||||
services.AddScoped<AuthenticationStateProvider, RevalidatingIdentityAuthenticationStateProvider<IdentityUser>>();
|
||||
services.AddDatabaseDeveloperPageExceptionFilter();
|
||||
services.AddSingleton<IConfiguration>(Configuration);
|
||||
//services.AddSingleton<GWMSDataService>();
|
||||
//services.AddTransient<GWMSDataService>();
|
||||
services.AddScoped<GWMSDataService>();
|
||||
services.AddScoped<MessageService>();
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
}
|
||||
}
|
||||
@@ -7,5 +7,10 @@
|
||||
"Microsoft.Hosting.Lifetime": "Information"
|
||||
}
|
||||
},
|
||||
"Otel": {
|
||||
"EnableTracing": true,
|
||||
"Endpoint": "https://uptrace.egalware.com:14317",
|
||||
"Dsn": "https://DC_iX71mEzg7KA7atQEBdQ@uptrace.egalware.com?grpc=14317"
|
||||
},
|
||||
"ZCodeUrl": "http://10.74.82.218/zcode/"
|
||||
}
|
||||
@@ -6,21 +6,40 @@
|
||||
"Microsoft.Hosting.Lifetime": "Information"
|
||||
}
|
||||
},
|
||||
"Otel": {
|
||||
"EnableTracing": true,
|
||||
//"Endpoint": "http://localhost:4317",
|
||||
"Endpoint": "http://127.0.0.1:4318/v1/traces",
|
||||
"Dsn": ""
|
||||
},
|
||||
"ConnectionStrings": {
|
||||
"Redis": "localhost:6379",
|
||||
"Redis": "localhost:26379, serviceName=prod-ovh, DefaultDatabase=13, connectTimeout=5000, syncTimeout=5000, asyncTimeout=5000, abortConnect=false, ssl=false, allowAdmin=true",
|
||||
"AuthConnection": "Server=localhost;port=3306;database=GWMS;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;",
|
||||
"DefaultConnection": "Server=localhost;port=3306;database=GWMS;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;",
|
||||
"AdminConnection": "Server=localhost;port=3306;database=GWMS;user=root;pwd=Egalware_24068!;sslmode=None;",
|
||||
"GWMS.Data": "Server=localhost;port=3306;database=GWMS;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;"
|
||||
},
|
||||
"DbConfig": {
|
||||
"Server": "localhost",
|
||||
"Server": "mdb.ovh",
|
||||
"nKey": "PZZFRR",
|
||||
"sKey": "M3T@n0"
|
||||
},
|
||||
"ExternalProviders": {
|
||||
"MailKit": {
|
||||
"SMTP": {
|
||||
"Address": "smtp.gmail.com",
|
||||
"Port": "587",
|
||||
"Account": "services@steamware.net",
|
||||
"Password": "vpsad24068",
|
||||
"SenderEmail": "services@steamware.net",
|
||||
"SenderName": "GWMS Notification"
|
||||
}
|
||||
}
|
||||
},
|
||||
"ZCodeUrl": "https://qrcode.steamware.net/",
|
||||
"BaseUrl": "https://gwms.egalware.com/",
|
||||
"BaseAppPath": "/pizzaferri/",
|
||||
"QrRedirPage": "pizzaferri/",
|
||||
"jumpRedir": "~/../"
|
||||
"RuntimeOpt": {
|
||||
"BaseUrl": "https://gwms.egalware.com",
|
||||
"BaseAppPath": "/pizzaferri/",
|
||||
"QrRedirPage": ""
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft": "Warning",
|
||||
"Microsoft.Hosting.Lifetime": "Information"
|
||||
}
|
||||
},
|
||||
"ConnectionStrings": {
|
||||
"Redis": "localhost:6379",
|
||||
"AuthConnection": "Server=localhost;port=3306;database=GWMS;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;",
|
||||
"DefaultConnection": "Server=localhost;port=3306;database=GWMS;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;",
|
||||
"AdminConnection": "Server=localhost;port=3306;database=GWMS;user=root;pwd=Egalware_24068!;sslmode=None;",
|
||||
"GWMS.Data": "Server=localhost;port=3306;database=GWMS;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;"
|
||||
},
|
||||
"DbConfig": {
|
||||
"Server": "localhost",
|
||||
"nKey": "PZZFRR",
|
||||
"sKey": "M3T@n0"
|
||||
},
|
||||
"ZCodeUrl": "https://qrcode.steamware.net/",
|
||||
"RuntimeOpt": {
|
||||
"BaseUrl": "https://gwms.egalware.com",
|
||||
"BaseAppPath": "/pizzaferri/",
|
||||
"QrRedirPage": ""
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,19 @@
|
||||
{
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Trace",
|
||||
"Default": "Information",
|
||||
"Microsoft": "Warning",
|
||||
"Microsoft.Hosting.Lifetime": "Information"
|
||||
}
|
||||
},
|
||||
"Otel": {
|
||||
"EnableTracing": true,
|
||||
"Endpoint": "http://localhost:4317",
|
||||
"Dsn": ""
|
||||
},
|
||||
"ZCodeUrl": "https://qrcode.steamware.net/",
|
||||
"BaseUrl": "https://corelocal.egalware.com/",
|
||||
"BaseAppPath": "/pizzaferri/"
|
||||
"RuntimeOpt": {
|
||||
"BaseUrl": "https://corelocal.egalware.com",
|
||||
"BaseAppPath": "/pizzaferri/"
|
||||
}
|
||||
}
|
||||
+18
-19
@@ -5,29 +5,24 @@
|
||||
"Microsoft": "Warning",
|
||||
"Microsoft.Hosting.Lifetime": "Information"
|
||||
}
|
||||
//"LogLevel": {
|
||||
// "Default": "Debug",
|
||||
// "System": "Information",
|
||||
// "Microsoft": "Information",
|
||||
// "Microsoft.AspNetCore.SignalR": "Debug",
|
||||
// "Microsoft.AspNetCore.Http.Connections": "Debug"
|
||||
//}
|
||||
},
|
||||
"Otel": {
|
||||
"EnableTracing": true,
|
||||
"Endpoint": "https://uptrace.egalware.com:14317",
|
||||
"Dsn": "https://DC_iX71mEzg7KA7atQEBdQ@uptrace.egalware.com?grpc=14317"
|
||||
},
|
||||
"AllowedHosts": "*",
|
||||
"ConnectionStrings": {
|
||||
"Redis": "localhost:6379",
|
||||
//"AuthConnection": "Server=10.74.83.97;port=3306;database=GWMS;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;",
|
||||
//"DefaultConnection": "Server=10.74.83.97;port=3306;database=GWMS;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;",
|
||||
//"AdminConnection": "Server=10.74.83.97;port=3306;database=GWMS;user=root;pwd=Egalware_24068!;sslmode=None;",
|
||||
//"GWMS.Data": "Server=10.74.83.97;port=3306;database=GWMS;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;"
|
||||
"Redis": "redis.ufficio:26379, serviceName=devel, DefaultDatabase=13, connectTimeout=3000, syncTimeout=3000, asyncTimeout=3000, abortConnect=false, ssl=false, allowAdmin=true",
|
||||
"AuthConnection": "Server=localhost;port=3306;database=GWMS;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;",
|
||||
"DefaultConnection": "Server=localhost;port=3306;database=GWMS;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;",
|
||||
"AdminConnection": "Server=localhost;port=3306;database=GWMS;user=root;pwd=Egalware_24068!;sslmode=None;",
|
||||
"GWMS.Data": "Server=localhost;port=3306;database=GWMS;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;"
|
||||
},
|
||||
"DbConfig": {
|
||||
//"Server": "10.74.83.97",
|
||||
"Server": "localhost",
|
||||
//"Server": "localhost",
|
||||
"Server": "mdb.ufficio",
|
||||
//"Server": "mdb.ovh",
|
||||
"nKey": "PZZFRR",
|
||||
"sKey": "M3T@n0"
|
||||
},
|
||||
@@ -36,13 +31,17 @@
|
||||
"MaxLogRecord": 360,
|
||||
"ZCodeUrl": "https://qrcode.steamware.net/",
|
||||
"ChartWaitDelay": 10,
|
||||
"BaseUrl": "https://localhost:44339/",
|
||||
"BaseAppPath": "",
|
||||
"QrRedirPage": "",
|
||||
"jumpRedir": "~/../../",
|
||||
"logo": "img/LogoPizzaferri.jpg",
|
||||
"ReloadParamTimer": 15000,
|
||||
"ReloadStatusTimer": 30000,
|
||||
"ReloadStatusTimer": 20000,
|
||||
"RuntimeOpt": {
|
||||
"CodApp": "GWMS",
|
||||
"RoundFact": 1000,
|
||||
"NumPar": 4,
|
||||
"BaseUrl": "https://localhost:5003",
|
||||
"BaseAppPath": "/pizzaferri/",
|
||||
"QrRedirPage": ""
|
||||
},
|
||||
"ExternalProviders": {
|
||||
"MailKit": {
|
||||
"SMTP": {
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
param([string]$ProjectDir, [string]$ProjectPath);
|
||||
param([string]$ProjectDir, [string]$ProjectPath, [string]$Config);
|
||||
|
||||
# rif esempi parametri: https://learn.microsoft.com/en-us/visualstudio/ide/how-to-specify-build-events-csharp?view=vs-2022
|
||||
|
||||
|
||||
$FileVers="..\Resources\VersNum.txt"
|
||||
$FileManIn="..\Resources\manifest-original.xml"
|
||||
$FileManOut="..\Resources\manifest.xml"
|
||||
$FileCLogIn="..\Resources\ChangeLog-original.html"
|
||||
$FileCLogOut="..\Resources\ChangeLog.html"
|
||||
$MajMin="1.0."
|
||||
$MajMin="1.2."
|
||||
$currentDate = get-date -format yyMM;
|
||||
$currentTime = get-date -format ddHH;
|
||||
$find = "<Version>(.|\n)*?</Version>";
|
||||
@@ -29,3 +32,4 @@ Set-Content -Path $FileManOut -Value $manData
|
||||
$clogData = Get-Content $FileCLogIn
|
||||
$clogData = $clogData -replace "{{CURRENT-REL}}", $currRelNum
|
||||
Set-Content -Path $FileCLogOut -Value $clogData
|
||||
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
param([string]$ProjectDir, [string]$ProjectPath, [string]$Config);
|
||||
|
||||
# rif esempi parametri: https://learn.microsoft.com/en-us/visualstudio/ide/how-to-specify-build-events-csharp?view=vs-2022
|
||||
|
||||
# selezione corretto NLof.config secondo config corrente
|
||||
cd $ProjectDir
|
||||
if ( $Config -eq "Debug" )
|
||||
{
|
||||
Copy-Item "NLog.config.dev" -Destination "NLog.config" -Force
|
||||
}
|
||||
else
|
||||
{
|
||||
Copy-Item "NLog.config.rel" -Destination "NLog.config" -Force
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
<body>
|
||||
<i>GWMS - Gas Warehouse Management System</i>
|
||||
<h4>Versione: 1.0.2402.1919</h4>
|
||||
<h4>Versione: 1.2.2603.1310</h4>
|
||||
<br /> Note di rilascio:
|
||||
<ul>
|
||||
<li>
|
||||
|
||||
@@ -1 +1 @@
|
||||
1.0.2402.1919
|
||||
1.2.2603.1310
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<item>
|
||||
<version>1.0.2402.1919</version>
|
||||
<version>1.2.2603.1310</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>
|
||||
|
||||
Reference in New Issue
Block a user