/** * Retourne un nombre aléatoire entre 1 et la taille de la liste des verbes **/ private int GetRandomVerb() { VerbeService verbeService = new VerbeService(new EnglishBattle.data.EnglishBattleEntities()); List <Verbe> listVerb = verbeService.GetVerbList(); Random rndNum = new Random(); return(rndNum.Next(1, listVerb.Count + 1)); }
public ActionResult Question(QuestionViewModel model) { //validation côté serveur if (ModelState.IsValid) { // Récupère les services VerbeService verbeService = new VerbeService(new EnglishBattle.data.EnglishBattleEntities()); // Récupère de la valeur session contenant les informations à l'arrivée d'une question. Question fromSession = (Question)Session["questionInfo"]; Partie partie = (Partie)Session["partie"]; DateTime dateAnswer = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); // Objet Question qui va être insérer dans la base. Question question = new Question { idPartie = fromSession.idPartie, idVerbe = fromSession.idVerbe, dateEnvoie = fromSession.dateEnvoie, reponseParticipePasse = model.ParticipePasse, reponsePreterit = model.Preterit, dateReponse = dateAnswer, }; questionService.InsertQuestion(question); // Variable inutile servant pour caculer le delta entre 2 date DateTime a = question.dateEnvoie; DateTime b = (DateTime)question.dateReponse; // Si le delta entre les dates d'envoie et de réponse est supérieur à 60 seconde, soit une minute if (b.Subtract(a).TotalSeconds >= 60) { partieService.UpdatePartie(partie); // Réinitialise les sessions en les passant à nulle Session["partie"] = null; Session["listVerb"] = new List <int>(); Session["questionInfo"] = null; TempData["message"] = "You took too much time, more than 1mn !"; Session["numQuest"] = 0; // Redirection sur la page final return(RedirectToAction("End", "Question")); } // Si la question a été correctement répondu else if (isCorrectAnswers(question.idVerbe, question.reponsePreterit, question.reponseParticipePasse)) { TempData["message"] = "Good Answers"; // Incrémentation du score et mis à jour du score dans la base partie.score++; partieService.UpdatePartie(partie); // Si le score est un multiple de 5, message de Félicitation if (partie.score % 5 == 0) { TempData["message"] = "Good Answer ! It was the " + partie.score + " in a row !"; return(RedirectToAction("Question", "Question")); } // Si le joueur a répondu à tout les verbes, redirection sur la page final else if (partie.score == verbeService.GetVerbList().Count) { TempData["message"] = "Félicitations ! Vous avez réussi à trouver le prétérit et le participe passé de tous les verbes irréguliers !"; return(RedirectToAction("End", "Question")); } // Sinon, message de bonne réponse et passage à la question suivante else { TempData["message"] = "Good Answer !"; return(RedirectToAction("Question", "Question")); } } // Sinon, cela signifie que le joueur a mal répondu else { partieService.UpdatePartie(partie); // Réinitialise les sessions en les passant à nulle Session["partie"] = null; Session["listVerb"] = new List <int>(); Session["questionInfo"] = null; Session["numQuest"] = 0; TempData["message"] = "Mauvaise réponse ! Vous avez perdu !"; // Redirection sur la page final return(RedirectToAction("End", "Question")); } } return(View()); }