Files
FA_WEB/OrdersManagement/Components/Pages/EdiCustomerOrders.razor

156 lines
5.5 KiB
Plaintext

@page "/EdiCustomerOrders"
@inject EdiCustomerOrderService EdiCustomerOrderService
@inject NavigationManager NavigationManager
@using SytelineSaAppEfDataModel.Dtos
@using FaKrosnoApi.Dtos
@using OrdersManagement.Dtos
@inherits LayoutComponentBase
<div class="row">
<h3>Zamówienia Klienta EDI</h3>
</div>
<br />
<div class="row">
<div class="col-md-12">
<Switch ValueExpression="() => _filter" ValueChanged="FilterChanged" Label="Pokaż tylko niezaksięgowane" />
</div>
</div>
<br />
@if (_isVisible)
{
<div class="row">
<div class="col-md-12">
<Button Color="ButtonColor.Primary" @onclick="SendOrderToSyteLine">Księguj bieżący</Button>
</div>
</div>
}
<br />
<div class="row">
<Grid @ref="_grid"
TItem="EdiCustomerOrderDto"
Class="table table-hover table-bordered table-striped"
DataProvider="EdiCustomerOrdersDataProvider"
AllowFiltering="true"
Responsive="true"
AllowPaging="true"
PageSize="20"
AllowSelection="true"
AllowRowClick="true"
OnRowDoubleClick="OnRowDoubleClick"
SelectedItemsChanged="SelectedItemsChanged">
<GridColumns>
<GridColumn TItem="EdiCustomerOrderDto" HeaderText="CO Number" PropertyName="CustomerOrderNumber">
@context.CustomerOrderNumber
</GridColumn>
<GridColumn TItem="EdiCustomerOrderDto" HeaderText="Customer Number" PropertyName="CustomerNumber">
@context.CustomerNumber
</GridColumn>
<GridColumn TItem="EdiCustomerOrderDto" HeaderText="Recipient" PropertyName="CustomerSequence">
@context.CustomerSequence
</GridColumn>
<GridColumn TItem="EdiCustomerOrderDto" HeaderText="Last Update Date" PropertyName="CreateDate">
@context.CreateDate
</GridColumn>
<GridColumn TItem="EdiCustomerOrderDto" HeaderText="Gate" PropertyName="Gate">
@context.Gate
</GridColumn>
<GridColumn TItem="EdiCustomerOrderDto" HeaderText="RecipientCode" PropertyName="RecipientCode">
@context.RecipientCode
</GridColumn>
<GridColumn TItem="EdiCustomerOrderDto" HeaderText="SellerCode" PropertyName="SellerCode">
@context.SellerCode
</GridColumn>
<GridColumn TItem="EdiCustomerOrderDto" HeaderText="SenderCode" PropertyName="SenderCode">
@context.SenderCode
</GridColumn>
<GridColumn TItem="EdiCustomerOrderDto" HeaderText="BuyerCode" PropertyName="BuyerCode">
@context.BuyerCode
</GridColumn>
</GridColumns>
</Grid>
</div>
<Modal @ref="_modal" Title="@_modalDto.Title">
<BodyTemplate>
@_modalDto.Body
</BodyTemplate>
<FooterTemplate>
<Button Color="ButtonColor.Primary" @onclick="OnHideModalClick">OK</Button>
</FooterTemplate>
</Modal>
@code {
Grid<EdiCustomerOrderDto>? _grid;
private IEnumerable<EdiCustomerOrderDto>? _ediCustomerOrders;
private EdiCustomerOrderDto? _selectedEdiCustomerOrder;
private Modal _modal = default!;
private ModalDto _modalDto = new(null, null);
private bool _isVisible;
private bool _filter;
private async Task<GridDataProviderResult<EdiCustomerOrderDto>> EdiCustomerOrdersDataProvider(GridDataProviderRequest<EdiCustomerOrderDto> request)
{
_ediCustomerOrders = await EdiCustomerOrderService.GetEdiCustomerOrdersAsync() ?? new List<EdiCustomerOrderDto>();
_ediCustomerOrders = _ediCustomerOrders.OrderByDescending(x => x.CreateDate).ToList();
if (_filter)
{
_ediCustomerOrders = _ediCustomerOrders.Where(x => x.Posted == 0).ToList();
}
StateHasChanged();
return await Task.FromResult(request.ApplyTo(_ediCustomerOrders));
}
private void OnRowDoubleClick(GridRowEventArgs<EdiCustomerOrderDto> obj)
{
string customerOrderId = obj.Item.CustomerOrderNumber;
NavigationManager.NavigateTo($"/EdiCustomerOrder/{customerOrderId}");
}
private async void SendOrderToSyteLine()
{
if (_selectedEdiCustomerOrder == null) return;
ResponseDto response = await EdiCustomerOrderService.SendOrderToSyteline(_selectedEdiCustomerOrder.CustomerOrderNumber);
if (response.Status == 1)
{
_modalDto = new ModalDto("Wysłano", $"Zamówienie EDI {_selectedEdiCustomerOrder.CustomerOrderNumber} zostało poprawnie zaksięgowane w Zamówieniach klienta pod numerem '{_selectedEdiCustomerOrder.EdiCustomerOrderTranslates.FirstOrDefault()?.CoCoNum}'");
await _modal.ShowAsync();
_grid?.RefreshDataAsync();
}
else
{
_modalDto = new ModalDto("Błąd", $"Zamówienie EDI {_selectedEdiCustomerOrder.CustomerOrderNumber} nie zostało poprawnie zaksięgowane w Zamówieniach klienta.{Environment.NewLine}Lista błędów:{Environment.NewLine}{response.Message}");
await _modal.ShowAsync();
}
}
private void SelectedItemsChanged(HashSet<EdiCustomerOrderDto> obj)
{
_selectedEdiCustomerOrder = obj.FirstOrDefault() ?? null;
_isVisible = _selectedEdiCustomerOrder?.Posted == 0;
}
private async Task OnHideModalClick()
{
await _modal.HideAsync();
}
private void FilterChanged(bool obj)
{
_filter = obj;
_grid?.RefreshDataAsync();
}
}