private void UpdateInfoInDb(List <GanttChartItem> data, int sprintDay) { var query = (from t in dbGanttChart.AuxITGanttChart_Items select t.bscmProjectsID).ToList(); foreach (var item in data) { if (query.Contains(item.itemID)) { AuxITGanttChart_Items foundItem = dbGanttChart.AuxITGanttChart_Items.Find(item.itemID); foundItem.OCLT = item.rankingStatus; foundItem.developer = item.developer; foundItem.plannedStartWW = item.plannedStartWorkWeek; foundItem.plannedEndWW = item.plannedEndWorkWeek; foundItem.actualStartWW = item.actualStartWorkWeek; foundItem.actualEndWW = item.actualEndWorkWeek; foundItem.needDateWW = item.deadlineWorkWeek; foundItem.plannedStartDate = getSprintDateFromWorkWeek(item.plannedStartWorkWeek, sprintDay); foundItem.plannedEndDate = getSprintDateFromWorkWeek(item.plannedEndWorkWeek, sprintDay); foundItem.actualStartDate = getSprintDateFromWorkWeek(item.actualStartWorkWeek, sprintDay); foundItem.actualEndDate = getSprintDateFromWorkWeek(item.actualEndWorkWeek, sprintDay); foundItem.needDateDate = getSprintDateFromWorkWeek(item.deadlineWorkWeek, sprintDay); foundItem.developerWorkload = item.developerWorkload; foundItem.numberOfHoursInASprint = item.numberOfHoursInSprint; } else { AuxITGanttChart_Items temp = new AuxITGanttChart_Items(); temp.bscmProjectsID = item.itemID; temp.OCLT = item.rankingStatus; temp.developer = item.developer; temp.plannedStartWW = item.plannedStartWorkWeek; temp.plannedEndWW = item.plannedEndWorkWeek; temp.actualStartWW = item.actualStartWorkWeek; temp.actualEndWW = item.actualEndWorkWeek; temp.needDateWW = item.deadlineWorkWeek; temp.plannedStartDate = getSprintDateFromWorkWeek(item.plannedStartWorkWeek, sprintDay); temp.plannedEndDate = getSprintDateFromWorkWeek(item.plannedEndWorkWeek, sprintDay); temp.actualStartDate = getSprintDateFromWorkWeek(item.actualStartWorkWeek, sprintDay); temp.actualEndDate = getSprintDateFromWorkWeek(item.actualEndWorkWeek, sprintDay); temp.needDateDate = getSprintDateFromWorkWeek(item.deadlineWorkWeek, sprintDay); temp.developerWorkload = item.developerWorkload; temp.numberOfHoursInASprint = item.numberOfHoursInSprint; dbGanttChart.AuxITGanttChart_Items.Add(temp); } } dbGanttChart.SaveChanges(); }
public ActionResult GanttChart(int numOfSprintsBefore = 5, int numOfSprintsAfter = 26) { int numberOfHoursInASprint = 72; //default int numberOfSprintsBefore = numOfSprintsBefore; int numberOfSprintsAfter = numOfSprintsAfter; PopulateViewBagWorkWeekRange(numberOfSprintsBefore, numberOfSprintsAfter); //Query gantt chart items var query = (from t1 in db142.MSP_EpmProject_UserView where programNames.Contains(t1.Program) && t1.State_of_Project == "Active" select new GanttChartItem { itemUID = t1.ProjectUID.ToString(), itemID = t1.Project_ID, itemName = t1.ProjectTitle, PAC = t1.Program }); var listOfGanttChartItem = query.ToList <GanttChartItem>(); var queryIssuesRankings = (from t in dbPrioritization.IssuesRankings where t.overallRank != 0 && t.ITHR.StartsWith("a") select t).ToList(); var queryGanttChartDetails = (from t in dbGanttChart.AuxITGanttChart_Items select t).ToList(); for (int i = 0; i < listOfGanttChartItem.Count(); i++) { string itemID = listOfGanttChartItem[i].itemID; IssuesRanking result = queryIssuesRankings.Find(x => x.bscmProjectsID == itemID); AuxITGanttChart_Items resultGanttChart = queryGanttChartDetails.Find(x => x.bscmProjectsID == itemID); if (result != null) { listOfGanttChartItem[i].overallRank = result.overallRank; listOfGanttChartItem[i].rankingStatus = result.overallRank.ToString(); listOfGanttChartItem[i].ITHR = Int32.Parse(result.ITHR.Split('-')[1]); if (resultGanttChart != null) { numberOfHoursInASprint = resultGanttChart.numberOfHoursInASprint; listOfGanttChartItem[i].rankingStatus = resultGanttChart.OCLT; listOfGanttChartItem[i].developer = resultGanttChart.developer; listOfGanttChartItem[i].plannedStartWorkWeek = resultGanttChart.plannedStartWW; listOfGanttChartItem[i].plannedEndWorkWeek = resultGanttChart.plannedEndWW; listOfGanttChartItem[i].actualStartWorkWeek = resultGanttChart.actualStartWW; listOfGanttChartItem[i].actualEndWorkWeek = resultGanttChart.actualEndWW; listOfGanttChartItem[i].deadlineWorkWeek = resultGanttChart.needDateWW; listOfGanttChartItem[i].developerWorkload = resultGanttChart.developerWorkload; } } else { listOfGanttChartItem.RemoveAt(i); i--; } } listOfGanttChartItem.Sort(); ViewBag.numberOfHoursInASprint = numberOfHoursInASprint; ViewBag.numberOfSprintsBefore = numberOfSprintsBefore; ViewBag.numberOfSprintsAfter = numberOfSprintsAfter; return(View(listOfGanttChartItem)); }