Files
webdoorcreator/WebDoorCreator.UI/Pages/OrderDetails.razor.cs
T
2023-03-31 15:06:31 +02:00

109 lines
3.8 KiB
C#

using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.WebUtilities;
using System.Collections.Specialized;
using WebDoorCreator.Data.DbModels;
using WebDoorCreator.UI.Data;
namespace WebDoorCreator.UI.Pages
{
public partial class OrderDetails
{
#region Protected Properties
[Inject]
protected UserManager<IdentityUser> _userManager { get; set; } = null!;
protected DoorModel? currDoor { get; set; } = null;
protected int currDoorType { get; set; } = 0;
/// <summary>
/// Unità di misura selezionata
/// </summary>
protected string currMeaUnit { get; set; } = "mm";
protected List<DoorModel>? DoorsList { get; set; } = null;
protected int idOrd { get; set; } = -1;
[Inject]
protected NavigationManager NavManager { get; set; } = null!;
protected OrderStatusViewModel? OrderStatus { get; set; } = null;
[Inject]
protected WebDoorCreatorService WDService { get; set; } = null!;
[Inject]
protected WDCUserService WDCUService { get; set; } = null!;
#endregion Protected Properties
#region Protected Methods
protected override async Task OnInitializedAsync()
{
await Task.Delay(1);
var uri = NavManager.ToAbsoluteUri(NavManager.Uri);
if (QueryHelpers.ParseQuery(uri.Query).TryGetValue("idOrd", out var _idOrd))
{
idOrd = int.Parse(_idOrd);
}
}
#endregion Protected Methods
#region Private Fields
private List<OrderStatusViewModel>?ListOrdersStatus = null;
protected async Task createDoor()
{
// conto le porte x questo ordine e uso x chiamata successiva...
var door4ord = await WDService.DoorGetByOrderId(idOrd);
int numDoors = door4ord?.Count + 1 ?? 1;
DateTime adesso = DateTime.Now;
// creo una nuova porta...
DoorModel newDoor = new DoorModel()
{
OrderId = idOrd,
MeasureUnit = currMeaUnit,
UserIdIns = WDCUService.userId,
UserIdMod = WDCUService.userId,
UserIdLock = WDCUService.userId,
DateIns = adesso,
DateMod = adesso,
DateLockExpiry = adesso.AddHours(1),
DoorDescript = $"ORD {idOrd} | Door {numDoors:00}",
DoorExtCode = $"ORD {idOrd} | Ext Code --",
Quantity = 1,
UnitCost = 0,
TypeId = 1
};
// chiamo metodo x insert...
var doorId = await WDService.DoorInsert(newDoor);
// aggiungo le lavorazioni standard...
var doorOpList = await WDService.DoorOpGetDefault();
List<DoorOpModel> listOp = doorOpList
.Select(x => new DoorOpModel()
{
DateIns = adesso,
DateMod = adesso,
UserIdIns = WDCUService.userId,
UserIdMod = WDCUService.userId,
DoorOpTypId = x.DoorOpTypId,
DoorId = doorId,
JsoncConfigVal = x.JsoncConfig
})
.ToList();
// salvo Door OP associate
await WDService.DoorOpInsert(doorId, listOp);
// rimando alla pagina... dettaglio...
NavManager.NavigateTo($"/DoorDefinition?idOrd={idOrd}&idDoor={doorId}");
}
#endregion Private Fields
}
}