Notificaciones en la barra

Notificaciones en la barra

Editar top.xhtml

Se debe agregar el outcome

<li class="dropdown messages-menu">
<!--Menu toggle button-->
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<i class="fa fa-calendar"></i>
<span class="label label-success">#{agendaController.numeroNotificacionesDia()}</span>
</a>
<ul class="dropdown-menu">
<li class="header">
<li class="header">#{msg['title.tienenotificaciones']} #{agendaController.numeroNotificacionesDia()} #{msg['title.agendapedientedia']}</li></li>
<li class="footer">
<a href="#">
<p:link value="#{msg['menu.vernotificaciones']}" outcome="/pages/notificaciones/notificacionesagendadia"/>
</a></li>
</ul>
</li>

Al dar clic en ver notificaciones nos lleva a la pagina donde las muestra.

En el xhtml de la pagina notificacionesagendadia.xhtml

<p:dataTable id="agendaDataTable" var="item"
value="#{agendaController.agendaNotificacionesDiaList}"
selectionMode="single"
widgetVar="agendaDataTable"
selection="#{agendaController.selectedAgenda}"
filteredValue="#{agendaController.agendaFiltered}"
rowKey="#{item.clientes.cedula}"
rows="10" paginator="true" paginatorTemplate="{Exporters} {CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5,10,15" emptyMessage="#{msg.nohayregistrosconesecriterio}" reflow="true">
<f:facet name="{Exporters}">
<h:commandLink>
<h:graphicImage library="img" name="excel.png" class="img-circle" alt="excel"/>
<p:dataExporter type="xls" target="agendaDataTable" fileName="agenda" />
</h:commandLink>

<h:commandLink>
<h:graphicImage library="img" name="pdf.png" class="img-circle" alt="pdf"/>

<p:dataExporter type="pdf" target="agendaDataTable" fileName="agenda"/>
</h:commandLink>

<h:commandLink>
<h:graphicImage library="img" name="csv.png" class="img-circle" alt="cvs"/>

<p:dataExporter type="csv" target="agendaDataTable" fileName="agenda" />
</h:commandLink>

<h:commandLink>
<h:graphicImage library="img" name="xml.png" class="img-circle" alt="xml"/>
<p:dataExporter type="xml" target="agendaDataTable" fileName="agenda" />
</h:commandLink>
</f:facet>
<f:facet name="header">
<p:outputPanel>


<div class="searchLoader">
<p:graphicImage name="/img/search-loader.gif"/>
</div>
<input type="text" jsf:id="globalFilter" jsf:onkeyup="PF('agendaDataTable').filter()" class="search" placeholder="#{msg['boton.search']}"/>
</p:outputPanel>
</f:facet>

<p:ajax event="rowSelect" update=":form:agendaDetaill" oncomplete="PF('agendaDialog').show()" />
<p:column headerText="#{msg.cedula}" filterBy="#{item.clientes.cedula}" sortBy="#{item.clientes.cedula}" filterMatchMode="contains" >
<h:outputText value="#{item.clientes.cedula}" />
</p:column>
<p:column headerText="#{msg.nombre}" filterBy="#{item.clientes.nombre}" sortBy="#{item.clientes.nombre}" filterMatchMode="contains">
<h:outputText value="#{item.clientes.nombre}" />
</p:column>
<p:column headerText="#{msg.celular}" filterBy="#{item.clientes.celular}" sortBy="#{item.clientes.celular}" filterMatchMode="contains" >
<h:outputText value="#{item.clientes.celular}" />
</p:column>
<p:column headerText="#{msg.bahia}" filterBy="#{item.bahia.bahia}" sortBy="#{item.bahia.bahia}" filterMatchMode="contains" >
<h:outputText value="#{item.bahia.bahia}" />
</p:column>
<p:column headerText="#{msg.observacion}" filterBy="#{item.observacion}" sortBy="#{item.observacion}" filterMatchMode="contains">
<h:outputText value="#{item.observacion}" />
</p:column>



<p:column headerText="#{msg.fecha}" filterBy="#{item.fechainicio}" sortBy="#{item.fechainicio}" >
<h:outputText value="#{item.fechainicio}">

<f:convertDateTime pattern="dd/MM/yyyy hh:mm:ss" />
</h:outputText>
</p:column>
<p:column headerText="#{msg.notificado}" filterBy="#{item.notificado}" sortBy="#{item.notificado}" filterMatchMode="contains">
<h:outputText value="#{item.notificado}" />
</p:column>
<p:column headerText="#{msg.estatus}" filterBy="#{item.estatus}" sortBy="#{item.estatus}" filterMatchMode="contains">
<h:outputText value="#{item.estatus}" />
</p:column>
<p:column headerText="#{msg.portelefono}" filterBy="#{item.portelefono}" sortBy="#{item.portelefono}" filterMatchMode="contains">
<h:outputText value="#{item.portelefono}" />
</p:column>
<p:column headerText="#{msg.poremail}" filterBy="#{item.poremail}" sortBy="#{item.poremail}" filterMatchMode="contains">
<h:outputText value="#{item.poremail}" />
</p:column>






</p:dataTable>

<p:dialog header="#{msg['agenda.list']}" widgetVar="agendaDialog" width="450" height="250"
modal="true" showEffect="fade" hideEffect="fade" resizable="false" responsive="true">
<p:outputPanel id="agendaDetaill" style="text-align:center;">
<p:panelGrid columns="2" rendered="#{not empty agendaController.selectedAgenda}" layout="grid" styleClass="ui-panelgrid-blank">


<h:outputText value="#{msg.cliente}" style="font-weight: bold"/>
<h:outputText value="#{agendaController.selectedAgenda.clientes.nombre}" />

<h:outputText value="#{msg.descripcion}" style="font-weight: bold"/>
<h:outputText value="#{agendaController.selectedAgenda.observacion}" />

<p:outputLabel for="estatus" value="#{msg.estatus}" />
<p:selectOneMenu id="estatus" disabled="false"
class="fullWidth required"
caseSensitive="true"
filter="true"
value="#{agendaController.selectedAgenda.estatus}"
requiredMessage="#{msg.tipo} #{msg['info.notnull']}" required="true">
<f:selectItem itemLabel="#{msg['label.agendado']}" itemValue="Agendado" />
<f:selectItem itemLabel="#{msg['label.enespera']}" itemValue="En espera" />
<f:selectItem itemLabel="#{msg['label.enbahia']}" itemValue="En bahia" />
<f:selectItem itemLabel="#{msg['label.noasistio']}" itemValue="No asistio" />
<f:selectItem itemLabel="#{msg['label.terminado']}" itemValue="Terminado" />



</p:selectOneMenu>
<p:outputLabel for="notificado" value="#{msg.notificado}" />
<p:selectOneMenu id="notificado" disabled="false"
class="fullWidth required"
caseSensitive="true"
filter="true"
value="#{agendaController.selectedAgenda.notificado}"
requiredMessage="#{msg.tipo} #{msg['info.notnull']}" required="true">
<f:selectItem itemLabel="#{msg['label.no']}" itemValue="no" />
<f:selectItem itemLabel="#{msg['label.yes']}" itemValue="si" />
</p:selectOneMenu>
<p:outputLabel for="portelefono" value="#{msg.portelefono}" />
<p:selectOneMenu id="portelefono" disabled="false"
class="fullWidth required"
caseSensitive="true"
filter="true"
value="#{agendaController.selectedAgenda.portelefono}"
requiredMessage="#{msg.tipo} #{msg['info.notnull']}" required="true">
<f:selectItem itemLabel="#{msg['label.no']}" itemValue="no" />
<f:selectItem itemLabel="#{msg['label.yes']}" itemValue="si" />
</p:selectOneMenu>
<p:outputLabel for="poremail" value="#{msg.poremail}" />
<p:selectOneMenu id="poremail" disabled="false"
class="fullWidth required"
caseSensitive="true"
filter="true"
value="#{agendaController.selectedAgenda.poremail}"
requiredMessage="#{msg.tipo} #{msg['info.notnull']}" required="true">
<f:selectItem itemLabel="#{msg['label.no']}" itemValue="no" />
<f:selectItem itemLabel="#{msg['label.yes']}" itemValue="si" />
</p:selectOneMenu>

<p:commandButton id="btn2" value="#{msg['boton.edit']}"
class="btnn btnn-primary"
icon="fa fa-edit Fs14 White" style="max-width:150px;"
oncomplete="PF('agendaDialog').hide()"
title="#{msg['boton.edit']}"
update=":form:msgs,:form:agendaDataTable"
action="#{agendaController.editNotificaciones(agendaController.selectedAgenda)}"
>
<f:param name="id" value="#{agendaController.selectedAgenda.clientes.cedula}"/>
</p:commandButton>


</p:panelGrid>
</p:outputPanel>
</p:dialog>

</div>


</h:panelGroup>

</h:form>

Al dar clic se muestra el dialogo

Editar AgendaController.java

Definir un list

   List<Agenda> agendaNotificacionesDiaList;

y agregar los métodos

 /**
     * 
     * @return totaldenotificaciones del dia
     */
    public Integer numeroNotificacionesDia() {

        try {
            return getAgendaNotificacionesDiaList().size();


        } catch (Exception e) {
            JsfUtil.errorMessage("init() " + e.getLocalizedMessage());
            LOG.warning("init() " + e.getLocalizedMessage());
        }
        return 0;
    }



 public List<Agenda> getAgendaNotificacionesDiaList() {
        try {

            agendaNotificacionesDiaList = agendaFacade.findBy("Notificado", "no", new Document("Fechainicio", -1));
          fechaactual = JsfUtil.getFechaActual();
            Integer anio = JsfUtil.getAnioDeUnaFecha(fechaactual);
            Integer mes = JsfUtil.getMesDeUnaFecha(fechaactual);
            Integer dia = JsfUtil.getDiaDeUnaFecha(fechaactual);
            System.out.println("Anio " + anio + " Mes " + mes + " dia " + dia);

            Date primerdia = JsfUtil.getDateFirtsOfMonth(anio, mes);
            List<Agenda> list = new ArrayList<>();
            for (Agenda a : agendaNotificacionesDiaList) {
                Integer myanio = JsfUtil.getAnioDeUnaFecha(a.getFechainicio());
                Integer mymes = JsfUtil.getMesDeUnaFecha(a.getFechainicio());
                Integer mydia = JsfUtil.getDiaDeUnaFecha(a.getFechainicio());

                if (anio.equals(myanio)) {
                    if (mes.equals(mymes)) {
                        if (dia.equals(mydia)) {
                       System.out.println("---> fecha del dia es "+a.getFechainicio());
                            list.add(a);
                        }else{
                            System.out.println("El dia "+dia + " es diferente del dia "+mydia);
                        }
                    } else {
                        System.out.println("el mes " + mes + " es diferente de " + mymes);
                    }
                } else {
                    System.out.println("El año " + anio + " es diferente de " + myanio);
                }
            }

            agendaNotificacionesDiaList = list;
        } catch (Exception e) {
            JsfUtil.errorMessage("getAgendaNotificacionesDiaList() " + e.getLocalizedMessage());
        }
        return agendaNotificacionesDiaList;
    }

Last updated