Beispiel #1
0
        public async Task <ActionResult> AssessmentReorder(int?id, bool isUp)
        {
            AssessmentItem selected = await db.AssessmentItems.FirstOrDefaultAsync(it => it.Id == id);

            if (selected == null)
            {
                return(View("Error"));
            }

            var selectedOrder = isUp ? --selected.Order : ++selected.Order;
            var lessonId      = selected.PreLessonId == null ? selected.PostLessonId : selected.PreLessonId;

            AssessmentItem swapItem;

            if (selected.PreLessonId == null)
            {
                swapItem = await db.AssessmentItems.FirstOrDefaultAsync(it => !it.RecLog.DeletedDate.HasValue && it.PostLessonId == lessonId && it.Order == selectedOrder);
            }
            else
            {
                swapItem = await db.AssessmentItems.FirstOrDefaultAsync(it => !it.RecLog.DeletedDate.HasValue && it.PreLessonId == lessonId && it.Order == selectedOrder);
            }

            if (swapItem == null)
            {
                return(View("Error"));
            }

            swapItem.Order = isUp ? ++swapItem.Order : --swapItem.Order;

            await db.SaveChangesAsync();

            return(RedirectToAction("Details", "Lessons", new { @id = lessonId }));
        }
        public async Task <ActionResult> DeleteConfirmed(int id)
        {
            AssessmentItem assessmentItem = await db.AssessmentItems.FindAsync(id);

            var now = DateTime.Now;

            assessmentItem.RecLog.DeletedDate = now;
            var lessonId = assessmentItem.PreLessonId;

            foreach (var item in assessmentItem.Assessments)
            {
                item.RecLog.DeletedDate = now;
            }

            var deleteOrder    = assessmentItem.Order;
            var AssessmentList = db.AssessmentItems.Where(it => !it.RecLog.DeletedDate.HasValue && it.PreLessonId == lessonId && it.Order > deleteOrder);

            foreach (var item in AssessmentList)
            {
                item.Order--;
            }

            await db.SaveChangesAsync();

            return(RedirectToAction("Details", "Lessons", new { @id = lessonId }));
        }
        /// <summary>
        /// Gets the renderer that can render an assessmentItem.
        /// </summary>
        /// <param name="assessmentItem">The assessment item to render. This is the &lt;img&gt; element that is in
        /// the original LRM content.</param>
        /// <remarks>RenderContext must have been set prior to calling this method.</remarks>
        internal AssessmentItemRenderer GetRenderer(AssessmentItem assessmentItem)
        {
            AssessmentItemRenderer renderer = m_renderers[assessmentItem.Type];

            renderer.AssessmentItem = assessmentItem;
            return(renderer);
        }
        public ModelInvokeResult <AssessmentItemPK> Nullify(string strId)
        {
            ModelInvokeResult <AssessmentItemPK> result = new ModelInvokeResult <AssessmentItemPK> {
                Success = true
            };

            try
            {
                List <IBatisNetBatchStatement> statements = new List <IBatisNetBatchStatement>();
                AssessmentItem assessmentItem             = new AssessmentItem {
                    Id = Int32.Parse(strId), Status = 0
                };
                /***********************begin 自定义代码*******************/
                assessmentItem.OperatedBy = NormalSession.UserId.ToGuid();
                assessmentItem.OperatedOn = DateTime.Now;
                assessmentItem.DataSource = GlobalManager.DIKey_00012_ManualEdit;
                /***********************end 自定义代码*********************/
                statements.Add(new IBatisNetBatchStatement {
                    StatementName = assessmentItem.GetUpdateMethodName(), ParameterObject = assessmentItem.ToStringObjectDictionary(false), Type = SqlExecuteType.UPDATE
                });
                /***********************begin 自定义代码*******************/
                /***********************此处添加自定义代码*****************/
                /***********************end 自定义代码*********************/
                BuilderFactory.DefaultBulder().ExecuteNativeSqlNoneQuery(statements);
                result.instance = new AssessmentItemPK {
                    Id = Int32.Parse(strId)
                };
            }
            catch (Exception ex)
            {
                result.Success      = false;
                result.ErrorMessage = ex.Message;
            }
            return(result);
        }
        /// <summary>
        /// Updates or creates a resource based on the resource identifier. The PUT operation is used to update or create a resource by identifier.  If the resource doesn't exist, the resource will be created using that identifier.  Additionally, natural key values cannot be changed using this operation, and will not be modified in the database.  If the resource &quot;id&quot; is provided in the JSON body, it will be ignored as well.
        /// </summary>
        /// <param name="id">A resource identifier specifying the resource to be updated.</param>
        /// <param name="IfMatch">The ETag header value used to prevent the PUT from updating a resource modified by another consumer.</param>
        /// <param name="body">The JSON representation of the &quot;assessmentItem&quot; resource to be updated.</param>
        /// <returns>A RestSharp <see cref="IRestResponse"/> instance containing the API response details.</returns>
        public IRestResponse PutAssessmentItem(string id, string IfMatch, AssessmentItem body)
        {
            var request = new RestRequest("/assessmentItems/{id}", Method.PUT);

            request.RequestFormat = DataFormat.Json;

            request.AddUrlSegment("id", id);
            // verify required params are set
            if (id == null || body == null)
            {
                throw new ArgumentException("API method call is missing required parameters");
            }
            request.AddHeader("If-Match", IfMatch);
            request.AddBody(body);
            request.Parameters.First(param => param.Type == ParameterType.RequestBody).Name = "application/json";
            var response = client.Execute(request);

            var location = response.Headers.FirstOrDefault(x => x.Name == "Location");

            if (location != null && !string.IsNullOrWhiteSpace(location.Value.ToString()))
            {
                body.id = location.Value.ToString().Split('/').Last();
            }
            return(response);
        }
        public static string CreateAssessmentItem(string assessmentIdentifier, string assessmentNamespace, string identificationCode)
        {
            var assessmentItem = new AssessmentItem
            {
                AssessmentReference = AssessmentReference(assessmentIdentifier, assessmentNamespace),
                IdentificationCode  = identificationCode
            };

            return(JsonConvert.SerializeObject(assessmentItem));
        }
        /// <summary>
        /// Moves an illustration to the appropreate keywordlist item in the archive
        /// </summary>
        /// <param name="illustration"></param>
        /// <param name="keywordListItem"></param>
        /// <param name="testPackageArchive"></param>
        public void MoveMediaFileForIllustration(Illustration illustration, AssessmentItem assessmentItem, ZipArchive testPackageArchive)
        {
            ZipArchiveEntry existingIll = illustration.GetZipArchiveEntry(testPackageArchive);

            if (existingIll != null)
            {
                errors.Add(new Error(Error.Exception.OverwriteWarning, "Overwriting image file: " + illustration.CopiedToPath, illustration.LineNumber, Error.Type.Warning));
                existingIll.Delete();
            }

            testPackageArchive.CreateEntryFromFile(illustration.OriginalFilePath, illustration.CopiedToPathForCreate);
        }
        // GET: PreAssessmentItems
        //public ActionResult Index()
        //{
        //    var assessmentItems = db.AssessmentItems.Include(a => a.PreLesson).Include(a => a.PostLesson);
        //    return View(assessmentItems.ToList());
        //}

        // GET: PreAssessmentItems/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            AssessmentItem assessmentItem = db.AssessmentItems.Find(id);

            if (assessmentItem == null)
            {
                return(HttpNotFound());
            }
            return(View(assessmentItem));
        }
        // GET: PreAssessmentItems/Delete/5
        public async Task <ActionResult> Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            AssessmentItem assessmentItem = await db.AssessmentItems.FindAsync(id);

            if (assessmentItem == null)
            {
                return(HttpNotFound());
            }
            return(View(assessmentItem));
        }
Beispiel #10
0
        private async Task HandleSubmit(AssessmentItem model)
        {
            AssessmentResponseModel response;

            if (string.IsNullOrEmpty(model.Id))
            {
                response = await _assessmentService.CreateAssessment(model);
            }
            else
            {
                response = await _assessmentService.UpdateAssessment(model.Id, model);
            }

            if (response.isSuccessful)
            {
                var assessmentItem = response.data;

                if (string.IsNullOrEmpty(model.Id))
                {
                    Assessments = Assessments.Prepend(assessmentItem).ToList();

                    toastService.ShowSuccess("Assessment added successfully");
                }
                else
                {
                    var item = Assessments.First(u => u.Id == model.Id);

                    item.Duration     = assessmentItem.Duration;
                    item.Instructions = assessmentItem.Instructions;
                    item.Name         = assessmentItem.Name;


                    toastService.ShowSuccess("Assessment updated successfully");
                }


                RefreshAssessments(SearchText);

                ModalForm.HideModal();

                StateHasChanged();
            }
            else
            {
                Console.WriteLine(response.message);
            }
        }
Beispiel #11
0
        public static ClsListAssessmentItem ConvertAssessmentItemToClass(AssessmentItem pSourceObj)
        {
            ClsListAssessmentItem obj = new ClsListAssessmentItem()
            {
                ItemID           = pSourceObj.AssessmentItemID,
                Order            = pSourceObj.Order,
                Text             = pSourceObj.Text,
                TypeID           = pSourceObj.TypeID,
                Version          = pSourceObj.Version,
                ParentID         = pSourceObj.ParentAssessmentID,
                HelpText         = pSourceObj.HelpText,
                IsMandatory      = pSourceObj.IsMandatory,
                DisplayCondition = pSourceObj.DisplayCondition,
                RelatedDCIds     = pSourceObj.RelatedDCIds,
                RelatedFBIds     = pSourceObj.RelatedFBIds,
                AITreeID         = pSourceObj.AssessmentItemTreeID,
                SubItems         = new List <ClsListAssessmentItem>()
            };

            return(obj);
        }
Beispiel #12
0
        //根据检查项名称查检查项内容
        public static List <AssessmentItem> Select(string info)
        {
            OdbcConnection odbcConnection = DB.DBManager.GetOdbcConnection();

            odbcConnection.Open();
            string         sql            = "SELECT * FROM assessment_item WHERE `IT_Name` LIKE '%" + info + "%'";
            OdbcCommand    odbcCommand    = new OdbcCommand(sql, odbcConnection);
            OdbcDataReader odbcDataReader = odbcCommand.ExecuteReader(CommandBehavior.CloseConnection);

            if (odbcDataReader.HasRows)
            {
                List <AssessmentItem> list = AssessmentItem.getList(odbcDataReader);
                odbcConnection.Close();
                return(list);
            }
            else
            {
                odbcConnection.Close();
            }
            return(null);
        }
        public InvokeResult NullifySelected(string strIds)
        {
            InvokeResult result = new InvokeResult {
                Success = true
            };

            try
            {
                List <IBatisNetBatchStatement> statements = new List <IBatisNetBatchStatement>();
                string[] arrIds = strIds.Split("|".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                if (arrIds.Length == 0)
                {
                    result.Success   = false;
                    result.ErrorCode = 59996;
                    return(result);
                }
                string statementName = new AssessmentItem().GetUpdateMethodName();
                foreach (string strId in arrIds)
                {
                    AssessmentItem assessmentItem = new AssessmentItem {
                        Id = Int32.Parse(strId), Status = 0
                    };
                    /***********************begin 自定义代码*******************/
                    assessmentItem.OperatedBy = NormalSession.UserId.ToGuid();
                    assessmentItem.OperatedOn = DateTime.Now;
                    assessmentItem.DataSource = GlobalManager.DIKey_00012_ManualEdit;
                    /***********************end 自定义代码*********************/
                    statements.Add(new IBatisNetBatchStatement {
                        StatementName = statementName, ParameterObject = assessmentItem.ToStringObjectDictionary(false), Type = SqlExecuteType.UPDATE
                    });
                }
                BuilderFactory.DefaultBulder().ExecuteNativeSqlNoneQuery(statements);
            }
            catch (Exception ex)
            {
                result.Success      = false;
                result.ErrorMessage = ex.Message;
            }
            return(result);
        }
        /// <summary>
        /// Creates or updates resources based on the natural key values of the supplied resource. The POST operation can be used to create or update resources. In database terms, this is often referred to as an &quot;upsert&quot; operation (insert + update).  Clients should NOT include the resource &quot;id&quot; in the JSON body because it will result in an error (you must use a PUT operation to update a resource by &quot;id&quot;). The web service will identify whether the resource already exists based on the natural key values provided, and update or create the resource appropriately.
        /// </summary>
        /// <param name="body">The JSON representation of the &quot;assessmentItem&quot; resource to be created or updated.</param>
        /// <returns>A RestSharp <see cref="IRestResponse"/> instance containing the API response details.</returns>
        public IRestResponse PostAssessmentItems(AssessmentItem body)
        {
            var request = new RestRequest("/assessmentItems", Method.POST);

            request.RequestFormat = DataFormat.Json;

            // verify required params are set
            if (body == null)
            {
                throw new ArgumentException("API method call is missing required parameters");
            }
            request.AddBody(body);
            var response = client.Execute(request);

            var location = response.Headers.FirstOrDefault(x => x.Name == "Location");

            if (location != null && !string.IsNullOrWhiteSpace(location.Value.ToString()))
            {
                body.id = location.Value.ToString().Split('/').Last();
            }
            return(response);
        }
        public async Task <ActionResult> Edit([Bind(Include = "Id,Name,IconURL,IsPreviewable,PreLessonId,PostLessonId,RecLog")] AssessmentItem assessmentItem)
        {
            if (ModelState.IsValid)
            {
                var selectedAssessmentItem = await db.AssessmentItems.FirstOrDefaultAsync(it => it.Id == assessmentItem.Id);

                if (selectedAssessmentItem == null)
                {
                    return(View("Error"));
                }

                selectedAssessmentItem.Name          = assessmentItem.Name;
                selectedAssessmentItem.IsPreviewable = assessmentItem.IsPreviewable;
                var IconUrl = ExtraContentType.PreAssessment.ToString();
                selectedAssessmentItem.IconURL = ControllerHelper.ConvertToIconUrl(IconUrl);
                await db.SaveChangesAsync();

                return(RedirectToAction("Details", "Lessons", new { @id = assessmentItem.PreLessonId }));
            }

            return(View(assessmentItem));
        }
        public async Task <ActionResult> Create([Bind(Include = "Id,Name,IconURL,IsPreviewable,PreLessonId,PostLessonId,RecLog")] AssessmentItem assessmentItem)
        {
            if (ModelState.IsValid)
            {
                var lesson = await db.Lessons.FirstOrDefaultAsync(it => it.Id == assessmentItem.PreLessonId);

                if (lesson == null || lesson.RecLog.DeletedDate.HasValue)
                {
                    return(View("Error"));
                }

                assessmentItem.Order = lesson.PreAssessments.Where(it => !it.RecLog.DeletedDate.HasValue).Count() + 1;
                assessmentItem.RecLog.CreatedDate = DateTime.Now;
                var IconUrl = ExtraContentType.PreAssessment.ToString();
                assessmentItem.IconURL = ControllerHelper.ConvertToIconUrl(IconUrl);
                db.AssessmentItems.Add(assessmentItem);
                await db.SaveChangesAsync();

                return(RedirectToAction("Details", "Lessons", new { @id = assessmentItem.PreLessonId }));
            }

            return(View(assessmentItem));
        }
        public InvokeResult DeleteSelected(string strIds)
        {
            InvokeResult result = new InvokeResult {
                Success = true
            };

            try
            {
                List <IBatisNetBatchStatement> statements = new List <IBatisNetBatchStatement>();
                string[] arrIds = strIds.Split("|".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                if (arrIds.Length == 0)
                {
                    result.Success   = false;
                    result.ErrorCode = 59996;
                    return(result);
                }
                string statementName = new AssessmentItem().GetDeleteMethodName();
                foreach (string strId in arrIds)
                {
                    AssessmentItemPK pk = new AssessmentItemPK {
                        Id = Int32.Parse(strId)
                    };
                    DeleteCascade(statements, pk);
                    statements.Add(new IBatisNetBatchStatement {
                        StatementName = statementName, ParameterObject = pk, Type = SqlExecuteType.DELETE
                    });
                }
                BuilderFactory.DefaultBulder().ExecuteNativeSqlNoneQuery(statements);
            }
            catch (Exception ex)
            {
                result.Success      = false;
                result.ErrorMessage = ex.Message;
            }
            return(result);
        }
Beispiel #18
0
 public void ResetForm()
 {
     model = new AssessmentItem();
     StateHasChanged();
 }
Beispiel #19
0
 private void ButtonSave_Click(object sender, EventArgs e)
 {
     if (assessmentSet == AssessmentSet.SetB)
     {
         assessment.SetBEnabled = checkBoxEnabled.Checked;
     }
     else if (assessmentSet == AssessmentSet.SetC)
     {
         assessment.SetCEnabled = checkBoxEnabled.Checked;
     }
     AssessmentItem[] assessmentItems = Assessment.CreateItems(assessment.AssessmentType);
     assessmentItems[0]  = new AssessmentItem(keyHolder1.Get());
     assessmentItems[1]  = new AssessmentItem(keyHolder2.Get());
     assessmentItems[2]  = new AssessmentItem(keyHolder3.Get());
     assessmentItems[3]  = new AssessmentItem(keyHolder4.Get());
     assessmentItems[4]  = new AssessmentItem(keyHolder5.Get());
     assessmentItems[5]  = new AssessmentItem(keyHolder6.Get());
     assessmentItems[6]  = new AssessmentItem(keyHolder7.Get());
     assessmentItems[7]  = new AssessmentItem(keyHolder8.Get());
     assessmentItems[8]  = new AssessmentItem(keyHolder9.Get());
     assessmentItems[9]  = new AssessmentItem(keyHolder10.Get());
     assessmentItems[10] = new AssessmentItem(keyHolder11.Get());
     assessmentItems[11] = new AssessmentItem(keyHolder12.Get());
     assessmentItems[12] = new AssessmentItem(keyHolder13.Get());
     assessmentItems[13] = new AssessmentItem(keyHolder14.Get());
     assessmentItems[14] = new AssessmentItem(keyHolder15.Get());
     assessmentItems[15] = new AssessmentItem(keyHolder16.Get());
     assessmentItems[16] = new AssessmentItem(keyHolder17.Get());
     assessmentItems[17] = new AssessmentItem(keyHolder18.Get());
     assessmentItems[18] = new AssessmentItem(keyHolder19.Get());
     assessmentItems[19] = new AssessmentItem(keyHolder20.Get());
     assessmentItems[20] = new AssessmentItem(keyHolder21.Get());
     assessmentItems[21] = new AssessmentItem(keyHolder22.Get());
     assessmentItems[22] = new AssessmentItem(keyHolder23.Get());
     assessmentItems[23] = new AssessmentItem(keyHolder24.Get());
     assessmentItems[24] = new AssessmentItem(keyHolder25.Get());
     assessmentItems[25] = new AssessmentItem(keyHolder26.Get());
     assessmentItems[26] = new AssessmentItem(keyHolder27.Get());
     assessmentItems[27] = new AssessmentItem(keyHolder28.Get());
     assessmentItems[28] = new AssessmentItem(keyHolder29.Get());
     assessmentItems[29] = new AssessmentItem(keyHolder30.Get());
     assessmentItems[30] = new AssessmentItem(keyHolder31.Get());
     assessmentItems[31] = new AssessmentItem(keyHolder32.Get());
     assessmentItems[32] = new AssessmentItem(keyHolder33.Get());
     assessmentItems[33] = new AssessmentItem(keyHolder34.Get());
     assessmentItems[34] = new AssessmentItem(keyHolder35.Get());
     assessmentItems[35] = new AssessmentItem(keyHolder36.Get());
     assessmentItems[36] = new AssessmentItem(keyHolder37.Get());
     assessmentItems[37] = new AssessmentItem(keyHolder38.Get());
     assessmentItems[38] = new AssessmentItem(keyHolder39.Get());
     assessmentItems[39] = new AssessmentItem(keyHolder40.Get());
     assessmentItems[40] = new AssessmentItem(keyHolder41.Get());
     assessmentItems[41] = new AssessmentItem(keyHolder42.Get());
     assessmentItems[42] = new AssessmentItem(keyHolder43.Get());
     assessmentItems[43] = new AssessmentItem(keyHolder44.Get());
     assessmentItems[44] = new AssessmentItem(keyHolder45.Get());
     assessmentItems[45] = new AssessmentItem(keyHolder46.Get());
     assessmentItems[46] = new AssessmentItem(keyHolder47.Get());
     assessmentItems[47] = new AssessmentItem(keyHolder48.Get());
     assessmentItems[48] = new AssessmentItem(keyHolder49.Get());
     assessmentItems[49] = new AssessmentItem(keyHolder50.Get());
     assessmentItems[50] = new AssessmentItem(keyHolder51.Get());
     assessmentItems[51] = new AssessmentItem(keyHolder52.Get());
     assessmentItems[52] = new AssessmentItem(keyHolder53.Get());
     assessmentItems[53] = new AssessmentItem(keyHolder54.Get());
     assessmentItems[54] = new AssessmentItem(keyHolder55.Get());
     assessmentItems[55] = new AssessmentItem(keyHolder56.Get());
     assessmentItems[56] = new AssessmentItem(keyHolder57.Get());
     assessmentItems[57] = new AssessmentItem(keyHolder58.Get());
     assessmentItems[58] = new AssessmentItem(keyHolder59.Get());
     assessmentItems[59] = new AssessmentItem(keyHolder60.Get());
     assessmentItems[60] = new AssessmentItem(keyHolder61.Get());
     assessmentItems[61] = new AssessmentItem(keyHolder62.Get());
     assessmentItems[62] = new AssessmentItem(keyHolder63.Get());
     assessmentItems[63] = new AssessmentItem(keyHolder64.Get());
     assessmentItems[64] = new AssessmentItem(keyHolder65.Get());
     assessmentItems[65] = new AssessmentItem(keyHolder66.Get());
     assessmentItems[66] = new AssessmentItem(keyHolder67.Get());
     assessmentItems[67] = new AssessmentItem(keyHolder68.Get());
     assessmentItems[68] = new AssessmentItem(keyHolder69.Get());
     assessmentItems[69] = new AssessmentItem(keyHolder70.Get());
     assessmentItems[70] = new AssessmentItem(keyHolder71.Get());
     assessmentItems[71] = new AssessmentItem(keyHolder72.Get());
     assessmentItems[72] = new AssessmentItem(keyHolder73.Get());
     assessmentItems[73] = new AssessmentItem(keyHolder74.Get());
     assessmentItems[74] = new AssessmentItem(keyHolder75.Get());
     assessmentItems[75] = new AssessmentItem(keyHolder76.Get());
     assessmentItems[76] = new AssessmentItem(keyHolder77.Get());
     assessmentItems[77] = new AssessmentItem(keyHolder78.Get());
     assessmentItems[78] = new AssessmentItem(keyHolder79.Get());
     assessmentItems[79] = new AssessmentItem(keyHolder80.Get());
     assessmentItems[80] = new AssessmentItem(keyHolder81.Get());
     assessmentItems[81] = new AssessmentItem(keyHolder82.Get());
     assessmentItems[82] = new AssessmentItem(keyHolder83.Get());
     assessmentItems[83] = new AssessmentItem(keyHolder84.Get());
     assessmentItems[84] = new AssessmentItem(keyHolder85.Get());
     assessmentItems[85] = new AssessmentItem(keyHolder86.Get());
     assessmentItems[86] = new AssessmentItem(keyHolder87.Get());
     assessmentItems[87] = new AssessmentItem(keyHolder88.Get());
     assessmentItems[88] = new AssessmentItem(keyHolder89.Get());
     assessmentItems[89] = new AssessmentItem(keyHolder90.Get());
     assessment.SetItems(assessmentItems, assessmentSet);
     assessment.PassingRate = (double)numericUpDownPassingRate.Value;
     PartialDB.SetAssessment(assessment);
     MessageBox.Show("Answer key save successfully", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
 }
Beispiel #20
0
        /// <summary>
        /// Requests the RloHandler to do whatever is required to exit from the current activity.
        /// This request may only be issued when the session is in Execute view and is not active -- it is
        /// either Completed or Abandoned.
        /// </summary>
        /// <param name="context">The context within which the command is processed</param>
        /// <remarks>
        /// This method should only be called for the <c>SessionView.Execute</c> view.  However,
        /// no checks are done internally to verify this - if this is called with other views,
        /// unexpected results will occur.
        /// </remarks>
        public override void ProcessSessionEnd(RloDataModelContext context)
        {
            LearningDataModel learningDataModel = context.LearningDataModel;

            // Set ExitMode to suspend so that when a student exits the activity it is left in a suspended state.
            // This way if the activity is reactivated, the student's previous answers are intact.
            learningDataModel.NavigationRequest.ExitMode = ExitMode.Suspended;
            // If the page has never been visited, "visit" it.
            if (!GetPageHasBeenVisited(learningDataModel))
            {
                AssessmentItemManager.DataModelContext = context;
                // Get the input stream containing the primary file from the resource associated with the
                // current activity in the session.
                using (Stream inputStream = context.GetInputStream())
                {
                    // find all the assessment items (<IMG> tags that contain the text "mslamrk" as part of the src attribute.)
                    using (HtmlTextReader reader = new HtmlTextReader(inputStream))
                    {
                        int srcIndex;
                        while (reader.Read())
                        {
                            if (IsAITag(reader, out srcIndex))
                            {
                                try
                                {
                                    AssessmentItem         ai       = AssessmentItem.Parse(reader.GetAttributeValue(srcIndex));
                                    AssessmentItemRenderer renderer = AssessmentItemManager.GetRenderer(ai);
                                    renderer.TryAddToDataModel();
                                }
                                catch (FormatException)
                                {
                                    // skip this one.
                                }
                            }
                        }
                    }
                }
                SetPageHasBeenVisited(learningDataModel);
            }
            // If the page has never been autograded, call ProcessSessionEnd on the form data processors
            if (!GetPageHasBeenAutograded(learningDataModel))
            {
                AssessmentItemManager.ProcessFormContext = new RloProcessFormDataContext(SessionView.Execute, learningDataModel);
                float?totalPoints = null;
                foreach (Interaction interaction in learningDataModel.Interactions)
                {
                    FormDataProcessor processor = m_assessmentItemMgr.GetFormDataProcessor(interaction);
                    // must check that processor is non null, since GetFormDataProcessor() can return null.
                    // If it is null, any item score associated with this interaction is not totalled into
                    // EvaluationPoints.
                    if (processor != null)
                    {
                        processor.ProcessSessionEnd(context);
                        if (interaction.Evaluation.Points.HasValue)
                        {
                            if (totalPoints.HasValue)
                            {
                                totalPoints += interaction.Evaluation.Points;
                            }
                            else
                            {
                                totalPoints = interaction.Evaluation.Points;
                            }
                        }
                    }
                }
                learningDataModel.EvaluationPoints = totalPoints;
                SetPageHasBeenAutograded(learningDataModel);
            }
        }
Beispiel #21
0
        /// <summary>
        /// Render the requested view into the output stream.
        /// </summary>
        /// <param name="context">The context within which to render the page.</param>
        /// <remarks>
        /// When this method returns the <paramref name="context"/> OutputStream will contain
        /// the rendered file.
        /// <p>
        /// The following methods and properties must be return valid values from
        /// the <paramref name="context"/>:
        /// <ul>
        /// <li>EmbeddedUiResourcePath, must be non-null</li>
        /// <li>FormElementId</li>
        /// <li>GetInputStream</li>
        /// <li>OutputStream</li>
        /// <li>View</li>
        /// </ul>
        /// </p>
        /// <p>
        /// Additionally, if the following properties are set, they will be used:
        /// <ul>
        /// <li>FormElementAction</li>
        /// <li>HiddenControls</li>
        /// <li>ScriptToRender</li>
        /// </ul>
        /// </p>
        /// All other properties on <paramref name="context"/> are ignored.
        /// </remarks>
        /// <exception cref="FileNotFoundException">The requested file attachment can't be found.</exception>
        public override void Render(RloRenderContext context)
        {
            AIResources.Culture = LocalizationManager.GetCurrentCulture();

            // string is the key (which is AssessmentItem.Id_AssessmentItem.Type)
            // int is the ordinal (0 based) which is the number of times the key has been processed
            Dictionary <string, int> assessmentItems = new Dictionary <string, int>();

            // The most common case is that the file is in the package
            Stream inputStream = null;

            AssessmentItemManager.DataModelContext = context;
            LearningDataModel learningDataModel = context.LearningDataModel;

            try
            {
                int srcIndex; // represents the index of the "src" attribute on an <img> node.
                // If this is the first time the page is being rendered, parse the page and determine
                // the interactions on the page.
                if (context.View == SessionView.Execute)
                {
                    if (!GetPageHasBeenVisited(learningDataModel))
                    {
                        using (inputStream = context.GetInputStream())
                        {
                            // If the file being requested is the default file for the current activity,
                            if (context.IsResourceEntryPoint)
                            {
                                // find all the assessment items (<IMG> tags that contain the text "mslamrk" as part of the src attribute.)
                                using (HtmlTextReader reader = new HtmlTextReader(inputStream))
                                {
                                    while (reader.Read())
                                    {
                                        if (IsAITag(reader, out srcIndex))
                                        {
                                            try
                                            {
                                                AssessmentItem         ai       = AssessmentItem.Parse(reader.GetAttributeValue(srcIndex));
                                                AssessmentItemRenderer renderer = AssessmentItemManager.GetRenderer(ai);
                                                renderer.TryAddToDataModel();
                                            }
                                            catch (FormatException)
                                            {
                                                // skip this one.  This is mirrored below in the 2nd pass.
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        SetPageHasBeenVisited(learningDataModel);
                    }
                }

                // must get the input stream again since it may not be possible to seek back to the beginning
                using (inputStream = context.GetInputStream())
                {
                    if (context.Response != null)
                    {
                        // Clear the output response
                        context.Response.Clear();
                    }

                    // If the file being requested is the default file for the current activity,
                    if (context.IsResourceEntryPoint)
                    {
                        if (context.View == SessionView.Execute)
                        {
                            // Set ExitMode to suspend so that when a student exits the activity it is left in a suspended state.
                            // This way if the activity is reactivated, the student's previous answers are intact.
                            learningDataModel.NavigationRequest.ExitMode = ExitMode.Suspended;
                        }

                        DetachableStream detachable = new DetachableStream(context.OutputStream);
                        // Parse through the input stream again, this time rendering into the output as we go.
                        using (StreamWriter writer = new StreamWriter(detachable))
                        {
                            using (HtmlTextReader reader = new HtmlTextReader(inputStream))
                            {
                                while (reader.Read())
                                {
                                    if (IsAITag(reader, out srcIndex))
                                    {
                                        try
                                        {
                                            AssessmentItem         ai       = AssessmentItem.Parse(reader.GetAttributeValue(srcIndex));
                                            AssessmentItemRenderer renderer = AssessmentItemManager.GetRenderer(ai);
                                            if (assessmentItems.ContainsKey(ai.RenderKey))
                                            {
                                                assessmentItems[ai.RenderKey] += 1;
                                            }
                                            else
                                            {
                                                assessmentItems.Add(ai.RenderKey, 0);
                                            }
                                            writer.Write(renderer.Render(assessmentItems[ai.RenderKey]).ToString());
                                        }
                                        catch (FormatException)
                                        {
                                            // skip this one.  This is mirrored above in the 1st pass.
                                        }
                                    }
                                    else
                                    {
                                        HandleNode(reader, writer);
                                    }
                                }
                            }
                            // don't allow closing the StreamWriter to close the context.OutputStream.
                            writer.Flush();
                            detachable.Detach();
                        }

                        // set the response type
                        context.SetOutputStreamExtension(Path.GetExtension(context.RelativePath));
                    }
                    else
                    {
                        // for a non-entry-point file, copy the file directly to the output stream
                        context.WriteFileToResponse(context.RelativePath);
                    }
                }



                return;
            }
            catch (FileNotFoundException)
            {
                // This means the requested file is not in the package. That's not necessarily a problem, since it
                // may be a request for an attachment.
            }

            // We got here because the file is not in the package. In that case, render it if it is a file attachment
            int beginAttachmentInfo = context.RelativePath.IndexOf("/~RLO/", StringComparison.Ordinal);

            if (beginAttachmentInfo != -1)
            {
                // attachmentInfo should be of the form <interactionId>/<attachmentIndex>, so split it into the parts
                string attachmentInfo = context.RelativePath.Substring(beginAttachmentInfo + 6);

                RenderFileAttachment(context, attachmentInfo);
            }
            else
            {
                // This means the requested file is not in the package, nor is it a request for an attachment.
                throw new FileNotFoundException(AIResources.FileNotFound);
            }
        }
 private void ButtonSave_Click(object sender, EventArgs e)
 {
     if (assessmentSet == AssessmentSet.SetB)
     {
         assessment.SetBEnabled = checkBoxEnabled.Checked;
     }
     else if (assessmentSet == AssessmentSet.SetC)
     {
         assessment.SetCEnabled = checkBoxEnabled.Checked;
     }
     AssessmentItem[] assessmentItems = Assessment.CreateItems(assessment.AssessmentType);
     assessmentItems[0]  = new AssessmentItem(keyHolder1.Get());
     assessmentItems[1]  = new AssessmentItem(keyHolder2.Get());
     assessmentItems[2]  = new AssessmentItem(keyHolder3.Get());
     assessmentItems[3]  = new AssessmentItem(keyHolder4.Get());
     assessmentItems[4]  = new AssessmentItem(keyHolder5.Get());
     assessmentItems[5]  = new AssessmentItem(keyHolder6.Get());
     assessmentItems[6]  = new AssessmentItem(keyHolder7.Get());
     assessmentItems[7]  = new AssessmentItem(keyHolder8.Get());
     assessmentItems[8]  = new AssessmentItem(keyHolder9.Get());
     assessmentItems[9]  = new AssessmentItem(keyHolder10.Get());
     assessmentItems[10] = new AssessmentItem(keyHolder11.Get());
     assessmentItems[11] = new AssessmentItem(keyHolder12.Get());
     assessmentItems[12] = new AssessmentItem(keyHolder13.Get());
     assessmentItems[13] = new AssessmentItem(keyHolder14.Get());
     assessmentItems[14] = new AssessmentItem(keyHolder15.Get());
     assessmentItems[15] = new AssessmentItem(keyHolder16.Get());
     assessmentItems[16] = new AssessmentItem(keyHolder17.Get());
     assessmentItems[17] = new AssessmentItem(keyHolder18.Get());
     assessmentItems[18] = new AssessmentItem(keyHolder19.Get());
     assessmentItems[19] = new AssessmentItem(keyHolder20.Get());
     assessmentItems[20] = new AssessmentItem(keyHolder21.Get());
     assessmentItems[21] = new AssessmentItem(keyHolder22.Get());
     assessmentItems[22] = new AssessmentItem(keyHolder23.Get());
     assessmentItems[23] = new AssessmentItem(keyHolder24.Get());
     assessmentItems[24] = new AssessmentItem(keyHolder25.Get());
     assessmentItems[25] = new AssessmentItem(keyHolder26.Get());
     assessmentItems[26] = new AssessmentItem(keyHolder27.Get());
     assessmentItems[27] = new AssessmentItem(keyHolder28.Get());
     assessmentItems[28] = new AssessmentItem(keyHolder29.Get());
     assessmentItems[29] = new AssessmentItem(keyHolder30.Get());
     assessmentItems[30] = new AssessmentItem(keyHolder31.Get());
     assessmentItems[31] = new AssessmentItem(keyHolder32.Get());
     assessmentItems[32] = new AssessmentItem(keyHolder33.Get());
     assessmentItems[33] = new AssessmentItem(keyHolder34.Get());
     assessmentItems[34] = new AssessmentItem(keyHolder35.Get());
     assessmentItems[35] = new AssessmentItem(keyHolder36.Get());
     assessmentItems[36] = new AssessmentItem(keyHolder37.Get());
     assessmentItems[37] = new AssessmentItem(keyHolder38.Get());
     assessmentItems[38] = new AssessmentItem(keyHolder39.Get());
     assessmentItems[39] = new AssessmentItem(keyHolder40.Get());
     assessmentItems[40] = new AssessmentItem(keyHolder41.Get());
     assessmentItems[41] = new AssessmentItem(keyHolder42.Get());
     assessmentItems[42] = new AssessmentItem(keyHolder43.Get());
     assessmentItems[43] = new AssessmentItem(keyHolder44.Get());
     assessmentItems[44] = new AssessmentItem(keyHolder45.Get());
     assessmentItems[45] = new AssessmentItem(keyHolder46.Get());
     assessmentItems[46] = new AssessmentItem(keyHolder47.Get());
     assessmentItems[47] = new AssessmentItem(keyHolder48.Get());
     assessmentItems[48] = new AssessmentItem(keyHolder49.Get());
     assessmentItems[49] = new AssessmentItem(keyHolder50.Get());
     assessment.SetItems(assessmentItems, assessmentSet);
     assessment.PassingRate = (double)numericUpDownPassingRate.Value;
     PartialDB.SetAssessment(assessment);
     MessageBox.Show("Answer key save successfully", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
 }
Beispiel #23
0
        internal Core.Models.Assessment GetAssessment()
        {
            var team = GetTeamForCurrentUser();

            var assessment = GetCurrentAssessmentForTeam(team);

            List <Core.Models.AssessmentItem> assessmentItems = null;

            Core.Models.AssessmentScoringResult assessmentScoringResult = null;

            if (assessment.Status.Value == "Open")
            {
                assessmentItems = _assessmentRepo.GetCurrentAssessmentItemsForUser(CurrentUserName).Select(i => AssessmentItem.MapFrom(i)).ToList();
            }

            var assessmentResults = assessment.AssessmentResults.Select(i => Core.Models.AssessmentResult.MapFrom(i));

            var result = new Core.Models.Assessment()
            {
                Id                = assessment.Id,
                Status            = assessment.Status.Value,
                AssessmentItems   = assessmentItems,
                AssessmentResults = assessmentResults
            };

            return(result);
        }
        public void SaveItem(AssessmentItem ai, ZipArchive testPackageArchive)
        {
            ZipArchiveEntry itemXmlEntry = SelectItemZipEntry(ai.FullPath, testPackageArchive);

            SaveItem(ai.Document, itemXmlEntry);
        }
Beispiel #25
0
        private void ShowModal()
        {
            AssessmentItem = new AssessmentItem();

            ModalForm.ShowModal();
        }
Beispiel #26
0
        public void LoadEditField(AssessmentItem item)
        {
            model = item;

            StateHasChanged();
        }