Disponible entre dos fechas en rangos de fechas inicial y final

Encontrar si esta disponible entre dos fechas en rangos de fechas inicial y final con filtro adicional

En algunas ocasiones necesitamos hacer búsquedas en rangos de fechas (inicial y final) adicional de un filtro para determinar si hay disponibilidad de asignarlo en ese intervalo.

Método

Descripción

Boolean isAvailableBetweenDateHour(Bson filter, String namefieldOfStart, Date valueStart, String namefieldOfEnd, Date valueEnd)

Devuelve true si no hay registros con la condición fechay hora de inicio y fin y el filtro que se pasa como parámetro

List<T> notAvailableBetweenDateHour(Bson filter, String namefieldOfStart, Date valueStart, String namefieldOfEnd, Date valueEnd)

Devuelve una lista de los elementos que estan en ese rango de fechas y que cumplan la condición del filtro que se pasa como parámetro

Tablero con los condiciones para determinar si esta disponible.

Esta disponible en las condiciones: a, m

Ejemplo

Formulario

Las reglas que usaremos para validar si esta disponible son

Controller

 if (!viajeServices.vehiculoDisponible(viaje)) {
                JsfUtil.warningMessage("El vehiculo no esta disponible en ese rango de fecha y hora"));
                return null;
            }

ViajesServices.java

  • Definimos el metodo vehiculoDisponible que recibe un entity de tipo viajes que contiene las fechas de inicio, fin y el entity vehiculo, para que realice la búsqueda.

  public Boolean vehiculoDisponible(Viaje viajes) {
        try {
            //Vehiculos en viajes

           return repository.isAvailableBetweenDateHour(eq("vehiculo.idvehiculo", viajes.getVehiculo().getIdvehiculo()),
                   "fechahorainicioreserva", viajes.getFechahorainicioreserva(), "fechahorafinreserva", viajes.getFechahorafinreserva());

        } catch (Exception e) {
            JsfUtil.errorDialog("vehiculoDisponible() ", e.getLocalizedMessage().toString());
        }
        return false;
    }

Last updated