public tblAnswer AddAnswer(Answer answer) { try { tblAnswer answerExist = GetAnswer(answer.Description); //Haal het antwoord op uit de database en kijk of het bestaat. if (answerExist != null) { //Wanneer het antwoord bestaat, return deze. return answerExist; } else { //Wanneer het antwoord niet bestaat, maak deze aan. tblAnswer createAnswer = new tblAnswer() {description = answer.Description}; db.tblAnswers.InsertOnSubmit(createAnswer); db.SubmitChanges(); return createAnswer; } } catch (SqlException ex) { MessageBox.Show(ex.Message); return null; //Heb je een SQL exception, return null. } }
// Methode voor het updaten van een questionnaire in de database // Het Questionnaire object wordt meegegeven en eventueel een lijst met verwijderde vragen zodat deze verwijderd kunnen worden uit de database public void UpdateQuestionnaire(Questionnaire questionnaire, List<Question> deletedQuestions = null, List<Answer> deletedAnswers = null) { db = new DatabaseDataContext(); // Refresh database cache try { tblQuestionnaire updateQuestionnaire = db.tblQuestionnaires.SingleOrDefault(q => q.id == questionnaire.ID); // Haalt questionnaire op uit DB updateQuestionnaire.description = questionnaire.Name; // Wijzigingen toepassen updateQuestionnaire.archived = questionnaire.Archived; db.SubmitChanges(); if (deletedQuestions != null) // Als er vragen zijn verwijderd, bevinden deze zich niet meer in het object Questionnaire daarvoor is een aparte lijst meegegeven { foreach (MultipleChoiceQuestion delQuestion in deletedQuestions) { DeleteMultipleChoiceQuestion(delQuestion.ID); // Verwijder de desbetreffende vraag } } if (deletedAnswers != null) // Als er antwoorden zijn verwijderd, bevinden deze zich niet meer in het object Question daarvoor is een aparte lijst meegegeven { foreach (Answer delAnswer in deletedAnswers) { DeleteLinkAnswerToQuestion(delAnswer); // Verwijder het desbetreffende antwoord } } foreach (MultipleChoiceQuestion question in questionnaire.Questions) // Doorloopt alle vragen in de questionnaire { tblQuestion dbQuestion = null; if (question.ID == -1) // Als de vraag een nieuwe betreft heeft deze standaard een ID van -1 { dbQuestion = AddMultipleChoiceQuestion(question, questionnaire.ID); // De vraag wordt dan aangemaakt in de database } else { dbQuestion = updateQuestionnaire.tblQuestions.SingleOrDefault(q => q.id == question.ID); // Haalt de desbetreffende vraag op uit de DB dbQuestion.description = question.Description; // Wijzigt de vraag in DB db.SubmitChanges(); foreach (Answer answer in question.AnswerOptions) { if (answer.ID == -1) { Answer tempAnswer = new Answer(AddAnswer(answer).id) { Description = answer.Description }; // Voegt antwoord toe in database als deze nog niet bestaat dbQuestion.tblAnsweroptions.Add(LinkAnswerToQuestion(question.ID, tempAnswer)); // Koppelt antwoord aan de vraag in de database if (answer == question.CorrectAnswer) { dbQuestion.correctanswer = tempAnswer.ID; db.SubmitChanges(); question.CorrectAnswer = tempAnswer; } } else { if (answer == question.CorrectAnswer) { dbQuestion.correctanswer = answer.ID; db.SubmitChanges(); } } } } if (dbQuestion != null) { updateQuestionnaire.tblQuestions.Add(dbQuestion); } } } catch (SqlException ex) { MessageBox.Show(ex.Message); } }
public tblAnsweroption LinkAnswerToQuestion(int questionid, Answer answer) { try { //Of dus zo: tblAnsweroption answerOption = new tblAnsweroption // Maak item aan om toe te voegen { question = questionid, answer = answer.ID }; db.tblAnsweroptions.InsertOnSubmit(answerOption); // Geef opdracht om bovenstaande item toe te voegen db.SubmitChanges(); // Voer veranderingen door return answerOption; } catch (SqlException ex) { MessageBox.Show(ex.Message); return null; //Wanneer er iets fout gaat, laat een messagebox zien met de SQL exception. } }
// hier worden de antwoorden opgehaald die bij een specifieke vraag horen public List<Answer> GetAnswersByQuestion(int id) { try { List<tblAnsweroption> tblAnsweroption = (from answeroption in db.tblAnsweroptions //Maak een lijst met alle antwoorden naar de ID (databasevorm) where answeroption.question == id select answeroption).ToList(); List<Answer> answeroptions = new List<Answer>(); //Maak een lijst met voor antwoorden. foreach (tblAnsweroption answeroption in tblAnsweroption) { Answer newAnswerOption = new Answer(answeroption.answer); newAnswerOption.ID = answeroption.answer; newAnswerOption.Description = answeroption.tblAnswer.description; answeroptions.Add(newAnswerOption);//Maak voor elk antwoord een object aan en voeg ze toe aan de lijst voor antwoorden. } return answeroptions;//Return de lijst voor antwoorden. } catch (SqlException ex) { MessageBox.Show(ex.Message);//Wanneer er iets fout gaat, laat een messagebox zien met de SQL exception. return null; } }
private void DeleteLinkAnswerToQuestion(Answer answer) { try { List<tblAnsweroption> answerOptions = db.tblAnsweroptions.Where(q => q.answer == answer.ID).ToList(); // Selecteer item op id foreach (tblAnsweroption dbAnswerOption in answerOptions) { db.tblAnsweroptions.DeleteOnSubmit(dbAnswerOption); } // Geef opdracht om bovenstaande item te verwijderen db.SubmitChanges(); // Voer veranderingen door } catch (SqlException ex) { MessageBox.Show(ex.Message);//Wanneer er iets fout gaat, laat een messagebox zien met de SQL exception. } }