public ReleaseMilstoneCP_Footer(ReleaseMilestone rm, List <int> cpids, ICollection <ReleaseCP> releaseCps, string accountName) { this.MilestoneName = rm.Milestone.Name; this.MilestoneDate = FormatDateTime(rm.MilestoneDate); ReleaseCPView releaseCP = null; using (IReleaseCPRepository db = new ReleaseCPRepository()) { releaseCP = new ReleaseCPView((!rm.Milestone.CPs.Any(cp => cp.MilestoneID == rm.MilestoneID && cpids.Contains(cp.CPID)))? null : releaseCps.Where(r => r.ReleaseID == rm.ReleaseID && r.CPID == rm.Milestone.CPs.Where(cp => cp.MilestoneID == rm.MilestoneID && cpids.Contains(cp.CPID)).FirstOrDefault().CPID).FirstOrDefault(), accountName); } IsCreated = releaseCP != null; this.CheckPointDate = this.IsCreated ? FormatDateTime(releaseCP.PlannedDate) : String.Empty; this.CheckPointId = this.IsCreated ? releaseCP.ReleaseCPID : -1; this.CPName = this.IsCreated ? releaseCP.CPName : String.Empty; }
private static MilestoneDates ComputeMilestoneDates(DataStore data, DateTime endDate, ReleaseMilestone releaseMilestone, ILogger logger) { // Identify the number of working days between the end date and the start date // Look. I know this could be done with cool math, but this is the easiest thing right now :). We can optimize later var current = endDate; var workDays = 0; logger.LogDebug("Computing work days in {Milestone}...", releaseMilestone.Name); while (current <= releaseMilestone.BranchCloses !.Value) { if (!data.IsHoliday(current, WorkLocation.US) && current.DayOfWeek != DayOfWeek.Sunday && current.DayOfWeek != DayOfWeek.Saturday) { workDays += 1; } current = current.AddDays(1); } logger.LogDebug("Computed work days in {Milestone}", releaseMilestone.Name); return(new MilestoneDates() { Name = releaseMilestone.Name, BranchCloses = releaseMilestone.BranchCloses !.Value.ToString("yyyy-MM-dd"), WorkDaysRemaining = workDays, });