public ContentResult Save(FormCollection form) { var dataActions = GanttRequest.Parse(form, Request.QueryString["gantt_mode"]); try { foreach (var ganttData in dataActions) { switch (ganttData.Mode) { case GanttMode.Tasks: UpdateTasks(ganttData); break; case GanttMode.Links: UpdateLinks(ganttData); break; } } // db.SaveChanges(); } catch { // return error to client if something went wrong dataActions.ForEach(g => { g.Action = GanttAction.Error; }); } return(GanttRespose(dataActions)); }
/// <summary> /// Update gantt links /// </summary> /// <param name="ganttData">GanttData object</param> private void UpdateLinks(int projectScheduleVersionID, int projectID, GanttRequest ganttData) { switch (ganttData.Action) { case GanttAction.Inserted: // set ProjectID and ProjectScheduleVersionID ganttData.UpdatedLink.ProjectID = projectID; ganttData.UpdatedLink.ProjectScheduleVersionID = projectScheduleVersionID; // add new gantt link db.GanttLinks.Add(ganttData.UpdatedLink); break; case GanttAction.Deleted: // remove gantt link db.GanttLinks.Remove(db.GanttLinks.Find(ganttData.SourceId)); break; case GanttAction.Updated: // set ProjectID and ProjectScheduleVersionID ganttData.UpdatedLink.ProjectID = projectID; ganttData.UpdatedLink.ProjectScheduleVersionID = projectScheduleVersionID; // update gantt link db.Entry(db.GanttLinks.Find(ganttData.UpdatedLink.GanttLinkId)).CurrentValues.SetValues(ganttData.UpdatedLink); break; default: ganttData.Action = GanttAction.Error; break; } }
/// <summary> /// Update gantt links /// </summary> /// <param name="ganttData">GanttData object</param> private void UpdateLinks(GanttRequest ganttData) { switch (ganttData.Action) { case GanttAction.Inserted: // add new gantt link //db.Links.Add(ganttData.UpdatedLink); LinksRepository.Insert(ganttData.UpdatedLink); break; case GanttAction.Deleted: // remove gantt link //db.Links.Remove(db.Links.Find(ganttData.SourceId)); LinksRepository.Delete(ganttData.UpdatedLink); break; case GanttAction.Updated: // update gantt link //db.Entry(db.Links.Find(ganttData.UpdatedLink.Id)).CurrentValues.SetValues(ganttData.UpdatedLink); LinksRepository.Update(ganttData.UpdatedLink); break; default: ganttData.Action = GanttAction.Error; break; } }
/// <summary> /// Update gantt tasks /// </summary> /// <param name="ganttData">GanttData object</param> private void UpdateTasks(GanttRequest ganttData) { switch (ganttData.Action) { case GanttAction.Inserted: // add new gantt task entity db.Tasks.Add(ganttData.UpdatedTask); break; case GanttAction.Deleted: // remove gantt tasks db.Tasks.Remove(db.Tasks.Find(ganttData.SourceId)); break; case GanttAction.Updated: // update gantt task db.Entry(db.Tasks.Find(ganttData.UpdatedTask.Id)).CurrentValues.SetValues(ganttData.UpdatedTask); break; default: ganttData.Action = GanttAction.Error; break; } }