improvements, fixes, etc...

This commit is contained in:
jozsef.b@aycode.com 2024-05-27 20:38:31 +02:00
parent 8d9ec4df7a
commit 60b53a217a
5 changed files with 62 additions and 9 deletions

View File

@ -2,6 +2,8 @@
using MessagePack.Resolvers; using MessagePack.Resolvers;
using MessagePack; using MessagePack;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Text.RegularExpressions;
namespace AyCode.Core.Extensions; namespace AyCode.Core.Extensions;
@ -18,7 +20,12 @@ public static class SerializeObjectExtensions
public static string ToJson<T>(this IQueryable<T> source) where T : class, IAcSerializableToJson => JsonConvert.SerializeObject(source, Options); public static string ToJson<T>(this IQueryable<T> source) where T : class, IAcSerializableToJson => JsonConvert.SerializeObject(source, Options);
public static string ToJson<T>(this IEnumerable<T> source) where T : class, IAcSerializableToJson => JsonConvert.SerializeObject(source, Options); public static string ToJson<T>(this IEnumerable<T> source) where T : class, IAcSerializableToJson => JsonConvert.SerializeObject(source, Options);
public static T? JsonTo<T>(this string json) => JsonConvert.DeserializeObject<T>(json, Options); public static T? JsonTo<T>(this string json)
{
if (json.StartsWith("\"") && json.EndsWith("\"")) json = Regex.Unescape(json).TrimStart('"').TrimEnd('"');
return JsonConvert.DeserializeObject<T>(json, Options);
}
public static byte[] ToMessagePack(this object message) => MessagePackSerializer.Serialize(message); public static byte[] ToMessagePack(this object message) => MessagePackSerializer.Serialize(message);

View File

@ -16,6 +16,8 @@ public abstract class AcUserToCompany<TUser, TCompany> : IAcUserToCompany<TUser,
public Guid UserId { get; set; } public Guid UserId { get; set; }
public Guid ServiceProviderId { get; set; } public Guid ServiceProviderId { get; set; }
public int Permissions { get; set; }
public virtual TUser User { get; set; } public virtual TUser User { get; set; }
[ForeignKey("ServiceProviderId")] //COMPANY_RENAME - J. [ForeignKey("ServiceProviderId")] //COMPANY_RENAME - J.
public virtual TCompany Company { get; set; } public virtual TCompany Company { get; set; }

View File

@ -6,4 +6,5 @@ namespace AyCode.Interfaces.Users;
public interface IAcUserToCompanyBase : IEntityGuid, IAcUserForeignKey, IAcCompanyForeignKey, ITimeStampInfo public interface IAcUserToCompanyBase : IEntityGuid, IAcUserForeignKey, IAcCompanyForeignKey, ITimeStampInfo
{ {
public int Permissions { get; set; }
} }

View File

@ -6,19 +6,31 @@ using System.Text.RegularExpressions;
namespace AyCode.Services.SignalRs; namespace AyCode.Services.SignalRs;
[MessagePackObject] [MessagePackObject]
public class SignalPostJsonDataMessage : ISignalPostMessage<string> public class SignalPostJsonDataMessage<TPostDataType> : ISignalPostMessage<TPostDataType> where TPostDataType : class
{ {
[IgnoreMember] [IgnoreMember]
private string _postData; private TPostDataType? _postData;
[Key(0)] [IgnoreMember]
public string PostData public TPostDataType PostData
{ {
get => _postData; get
set => _postData = Regex.Unescape(value).TrimStart('"').TrimEnd('"'); {
return _postData ??= PostDataJson.JsonTo<TPostDataType>()!;
}
private init
{
_postData = value;
PostDataJson = _postData.ToJson();
}
} }
public SignalPostJsonDataMessage(object postData) => PostData = postData.ToJson(); [Key(0)]
public string PostDataJson { get; set; }
public SignalPostJsonDataMessage(){}
public SignalPostJsonDataMessage(TPostDataType postData) => PostData = postData;
public SignalPostJsonDataMessage(string postDataJson) => PostDataJson = postDataJson;
} }
[MessagePackObject] [MessagePackObject]
@ -28,7 +40,7 @@ public class SignalPostMessage<TPostData>(TPostData postData) : ISignalPostMessa
public TPostData? PostData { get; set; } = postData; public TPostData? PostData { get; set; } = postData;
} }
public interface ISignalPostMessage<out TPostData> : ISignalRMessage public interface ISignalPostMessage<TPostData> : ISignalRMessage
{ {
TPostData? PostData { get; } TPostData? PostData { get; }
} }
@ -49,6 +61,27 @@ public interface ISignalRMessage
{ } { }
[MessagePackObject]
public sealed class SignalResponseJsonMessage : ISignalResponseMessage<string>
{
[Key(0)]
public SignalResponseStatus Status { get; set; }
[Key(1)]
public string? ResponseData { get; set; }
public SignalResponseJsonMessage(){}
public SignalResponseJsonMessage(SignalResponseStatus status, object responseData) : this(status, responseData.ToJson())
{ }
public SignalResponseJsonMessage(SignalResponseStatus status, string responseDataJson)
{
Status = status;
ResponseData = responseDataJson;
}
}
[MessagePackObject] [MessagePackObject]
public sealed class SignalResponseMessage<TResponseData>(SignalResponseStatus status, TResponseData? responseData) : ISignalResponseMessage<TResponseData> public sealed class SignalResponseMessage<TResponseData>(SignalResponseStatus status, TResponseData? responseData) : ISignalResponseMessage<TResponseData>
{ {

View File

@ -0,0 +1,10 @@
namespace AyCode.Services.SignalRs;
public class SignalMessageTagAttribute(Type requestMessageType, Type responseMessageType, Type controllerType, params Type[] parameters) : Attribute
{
public Type RequestMessageType { get; } = requestMessageType;
public Type ResponseMessageType { get; } = responseMessageType;
public Type ControllerType { get; } = controllerType;
public Type[] Parameters { get; } = parameters;
}