예제 #1
0
 private void loadNextQuestion()
 {
     randomNumbers();
     currentQuestion    = Fragenkatalog.katalog[counter - 1];
     labelQuestion.Text = currentQuestion.getText().ToString();
     buttonAnswerA.Text = currentQuestion.getAntwort()[randomNumberListOfAnswers[0]].getText();
     buttonAnswerB.Text = currentQuestion.getAntwort()[randomNumberListOfAnswers[1]].getText();
     buttonAnswerC.Text = currentQuestion.getAntwort()[randomNumberListOfAnswers[2]].getText();
     buttonAnswerD.Text = currentQuestion.getAntwort()[randomNumberListOfAnswers[3]].getText();
 }
 private void buttonSaveQuestionClicked(object sender, EventArgs e)
 {
     //Prüft ob alle Felder gefüllt sind
     if (entryQuestion.Text != null && !entryQuestion.Text.Trim().Equals("") &&
         pickerCategory.SelectedItem != null &&
         entryRightAnwser.Text != null && !entryRightAnwser.Text.Trim().Equals("") &&
         entryWrongAnwser_1.Text != null && !entryWrongAnwser_1.Text.Trim().Equals("") &&
         entryWrongAnwser_2.Text != null && !entryWrongAnwser_2.Text.Trim().Equals("") &&
         entryWrongAnwser_3.Text != null && !entryWrongAnwser_3.Text.Trim().Equals(""))
     {
         if (entryQuestion.Text.Length <= 128 &&
             entryRightAnwser.Text.Length <= 128 &&
             entryWrongAnwser_1.Text.Length <= 128 &&
             entryWrongAnwser_2.Text.Length <= 128 &&
             entryWrongAnwser_3.Text.Length <= 128)
         {
             Fragen    question = new Fragen();
             Antworten a1       = new Antworten();
             Antworten a2       = new Antworten();
             Antworten a3       = new Antworten();
             Antworten a4       = new Antworten();
             question.setText(entryQuestion.Text);
             a1.setText(entryRightAnwser.Text);
             a1.setStatus(true);
             question.setAntworten(a1);
             a2.setText(entryWrongAnwser_1.Text);
             a2.setStatus(false);
             question.setAntworten(a2);
             a3.setText(entryWrongAnwser_2.Text);
             a3.setStatus(false);
             question.setAntworten(a3);
             a4.setText(entryWrongAnwser_3.Text);
             a4.setStatus(false);
             question.setAntworten(a4);
             foreach (Kategorien k in Kategorien.kategorien)
             {
                 if (k.titel.Equals(pickerCategory.SelectedItem))
                 {
                     question.setKategorie(k);
                 }
             }
             Model.Database.SQLiteHelper db = new Model.Database.SQLiteHelper();
             db.AddFrageToDatabase(question);
             Navigation.PushAsync(new MainPage());
         }
         else
         {
             DisplayAlert("Achtung", "Sie dürfen nicht mehr als 127 Zeichen benutzten!", "Okay");
         }
     }
     else
     {
         DisplayAlert("Achtung", "Sie müssen alle Felder mit Werten füllen, wenn Sie speichern wollen!", "Okay");
     }
 }
        public void AddFrageToDatabase(Fragen frage)
        {
            DAOFrage dAOFrage = new DAOFrage();
            var      db       = new SQLiteConnection(pathToDb);

            dAOFrage.text = frage.getText();
            foreach (Antworten antwort in frage.getAntwort())
            {
                DAOAntwort dAOAntwort = new DAOAntwort();
                dAOAntwort.text      = antwort.getText();
                dAOAntwort.isCorrect = antwort.getStatus();
                db.Insert(dAOAntwort);
                DAOFrageAntwort dAOFrageAntwort = new DAOFrageAntwort();
                dAOFrageAntwort.AID = dAOAntwort.Id;
                dAOFrageAntwort.FID = dAOFrage.Id;
                db.Insert(dAOFrageAntwort);
            }
            foreach (Kategorien kategorie in frage.getKategorie())
            {
                bool check = false;
                uint?i     = 0;
                foreach (Kategorien dbKategorie in this.getAllKategorien())
                {
                    if (dbKategorie.titel.Equals(kategorie.titel))
                    {
                        check = true;
                        i     = dbKategorie.id;
                    }
                }
                if (check == false)
                {
                    DAOKategorie dAOKategorie = new DAOKategorie();
                    dAOKategorie.title       = kategorie.titel;
                    dAOKategorie.description = kategorie.beschreibung;
                    db.Insert(dAOKategorie);
                    i = dAOKategorie.Id;
                }
                DAOFrageKategorie dAOFrageKategorie = new DAOFrageKategorie();
                dAOFrageKategorie.KID = i;
                dAOFrageKategorie.FID = dAOFrage.Id;
                db.Insert(dAOFrageKategorie);
            }
            db.Insert(dAOFrage);
            setFragenList();
        }
        public static Collection <Fragen> getAllFragen()
        {
            Collection <Fragen> fragen = new Collection <Fragen>();
            var db = new SQLiteConnection(pathToDb);

            var tableOfFragen         = db.Table <DAOFrage>();
            var tableOfAntworten      = db.Table <DAOAntwort>();
            var tableOfFrageAntwort   = db.Table <DAOFrageAntwort>();
            var tableOfFrageKategorie = db.Table <DAOFrageKategorie>();
            var tableOfKategorien     = db.Table <DAOKategorie>();

            foreach (DAOFrage daoFrage in tableOfFragen)
            {
                Fragen newFrage = new Fragen();
                //set id erstmal ausgelassen
                newFrage.setText(daoFrage.text);
                newFrage.setErklärung(daoFrage.explanation);
                newFrage.setId(daoFrage.Id);
                //add Antwort
                foreach (DAOAntwort daoAntwort in tableOfAntworten)
                {
                    foreach (DAOFrageAntwort fa in tableOfFrageAntwort)
                    {
                        if (fa.FID == daoFrage.Id && fa.AID == daoAntwort.Id)
                        {
                            Antworten newAntwort = new Antworten(daoAntwort.text, daoAntwort.isCorrect);
                            newFrage.setAntworten(newAntwort);
                        }

                        if (fa.id > DAOFrageAntwort.lastId)
                        {
                            DAOFrageAntwort.lastId = fa.id;
                        }
                    }

                    if (daoAntwort.Id > DAOAntwort.lastId)
                    {
                        DAOAntwort.lastId = daoAntwort.Id;
                    }
                }

                //add Kategorie
                foreach (DAOKategorie daoKategorie in tableOfKategorien)
                {
                    foreach (DAOFrageKategorie fk in tableOfFrageKategorie)
                    {
                        if (fk.FID == daoFrage.Id && fk.KID == daoKategorie.Id)
                        {
                            Kategorien newKategorie = new Kategorien(daoKategorie.title, daoKategorie.description);
                            newFrage.setKategorie(newKategorie);
                        }

                        if (fk.id > DAOFrageKategorie.lastId)
                        {
                            DAOFrageKategorie.lastId = fk.id;
                        }
                    }

                    if (daoKategorie.Id > DAOKategorie.lastId)
                    {
                        DAOKategorie.lastId = daoKategorie.Id;
                    }
                }

                if (newFrage.getId() > DAOFrage.lastId)
                {
                    DAOFrage.lastId = newFrage.getId();
                }

                fragen.Add(newFrage);
            }
            return(fragen);
        }
예제 #5
0
        private void NextQuestion()
        {
            if (Aufloesung)
            {
                List <AntwortViewModel> selectedAntworten = Frage.Antworten.Where(x => x.Status == AntwortStatus.Selected).ToList();

                if (selectedAntworten.Count() == Frage.RichtigeAnzahl)
                {
                    selectedAntworten.ForEach(x => { if (x.Richtig)
                                                     {
                                                         x.Status = AntwortStatus.Right;
                                                     }
                                                     else
                                                     {
                                                         x.Status = AntwortStatus.Wrong;
                                                     } });

                    if (selectedAntworten.TrueForAll(x => x.Status == AntwortStatus.Right))
                    {
                        ButtonColor = (Color)App.Current.Resources["RightColor"];

                        if (DatabaseViewModel.Instance.IsWiederholung)
                        {
                            if (Frage.Status != FrageStatus.Bearbeitet)
                            {
                                Frage.Status = FrageStatus.Bearbeitet;
                            }
                            else
                            {
                                Frage.Status = FrageStatus.Richtig;
                            }
                        }
                        else
                        {
                            Frage.Status = FrageStatus.Richtig;
                        }
                    }
                    else
                    {
                        ButtonColor  = (Color)App.Current.Resources["WrongColor"];
                        Frage.Status = FrageStatus.Falsch;
                    }

                    Aufloesung = false;
                    Frage.Antworten.Where(x => x.Richtig).ToList().ForEach(x => x.Status = AntwortStatus.Right);
                }
            }
            else
            {
                if (Frage != null)
                {
                    Frage.Antworten.ToList().ForEach(x => x.Status = AntwortStatus.NotSelected);
                }

                List <FrageViewModel> zubearbeitendeFragen = Fragen.Where(x => x.Status != FrageStatus.Richtig).ToList();

                if (zubearbeitendeFragen.Any())
                {
                    FrageViewModel          frageTemp     = zubearbeitendeFragen[new Random().Next(0, zubearbeitendeFragen.Count)];
                    List <AntwortViewModel> antwortenTemp = frageTemp.Antworten.ToList();
                    frageTemp.Antworten.Clear();

                    foreach (AntwortViewModel antwortTemp in RandomizeAntworten(antwortenTemp))
                    {
                        frageTemp.Antworten.Add(antwortTemp);
                    }

                    Frage      = frageTemp;
                    Aufloesung = true;
                    SetIsSolveabel();
                    SetSelectCounter();
                }
                else
                {
                    Beenden();
                }
            }
        }
예제 #6
0
 private void Fragen_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
 {
     Fragen.Last().PropertyChanged += PruefungViewModel_PropertyChanged;
 }