TourIAm/TIAMSharedUI/Pages/User/SysAdmins/MessageDetailGridComponent....

83 lines
3.5 KiB
Plaintext

@using AyCode.Core
@using AyCode.Core.Helpers
@using TIAM.Entities.Products
@using TIAM.Entities.ServiceProviders
@using TIAM.Entities.Transfers
@using TIAM.Entities.Drivers
@using TIAM.Entities.Users
@using TIAM.Models.Dtos.Users
@using TIAMWebApp.Shared.Application.Interfaces
@using TIAMWebApp.Shared.Application.Utility
@using AyCode.Services.Loggers
@using TIAM.Core.Loggers
@using TIAM.Entities.Addresses
@using TIAMSharedUI.Shared.Components.Grids
@using TIAMSharedUI.Pages.Components.EditComponents
@using TIAMWebApp.Shared.Application.Services
@using AyCode.Interfaces.Addresses
@using TIAM.Entities.Emails
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
@inject AdminSignalRClient AdminSignalRClient;
<MessageDetailGrid @ref="_messageGrid"
Logger="_logger"
SignalRClient="AdminSignalRClient"
ContextIds="new[] {ContextId}"
CustomizeElement="CustomizeElement"
TextWrapEnabled="false">
<Columns>
<DxGridCommandColumn Width="135" MinWidth="135" DeleteButtonVisible="AcDomain.IsDeveloperVersion" EditButtonVisible="AcDomain.IsDeveloperVersion" FixedPosition="GridColumnFixedPosition.Left" />
<DxGridDataColumn FieldName="Id" SortIndex="0" ShowInColumnChooser="AcDomain.IsDeveloperVersion" Visible="AcDomain.IsDeveloperVersion" DisplayFormat="N" />
<DxGridDataColumn FieldName="ContextId" Width="80px" ShowInColumnChooser="AcDomain.IsDeveloperVersion" Visible="AcDomain.IsDeveloperVersion" DisplayFormat="N" />
<DxGridDataColumn FieldName="EmailAddress" Width="100px" Visible="@IsSenderEmailVisible" />
<DxGridDataColumn FieldName="Subject" Visible=@IsSubjectVisible />
<DxGridDataColumn FieldName="Text">
<CellDisplayTemplate Context="displayTextContext">
<text>@System.Text.RegularExpressions.Regex.Replace((displayTextContext.Value as string)!, "<(.|\n)*?>", string.Empty)</text>
</CellDisplayTemplate>
</DxGridDataColumn>
<DxGridDataColumn FieldName="IsReaded" Caption="Readed" Width="70" CaptionAlignment="GridTextAlignment.Center" />
<DxGridDataColumn FieldName="Created" Width="100px" />
</Columns>
<DetailRowTemplate>
@{
var emailMessage = ((EmailMessage)context.DataItem);
<div>@((MarkupString)(emailMessage.Text ?? string.Empty))</div>
if (!emailMessage.IsReaded)
{
emailMessage.IsReaded = true;
_messageGrid.UpdateDataItemAsync(emailMessage).Forget();
InvokeAsync(StateHasChanged).Forget();
}
}
</DetailRowTemplate>
</MessageDetailGrid>
@code {
[Parameter] public bool KeyboardNavigationEnabled { get; set; }
[Parameter] public Guid ContextId { get; set; }
//[Parameter] public IEmailMessageRelation ParentData { get; set; } = null!;
[Parameter] public bool IsSubjectVisible { get; set; } = true;
[Parameter] public bool IsSenderEmailVisible { get; set; } = true;
private MessageGrid _messageGrid = null!;
private LoggerClient<MessageGridComponent> _logger = null!;
protected override void OnInitialized()
{
_logger = new LoggerClient<MessageGridComponent>(LogWriters.ToArray());
}
private void CustomizeElement(GridCustomizeElementEventArgs e)
{
if (e.ElementType != GridElementType.DataRow) return;
e.Style = (bool)e.Grid.GetRowValue(e.VisibleIndex, "IsReaded") == false ? "font-weight: bold;" : "font-weight: normal;";
}
}