This commit is contained in:
Loretta 2024-06-30 16:41:50 +02:00
commit df5a01a17e
15 changed files with 270 additions and 13 deletions

View File

@ -28,6 +28,7 @@ using DevExpress.Data.Filtering;
using DevExpress.Data.Linq;
using DevExpress.Data.Linq.Helpers;
using TIAM.Database.DbSets.Drivers;
using AyCode.Entities.Server.LogItems;
namespace TIAM.Database.DataLayers.Admins
{
@ -631,5 +632,11 @@ namespace TIAM.Database.DataLayers.Admins
#endregion
#region Logs
public Task<List<AcLogItem>> GetLogItemsAsync() => SessionAsync(ctx => ctx.LogItems.ToList());
#endregion
}
}

View File

@ -1,4 +1,5 @@
using Microsoft.EntityFrameworkCore;
using AyCode.Entities.Server.LogItems;
using Microsoft.EntityFrameworkCore;
using TIAM.Database.ModelBuilders.Companies;
using TIAM.Database.ModelBuilders.Emails;
using TIAM.Database.ModelBuilders.Products;
@ -18,6 +19,7 @@ namespace TIAM.Database.DbContexts.Admins
{
public class AdminDbContext : DbContextBase, IAdminDbContext
{
public DbSet<AcLogItem> LogItems { get; set; }
public DbSet<User> Users { get; set; }
public DbSet<Profile> Profiles { get; set; }
public DbSet<Company> Companies { get; set; }

View File

@ -95,4 +95,6 @@ public class SignalRTags : AcSignalRTags
public const int GetTransferDestinationToProductsByProductId = 95;
public const int GetTransferDestinationToProductsByTransferDestinationId = 96;
public const int GetAllLogItems = 100;
}

View File

@ -0,0 +1,75 @@
@page "/sysadmin/logs"
@using BlazorAnimation
@using TIAM.Entities.Users
@using TIAM.Models.Dtos.Users
@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.WizardModels
@using TIAMWebApp.Shared.Application.Models.PageModels
@using TIAMWebApp.Shared.Application.Utility
@using AyCode.Services.Loggers
@using TIAM.Core.Consts
@layout AdminLayout
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
@inject IStringLocalizer<TIAMResources> Localizer
@inject ISessionService SessionService
<PageTitle>User permissions</PageTitle>
<div class="text-center m-5">
<h1>Log viewer</h1>
<h2 style="font-size:small">Manage drivers here!</h2>
</div>
<div class="container-fluid">
<div class="row">
<div class=" col-12">
<Animation Effect="@Effect.FadeInUp" Speed="@Speed.Fast" Delay="@TimeSpan.FromMilliseconds(250)">
<div class="card">
<div class="d-flex flex-column mb-4 pb-2">
<div class="align-self-end pl-2 pb-2">
<DxButton Text="Column Chooser"
RenderStyle="ButtonRenderStyle.Secondary"
IconCssClass="btn-column-chooser"
Click="ColumnChooserButton_Click" />
</div>
<LogViewerGridComponent DetailExpandButtonDisplayMode="GridDetailExpandButtonDisplayMode.Auto"></LogViewerGridComponent>
</div>
</div>
</Animation>
</div>
<div class=" col-12 col-xl-6">
</div>
</div>
</div>
@code {
private LoggerClient<ManageUserProductMappings> _logger;
//public UserModelDtoDetail UserModelDtoDetail = new();
IGrid Grid { get; set; }
//object? MasterGridData { get; set; }
protected override async Task OnInitializedAsync()
{
_logger = new LoggerClient<ManageUserProductMappings>(LogWriters.ToArray());
base.OnInitialized();
}
void ColumnChooserButton_Click()
{
Grid.ShowColumnChooser();
}
}

View File

@ -0,0 +1,77 @@
@using TIAM.Entities.Products
@using TIAM.Entities.Transfers
@using TIAM.Entities.Drivers
@using TIAM.Entities.Users
@using TIAM.Models.Dtos.Users
@using TIAM.Services
@using TIAMSharedUI.Shared.Components.Grids
@using TIAMWebApp.Shared.Application.Interfaces
@using TIAMWebApp.Shared.Application.Models.ClientSide.UI
@using TIAMWebApp.Shared.Application.Services
@using TIAMWebApp.Shared.Application.Utility
@using TIAM.Core.Loggers
@using AyCode.Core.Loggers
@using AyCode.Services.Loggers
@using AyCode.Core
@using AyCode.Core.Extensions
@inject IServiceProviderDataService ServiceProviderDataService
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
@inject AdminSignalRClient AdminSignalRClient
@inject IWizardProcessor WizardProcessor
@inject IUserDataService UserDataService
<LogViewerGrid Logger="_logger"
@ref="_logViewerGrid"
SignalRClient="AdminSignalRClient"
PageSize="10"
ValidationEnabled="false"
CustomizeElement="Grid_CustomizeElement"
EditMode="GridEditMode.EditForm"
ColumnResizeMode="GridColumnResizeMode.NextColumn"
DetailExpandButtonDisplayMode="DetailExpandButtonDisplayMode"
ShowFilterRow="true">
<Columns>
<DxGridDataColumn FieldName="AcLogItemClient.Id"/>
<DxGridDataColumn FieldName="AcLogItemClient.CategoryName" />
<DxGridDataColumn FieldName="AcLogItemClient.CallerName" />
<DxGridDataColumn Width="80px" FieldName="AcLogItemClient.LogLevel" />
</Columns>
<DetailRowTemplate>
@{
var a = ((LogitemViewerModel)context.DataItem).AcLogItemClient;
}
<p>@a.Text</p>
</DetailRowTemplate>
</LogViewerGrid>
@code {
[Parameter] public GridDetailExpandButtonDisplayMode DetailExpandButtonDisplayMode { get; set; } = GridDetailExpandButtonDisplayMode.Never;
private LoggerClient<LogViewerGridComponent> _logger;
private LogViewerGrid _logViewerGrid;
protected override void OnInitialized()
{
_logger = new LoggerClient<LogViewerGridComponent>(LogWriters.ToArray());
base.OnInitialized();
}
private async Task OnRowClick(GridRowClickEventArgs e)
{
}
void Grid_CustomizeElement(GridCustomizeElementEventArgs e)
{
}
}

View File

@ -0,0 +1,30 @@
using Microsoft.AspNetCore.Components;
using AyCode.Entities.LogItems;
using TIAM.Entities.Users;
using TIAM.Services;
using TIAM.Entities.Transfers;
using TIAMWebApp.Shared.Application.Models.ClientSide.UI;
namespace TIAMSharedUI.Shared.Components.Grids;
public class LogViewerGrid : TiamGrid<LogitemViewerModel>
{
public LogViewerGrid() : base()
{
GetAllMessageTag = SignalRTags.GetAllLogItems;
}
protected override Task SetParametersAsyncCore(ParameterView parameters)
{
if (!IsFirstInitializeParameters)
{
//ShowFilterRow = true;
//ShowGroupPanel = true;
//AllowSort = false;
//etc...
}
return base.SetParametersAsyncCore(parameters);
}
}

View File

@ -18,7 +18,7 @@ using TIAMWebApp.Shared.Application.Utility;
namespace TIAMSharedUI.Shared.Components.Grids
{
public class TiamGrid<TDataItem> : DxGrid where TDataItem : class, IId<Guid>
public class TiamGrid<TDataItem> : DxGrid where TDataItem : class, IId<Guid>
{
protected bool IsFirstInitializeParameters;
private SignalRDataSource<TDataItem> _dataSource = null!;

View File

@ -102,11 +102,20 @@
<ul class="nav navbar-nav navbar-right">
<AuthorizeView>
<Authorized>
<li class="nav-item">
<NavLink class="nav-link" href="login">
Test
</NavLink>
</li>
@if(hasProperty)
{
<li class="nav-item">
<NavLink class="nav-link" href="user/admin">
Admin
</NavLink>
</li>
<li class="nav-item">
<NavLink class="nav-link" href="user/messages">
Messages
</NavLink>
</li>
}
</Authorized>
</AuthorizeView>
@if(enableLogin)

View File

@ -26,6 +26,7 @@
<DxMenuItem NavigateUrl="sysadmin/userproductmappings" Text="Permissions" />
<DxMenuItem NavigateUrl="sysadmin/users" Text="Users" />
<DxMenuItem NavigateUrl="sysadmin/logs" Text="Logs" />
</Items>
</DxMenuItem>
<DxMenuItem Text="HotelAdmin" IconCssClass="menu-icon-support menu-icon">

View File

@ -1,10 +1,14 @@
using AyCode.Core.Consts;
using AyCode.Entities.Server.LogItems;
using AyCode.Services.SignalRs;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc;
using TIAM.Database.DataLayers.Admins;
using TIAM.Services;
using TIAMWebApp.Server.Services;
using TIAMWebApp.Shared.Application.Models;
using TIAMWebApp.Shared.Application.Models.ClientSide.UI;
namespace TIAMWebApp.Server.Controllers
{
@ -12,13 +16,14 @@ namespace TIAMWebApp.Server.Controllers
[ApiController]
[EnableCors("_myAllowSpecificOrigins")]
[Route("api/v1/[controller]")]
public class LoggerApiController(LoggerToLoggerApiController logger) : ControllerBase
public class LoggerApiController(LoggerToLoggerApiController logger, AdminDal _adminDal) : ControllerBase
{
// = new TIAM.Core.Loggers.Logger<LoggerApiController>();
[AllowAnonymous]
[HttpPost]
[Route(APIUrls.LoggerRouteName)]
[Route(APIUrls.AddLogItemRouteName)]
public async Task AddLogItem(AcLogItem? logItem)
{
try
@ -44,5 +49,21 @@ namespace TIAMWebApp.Server.Controllers
Console.WriteLine($@"ERROR!!! {nameof(LoggerApiController)}->AddLogItem; ex: {ex.Message}{AcEnv.NL}{AcEnv.NL}{ex}");
}
}
[AllowAnonymous]
[HttpGet]
[Route(APIUrls.GetAllLogItemsRouteName)]
[SignalR(SignalRTags.GetAllLogItems)]
public async Task<List<LogitemViewerModel>> GetAllLogItems()
{
var result = await _adminDal.GetLogItemsAsync();
List<LogitemViewerModel> returnList = new List<LogitemViewerModel>();
for (int i = 0; i < 100; i++ )
{
returnList.Add(new LogitemViewerModel(Guid.NewGuid(), result[i], result[i].LogHeaderId));
}
return returnList;
}
}
}

View File

@ -43,6 +43,7 @@ builder.Services.AddScoped<ServiceProviderAPIController>();
builder.Services.AddScoped<TransferDataAPIController>();
builder.Services.AddScoped<MessageAPIController>();
builder.Services.AddScoped<ProfileAPIController>();
builder.Services.AddScoped<LoggerApiController>();
builder.Services.AddSignalR(options => options.MaximumReceiveMessageSize = 102400 * 1024);//.AddMessagePackProtocol(options => options.SerializerOptions = MessagePackSerializerOptions.Standard.WithSecurity(MessagePackSecurity.UntrustedData));

View File

@ -99,7 +99,7 @@ public class DevAdminSignalRHub : Hub<ISignalRHubItemServer>, IAcSignalRHubServe
//private readonly ServiceProviderAPIController _serviceProviderApiController;
//private readonly TransferDataAPIController _transferDataApiController;
public DevAdminSignalRHub(AdminDal adminDal, ServiceProviderAPIController serviceProviderApiController, TransferDataAPIController transferDataApiController, MessageAPIController messageApiController, ProfileAPIController profileApiController, IEnumerable<IAcLogWriterBase> logWriters)
public DevAdminSignalRHub(AdminDal adminDal, ServiceProviderAPIController serviceProviderApiController, TransferDataAPIController transferDataApiController, MessageAPIController messageApiController, ProfileAPIController profileApiController, LoggerApiController loggerApiController, IEnumerable<IAcLogWriterBase> logWriters)
{
_adminDal = adminDal;
//_serviceProviderApiController = serviceProviderApiController;
@ -111,6 +111,7 @@ public class DevAdminSignalRHub : Hub<ISignalRHubItemServer>, IAcSignalRHubServe
_dynamicMethodCallModels.Add(new DynamicMethodCallModel<SignalRAttribute>(transferDataApiController));
_dynamicMethodCallModels.Add(new DynamicMethodCallModel<SignalRAttribute>(messageApiController));
_dynamicMethodCallModels.Add(new DynamicMethodCallModel<SignalRAttribute>(profileApiController));
_dynamicMethodCallModels.Add(new DynamicMethodCallModel<SignalRAttribute>(loggerApiController));
//_dynamicMethodCallModels.Add(new DynamicMethodCallModel<SignalRAttribute>(typeof(AdminDal)));
}

View File

@ -20,8 +20,11 @@ namespace TIAMWebApp.Shared.Application.Models
public const string MessageAPI = BaseUrlWithSlashAndVersion + "MessageAPI/";
public const string PaymentAPI = BaseUrlWithSlashAndVersion + "PaymentAPI/";
public const string LoggerRouteName = "Logger";
public const string Logger = LoggerApi + LoggerRouteName;
public const string AddLogItemRouteName = "AddLogItem";
public const string AddLogItem = LoggerApi + AddLogItemRouteName;
public const string GetAllLogItemsRouteName = "GetAllLogItems";
public const string GetAllLogItems = LoggerApi + GetAllLogItemsRouteName;
//userdata
public const string UserTestRouteName = "test1";

View File

@ -0,0 +1,28 @@
using AyCode.Core.Interfaces;
using AyCode.Entities.LogItems;
using AyCode.Interfaces.Entities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TIAMWebApp.Shared.Application.Models.ClientSide.UI
{
public class LogitemViewerModel : IId<Guid>
{
public AcLogItemClient AcLogItemClient { get; set; }
public int LogHeaderId { get; set; }
public Guid Id { get ; set; }
public LogitemViewerModel(Guid id, AcLogItemClient logItemClient, int logHeaderID) {
Id = id;
AcLogItemClient = logItemClient;
LogHeaderId = logHeaderID;
}
}
}

View File

@ -7,6 +7,6 @@ namespace TIAMWebApp.Shared.Application.Utility;
public class HttpClientLogItemWriter : AcHttpClientLogItemWriter<AcLogItemClient>
{
public HttpClientLogItemWriter(HttpClient httpClient) : base(httpClient, $"{Setting.ApiBaseUrl}/{APIUrls.Logger}")
public HttpClientLogItemWriter(HttpClient httpClient) : base(httpClient, $"{Setting.ApiBaseUrl}/{APIUrls.AddLogItem}")
{ }
}