/// <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() }); }