Files
Umbraco-CMS/src/Umbraco.Core/Models/Task.cs
2018-06-29 19:52:40 +02:00

101 lines
3.4 KiB
C#

using System;
using System.Reflection;
using System.Runtime.Serialization;
using Umbraco.Core.Models.Entities;
namespace Umbraco.Core.Models
{
/// <summary>
/// Represents a Task
/// </summary>
[Serializable]
[DataContract(IsReference = true)]
public class Task : EntityBase
{
private bool _closed;
private TaskType _taskType;
private int _entityId;
private int _ownerUserId;
private int _assigneeUserId;
private string _comment;
public Task(TaskType taskType)
{
_taskType = taskType;
}
private static readonly Lazy<PropertySelectors> Ps = new Lazy<PropertySelectors>();
private class PropertySelectors
{
public readonly PropertyInfo ClosedSelector = ExpressionHelper.GetPropertyInfo<Task, bool>(x => x.Closed);
public readonly PropertyInfo TaskTypeSelector = ExpressionHelper.GetPropertyInfo<Task, TaskType>(x => x.TaskType);
public readonly PropertyInfo EntityIdSelector = ExpressionHelper.GetPropertyInfo<Task, int>(x => x.EntityId);
public readonly PropertyInfo OwnerUserIdSelector = ExpressionHelper.GetPropertyInfo<Task, int>(x => x.OwnerUserId);
public readonly PropertyInfo AssigneeUserIdSelector = ExpressionHelper.GetPropertyInfo<Task, int>(x => x.AssigneeUserId);
public readonly PropertyInfo CommentSelector = ExpressionHelper.GetPropertyInfo<Task, string>(x => x.Comment);
}
/// <summary>
/// Gets or sets a boolean indicating whether the task is closed
/// </summary>
[DataMember]
public bool Closed
{
get { return _closed; }
set { SetPropertyValueAndDetectChanges(value, ref _closed, Ps.Value.ClosedSelector); }
}
/// <summary>
/// Gets or sets the TaskType of the Task
/// </summary>
[DataMember]
public TaskType TaskType
{
get { return _taskType; }
set { SetPropertyValueAndDetectChanges(value, ref _taskType, Ps.Value.TaskTypeSelector); }
}
/// <summary>
/// Gets or sets the Id of the entity, which this task is associated to
/// </summary>
[DataMember]
public int EntityId
{
get { return _entityId; }
set { SetPropertyValueAndDetectChanges(value, ref _entityId, Ps.Value.EntityIdSelector); }
}
/// <summary>
/// Gets or sets the Id of the user, who owns this task
/// </summary>
[DataMember]
public int OwnerUserId
{
get { return _ownerUserId; }
set { SetPropertyValueAndDetectChanges(value, ref _ownerUserId, Ps.Value.OwnerUserIdSelector); }
}
/// <summary>
/// Gets or sets the Id of the user, who is assigned to this task
/// </summary>
[DataMember]
public int AssigneeUserId
{
get { return _assigneeUserId; }
set { SetPropertyValueAndDetectChanges(value, ref _assigneeUserId, Ps.Value.AssigneeUserIdSelector); }
}
/// <summary>
/// Gets or sets the Comment for the Task
/// </summary>
[DataMember]
public string Comment
{
get { return _comment; }
set { SetPropertyValueAndDetectChanges(value, ref _comment, Ps.Value.CommentSelector); }
}
}
}