public void CreateDeliverableStatusRecords(StatusInputModel obj) { var conn = new SqlConnection("Data Source=localhost\\SQLENTERPRISE;Initial Catalog=Planner;Integrated Security=SSPI;MultipleActiveResultSets=true"); try { using (conn) { conn.Open(); var cmd = new SqlCommand("sp_insert_milestonestatus", conn); cmd.Parameters.Add("@ReleaseId", System.Data.SqlDbType.Int).Value = obj.ReleaseId; cmd.Parameters.Add("@MilestoneId", System.Data.SqlDbType.Int).Value = obj.MilestoneId; cmd.Parameters.Add("@DeliverableId", System.Data.SqlDbType.Int).Value = obj.DeliverableId; cmd.Parameters.Add("@ProjectId", System.Data.SqlDbType.Int).Value = obj.ProjectId; cmd.Parameters.Add("@ActivityId", System.Data.SqlDbType.Int).Value = 0; cmd.Parameters.Add("@HoursRemaining", System.Data.SqlDbType.Int).Value = 0; cmd.CommandType = System.Data.CommandType.StoredProcedure; // completely renew the ProjectActivityStatuses for the Milestone Deliverables as set in the client app var cmdDelCross = new SqlCommand(string.Format("DELETE FROM MilestoneStatus WHERE ReleaseId = {0} AND MilestoneId = {1} AND DeliverableId = {2} AND ProjectId = {3}", obj.ReleaseId, obj.MilestoneId, obj.DeliverableId, obj.ProjectId), conn); cmdDelCross.ExecuteNonQuery(); foreach (var itm in obj.ActivityStatuses) { //cmd.Parameters["@ProjectId"].Value = itm.ProjectId; cmd.Parameters["@ActivityId"].Value = itm.ActivityId; cmd.Parameters["@HoursRemaining"].Value = itm.HoursRemaining; cmd.ExecuteNonQuery(); } } } catch (Exception ex) { throw; } }
public void GenerateStatusRecords(ReleaseModels.Release rel) { // create status records when not existing based on release configuration foreach (var ms in rel.Milestones) { foreach (var deliverable in ms.Deliverables) { foreach (var proj in rel.Projects) { if (!this.StatusRecordsExist(rel.Id, ms.Id, deliverable.Id, proj.Id)) { var input = new StatusInputModel { ProjectId = proj.Id, DeliverableId = deliverable.Id, MilestoneId = ms.Id, ReleaseId = rel.Id, ActivityStatuses = new List<DeliverableActivityStatusInputModel>() }; foreach (var act in deliverable.ConfiguredActivities) { input.ActivityStatuses.Add(new DeliverableActivityStatusInputModel { ActivityId = act.Id, HoursRemaining = 0 }); } this.CreateDeliverableStatusRecords(input); } } } } }
public void SaveDeliverableStatus(DeliverableStatusInputModel obj) { var input = new StatusInputModel { DeliverableId = obj.DeliverableId, MilestoneId = obj.MilestoneId, ReleaseId = obj.ReleaseId, ActivityStatuses = new List<DeliverableActivityStatusInputModel>() }; foreach (var proj in obj.Scope) { input.ProjectId = proj.Id; foreach (var act in proj.Workload) { input.ActivityStatuses.Add(new DeliverableActivityStatusInputModel { ActivityId = act.Activity.Id, HoursRemaining = act.HoursRemaining }); } this.CreateDeliverableStatusRecords(input); input.ActivityStatuses.Clear(); } }