Cuando deseamos usar un <p:schedule> con dialogos debemos usar <p:commandButton>
y agregar un <b:growl> al dialogo, para que este no se cierre y se muestren los mensajes.
al dar clic en cualquier fecha
cuando se da clic en el botón editar y no hemos colocado los datos requeridos se muestra el growl con los mensajes.
Componente schedule
<p:schedule id="schedule"
value="#{calendarioSolicitudController.eventModel}" widgetVar="myschedule" timeZone="GMT-5" locale="es">
<p:ajax event="eventSelect" listener="#{calendarioSolicitudController.onEventSelect}" update="eventDetails" oncomplete="PF('eventDialog').show();" />
<!--<p:ajax event="dateSelect" listener="#{calendarioSolicitudController.onDateSelectCalendar}" update="newDetails" oncomplete="PF('newDialog').show();" />-->
</p:schedule>
Controller
private ScheduleModel eventModel;
private ScheduleModel lazyEventModel;
private ScheduleEvent event = new DefaultScheduleEvent(); @PostConstruct
public void init() {
try {
cargarSchedule();
} catch (Exception e) {
JsfUtil.errorMessage("init() " + e.getLocalizedMessage());
}
}
public void cargarSchedule() {
try {
Document doc = new Document("tipovehiculo.idtipovehiculo", tipovehiculo.getIdtipovehiculo()).append("estatus.idestatus", estatus.getIdestatus()).append("activo", "si");
solicitudList = solicitudRepository.findBy(doc, new Document("fecha", 1));
eventModel = new DefaultScheduleModel();
if (!solicitudList.isEmpty()) {
solicitudList.forEach((a) -> {
eventModel.addEvent(
new DefaultScheduleEvent("# " + a.getIdsolicitud() + " Mision:" + a.getMision() + " Responsable: " + a.getUsuario().get(1).getNombre() + " " + a.getEstatus().getIdestatus(), a.getFechahorapartida(), a.getFechahoraregreso())
);
});
}
} catch (Exception ex) {
JsfUtil.errorMessage("cargarSchedule() " + ex.getLocalizedMessage());
}
}
public void onEventSelect(SelectEvent selectEvent) {
try {
// esnuevo = false;
viajesSelected = new Viajes();
esDocente = false;
event = (ScheduleEvent) selectEvent.getObject();
esAprobado = false;
String title = event.getTitle();
Integer i = title.indexOf("M");
Integer idsolicitud = 0;
if (i != -1) {
idsolicitud = Integer.parseInt(title.substring(1, i).trim());
}
solicitud.setIdsolicitud(idsolicitud);
Optional<Solicitud> optional = solicitudRepository.findById(solicitud);
if (optional.isPresent()) {
solicitud = optional.get();
solicita = solicitud.getUsuario().get(0);
responsable = solicitud.getUsuario().get(1);
facultadList = solicitud.getFacultad();
unidadList = solicitud.getUnidad();
carreraList = solicitud.getCarrera();
solicitudSelected = solicitud;
estatusSelected = solicitud.getEstatus();
esDocente = solicitud.getTiposolicitud().getIdtiposolicitud().equals("DOCENTE");
if (solicitud.getEstatus().getIdestatus().equals("APROBADO")) {
esAprobado = true;
List<Viajes> list = new ArrayList<>();
list = viajesRepository.findBy(new Document("solicitud.idsolicitud", solicitud.getIdsolicitud()));
if (list.isEmpty()) {
JsfUtil.warningMessage(rf.getMessage("warning.notexitsviajeconesasolicitud"));
} else {
viajesSelected = list.get(0);
}
}else{
viajesSelected.setActivo("si");
viajesSelected.setFechahorainicioreserva(solicitud.getFechahorapartida());
viajesSelected.setFechahorafinreserva(solicitud.getFechahoraregreso());
}
}
} catch (Exception e) {
JsfUtil.errorMessage("onEventSelect() " + e.getLocalizedMessage());
}
}
@Override
public String edit() {
try {
if (esAprobado) {
if (JsfUtil.fechaMayor(viajes.getFechahorainicioreserva(), solicitud.getFechahorapartida())) {
JsfUtil.warningDialog(rf.getAppMessage("warning.view"), rf.getMessage("warning.fechainicioreservamayorfechapartida"));
return "";
}
if (JsfUtil.fechaMenor(viajes.getFechahorafinreserva(), solicitud.getFechahoraregreso())) {
JsfUtil.warningDialog(rf.getAppMessage("warning.view"), rf.getMessage("warning.fechafinreservamenorfecharegreso"));
return "";
}
if(solicitud.getNumerodevehiculos() != vehiculoList.size()){
JsfUtil.warningDialog(rf.getAppMessage("warning.view"), rf.getMessage("warning.numerodevehiculosnoigualvehiculos"));
return "";
}
if(conductorList.size() != vehiculoList.size()){
JsfUtil.warningDialog(rf.getAppMessage("warning.view"), rf.getMessage("warning.conductoresnoigualvehiculos"));
return "";
}
viajes = viajesSelected;
Integer idviaje = autoincrementableTransporteejbServices.getContador("viajes");
viajes.setActivo("si");
viajes.setIdviaje(idviaje);
viajes.setConductor(conductorList);
viajes.setVehiculo(vehiculoList);
viajes.setSolicitud(solicitud);
viajes.setNumerovehiculos(solicitud.getNumerodevehiculos());
viajes.setUserInfo(userInfoServices.generateListUserinfo(loginController.getUsername(), "create"));
if (viajesRepository.save(viajes)) {
revisionHistoryTransporteejbRepository.save(revisionHistoryServices.getRevisionHistory(viajes.getIdviaje().toString(), loginController.getUsername(),
"create", "viajes", viajesRepository.toDocument(viajes).toString()));
JsfUtil.successMessage(rf.getAppMessage("info.save"));
} else {
JsfUtil.successMessage("save() " + viajesRepository.getException().toString());
return "";
}
}
solicitud.setEstatus(estatusSelected);
revisionHistoryTransporteejbRepository.save(revisionHistoryServices.getRevisionHistory(solicitud.getIdsolicitud().toString(), loginController.getUsername(),
"update", "solicitud", solicitudRepository.toDocument(solicitud).toString()));
solicitudRepository.update(solicitud);
JsfUtil.infoDialog(rf.getAppMessage("info.view"), rf.getAppMessage("info.update"));
} catch (Exception e) {
JsfUtil.errorMessage("edit()" + e.getLocalizedMessage());
}
return "";
}
Formulario
<p:dialog widgetVar="eventDialog" header="#{msg['dialogo.solicitud']}"width="650" height="450"
styleClass="customDialog"
responsive="true"
showEffect="clip" hideEffect="clip">
<b:panelGrid id="eventDetails" colSpans="2,10" size="xs" >
<p:outputLabel value="#{msg['field.idsolicitud']}" />
<p:outputLabel value="#{calendarioSolicitudController.solicitud.idsolicitud}" id="idsolicitud" />
<p:outputLabel value="#{msg['field.fechapartida']}" />
<p:fieldset >
<p:calendar disabled="true" size="8"
style="background-color: grey;"
pattern="dd/MM/yyyy" value="#{calendarioSolicitudController.solicitud.fechahorapartida}" />
<p:outputLabel value="#{msg['field.horapartida']}" />
<p:calendar disabled="true"
size="8"
pattern="HH:mm:ss a" value="#{calendarioSolicitudController.solicitud.fechahorapartida}" />
</p:fieldset>
<p:outputLabel value="#{msg['field.lugarpartida']}" />
<p:outputLabel value="#{calendarioSolicitudController.solicitud.lugarpartida}" id="lugarpartida" />
<p:outputLabel value="#{msg['field.fecharegreso']}" />
<p:fieldset >
<p:calendar disabled="true" size="8"
style="background-color: grey;"
pattern="dd/MM/yyyy" value="#{calendarioSolicitudController.solicitud.fechahoraregreso}" />
<p:outputLabel value="#{msg['field.horaregreso']}" />
<p:calendar disabled="true"
size="8"
pattern="HH:mm:ss a" value="#{calendarioSolicitudController.solicitud.fechahoraregreso}" />
</p:fieldset>
<p:outputLabel value="#{msg['field.numerodevehiculos']}" />
<p:outputLabel value="#{calendarioSolicitudController.solicitud.numerodevehiculos}" />
<b:commandButton value="#{app['button.close']}"
iconAwesome="fa-close"
oncomplete="PF('eventDialog').hide();"/>
<p:commandButton
rendered="#{applicationMenu.menuBarAdministracion}"
value="#{app['button.edit']}"
update="growl"
oncomplete="PF('myschedule').update(); "
actionListener="#{calendarioSolicitudController.edit}"
/>
<b:growl id="growl"/>
</b:panelGrid>
</p:dialog>
Comments