public tblQuestion AddMultipleChoiceQuestion(MultipleChoiceQuestion createdQuestion, int questionnaireId) { try { tblQuestion question = new tblQuestion //Maak de question aan met de gegevens van de nieuwe equestion. { description = createdQuestion.Description, questionnaire = questionnaireId, questionindex = createdQuestion.QuestionIndex }; if (createdQuestion.TimeRestriction != TimeSpan.Zero) //Wanneer er een timerestriction op zit, geef deze ook mee. { question.timerestriction = createdQuestion.TimeRestriction.Ticks; } List<tblAnswer> dbAnswers = new List<tblAnswer>(); //Maak een lijst met antwoorden aan. foreach (Answer answer in createdQuestion.AnswerOptions) //Voeg alle antwoorden van de vraag toe aan een lijst { tblAnswer newAnswer = AddAnswer(answer);//Kijk of het antwoord toegevoegd kan worden. dbAnswers.Add(newAnswer);//Voeg de nieuwe antwoorden toe aan de database. if (answer == createdQuestion.CorrectAnswer) { question.correctanswer = newAnswer.id;//Kijk voor elk antwoord of dit het goede antwoord is, zo ja, geef het mee. } } db.tblQuestions.InsertOnSubmit(question); db.SubmitChanges(); foreach (tblAnswer dbAnswer in dbAnswers) { LinkAnswerToQuestion(question.id, ConvertDbAnswer(dbAnswer)); } return question; } catch (SqlException ex) { MessageBox.Show(ex.Message); return null; } //Wanneer er iets fout gaat, laat een messagebox zien met de SQL exception. }
// Deze functie wordt gebruikt om het database object tblQuestion te converteren naar een MultipleChoiceQuestion object die vervolgens gebruikt kan worden in het programma public MultipleChoiceQuestion ConvertDbQuestion(tblQuestion dbQuestion) { MultipleChoiceQuestion question = new MultipleChoiceQuestion(dbQuestion.description) // Questionnaire object aanmaken { ID = dbQuestion.id, QuestionIndex = dbQuestion.questionindex }; if (dbQuestion.timerestriction != null) // Checkt als timerestriction is ingeschakeld question.TimeRestriction = TimeSpan.FromTicks((long)dbQuestion.timerestriction); // Converteert deze naar C#'s TimeSpan else question.TimeRestriction = TimeSpan.Zero; // Zo niet wordt de TimeSpan op nul gezet // Doorloop alle antwoordopties die gekoppeld zijn aan een vraag foreach (tblAnsweroption dbAnswerOption in dbQuestion.tblAnsweroptions) { Answer answer = ConvertDbAnswer(dbAnswerOption.tblAnswer); // Converteerd database object naar Answer question.AnswerOptions.Add(answer); // Voegt het antwoord toe als antwoordoptie aan het Question object if (dbQuestion.correctanswer == answer.ID) question.CorrectAnswer = answer; // Als het database object ook het correcte antwoord is van de Question wordt deze als correct question ingesteld } return question; }