120 lines
3.6 KiB
C#
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
|
|
}
|
|
} |