public static bool ValidarTurnoDesocupado(DateTime fechaHoraDesde, DateTime fechaHoraHasta, int codigoCancha) { ISession nhSesion = ManejoNHibernate.IniciarSesion(); try { TurnoVariable turnoV = CatalogoTurnoVariable.RecuperarTurnoPorCanchaYFechas(fechaHoraDesde, fechaHoraHasta, codigoCancha, nhSesion); if (turnoV != null) { return(false); } else { TurnoFijo turnoF = CatalogoGenerico <TurnoFijo> .RecuperarPor(x => x.Cancha.Codigo == codigoCancha && x.FechaHasta == null && x.CodigoDiaSemana == Convert.ToInt32(fechaHoraDesde.DayOfWeek) && x.HoraDesde <= fechaHoraDesde.Hour && x.HoraHasta >= fechaHoraHasta.Hour, nhSesion); if (turnoF != null) { return(false); } } return(true); } catch (Exception ex) { throw ex; } finally { nhSesion.Close(); nhSesion.Dispose(); } }
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 RecuperarTurnosPorComplejoPorDia(DateTime fecha, int codigoComplejo) { ISession nhSesion = ManejoNHibernate.IniciarSesion(); try { Complejo complejo = CatalogoGenerico <Complejo> .RecuperarPorCodigo(codigoComplejo, nhSesion); List <Cancha> listaCanchas = CatalogoGenerico <Cancha> .RecuperarLista(x => x.Complejo.Codigo == codigoComplejo, nhSesion); DataTable tablaTurnos = new DataTable(); tablaTurnos.Columns.Add("Hora"); tablaTurnos.Columns.Add("HoraDesde"); tablaTurnos.Columns.Add("HoraHasta"); foreach (Cancha cancha in listaCanchas) { tablaTurnos.Columns.Add("codigoCancha" + cancha.Descripcion); tablaTurnos.Columns.Add("codigoTurno" + cancha.Descripcion); tablaTurnos.Columns.Add(cancha.Descripcion); } int horaDesde = complejo.HoraApertura; int horaHasta = complejo.HoraCierre; List <TurnoVariable> listaTurnosVariables = CatalogoTurnoVariable.RecuperarPorFechaYHoraYComplejo(fecha, horaDesde, horaHasta, codigoComplejo, nhSesion).Where(x => x.EstadoTurno.Codigo != Constantes.EstadosTurno.CANCELADO && x.EstadoTurno.Codigo != Constantes.EstadosTurno.CANCELADO).ToList(); List <TurnoFijo> listaTurnosFijos = CatalogoTurnoFijo.RecuperarPorFechaYHoraYComplejo(fecha, horaDesde, horaHasta, codigoComplejo, nhSesion); for (int i = horaDesde; i < horaHasta; i++) { DataRow filaNueva = tablaTurnos.NewRow(); filaNueva["hora"] = i + " a " + (i + 1); filaNueva["HoraDesde"] = i; filaNueva["HoraHasta"] = i + 1; 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(); filaNueva["codigoCancha" + cancha.Descripcion] = cancha.Codigo; if (turnoVariable == null) { filaNueva["codigoTurno" + cancha.Descripcion] = "0"; filaNueva[cancha.Descripcion] = "Disponible"; } else { if (turnoVariable.EstadoTurno.Codigo == Constantes.EstadosTurno.PENDIENTE) { string nombreReserva = turnoVariable.Responsable != string.Empty ? turnoVariable.Responsable : turnoVariable.UsuarioApp.Nombre + " " + turnoVariable.UsuarioApp.Apellido; filaNueva["codigoTurno" + cancha.Descripcion] = turnoVariable.Codigo; filaNueva[cancha.Descripcion] = "Pendiente de confirmación - " + nombreReserva; } else if (turnoVariable.EstadoTurno.Codigo == Constantes.EstadosTurno.RESERVADO || turnoVariable.EstadoTurno.Codigo == Constantes.EstadosTurno.CERRADO) { string nombreReserva = turnoVariable.Responsable != string.Empty ? turnoVariable.Responsable : turnoVariable.UsuarioApp.Nombre + " " + turnoVariable.UsuarioApp.Apellido; filaNueva["codigoTurno" + cancha.Descripcion] = turnoVariable.Codigo; filaNueva[cancha.Descripcion] = "Reservado - " + nombreReserva; } } } else { filaNueva["codigoTurno" + cancha.Descripcion] = turnoFijo.Codigo; filaNueva[cancha.Descripcion] = "Reservado - " + turnoFijo.Responsable; } } tablaTurnos.Rows.Add(filaNueva); } 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(); } }
public static string InsertarActualizarTurnoVariable(int codigoTurnoVariable, int codigoCancha, DateTime fechaHoraDesde, DateTime fechaHoraHasta, int codigoUsuarioApp, string observaciones, string responsable, double seña) { ISession nhSesion = ManejoNHibernate.IniciarSesion(); try { TurnoVariable turnoAnterior = CatalogoTurnoVariable.RecuperarPorFechaYHoraYCancha(fechaHoraDesde.Date, fechaHoraDesde.Hour, fechaHoraHasta.Hour, codigoCancha, nhSesion); if (turnoAnterior == null) { TurnoVariable turno; if (codigoTurnoVariable == 0) { turno = new TurnoVariable(); } else { turno = CatalogoGenerico <TurnoVariable> .RecuperarPorCodigo(codigoTurnoVariable, nhSesion); } turno.Cancha = CatalogoGenerico <Cancha> .RecuperarPorCodigo(codigoCancha, nhSesion); bool horaValida = ValidarHorario(turno.Cancha.Complejo, fechaHoraDesde.Hour, fechaHoraHasta.Hour); if (horaValida) { turno.FechaHoraDesde = fechaHoraDesde; turno.FechaHoraHasta = fechaHoraHasta; turno.Observaciones = observaciones; turno.Responsable = responsable; turno.Seña = seña; turno.UsuarioApp = CatalogoGenerico <UsuarioApp> .RecuperarPorCodigo(codigoUsuarioApp, nhSesion); turno.EstadoTurno = CatalogoGenerico <EstadoTurno> .RecuperarPorCodigo(Constantes.EstadosTurno.PENDIENTE, nhSesion); turno.UsuarioWeb = null; CatalogoGenerico <TurnoVariable> .InsertarActualizar(turno, nhSesion); return("ok"); } else { return("HorarioInvalido"); } } else { return("HorarioOcupado"); } } catch (Exception ex) { throw ex; } finally { nhSesion.Close(); nhSesion.Dispose(); } }