Пример #1
0
        public Response init(IEnumerable <Field> paramFields,
                             Attempt paramAttempt,
                             QuestionAssignment paramRowAssignment)
        {
            Score        = 0;
            Retries      = 0;
            subResponses = new StringableCollection <SubResponse>(paramFields.Select(f => new SubResponse(f.Value, f.subQuestionIndex)));

            Group              = paramAttempt.Group;
            GroupID            = paramAttempt.GroupID;
            Assignment         = paramRowAssignment.Assignment;
            AssignmentNum      = paramRowAssignment.AssignmentNum;
            Attempt            = paramAttempt;
            QuestionAssignment = paramRowAssignment;
            QuestionNum        = paramRowAssignment.QuestionNum;

            return(this);
        }
Пример #2
0
        //dont pass in higher data structures
        public Question init(Purpose paramPurpose,
                             string paramTitle,
                             string paramComment,
                             string paramLeft,
                             string paramRight,
                             long paramHash)
        {
            base.init(paramTitle,
                      paramComment,
                      paramLeft,
                      paramRight,
                      paramHash);

            //left and right already done
            Purpose = paramPurpose;
            QuestionAssignment dummy = new QuestionAssignment(0, 0, 0, 0);

            dummy.Question = this;
            dummy.Row      = this;
            OutOf          = new QuestionAssignmentHTML(dummy, false, 0).outOf;

            return(this);
        }
Пример #3
0
        public Assignment init(IEnumerable <Row> paramRepeatedRows,
                               Group paramGroup,
                               byte paramAssignmentNum,
                               string paramNameOptional,
                               bool paramShuffleEnabled,
                               int paramMarkLimit
                               )
        {
            Group         = paramGroup;
            GroupID       = paramGroup.GroupID;
            AssignmentNum = paramAssignmentNum;


            Row withTitle = paramRepeatedRows.Where(r => !string.IsNullOrEmpty(r.Title))
                            .FirstOrDefault();

            Name = (string.IsNullOrEmpty(paramNameOptional)) ?
                   (withTitle != null ? withTitle.Title : "untitled") :
                   paramNameOptional;

            AttemptCount = 0;


            //ShuffleEnabled = paramShuffleEnabled;

            List <Row> rowsAddedSoFar = new List <Row>();

            byte RowCount      = 0;
            byte QuestionCount = 0;


            //question
            foreach (Row newRow in paramRepeatedRows)
            {
                Row rowFound = rowsAddedSoFar.FirstOrDefault(er => er.Hash == newRow.Hash) ?? newRow;

                //QUESTIONNM COUNTS NUMBER OF QUESTIONS ONLY
                //ROWNUM COUNTS ROWS AND QUESTIONS

                if (rowFound is Question)
                {
                    QuestionAssignment newQA = new QuestionAssignment(++QuestionCount, GroupID, AssignmentNum, rowFound.Hash);
                    ++RowCount;
                    newQA.Row = rowFound;

                    newQA.Group   = Group;
                    newQA.GroupID = GroupID;

                    newQA.Assignment    = this;
                    newQA.AssignmentNum = AssignmentNum;

                    newQA.Question = (rowFound as Question);

                    QuestionAssignments.Add(newQA);
                }
                else
                {
                    RowAssignment newRA = new RowAssignment(++RowCount, GroupID, AssignmentNum, rowFound.Hash);
                    newRA.Row = rowFound;

                    newRA.Group   = Group;
                    newRA.GroupID = GroupID;

                    newRA.Assignment    = this;
                    newRA.AssignmentNum = AssignmentNum;

                    newRA.Assignment    = this;
                    newRA.AssignmentNum = AssignmentNum;

                    RowAssignments.Add(newRA);
                }
                if (!rowsAddedSoFar.Contains(rowFound))
                {
                    rowsAddedSoFar.Add(rowFound);
                }
            }


            OutOf = paramMarkLimit;
            if (OutOf == 0)
            {
                OutOf = QuestionAssignments.Sum(qa => qa.Question.OutOf);
            }


            return(this);
            //outcome
            //Outcome newOutcome = null;
            //if (!string.IsNullOrEmpty(r.Cells[1, paramOutcomeCol].Value2))
            //{
            //    newOutcome = new Outcome(r.Cells[1, paramOutcomeCol].Value2);

            //    if (!_Outcomes.Any(er => er.Hash == newOutcome.Hash))
            //        _Outcomes.Add(newOutcome);
            //    else
            //        newOutcome = _Outcomes.Single(er => er.Hash == newOutcome.Hash);
            //}


            ////add outcome to row
            //if (newOutcome != null)
            //    newOutcome.Rows.Add(newRow);
            //newRow.Outcome = newOutcome;
        }