Merge branch 'master' of http://git2.aycode.com/Adam/TourIAm
This commit is contained in:
commit
fcd8de3330
|
|
@ -11,6 +11,7 @@
|
|||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="AutoMapper" Version="13.0.1" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||
</ItemGroup>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
using AyCode.Core.Extensions;
|
||||
using System.Linq.Expressions;
|
||||
using AyCode.Core.Extensions;
|
||||
using AyCode.Core.Server.Loggers;
|
||||
using AyCode.Database.DbSets.Messages;
|
||||
using AyCode.Database.DbSets.Users;
|
||||
|
|
@ -23,6 +24,9 @@ using TIAM.Entities.Transfers;
|
|||
using TIAM.Entities.Users;
|
||||
using TIAM.Models.Dtos.Products;
|
||||
using AyCode.Database.DbSets.Profiles;
|
||||
using DevExpress.Data.Filtering;
|
||||
using DevExpress.Data.Linq;
|
||||
using DevExpress.Data.Linq.Helpers;
|
||||
using TIAM.Database.DbSets.Drivers;
|
||||
|
||||
namespace TIAM.Database.DataLayers.Admins
|
||||
|
|
@ -47,6 +51,8 @@ namespace TIAM.Database.DataLayers.Admins
|
|||
|
||||
#region Transfer
|
||||
|
||||
public Task<List<Transfer>> GetTransfersByFilterAsync(CriteriaOperator criteriaOperator) => SessionAsync(ctx => (ctx.GetTransfers().AppendWhere(new CriteriaToExpressionConverter(), criteriaOperator) as IQueryable<Transfer>)!.ToList());
|
||||
|
||||
public Task<List<Transfer>> GetTransfersAsync() => SessionAsync(ctx => ctx.GetTransfers().OrderBy(x => x.TransferStatusType).ThenByDescending(x => x.OrderId).ToList());
|
||||
public Task<string> GetTransfersJsonAsync() => SessionAsync(ctx => ctx.GetTransfers().OrderBy(x => x.TransferStatusType).ThenByDescending(x => x.OrderId).ToJson());
|
||||
public Task<string> GetTransfersByUserIdJsonAsync(Guid userId) => SessionAsync(ctx => ctx.GetTransfers().Where(x => x.UserId == userId).OrderBy(x => x.TransferStatusType).ThenByDescending(x => x.OrderId).ToJson());
|
||||
|
|
@ -55,7 +61,42 @@ namespace TIAM.Database.DataLayers.Admins
|
|||
public string? GetTransferJsonById(Guid transferId) => Session(ctx => ctx.GetTransferById(transferId)?.ToJson());
|
||||
|
||||
public Task<bool> AddTransferAsync(Transfer transfer) => TransactionAsync(ctx => ctx.AddTransfer(transfer));
|
||||
public Task<bool> UpdateTransferAsync(Transfer transfer) => TransactionAsync(ctx => ctx.UpdateTransfer(transfer));
|
||||
|
||||
public async Task<Transfer?> UpdateTransferAsync(Transfer transfer)
|
||||
{
|
||||
Transfer? entity = null;
|
||||
|
||||
var result = await TransactionAsync(ctx =>
|
||||
{
|
||||
entity = ctx.Set<Transfer>().AsNoTracking().FirstOrDefault(e => e.Id == transfer.Id);
|
||||
if (entity == null) return false;
|
||||
|
||||
ctx.Entry(entity).State = EntityState.Detached;
|
||||
ctx.Entry(entity).CurrentValues.SetValues(transfer);
|
||||
|
||||
return ctx.UpdateTransfer(entity);
|
||||
|
||||
//foreach (var entityEntry in ctx.ChangeTracker.Entries())
|
||||
//{
|
||||
// if (entityEntry.Entity is not Transfer)
|
||||
// entityEntry.State = EntityState.Unchanged;
|
||||
//}
|
||||
|
||||
//var existingTransfer = ctx.Transfers.Local.SingleOrDefault(o => o.Id == transfer.Id);
|
||||
//if (existingTransfer != null)
|
||||
// ctx.Entry(existingTransfer).State = EntityState.Detached;
|
||||
|
||||
//var existingUsers = ctx.Users.Local.Where(o => transfer.TransferToDrivers.Any(x => x.UserProductMapping.UserId == o.Id)).ToList();
|
||||
//foreach (var existingUser in existingUsers)
|
||||
// ctx.Entry(existingUser).State = EntityState.Detached;
|
||||
|
||||
//transfer.TransferToDrivers = null!;
|
||||
|
||||
//return ctx.UpdateTransfer(transfer);
|
||||
});
|
||||
|
||||
return result ? entity : null;
|
||||
}
|
||||
|
||||
public Task<bool> UpdateTransferAsync(Transfer transfer, TransferToDriver transferToDriver) => UpdateTransferAsync(transfer, [transferToDriver]);
|
||||
public Task<bool> UpdateTransferAsync(Transfer transfer, List<TransferToDriver> transferToDrivers)
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
using AyCode.Database.DbContexts;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
namespace TIAM.Database.DbContexts
|
||||
{
|
||||
|
|
@ -25,6 +26,8 @@ namespace TIAM.Database.DbContexts
|
|||
optionsBuilder.UseLazyLoadingProxies(true);
|
||||
optionsBuilder.EnableDetailedErrors(true);
|
||||
|
||||
//optionsBuilder.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTrackingWithIdentityResolution);
|
||||
|
||||
//optionsBuilder.UseSqlServer(Configuration.GetConnectionString("DeveloperDbConnection"));
|
||||
//var connString = "Data Source=185.51.190.197;Initial Catalog=TIAM_DEV;Trusted_Connection=false;Encrypt=false;TrustServerCertificate=True;Connect Timeout=200;User ID=Anata_Development_Team;Password=v6f_?xNfg9N1;MultipleActiveResultSets=true";
|
||||
//optionsBuilder.UseSqlServer(connString);
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="DevExpress.Data" Version="24.1.3" />
|
||||
<PackageReference Include="MessagePack.Annotations" Version="2.5.168" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.6" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="8.0.6" />
|
||||
|
|
|
|||
|
|
@ -11,6 +11,8 @@ public class SignalRTags : AcSignalRTags
|
|||
public const int GetTransfersByProductId = 5;
|
||||
public const int GetTransfersByCompanyId = 6;
|
||||
|
||||
public const int GetTransfersByFilterText = 301;
|
||||
|
||||
public const int UpdateTransfer = 7;
|
||||
public const int AddTransfer = 8;
|
||||
public const int RemoveTransfer = 9;
|
||||
|
|
|
|||
|
|
@ -82,6 +82,7 @@
|
|||
<TransferGrid @ref="_gridTransfer"
|
||||
Logger="_logger"
|
||||
SignalRClient="AdminSignalRClient"
|
||||
FilterText="@_filterText"
|
||||
OnDataSourceChanged="DataSourceChanged"
|
||||
OnGridItemChanging="DataSourceItemChanging"
|
||||
OnGridItemChanged="DataSourceItemChanged"
|
||||
|
|
@ -192,7 +193,7 @@
|
|||
|
||||
<ToolbarTemplate>
|
||||
<div>
|
||||
<DxTagBox Data="@Statuses" Values="@SelectedCategories" @ref="_filterTag"
|
||||
<DxTagBox Data="@Statuses" Values="@_selectedCategories" @ref="_filterTag"
|
||||
ValuesChanged="(IEnumerable<TransferStatusModel> values) => TagBox_ValuesChanged(values)"
|
||||
ValueFieldName="StatusValue" TextFieldName="StatusName" NullText="Select category..."
|
||||
ClearButtonDisplayMode="DataEditorClearButtonDisplayMode.Auto" aria-label="Select category" />
|
||||
|
|
@ -235,11 +236,9 @@
|
|||
|
||||
private bool _popupVisible;
|
||||
private TransferGrid _gridTransfer;
|
||||
|
||||
private DxTagBox<TransferStatusModel, TransferStatusModel> _filterTag;
|
||||
|
||||
List<TransferStatusModel> SelectedCategories { get; set; }
|
||||
= Statuses.Where(x => x.StatusValue != (byte)TransferStatusType.Finished && x.StatusValue != (byte)TransferStatusType.UserCanceled && x.StatusValue != (byte)TransferStatusType.AdminDenied).ToList();
|
||||
|
||||
public List<string> IgnoreList =
|
||||
[
|
||||
"ReceiverEmailAddress",
|
||||
|
|
@ -251,7 +250,7 @@
|
|||
"ContextId",
|
||||
];
|
||||
|
||||
public static List<TransferStatusModel> Statuses { get; set; } =
|
||||
private static List<TransferStatusModel> Statuses =
|
||||
[
|
||||
new(Convert.ToByte(TransferStatusType.OrderSubmitted), "Order submitted"),
|
||||
new(Convert.ToByte(TransferStatusType.OrderConfirmed), "Order confirmed"),
|
||||
|
|
@ -264,6 +263,9 @@
|
|||
new(Convert.ToByte(TransferStatusType.AdminDenied), "Admin cancelled")
|
||||
];
|
||||
|
||||
private static List<TransferStatusModel> _selectedCategories = Statuses.Where(x => /* x.StatusValue != (byte)TransferStatusType.OrderSubmitted && */ x.StatusValue != (byte)TransferStatusType.Finished && x.StatusValue != (byte)TransferStatusType.UserCanceled && x.StatusValue != (byte)TransferStatusType.AdminDenied).ToList();
|
||||
private string? _filterText = GetFilterText(_selectedCategories.Select(x => (TransferStatusType)x.StatusValue).ToList());
|
||||
|
||||
private MessageWizardModel _messageWizardModel = new();
|
||||
|
||||
public List<AppointmentModel> AppointmentModels { get; set; } = null!;
|
||||
|
|
@ -375,24 +377,34 @@
|
|||
transferEditModel.ContactEmail = "your@email.address";
|
||||
}
|
||||
|
||||
private static string? GetFilterText(ICollection<TransferStatusType> selectedTransferStatuses)
|
||||
=> selectedTransferStatuses.Count == 0 ? null : CriteriaOperator.FromLambda<Transfer>(t => selectedTransferStatuses.Contains(t.TransferStatusType)).ToString();
|
||||
|
||||
void TagBox_ValuesChanged(IEnumerable<TransferStatusModel> newSelectedCategories)
|
||||
{
|
||||
SelectedCategories = newSelectedCategories.ToList();
|
||||
var filterCriteria = SelectedCategories.Any()
|
||||
? new InOperator("TransferStatusType", SelectedCategories.Select(c => c.StatusValue))
|
||||
: null;
|
||||
string? filterText = null;
|
||||
InOperator? filterCriteria = null;
|
||||
|
||||
_selectedCategories = newSelectedCategories.ToList();
|
||||
|
||||
if (_selectedCategories.Count > 0)
|
||||
{
|
||||
filterCriteria = new InOperator("TransferStatusType", _selectedCategories.Select(c => c.StatusValue));
|
||||
filterText = GetFilterText(_selectedCategories.Select(x => (TransferStatusType)x.StatusValue).ToList());
|
||||
}
|
||||
|
||||
_filterText = filterText;
|
||||
_gridTransfer.SetFieldFilterCriteria("TransferStatusType", filterCriteria);
|
||||
}
|
||||
|
||||
|
||||
private void DataSourceChanged(IList<Transfer> transfers)
|
||||
{
|
||||
_logger.Info("DataSourceChanged called");
|
||||
|
||||
InitializeAppointments(transfers);
|
||||
|
||||
if (SelectedCategories.Count > 0)
|
||||
TagBox_ValuesChanged(SelectedCategories);
|
||||
if (_selectedCategories.Count > 0)
|
||||
TagBox_ValuesChanged(_selectedCategories);
|
||||
|
||||
// if(!SelectedCategories.Any())
|
||||
// SelectedCategories = [Statuses.FirstOrDefault(x => x.StatusValue == (byte)TransferStatusType.Finished)!];
|
||||
|
|
|
|||
|
|
@ -147,7 +147,7 @@
|
|||
|
||||
_logger.Info($"DetailGridData: {ParentData.TransferToDrivers.Count}");
|
||||
|
||||
_cars.AddRange((await AdminSignalRClient.GetAllAsync<List<Car>>(SignalRTags.GetAllCarsByProductId, TiamConstClient.TransferProductId))!);
|
||||
_cars.AddRange((await AdminSignalRClient.GetAllAsync<List<Car>>(SignalRTags.GetAllCarsByProductId, [TiamConstClient.TransferProductId]))!);
|
||||
// AdminSignalRClient.GetAllAsync<List<Car>>(SignalRTags.GetAllCars, response =>
|
||||
// {
|
||||
// _cars.AddRange(response.ResponseData!);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
using System.ComponentModel;
|
||||
using System.Data.Common;
|
||||
using AyCode.Blazor.Components.Services;
|
||||
using AyCode.Core;
|
||||
using AyCode.Core.Enums;
|
||||
|
|
@ -9,6 +10,8 @@ using AyCode.Services.SignalRs;
|
|||
using AyCode.Utils.Extensions;
|
||||
using DevExpress.Blazor;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using TIAM.Core.Enums;
|
||||
using TIAM.Entities.Transfers;
|
||||
using TIAM.Services;
|
||||
using TIAMWebApp.Shared.Application.Services;
|
||||
using TIAMWebApp.Shared.Application.Utility;
|
||||
|
|
@ -29,6 +32,25 @@ namespace TIAMSharedUI.Shared.Components.Grids
|
|||
[Parameter] public LoggerClient Logger { get; set; }
|
||||
[Parameter] public string GridName { get; set; }
|
||||
[Parameter] public Guid[]? ContextIds { get; set; }
|
||||
|
||||
private string? _filterText = null;
|
||||
|
||||
[Parameter]
|
||||
public string? FilterText
|
||||
{
|
||||
get => _filterText;
|
||||
set
|
||||
{
|
||||
_filterText = value;
|
||||
|
||||
if (_dataSource != null! && _dataSource.FilterText != value)
|
||||
{
|
||||
_dataSource.FilterText = value;
|
||||
LoadDataSourceAsync().Forget();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Parameter] public AcSignalRClientBase SignalRClient { get; set; }
|
||||
|
||||
[Parameter] public int GetAllMessageTag { get; set; }
|
||||
|
|
@ -83,6 +105,7 @@ namespace TIAMSharedUI.Shared.Components.Grids
|
|||
|
||||
var crudTags = new SignalRCrudTags(GetAllMessageTag, GetItemMessageTag, AddMessageTag, UpdateMessageTag, RemoveMessageTag);
|
||||
_dataSource = new SignalRDataSource<TDataItem>(SignalRClient, crudTags, ContextIds);
|
||||
_dataSource.FilterText = FilterText;
|
||||
|
||||
Data = _dataSource;
|
||||
|
||||
|
|
@ -111,7 +134,7 @@ namespace TIAMSharedUI.Shared.Components.Grids
|
|||
|
||||
private Task OnDataSourceLoaded()
|
||||
{
|
||||
Logger.Debug($"{_gridLogName} OnDataSourceLoaded");
|
||||
Logger.Debug($"{_gridLogName} OnDataSourceLoaded; Count: {_dataSource.Count}");
|
||||
|
||||
Reload();
|
||||
//_dataSource.LoadItem(_dataSource.First().Id).Forget();
|
||||
|
|
@ -303,6 +326,11 @@ namespace TIAMSharedUI.Shared.Components.Grids
|
|||
|
||||
return _dataSource.Remove(dataItem, true);
|
||||
}
|
||||
|
||||
public Task LoadDataSourceAsync()
|
||||
{
|
||||
return _dataSource.LoadDataSourceAsync(false);
|
||||
}
|
||||
}
|
||||
|
||||
public class GridDataItemChangingEventArgs<TDataItem> : GridDataItemChangedEventArgs<TDataItem> where TDataItem : class, IId<Guid>
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ public class TransferGrid : TiamGrid<Transfer>
|
|||
{
|
||||
public TransferGrid() : base()
|
||||
{
|
||||
GetAllMessageTag = SignalRTags.GetTransfers;
|
||||
GetAllMessageTag = SignalRTags.GetTransfersByFilterText;//SignalRTags.GetTransfers;
|
||||
AddMessageTag = SignalRTags.AddTransfer;
|
||||
UpdateMessageTag = SignalRTags.UpdateTransfer;
|
||||
RemoveMessageTag = SignalRTags.RemoveTransfer;
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
using System.Linq.Expressions;
|
||||
using System.Text.Json;
|
||||
using AyCode.Core.Loggers;
|
||||
using AyCode.Services.SignalRs;
|
||||
|
|
@ -22,6 +23,12 @@ using AyCode.Core.Extensions;
|
|||
using TIAM.Entities.Users;
|
||||
using TIAMSharedUI.Shared.Components.Grids;
|
||||
using AyCode.Core.Helpers;
|
||||
using System.Linq;
|
||||
using DevExpress.Data.Filtering;
|
||||
using DevExpress.Data.Linq;
|
||||
using DevExpress.Data.Linq.Helpers;
|
||||
using System;
|
||||
using TIAM.Database.DbSets.Transfers;
|
||||
|
||||
namespace TIAMWebApp.Server.Controllers
|
||||
{
|
||||
|
|
@ -540,15 +547,24 @@ namespace TIAMWebApp.Server.Controllers
|
|||
[HttpGet]
|
||||
[Route(APIUrls.GetTransfersRouteName)]
|
||||
[SignalR(SignalRTags.GetTransfers)]
|
||||
public async Task<string> GetTransfers()
|
||||
public async Task<List<Transfer>> GetTransfers()
|
||||
{
|
||||
//var token = _authService.GetAuthTokenFromRequest(Request);
|
||||
//_logger.Detail(token);
|
||||
|
||||
var result = await _adminDal.GetTransfersJsonAsync();
|
||||
var result = await _adminDal.GetTransfersAsync();
|
||||
return result;
|
||||
}
|
||||
|
||||
[SignalR(SignalRTags.GetTransfersByFilterText)]
|
||||
public async Task<List<Transfer>> GetTransfersByFilterText(string criteriaOperatorText)
|
||||
{
|
||||
if (criteriaOperatorText.IsNullOrWhiteSpace()) return await GetTransfers();
|
||||
|
||||
var results = await _adminDal.GetTransfersByFilterAsync(CriteriaOperator.Parse(criteriaOperatorText));
|
||||
return results;
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
[HttpGet]
|
||||
[Route(APIUrls.GetTransfersByUserIdRouteName)]
|
||||
|
|
@ -559,6 +575,7 @@ namespace TIAMWebApp.Server.Controllers
|
|||
return result;
|
||||
}
|
||||
|
||||
|
||||
[AllowAnonymous]
|
||||
[HttpPost]
|
||||
[Route(APIUrls.GetTransferByIdRouteName)]
|
||||
|
|
@ -574,17 +591,20 @@ namespace TIAMWebApp.Server.Controllers
|
|||
[HttpPost]
|
||||
[Route(APIUrls.UpdateTransferRouteName)]
|
||||
[SignalR(SignalRTags.UpdateTransfer)]
|
||||
public async Task<Transfer> UpdateTransfer(Transfer transferToModify)
|
||||
public async Task<Transfer?> UpdateTransfer(Transfer transferToModify)
|
||||
{
|
||||
_logger.Info($"UpdateTransfer called! + {transferToModify.Id}");
|
||||
await _adminDal.UpdateTransferAsync(transferToModify);
|
||||
|
||||
return transferToModify;
|
||||
|
||||
return await _adminDal.UpdateTransferAsync(transferToModify);
|
||||
|
||||
//await _adminDal.UpdateTransferAsync(transferToModify);
|
||||
//return transferToModify;
|
||||
}
|
||||
|
||||
//[Authorize]
|
||||
//[HttpGet]
|
||||
//[Route(APIUrls.GetTransferDriverRouteName)]
|
||||
[NonAction]
|
||||
[SignalR(SignalRTags.GetAllDrivers)]
|
||||
public async Task<List<UserProductMapping>> GetAllDrivers()
|
||||
{
|
||||
|
|
@ -625,6 +645,7 @@ namespace TIAMWebApp.Server.Controllers
|
|||
//[Authorize]
|
||||
//[HttpGet]
|
||||
//[Route(APIUrls.GetTransferDriversByTransferIdRouteName)]
|
||||
[NonAction]
|
||||
[SignalR(SignalRTags.AddTransferToDriver)]
|
||||
public async Task<TransferToDriver?> AddTransferDriver([FromBody] TransferToDriver transferToDriver)
|
||||
{
|
||||
|
|
@ -637,6 +658,7 @@ namespace TIAMWebApp.Server.Controllers
|
|||
//[Authorize]
|
||||
//[HttpGet]
|
||||
//[Route(APIUrls.GetTransferDriversByTransferIdRouteName)]
|
||||
[NonAction]
|
||||
[SignalR(SignalRTags.UpdateTransferToDriver)]
|
||||
public async Task<TransferToDriver?> UpdateTransferDriver([FromBody] TransferToDriver transferToDriver)
|
||||
{
|
||||
|
|
@ -649,6 +671,7 @@ namespace TIAMWebApp.Server.Controllers
|
|||
//[Authorize]
|
||||
//[HttpGet]
|
||||
//[Route(APIUrls.GetTransferDriversByTransferIdRouteName)]
|
||||
[NonAction]
|
||||
[SignalR(SignalRTags.RemoveTransferToDriver)]
|
||||
public async Task<TransferToDriver?> RemoveTransferDriver([FromBody] TransferToDriver transferToDriver)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ using Microsoft.AspNetCore.Server.Kestrel.Core;
|
|||
using Microsoft.AspNetCore.ResponseCompression;
|
||||
using System.IO.Compression;
|
||||
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
var builder = WebApplication.CreateBuilder(args);
|
||||
|
||||
|
|
@ -44,7 +45,7 @@ builder.Services.AddScoped<MessageAPIController>();
|
|||
builder.Services.AddScoped<ProfileAPIController>();
|
||||
|
||||
|
||||
builder.Services.AddSignalR(options => options.MaximumReceiveMessageSize = 256 * 1024);//.AddMessagePackProtocol(options => options.SerializerOptions = MessagePackSerializerOptions.Standard.WithSecurity(MessagePackSecurity.UntrustedData));
|
||||
builder.Services.AddSignalR(options => options.MaximumReceiveMessageSize = 102400 * 1024);//.AddMessagePackProtocol(options => options.SerializerOptions = MessagePackSerializerOptions.Standard.WithSecurity(MessagePackSecurity.UntrustedData));
|
||||
|
||||
builder.Services.AddCors(options =>
|
||||
{
|
||||
|
|
|
|||
|
|
@ -13,11 +13,16 @@ using TIAM.Entities.ServiceProviders;
|
|||
using System.Runtime.CompilerServices;
|
||||
using MessagePack;
|
||||
using TIAM.Entities.Addresses;
|
||||
using TIAM.Entities.Profiles;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq.Expressions;
|
||||
using AutoMapper;
|
||||
using DevExpress.Pdf.Native.BouncyCastle.Security;
|
||||
using TIAM.Entities.Emails;
|
||||
using TIAM.Services.Server;
|
||||
using Profile = TIAM.Entities.Profiles.Profile;
|
||||
using Serialize.Linq.Serializers;
|
||||
|
||||
namespace TIAMWebApp.Server.Services;
|
||||
|
||||
|
|
@ -37,7 +42,7 @@ public static class ExtensionMethods
|
|||
|
||||
public class MethodInfoModel<TAttribute> where TAttribute : TagAttribute
|
||||
{
|
||||
public Type? ParameterType { get; init; } = null;
|
||||
public ParameterInfo[]? ParamInfos { get; init; } = null;
|
||||
public TAttribute Attribute { get; init; }
|
||||
public MethodInfo MethodInfo { get; init; }
|
||||
|
||||
|
|
@ -51,8 +56,7 @@ public class MethodInfoModel<TAttribute> where TAttribute : TagAttribute
|
|||
//if (parameters.Length > 1)
|
||||
// throw new Exception("MethodInfoModel; parameters.Length > 1");
|
||||
|
||||
if (parameters.Length > 0)
|
||||
ParameterType = parameters[0].ParameterType;
|
||||
ParamInfos = parameters;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -148,27 +152,59 @@ public class DevAdminSignalRHub : Hub<ISignalRHubItemServer>, IAcSignalRHubServe
|
|||
|
||||
logText = $"Found dynamic method for the tag! tag: {messageTag}; method: {methodsByDeclaringObject.InstanceObject.GetType().Name}.{methodInfoModel.MethodInfo.Name}";
|
||||
|
||||
if (methodInfoModel.ParameterType != null)
|
||||
if (methodInfoModel.ParamInfos is { Length: > 0 })
|
||||
{
|
||||
_logger.Debug($"{logText}({methodInfoModel.ParameterType.Name})");
|
||||
_logger.Debug($"{logText}({string.Join(", ", methodInfoModel.ParamInfos.Select(x => x.Name))})");
|
||||
|
||||
//paramValues = new object[1];
|
||||
paramValues = new object[methodInfoModel.ParamInfos.Length];
|
||||
|
||||
if (methodInfoModel.ParameterType == typeof(Guid) || methodInfoModel.ParameterType == typeof(Guid?))
|
||||
var firstParamType = methodInfoModel.ParamInfos[0].ParameterType;
|
||||
if (methodInfoModel.ParamInfos.Length > 1 || firstParamType == typeof(string) || firstParamType.IsEnum || firstParamType.IsValueType)
|
||||
{
|
||||
var msg = message!.MessagePackTo<SignalPostJsonDataMessage<IdMessage>>();
|
||||
|
||||
paramValues = new object[msg.PostData.Ids.Count];
|
||||
|
||||
for (var i = 0; i < msg.PostData.Ids.Count; i++)
|
||||
{
|
||||
var id = msg.PostData.Ids[i];
|
||||
if (id.IsNullOrEmpty()) throw new NullReferenceException($"PostData.Id.IsNullOrEmpty(); Ids: {msg.PostData.Ids}");
|
||||
//var obj = (string)msg.PostData.Ids[i];
|
||||
//if (msg.PostData.Ids[i] is Guid id)
|
||||
//{
|
||||
// if (id.IsNullOrEmpty()) throw new NullReferenceException($"PostData.Id.IsNullOrEmpty(); Ids: {msg.PostData.Ids}");
|
||||
// paramValues[i] = id;
|
||||
//}
|
||||
//else if (Guid.TryParse(obj, out id))
|
||||
//{
|
||||
// if (id.IsNullOrEmpty()) throw new NullReferenceException($"PostData.Id.IsNullOrEmpty(); Ids: {msg.PostData.Ids}");
|
||||
// paramValues[i] = id;
|
||||
//}
|
||||
//else if (Enum.TryParse(methodInfoModel.ParameterType, obj, out var enumObj))
|
||||
//{
|
||||
// paramValues[i] = enumObj;
|
||||
//}
|
||||
//else paramValues[i] = Convert.ChangeType(obj, methodInfoModel.ParameterType);
|
||||
|
||||
var obj = msg.PostData.Ids[i];
|
||||
//var config = new MapperConfiguration(cfg =>
|
||||
//{
|
||||
// cfg.CreateMap(obj.GetType(), methodInfoModel.ParameterType);
|
||||
//});
|
||||
|
||||
//var mapper = new Mapper(config);
|
||||
//paramValues[i] = mapper.Map(obj, methodInfoModel.ParameterType);
|
||||
|
||||
//paramValues[i] = obj;
|
||||
|
||||
var a = Array.CreateInstance(methodInfoModel.ParamInfos[i].ParameterType, 1);
|
||||
|
||||
if (methodInfoModel.ParamInfos[i].ParameterType == typeof(Expression))
|
||||
{
|
||||
var serializer = new ExpressionSerializer(new JsonSerializer());
|
||||
paramValues[i] = serializer.DeserializeText((string)(obj.JsonTo(a.GetType()) as Array)?.GetValue(0)!);
|
||||
}
|
||||
else paramValues[i] = (obj.JsonTo(a.GetType()) as Array)?.GetValue(0)!;
|
||||
|
||||
paramValues[i] = msg.PostData.Ids[i];
|
||||
}
|
||||
}
|
||||
else paramValues = [message!.MessagePackTo<SignalPostJsonDataMessage<object>>(MessagePackSerializerOptions.Standard).PostDataJson.JsonTo(methodInfoModel.ParameterType)!];
|
||||
else paramValues[0] = message!.MessagePackTo<SignalPostJsonDataMessage<object>>(MessagePackSerializerOptions.Standard).PostDataJson.JsonTo(firstParamType)!;
|
||||
}
|
||||
else _logger.Debug($"{logText}()");
|
||||
|
||||
|
|
@ -182,7 +218,8 @@ public class DevAdminSignalRHub : Hub<ISignalRHubItemServer>, IAcSignalRHubServe
|
|||
switch (messageTag)
|
||||
{
|
||||
case SignalRTags.GetAddress:
|
||||
var id = message!.MessagePackTo<SignalPostJsonDataMessage<IdMessage>>().PostData.Ids[0];
|
||||
//var id = Guid.Parse((string)message!.MessagePackTo<SignalPostJsonDataMessage<IdMessage>>().PostData.Ids[0]);
|
||||
var id = message!.MessagePackTo<SignalPostJsonDataMessage<IdMessage>>().PostData.Ids[0].JsonTo<Guid[]>()![0];
|
||||
|
||||
var address = await _adminDal.GetAddressByIdAsync(id);
|
||||
await ResponseToCaller(messageTag, new SignalResponseJsonMessage(SignalResponseStatus.Success, address), requestId);
|
||||
|
|
@ -190,7 +227,8 @@ public class DevAdminSignalRHub : Hub<ISignalRHubItemServer>, IAcSignalRHubServe
|
|||
return;
|
||||
|
||||
case SignalRTags.GetAddressesByContextId:
|
||||
id = message!.MessagePackTo<SignalPostJsonDataMessage<IdMessage>>().PostData.Ids[0];
|
||||
//id = Guid.Parse((string)message!.MessagePackTo<SignalPostJsonDataMessage<IdMessage>>().PostData.Ids[0]);
|
||||
id = message!.MessagePackTo<SignalPostJsonDataMessage<IdMessage>>().PostData.Ids[0].JsonTo<Guid[]>()![0];
|
||||
|
||||
address = await _adminDal.GetAddressByIdAsync(id);
|
||||
await ResponseToCaller(messageTag, new SignalResponseJsonMessage(SignalResponseStatus.Success, new List<Address> { address! }), requestId);
|
||||
|
|
|
|||
|
|
@ -10,7 +10,8 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="GoogleApi" Version="5.4.3" />
|
||||
<PackageReference Include="AutoMapper" Version="13.0.1" />
|
||||
<PackageReference Include="GoogleApi" Version="5.4.4" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="8.0.6" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="8.0.6" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="8.0.6" />
|
||||
|
|
|
|||
|
|
@ -249,7 +249,7 @@ namespace TIAMWebApp.Shared.Application.Services
|
|||
|
||||
public async Task<Product> GetProductByIdAsync(Guid id)
|
||||
{
|
||||
var result = await _adminSignalRClient.GetByIdAsync<Product>(SignalRTags.GetProductById);
|
||||
var result = await _adminSignalRClient.GetByIdAsync<Product>(SignalRTags.GetProductById, id);
|
||||
|
||||
//var url = $"{Setting.ApiBaseUrl}/{APIUrls.GetProductById}";
|
||||
//var response = await http.GetFromJsonAsync(url, typeof(Product));
|
||||
|
|
|
|||
|
|
@ -4,6 +4,10 @@ using AyCode.Core.Loggers;
|
|||
using AyCode.Services.Loggers;
|
||||
using AyCode.Services.SignalRs;
|
||||
using Azure;
|
||||
using DevExpress.Data.Filtering;
|
||||
using DevExpress.Data.Linq;
|
||||
using DevExpress.Data.Linq.Helpers;
|
||||
using TIAM.Core.Enums;
|
||||
using TIAM.Core.Loggers;
|
||||
using TIAM.Database.Test;
|
||||
using TIAM.Entities.ServiceProviders;
|
||||
|
|
@ -184,5 +188,44 @@ namespace Tiam.Services.Client.Tests
|
|||
transferDestinationToProduct = await _signalRClient.GetByIdAsync<TransferDestinationToProduct>(SignalRTags.GetTransferDestinationToProductById, transferDestinationToProductId);
|
||||
Assert.IsNull(transferDestinationToProduct); //a korábbi törlés miatt NULL kell legyen - J.
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
public async Task FilterExpressionTest_WhenTransfersFiletered()
|
||||
{
|
||||
var userId = Guid.Parse("540271F6-C604-4C16-8160-D5A7CAFEDF00");
|
||||
|
||||
var statuses = new List<TransferStatusType>() { TransferStatusType.OrderConfirmed, TransferStatusType.AssignedToDriver, TransferStatusType.Finished };
|
||||
var converter = new CriteriaToExpressionConverter();
|
||||
var criteriaString = CriteriaOperator.FromLambda<Transfer>(x => x.UserId == userId && statuses.Contains(x.TransferStatusType)).ToString();
|
||||
|
||||
//var criteria = CriteriaOperator.Parse(criteriaString);
|
||||
|
||||
//_signalRDataSource.AsQueryable().Expression.
|
||||
//var filteredData = new List<Transfer>().AsQueryable().AppendWhere(converter, criteria) as IQueryable<Transfer>;
|
||||
|
||||
var transfers = await _signalRClient.GetAllAsync<List<Transfer>>(SignalRTags.GetTransfersByFilterText, [criteriaString]);
|
||||
//var transfers = await _signalRClient.GetAllAsync<List<Transfer>>(SignalRTags.GetTransfersByExpression, [userId, filteredData!.Expression]);
|
||||
|
||||
Assert.IsNotNull(transfers);
|
||||
Assert.IsTrue(transfers.Count > 0);
|
||||
Assert.IsTrue(transfers.All(x=>statuses.Contains(x.TransferStatusType)));
|
||||
|
||||
//var converter = new CriteriaToExpressionConverter();
|
||||
////CriteriaOperator critOps = CriteriaOperator.Parse(tdashboard.EmployeeFilter);
|
||||
//var criteriaString = CriteriaOperator.FromLambda<Transfer>(x => x.LuggageCount == 1).ToString();
|
||||
|
||||
////var json = criteria.AsQueryable().Expression.ToJson();
|
||||
////criteria = JsonConvert.DeserializeObject<Expression<Transfer>(json);
|
||||
//var criteria = CriteriaOperator.Parse(criteriaString);
|
||||
|
||||
////_signalRDataSource.AsQueryable().Expression.
|
||||
//var filteredData = _signalRDataSource.AsQueryable().AppendWhere(converter, criteria) as IQueryable<Transfer>;
|
||||
|
||||
//Assert.IsNotNull(filteredData);
|
||||
//var filteredTransfers = _signalRDataSource.AsQueryable().Provider.CreateQuery<Transfer>(filteredData.Expression).ToList();
|
||||
|
||||
//Assert.IsNotNull(filteredTransfers);
|
||||
//Assert.IsTrue(filteredTransfers.All(x => x.LuggageCount == 1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -92,7 +92,6 @@ namespace Tiam.Services.Client.Tests
|
|||
//var json = criteria.AsQueryable().Expression.ToJson();
|
||||
//criteria = JsonConvert.DeserializeObject<Expression<Transfer>(json);
|
||||
var criteria = CriteriaOperator.Parse(criteriaString);
|
||||
|
||||
//_signalRDataSource.AsQueryable().Expression.
|
||||
var filteredData = _signalRDataSource.AsQueryable().AppendWhere(converter, criteria) as IQueryable<Transfer>;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue