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) } } }); }
public void GetByDiaOk() { int dia = 4; var pronostico = new Pronostico { Clima = ClimaConstants.Sequia, Dia = dia, Fecha = DateTime.Today, NivelDeLluvia = 0 }; pronosticoServiceMock.Setup(service => service.GetByDia(dia)).Returns(pronostico); var controller = new PronosticoController(logger, pronosticoServiceMock.Object, jobServiceMock.Object, memoryCache); var actionResult = controller.Get(dia); // Assert Assert.NotNull(actionResult); var result = actionResult as OkObjectResult; Assert.NotNull(result); var p = result.Value as Pronostico; Assert.AreEqual(p.Dia, dia); }
public void GetAll() { var list = new List <Pronostico>(); var pronostico = new Pronostico { Clima = ClimaConstants.Sequia, Dia = 2, Fecha = DateTime.Today, NivelDeLluvia = 0 }; list.Add(pronostico); pronostico = new Pronostico { Clima = ClimaConstants.Sequia, Dia = 4, Fecha = DateTime.Today, NivelDeLluvia = 0 }; list.Add(pronostico); pronostico = new Pronostico { Clima = ClimaConstants.Sequia, Dia = 5, Fecha = DateTime.Today, NivelDeLluvia = 0 }; list.Add(pronostico); pronosticoServiceMock.Setup(service => service.GetAll()).Returns(list); var controller = new PronosticoController(logger, pronosticoServiceMock.Object, jobServiceMock.Object, memoryCache); var actionResult = controller.Get(); // Assert Assert.NotNull(actionResult); var result = actionResult as OkObjectResult; Assert.NotNull(result); var pronosticos = result.Value as List <Pronostico>; Assert.AreEqual(pronosticos.Count, 3); }
public void GetPronosticoConClimaSequia() { var list = new List <Pronostico>(); var pronostico = new Pronostico { Clima = ClimaConstants.Sequia, Dia = 2, Fecha = DateTime.Today, NivelDeLluvia = 0 }; list.Add(pronostico); pronostico = new Pronostico { Clima = ClimaConstants.Sequia, Dia = 4, Fecha = DateTime.Today, NivelDeLluvia = 0 }; list.Add(pronostico); pronostico = new Pronostico { Clima = ClimaConstants.Sequia, Dia = 5, Fecha = DateTime.Today, NivelDeLluvia = 0 }; list.Add(pronostico); var mock = new Mock <IPronosticoRepository>(); var wrapper = new Mock <IRepositoryWrapper>(); mock.Setup(p => p.FindByCondition(It.IsAny <Expression <Func <Pronostico, bool> > >())).Returns(list); wrapper.Setup(p => p.Pronostico).Returns(mock.Object); var service = new PronosticoService(null, wrapper.Object); var dias = service.GetByClimas(new string[] { ClimaConstants.Sequia }).ToList(); Assert.AreEqual(dias.Count(), 3); Assert.True(dias.All(d => d.Clima == ClimaConstants.Sequia)); }
/// <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() }); }