Пример #1
0
        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();
            }
        }
Пример #2
0
        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();
            }
        }