using System; using System.Collections.Generic; namespace Umbraco.Core.Events { public class CopyEventArgs : CancellableObjectEventArgs, IEquatable> { public CopyEventArgs(TEntity original, TEntity copy, bool canCancel, int parentId) : base(original, canCancel) { Copy = copy; ParentId = parentId; } public CopyEventArgs(TEntity eventObject, TEntity copy, int parentId) : base(eventObject) { Copy = copy; ParentId = parentId; } public CopyEventArgs(TEntity eventObject, TEntity copy, bool canCancel, int parentId, bool relateToOriginal) : base(eventObject, canCancel) { Copy = copy; ParentId = parentId; RelateToOriginal = relateToOriginal; } /// /// The copied entity /// public TEntity Copy { get; set; } /// /// The original entity /// public TEntity Original { get { return EventObject; } } /// /// Gets or Sets the Id of the objects new parent. /// public int ParentId { get; private set; } public bool RelateToOriginal { get; set; } public bool Equals(CopyEventArgs other) { if (ReferenceEquals(null, other)) return false; if (ReferenceEquals(this, other)) return true; return base.Equals(other) && EqualityComparer.Default.Equals(Copy, other.Copy) && ParentId == other.ParentId && RelateToOriginal == other.RelateToOriginal; } public override bool Equals(object obj) { if (ReferenceEquals(null, obj)) return false; if (ReferenceEquals(this, obj)) return true; if (obj.GetType() != this.GetType()) return false; return Equals((CopyEventArgs) obj); } public override int GetHashCode() { unchecked { int hashCode = base.GetHashCode(); hashCode = (hashCode * 397) ^ EqualityComparer.Default.GetHashCode(Copy); hashCode = (hashCode * 397) ^ ParentId; hashCode = (hashCode * 397) ^ RelateToOriginal.GetHashCode(); return hashCode; } } public static bool operator ==(CopyEventArgs left, CopyEventArgs right) { return Equals(left, right); } public static bool operator !=(CopyEventArgs left, CopyEventArgs right) { return !Equals(left, right); } } }