1.5<jmoordbjsf:searchBetweenDate> Busquedas entre fechas.

Para realizar las búsquedas entre fechas usamos el componente <jmoordbjsf:searchBetweenDate. No necesitamos crear el método searchBy() dentro del Controller si los campos de fechas estan en el mismo entity o son definidos en la clase que no tienen que ver con el entity.

En el método move() se realiza la verificación en base a los valores del entity.

   <jmoordbjsf:searchBetweenDate 
                    renderedMove="true"
                    labelDesde="#{msg['field.fechainicio']}"
                    valueDesde="#{secretarioAdministrativoController.fechaDesde}"
                    labelHasta="#{msg['field.fechafin']}"
                    valueHasta="#{secretarioAdministrativoController.fechaHasta}"
                    renderedList="true"  
                    search="#{secretarioAdministrativoController.searchBy('secretarioadministrativo','_betweendates',secretarioAdministrativoController.solicitud)}"
                    />

Definimos los atributos fechaDesde, fechaHasta.

 private Date fechaDesde = new Date();
    private Date fechaHasta = new Date();

Hacemos la validacion

  case "_betweendates":

                    solicitudList = solicitudRepository.filterBetweenDatePaginationWithoutHours("activo", "si",
                            "fechahorapartida", fechaDesde,
                            "fechahoraregreso", fechaHasta,
                            page, rowPage, new Document("idsolicitud", -1));
                    break;

Método move()

    @Override
    public void move(Integer page) {
        try {

            this.page = page;
            solicitudDataModel = new SolicitudDataModel(solicitudList);

            Usuario jmoordb_user = (Usuario) JmoordbContext.get("jmoordb_user");

            String descripcion = jmoordb_user.getUnidad().getIdunidad();
            Document doc = new Document("activo", "si");

            switch (getSearch()) {
                case "_init":
                case "_autocomplete":

                    solicitudList = solicitudRepository.findPagination(doc, page, rowPage, new Document("idsolicitud", -1));

                    break;

                case "idsolicitud":
                    if (getValueSearch() != null) {
                        solicitudList = solicitudRepository.findPagination(doc, page, rowPage, new Document("idsolicitud", -1));
                    } else {
                        solicitudList = solicitudRepository.findPagination(doc, page, rowPage);
                    }

                    break;

                case "estatus":
                    Estatus estatus = new Estatus();
                    estatus = (Estatus) getValueSearch() ;
                    doc.append("estatus.idestatus", estatus.getIdestatus());
                    solicitudList = solicitudRepository.findPagination(doc, page, rowPage, new Document("idsolicitud", -1));

                    break;

                case "_betweendates":

                    solicitudList = solicitudRepository.filterBetweenDatePaginationWithoutHours("activo", "si",
                            "fechahorapartida", fechaDesde,
                            "fechahoraregreso", fechaHasta,
                            page, rowPage, new Document("idsolicitud", -1));
                    break;
                case "vistobuenocoordinador":

                    String vistoBueno = (String) getValueSearch() ;
                    doc = new Document("activo", "si");
                    doc.append("vistoBueno.aprobado", vistoBueno);
                    solicitudList = solicitudRepository.findPagination(doc, page, rowPage, new Document("idsolicitud", -1));

                    break;
                case "vistobuenosecretarioadministrativo":

                    String vistoBuenoSecretarioAdministrativo = (String) getValueSearch() ;
                    doc = new Document("activo", "si");
                    doc.append("vistoBuenoSecretarioAdministrativo.aprobado", vistoBuenoSecretarioAdministrativo);
                    solicitudList = solicitudRepository.findPagination(doc, page, rowPage, new Document("idsolicitud", -1));

                    break;
                case "porsolicitado":

                    Usuario solicita = (Usuario)getValueSearch() ;
                    doc = new Document("activo", "si");
                    doc.append("usuario.0.username", solicita.getUsername());
                    solicitudList = solicitudRepository.findPagination(doc, page, rowPage, new Document("idsolicitud", -1));

                    break;
                case "porresponsable":

                    Usuario responsable = (Usuario) getValueSearch() ;
                    doc = new Document("activo", "si");
                    doc.append("usuario.1.username", responsable.getUsername());
                    solicitudList = solicitudRepository.findPagination(doc, page, rowPage, new Document("idsolicitud", -1));

                    break;
                default:

                    solicitudList = solicitudRepository.findPagination(doc, page, rowPage, new Document("idsolicitud", -1));

                    break;
            }

            solicitudDataModel = new SolicitudDataModel(solicitudList);

        } catch (Exception e) {
            errorServices.errorMessage(nameOfClass(), nameOfMethod(), e.getLocalizedMessage());

        }

    }

El método searchBy esta definido dentro de Jmoordb en la interface IController.

El realiza todas las operaciones, en casos especiales usted desee escribir su propio método searchBy() debe sobreescribir.

 @Override
    public String searchBy(String field, Object value) {
    setSearchAndValue(field, value);
        return "";
    }

Last updated