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

90 lines
3.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace EnVisage.Models.ProjectDependencies
{
public class DependencyChain<T> : Dictionary<Guid, T>
{
public static DependencyChain<T> CreateFrom(Dictionary<Guid, T> obj)
{
if (obj == null)
return null;
var result = new DependencyChain<T>();
foreach (var item in obj)
{
result.Add(item.Key, item.Value);
}
return result;
}
}
public class DependencyChainItem
{
public Guid Id { get; set; }
public Guid SourceProjectId { get; set; }
public Guid TargetProjectId { get; set; }
public int Level { get; set; }
public short Type { get; set; }
public string SourceProjectName { get; set; }
public string TargetProjectName { get; set; }
public DateTime? SourceStartDate { get; set; }
public DateTime? SourceEndDate { get; set; }
public DateTime? TargetStartDate { get; set; }
public DateTime? TargetEndDate { get; set; }
public DateTime? SourceDeadline { get; set; }
public DateTime? TargetDeadline { get; set; }
public bool SourceHasActuals { get; set; }
public bool TargetHasActuals { get; set; }
public bool IsReversed { get; set; }
public static explicit operator DependencyChainItem(VW_ProjectDependencies obj)
{
if (obj == null)
return null;
return new DependencyChainItem
{
Id = obj.Id,
SourceProjectId = obj.SourceProjectId,
TargetProjectId = obj.TargetProjectId,
Type = obj.Type,
Level = 0,
SourceStartDate = obj.SourceStartDate,
SourceEndDate = obj.SourceEndDate,
SourceProjectName = obj.SourceProjectName,
TargetStartDate = obj.TargetStartDate,
TargetEndDate = obj.TargetEndDate,
TargetProjectName = obj.TargetProjectName,
SourceDeadline = obj.SourceDeadline,
TargetDeadline = obj.TargetDeadline,
SourceHasActuals = obj.SourceHasActuals,
TargetHasActuals = obj.TargetHasActuals
};
}
public static DependencyChainItem CreateFrom(VW_ProjectDependencies obj, int level, bool isReversed)
{
if (obj == null)
return null;
return new DependencyChainItem
{
Id = obj.Id,
SourceProjectId = obj.SourceProjectId,
TargetProjectId = obj.TargetProjectId,
Type = obj.Type,
Level = level,
SourceStartDate = obj.SourceStartDate,
SourceEndDate = obj.SourceEndDate,
SourceProjectName = obj.SourceProjectName,
TargetStartDate = obj.TargetStartDate,
TargetEndDate = obj.TargetEndDate,
TargetProjectName = obj.TargetProjectName,
IsReversed = isReversed,
SourceDeadline = obj.SourceDeadline,
TargetDeadline = obj.TargetDeadline,
SourceHasActuals = obj.SourceHasActuals,
TargetHasActuals = obj.TargetHasActuals
};
}
}
}