diff --git a/Dtos/XUserProfileDto.cs b/Dtos/XUserProfileDto.cs index cf304ac..269d8f1 100644 --- a/Dtos/XUserProfileDto.cs +++ b/Dtos/XUserProfileDto.cs @@ -84,6 +84,24 @@ namespace xIdentityModels.Dtos { NullValueHandling = NullValueHandling.Ignore)] public XGender Gender { get; set; } + [JsonProperty ( + "bio", + Required = Required.Default, + NullValueHandling = NullValueHandling.Ignore)] + public string Bio { get; set; } + + [JsonProperty ( + "coverImage", + Required = Required.Default, + NullValueHandling = NullValueHandling.Ignore)] + public string CoverImage { get; set; } + + [JsonProperty ( + "openToSearch", + Required = Required.Default, + NullValueHandling = NullValueHandling.Ignore)] + public bool OpenToSearch { get; set; } + [JsonProperty ( "friendshipInfo", Required = Required.Default, diff --git a/Models/XUserClaimsInfoDto.cs b/Models/XUserClaimsInfoDto.cs index 447f195..4499082 100644 --- a/Models/XUserClaimsInfoDto.cs +++ b/Models/XUserClaimsInfoDto.cs @@ -9,8 +9,10 @@ using xExceptions.Constants; using xIdentityModels.Constants; using xModels.Base; -namespace xIdentityModels.Models { - public class XUserClaimsInfoDto : XBaseDto { +namespace xIdentityModels.Models +{ + public class XUserClaimsInfoDto : XBaseDto + { // #region Properties ... public string AccessToken { get; } @@ -28,30 +30,35 @@ namespace xIdentityModels.Models { public bool IsEnabled { get; } public bool EmailConfirmed { get; } public bool PhoneNumberConfirmed { get; } + public string Bio { get; set; } + public string CoverImage { get; set; } + public bool OpenToSearch { get; set; } public long? ExpiredOn { get; } public long? AuthenticatedOn { get; } public DateTime? BrithDate { get; } - public IEnumerable Issuers { get; } = new HashSet (); - public IEnumerable Audiences { get; } = new HashSet (); - public IEnumerable ClientIds { get; } = new HashSet (); - public IEnumerable Scopes { get; } = new HashSet (); - public IEnumerable Roles { get; } = new HashSet (); + public IEnumerable Issuers { get; } = new HashSet(); + public IEnumerable Audiences { get; } = new HashSet(); + public IEnumerable ClientIds { get; } = new HashSet(); + public IEnumerable Scopes { get; } = new HashSet(); + public IEnumerable Roles { get; } = new HashSet(); #endregion // - public XUserClaimsInfoDto () { } + public XUserClaimsInfoDto() { } - public XUserClaimsInfoDto ( + public XUserClaimsInfoDto( string accessToken, string refreshToken, long expiresAt, IEnumerable claims - ) { + ) + { // // refreshToken.IsNullOrEmpty () - if (claims.IsNull () || - accessToken.IsNullOrEmpty ()) { - XException.InvalidArgs.Throw (); + if (claims.IsNull() || + accessToken.IsNullOrEmpty()) + { + XException.InvalidArgs.Throw(); } // @@ -61,34 +68,62 @@ namespace xIdentityModels.Models { ExpiresAt = expiresAt; // - if (!claims.IsNull ()) { - UserId = claims.FirstOrDefault (c => c.Type == XCustomClaims.UserId)?.Value ?? ""; - UserName = claims.FirstOrDefault (c => c.Type == XCustomClaims.UserName)?.Value ?? ""; - FirstName = claims.FirstOrDefault (c => c.Type == XCustomClaims.FirstName)?.Value ?? ""; - LastName = claims.FirstOrDefault (c => c.Type == XCustomClaims.LastName)?.Value ?? ""; - Picture = claims.FirstOrDefault (c => c.Type == XCustomClaims.Picture)?.Value ?? ""; - Email = claims.FirstOrDefault (c => c.Type == XCustomClaims.Email)?.Value ?? null; - PhoneNumber = claims.FirstOrDefault (c => c.Type == XCustomClaims.PhoneNumber)?.Value ?? null; + if (!claims.IsNull()) + { + // + UserId = claims.FirstOrDefault(c => c.Type == XCustomClaims.UserId)?.Value ?? ""; + UserName = claims.FirstOrDefault(c => c.Type == XCustomClaims.UserName)?.Value ?? ""; + FirstName = claims.FirstOrDefault(c => c.Type == XCustomClaims.FirstName)?.Value ?? ""; + LastName = claims.FirstOrDefault(c => c.Type == XCustomClaims.LastName)?.Value ?? ""; + Picture = claims.FirstOrDefault(c => c.Type == XCustomClaims.Picture)?.Value ?? ""; + Email = claims.FirstOrDefault(c => c.Type == XCustomClaims.Email)?.Value ?? null; + PhoneNumber = claims.FirstOrDefault(c => c.Type == XCustomClaims.PhoneNumber)?.Value ?? null; + + // + Bio = claims.FirstOrDefault(c => c.Type == XCustomClaims.Bio)?.Value ?? null; + CoverImage = claims.FirstOrDefault(c => c.Type == XCustomClaims.CoverImage)?.Value ?? null; + + // + var openToSearchStr = claims.FirstOrDefault(c => c.Type == XCustomClaims.OpenToSearch)?.Value ?? null; + if (openToSearchStr.IsNullOrEmpty()) + { + OpenToSearch = false; + } + else + { + // + var openToSearch = false; + bool.TryParse(openToSearchStr, out openToSearch); + + // + OpenToSearch = openToSearch; + } // // Handle Gender ... - var genders = ObjectHelper.ToEnumerableKeys (); - var genderStr = claims.FirstOrDefault (c => c.Type == XCustomClaims.Gender).Value ?? null; - if (genderStr.IsNullOrEmpty ()) { + var genders = ObjectHelper.ToEnumerableKeys(); + var genderStr = claims.FirstOrDefault(c => c.Type == XCustomClaims.Gender).Value ?? null; + if (genderStr.IsNullOrEmpty()) + { Gender = XGender.Male; - } else { - Gender = genderStr.GetValue (); + } + else + { + Gender = genderStr.GetValue(); } // // Handle IsBanned ... - var isBannedStr = claims.FirstOrDefault (c => c.Type == XCustomClaims.IsBanned).Value ?? null; - if (isBannedStr.IsNullOrEmpty ()) { + var isBannedStr = claims.FirstOrDefault(c => c.Type == XCustomClaims.IsBanned).Value ?? null; + if (isBannedStr.IsNullOrEmpty()) + { IsBanned = false; - } else { + } + else + { // var isBanned = false; - Boolean.TryParse (isBannedStr, out isBanned); + Boolean.TryParse(isBannedStr, out isBanned); // IsBanned = isBanned; @@ -96,13 +131,16 @@ namespace xIdentityModels.Models { // // Handle IsEnabled ... - var isEnabledStr = claims.FirstOrDefault (c => c.Type == XCustomClaims.IsEnabled).Value ?? null; - if (isEnabledStr.IsNullOrEmpty ()) { + var isEnabledStr = claims.FirstOrDefault(c => c.Type == XCustomClaims.IsEnabled).Value ?? null; + if (isEnabledStr.IsNullOrEmpty()) + { IsEnabled = false; - } else { + } + else + { // var isEnabled = false; - Boolean.TryParse (isEnabledStr, out isEnabled); + Boolean.TryParse(isEnabledStr, out isEnabled); // IsEnabled = isEnabled; @@ -110,13 +148,16 @@ namespace xIdentityModels.Models { // // Handle Email Confirmed ... - var emailConfirmedStr = claims.FirstOrDefault (c => c.Type == XCustomClaims.EmailVerified).Value ?? null; - if (emailConfirmedStr.IsNullOrEmpty ()) { + var emailConfirmedStr = claims.FirstOrDefault(c => c.Type == XCustomClaims.EmailVerified).Value ?? null; + if (emailConfirmedStr.IsNullOrEmpty()) + { EmailConfirmed = false; - } else { + } + else + { // var emailConfirmed = false; - Boolean.TryParse (emailConfirmedStr, out emailConfirmed); + Boolean.TryParse(emailConfirmedStr, out emailConfirmed); // EmailConfirmed = emailConfirmed; @@ -124,13 +165,16 @@ namespace xIdentityModels.Models { // // Handle PhoneNumber Confirmed ... - var phoneNumberConfirmedStr = claims.FirstOrDefault (c => c.Type == XCustomClaims.PhoneNumberVerified).Value ?? null; - if (phoneNumberConfirmedStr.IsNullOrEmpty ()) { + var phoneNumberConfirmedStr = claims.FirstOrDefault(c => c.Type == XCustomClaims.PhoneNumberVerified).Value ?? null; + if (phoneNumberConfirmedStr.IsNullOrEmpty()) + { PhoneNumberConfirmed = false; - } else { + } + else + { // var phoneNumberConfirmed = false; - Boolean.TryParse (phoneNumberConfirmedStr, out phoneNumberConfirmed); + Boolean.TryParse(phoneNumberConfirmedStr, out phoneNumberConfirmed); // PhoneNumberConfirmed = phoneNumberConfirmed; @@ -138,13 +182,16 @@ namespace xIdentityModels.Models { // // Handle ExpiredOn ... - var expiredOnStr = claims.FirstOrDefault (c => c.Type == XCustomClaims.ExpiredOn).Value ?? null; - if (expiredOnStr.IsNullOrEmpty ()) { + var expiredOnStr = claims.FirstOrDefault(c => c.Type == XCustomClaims.ExpiredOn).Value ?? null; + if (expiredOnStr.IsNullOrEmpty()) + { ExpiredOn = null; - } else { + } + else + { // long expiredOn = 0; - long.TryParse (expiredOnStr, out expiredOn); + long.TryParse(expiredOnStr, out expiredOn); // ExpiredOn = expiredOn; @@ -152,13 +199,16 @@ namespace xIdentityModels.Models { // // Handle AuthenticatedOn ... - var authenticatedOnStr = claims.FirstOrDefault (c => c.Type == XCustomClaims.AuthenticatedOn).Value ?? null; - if (authenticatedOnStr.IsNullOrEmpty ()) { + var authenticatedOnStr = claims.FirstOrDefault(c => c.Type == XCustomClaims.AuthenticatedOn).Value ?? null; + if (authenticatedOnStr.IsNullOrEmpty()) + { AuthenticatedOn = null; - } else { + } + else + { // long authenticatedOn = 0; - long.TryParse (authenticatedOnStr, out authenticatedOn); + long.TryParse(authenticatedOnStr, out authenticatedOn); // AuthenticatedOn = authenticatedOn; @@ -166,29 +216,33 @@ namespace xIdentityModels.Models { // // Handle BrithDate ... - var brithDateStr = claims.FirstOrDefault (c => c.Type == XCustomClaims.BrithDate)?.Value ?? ""; - if (brithDateStr.IsNullOrEmpty ()) { + var brithDateStr = claims.FirstOrDefault(c => c.Type == XCustomClaims.BrithDate)?.Value ?? ""; + if (brithDateStr.IsNullOrEmpty()) + { // BrithDate = null; - } else { + } + else + { // DateTime bDate; - DateTime.TryParse (brithDateStr, out bDate); + DateTime.TryParse(brithDateStr, out bDate); // BrithDate = bDate; } // - Issuers = claims.Where (c => c.Type == XCustomClaims.Issuer) ? - .Select (c => c.Value) ?? new HashSet (); - Audiences = claims.Where (c => c.Type == XCustomClaims.Audience) ? - .Select (c => c.Value) ?? new HashSet (); - ClientIds = claims.Where (c => c.Type == XCustomClaims.ClientId) ? - .Select (c => c.Value) ?? new HashSet (); - Scopes = claims.Where (c => c.Type == XCustomClaims.Scope) ? - .Select (c => c.Value) ?? new HashSet (); - Roles = claims.Where (c => c.Type == XCustomClaims.Role) ? - .Select (c => c.Value) ?? new HashSet (); + // Collections ... + Issuers = claims.Where(c => c.Type == XCustomClaims.Issuer)? + .Select(c => c.Value) ?? new HashSet(); + Audiences = claims.Where(c => c.Type == XCustomClaims.Audience)? + .Select(c => c.Value) ?? new HashSet(); + ClientIds = claims.Where(c => c.Type == XCustomClaims.ClientId)? + .Select(c => c.Value) ?? new HashSet(); + Scopes = claims.Where(c => c.Type == XCustomClaims.Scope)? + .Select(c => c.Value) ?? new HashSet(); + Roles = claims.Where(c => c.Type == XCustomClaims.Role)? + .Select(c => c.Value) ?? new HashSet(); } } } diff --git a/XUser.cs b/XUser.cs index d333f97..83c23f1 100644 --- a/XUser.cs +++ b/XUser.cs @@ -6,11 +6,13 @@ using Microsoft.AspNetCore.Identity; using xIdentityModels.Constants; using xIdentityModels.Navigations; -namespace xIdentityModels { +namespace xIdentityModels +{ /// /// represnt a User of System /// - public partial class XUser : IdentityUser { + public partial class XUser : IdentityUser + { // #region Properties ... /// @@ -18,14 +20,14 @@ namespace xIdentityModels { /// /// user's FirstName [Required] - [StringLength (50)] + [StringLength(50)] public string FirstName { get; set; } /// /// LastName /// /// user's LastName [Required] - [StringLength (100)] + [StringLength(100)] public string LastName { get; set; } /// /// User is Enabled or not @@ -71,6 +73,21 @@ namespace xIdentityModels { /// user's Gender [Required] public XGender Gender { get; set; } + /// + /// User Biography ... + /// + /// + public string Bio { get; set; } + /// + /// User Bio Cover Image ... + /// + /// + public string CoverImage { get; set; } + /// + /// Can Discover User ... + /// + /// + public bool OpenToSearch { get; set; } #endregion // @@ -80,34 +97,34 @@ namespace xIdentityModels { /// /// XDevice /// a Collection of all assigned Devices to User - [InverseProperty ("User")] - public virtual ICollection Devices { get; set; } = new HashSet (); - [InverseProperty ("User")] + [InverseProperty("User")] + public virtual ICollection Devices { get; set; } = new HashSet(); /// /// User's Avatars /// /// XProfileImage /// a Collection of all assigned Avatars to User - public virtual ICollection Avatars { get; set; } = new HashSet (); + [InverseProperty("User")] + public virtual ICollection Avatars { get; set; } = new HashSet(); /// /// User's Followers /// /// XFriendshipFollower /// a Collection of all User's Followers - [InverseProperty ("User")] - public virtual ICollection Followers { get; set; } = new HashSet (); + [InverseProperty("User")] + public virtual ICollection Followers { get; set; } = new HashSet(); /// /// User's Followings /// /// XFriendshipFollowing /// a Collection of all User's Followings - [InverseProperty ("User")] - public virtual ICollection Followings { get; set; } = new HashSet (); + [InverseProperty("User")] + public virtual ICollection Followings { get; set; } = new HashSet(); /// /// User's Roles /// /// a Collection of all User's Roles in System - public virtual ICollection> Roles { get; set; } = new HashSet> (); + public virtual ICollection> Roles { get; set; } = new HashSet>(); #endregion } } \ No newline at end of file