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 { /// /// /// Convert XIdentityUserDescriptor instance to XUser /// /// /// 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) }; } /// /// Check a User is Same as Descriptor User /// /// /// /// 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> ( nameof (XIdentityUserDescriptor.DateOfBirth), (user, descriptorUser) => { // var descriptorUserDateOfBirth = DateTime.Parse (descriptorUser.DateOfBirth); return DateTime.Equals (user.DateOfBirth, descriptorUserDateOfBirth); }) } ); // return isSame; } /// /// Check to XDevice instance to be same or not /// /// /// /// 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; } /// /// convert UserClaimsInfo to TokenResponse ... /// /// /// 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; } } }