EnVisageOnline/Main/Source/EnVisage/Models/ProjectDependencies/ProjectDependencyModel.cs

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
}
}