public object Get(Estadisticas est) { Resumen resumen = new Resumen() { CantidadParticipantes = QwNhSession.QueryOver <Participante>().RowCount() }; IList <ParticipantePuntaje> puntajes = QwNhSession.CreateSQLQuery("EXEC dbo.StpPuntuaciones") .SetResultTransformer(PuntajesTransformer.Transformer) .List <ParticipantePuntaje>() .OrderByDescending(x => x.Puntos).ThenBy(x => x.Participante) .ToList(); int puntosActuales = -1; int posActual = 1; int contPos = 1; foreach (var p in puntajes) { if (p.Puntos != puntosActuales) { puntosActuales = p.Puntos; posActual = contPos; } p.Posicion = posActual; contPos++; } return(new EstadisticasResponse() { Resumen = resumen, Puntajes = puntajes }); }
public object Post(ParticipantePronostico ppronostico) { int idParticipante; try { idParticipante = this.Session.Get <int>("IdParticipante"); } catch (Exception e) { throw new UnauthorizedAccessException("El usuario no ha iniciado sesión.", e); } if (idParticipante == 0) { throw new UnauthorizedAccessException("El usuario no ha iniciado sesión."); } Partido partido = QwNhSession.Get <Partido>(ppronostico.IdPartido); if (partido == null) { throw new ArgumentException("ID de partido inválido."); } if (partido.Iniciado) { throw new UnauthorizedAccessException("El partido ya ha iniciado. No puede modificar su pronóstico"); } Pronostico pronostico = QwNhSession.QueryOver <Pronostico>().Where(x => x.PartidoPronostico.IdPartido == ppronostico.IdPartido && x.ParticipantePronostico.IdParticipante == idParticipante).SingleOrDefault(); if (pronostico == null) { Participante participante = new Participante(); QwNhSession.Load(participante, idParticipante); pronostico = new Pronostico() { ParticipantePronostico = participante, PartidoPronostico = partido }; } pronostico.Goles1 = ppronostico.Goles1; pronostico.Goles2 = ppronostico.Goles2; QwNhSession.SaveOrUpdate(pronostico); QwNhSession.Transaction.Commit(); var ppronosticoResponse = new PronosticoResponse() { Pronostico = ppronostico }; return(new HttpResult(ppronosticoResponse) { StatusCode = HttpStatusCode.Created, Headers = { { HttpHeaders.Location, base.Request.AbsoluteUri.CombineWith(ppronosticoResponse.Pronostico.IdPartido) } } }); }
/// <summary> /// POST /login /// </summary> /// <param name="credenciales"></param> /// <returns></returns> public object Post(Login credenciales) { if (credenciales == null) { throw new ArgumentNullException("Codigo"); } var query = QwNhSession.QueryOver <Participante>() .Where(x => x.Alias == credenciales.Alias); Participante p = query.SingleOrDefault(); if (p == null) { return(new LoginResponse() { Resultado = false }); } else { if (string.IsNullOrEmpty(p.Contrasena)) { p.Contrasena = credenciales.Contrasena.ToSha256(); QwNhSession.Update(p); } else if (p.Contrasena != credenciales.Contrasena.ToSha256()) { return(new LoginResponse() { Resultado = false }); } base.Session.Set("IdParticipante", p.IdParticipante); return(new LoginResponse() { Resultado = true, Usuario = p.Alias }); } }
/// <summary> /// GET /pronosticos /// </summary> public object Get(PartidosParticipante partidosParticipante) { int idParticipante; try { idParticipante = this.Session.Get <int>("IdParticipante"); } catch (Exception e) { throw new UnauthorizedAccessException("El usuario no ha iniciado sesión.", e); } if (idParticipante == 0) { throw new UnauthorizedAccessException("El usuario no ha iniciado sesión."); } EtapaPartidoPronostico pp = null; Pronostico pronostico = null; Participante participante = null; Etapa etapa = null; var query = QwNhSession.QueryOver <Partido>() .Inner.JoinAlias(x => x.EtapaPartido, () => etapa) .Left.JoinAlias(x => x.PronosticosPartidos, () => pronostico, x => x.ParticipantePronostico.IdParticipante == idParticipante) .Left.JoinAlias(y => pronostico.ParticipantePronostico, () => participante, x => x.IdParticipante == idParticipante) //.Where(x => participante.IdParticipante == null || participante.IdParticipante == idParticipante) .SelectList(list => list .Select(x => x.Codigo1).WithAlias(() => pp.Codigo1) .Select(x => x.Codigo2).WithAlias(() => pp.Codigo2) .Select(x => x.Equipo1).WithAlias(() => pp.Equipo1) .Select(x => x.Equipo2).WithAlias(() => pp.Equipo2) .Select(x => x.Goles1).WithAlias(() => pp.Goles1) .Select(x => x.Goles2).WithAlias(() => pp.Goles2) .Select(x => x.IdPartido).WithAlias(() => pp.IdPartido) .Select(x => pronostico.Goles1).WithAlias(() => pp.GolesPronostico1) .Select(x => pronostico.Goles2).WithAlias(() => pp.GolesPronostico2) .Select(x => etapa.IdEtapa).WithAlias(() => pp.NumEtapa) .Select(x => etapa.Nombre).WithAlias(() => pp.Etapa) .Select(x => x.FechaHoraInicio).WithAlias(() => pp.FechaHoraInicio) .Select(x => x.FechaHoraFin).WithAlias(() => pp.FechaHoraFin) .Select(x => x.Lugar).WithAlias(() => pp.Lugar) ) .OrderBy(x => x.FechaHoraInicio).Asc .TransformUsing(Transformers.AliasToBean <EtapaPartidoPronostico>()); return(new PartidosParticipanteResponse { Etapas = query.List <EtapaPartidoPronostico>().GroupBy(x => x.NumEtapa) .Select(x => { EtapaPartido ep = new EtapaPartido(); ep.NumEtapa = x.Key; ep.NombreEtapa = x.First().Etapa; ep.Partidos = x.Select(y => new PartidoParticipante() { Codigo1 = y.Codigo1, Codigo2 = y.Codigo2, Equipo1 = y.Equipo1, Equipo2 = y.Equipo2, Goles1 = y.Goles1, Goles2 = y.Goles2, GolesPronostico1 = y.GolesPronostico1, GolesPronostico2 = y.GolesPronostico2, IdPartido = y.IdPartido, FechaHoraInicio = y.FechaHoraInicio, Lugar = y.Lugar, Iniciado = Partido.PartidoIniciado(y.FechaHoraInicio), Finalizado = DateTime.Now.Subtract(y.FechaHoraFin).TotalMinutes > 0 }).ToList(); ep.Activa = !ep.Partidos.Any(z => !z.Definido) && ep.Partidos.Any(z => !z.Finalizado); return ep; }).ToList() }); }
/// <summary> /// GET /pronosticos /// </summary> public object Get(PartidosParticipante partidosParticipante) { int idParticipante; try { idParticipante = this.Session.Get <int>("IdParticipante"); } catch (Exception e) { throw new UnauthorizedAccessException("El usuario no ha iniciado sesión.", e); } if (idParticipante == 0) { throw new UnauthorizedAccessException("El usuario no ha iniciado sesión."); } EtapaPartidoPronostico pp = null; Pronostico pronostico = null; Participante participante = null; var query = QwNhSession.QueryOver <Partido>() .Left.JoinAlias(x => x.PronosticosPartidos, () => pronostico, x => x.ParticipantePronostico.IdParticipante == idParticipante) .Left.JoinAlias(y => pronostico.ParticipantePronostico, () => participante, x => x.IdParticipante == idParticipante) //.Where(x => participante.IdParticipante == null || participante.IdParticipante == idParticipante) .Where(x => x.EtapaNivel1 == partidosParticipante.EtapaNivel1) .SelectList(list => list .Select(x => x.Codigo1).WithAlias(() => pp.Codigo1) .Select(x => x.Codigo2).WithAlias(() => pp.Codigo2) .Select(x => x.Equipo1).WithAlias(() => pp.Equipo1) .Select(x => x.Equipo2).WithAlias(() => pp.Equipo2) .Select(x => x.Goles1).WithAlias(() => pp.Goles1) .Select(x => x.Goles2).WithAlias(() => pp.Goles2) .Select(x => x.IdPartido).WithAlias(() => pp.IdPartido) .Select(x => pronostico.Goles1).WithAlias(() => pp.GolesPronostico1) .Select(x => pronostico.Goles2).WithAlias(() => pp.GolesPronostico2) .Select(x => x.FechaHoraInicio).WithAlias(() => pp.FechaHoraInicio) .Select(x => x.FechaHoraFin).WithAlias(() => pp.FechaHoraFin) .Select(x => x.Lugar).WithAlias(() => pp.Lugar) .Select(x => x.EtapaNivel1).WithAlias(() => pp.EtapaNivel1) .Select(x => x.EtapaNivel2).WithAlias(() => pp.EtapaNivel2) .Select(x => x.EtapaNivel3).WithAlias(() => pp.EtapaNivel3) ) .OrderBy(x => x.FechaHoraInicio).Asc .TransformUsing(Transformers.AliasToBean <EtapaPartidoPronostico>()); return(new PartidosParticipanteResponse { Etapas = query.List <EtapaPartidoPronostico>() .GroupBy(x => x.EtapaNivel2) .Select(x => new Etapa { Nombre = x.Key, SubEtapas = x.GroupBy(y => y.EtapaNivel3) .Select(y => new Etapa { Nombre = y.Key, Partidos = y.Select(z => new PartidoParticipante { IdPartido = z.IdPartido, Codigo1 = z.Codigo1, Codigo2 = z.Codigo2, Equipo1 = z.Equipo1, Equipo2 = z.Equipo2, Goles1 = z.Goles1, Goles2 = z.Goles2, GolesPronostico1 = z.GolesPronostico1, GolesPronostico2 = z.GolesPronostico2, FechaHoraInicio = z.FechaHoraInicio, Lugar = z.Lugar, Iniciado = Partido.PartidoIniciado(z.FechaHoraInicio), Finalizado = DateTime.Now.Subtract(z.FechaHoraFin).TotalMinutes > 0 }).ToList() }).ToList() }).ToList() }); }