diff --git a/MagMan.UI/Components/ItemMan.razor b/MagMan.UI/Components/ItemMan.razor index 0e1fac5..ef5b05d 100644 --- a/MagMan.UI/Components/ItemMan.razor +++ b/MagMan.UI/Components/ItemMan.razor @@ -1,5 +1,117 @@ -

ItemMan

+
+
+
+
+

Articoli

+
+
+
+
+ @if (CurrItem == null) + { + + } + else + { + + } +
+
+
+
+ @if (CurrItem != null) + { +
+ @* *@ + } +
+
+ @if (ListRecords == null || isLoading) + { + + } + else if (totalCount == 0) + { +
Nessun record trovato
+ } + else + { + + + + + + + + + @if (MaterialSel.IsWall) + { + + } + @* *@ + + @* *@ + + + + @foreach (var item in ListRecords) + { + + + + + + + @if (MaterialSel.IsWall) + { + + } + @* *@ + + @* *@ + + } + +
+ + ID Location Note Qty W (mm) H (mm) L (mm)
+ + + + @if (item.IsActive) + { + + + + } + else + { + + + + } +  @item.RawItemId + + @item.Location + + @item.Note + + @item.QtyAvail + + @($"{item.WMm:N2}") + + @($"{item.HMm:N2}") + + @($"{item.LMm:N2}") + + +
+ } + +
+ +
-@code { -} diff --git a/MagMan.UI/Components/ItemMan.razor.cs b/MagMan.UI/Components/ItemMan.razor.cs new file mode 100644 index 0000000..51bfad0 --- /dev/null +++ b/MagMan.UI/Components/ItemMan.razor.cs @@ -0,0 +1,344 @@ +using EgwCoreLib.Razor; +using MagMan.Core.Services; +using MagMan.Data.Tenant.DbModels; +using MagMan.Data.Tenant.Services; +using Microsoft.AspNetCore.Components; +using Microsoft.JSInterop; + +namespace MagMan.UI.Components +{ + public partial class ItemMan + { + #region Public Properties + + [Parameter] + public int CustomerId { get; set; } = 0; + + [Parameter] + public EventCallback E_RawItemSel { get; set; } + + [Parameter] + public int KeyNum { get; set; } = 0; + + [Parameter] + public MaterialModel MaterialSel { get; set; } = null!; + + #endregion Public Properties + + #region Protected Properties + + [Inject] + protected MessageService AppMService { get; set; } = null!; + + [Inject] + protected IConfiguration Configuration { get; set; } = null!; + + [Inject] + protected IJSRuntime JSRuntime { get; set; } = null!; + + protected int totalCount { get; set; } = 0; + + [Inject] + protected TenantService TService { get; set; } = null!; + + #endregion Protected Properties + + #region Protected Methods + + protected string CheckSel(RawItemModel curItem) + { + string answ = ""; + if (CurrItem != null) + { + answ = curItem.RawItemId == CurrItem.RawItemId ? "table-info" : ""; + } + else + { + answ = curItem.RawItemId == RawItemId ? "table-info" : ""; + } + return answ; + } + + protected async Task CreateNew() + { + CurrItem = new RawItemModel() + { + MatId = MaterialSel.MatId, + Location = "nd", + Note = "...", + QtyAvail = 0, + IsActive = true, + IsRemn = false, + HMm = MaterialSel.HMm, + LMm = MaterialSel.LMm, + WMm = MaterialSel.WMm + }; + await InvokeAsync(StateHasChanged); + } + + protected async Task DeleteRecord(RawItemModel selItem) + { + if (!await JSRuntime.InvokeAsync("confirm", "Sicuro di voler eliminare il record?")) + return; + await TService.ItemDelete(KeyNum, selItem); + await ReloadData(); + } + + protected void DoEdit(RawItemModel? selItem) + { + CurrItem = selItem; + if (selItem == null) + { + DoSelect(null); + } + } + + protected void DoSelect(RawItemModel? selItem) + { + if (selItem != null) + { + RawItemId = selItem.MatId; + } + else + { + RawItemId = 0; + } + E_RawItemSel.InvokeAsync(RawItemId); + } + + protected async Task ForceReload(bool force) + { + CurrItem = null; + await ReloadData(); + } + + protected override void OnInitialized() + { + currSearch = ""; + AppMService.EA_SearchUpdated += AppMService_EA_SearchUpdated; + } + + protected override async Task OnParametersSetAsync() + { + await ReloadData(); + } + + protected void SetNumRec(int newNum) + { + numRecord = newNum; + currPage = 1; + InvokeAsync(ReloadData); + } + + protected void SetPage(int newNum) + { + currPage = newNum; + InvokeAsync(ReloadData); + } + + protected async Task SortRequested(Sorter.SortCallBack e) + { + sortField = e.ParamName; + sortAsc = e.IsAscending; + await ReloadData(); + } + + #endregion Protected Methods + + #region Private Fields + + private RawItemModel? CurrItem = null; + private string currSearch = ""; + private int filtType = 0; + private List? ListRecords = null; + private int RawItemId = 0; + private List? SearchRecords = null; + + private bool sortAsc = true; + + private string sortField = ""; + + #endregion Private Fields + + #region Private Properties + + private int currPage { get; set; } = 1; + + private int FiltType + { + get => filtType; + set + { + if (filtType != value) + { + filtType = value; + InvokeAsync(ReloadData); + InvokeAsync(StateHasChanged); + } + } + } + + private bool isLoading { get; set; } = false; + + private int numRecord { get; set; } = 10; + + #endregion Private Properties + + #region Private Methods + + private async void AppMService_EA_SearchUpdated() + { + currSearch = AppMService.SearchVal; + await ReloadData(); + } + + private async Task ReloadData() + { + isLoading = true; + await InvokeAsync(StateHasChanged); + ListRecords = null; + SearchRecords = await TService.ItemGetByMat(KeyNum, MaterialSel.MatId); + // verifico filtro per ricerca + if (!string.IsNullOrEmpty(currSearch)) + { + SearchRecords = SearchRecords.Where(x => x.Note.Contains(currSearch, StringComparison.InvariantCultureIgnoreCase)).ToList(); + } + totalCount = SearchRecords.Count; + SortTable(); + isLoading = false; + await InvokeAsync(StateHasChanged); + } + + private void SortTable() + { + if (SearchRecords != null) + { + // se ho ordinamento riordino... + if (!string.IsNullOrEmpty(sortField)) + { + switch (sortField) + { + case "RawItemId": + if (sortAsc) + { + SearchRecords = SearchRecords.OrderBy(x => x.RawItemId).ThenBy(x => x.Note).ToList(); + } + else + { + SearchRecords = SearchRecords.OrderByDescending(x => x.RawItemId).ThenByDescending(x => x.Note).ToList(); + } + break; + + case "Location": + if (sortAsc) + { + SearchRecords = SearchRecords.OrderBy(x => x.Location).ToList(); + } + else + { + SearchRecords = SearchRecords.OrderByDescending(x => x.Location).ToList(); + } + break; + + case "QtyAvail": + if (sortAsc) + { + SearchRecords = SearchRecords.OrderBy(x => x.QtyAvail).ToList(); + } + else + { + SearchRecords = SearchRecords.OrderByDescending(x => x.QtyAvail).ToList(); + } + break; + + case "Note": + if (sortAsc) + { + SearchRecords = SearchRecords.OrderBy(x => x.Note).ToList(); + } + else + { + SearchRecords = SearchRecords.OrderByDescending(x => x.Note).ToList(); + } + break; + + case "IsActive": + if (sortAsc) + { + SearchRecords = SearchRecords.OrderBy(x => x.IsActive).ToList(); + } + else + { + SearchRecords = SearchRecords.OrderByDescending(x => x.IsActive).ToList(); + } + break; + + case "IsRemn": + if (sortAsc) + { + SearchRecords = SearchRecords.OrderBy(x => x.IsRemn).ToList(); + } + else + { + SearchRecords = SearchRecords.OrderByDescending(x => x.IsRemn).ToList(); + } + break; + + case "W": + if (sortAsc) + { + SearchRecords = SearchRecords.OrderBy(x => x.WMm).ToList(); + } + else + { + SearchRecords = SearchRecords.OrderByDescending(x => x.WMm).ToList(); + } + break; + + case "H": + if (sortAsc) + { + SearchRecords = SearchRecords.OrderBy(x => x.HMm).ToList(); + } + else + { + SearchRecords = SearchRecords.OrderByDescending(x => x.HMm).ToList(); + } + break; + + case "L": + if (sortAsc) + { + SearchRecords = SearchRecords.OrderBy(x => x.LMm).ToList(); + } + else + { + SearchRecords = SearchRecords.OrderByDescending(x => x.LMm).ToList(); + } + break; + + default: + break; + } + } + + // filtro x display + ListRecords = SearchRecords + .Skip(numRecord * (currPage - 1)) + .Take(numRecord) + .ToList(); + } + else + { + ListRecords = new List(); + } + } + + private string textCss(bool isActive) + { + return isActive ? "text-dark" : "text-secondary text-decoration-line-through"; + } + + #endregion Private Methods + } +} \ No newline at end of file diff --git a/MagMan.UI/Components/MaterialMan.razor b/MagMan.UI/Components/MaterialMan.razor index e4163c2..4130b17 100644 --- a/MagMan.UI/Components/MaterialMan.razor +++ b/MagMan.UI/Components/MaterialMan.razor @@ -57,7 +57,7 @@ Descr. W (mm) H (mm) - L (mm) + @* L (mm) *@ @* *@ @@ -66,14 +66,15 @@ { + @if (item.IsBeam) { - - - + + + } else if (@item.IsWall) { @@ -81,7 +82,7 @@ } -  @item.MatId  +  @item.MatId @item.MatCode @@ -90,14 +91,21 @@ @item.MatDesc - @($"{item.WMm:N2}") + @if (item.IsBeam) + { + @($"{item.WMm:N2}") + } + else + { + - + } @($"{item.HMm:N2}") - - @($"{item.LMm:N2}") - + @* + @($"{item.LMm:N2}") + *@ @* *@ diff --git a/MagMan.UI/Components/MaterialMan.razor.cs b/MagMan.UI/Components/MaterialMan.razor.cs index 1900fc8..dad5345 100644 --- a/MagMan.UI/Components/MaterialMan.razor.cs +++ b/MagMan.UI/Components/MaterialMan.razor.cs @@ -19,6 +19,9 @@ namespace MagMan.UI.Components [Parameter] public int CustomerId { get; set; } = 0; + [Parameter] + public EventCallback E_MaterialSel { get; set; } + [Parameter] public int KeyNum { get; set; } = 0; @@ -51,6 +54,10 @@ namespace MagMan.UI.Components { answ = curItem.MatId == CurrItem.MatId ? "table-info" : ""; } + else + { + answ = curItem.MatId == MaterialId ? "table-info" : ""; + } return answ; } @@ -75,6 +82,22 @@ namespace MagMan.UI.Components protected void DoEdit(MaterialModel? selItem) { CurrItem = selItem; + if (selItem == null) + { + DoSelect(null); + } + } + protected void DoSelect(MaterialModel? selItem) + { + if (selItem != null) + { + MaterialId = selItem.MatId; + } + else + { + MaterialId = 0; + } + E_MaterialSel.InvokeAsync(selItem); } protected async Task ForceReload(bool force) @@ -98,11 +121,13 @@ namespace MagMan.UI.Components { numRecord = newNum; currPage = 1; + InvokeAsync(ReloadData); } protected void SetPage(int newNum) { currPage = newNum; + InvokeAsync(ReloadData); } protected async Task SortRequested(Sorter.SortCallBack e) @@ -117,6 +142,7 @@ namespace MagMan.UI.Components #region Private Fields private MaterialModel? CurrItem = null; + private int MaterialId = 0; private string currSearch = ""; private int filtType = 0; @@ -193,7 +219,7 @@ namespace MagMan.UI.Components { switch (sortField) { - case "MatId": + case "RawItemId": if (sortAsc) { SearchRecords = SearchRecords.OrderBy(x => x.MatId).ThenBy(x => x.MatCode).ToList(); diff --git a/MagMan.UI/MagMan.UI.csproj b/MagMan.UI/MagMan.UI.csproj index a6cf88b..3d7a7d0 100644 --- a/MagMan.UI/MagMan.UI.csproj +++ b/MagMan.UI/MagMan.UI.csproj @@ -2,7 +2,7 @@ net6.0 - 1.0.2401.1917 + 1.0.2401.1919 enable enable true diff --git a/MagMan.UI/Pages/Index.razor b/MagMan.UI/Pages/Index.razor index ba53cc2..d1470ea 100644 --- a/MagMan.UI/Pages/Index.razor +++ b/MagMan.UI/Pages/Index.razor @@ -55,7 +55,7 @@
- +

Dati Macchine

@@ -65,7 +65,7 @@
- +

Magazzino

diff --git a/MagMan.UI/Pages/WareHouse.razor b/MagMan.UI/Pages/WareHouse.razor index b8f0fe7..f150fcc 100644 --- a/MagMan.UI/Pages/WareHouse.razor +++ b/MagMan.UI/Pages/WareHouse.razor @@ -28,12 +28,21 @@ } else { - @if (currMode == CtMode.Materials) + @* @if (currMode == CtMode.Materials) { - } else if (currMode == CtMode.Items) { - - } + } *@ +
+
+ +
+ @if (MaterialSel != null) + { +
+ +
+ } +
} \ No newline at end of file diff --git a/MagMan.UI/Pages/WareHouse.razor.cs b/MagMan.UI/Pages/WareHouse.razor.cs index 475beed..dcbe80c 100644 --- a/MagMan.UI/Pages/WareHouse.razor.cs +++ b/MagMan.UI/Pages/WareHouse.razor.cs @@ -1,6 +1,7 @@ using MagMan.Core.Services; using MagMan.Data.Admin.DbModels; using MagMan.Data.Admin.Services; +using MagMan.Data.Tenant.DbModels; using Microsoft.AspNetCore.Components; using YamlDotNet.Core.Tokens; @@ -62,6 +63,7 @@ namespace MagMan.UI.Pages private CtMode currMode = CtMode.Materials; private int KeyNum = 0; + private MaterialModel? MaterialSel = null; #endregion Private Fields @@ -73,6 +75,16 @@ namespace MagMan.UI.Pages #region Private Methods + protected void SaveMat(MaterialModel? newMat) + { + MaterialSel = newMat; + } + + protected string mainCss + { + get => MaterialSel == null ? "col-12" : "col-6 small"; + } + private string IsActive(CtMode modeReq) { string answ = currMode == modeReq ? "active" : ""; diff --git a/Resources/ChangeLog.html b/Resources/ChangeLog.html index 97710c1..c825bf2 100644 --- a/Resources/ChangeLog.html +++ b/Resources/ChangeLog.html @@ -1,6 +1,6 @@ MagMan - Wood Warehouse Management System -

Versione: 1.0.2401.1917

+

Versione: 1.0.2401.1919


Note di rilascio:
  • diff --git a/Resources/VersNum.txt b/Resources/VersNum.txt index 9a730b0..233eb80 100644 --- a/Resources/VersNum.txt +++ b/Resources/VersNum.txt @@ -1 +1 @@ -1.0.2401.1917 +1.0.2401.1919 diff --git a/Resources/manifest.xml b/Resources/manifest.xml index a2540e3..4d2ee54 100644 --- a/Resources/manifest.xml +++ b/Resources/manifest.xml @@ -1,6 +1,6 @@ - 1.0.2401.1917 + 1.0.2401.1919 http://nexus.steamware.net/repository/SWS/MagMan/stable/0/MagMan.UI.zip http://nexus.steamware.net/repository/SWS/MagMan/stable/0/ChangeLog.html false