com.rr.wabshs.ui.dashboard.dashboardController.java Source code

Java tutorial

Introduction

Here is the source code for com.rr.wabshs.ui.dashboard.dashboardController.java

Source

/*
 * 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.rr.wabshs.ui.dashboard;

import com.registryKit.calendar.calendarEventTypes;
import com.registryKit.calendar.calendarEvents;
import com.registryKit.calendar.calendarManager;
import com.registryKit.dashboard.dashboardManager;
import com.registryKit.hierarchy.hierarchyManager;
import com.registryKit.hierarchy.programHierarchyDetails;
import com.registryKit.user.User;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.json.simple.JSONArray;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

/**
 *
 * @author chadmccue
 */
@Controller
@RequestMapping("/dashboard")
public class dashboardController {

    private static final Integer moduleId = 15;

    @Autowired
    private dashboardManager dashboardmanager;

    @Autowired
    private hierarchyManager hierarchymanager;

    @Autowired
    private calendarManager calendarmanager;

    @Value("${programId}")
    private Integer programId;

    @Value("${programName}")
    private String registryName;

    @Value("${topSecret}")
    private String topSecret;

    @RequestMapping(value = "", method = RequestMethod.GET)
    public ModelAndView dashboardHome(HttpSession session) throws Exception {

        ModelAndView mav = new ModelAndView();
        mav.setViewName("/dashboard");

        /* Get a list of completed surveys the logged in user has access to */
        User userDetails = (User) session.getAttribute("userDetails");

        Integer userId = 0;
        if (userDetails.getRoleId() == 2) {
        } else {
            userId = userDetails.getId();
        }

        List<Object[]> entities = hierarchymanager.getProgramHierarchyTitles(programId);

        List<programHierarchyDetails> level1Items = hierarchymanager
                .getProgramHierarchyItems((Integer) entities.get(0)[0], userId);
        mav.addObject("level1Items", level1Items);

        mav.addObject("level1Name", entities.get(0)[1]);
        mav.addObject("level2Name", entities.get(1)[1]);
        mav.addObject("level3Name", entities.get(2)[1]);

        if (null == session.getAttribute("selectedEntity1") || "".equals(session.getAttribute("selectedEntity1"))) {
            session.setAttribute("selectedEntity1", level1Items.get(0).getId());
        }

        mav.addObject("savedSearchEntity1", session.getAttribute("selectedEntity1"));
        mav.addObject("savedSearchEntity2", session.getAttribute("selectedEntity2"));
        mav.addObject("savedSearchEntity3", session.getAttribute("selectedEntity3"));

        //List<calendarEventTypes> eventTypes = calendarManager.getEventTypeColors(0);
        List<calendarEventTypes> eventTypes = calendarmanager.getEventCategories(programId);
        mav.addObject("eventTypes", eventTypes);

        return mav;
    }

    /**
     * The 'getGenderValues.do' GET request will return the view containing the table that will list
     * the gender values found for the selected Entities and project.
     * @return
     * @throws Exception 
     */
    @RequestMapping(value = "/getGenderValues.do", method = RequestMethod.GET)
    public @ResponseBody ModelAndView genderValues(HttpSession session,
            @RequestParam(value = "selectedEntity1", required = true) Integer selectedEntity1,
            @RequestParam(value = "selectedEntity2", required = true) Integer selectedEntity2,
            @RequestParam(value = "selectedEntity3", required = true) Integer selectedEntity3) throws Exception {

        session.setAttribute("selectedEntity1", selectedEntity1);
        session.setAttribute("selectedEntity2", selectedEntity2);
        session.setAttribute("selectedEntity3", selectedEntity3);

        ModelAndView mav = new ModelAndView();
        mav.setViewName("/dashboard/widgets/gender/inc_genderValues");

        /* Get Gender Values */
        List genderValues = dashboardmanager.getGenderValuesList(programId, selectedEntity1, selectedEntity2,
                selectedEntity3);
        mav.addObject("genderValues", genderValues);

        return mav;
    }

    /**
     * The 'getGenderValuesJSON.do' GET request will return the JSON containing the gender values that will populate 
     * the pie chart found for the selected Entities and project.
     * @return
     * @throws Exception 
     */
    @RequestMapping(value = "/getGenderValuesJSON.do", method = RequestMethod.GET)
    public @ResponseBody JSONArray getGenderValuesJSON(HttpSession session, HttpServletRequest request,
            @RequestParam(value = "selectedEntity1", required = true) Integer selectedEntity1,
            @RequestParam(value = "selectedEntity2", required = true) Integer selectedEntity2,
            @RequestParam(value = "selectedEntity3", required = true) Integer selectedEntity3) throws Exception {

        JSONArray eventsJSON = dashboardmanager.getGenderValuesJSON(programId, selectedEntity1, selectedEntity2,
                selectedEntity3);

        return eventsJSON;

    }

    /**
     * The 'getUpcomingEvents.do' GET request will return the table view for any upcoming events.
     * @return
     * @throws Exception 
     */
    @RequestMapping(value = "/getUpcomingEvents.do", method = RequestMethod.GET)
    public @ResponseBody ModelAndView upcomingEvents(HttpSession session,
            @RequestParam(value = "eventCategory", required = false) String eventCategory) throws Exception {

        ModelAndView mav = new ModelAndView();
        mav.setViewName("/dashboard/widgets/events/inc_upcomingEvents");

        /* Get a list of completed surveys the logged in user has access to */
        User userDetails = (User) session.getAttribute("userDetails");

        Calendar today = Calendar.getInstance();
        String from = new SimpleDateFormat("yyyy-MM-dd").format(today.getTime());

        today.add(Calendar.MONTH, 3);
        String to = new SimpleDateFormat("yyyy-MM-dd").format(today.getTime());

        /* Get Gender Values */
        List<calendarEvents> upcomingEvents = calendarmanager.getEvents(programId, from, to, eventCategory,
                userDetails);

        if (upcomingEvents != null && upcomingEvents.size() > 0) {
            calendarEventTypes eventTypeObject;
            for (calendarEvents event : upcomingEvents) {
                eventTypeObject = calendarmanager.getEventType(event.getEventTypeId());
                event.setEventColor(eventTypeObject.getEventTypeColor());
            }
        }

        mav.addObject("upcomingEvents", upcomingEvents);

        return mav;
    }

}