コード例 #1
0
        private void GenerateAndSendResults()
        {
            AssesmentReportTO report = new AssesmentReportTO();

            report.AssesmentInfo = info;
            report.Sections      = new List <SectionReportTO>();

            List <SectionPointsTO> list = AssesmentPersistence.GetAssesmentPoints(id);

            for (int i = 0; i < info.Evaluation.Sections.Count; i++)
            {
                SectionReportTO section = new SectionReportTO();
                section.Name       = info.Evaluation.Sections[i].Name;
                section.Percentage = 0;
                SectionPointsTO sectionPoints = list.Find(x => x.SectionID == info.Evaluation.Sections[i].ID);
                if (sectionPoints != null)
                {
                    section.Percentage = sectionPoints.Points;
                }

                report.Sections.Add(section);
            }

            report.Analysis = GetAnalysis();
            string savedFilePath = Pdf.GenerateSimplePdf(report);

            SendReport(savedFilePath);
        }
コード例 #2
0
        public void UpdateLeftTime()
        {
            if (info.Status != AssesmentStatus.Started)
            {
                return;
            }

            currentContext.MinutesLeft = currentContext.MinutesLeft - 1;
            if (currentContext.MinutesLeft < 0)
            {
                currentContext.MinutesLeft = 0;
            }

            if (currentContext.MinutesLeft == 0)
            {
                if (EvaluationHasNextSection())
                {
                    MoveToNextSection();
                }
                else
                {
                    End();
                }
            }

            AssesmentPersistence.UpdateContext(id, currentContext);
        }
コード例 #3
0
 public Assesment(int id)
 {
     this.id = id;
     info    = AssesmentPersistence.GetByID(id);
     if (info != null)
     {
         InitAdditionalData();
     }
 }
コード例 #4
0
 public Assesment(string assesmentID)
 {
     info = AssesmentPersistence.GetByAssesmentID(assesmentID);
     if (info != null)
     {
         this.assesmentID = assesmentID;
         this.id          = info.ID;
         InitAdditionalData();
     }
 }
コード例 #5
0
        private void UpdateContext()
        {
            if (SectionHasNextQuestion())
            {
                currentContext.QuestionIndex++;

                UpdateQuestionResponseInfo();
            }
            else
            {
                if (EvaluationHasNextSection())
                {
                    MoveToNextSection();
                }
            }
            AssesmentPersistence.UpdateContext(id, currentContext);
        }
コード例 #6
0
        public AssesmentEndOperationState End()
        {
            if (info.Status == AssesmentStatus.Created)
            {
                return(AssesmentEndOperationState.AssementNotStarted);
            }

            if (info.Status == AssesmentStatus.Done)
            {
                return(AssesmentEndOperationState.AlreadyDone);
            }

            info.Status       = AssesmentStatus.Done;
            info.DateFinished = DateTime.Now;
            AssesmentPersistence.SetFinishedDate(id);
            GenerateAndSendResults();

            return(AssesmentEndOperationState.Successful);
        }
コード例 #7
0
        private void CreateContext()
        {
            if (info != null)
            {
                if (info.Status == AssesmentStatus.Created)
                {
                    currentContext             = GetDefaultContext();
                    currentContext.MinutesLeft = ConvertEstimatedDurationToMinutesLeft(info.Evaluation.Sections[0].EstimatedDuration);

                    AssesmentPersistence.CreateContext(id, currentContext);
                }
                else
                {
                    currentContext = AssesmentPersistence.GetContextByAssesmentID(id);
                }

                UpdateSectionResponseInfo();
            }
        }
コード例 #8
0
        public AssesmentStartOperationState Start()
        {
            if (info == null)
            {
                return(AssesmentStartOperationState.AssementNotFound);
            }

            if (info.DateStarted != null)
            {
                return(AssesmentStartOperationState.AlreadyStarted);
            }

            info.DateStarted = DateTime.Now;
            info.Status      = AssesmentStatus.Started;
            AssesmentPersistence.SetStartDate(id);
            CreateContext();

            return(AssesmentStartOperationState.Successful);
        }
コード例 #9
0
 public void Restart()
 {
     AssesmentPersistence.Restart(id);
     AssesmentPersistence.UpdateContext(id, GetDefaultContext());
 }
コード例 #10
0
        private void SaveResponse()
        {
            QuestionTO question = GetCurrentQuestion();

            AssesmentPersistence.SaveResponse(id, question.ID, question.Answers[currentQuestionAnswerIndex - 1].ID, responseWasRight);
        }