예제 #1
0
        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 }));
        }
예제 #2
0
        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);
            }
        }