public static PmsRelationship GetObjWbsStructure(int _level, int _fromOID, PmsProject _proj) { List <DateTime> lHoliday = CalendarDetailRepository.SelCalendarDetails(new CalendarDetail { CalendarOID = _proj.OID, IsHoliday = 1 }).Select(val => DateTime.Parse(val.Year + "-" + val.Month + "-" + val.Day)).ToList(); string strHoliday = string.Join(",", CalendarDetailRepository.SelCalendarDetails(new CalendarDetail { CalendarOID = _proj.OID, IsHoliday = 1 }).Select(value => value.FullDate.ToString().ToArray())); PmsRelationship getStructure = new PmsRelationship(); getStructure.Level = _level; getStructure.ToOID = _fromOID; getStructure.ToData = _proj; getStructure.ObjName = _proj.Name; getStructure.Description = _proj.Description; getStructure.ObjType = _proj.Type; getStructure.EstDuration = _proj.EstDuration; getStructure.EstStartDt = _proj.EstStartDt != null?Convert.ToDateTime(string.Format("{0:yyyy-MM-dd}", _proj.EstStartDt)) : _proj.EstStartDt; getStructure.EstEndDt = _proj.EstEndDt != null?Convert.ToDateTime(string.Format("{0:yyyy-MM-dd}", _proj.EstEndDt)) : _proj.EstEndDt; getStructure.ActDuration = _proj.ActDuration; getStructure.ActStartDt = _proj.ActStartDt != null?Convert.ToDateTime(string.Format("{0:yyyy-MM-dd}", _proj.ActStartDt)) : _proj.ActStartDt; getStructure.ActEndDt = _proj.ActEndDt != null?Convert.ToDateTime(string.Format("{0:yyyy-MM-dd}", _proj.ActEndDt)) : _proj.ActEndDt; getStructure.ObjSt = _proj.BPolicyOID; getStructure.ObjStNm = _proj.BPolicy.StatusNm; getStructure.Complete = _proj.Complete; getStructure.WorkingDay = _proj.WorkingDay; getStructure.Id = null; getStructure.Dependency = null; if (_proj.BPolicy.Name == PmsConstant.POLICY_PROJECT_PREPARE || _proj.BPolicy.Name == PmsConstant.POLICY_PROJECT_PAUSED) { getStructure.diseditable = PmsConstant.DISEDITABLE; } else { getStructure.diseditable = PmsConstant.FLOWEDITABLE; if (_proj.ActEndDt != null) { getStructure.Delay = PmsUtils.CalculateDelay(Convert.ToDateTime(_proj.EstEndDt), Convert.ToDateTime(_proj.ActEndDt), Convert.ToInt32(_proj.WorkingDay), lHoliday); } else { getStructure.Delay = PmsUtils.CalculateDelay(Convert.ToDateTime(_proj.EstEndDt), DateTime.Now, Convert.ToInt32(_proj.WorkingDay), lHoliday); } } GetWbsStructure(getStructure, _fromOID, Convert.ToInt32(_proj.WorkingDay), strHoliday, _proj, lHoliday); return(getStructure); }
public static List <Dictionary <string, object> > GetLDGanttWbs(string OID) { int Level = 0; PmsProject proj = PmsProjectRepository.SelPmsObject(new PmsProject { OID = Convert.ToInt32(OID) }); List <DateTime> lHoliday = CalendarDetailRepository.SelCalendarDetails(new CalendarDetail { CalendarOID = proj.CalendarOID, IsHoliday = 1 }).Select(val => DateTime.Parse(val.Year + "-" + val.Month + "-" + val.Day)).ToList(); List <Dictionary <string, object> > ldPmsWbs = new List <Dictionary <string, object> >(); Dictionary <string, object> dProj = new Dictionary <string, object>(); dProj.Add("oid", proj.OID); dProj.Add("id", 0); dProj.Add("name", proj.Name); dProj.Add("progress", 0); dProj.Add("progressByWorklog", false); dProj.Add("relevance", 0); dProj.Add("type", ""); dProj.Add("typeId", ""); dProj.Add("description", proj.Description); dProj.Add("code", Level); dProj.Add("level", Level); if (proj.BPolicy.Name != PmsConstant.POLICY_PROJECT_PREPARE) { if (proj.ActEndDt != null) { dProj.Add("status", "STATUS_DONE"); } else { int delay = PmsUtils.CalculateDelay(Convert.ToDateTime(proj.EstEndDt), DateTime.Now, Convert.ToInt32(proj.WorkingDay), lHoliday); if (delay > 1 && delay <= PmsConstant.DELAY) { dProj.Add("status", "STATUS_WAITING"); } else if (delay > PmsConstant.DELAY) { dProj.Add("status", "STATUS_FAILED"); } else { dProj.Add("status", "STATUS_ACTIVE"); } } } else { dProj.Add("status", "STATUS_SUSPENDED"); } dProj.Add("depends", ""); dProj.Add("canWrite", true); dProj.Add("start", proj.EstStartDt); dProj.Add("duration", proj.EstDuration); dProj.Add("end", proj.EstEndDt); dProj.Add("ActStart", proj.ActStartDt != null ? string.Format("{0:yyyy-MM-dd}", proj.ActStartDt) : ""); dProj.Add("ActDuration", proj.ActDuration); dProj.Add("ActEnd", proj.ActEndDt != null ? string.Format("{0:yyyy-MM-dd}", proj.ActEndDt) : ""); dProj.Add("startIsMilestone", false); dProj.Add("endIsMilestone", false); dProj.Add("collapsed", false); dProj.Add("assigs", new List <object>()); ldPmsWbs.Add(dProj); GetGanttSturcture(dProj, ldPmsWbs, Convert.ToInt32(proj.WorkingDay), lHoliday); return(ldPmsWbs); }