using System; using System.Globalization; using System.Reflection; using Umbraco.Core.Models.EntityBase; using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Sync; namespace Umbraco.Core.Models { internal class ServerRegistration : Entity, IServerAddress, IAggregateRoot { private string _serverAddress; private string _computerName; private bool _isActive; private static readonly PropertyInfo ServerAddressSelector = ExpressionHelper.GetPropertyInfo(x => x.ServerAddress); private static readonly PropertyInfo ComputerNameSelector = ExpressionHelper.GetPropertyInfo(x => x.ComputerName); private static readonly PropertyInfo IsActiveSelector = ExpressionHelper.GetPropertyInfo(x => x.IsActive); public ServerRegistration() { } /// /// Creates an item with pre-filled properties /// /// /// /// /// /// /// public ServerRegistration(int id, string serverAddress, string computerName, DateTime createDate, DateTime updateDate, bool isActive) { UpdateDate = updateDate; CreateDate = createDate; Key = Id.ToString(CultureInfo.InvariantCulture).EncodeAsGuid(); Id = id; ServerAddress = serverAddress; ComputerName = computerName; IsActive = isActive; } /// /// Creates a new instance for persisting a new item /// /// /// /// public ServerRegistration(string serverAddress, string computerName, DateTime createDate) { CreateDate = createDate; UpdateDate = createDate; Key = 0.ToString(CultureInfo.InvariantCulture).EncodeAsGuid(); ServerAddress = serverAddress; ComputerName = computerName; } public string ServerAddress { get { return _serverAddress; } set { SetPropertyValueAndDetectChanges(o => { _serverAddress = value; return _serverAddress; }, _serverAddress, ServerAddressSelector); } } public string ComputerName { get { return _computerName; } set { SetPropertyValueAndDetectChanges(o => { _computerName = value; return _computerName; }, _computerName, ComputerNameSelector); } } public bool IsActive { get { return _isActive; } set { SetPropertyValueAndDetectChanges(o => { _isActive = value; return _isActive; }, _isActive, IsActiveSelector); } } public override string ToString() { return "(" + ServerAddress + ", " + ComputerName + ", IsActive = " + IsActive + ")"; } } }