Files
gwms/GWMS.UI/Components/OrderAdminEditor.razor
T
2021-08-20 09:21:08 +02:00

306 lines
13 KiB
Plaintext

@using GWMS.UI.Components
@using GWMS.Data.DatabaseModels
@using System.Security.Claims
@using Microsoft.AspNetCore.Components.Authorization
@using GWMS.UI.Data
@using Microsoft.Extensions.Configuration
@inject MessageService AppMService
@inject GWMSDataService DataService
@inject NavigationManager NavManager
@inject IConfiguration Configuration
@inject IJSRuntime JSRuntime
<div class="card">
<div class="card-header bg-info text-light">
<b>Modifica</b>
</div>
<div class="card-body small p-1">
<EditForm Model="@_currItem">
<DataAnnotationsValidator />
<div class="row">
<div class="col-12 col-lg-1">
<img src="@getImgUrl(_currItem.OrderCode)" class="img-fluid" width="85" />
</div>
<div class="col-12 col-lg-9 align-items-center">
<div class="row">
<div class="col-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">
<span class="fas fa-qrcode" aria-hidden="true"></span>
</span>
</div>
<InputText @bind-Value="@_currItem.OrderCode" class="form-control"></InputText>
</div>
</div>
<div class="col-3 pl-0">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><span class="fas fa-calendar" aria-hidden="true"></span></span>
</div>
<DateEdit class="form-control" InputMode="DateInputMode.DateTime" @bind-Date="@_currItem.DtOrder" />
</div>
</div>
<div class="col-3 pl-0">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">
<span class="fas fa-industry" aria-hidden="true"></span>
</span>
</div>
<InputSelect @bind-Value="@_currItem.SupplierId" class="form-control" title="Fornitore">
@foreach (var item in suppList)
{
<option value="@item.SupplierId">@item.SupplierCode | @item.SupplierDesc</option>
}
</InputSelect>
</div>
</div>
<div class="col-3 pl-0">
<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>
<InputSelect @bind-Value="@_currItem.TransporterId" title="Trasportatore" class="form-control small">
@foreach (var item in transpList)
{
<option value="@item.TransporterId">@item.TransporterCode | @item.TransporterDesc</option>
}
</InputSelect>
</div>
</div>
<div class="col-9 mt-2">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">
<span class="fas fa-comment-alt" aria-hidden="true"></span>
</span>
</div>
<InputText id="OrderDesc" @bind-Value="_currItem.OrderDesc" class="form-control" title="Note Ordine (opzionali)"></InputText>
<div class="input-group-append">
<span class="input-group-text">note</span>
</div>
</div>
</div>
<div class="col-3 pl-0 mt-2">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">
<span class="fas fa-weight" aria-hidden="true"></span>
</span>
</div>
<InputNumber @bind-Value="@_currItem.OrderQty" class="form-control"></InputNumber>
<div class="input-group-append">
<span class="input-group-text">kg</span>
</div>
</div>
</div>
</div>
</div>
<div class="col-12 col-lg-2">
<div class="row">
<div class="col-8 pr-0">
<button type="button" class="btn btn-warning btn-block" value="Cancel" @onclick="cancelUpdate">Cancel <i class="fas fa-ban"></i></button>
<div class="mt-2">
<button type="button" class="btn btn-success btn-block" value="Save" @onclick="saveUpdate">Save <i class="far fa-save"></i></button>
</div>
</div>
<div class="col-4">
<button type="button" class="btn btn btn-danger btn-block h-100" value="Delete" @onclick="deleteRecord" title="Delete"><i class="fas fa-trash"></i></button>
</div>
</div>
</div>
</div>
@if (editAll)
{
<div class="row mt-2">
<div class="col-12 col-lg-1">
</div>
<div class="col-12 col-lg-9 align-items-center">
<div class="row">
<div class="col-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><span class="fas fa-calendar" aria-hidden="true"></span></span>
</div>
<DateEdit class="form-control" InputMode="DateInputMode.DateTime" @bind-Date="@_currItem.DtExecStart" />
@*<div class="input-group-append">
<span class="input-group-text">inizio carico</span>
</div>*@
</div>
</div>
<div class="col-3 pl-0">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><span class="fas fa-database" aria-hidden="true"></span></span>
</div>
<InputNumber @bind-Value="@_currItem.LevelStart" class="form-control"></InputNumber>
<div class="input-group-append">
<span class="input-group-text">inizio</span>
</div>
</div>
</div>
<div class="col-3 pl-0">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><span class="fas fa-calendar" aria-hidden="true"></span></span>
</div>
<DateEdit class="form-control" InputMode="DateInputMode.DateTime" @bind-Date="@_currItem.DtExecEnd" />
@*<div class="input-group-append">
<span class="input-group-text">fine carico</span>
</div>*@
</div>
</div>
<div class="col-3 pl-0">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><span class="fas fa-database" aria-hidden="true"></span></span>
</div>
<InputNumber @bind-Value="@_currItem.LevelEnd" class="form-control"></InputNumber>
<div class="input-group-append">
<span class="input-group-text">fine</span>
</div>
</div>
</div>
</div>
</div>
<div class="col-12 col-lg-2">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">
<span class="fas fa-weight" aria-hidden="true"></span>
</span>
</div>
<InputNumber @bind-Value="@_currItem.ExecutionQty" class="form-control"></InputNumber>
<div class="input-group-append">
<span class="input-group-text">kg</span>
</div>
</div>
</div>
</div>
}
</EditForm>
</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)
{
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)
{
DataService.OrderDelete(_currItem);
await DataUpdated.InvokeAsync(1);
}
else
{
Console.WriteLine("User null!");
}
}
protected override async Task OnInitializedAsync()
{
await ReloadAllData();
}
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;
}
}