public JsonResult SaveProperties(int nodeId, string type) { var node = _Storage.GetNode(nodeId); var xml = new XmlSerializer(typeof(Sequencing)); var xelement = nodeId == 0 ? _CurrentCourse.Sequencing : node.Sequencing; var sequencing = xelement == null ? new Sequencing() : (Sequencing)xml.DeserializeXElement(xelement); object model; if (type == "ControlMode") { model = new ControlMode(); TryUpdateModel(model as ControlMode); sequencing.ControlMode = model as ControlMode; } else if (type == "LimitConditions") { model = new LimitConditions(); TryUpdateModel(model as LimitConditions); sequencing.LimitConditions = model as LimitConditions; } else if (type == "ConstrainedChoiceConsiderations") { model = new ConstrainedChoiceConsiderations(); TryUpdateModel(model as ConstrainedChoiceConsiderations); sequencing.ConstrainedChoiceConsiderations = model as ConstrainedChoiceConsiderations; } else if (type == "RandomizationControls") { model = new RandomizationControls(); TryUpdateModel(model as RandomizationControls); sequencing.RandomizationControls = model as RandomizationControls; } else if (type == "DeliveryControls") { model = new DeliveryControls(); TryUpdateModel(model as DeliveryControls); sequencing.DeliveryControls = model as DeliveryControls; } else if (type == "RollupRules") { model = new RollupRules(); TryUpdateModel(model as RollupRules); sequencing.RollupRules = model as RollupRules; } else if (type == "RollupConsiderations") { model = new RollupConsiderations(); TryUpdateModel(model as RollupConsiderations); sequencing.RollupConsiderations = model as RollupConsiderations; } else { throw new NotImplementedException(); } if (nodeId == 0) { _CurrentCourse.Sequencing = xml.SerializeToXElemet(sequencing); _Storage.UpdateCourse(_CurrentCourse.Id, _CurrentCourse); } else { node.Sequencing = xml.SerializeToXElemet(sequencing); _Storage.UpdateNode(nodeId, node); } return(Json(new { status = true })); }
public void EditPropertiesTest([Values("ControlMode", "LimitConditions", "ConstrainedChoiceConsiderations", "RandomizationControls", "DeliveryControls", "RollupRules", "RollupConsiderations")] string type) { try { // create new node with name "SomeNode", id=ID, courseId=1, and add it to storage this.createNode(); // create new xml serializer var xml = new XmlSerializer(typeof(Sequencing)); // get Sequencing from node with id = ID var xelement = this.Storage.GetNode(ID).Sequencing; // deserialize sequencing from xelement var sequencing = xelement == null ? new Sequencing() : (Sequencing)xml.DeserializeXElement(xelement); // new model object model; // for different type initialise sequencing property if (type == "ControlMode") { model = new ControlMode(); //TryUpdateModel(model as ControlMode); sequencing.ControlMode = model as ControlMode; } else if (type == "LimitConditions") { model = new LimitConditions(); //TryUpdateModel(model as LimitConditions); sequencing.LimitConditions = model as LimitConditions; } else if (type == "ConstrainedChoiceConsiderations") { model = new ConstrainedChoiceConsiderations(); //TryUpdateModel(model as ConstrainedChoiceConsiderations); sequencing.ConstrainedChoiceConsiderations = model as ConstrainedChoiceConsiderations; } else if (type == "RandomizationControls") { model = new RandomizationControls(); //TryUpdateModel(model as RandomizationControls); sequencing.RandomizationControls = model as RandomizationControls; } else if (type == "DeliveryControls") { model = new DeliveryControls(); //TryUpdateModel(model as DeliveryControls); sequencing.DeliveryControls = model as DeliveryControls; } else if (type == "RollupRules") { model = new RollupRules(); //TryUpdateModel(model as RollupRules); sequencing.RollupRules = model as RollupRules; } else if (type == "RollupConsiderations") { model = new RollupConsiderations(); //TryUpdateModel(model as RollupConsiderations); sequencing.RollupConsiderations = model as RollupConsiderations; } else { throw new NotImplementedException(); } // serialize sequencing xelement = xml.SerializeToXElemet(sequencing); // update node this.Storage.UpdateNode(ID, this.Storage.GetNode(ID)); } catch (Exception ex) { Assert.Fail(ex.Message); } }