<p:scheduler> con paginacion

Scheduler

El scheduler es un componente muy útil para desplegar la información mediante intervalos de fechas.

  <p:schedule id="schedule"  
                                                
     showHeader="true"
     rightHeaderTemplate="month,agendaWeek,agendaDay,basicDay"
     value="#{scheduleBoletasJefeUnidadController.lazyEventModel}"
     widgetVar="myschedule" timeZone="GMT-5" locale="es">
</p:schedule>

Controller

En el ejemplo usamos microservicios con jsonQuery

init

Inicializamos e invocamos los métodos.

en el método loadScheduler, observe que lazyEventModel = new LazyScheduleModel() {

@Override

public void loadEvents(LocalDateTime start, LocalDateTime end) {

nos genera una fecha de inicio y fin para vez que nos desplazamos en el Scheduler de un mes a otro. En este método invocamos al método para filtrar los documentos.

Método para hacer el filtro

Código completo

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.avbravo.asistencia.controller.jefeunidad;

import com.avbravo.asistencia.interfaces.IBoletas;
import com.avbravo.asistenciaclient.entity.Boletas;
import com.avbravo.asistenciaclient.services.BoletasServices;
import com.avbravo.autentificacionclient.entity.Profile;
import com.avbravo.autentificacionclient.entity.User;
import com.avbravo.autentificacionclient.services.DepartamentServices;
import com.avbravo.autentificacionclient.services.UserServices;
import com.avbravo.jmoordb.configuration.JmoordbContext;
import com.avbravo.jmoordb.util.JmoordbDocument;
import com.avbravo.jmoordbutils.DateUtil;

import com.avbravo.jmoordbutils.JmoordbResourcesFiles;
import com.avbravo.jmoordbutils.JsfUtil;
import com.avbravo.jmoordbutils.paginator.IPaginator;
import static com.mongodb.client.model.Filters.and;
import static com.mongodb.client.model.Filters.eq;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.inject.Named;
import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Provider;
import org.bson.Document;
import org.bson.conversions.Bson;
import org.eclipse.microprofile.config.Config;
import org.eclipse.microprofile.config.inject.ConfigProperty;
import org.primefaces.model.DefaultScheduleEvent;
import org.primefaces.model.LazyScheduleModel;
import org.primefaces.model.ScheduleEvent;
import org.primefaces.model.ScheduleModel;

/**
 *
 * @author avbravo
 */
@Named
@ViewScoped

public class ScheduleBoletasJefeUnidadController implements Serializable, IPaginator, IBoletas {
    // <editor-fold defaultstate="collapsed" desc="fields">

    private static final long serialVersionUID = 1L;

    private ScheduleModel lazyEventModel;

    List<Boletas> boletasList = new ArrayList<>();

    User user = new User();
    Profile profile = new Profile();

// </editor-fold>
    // <editor-fold defaultstate="collapsed" desc=" inject">
    @Inject
    JmoordbResourcesFiles rf;
    @Inject
    BoletasServices boletasServices;

    @Inject
    UserServices userServices;

    @Inject
    DepartamentServices departamentServices;

    private String estadounidad;
    private String estadoautoridad;
// </editor-fold>
    // <editor-fold defaultstate="collapsed" desc="Microprofile Config">
    @Inject
    private Config config;
    //otp
    @Inject
    @ConfigProperty(name = "hoursForExpired", defaultValue = "0")
    private Provider<Integer> hoursForExpired;
    @Inject
    @ConfigProperty(name = "minutesForExpired", defaultValue = "0")
    private Provider<Integer> minutesForExpired;
    @Inject
    @ConfigProperty(name = "secondsForExpired", defaultValue = "0")
    private Provider<Integer> secondsForExpired;
    @Inject
    @ConfigProperty(name = "minimumNumberOfCharactersOfThePassword", defaultValue = "9")
    private Provider<Integer> minimumNumberOfCharactersOfThePassword;
    //Applicative
    @Inject
    @ConfigProperty(name = "applicativeId", defaultValue = "0")
    private Provider<Integer> applicativeId;
    @Inject
    @ConfigProperty(name = "applicativeName", defaultValue = " ")
    private Provider<String> applicativeName;
    @Inject
    @ConfigProperty(name = "applicativePath", defaultValue = " ")
    private Provider<String> applicativePath;

    //Row
    @Inject
    @ConfigProperty(name = "rowPage", defaultValue = "0")
    private Provider<Integer> rowPage;

//Redireccionar Captar boletas        
    @Inject
    @ConfigProperty(name = "rolRedireccionarCapartarBoletas", defaultValue = "0")
    private Provider<List<Integer>> rolRedireccionarCapartarBoletas;
//RolColaborador
    @Inject
    @ConfigProperty(name = "rolColaborador", defaultValue = "0")
    private Provider<Integer> rolColaborador;
    //RolCaptador
    @Inject
    @ConfigProperty(name = "rolCaptador", defaultValue = "0")
    private Provider<Integer> rolCaptador;

    //#--Path Images
    @Inject
    @ConfigProperty(name = "pathBaseLinuxAddUserHome", defaultValue = "true")
    private Provider<Boolean> pathBaseLinuxAddUserHome;

    @Inject
    @ConfigProperty(name = "pathLinux", defaultValue = " ")
    private Provider<String> pathLinux;
    @Inject
    @ConfigProperty(name = "pathWindows", defaultValue = " ")
    private Provider<String> pathWindows;      //Debug
    @Inject
    @ConfigProperty(name = "debugmode", defaultValue = "false")
    private Provider<Boolean> debugmode;
    @Inject
    @ConfigProperty(name = "sendemail", defaultValue = "false")
    private Provider<Boolean> sendemail;

    String directoryImagenes = "";
    // </editor-fold> 
    // <editor-fold defaultstate="collapsed" desc=" set/get()">

    public ScheduleModel getLazyEventModel() {
        return lazyEventModel;
    }

    public void setLazyEventModel(ScheduleModel lazyEventModel) {
        this.lazyEventModel = lazyEventModel;
    }

    public String getEstadounidad() {
        return estadounidad;
    }

    public void setEstadounidad(String estadounidad) {
        this.estadounidad = estadounidad;
    }

    public String getEstadoautoridad() {
        return estadoautoridad;
    }

    public void setEstadoautoridad(String estadoautoridad) {
        this.estadoautoridad = estadoautoridad;
    }

    public DepartamentServices getDepartamentServices() {
        return departamentServices;
    }

    public void setDepartamentServices(DepartamentServices departamentServices) {
        this.departamentServices = departamentServices;
    }

    public JmoordbResourcesFiles getRf() {
        return rf;
    }

    public void setRf(JmoordbResourcesFiles rf) {
        this.rf = rf;
    }

    public UserServices getUserServices() {
        return userServices;
    }

    public void setUserServices(UserServices userServices) {
        this.userServices = userServices;
    }

    public List<Boletas> getBoletasList() {
        return boletasList;
    }

    public void setBoletasList(List<Boletas> boletasList) {
        this.boletasList = boletasList;
    }

    public BoletasServices getBoletasServices() {
        return boletasServices;
    }

    public void setBoletasServices(BoletasServices boletasServices) {
        this.boletasServices = boletasServices;
    }

// </editor-fold>
    /**
     * Creates a new instance of AprobacionBoletaController
     */
    public ScheduleBoletasJefeUnidadController() {
    }

    // <editor-fold defaultstate="collapsed" desc="init">
    @PostConstruct
    public void init() {
        try {

            user = (User) JmoordbContext.get("jmoordb_user");
            profile = (Profile) JmoordbContext.get("jmoordb_profile");

            loadSchedule();
        } catch (Exception e) {
            JsfUtil.errorDialog(JsfUtil.nameOfMethod(), e.getLocalizedMessage());
        }

    }

    // </editor-fold>
    // <editor-fold defaultstate="collapsed" desc="void loadSchedule()">
    public void loadSchedule() {
        try {
            lazyEventModel = new LazyScheduleModel() {

                @Override
                public void loadEvents(LocalDateTime start, LocalDateTime end) {
                    filterBoletas(DateUtil.convertLocalDateTimeToJavaDate(start), DateUtil.convertLocalDateTimeToJavaDate(end));
                    if (boletasList == null || boletasList.isEmpty()) {
                        JsfUtil.successMessage(rf.getMessage("warning.nohayboletas"));
                    } else {

                        boletasList.forEach((a) -> {
                            DefaultScheduleEvent event = DefaultScheduleEvent.builder()
                                    .title("(" + a.getIdboleta() + ") " + a.getUser().getName() + " " + a.getTipoboleta() + " " + a.getObservacion())
                                    .startDate(DateUtil.convertToLocalDateTimeViaInstant(a.getFechainicial()))
                                    .endDate(DateUtil.convertToLocalDateTimeViaInstant(a.getFechafinal()))
                                    .description(a.getObservacion() + "(" + a.getEstadounidad().substring(0, 1) + ") (" + a.getEstadoautoridad().substring(0, 1) + ")")
                                    .build();

                            addEvent(event);

                        });
                    }

                }
            };

        } catch (Exception e) {
            System.out.println("loadSchedule " + e.getLocalizedMessage());
            JsfUtil.errorDialog(JsfUtil.nameOfMethod(), e.getLocalizedMessage());
        }
    }// </editor-fold>

    // <editor-fold defaultstate="collapsed" desc="String filterBoletas() ">
    public String filterBoletas(Date start, Date end) {

        try {

            boletasList = new ArrayList<>();

            Bson filter0
                    = JmoordbDocument.createBsonBetweenDateWithoutHours(
                            "fechainicial", start, "fechafinal", end);
            Bson filter = and(filter0, eq("departament.iddepartament", profile.getDepartament().getIddepartament()));

            Document sort = new Document("idboleta", -1);

            Document d = JmoordbDocument.jsonToDocument(JmoordbDocument.bsonToJson(filter));
            System.out.println("Query " + d.toJson());

            boletasList
                    = boletasServices.jsonQueryWithoutPagination(
                            JmoordbDocument.documentToJson(JmoordbDocument.jsonToDocument(JmoordbDocument.bsonToJson(filter))),
                            JmoordbDocument.documentToJson(sort));

        } catch (Exception e) {
            JsfUtil.errorDialog(JsfUtil.nameOfMethod(), e.getLocalizedMessage());
        }
        return "";
    }

    // </editor-fold>
}

Last updated