internal void RegistrarEstadia(Reserva reserva)
        {
            var query = String.Format(@"INSERT INTO GD2C2014.LA_REVANCHA.ESTADIA " +
                                      "(EST_COD_RESERVA, EST_FECHA_CHECK_IN) VALUES " +
                                      "('{0}', '{1}')", reserva.identificador,
                                      DBTypeConverter.ToSQLDateTime(FechaSistema.Instance.fecha));

            SQLUtils.EjecutarConsultaConEfectoDeLado(query);
        }
        internal Estadia BuscarEstadia(Reserva reserva)
        {
            var query = String.Format(@"SELECT * FROM GD2C2014.LA_REVANCHA.ESTADIA WHERE " +
                                       "EST_COD_RESERVA = '{0}'", reserva.identificador);

            DataRowCollection dataRow = SQLUtils.EjecutarConsultaSimple(query, "GD2C2014.LA_REVANCHA.ESTADIA");
            if (dataRow.Count > 0)
                return (dataRow.ToList<Estadia>(this.ObtenerEstadiaParaCheckOut)).First();
            else
                return new Estadia();
        }
        internal void GenerarReserva(Reserva reserva)
        {
            var ultimaReserva = String.Format(@"SELECT TOP 1 RES_CODIGO FROM GD2C2014.LA_REVANCHA.RESERVA " +
                                                "ORDER BY RES_CODIGO DESC");

            DataRowCollection dataRow = SQLUtils.EjecutarConsultaSimple(ultimaReserva, "GD2C2014.LA_REVANCHA.RESERVA");

            reserva.identificador = (dataRow.ToList<Decimal>(row => Decimal.Parse(row["RES_CODIGO"].ToString()))).First() + 1;

            var query = String.Format(@"INSERT INTO GD2C2014.LA_REVANCHA.RESERVA " +
                                        "(RES_CODIGO, RES_FECHA_CARGA, RES_FECHA_DESDE, RES_FECHA_HASTA, RES_HOTREG_HOTEL, " +
                                        "RES_HOTREG_REGIMEN, RES_ESTRES_CODIGO) " +
                                        "VALUES ('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}')", reserva.identificador,
                                        DBTypeConverter.ToSQLDateTime(FechaSistema.Instance.fecha),
                                        DBTypeConverter.ToSQLDateTime(reserva.fechaDesde),
                                        DBTypeConverter.ToSQLDateTime(reserva.fechaHasta),
                                        reserva.identificador_hotel, reserva.identificador_regimen, reserva.identificador_estado);

            SQLUtils.EjecutarConsultaConEfectoDeLado(query);
        }
        public Reserva DataRowToRese(DataRow row)
        {
            var codigo_hot = Decimal.Parse(row["RES_HOTREG_HOTEL"].ToString());
            var codigo_est = Decimal.Parse(row["RES_ESTRES_CODIGO"].ToString());
            var codigo_reg = Decimal.Parse(row["RES_HOTREG_REGIMEN"].ToString());
            var codigo = Decimal.Parse(row["RES_CODIGO"].ToString());
            var desde = DateTime.Parse(row["RES_FECHA_DESDE"].ToString());
            var hasta = DateTime.Parse(row["RES_FECHA_HASTA"].ToString());

            var reserv = new Reserva(codigo,codigo_hot,codigo_reg,codigo_est, desde, hasta);
            return reserv;
        }
 public CancelarReserva(Usuario user, Reserva reserv) : this() 
 {
     usuario = user;
     reserva = reserv;
 }
        internal bool UsuarioRegistrado(Reserva reserva, Cliente cliente)
        {
            var query = String.Format(@"SELECT * FROM GD2C2014.LA_REVANCHA.RESERVA_USUARIO " +
                                       "WHERE RESUSU_COD_RESERVA = '{0}' AND " +
                                       "RESUSU_CODUSU_HUESPED = '{1}'",
                                       reserva.identificador, cliente.codigo_usuario);

            DataRowCollection dataRows = SQLUtils.EjecutarConsultaSimple(query, "GD2C2014.LA_REVANCHA.RESERVA_USUARIO");

            return dataRows.Count > 0;
        }
        internal void GenerarReserva(Reserva reserva, Cliente cliente)
        {
            var query = String.Format(@"INSERT INTO GD2C2014.LA_REVANCHA.RESERVA_USUARIO " +
                                       "(RESUSU_COD_RESERVA, RESUSU_CODUSU_HUESPED) " +
                                       "VALUES ('{0}', '{1}')", reserva.identificador,
                                       cliente.codigo_usuario);

            SQLUtils.EjecutarConsultaConEfectoDeLado(query);
        }
        internal List<Habitacion> HabitacionesLibresEnFechaParaReserva(Hotel hotel, Reserva reserva)
        {
            var query = String.Format(@"SELECT HABIT.* FROM GD2C2014.LA_REVANCHA.HABITACION HABIT " +
                                       "WHERE HABIT.HAB_CODIGO NOT IN " +
                                           "(SELECT HABRES_COD_HABITACION " +
                                            "FROM GD2C2014.LA_REVANCHA.HABITACION_RESERVA WHERE " +
                                            "HABRES_COD_RESERVA IN " +
                                               "(SELECT RES_CODIGO FROM GD2C2014.LA_REVANCHA.RESERVA " +
                                                "WHERE (CAST('{1}' AS DATE) " + 
												"BETWEEN CAST(RES_FECHA_DESDE AS DATE) " +
												"AND CAST(RES_FECHA_HASTA AS DATE) " +
										        "OR (CAST(RES_FECHA_DESDE AS DATE) " +
												"BETWEEN CAST('{1}' AS DATE) " + 
												"AND CAST('{2}' AS DATE))) " +
										        "AND RES_HOTREG_HOTEL = '{0}') " +
                                                "GROUP BY HABRES_COD_HABITACION) AND HABIT.HAB_COD_HOTEL = '{0}'",
                                       hotel.identificador,
                                       DBTypeConverter.ToSQLDateTime(reserva.fechaDesde), 
                                       DBTypeConverter.ToSQLDateTime(reserva.fechaHasta.AddDays(-1)), reserva.identificador);

            DataRowCollection dataRow = SQLUtils.EjecutarConsultaSimple(query, "GD2C2014.LA_REVANCHA.HABITACION");

            return dataRow.ToList<Habitacion>(this.DataRowToHab);
        }
        internal void QuitarReservaDeHabitacion(Reserva reserva, Habitacion habitacionARemover)
        {
            var query = String.Format(@"DELETE FROM GD2C2014.LA_REVANCHA.HABITACION_RESERVA " +
                                      "WHERE HABRES_COD_HABITACION = '{0}' AND " +
                                      "HABRES_COD_RESERVA = '{1}'", habitacionARemover.identificador,
                                      reserva.identificador);

            SQLUtils.EjecutarConsultaConEfectoDeLado(query);
        }
        internal List<Habitacion> HabitacionesReservadasDisponiblesPorCambioDeFecha(Hotel hotel, 
            DateTime desdeFecha, DateTime hastaFecha, Reserva reserva)
        {
            var query = String.Format(@"SELECT * FROM GD2C2014.LA_REVANCHA.HABITACION " +
                                      "WHERE HAB_CODIGO IN (SELECT HABRES_COD_HABITACION " +
                                      "FROM GD2C2014.LA_REVANCHA.HABITACION_RESERVA WHERE " +
                                      "HABRES_COD_RESERVA IN (SELECT RES_CODIGO FROM " +
                                      "GD2C2014.LA_REVANCHA.RESERVA WHERE RES_CODIGO <> '{0}' " +
                                      "AND RES_HOTREG_HOTEL = '{1}' AND " +
                                      "(CAST(RES_FECHA_DESDE AS DATE) BETWEEN " +
                                      "CAST('{2}' AS DATE) AND CAST('{3}' AS DATE) OR " +
                                      "CAST(RES_FECHA_HASTA AS DATE) BETWEEN CAST('{2}' AS DATE) " +
                                      "AND CAST('{3}' AS DATE)))) AND HAB_COD_HOTEL = '{1}'",
                                      reserva.identificador, hotel.identificador,
                                      DBTypeConverter.ToSQLDateTime(desdeFecha), DBTypeConverter.ToSQLDateTime(hastaFecha));

            DataRowCollection dataRows = SQLUtils.EjecutarConsultaSimple(query, "GD2C2014.LA_REVANCHA.HABITACION");

            if (dataRows.Count > 0)
                return dataRows.ToList<Habitacion>(this.DataRowToHab);
            else
                return new List<Habitacion>();
                                      
        }
        internal List<Habitacion> HabitacionesReserva(Reserva reserva)
        {
            var query = String.Format(@"SELECT * FROM GD2C2014.LA_REVANCHA.HABITACION " +
                                        "WHERE HAB_CODIGO IN " +
                                        "(SELECT HABRES_COD_HABITACION FROM GD2C2014.LA_REVANCHA.HABITACION_RESERVA " +
                                        "WHERE HABRES_COD_RESERVA = '{0}')", reserva.identificador);

            DataRowCollection dataRow = SQLUtils.EjecutarConsultaSimple(query, "GD2C2014.LA_REVANCHA.HABITACION");

            return dataRow.ToList<Habitacion>(this.DataRowToHab);
        }
        internal void ReservarHabitacion(Reserva reserva, Habitacion habitacion)
        {
            var query = String.Format(@"INSERT INTO GD2C2014.LA_REVANCHA.HABITACION_RESERVA " +
                                      "(HABRES_COD_RESERVA, HABRES_COD_HABITACION) " +
                                      "VALUES ('{0}', '{1}')", reserva.identificador, habitacion.identificador);

            SQLUtils.EjecutarConsultaConEfectoDeLado(query);
        }
        internal void ActualizarIngreso(Reserva reserva)
        {
            var query = String.Format(@"UPDATE GD2C2014.LA_REVANCHA.ESTADIA " +
                                      "SET EST_FECHA_CHECK_IN = '{0}' " +
                                      "WHERE EST_COD_RESERVA = '{1}'",
                                      DBTypeConverter.ToSQLDateTime(FechaSistema.Instance.fecha), 
                                      reserva.identificador);

            SQLUtils.EjecutarConsultaConEfectoDeLado(query);
        }
        internal void ActualizarEstadoReserva(Reserva reserva, Decimal codigoACambiar)
        {
            var query = String.Format(@"UPDATE GD2C2014.LA_REVANCHA.RESERVA " +
                                    "SET RES_ESTRES_CODIGO = '{0}' " +
                                    "WHERE RES_CODIGO = '{1}'", codigoACambiar, reserva.identificador);

            SQLUtils.EjecutarConsultaConEfectoDeLado(query);
        }
        internal void CancelarReserva(Reserva reserva)
        {
            var query = String.Format(@"DELETE FROM GD2C2014.LA_REVANCHA.HABITACION_RESERVA " +
                                       "WHERE HABRES_COD_RESERVA = '{0}'", reserva.identificador);

            SQLUtils.EjecutarConsultaConEfectoDeLado(query);
        }
        internal void ModificarReserva(Reserva reserva, DateTime fechaDesde, DateTime fechaHasta, Regimen regimen, Decimal codigoModificacion)
        {
            var query = String.Format(@"UPDATE GD2C2014.LA_REVANCHA.RESERVA " +
                                      "SET RES_FECHA_DESDE = '{0}', RES_FECHA_HASTA = '{1}', " +
                                      "RES_HOTREG_REGIMEN = '{2}', RES_ESTRES_CODIGO = '{3}' "+
                                      "WHERE RES_CODIGO = '{4}'", DBTypeConverter.ToSQLDateTime(fechaDesde),
                                      DBTypeConverter.ToSQLDateTime(fechaHasta), regimen.identificador, codigoModificacion,
                                      reserva.identificador);

            SQLUtils.EjecutarConsultaConEfectoDeLado(query);
        }
        internal bool SeRegistroEgreso(Reserva ReservaBuscada)
        {
            var query = String.Format(@"SELECT * FROM GD2C2014.LA_REVANCHA.ESTADIA " +
                                    "WHERE EST_COD_RESERVA = '{0}' AND EST_FECHA_CHECK_OUT IS NOT NULL",
                                    ReservaBuscada.identificador);

            DataRowCollection dataRows = SQLUtils.EjecutarConsultaSimple(query, "GD2C2014.LA_REVANCHA.ESTADIA");

            return dataRows.Count > 0;
        }