public static DataTable RecuperarTurnosPorRangoHorario(DateTime fecha, int horaDesde, int horaHasta, int codigoUsuarioApp) { ISession nhSesion = ManejoNHibernate.IniciarSesion(); try { DataTable tablaTurnos = new DataTable(); tablaTurnos.Columns.Add("horaDesde", typeof(int)); tablaTurnos.Columns.Add("horaHasta", typeof(int)); tablaTurnos.Columns.Add("codigoCancha", typeof(int)); tablaTurnos.Columns.Add("descripcionCancha", typeof(string)); tablaTurnos.Columns.Add("codigoTipoCancha", typeof(int)); tablaTurnos.Columns.Add("descripcionTipoCancha", typeof(string)); tablaTurnos.Columns.Add("codigoComplejo", typeof(int)); tablaTurnos.Columns.Add("descripcionComplejo", typeof(string)); tablaTurnos.Columns.Add("imagenComplejo", typeof(string)); tablaTurnos.Columns.Add("isFavorito", typeof(bool)); tablaTurnos.Columns.Add("precio", typeof(double)); tablaTurnos.Columns.Add("direccion", typeof(string)); tablaTurnos.Columns.Add("puntajeComplejo", typeof(int)); tablaTurnos.Columns.Add("latitud", typeof(double)); tablaTurnos.Columns.Add("longitud", typeof(double)); UsuarioApp usuarioApp = CatalogoGenerico <UsuarioApp> .RecuperarPorCodigo(codigoUsuarioApp, nhSesion); List <TurnoVariable> listaTurnosVariables = CatalogoTurnoVariable.RecuperarPorFechaYHora(fecha, horaDesde, horaHasta, nhSesion); List <TurnoFijo> listaTurnosFijos = CatalogoTurnoFijo.RecuperarPorFechaYHora(fecha, horaDesde, horaHasta, nhSesion); List <Cancha> listaCanchas = CatalogoGenerico <Cancha> .RecuperarTodos(nhSesion); for (int i = horaDesde; i < horaHasta; i++) { foreach (Cancha cancha in listaCanchas) { TurnoFijo turnoFijo = (from tf in listaTurnosFijos where tf.HoraDesde == i && tf.Cancha.Codigo == cancha.Codigo select tf).SingleOrDefault(); if (turnoFijo == null) { TurnoVariable turnoVariable = (from tv in listaTurnosVariables where tv.FechaHoraDesde.Hour == i && tv.Cancha.Codigo == cancha.Codigo select tv).SingleOrDefault(); if (turnoVariable == null) { bool isFavorito = usuarioApp.ComplejosFravoritos.Where(x => x.Codigo == cancha.Complejo.Codigo) == null ? false : true; double valoracion = 0; if (cancha.Complejo.ValoracionesComplejo.Count > 0) { valoracion = (double)cancha.Complejo.ValoracionesComplejo.Sum(x => x.Puntaje) / (double)cancha.Complejo.ValoracionesComplejo.Count; } tablaTurnos.Rows.Add(new object[] { i, i + 1, cancha.Codigo, cancha.Descripcion, cancha.TipoCancha.Codigo, cancha.TipoCancha.Descripcion, cancha.Complejo.Codigo, cancha.Complejo.Descripcion, cancha.Complejo.Logo, isFavorito, cancha.PrecioTarde, cancha.Complejo.Direccion, valoracion, cancha.Complejo.Latitud, cancha.Complejo.Longitud }); } } } } return(tablaTurnos); } catch (Exception ex) { throw ex; } finally { nhSesion.Close(); nhSesion.Dispose(); } }
public static DataTable RecuperarTurnosDisponiblesPorComplejoPorDia(DateTime fecha, int codigoComplejo) { ISession nhSesion = ManejoNHibernate.IniciarSesion(); try { DataTable tablaTurnos = new DataTable(); tablaTurnos.Columns.Add("horaDesde", typeof(int)); tablaTurnos.Columns.Add("horaHasta", typeof(int)); tablaTurnos.Columns.Add("codigoCancha", typeof(int)); tablaTurnos.Columns.Add("descripcionCancha", typeof(string)); tablaTurnos.Columns.Add("codigoTipoCancha", typeof(int)); tablaTurnos.Columns.Add("descripcionTipoCancha", typeof(string)); tablaTurnos.Columns.Add("codigoComplejo", typeof(int)); tablaTurnos.Columns.Add("descripcionComplejo", typeof(string)); tablaTurnos.Columns.Add("imagenComplejo", typeof(string)); tablaTurnos.Columns.Add("precio", typeof(double)); tablaTurnos.Columns.Add("direccion", typeof(string)); tablaTurnos.Columns.Add("puntajeComplejo", typeof(int)); tablaTurnos.Columns.Add("latitud", typeof(double)); tablaTurnos.Columns.Add("longitud", typeof(double)); tablaTurnos.Columns.Add("estado", typeof(string)); Complejo complejo = CatalogoGenerico <Complejo> .RecuperarPorCodigo(codigoComplejo, nhSesion); int horaDesde = complejo.HoraApertura; int horaHasta = complejo.HoraCierre; List <TurnoVariable> listaTurnosVariables = CatalogoTurnoVariable.RecuperarPorFechaYHora(fecha, horaDesde, horaHasta, nhSesion); List <TurnoFijo> listaTurnosFijos = CatalogoTurnoFijo.RecuperarPorFechaYHora(fecha, horaDesde, horaHasta, nhSesion); List <Cancha> listaCanchas = CatalogoGenerico <Cancha> .RecuperarTodos(nhSesion); for (int i = horaDesde; i < horaHasta; i++) { foreach (Cancha cancha in listaCanchas) { TurnoFijo turnoFijo = (from tf in listaTurnosFijos where tf.HoraDesde == i && tf.Cancha.Codigo == cancha.Codigo select tf).SingleOrDefault(); if (turnoFijo == null) { TurnoVariable turnoVariable = (from tv in listaTurnosVariables where tv.FechaHoraDesde.Hour == i && tv.Cancha.Codigo == cancha.Codigo select tv).SingleOrDefault(); if (turnoVariable == null) { tablaTurnos.Rows.Add(new object[] { i, i + 1, cancha.Codigo, cancha.Descripcion, cancha.TipoCancha.Codigo, cancha.TipoCancha.Descripcion, cancha.Complejo.Codigo, cancha.Complejo.Descripcion, "imagenComplejo", cancha.PrecioTarde, cancha.Complejo.Direccion, 3, cancha.Complejo.Latitud, cancha.Complejo.Longitud }); } } } } return(tablaTurnos); } catch (Exception ex) { throw ex; } finally { nhSesion.Close(); nhSesion.Dispose(); } }