Files
lux/Lux.UI/Components/Compo/Templates/TemplateRowMan.razor.cs
T
2026-03-13 16:27:39 +01:00

120 lines
3.6 KiB
C#

using EgwCoreLib.Lux.Data.DbModel.Items;
using EgwCoreLib.Lux.Data.DbModel.Sales;
using EgwCoreLib.Lux.Data.Services;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Forms;
namespace Lux.UI.Components.Compo.Templates
{
public partial class TemplateRowMan
{
#region Public Properties
/// <summary>
/// Modello dell'offerta corrente (bindato dal genitore).
/// </summary>
[Parameter]
public TemplateRowModel CurrRecord { get; set; } = null!;
/// <summary>
/// Callback invocato al chiusura della finestra (con valore <c>true</c> per cancellazione).
/// </summary>
[Parameter]
public EventCallback<bool> EC_Close { get; set; }
/// <summary>
/// Callback invocato al salvataggio con record aggiornato
/// </summary>
[Parameter]
public EventCallback<TemplateRowModel> EC_Updated { get; set; }
[Parameter]
public List<SellingItemModel> ListSellinglItems { get; set; } = null!;
#endregion Public Properties
#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>
/// <param name="objID"></param>
/// <returns></returns>
private string folderPath = "static";
#endregion Private Fields
#region Private Properties
[Inject]
private FileService FService { get; set; } = null!;
#endregion Private Properties
#region Private Methods
private Task DoCancel()
{
return EC_Close.InvokeAsync(true);
}
private Task DoClearImg()
{
// imgtype da selling item...
CurrRecord.ImgType = EgwCoreLib.Lux.Core.Enums.ImageType.ND;
CurrRecord.FileName = "";
return EC_Updated.InvokeAsync(CurrRecord);
}
private Task DoSave()
{
// richiesta update con salvataggio record
return EC_Updated.InvokeAsync(CurrRecord);
}
private async Task UploadFile(InputFileChangeEventArgs e)
{
IBrowserFile file = e.File;
var maxAllowedSize = 10 * 1024 * 1024;
if (CurrRecord is null)
return;
string extension = Path.GetExtension(file.Name);
string newFileName = $"{TemplateRowModel.ImgUrl(CurrRecord.TemplateRowID)}{extension}";
// elimino vecchio file
FService.DeleteOldFile(folderPath, CurrRecord.FileName);
// salvo nuovo file (stream → file)
using var stream = file.OpenReadStream(maxAllowedSize);
await FService.SaveFileStreamAsync(folderPath, newFileName, stream);
CurrRecord.ImgType = EgwCoreLib.Lux.Core.Enums.ImageType.Fixed;
CurrRecord.FileName = newFileName;
await EC_Updated.InvokeAsync(CurrRecord);
}
#endregion Private Methods
}
}