/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package entity.reports; import entity.building.Homes; import entity.system.Users; import op.tools.SYSTools; import org.joda.time.LocalDate; import javax.persistence.EntityManager; import javax.persistence.Query; import java.text.DateFormat; import java.util.Collections; /** * @author tloehr */ public class NR2UserTools { public static boolean containsUser(EntityManager em, NReport nReport, Users user) { Query query = em.createQuery(" " + " SELECT count(u) FROM NReport n JOIN n.usersAcknowledged u " + " WHERE n = :nreport AND u.user = :user "); query.setParameter("nreport", nReport); query.setParameter("user", user); Long count = (Long) query.getSingleResult(); return count.longValue() > 0; } public static boolean containsUser(NReport nReport, Users user) { boolean contains = false; for (NR2User nr2User : nReport.getUsersAcknowledged()) { contains = nr2User.getUser().equals(user); if (contains) break; } return contains; } public static String getAsHTML(NReport nReport) { String result = ""; result += "<h2 id=\"fonth2\" >" + SYSTools.xx("nursingrecords.handover") + "</h2>"; if (!nReport.getUsersAcknowledged().isEmpty()) { result += "<h3 id=\"fonth3\" >" + SYSTools.xx("nursingrecords.handover.ListOfUsersAcknowledged") + "</h3>"; result += NReportTools.getAsHTML(nReport, null); result += "<table id=\"fonttext\" border=\"1\" cellspacing=\"0\"><tr>" + "<th>" + SYSTools.xx("misc.msg.DateAndTime") + "</th><th>" + SYSTools.xx("misc.msg.Users") + "</th></tr>"; Collections.sort(nReport.getUsersAcknowledged()); for (NR2User n2u : nReport.getUsersAcknowledged()) { result += "<tr>"; result += "<td valign=\"top\">" + DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.SHORT).format(n2u.getPit()) + "</td>"; result += "<td valign=\"top\">" + n2u.getUser().getFullname() + "</td>"; result += "</tr>"; } result += "</table>"; } else { result += "<i>" + SYSTools.xx("misc.msg.currentlynoentry") + "</i>"; } return result; } /** * Tells, if there are open reports for a specific day... * https://github.com/tloehr/Offene-Pflege.de/issues/43 * * @param day * @param user * @param home * @return */ public static boolean hasOpenReports(LocalDate day, Users user, Homes home) { boolean openReports = false; for (NReport nReport : NReportTools.getNReports4Handover(day, home)) { openReports = !containsUser(nReport, user); if (openReports) break; } return openReports; } }