@using ftl.app.Shared.Dto.Catalog
@using Newtonsoft.Json
@using Syncfusion.Blazor.Data
@using System.Linq
@inject IOrderService OrderService;
@inject ICatalogService CatalogService;
@inject NavigationManager NavigationManager;
@inject AuthenticationStateProvider AuthenticationStateProvider
@code {
[Parameter]
public Customer Customer { get; set; }
[Parameter]
public Order Order { get; set; } = new Order();
#region Catalogs
private string GroupCode { get; set; }
private byte CurrentWeek { get; set; }
private List WeeksCatalog { get; set; }
private byte SelectedWeek { get; set; }
public Query WeeksCatalogQuery = new Query().Select(new List { nameof(Week.WeekNumber) }).Take(10).RequiresCount();
private List ProductsCatalog { get; set; }
private string SelectedProduct { get; set; } = string.Empty;
public Query ProductsCatalogQuery = new Query().Select(new List { nameof(Product.Id) }).Take(10).RequiresCount();
private List ShippingCompaniesCatalog { get; set; }
private string SelectedShippingCompany { get; set; } = string.Empty;
public Query ShippingCompaniesCatalogQuery = new Query().Select(new List { nameof(ShippingCompany.Code) }).Take(10).RequiresCount();
private List ContractsCatalog { get; set; }
private string SelectedContract { get; set; } = string.Empty;
public Query ContractsCatalogQuery = new Query().Select(new List { nameof(ShippingCompany.Code) }).Take(10).RequiresCount();
private List ShippingPortsCatalog { get; set; }
private string SelectedShippingPort { get; set; } = string.Empty;
public Query ShippingPortsCatalogQuery = new Query().Select(new List { nameof(ShippingPort.Code) }).Take(10).RequiresCount();
private List DestinationPortsCatalog { get; set; }
private string SelectedDestinationPort { get; set; } = string.Empty;
public Query DestinationPortsCatalogQuery = new Query().Select(new List { nameof(DestinationPort.Code) }).Take(10).RequiresCount();
public string ProductCode { get; set; }
public decimal ProductPrice { get; set; }
public int Boxes { get; set; }
public int BoxesPerContainer { get; set; }
public int Containers { get; set; }
#endregion
protected override async Task OnInitializedAsync()
{
await LoadCatalogs();
}
private async Task LoadCatalogs()
{
CurrentWeek = await CatalogService.RetrieveCurrentWeek();
SelectedWeek = CurrentWeek;
WeeksCatalog = (await CatalogService.RetrieveWeeksCatalog(DateTime.Now.Year.ToString()))
.Where(w => w.WeekNumber >= CurrentWeek).ToList();
ShippingCompaniesCatalog = await CatalogService.RetrieveShippingCompanyCatalog();
ContractsCatalog = await CatalogService.RetrieveShippingCompanyCatalog();
ProductsCatalog = await CatalogService.RetrieveProductsCatalogByCustomerId(Customer.Id);
DestinationPortsCatalog = await CatalogService.RetrieveDestinationPortCatalogByCustomerId(Customer.Id);
GroupCode = $"{SelectedWeek:00}{Customer.Id}01";
StateHasChanged();
}
public async Task OnShippingCompanyChange(Syncfusion.Blazor.DropDowns.ChangeEventArgs args)
{
var itemData = JsonConvert.DeserializeObject(args.ItemData != null ? args.ItemData.ToString() : "");
ShippingPortsCatalog = await CatalogService.RetrieveShippingPortCatalog(SelectedShippingCompany);
SelectedShippingPort = string.Empty;
StateHasChanged();
}
private void OnSpotChange(Microsoft.AspNetCore.Components.ChangeEventArgs args)
{
//onChange Event triggered
}
private void ProductChange(@Syncfusion.Blazor.DropDowns.ChangeEventArgs args)
{
var product = ProductsCatalog.Where(p => p.Id == args.Value).FirstOrDefault();
ProductCode = product.Id;
ProductPrice = Convert.ToDecimal(product.UnitPrice);
BoxesPerContainer = product.BoxPerContainer;
//Enabled = true;
}
private void OnBoxesChange(@Syncfusion.Blazor.Inputs.ChangeEventArgs args)
{
Containers = Boxes / BoxesPerContainer;
}
private void OnContainersChange(@Syncfusion.Blazor.Inputs.ChangeEventArgs args)
{
Boxes = Containers * BoxesPerContainer;
}
public void RowDataBoundHandler(RowDataBoundEventArgs args)
{
// Here you can customize your code
}
#region Spinner
SfSpinner SpinnerObj;
private string target { get; set; } = "#main-text";
void ShowSpinner()
{
SpinnerObj.ShowSpinner(target);
}
void HideSpinner()
{
SpinnerObj.HideSpinner(target);
}
#endregion
}