Updating the Member and MemberProfile class to include the standard UmbracoEntity properties.
Refactoring the sql query and the dtos to use the PropertyType as Primary and Property as secondary as a Property might be empty for a defined type. Adding labels to the conventional Member PropertyType aliases.
This commit is contained in:
@@ -42,7 +42,7 @@ namespace Umbraco.Core.Models.Membership
|
||||
/// Integer Id
|
||||
/// </summary>
|
||||
[DataMember]
|
||||
public new int Id
|
||||
public override int Id
|
||||
{
|
||||
get
|
||||
{
|
||||
@@ -65,7 +65,7 @@ namespace Umbraco.Core.Models.Membership
|
||||
/// <remarks>The key is currectly used to store the Unique Id from the
|
||||
/// umbracoNode table, which many of the entities are based on.</remarks>
|
||||
[DataMember]
|
||||
public Guid Key
|
||||
public override Guid Key
|
||||
{
|
||||
get
|
||||
{
|
||||
@@ -88,7 +88,7 @@ namespace Umbraco.Core.Models.Membership
|
||||
/// Gets or sets the Created Date
|
||||
/// </summary>
|
||||
[DataMember]
|
||||
public DateTime CreateDate
|
||||
public override DateTime CreateDate
|
||||
{
|
||||
get { return _createDate; }
|
||||
set
|
||||
@@ -105,7 +105,7 @@ namespace Umbraco.Core.Models.Membership
|
||||
/// Gets or sets the Modified Date
|
||||
/// </summary>
|
||||
[DataMember]
|
||||
public DateTime UpdateDate
|
||||
public override DateTime UpdateDate
|
||||
{
|
||||
get { return _updateDate; }
|
||||
set
|
||||
@@ -122,7 +122,7 @@ namespace Umbraco.Core.Models.Membership
|
||||
/// Indicates whether the current entity has an identity, eg. Id.
|
||||
/// </summary>
|
||||
[IgnoreDataMember]
|
||||
public virtual bool HasIdentity
|
||||
public override bool HasIdentity
|
||||
{
|
||||
get
|
||||
{
|
||||
@@ -168,7 +168,9 @@ namespace Umbraco.Core.Models.Membership
|
||||
{
|
||||
get
|
||||
{
|
||||
return Properties[Constants.Conventions.Member.PasswordQuestion].Value.ToString();
|
||||
return Properties[Constants.Conventions.Member.PasswordQuestion].Value == null
|
||||
? string.Empty
|
||||
: Properties[Constants.Conventions.Member.PasswordQuestion].Value.ToString();
|
||||
}
|
||||
set
|
||||
{
|
||||
@@ -188,7 +190,9 @@ namespace Umbraco.Core.Models.Membership
|
||||
{
|
||||
get
|
||||
{
|
||||
return Properties[Constants.Conventions.Member.PasswordAnswer].Value.ToString();
|
||||
return Properties[Constants.Conventions.Member.PasswordAnswer].Value == null
|
||||
? string.Empty
|
||||
: Properties[Constants.Conventions.Member.PasswordAnswer].Value.ToString();
|
||||
}
|
||||
set
|
||||
{
|
||||
@@ -208,7 +212,9 @@ namespace Umbraco.Core.Models.Membership
|
||||
{
|
||||
get
|
||||
{
|
||||
return Properties[Constants.Conventions.Member.Comments].Value.ToString();
|
||||
return Properties[Constants.Conventions.Member.Comments].Value == null
|
||||
? string.Empty
|
||||
: Properties[Constants.Conventions.Member.Comments].Value.ToString();
|
||||
}
|
||||
set
|
||||
{
|
||||
@@ -228,6 +234,9 @@ namespace Umbraco.Core.Models.Membership
|
||||
{
|
||||
get
|
||||
{
|
||||
if (Properties[Constants.Conventions.Member.IsApproved].Value == null)
|
||||
return default(bool);
|
||||
|
||||
if (Properties[Constants.Conventions.Member.IsApproved].Value is bool)
|
||||
return (bool)Properties[Constants.Conventions.Member.IsApproved].Value;
|
||||
|
||||
@@ -251,6 +260,9 @@ namespace Umbraco.Core.Models.Membership
|
||||
{
|
||||
get
|
||||
{
|
||||
if (Properties[Constants.Conventions.Member.IsLockedOut].Value == null)
|
||||
return default(bool);
|
||||
|
||||
if (Properties[Constants.Conventions.Member.IsLockedOut].Value is bool)
|
||||
return (bool)Properties[Constants.Conventions.Member.IsLockedOut].Value;
|
||||
|
||||
@@ -274,6 +286,9 @@ namespace Umbraco.Core.Models.Membership
|
||||
{
|
||||
get
|
||||
{
|
||||
if (Properties[Constants.Conventions.Member.LastLoginDate].Value == null)
|
||||
return default(DateTime);
|
||||
|
||||
if (Properties[Constants.Conventions.Member.LastLoginDate].Value is DateTime)
|
||||
return (DateTime)Properties[Constants.Conventions.Member.LastLoginDate].Value;
|
||||
|
||||
@@ -297,6 +312,9 @@ namespace Umbraco.Core.Models.Membership
|
||||
{
|
||||
get
|
||||
{
|
||||
if (Properties[Constants.Conventions.Member.LastPasswordChangeDate].Value == null)
|
||||
return default(DateTime);
|
||||
|
||||
if (Properties[Constants.Conventions.Member.LastPasswordChangeDate].Value is DateTime)
|
||||
return (DateTime)Properties[Constants.Conventions.Member.LastPasswordChangeDate].Value;
|
||||
|
||||
@@ -320,6 +338,9 @@ namespace Umbraco.Core.Models.Membership
|
||||
{
|
||||
get
|
||||
{
|
||||
if (Properties[Constants.Conventions.Member.LastLockoutDate].Value == null)
|
||||
return default(DateTime);
|
||||
|
||||
if (Properties[Constants.Conventions.Member.LastLockoutDate].Value is DateTime)
|
||||
return (DateTime)Properties[Constants.Conventions.Member.LastLockoutDate].Value;
|
||||
|
||||
@@ -344,6 +365,9 @@ namespace Umbraco.Core.Models.Membership
|
||||
{
|
||||
get
|
||||
{
|
||||
if (Properties[Constants.Conventions.Member.FailedPasswordAttempts].Value == null)
|
||||
return default(int);
|
||||
|
||||
if (Properties[Constants.Conventions.Member.FailedPasswordAttempts].Value is int)
|
||||
return (int)Properties[Constants.Conventions.Member.FailedPasswordAttempts].Value;
|
||||
|
||||
|
||||
@@ -1,7 +1,133 @@
|
||||
namespace Umbraco.Core.Models.Membership
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using Umbraco.Core.Models.EntityBase;
|
||||
|
||||
namespace Umbraco.Core.Models.Membership
|
||||
{
|
||||
internal class MemberProfile : Profile
|
||||
internal abstract class MemberProfile : Profile, IUmbracoEntity
|
||||
{
|
||||
|
||||
private Lazy<int> _parentId;
|
||||
private int _sortOrder;
|
||||
private int _level;
|
||||
private string _path;
|
||||
private int _creatorId;
|
||||
private bool _trashed;
|
||||
|
||||
private static readonly PropertyInfo ParentIdSelector = ExpressionHelper.GetPropertyInfo<MemberProfile, int>(x => ((IUmbracoEntity)x).ParentId);
|
||||
private static readonly PropertyInfo SortOrderSelector = ExpressionHelper.GetPropertyInfo<MemberProfile, int>(x => ((IUmbracoEntity)x).SortOrder);
|
||||
private static readonly PropertyInfo LevelSelector = ExpressionHelper.GetPropertyInfo<MemberProfile, int>(x => ((IUmbracoEntity)x).Level);
|
||||
private static readonly PropertyInfo PathSelector = ExpressionHelper.GetPropertyInfo<MemberProfile, string>(x => ((IUmbracoEntity)x).Path);
|
||||
private static readonly PropertyInfo CreatorIdSelector = ExpressionHelper.GetPropertyInfo<MemberProfile, int>(x => ((IUmbracoEntity)x).CreatorId);
|
||||
private static readonly PropertyInfo TrashedSelector = ExpressionHelper.GetPropertyInfo<MemberProfile, bool>(x => x.Trashed);
|
||||
|
||||
public abstract new int Id { get; set; }
|
||||
public abstract Guid Key { get; set; }
|
||||
public abstract DateTime CreateDate { get; set; }
|
||||
public abstract DateTime UpdateDate { get; set; }
|
||||
public abstract bool HasIdentity { get; protected set; }
|
||||
|
||||
/// <summary>
|
||||
/// Profile of the user who created this Content
|
||||
/// </summary>
|
||||
int IUmbracoEntity.CreatorId
|
||||
{
|
||||
get
|
||||
{
|
||||
return _creatorId;
|
||||
}
|
||||
set
|
||||
{
|
||||
SetPropertyValueAndDetectChanges(o =>
|
||||
{
|
||||
_creatorId = value;
|
||||
return _creatorId;
|
||||
}, _creatorId, CreatorIdSelector);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the level of the content entity
|
||||
/// </summary>
|
||||
int IUmbracoEntity.Level
|
||||
{
|
||||
get { return _level; }
|
||||
set
|
||||
{
|
||||
SetPropertyValueAndDetectChanges(o =>
|
||||
{
|
||||
_level = value;
|
||||
return _level;
|
||||
}, _level, LevelSelector);
|
||||
} }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the Id of the Parent entity
|
||||
/// </summary>
|
||||
int IUmbracoEntity.ParentId
|
||||
{
|
||||
get
|
||||
{
|
||||
var val = _parentId.Value;
|
||||
if (val == 0)
|
||||
{
|
||||
throw new InvalidOperationException("The ParentId cannot have a value of 0. Perhaps the parent object used to instantiate this object has not been persisted to the data store.");
|
||||
}
|
||||
return val;
|
||||
}
|
||||
set
|
||||
{
|
||||
_parentId = new Lazy<int>(() => value);
|
||||
OnPropertyChanged(ParentIdSelector);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the path
|
||||
/// </summary>
|
||||
string IUmbracoEntity.Path
|
||||
{
|
||||
get { return _path; }
|
||||
set
|
||||
{
|
||||
SetPropertyValueAndDetectChanges(o =>
|
||||
{
|
||||
_path = value;
|
||||
return _path;
|
||||
}, _path, PathSelector);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the sort order of the content entity
|
||||
/// </summary>
|
||||
int IUmbracoEntity.SortOrder
|
||||
{
|
||||
get { return _sortOrder; }
|
||||
set
|
||||
{
|
||||
SetPropertyValueAndDetectChanges(o =>
|
||||
{
|
||||
_sortOrder = value;
|
||||
return _sortOrder;
|
||||
}, _sortOrder, SortOrderSelector);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Boolean indicating whether this Content is Trashed or not.
|
||||
/// If Content is Trashed it will be located in the Recyclebin.
|
||||
/// </summary>
|
||||
public virtual bool Trashed
|
||||
{
|
||||
get { return _trashed; }
|
||||
internal set
|
||||
{
|
||||
SetPropertyValueAndDetectChanges(o =>
|
||||
{
|
||||
_trashed = value;
|
||||
return _trashed;
|
||||
}, _trashed, TrashedSelector);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,34 +3,15 @@ using Umbraco.Core.Persistence;
|
||||
|
||||
namespace Umbraco.Core.Models.Rdbms
|
||||
{
|
||||
[TableName("cmsPropertyData")]
|
||||
[TableName("cmsPropertyType")]
|
||||
[PrimaryKey("id")]
|
||||
[ExplicitColumns]
|
||||
public class PropertyDataReadOnlyDto
|
||||
{
|
||||
/* cmsPropertyData */
|
||||
/* cmsPropertyType */
|
||||
[Column("id")]
|
||||
public int Id { get; set; }
|
||||
|
||||
[Column("VersionId")]
|
||||
public Guid? VersionId { get; set; }
|
||||
|
||||
[Column("propertytypeid")]
|
||||
public int PropertyTypeId { get; set; }
|
||||
|
||||
[Column("dataInt")]
|
||||
public int? Integer { get; set; }
|
||||
|
||||
[Column("dataDate")]
|
||||
public DateTime? Date { get; set; }
|
||||
|
||||
[Column("dataNvarchar")]
|
||||
public string VarChar { get; set; }
|
||||
|
||||
[Column("dataNtext")]
|
||||
public string Text { get; set; }
|
||||
|
||||
/* cmsPropertyType */
|
||||
[Column("dataTypeId")]
|
||||
public int DataTypeId { get; set; }
|
||||
|
||||
@@ -55,6 +36,9 @@ namespace Umbraco.Core.Models.Rdbms
|
||||
[Column("Description")]
|
||||
public string Description { get; set; }
|
||||
|
||||
[Column("PropertyTypeSortOrder")]
|
||||
public int SortOrder { get; set; }
|
||||
|
||||
/* cmsDataType */
|
||||
[Column("controlId")]
|
||||
public Guid ControlId { get; set; }
|
||||
@@ -62,6 +46,28 @@ namespace Umbraco.Core.Models.Rdbms
|
||||
[Column("dbType")]
|
||||
public string DbType { get; set; }
|
||||
|
||||
/* cmsPropertyData */
|
||||
[Column("PropertyDataId")]
|
||||
public int? PropertyDataId { get; set; }
|
||||
|
||||
[Column("propertytypeid")]
|
||||
public int? PropertyTypeId { get; set; }
|
||||
|
||||
[Column("VersionId")]
|
||||
public Guid VersionId { get; set; }
|
||||
|
||||
[Column("dataInt")]
|
||||
public int? Integer { get; set; }
|
||||
|
||||
[Column("dataDate")]
|
||||
public DateTime? Date { get; set; }
|
||||
|
||||
[Column("dataNvarchar")]
|
||||
public string VarChar { get; set; }
|
||||
|
||||
[Column("dataNtext")]
|
||||
public string Text { get; set; }
|
||||
|
||||
[Ignore]
|
||||
public object GetValue
|
||||
{
|
||||
@@ -87,7 +93,7 @@ namespace Umbraco.Core.Models.Rdbms
|
||||
return Text;
|
||||
}
|
||||
|
||||
return null;
|
||||
return string.Empty;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user