public ActionResult JugarMultijugador(string idPlayer, string idJuego) { Guid idJugador = new Guid(idPlayer); Guid idGame = new Guid(idJuego); var juego = PlaySingleton.GetInstance.GetJuego(idGame); var player = PlaySingleton.GetInstance.GetPlayer(idJugador); //Cantidad a contestar int cantidadAContestar = juego.CantidadPreguntas; //cuantas contesto int cantidadContestadas = player.NroPreguntaRespondida; Pregunta pregunta = juego.GetPreguntaJuego(player.NroPreguntaRespondida); PreguntaJuegoViewModel model = new PreguntaJuegoViewModel(pregunta, idJugador, idGame); return(View("JugarMultiJugador", model)); }
public ActionResult ComenzarAJugarMobile() { Guid id = Newtonsoft.Json.JsonConvert.DeserializeObject <Guid>(this.Contenido); var juego = db.Juegos.Find(id); var preguntasContestadas = db.PreguntaPorRespuesta.Where(pr => pr.Juego.Id == id && pr.Usuario.UsuarioApp.Id == usuarioId ).ToList(); var preguntaAContestar = new Pregunta(); foreach (var pregunta in juego.Preguntas) { var existe = preguntasContestadas.FirstOrDefault(p => p.Pregunta.Id == pregunta.Id); if (existe == null) { preguntaAContestar = pregunta; break; } } if (preguntaAContestar.Nombre == null) { return(Json(new { Result = "Termino", Error = "" }, JsonRequestBehavior.AllowGet)); //CONTESTO TODAS LAS PREGUNTAS //return RedirectToAction("JuegoFinalizadoMobile", new { Id = Id }); //CONTESTO TODAS LAS PREGUNTAS } var model = new PreguntaJuegoViewModel(); model.JuegoId = id; model.PreguntaJuego = preguntaAContestar.CovertirAViewModel(); model.RespuestaCorrecta = preguntaAContestar.Respuestas.FirstOrDefault(r => r.EsCorrecta).Id; model.RespuestaJuego = preguntaAContestar.Respuestas.Select(r => new RespuestaViewModel { Id = r.Id, Nombre = r.Nombre }).ToList(); return(Json(new { Result = model, Error = "" }, JsonRequestBehavior.AllowGet)); }
//Una vez seleccionada la categoria recibe el ID de la categoria y muestra las preguntas public ActionResult ComenzarAJugar(Guid Id) { var juego = db.Juegos.Find(Id); var userid = User.Identity.GetUserId(); var preguntasContestadas = db.PreguntaPorRespuesta.Where(pr => pr.Juego.Id == Id && pr.Usuario.UsuarioApp.Id == userid ).ToList(); var preguntaAContestar = new Pregunta(); foreach (var pregunta in juego.Preguntas) { var existe = preguntasContestadas.FirstOrDefault(p => p.Pregunta.Id == pregunta.Id); if (existe == null) { preguntaAContestar = pregunta; break; } } if (preguntaAContestar.Nombre == null) { return(RedirectToAction("JuegoFinalizado", new { Id = Id })); //CONTESTO TODAS LAS PREGUNTAS TODAS LAS PREGUNTAS } var model = new PreguntaJuegoViewModel(); model.JuegoId = Id; model.PreguntaJuego = preguntaAContestar.CovertirAViewModel(); model.RespuestaCorrecta = preguntaAContestar.Respuestas.FirstOrDefault(r => r.EsCorrecta).Id; model.RespuestaJuego = preguntaAContestar.Respuestas.Select(r => new RespuestaViewModel { Id = r.Id, Nombre = r.Nombre }).ToList(); return(View(model)); }
public ActionResult Jugar(string id) { var idGuid = new Guid(id); var userId = User.Identity.GetUserId(); var repoUsuario = new Repositorio <Usuario>(db); var repoPregunta = new Repositorio <Pregunta>(db); var repoCategoria = new Repositorio <Categoria>(db); var repoPreguntasRespondidas = new Repositorio <PreguntasRespondidas>(db); Categoria categoriaSeleccionada = null; //Traer la categoria if (id != null) { categoriaSeleccionada = repoCategoria.TraerTodos().Where(c => c.Id == idGuid).FirstOrDefault(); } var preguntas = repoPregunta.TraerTodos().Where(p => p.Categoria.Id == categoriaSeleccionada.Id).ToList(); var preguntasRespondidas = repoPreguntasRespondidas.TraerTodos().Where(p => p.Usuario.ApplicationUser.Id == userId && p.Categoria.Id == categoriaSeleccionada.Id).ToList(); //chequear cuantas tiene la categoria int cantidadAContestar = preguntas.Where(c => c.Categoria.Id == categoriaSeleccionada.Id).FirstOrDefault().Categoria.CantidadPreguntasAResponder; //cuantas contesto int cantidadContestadas = preguntasRespondidas != null?preguntasRespondidas.Count() : 0; //que tiene el juego menos las que contesto if (cantidadContestadas < cantidadAContestar) { var preguntasId = preguntas.Select(p => p.Id); var preguntasContestadasId = preguntasRespondidas != null?preguntasRespondidas.Select(p => p.Pregunta.Id) : new List <Guid>(); //traer una pregunta except entre pregutnas y contestadas var preguntasFiltradas = preguntasId.Except(preguntasContestadasId).ToList(); var preguntaId = preguntasFiltradas.ElementAt(new Random().Next(0, preguntasFiltradas.Count() - 1)); Pregunta preguntaRandom = preguntas.Where(p => p.Id == preguntaId).FirstOrDefault(); var usuarioId = repoUsuario.TraerTodos().Where(p => p.ApplicationUser.Id == userId).FirstOrDefault().Id; PreguntaJuegoViewModel model = new PreguntaJuegoViewModel(preguntaRandom, usuarioId); return(View("Juego", model)); } int cantidadCorrectas = repoPreguntasRespondidas.TraerTodos().Count(p => p.Respuesta.EsCorrecta); var resultados = repoPreguntasRespondidas.TraerTodos().Where(p => p.Usuario.ApplicationUser.Id == userId && p.Categoria.Id == categoriaSeleccionada.Id).Select(r => new ResultadoJuegoViewModel { Id = r.Id, Nombre = r.Pregunta.Nombre, CategoriaId = r.Categoria.Id, Usuarioid = r.Usuario.Id, RespuestaContestada = r.Respuesta.Id, RespuestaCorrecta = r.Pregunta.Respuestas.Where(q => q.EsCorrecta).FirstOrDefault().Id, //Resultado = cantidadCorrectas + "/" + cantidadAContestar, Respuestas = r.Pregunta.Respuestas.Select(p => new Models.ViewModels.Juego.RespuestaResultadoViewModel { Id = p.Id, Nombre = p.Nombre, EsCorrecta = p.EsCorrecta }).ToList() }).ToList(); ResultadoWraperJuegoViewModel resultadoWraper = new ResultadoWraperJuegoViewModel(); resultadoWraper.Resultado = resultados; resultadoWraper.Score = cantidadCorrectas + "/" + cantidadAContestar; return(View("Resultados", resultadoWraper)); }