public ReleaseModels.Project GetProjectWithWorkload(int projectId, int releaseId, int milestoneId, int deliverableId) { var project = this.GetProject(projectId); var _assignments = new List<ReleaseModels.ResourceAssignment>(); using (var conn = new SqlConnection(this.ConnectionString)) { var cmdResources = new SqlCommand("get_release_deliverable_assignments", conn); cmdResources.Parameters.Add("@DeliverableId", System.Data.SqlDbType.Int).Value = deliverableId; cmdResources.Parameters.Add("@PhaseId", System.Data.SqlDbType.Int).Value = releaseId; cmdResources.Parameters.Add("@MilestoneId", System.Data.SqlDbType.Int).Value = milestoneId; cmdResources.Parameters.Add("@ProjectId", System.Data.SqlDbType.Int).Value = projectId; cmdResources.CommandType = System.Data.CommandType.StoredProcedure; conn.Open(); using (var resourcesReader = cmdResources.ExecuteReader()) { while (resourcesReader.Read()) { var resRep = new ResourceRepository(); var resource = new ReleaseModels.Resource { Id = int.Parse(resourcesReader["PersonId"].ToString()), FirstName = resourcesReader["FirstName"].ToString(), MiddleName = resourcesReader["MiddleName"].ToString(), LastName = resourcesReader["LastName"].ToString() }; resource.PeriodsAway.AddRange(resRep.GetAbsences(resource.Id)); _assignments.Add(new ReleaseModels.ResourceAssignment { Id = int.Parse(resourcesReader["Id"].ToString()), FocusFactor = double.Parse(resourcesReader["FocusFactor"].ToString()), Phase = new ReleaseModels.Phase { Id = int.Parse(resourcesReader["PhaseId"].ToString()), Title = resourcesReader["phasetitle"].ToString() }, Resource = resource, Project = new ReleaseModels.Project { Id = int.Parse(resourcesReader["ProjectId"].ToString()), Title = resourcesReader["ProjectTitle"].ToString() }, //TODO: fill ActivitiesNeeded Deliverable = new ReleaseModels.Deliverable { Id = int.Parse(resourcesReader["DeliverableId"].ToString()), Title = resourcesReader["DeliverableTitle"].ToString() }, Milestone = new ReleaseModels.Milestone { Id = int.Parse(resourcesReader["MilestoneId"].ToString()), Title = resourcesReader["MilestoneTitle"].ToString() }, StartDate = DateTime.Parse(resourcesReader["StartDate"].ToString()), EndDate = DateTime.Parse(resourcesReader["EndDate"].ToString()), Activity = new ReleaseModels.Activity { Id = int.Parse(resourcesReader["ActivityId"].ToString()), Title = resourcesReader["ActivityTitle"].ToString() } }); } } } using (var conn = new SqlConnection(this.ConnectionString)) { var cmdStatus = new SqlCommand("sp_get_deliverable_status", conn); cmdStatus.Parameters.Add("@DeliverableId", System.Data.SqlDbType.Int).Value = deliverableId; cmdStatus.Parameters.Add("@ReleaseId", System.Data.SqlDbType.Int).Value = releaseId; cmdStatus.Parameters.Add("@MilestoneId", System.Data.SqlDbType.Int).Value = milestoneId; cmdStatus.Parameters.Add("@ProjectId", System.Data.SqlDbType.Int).Value = projectId; cmdStatus.CommandType = System.Data.CommandType.StoredProcedure; conn.Open(); using (var statusReader = cmdStatus.ExecuteReader()) { while (statusReader.Read()) { var assignments = _assignments.Where(a => a.Activity.Id == int.Parse(statusReader["ActivityId"].ToString())).ToList(); var status = new ReleaseModels.ActivityStatus { //Deliverable = itm, HoursRemaining = int.Parse(statusReader["HoursRemaining"].ToString()), //Project = projRep.GetProject(project.Id), Activity = new ReleaseModels.Activity { Id = int.Parse(statusReader["ActivityId"].ToString()), Title = statusReader["ActivityTitle"].ToString(), Description = statusReader["ActivityDescription"].ToString() }, }; foreach(var a in assignments) { status.AssignedResources.Add(a); } project.Workload.Add(status); } } } return project; }