120 lines
3.6 KiB
C#
120 lines
3.6 KiB
C#
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<ProjectDependency>
|
|
{
|
|
#region Enums
|
|
/// <summary>
|
|
/// Type of the project dependency.
|
|
/// </summary>
|
|
public enum ProjectDependencyType
|
|
{
|
|
/// <summary>
|
|
/// Project A starts before project B start date = 0.
|
|
/// </summary>
|
|
[DisplayValue("Starts before")]
|
|
StartsBefore = 0,
|
|
/// <summary>
|
|
/// Project A starts after project B end date = 1.
|
|
/// </summary>
|
|
//[DisplayValue("Starts after")]
|
|
//StartsAfter = 1,
|
|
/// <summary>
|
|
/// Project A linked with project B = 2.
|
|
/// </summary>
|
|
[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; }
|
|
/// <summary>
|
|
/// Gets or sets an unique identifier of the page to make sure changes on different tabs handled separately.
|
|
/// </summary>
|
|
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
|
|
|
|
/// <summary>
|
|
/// Casts a <see cref="ProjectDependency"/> obect to the object of type <see cref="ProjectDependencyModel"/>.
|
|
/// </summary>
|
|
/// <param name="obj">A <see cref="ProjectDependency"/> object.</param>
|
|
/// <returns>A <see cref="ProjectDependencyModel"/> object filled with data from db.</returns>
|
|
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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Copies data from model to DAL object.
|
|
/// </summary>
|
|
/// <param name="obj">A target DAL object.</param>
|
|
public void CopyTo(ProjectDependency obj)
|
|
{
|
|
if (obj == null)
|
|
throw new ArgumentNullException("obj");
|
|
|
|
obj.SourceProjectId = SourceProjectId;
|
|
obj.TargetProjectId = TargetProjectId;
|
|
obj.Type = Type;
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
} |