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.
Copy <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.
Copy private Date fechaDesde = new Date();
private Date fechaHasta = new Date();
Copy case "_betweendates":
solicitudList = solicitudRepository.filterBetweenDatePaginationWithoutHours("activo", "si",
"fechahorapartida", fechaDesde,
"fechahoraregreso", fechaHasta,
page, rowPage, new Document("idsolicitud", -1));
break;
Copy @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 realiza todas las operaciones, en casos especiales usted desee escribir su propio método searchBy() debe sobreescribir.
Copy @Override
public String searchBy(String field, Object value) {
setSearchAndValue(field, value);
return "";
}