This commit is contained in:
Adam 2024-07-07 16:57:02 +02:00
commit 51f7d745d8
9 changed files with 70 additions and 36 deletions

View File

@ -2,13 +2,13 @@
namespace AyCode.Core.Helpers namespace AyCode.Core.Helpers
{ {
public static class AcCharGenerator public static class AcCharsGenerator
{ {
public static readonly char[] Letters; public static readonly char[] Letters;
public static readonly char[] Numbers; public static readonly char[] Numbers;
public static readonly char[] LettersAndNumbers; public static readonly char[] LettersAndNumbers;
static AcCharGenerator() static AcCharsGenerator()
{ {
//"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" //"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
@ -23,6 +23,7 @@ namespace AyCode.Core.Helpers
private static char[] GetRandomChars(int minLength, int maxLength) => GetRandomChars(LettersAndNumbers, minLength, maxLength); private static char[] GetRandomChars(int minLength, int maxLength) => GetRandomChars(LettersAndNumbers, minLength, maxLength);
private static char[] GetRandomChars(char[] sourceChars, int minLength, int maxLength) private static char[] GetRandomChars(char[] sourceChars, int minLength, int maxLength)
{ {
if (minLength < 1) throw new ArgumentOutOfRangeException(nameof(minLength), "must have length greater than or equal to 1");
var random = new Random(); var random = new Random();
return Enumerable.Repeat(sourceChars, random.Next(minLength, maxLength)).Select(s => s[random.Next(s.Length)]).ToArray(); return Enumerable.Repeat(sourceChars, random.Next(minLength, maxLength)).Select(s => s[random.Next(s.Length)]).ToArray();
} }
@ -32,7 +33,7 @@ namespace AyCode.Core.Helpers
return new string(GetRandomChars(AcConst.MinUserTokenLength, AcConst.MaxUserTokenLength)); return new string(GetRandomChars(AcConst.MinUserTokenLength, AcConst.MaxUserTokenLength));
} }
public static string NewPassword() public static string NewPassword(int minLength = AcConst.MinPasswordLength, int maxLength = AcConst.MaxPasswordLength)
{ {
return new string(GetRandomChars(AcConst.MinPasswordLength, AcConst.MaxPasswordLength)); return new string(GetRandomChars(AcConst.MinPasswordLength, AcConst.MaxPasswordLength));
} }

View File

@ -55,8 +55,11 @@ namespace AyCode.Database.DataLayers.Users
=> GetAllModelDtoAsync<TUserModelDto, TUser>(); => GetAllModelDtoAsync<TUserModelDto, TUser>();
public Task<List<TUser>> GetUsersAsync() => SessionAsync(ctx => ctx.Users.ToList()); public Task<List<TUser>> GetUsersAsync() => SessionAsync(ctx => ctx.Users.ToList());
//public Task<List<TUserModelDto>> GetUserEmails() => SessionAsync(ctx => ctx.Users.Select(x => new UserModelDtoEmail(x)).ToList());
public virtual Task<TUser?> UpdateUserAsync(TUser user) => UpdateSafeAsync(user);
public Task<bool> AddUserAsync(TUser user) public Task<bool> AddUserAsync(TUser user)
{ {
return TransactionAsync(ctx => ctx.AddUser(user)); return TransactionAsync(ctx => ctx.AddUser(user));

View File

@ -16,8 +16,8 @@ public interface IAcLoginServiceCommon<TUser, TProfile, TCompany, TUserToService
public bool Logout(); public bool Logout();
public Task<bool> LogoutAsync(); public Task<bool> LogoutAsync();
public AcErrorCode Registration(string email, string password, string? phoneNumber = null); public AcErrorCode Registration(string email, string password, string? phoneNumber = null, Guid? referralId = null);
public AcErrorCode Registration(Guid userId, string email, string password, string? phoneNumber = null); public AcErrorCode Registration(Guid userId, string email, string password, string? phoneNumber = null, Guid? referralId = null);
public Task<AcErrorCode> RegistrationAsync(string email, string password, string? phoneNumber = null); public Task<AcErrorCode> RegistrationAsync(string email, string password, string? phoneNumber = null, Guid? referralId = null);
public Task<AcErrorCode> RegistrationAsync(Guid userId, string email, string password, string? phoneNumber = null); public Task<AcErrorCode> RegistrationAsync(Guid userId, string email, string password, string? phoneNumber = null, Guid? referralId = null);
} }

View File

@ -28,8 +28,7 @@ public abstract class AcUserModelDtoBase<TUserDto, TProfileDto, TCompany, TUserT
protected AcUserModelDtoBase(IAcUserDtoBase<TProfileDto, TCompany, TUserToCompany> user) : base(user) protected AcUserModelDtoBase(IAcUserDtoBase<TProfileDto, TCompany, TUserToCompany> user) : base(user)
{ {
ProfileDto.AddressId = user.Profile.AddressId; ProfileDto.AddressId = user.Profile.AddressId;
UserDto.AffiliateId = user.AffiliateId;
if (user.ServiceProviders.Count == 0) return; if (user.ServiceProviders.Count == 0) return;
//így proxy error lesz... - J. //így proxy error lesz... - J.

View File

@ -39,6 +39,17 @@ public abstract class AcUserModelDtoDetailBase<TUserDtoDetail, TProfileDto, TCom
protected AcUserModelDtoDetailBase(IAcUserDtoDetailBase<TProfileDto, TCompany, TUserToCompany, TAddressDto> user) : base(user) protected AcUserModelDtoDetailBase(IAcUserDtoDetailBase<TProfileDto, TCompany, TUserToCompany, TAddressDto> user) : base(user)
{ {
UserDto.Id = user.Id;
UserDto.ProfileId = user.ProfileId;
UserDto.EmailAddress = user.EmailAddress;
UserDto.EmailConfirmed = user.EmailConfirmed;
UserDto.PhoneNumber = user.PhoneNumber;
UserDto.RefferalId = user.RefferalId;
UserDto.AffiliateId = user.AffiliateId;
UserDto.RefreshToken = user.RefreshToken;
UserDto.Created = user.Created;
UserDto.Modified = user.Modified;
var address = Activator.CreateInstance<TAddressDto>(); var address = Activator.CreateInstance<TAddressDto>();
address.Id = user.Profile.AddressId; address.Id = user.Profile.AddressId;
@ -47,10 +58,19 @@ public abstract class AcUserModelDtoDetailBase<TUserDtoDetail, TProfileDto, TCom
address.Longitude = user.Profile.Address.Longitude; address.Longitude = user.Profile.Address.Longitude;
ProfileDto.Address = address; ProfileDto.Address = address;
}
UserDto.EmailAddress = user.EmailAddress; public void CopyUserDtoValuesToUser(IAcUserDtoDetailBase<TProfileDto, TCompany, TUserToCompany, TAddressDto> user)
UserDto.PhoneNumber = user.PhoneNumber; {
UserDto.Created = user.Created; base.CopyUserDtoValuesToUser(user);
UserDto.Modified = user.Modified;
user.ProfileId = UserDto.ProfileId;
user.EmailAddress = UserDto.EmailAddress;
user.EmailConfirmed = UserDto.EmailConfirmed;
user.PhoneNumber = UserDto.PhoneNumber;
user.RefferalId = UserDto.RefferalId;
//user.RefreshToken = UserDto.RefreshToken; //Ezzel mi legyen?! - J.
user.Created = UserDto.Created;
user.Modified = UserDto.Modified;
} }
} }

View File

@ -34,6 +34,12 @@ public abstract class AcUserModelDtoMinBase<TUserDtoMin, TProfileDto> : AcModelD
//Profile.NickName = user.Profile.NickName; //Profile.NickName = user.Profile.NickName;
} }
public void CopyUserDtoValuesToUser(IAcUserDtoMinBase<TProfileDto> user)
{
user.Id = UserDto.Id;
user.AffiliateId = UserDto.AffiliateId;
}
//public virtual TUserDtoMin CreateMainEntity() //public virtual TUserDtoMin CreateMainEntity()
//{ //{
// var user = base.CreateMainEntity(); // var user = base.CreateMainEntity();

View File

@ -83,11 +83,13 @@ public class AcLoginServiceServer<TResultLoggedInModel, TDal, TDbContext, TUser,
return TaskHelper.ToThreadPoolTask(Logout); return TaskHelper.ToThreadPoolTask(Logout);
} }
public virtual AcErrorCode Registration(string email, string password, string? phoneNumber = null) public virtual AcErrorCode Registration(string email, string password, string? phoneNumber = null, Guid? referralId = null)
=> Registration(Guid.NewGuid(), email, password, phoneNumber); => Registration(Guid.NewGuid(), email, password, phoneNumber, referralId);
public virtual AcErrorCode Registration(Guid userId, string email, string password, string? phoneNumber = null) public virtual AcErrorCode Registration(Guid userId, string email, string password, string? phoneNumber = null, Guid? referralId = null)
{ {
email = email.ToLower();
if ((phoneNumber != null && !AcValidate.IsValidPhoneNumberFormat(phoneNumber, out var errorCode)) || if ((phoneNumber != null && !AcValidate.IsValidPhoneNumberFormat(phoneNumber, out var errorCode)) ||
!AcValidate.IsValidEmailAndPasswordFormat(email, password, out errorCode)) return errorCode; !AcValidate.IsValidEmailAndPasswordFormat(email, password, out errorCode)) return errorCode;
@ -108,11 +110,11 @@ public class AcLoginServiceServer<TResultLoggedInModel, TDal, TDbContext, TUser,
} }
public virtual Task<AcErrorCode> RegistrationAsync(string email, string password, string? phoneNumber = null) public virtual Task<AcErrorCode> RegistrationAsync(string email, string password, string? phoneNumber = null, Guid? referralId = null)
=> RegistrationAsync(Guid.NewGuid(), email, password, phoneNumber); => RegistrationAsync(Guid.NewGuid(), email, password, phoneNumber, referralId);
public virtual Task<AcErrorCode> RegistrationAsync(Guid userId, string email, string password, string? phoneNumber = null) public virtual Task<AcErrorCode> RegistrationAsync(Guid userId, string email, string password, string? phoneNumber = null, Guid? referralId = null)
=> TaskHelper.ToThreadPoolTask(() => Registration(userId, email, password, phoneNumber)); => TaskHelper.ToThreadPoolTask(() => Registration(userId, email, password, phoneNumber, referralId));
public virtual bool SendConfirmationToken(string? email, string confirmationToken) public virtual bool SendConfirmationToken(string? email, string confirmationToken)
{ {

View File

@ -37,22 +37,22 @@ public class AcLoginServiceClient<TUser, TProfile, TCompany, TUserToServiceProvi
return TaskHelper.ToThreadPoolTask(Logout); return TaskHelper.ToThreadPoolTask(Logout);
} }
public virtual AcErrorCode Registration(string email, string password, string? phoneNumber = null) public virtual AcErrorCode Registration(string email, string password, string? phoneNumber = null, Guid? referralId = null)
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }
public AcErrorCode Registration(Guid userId, string email, string password, string? phoneNumber = null) public AcErrorCode Registration(Guid userId, string email, string password, string? phoneNumber = null, Guid? referralId = null)
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }
public virtual Task<AcErrorCode> RegistrationAsync(string email, string password, string? phoneNumber = null) public virtual Task<AcErrorCode> RegistrationAsync(string email, string password, string? phoneNumber = null, Guid? referralId = null)
{ {
return TaskHelper.ToThreadPoolTask(() => Registration(email, password, phoneNumber)); return TaskHelper.ToThreadPoolTask(() => Registration(email, password, phoneNumber));
} }
public Task<AcErrorCode> RegistrationAsync(Guid userId, string email, string password, string? phoneNumber = null) public Task<AcErrorCode> RegistrationAsync(Guid userId, string email, string password, string? phoneNumber = null, Guid? referralId = null)
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }

View File

@ -127,37 +127,39 @@ public interface ISignalRMessage
[MessagePackObject] [MessagePackObject]
public sealed class SignalResponseJsonMessage : ISignalResponseMessage<string> public sealed class SignalResponseJsonMessage : ISignalResponseMessage<string>
{ {
[Key(0)] public SignalResponseStatus Status { get; set; } [Key(0)] public int MessageTag { get; set; }
[Key(1)] public string? ResponseData { get; set; } = null; [Key(1)] public SignalResponseStatus Status { get; set; }
[Key(2)] public string? ResponseData { get; set; } = null;
public SignalResponseJsonMessage(){} public SignalResponseJsonMessage(){}
public SignalResponseJsonMessage(SignalResponseStatus status) public SignalResponseJsonMessage(int messageTag, SignalResponseStatus status)
{ {
Status = status; Status = status;
MessageTag = messageTag;
} }
public SignalResponseJsonMessage(SignalResponseStatus status, object? responseData) : this(status) public SignalResponseJsonMessage(int messageTag, SignalResponseStatus status, object? responseData) : this(messageTag, status)
{ {
if (responseData is string) if (responseData is string stringdata)
ResponseData = responseData as string; ResponseData = stringdata;
else ResponseData = responseData.ToJson(); else ResponseData = responseData.ToJson();
} }
public SignalResponseJsonMessage(SignalResponseStatus status, string? responseDataJson) : this(status) public SignalResponseJsonMessage(int messageTag, SignalResponseStatus status, string? responseDataJson) : this(messageTag, status)
{ {
ResponseData = responseDataJson; ResponseData = responseDataJson;
} }
} }
[MessagePackObject] [MessagePackObject]
public sealed class SignalResponseMessage<TResponseData>(SignalResponseStatus status, TResponseData? responseData) : ISignalResponseMessage<TResponseData> public sealed class SignalResponseMessage<TResponseData>(int messageTag, SignalResponseStatus status, TResponseData? responseData) : ISignalResponseMessage<TResponseData>
{ {
[Key(0)] [Key(0)] public int MessageTag { get; set; }
public SignalResponseStatus Status { get; set; } = status; [Key(1)] public SignalResponseStatus Status { get; set; } = status;
[Key(1)] [Key(2)] public TResponseData? ResponseData { get; set; } = responseData;
public TResponseData? ResponseData { get; set; } = responseData;
} }
public sealed class SignalResponseStatusMessage(SignalResponseStatus status) : ISignalRMessage public sealed class SignalResponseStatusMessage(SignalResponseStatus status) : ISignalRMessage
@ -179,6 +181,7 @@ public interface ISignalResponseMessage<TResponseData> : ISignalResponseMessage
public interface ISignalResponseMessage : ISignalRMessage public interface ISignalResponseMessage : ISignalRMessage
{ {
int MessageTag { get; set; }
SignalResponseStatus Status { get; set; } SignalResponseStatus Status { get; set; }
} }