using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using EnVisage.Code; using System.Globalization; using System.Web.Script.Serialization; namespace EnVisage.Models.ProjectDependencies { public class ProjectDependencyModel : IBaseModel { #region Enums /// /// Type of the project dependency. /// public enum ProjectDependencyType { /// /// Project A starts before project B start date = 0. /// [DisplayValue("Starts before")] StartsBefore = 0, /// /// Project A starts after project B end date = 1. /// //[DisplayValue("Starts after")] //StartsAfter = 1, /// /// Project A linked with project B = 2. /// [DisplayValue("Links to")] Link = 2, } #endregion #region Constructors public ProjectDependencyModel() { Id = Guid.Empty; SourceProjectId = Guid.Empty; TargetProjectId = Guid.Empty; DependencyType = ProjectDependencyType.StartsBefore; } #endregion #region Properties public Guid Id { get; set; } public Guid SourceProjectId { get; set; } public Guid TargetProjectId { get; set; } public short Type { get; set; } public ProjectDependencyType DependencyType { get { return (ProjectDependencyType)Type; } set { Type = (short)value; } } public string Name { get; set; } public long? StartDate { get; set; } public long? EndDate { get; set; } /// /// Gets or sets an unique identifier of the page to make sure changes on different tabs handled separately. /// public Guid SessionKey { get; set; } public int Level { get; set; } public bool IsReversed { get; set; } public Guid DisplayedProjectId { get; set; } public DependencyResolveModel ResolveConflicts { get; set; } #endregion #region Methods /// /// Casts a obect to the object of type . /// /// A object. /// A object filled with data from db. public static explicit operator ProjectDependencyModel(ProjectDependency obj) { if (obj == null) return null; var model = new ProjectDependencyModel { Id = obj.Id, Type = obj.Type, SourceProjectId = obj.SourceProjectId, TargetProjectId = obj.TargetProjectId }; model.TrimStringProperties(); return model; } /// /// Copies data from model to DAL object. /// /// A target DAL object. public void CopyTo(ProjectDependency obj) { if (obj == null) throw new ArgumentNullException("obj"); obj.SourceProjectId = SourceProjectId; obj.TargetProjectId = TargetProjectId; obj.Type = Type; } #endregion } }