Autocomplete con rangos de fechas excluyendo el registro actual

Autocomplete disponibles en base a rango de dos fechas seleccionadas e excluir la ediciòn excluyendo el mismo registro

Video:

https://youtu.be/j_PWFAbPBsg

Necesitamos filtrar los entity para un autocomplete en base a la disponibilidad de datos que se encuentren disponibles entre dos fechas.

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

Deseamos que al seleccionar la fecha y hora de inicio y de fin desde <p:calendar>, mostrar en un autocomplete los vehículos disponibles entre ese intervalo.

Cuando tenemos un autocomplete basado en filtro de fechas, muchas veces necesitamos editar los datos, y comom el filtro que se aplica en el ejemplo para vehículos nunca devolverá el vehículo seleccionado previamente necesitamos agregarlo a la lista para que el usuario puede trabajar con el , si por error lo cambia a otro vehículo.

Contamos con una lista, seleccionamos editar.

  • Se usa para formularios de edición de fecha hora que estan en rangos

  • Al cambiar la fecha y hora tener presente que puede caer en otro rango

  • Por ejemplo si editamos las fechas y horas del ferrari, que esta entre 16.00 y 23.00 si tratamos de editar el segundo registro colocando lo en un intervalo que este entre 1.50 7 15.00 horas no lo pemitira

  • El formulario permite editar fechas y vehiculos y conductores validando el rango.

Formulario para edicion

  • Si observa el viaje seleccionado tenia el vehiculo Ferrary

  • Cuando se aplica el filtro del autocomplete no lo devolvería, por lo cual hay que agregarlo en el método public List<Vehiculo> completeVehiculo(String query)

  • Debemos definir un nuevo atributo _editable

  • Crear un atributo Vehiculo vehiculoSelected que contendra el vehiiculo original.

  • En el init() lo inicializamos dependiendo de la condición

  • En el método completeVehiculo() validamos si es true o false.

Los autocomplete deben excluir los registros actuales

Componente

ViajeController.java

  • Definir atributo

handleSelect()

init()

Método completeVehiculo()

  • Verificamos si hay cambios en fechas horas

Verifica si cambio la fecha y hora

isVehiculoActivoDisponible()

isVehiculoActivoDisponibleExcluyendoMismoViaje(Vehiculo vehiculo)

  • Busca el vehiculo y excluye el actual

save()

edit()

  • Validar si cambio la fecha y hora

ViajesServices.java

vehiculoDisponible()

  • Verifica si esta disponible el vehiculo

vehiculoDisponibleExcluyendoMismoViaje()

  • Verifica si esta disponible excluyendo el mismo viaje para edición.

Last updated

Was this helpful?