public static int AddWorkspace(Workspace newWorkspace) { int newId = AvailableWorkspaces.Count > 0 ? AvailableWorkspaces.Max(w => w.Id) + 1 : 1; newWorkspace.Id = newId; AvailableWorkspaces.Add(newWorkspace); XmlSerializer x = new XmlSerializer(typeof(List<Workspace>)); TextWriter writer = new StreamWriter(WORKSPACES); x.Serialize(writer, AvailableWorkspaces); return newId; }
public static int UpdateWorkspace(Workspace workspace) { var existing = AvailableWorkspaces.Find(ws => ws.Id == workspace.Id); var existingIndex = AvailableWorkspaces.IndexOf(existing); AvailableWorkspaces[existingIndex] = workspace; XmlSerializer x = new XmlSerializer(typeof(List<Workspace>)); TextWriter writer = new StreamWriter(WORKSPACES); x.Serialize(writer, AvailableWorkspaces); return existing.Id; }
public ActionResult SaveWorkspace(WorkspaceModel workspace) { if (ModelState.IsValid) { try { var updatedWorkspace = new Workspace { Id = workspace.ID, IsComplete = workspace.IsComplete, Name = workspace.Name }; db.Workspaces.AddOrUpdate(updatedWorkspace); db.SaveChanges(); // update parameters var existingValues = from pv in db.ParameterValues where pv.WorkspaceId == workspace.ID select pv; foreach (var value in existingValues) { db.ParameterValues.Remove(value); } db.SaveChanges(); foreach (var paramValue in workspace.ParametersValues) { db.ParameterValues.AddOrUpdate( new ParamValue { ParameterId = paramValue.ID, Value = paramValue.Value, WorkspaceId = updatedWorkspace.Id }); } db.SaveChanges(); if (workspace.Result != null) { updatedWorkspace.OutputInterval = workspace.Result.OutputInterval; updatedWorkspace.OutputLinguistic = workspace.Result.OutputLinguistic; db.Workspaces.AddOrUpdate(updatedWorkspace); db.SaveChanges(); } return LoadWorkspace(updatedWorkspace.Id); } catch (Exception ex) { return new HttpStatusCodeResult(HttpStatusCode.InternalServerError, ex.Message); } } // if didn't pass validation return PartialView("_Workspace", RestoreModel(workspace)); }