306 lines
13 KiB
Plaintext
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;
|
|
}
|
|
|
|
} |