using AyCode.Core.Consts; using AyCode.Entities; using AyCode.Entities.Server.LogItems; using AyCode.Services.SignalRs; using AyCode.Utils.Extensions; using DevExpress.Data.Filtering; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Mvc; using TIAM.Database.DataLayers.Admins; using TIAM.Entities.Transfers; using TIAM.Services; using TIAMWebApp.Server.Services; using TIAMWebApp.Shared.Application.Models; using TIAMWebApp.Shared.Application.Models.ClientSide.UI; namespace TIAMWebApp.Server.Controllers { [Authorize] [ApiController] [EnableCors("_myAllowSpecificOrigins")] [Route("api/v1/[controller]")] public class LoggerApiController(LoggerToLoggerApiController logger, AdminDal adminDal) : ControllerBase { // = new TIAM.Core.Loggers.Logger(); [AllowAnonymous] [HttpPost] [Route(APIUrls.AddLogItemRouteName)] public async Task AddLogItem(AcLogItem? logItem) { try { if (logItem == null) { logger.Error("AddLogItem; LogItem == null"); //_logger.Writer().Detail(""); return; } //logItem.LogHeaderId = ??? logItem.TimeStampUtc = DateTime.UtcNow; logger.Write(logItem); //_logger.Writer()?.Write(logItem.AppType, logItem.LogLevel, logItem.Text, logItem.CallerName, logItem.CategoryName, logItem.ErrorType, logItem.Exception); //_logger.Writer().WriteLogItemAsync(logItem); } catch (Exception ex) { Console.WriteLine($@"ERROR!!! {nameof(LoggerApiController)}->AddLogItem; ex: {ex.Message}{AcEnv.NL}{AcEnv.NL}{ex}"); } } [AllowAnonymous] [HttpGet] [Route(APIUrls.GetAllLogItemsRouteName)] [SignalR(SignalRTags.GetAllLogItemsByFilterText)] public async Task> GetAllLogItems(int takeCount, DateTime fromDate, DateTime toDate, string? criteriaOperatorText) //(int takeCount, string filterText) { logger.Debug($"GetAllLogItems; takeCount: {takeCount}; fromDate: {fromDate}; toDate: {toDate}; criteriaOperatorText: {criteriaOperatorText}"); List logItemList; if (criteriaOperatorText.IsNullOrWhiteSpace()) logItemList = await adminDal.GetLogItemsAsync(takeCount, fromDate, toDate); else logItemList = await adminDal.GetLogItemsByFilterAsync(CriteriaOperator.Parse(criteriaOperatorText), takeCount, fromDate, toDate); var resultList = new List(logItemList.Count); //logItemList[0].ToModelDto(); resultList.AddRange(logItemList.Select(logItem => new LogItemViewerModel(logItem, logItem.LogHeaderId))); return resultList; } } }