TourIAm/TIAMSharedUI/Pages/User/Hotels/ManageIncome.razor

192 lines
6.9 KiB
Plaintext

@page "/user/income/{id:guid}"
@using BlazorAnimation
@using TIAM.Core.Enums
@using TIAM.Entities.Emails
@using TIAM.Entities.Transfers
@using TIAM.Resources
@using TIAM.Services
@using TIAMSharedUI.Pages.Components
@using TIAMSharedUI.Shared
@using TIAMWebApp.Shared.Application.Interfaces
@using TIAMWebApp.Shared.Application.Models.ClientSide.UI
@using TIAMWebApp.Shared.Application.Models.ClientSide.UI.WizardModels
@using TIAMWebApp.Shared.Application.Models.PageModels
@using TIAMWebApp.Shared.Application.Utility
@using AyCode.Services.Loggers
@using TIAMWebApp.Shared.Application.Services
@using TIAMSharedUI.Shared.Components.Grids
@using AyCode.Core.Enums
@using AyCode.Core.Extensions
@using AyCode.Core.Consts
@using AyCode.Core
@using AyCode.Core.Helpers
@using DevExpress.Data.Filtering
@using TIAM.Entities.Emails
@using TIAMSharedUI.Shared.Components.BaseComponents
@inherits BasePageComponent
@layout AdminLayout
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
@inject IStringLocalizer<TIAMResources> localizer
@inject IWizardProcessor wizardProcessor
@inject ITransferDataService transferDataService
@inject ISessionService sessionService
@inject AdminSignalRClient AdminSignalRClient;
<PageTitle>Transfers</PageTitle>
<div class="text-center m-5">
<h1>Income</h1>
<h2 style="font-size:small">Manage transfers here!</h2>
</div>
<div class="container-fluid">
<div class="row">
<div class=" col-12">
<Animation Effect="@Effect.FadeIn" Speed="@Speed.Fast" Delay="@TimeSpan.FromMilliseconds(250)">
<div class="card">
<TransferGrid Logger="_logger"
SignalRClient="AdminSignalRClient"
ContextIds="@(Id.IsNullOrEmpty() ? null : [Id])"
GetAllMessageTag="@SignalRTags.GetTransfersByOrderingProductId"
ShowGroupPanel="true"
CustomGroup="Grid_CustomGroup"
CustomizeGroupValueDisplayText="Grid_CustomizeGroupValueDisplayText"
ColumnResizeMode="GridColumnResizeMode.NextColumn"
PageSize="13"
ShowFilterRow="true"
DetailRowDisplayMode="GridDetailRowDisplayMode.Never">
<Columns>
<DxGridDataColumn FieldName="Id" ShowInColumnChooser="AcDomain.IsDeveloperVersion" Visible="AcDomain.IsDeveloperVersion" DisplayFormat="N" />
<DxGridDataColumn FieldName="Appointment" SortOrder="GridColumnSortOrder.Descending" GroupIndex="0" GroupInterval="GridColumnGroupInterval.Custom" DisplayFormat="g" Width="125" />
<DxGridDataColumn FieldName="OrderId" Caption="Order" SortIndex="1" SortOrder="GridColumnSortOrder.Descending">
<CellDisplayTemplate>
@{
var idKeyField = ((Transfer)context.DataItem).Id.ToString("N");
var editUri = $"mytransfers/{idKeyField}";
<NavLink href="@editUri">
<text>@context.Value</text>
</NavLink>
}
</CellDisplayTemplate>
</DxGridDataColumn>
<DxGridDataColumn Caption="Paid" FieldName="Paid" TextAlignment="GridTextAlignment.Center" CaptionAlignment="GridTextAlignment.Center" />
<DxGridDataColumn FieldName="Revenue" Caption="Revenue" CaptionAlignment="GridTextAlignment.Center">
<CellDisplayTemplate>
@{
var idKeyField = ((Transfer)context.DataItem).Id.ToString("N");
<text>Eur @context.Value</text>
}
</CellDisplayTemplate>
</DxGridDataColumn>
</Columns>
</TransferGrid>
</div>
</Animation>
</div>
<div class=" col-12 col-xl-6">
</div>
</div>
</div>
@code {
[Parameter]
public Guid Id { get; set; }
private LoggerClient<ManageIncome> _logger;
private TransferGrid _gridTransfer;
private DxTagBox<TransferStatusModel, TransferStatusModel> _filterTag;
void Grid_CustomizeElement(GridCustomizeElementEventArgs e)
{
try
{
if (e.ElementType == GridElementType.HeaderCell)
{
e.Style = "background-color: rgba(0, 0, 0, 0.08)";
e.CssClass = "header-bold";
}
if (e.ElementType != GridElementType.DataRow) return;
var transferStatus = e.Grid?.GetRowValue(e.VisibleIndex, "TransferStatusType");
if (transferStatus == null) return;
var transferStatusByte = (byte)transferStatus;
switch (transferStatusByte)
{
case 5:
e.CssClass = "bg-important";
break;
case > 5 and < 35:
e.CssClass = "bg-attention";
break;
case 35:
e.CssClass = "bg-finished";
break;
case > 35:
e.CssClass = "bg-cancel";
break;
}
}
catch (Exception ex)
{
_logger.Error($"Grid_CustomizeElement; {ex.Message}", ex);
}
}
void Grid_CustomGroup(GridCustomGroupEventArgs e)
{
if (e.FieldName == "Appointment")
{
e.SameGroup = Grid_CompareColumnValues(((DateTime)e.Value1), ((DateTime)e.Value2));
e.Handled = true;
}
}
bool Grid_CompareColumnValues(DateTime value1, DateTime value2)
{
if (value1.Year == value2.Year && value1.Month == value2.Month)
return true;
else
return false;
}
void Grid_CustomizeGroupValueDisplayText(GridCustomizeGroupValueDisplayTextEventArgs e)
{
if (e.FieldName == "Appointment")
{
string displayText = $"{((DateTime)e.Value).Year.ToString()}.{((DateTime)e.Value).Month.ToString()}";
e.DisplayText = displayText;
}
}
protected override Task OnInitializedAsync()
{
_logger = new LoggerClient<ManageIncome>(LogWriters.ToArray());
return base.OnInitializedAsync();
}
protected override void OnAfterRender(bool firstRender)
{
if (firstRender)
{
//_gridTransfer.ExpandDetailRow(0);
}
}
}