Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop

This commit is contained in:
Annamaria Sassi
2026-03-24 09:37:02 +01:00
16 changed files with 133 additions and 46 deletions
@@ -102,6 +102,8 @@ namespace EgwCoreLib.Lux.Data
// aggiunta servizi finali Singleton...
services.TryAddSingleton<IImageCacheService, ImageCacheService>();
services.TryAddSingleton<IConfigDataService, ConfigDataService>();
services.TryAddSingleton<ICalcRequestService, CalcRequestService>();
services.TryAddSingleton<IFileService, FileService>();
//services.TryAddSingleton<CalcRequestService>();
@@ -2,9 +2,9 @@
using NLog;
using RestSharp;
namespace EgwCoreLib.Lux.Data.Services
namespace EgwCoreLib.Lux.Data.Services.General
{
public class CalcRequestService
public class CalcRequestService : ICalcRequestService
{
#region Public Constructors
@@ -1,12 +1,12 @@
using Microsoft.Extensions.Configuration;
using NLog;
namespace EgwCoreLib.Lux.Data.Services
namespace EgwCoreLib.Lux.Data.Services.General
{
/// <summary>
/// Gestione IO File-based
/// </summary>
public class FileService
public class FileService : IFileService
{
#region Public Constructors
@@ -98,6 +98,7 @@ namespace EgwCoreLib.Lux.Data.Services
}
return answ;
}
/// <summary>
/// Esegue salvataggio del file ricevuto path, securename e content
/// </summary>
@@ -127,6 +128,7 @@ namespace EgwCoreLib.Lux.Data.Services
}
return answ;
}
/// <summary>
/// Effettua salvataggio di un ContentStream generico (non semplice string)
/// </summary>
@@ -161,7 +163,6 @@ namespace EgwCoreLib.Lux.Data.Services
return answ;
}
#endregion Public Methods
#region Private Fields
@@ -0,0 +1,24 @@
using Microsoft.Extensions.Configuration;
using RestSharp;
namespace EgwCoreLib.Lux.Data.Services.General
{
/// <summary>
/// Interfaccia servizio richiesta calcolo
/// </summary>
public interface ICalcRequestService
{
#region Public Methods
/// <summary>
/// Effettua una generica chiamata ApiRest POST
/// </summary>
/// <param name="ApiUrl">URL Api di base</param>
/// <param name="ApiRequest">Endpoint richiesta</param>
/// <param name="rawBody">Corpo Json trasmesso con richiesta</param>
/// <returns>Risposta dalla chiamata REST</returns>
Task<RestResponse> CallRestPost(string ApiUrl, string ApiRequest, object rawBody);
#endregion Public Methods
}
}
@@ -0,0 +1,57 @@
using System.IO;
namespace EgwCoreLib.Lux.Data.Services.General
{
/// <summary>
/// Interfaccia servizio gestione IO File-based
/// </summary>
public interface IFileService
{
#region Public Methods
/// <summary>
/// Eliminazione file
/// </summary>
/// <param name="folderPath">Cartella del file</param>
/// <param name="secureName">Nome secure del file</param>
/// <returns>True se eliminato con successo</returns>
bool DeleteOldFile(string folderPath, string secureName);
/// <summary>
/// Restituisce il contenuto del file salvato
/// </summary>
/// <param name="folderPath">Cartella del file</param>
/// <param name="secureName">Nome secure del file</param>
/// <returns>Contenuto del file come stringa</returns>
string LoadFileContent(string folderPath, string secureName);
/// <summary>
/// Salva contenuto file (sincrono)
/// </summary>
/// <param name="folderPath">Cartella del file</param>
/// <param name="secureName">Nome secure del file</param>
/// <param name="content">Contenuto file</param>
/// <returns>True se salvato con successo</returns>
bool SaveFileContent(string folderPath, string secureName, string content);
/// <summary>
/// Salva contenuto file asincrono
/// </summary>
/// <param name="folderPath">Cartella del file</param>
/// <param name="secureName">Nome secure del file</param>
/// <param name="content">Contenuto file</param>
/// <returns>True se salvato con successo</returns>
Task<bool> SaveFileContentAsync(string folderPath, string secureName, string content);
/// <summary>
/// Salva stream file generico
/// </summary>
/// <param name="folderPath">Cartella del file</param>
/// <param name="secureName">Nome secure del file</param>
/// <param name="contentStream">Stream contenitore dati</param>
/// <returns>True se salvato con successo</returns>
Task<bool> SaveFileStreamAsync(string folderPath, string secureName, Stream contentStream);
#endregion Public Methods
}
}
@@ -34,7 +34,7 @@ namespace EgwCoreLib.Lux.Data.Services.General
// conf tag x cache
liveTag = _config.GetValue<string>("ServerConf:ImageLiveTag") ?? "svg";
cacheTag = _config.GetValue<string>("ServerConf:ImageFileTag") ?? "svgfile";
calcTag = _config.GetValue<string>("ServerConf:ImageCalcTag") ?? "svg-preview";
imgCalcTag = _config.GetValue<string>("ServerConf:ImageCalcTag") ?? "live";
// verifico la url base
apiUrl = _config.GetValue<string>("ServerConf:Prog.ApiUrl") ?? "https://iis01.egalware.com/lux/srv/api";
imgBasePath = _config.GetValue<string>("ServerConf:ImageBaseUrl") ?? "window";
@@ -548,7 +548,7 @@ namespace EgwCoreLib.Lux.Data.Services.General
private readonly string cacheTag = "svgfile";
private readonly string calcTag = "svgpreview";
private readonly string imgCalcTag = "live";
private readonly string chBom = "lux:bom";
@@ -572,7 +572,7 @@ namespace EgwCoreLib.Lux.Data.Services.General
private readonly string chSvg = "lux:svg:img";
private readonly string chUpdate = "lux::update";
private readonly string chUpdate = "lux:update";
private readonly string imgBasePath = "";
@@ -86,7 +86,7 @@ namespace Lux.UI.Components.Compo.Config
private ICalcRuidService CRService { get; set; } = null!;
[Inject]
private CalcRequestService CService { get; set; } = null!;
private ICalcRequestService CService { get; set; } = null!;
[Inject]
private DataLayerServices DLService { get; set; } = null!;
@@ -97,7 +97,7 @@ namespace Lux.UI.Components.Compo.Config
private ICalcRuidService CRService { get; set; } = null!;
[Inject]
private CalcRequestService CService { get; set; } = null!;
private ICalcRequestService CService { get; set; } = null!;
private string cssBtnThresh
{
@@ -1,6 +1,7 @@
using EgwCoreLib.Lux.Data.DbModel.Items;
using EgwCoreLib.Lux.Data.DbModel.Job;
using EgwCoreLib.Lux.Data.Services;
using EgwCoreLib.Lux.Data.Services.General;
using EgwCoreLib.Lux.Data.Services.Items;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Forms;
@@ -28,16 +29,19 @@ namespace Lux.UI.Components.Compo.Item
#endregion Public Properties
#region Private Fields
private string folderPath = "static";
#endregion Private Fields
#region Private Properties
[Inject]
private DataLayerServices DLService { get; set; } = null!;
[Inject]
private ISellingItemService SIService { get; set; } = null!;
[Inject]
private FileService FService { get; set; } = null!;
private IFileService FService { get; set; } = null!;
/// <summary>
/// Wrapper per valore margine in modalità decimal
@@ -54,6 +58,9 @@ namespace Lux.UI.Components.Compo.Item
}
}
[Inject]
private ISellingItemService SIService { get; set; } = null!;
#endregion Private Properties
#region Private Methods
@@ -75,9 +82,6 @@ namespace Lux.UI.Components.Compo.Item
return EC_Updated.InvokeAsync(CurrRecord);
}
private string folderPath = "static";
private List<EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS> ListEnvir()
{
var tmpList = Enum.GetValues(typeof(EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS))
@@ -105,7 +105,7 @@ namespace Lux.UI.Components.Compo
private ICalcRuidService CRService { get; set; } = null!;
[Inject]
private CalcRequestService CService { get; set; } = null!;
private ICalcRequestService CService { get; set; } = null!;
[Inject]
private DataLayerServices DLService { get; set; } = null!;
+2 -2
View File
@@ -301,7 +301,7 @@ namespace Lux.UI.Components.Compo
private ICalcRuidService CRService { get; set; } = default!;
[Inject]
private CalcRequestService CService { get; set; } = default!;
private ICalcRequestService CService { get; set; } = default!;
[Inject]
private IWebHostEnvironment CurrEnv { get; set; } = default!;
@@ -316,7 +316,7 @@ namespace Lux.UI.Components.Compo
private IEnvirParamService EPService { get; set; } = null!;
[Inject]
private FileService FService { get; set; } = default!;
private IFileService FService { get; set; } = default!;
/// <summary>
/// Costo totale calcolato x offerta
+1 -1
View File
@@ -359,7 +359,7 @@ namespace Lux.UI.Components.Compo
private ICalcRuidService CRService { get; set; } = null!;
[Inject]
private CalcRequestService CService { get; set; } = null!;
private ICalcRequestService CService { get; set; } = null!;
[Inject]
private IConfWoodService CWService { get; set; } = null!;
@@ -269,7 +269,7 @@ namespace Lux.UI.Components.Compo.Templates
private ICalcRuidService CRService { get; set; } = null!;
[Inject]
private CalcRequestService CService { get; set; } = null!;
private ICalcRequestService CService { get; set; } = null!;
[Inject]
private IConfGlassService CGService { get; set; } = null!;
@@ -1,7 +1,8 @@
using EgwCoreLib.Lux.Data.DbModel.Catalog;
using EgwCoreLib.Lux.Data.DbModel.Items;
using EgwCoreLib.Lux.Data.Services;
using EgwCoreLib.Lux.Data.Services.General;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Forms;
namespace Lux.UI.Components.Compo.Templates
@@ -35,25 +36,6 @@ namespace Lux.UI.Components.Compo.Templates
#region Private Fields
/// <summary>
/// Check visibilità upload dato il selling item ID corrente
/// </summary>
/// <param name="sellItemId"></param>
/// <returns></returns>
private bool ShowImgUpload(int sellItemId)
{
bool answ = false;
if (sellItemId > 0)
{
var selRec = ListSellinglItems.FirstOrDefault(x => x.SellingItemID == sellItemId);
if (selRec != null)
{
answ = selRec.ImgType != EgwCoreLib.Lux.Core.Enums.ImageType.Calculated;
}
}
return answ;
}
/// <summary>
/// Path da parent record
/// </summary>
@@ -66,7 +48,7 @@ namespace Lux.UI.Components.Compo.Templates
#region Private Properties
[Inject]
private FileService FService { get; set; } = null!;
private IFileService FService { get; set; } = null!;
#endregion Private Properties
@@ -91,6 +73,25 @@ namespace Lux.UI.Components.Compo.Templates
return EC_Updated.InvokeAsync(CurrRecord);
}
/// <summary>
/// Check visibilità upload dato il selling item ID corrente
/// </summary>
/// <param name="sellItemId"></param>
/// <returns></returns>
private bool ShowImgUpload(int sellItemId)
{
bool answ = false;
if (sellItemId > 0)
{
var selRec = ListSellinglItems.FirstOrDefault(x => x.SellingItemID == sellItemId);
if (selRec != null)
{
answ = selRec.ImgType != EgwCoreLib.Lux.Core.Enums.ImageType.Calculated;
}
}
return answ;
}
private async Task UploadFile(InputFileChangeEventArgs e)
{
IBrowserFile file = e.File;
@@ -75,7 +75,7 @@ namespace Lux.UI.Components.Pages
private ICalcRuidService CRService { get; set; } = null!;
[Inject]
private CalcRequestService CService { get; set; } = null!;
private ICalcRequestService CService { get; set; } = null!;
[Inject]
private DataLayerServices DLService { get; set; } = null!;
-2
View File
@@ -185,8 +185,6 @@ builder.Services.AddIdentityCore<ApplicationUser>(options => options.SignIn.Requ
builder.Services.AddSingleton<IEmailSender<ApplicationUser>, IdentityNoOpEmailSender>();
// Aggiunta servizi specifici
builder.Services.AddSingleton<FileService>();
builder.Services.AddSingleton<CalcRequestService>();
builder.Services.AddSingleton<ProdService>();
// aggiunta componenti Radzen