com.digitald4.iis.servlet.DashboardServlet.java Source code

Java tutorial

Introduction

Here is the source code for com.digitald4.iis.servlet.DashboardServlet.java

Source

package com.digitald4.iis.servlet;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.EntityManager;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.joda.time.DateTime;
import org.json.JSONObject;

import com.digitald4.iis.model.GenData;
import com.digitald4.common.component.Notification;
import com.digitald4.common.servlet.ParentServlet;
import com.digitald4.common.tld.LargeCalTag;
import com.digitald4.iis.model.Appointment;
import com.digitald4.iis.model.Nurse;
import com.digitald4.iis.model.Patient;

public class DashboardServlet extends ParentServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException {
        try {
            if (!checkLoginAutoRedirect(request, response))
                return;
            EntityManager entityManager = getEntityManager();
            for (GenData gd : GenData.values()) {
                gd.get(entityManager);
            }
            String action = request.getParameter("action");
            if (action != null && action.equalsIgnoreCase("cal")) {
                processCalendarRequest(request, response);
                return;
            }
            PendingAssServlet.setupTable(entityManager, request);
            PendingIntakeServlet.setupTable(entityManager, request);
            PendingReviewServlet.setupTable(entityManager, request);
            PendingPaymentServlet.setupTable(entityManager, request);
            BillableServlet.setupTable(entityManager, request);
            UnpaidInvoicesServlet.setupTable(request);
            LicenseAlertServlet.setupTable(entityManager, request);
            UnconfirmedAppsServlet.setupTable(request);
            request.setAttribute("upComingUnconfirmed", Appointment.getUpComingUnconfirmed(entityManager));
            DateTime now = DateTime.now();
            request.setAttribute("calendar",
                    getCalendar(getEntityManager(), now.getYear(), now.getMonthOfYear()).getOutput());
            getLayoutPage(request, "/WEB-INF/jsp/dashboard.jsp").forward(request, response);
        } catch (Exception e) {
            throw new ServletException(e);
        }
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException {
        doGet(request, response);
    }

    private void processCalendarRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException {
        int year = Integer.parseInt(request.getParameter("year"));
        int month = Integer.parseInt(request.getParameter("month"));
        LargeCalTag cal = getCalendar(getEntityManager(), year, month);
        JSONObject json = new JSONObject();
        try {
            json.put("valid", true).put("html", cal.getOutput());
            response.setContentType("application/json");
            response.setHeader("Cache-Control", "no-cache, must-revalidate");
            response.getWriter().println(json);
        } catch (Exception e) {
            throw new ServletException(e);
        }
    }

    public static LargeCalTag getCalendar(EntityManager entityManager, int year, int month) {
        LargeCalTag cal = new LargeCalTag();
        cal.setTitle("Calendar");
        cal.setYear(year);
        cal.setMonth(month);
        cal.setEvents(Appointment.getAppointments(entityManager, year, month));
        List<Notification<?>> notifications = new ArrayList<Notification<?>>();
        notifications.addAll(Nurse.getAllNotifications(entityManager, year, month));
        notifications.addAll(Patient.getAllNotifications(entityManager, year, month));
        cal.setNotifications(notifications);
        return cal;
    }
}