Files
xIdentityModels/Extensions/XModelExtensions.cs
T
2024-01-25 04:42:47 +03:30

120 lines
4.5 KiB
C#

using System;
using System.Collections.Generic;
using xCommons.Extensions;
using xIdentityModels.Descriptors;
using xIdentityModels.Models;
using xIdentityModels.Navigations;
namespace xIdentityModels.Extensions {
public static class XModelExtensions {
/// <summary>
/// /// Convert XIdentityUserDescriptor instance to XUser
/// </summary>
/// <param name="source"></param>
/// <returns></returns>
public static XUser ToXUser (this XIdentityUserDescriptor source) {
return new XUser {
Id = source.Id,
FirstName = source.FirstName,
LastName = source.LastName,
UserName = source.UserName,
Email = source.Email,
EmailConfirmed = source.EmailConfirmed,
PhoneNumber = source.PhoneNumber,
PhoneNumberConfirmed = source.PhoneNumberConfirmed,
IsEnable = true,
IsBanned = false,
CreationDate = DateTime.UtcNow,
DateOfBirth = DateTime.Parse (source.DateOfBirth)
};
}
/// <summary>
/// Check a User is Same as Descriptor User
/// </summary>
/// <param name="source"></param>
/// <param name="dest"></param>
/// <returns></returns>
public static bool IsSameAs (this XUser source, XIdentityUserDescriptor dest) {
//
if (source.IsNull () ||
dest.IsNull ()) {
return false;
}
//
var isSame = source.IsSameContent (dest, propertyWhiteList : new [] {
nameof (XIdentityUserDescriptor.FirstName),
nameof (XIdentityUserDescriptor.LastName),
nameof (XIdentityUserDescriptor.UserName),
nameof (XIdentityUserDescriptor.Email),
nameof (XIdentityUserDescriptor.EmailConfirmed),
nameof (XIdentityUserDescriptor.PhoneNumber),
nameof (XIdentityUserDescriptor.PhoneNumberConfirmed),
nameof (XIdentityUserDescriptor.IsEnable),
nameof (XIdentityUserDescriptor.IsBanned),
nameof (XIdentityUserDescriptor.DateOfBirth)
},
propertyValueCheckers : new [] {
new KeyValuePair<string, Func<XUser, XIdentityUserDescriptor, bool>> (
nameof (XIdentityUserDescriptor.DateOfBirth),
(user, descriptorUser) => {
//
var descriptorUserDateOfBirth = DateTime.Parse (descriptorUser.DateOfBirth);
return DateTime.Equals (user.DateOfBirth, descriptorUserDateOfBirth);
})
}
);
//
return isSame;
}
/// <summary>
/// Check to XDevice instance to be same or not
/// </summary>
/// <param name="source"></param>
/// <param name="dest"></param>
/// <returns></returns>
public static bool IsSameAs (this XDevice source, XDevice dest) {
//
if (source.IsNull () ||
dest.IsNull ()) {
return false;
}
//
var isSame = source.Os.ToNormalString () == dest.Os.ToNormalString () &&
source.OsVersion.ToNormalString () == dest.OsVersion.ToNormalString () &&
source.Browser.ToNormalString () == dest.Browser.ToNormalString () &&
source.UserAgent.ToNormalString () == dest.UserAgent.ToNormalString () &&
source.DeviceType == dest.DeviceType;
//
return isSame;
}
/// <summary>
/// convert UserClaimsInfo to TokenResponse ...
/// </summary>
/// <param name="source"></param>
/// <returns></returns>
public static XTokenResponse ToXTokenResponse (this XUserClaimsInfoDto source) {
//
if (source.IsNull () ||
(source.AccessToken.IsNullOrEmpty () && source.RefreshToken.IsNullOrEmpty ())) {
return null;
}
//
var result = new XTokenResponse {
AccessToken = source.AccessToken,
RefreshToken = source.RefreshToken,
ExpiresAt = source.ExpiresAt
};
//
return result;
}
}
}