com.infotree.qliktest.admin.web.controller.ReportsController.java Source code

Java tutorial

Introduction

Here is the source code for com.infotree.qliktest.admin.web.controller.ReportsController.java

Source

package com.infotree.qliktest.admin.web.controller;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.TimeZone;
import java.util.Map.Entry;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.validation.Valid;

import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.infotree.qliktest.admin.entity.referencedata.AuditLogRecord;
import com.infotree.qliktest.admin.entity.referencedata.DashBoardReports;
import com.infotree.qliktest.admin.entity.referencedata.Module;
import com.infotree.qliktest.admin.entity.referencedata.ModulePermissions;
import com.infotree.qliktest.admin.entity.referencedata.ModuleReports;
import com.infotree.qliktest.admin.entity.referencedata.Permissions;
import com.infotree.qliktest.admin.entity.referencedata.Project;
import com.infotree.qliktest.admin.entity.referencedata.ProjectModule;
import com.infotree.qliktest.admin.entity.referencedata.ProjectTenant;
import com.infotree.qliktest.admin.entity.referencedata.ProjectsReports;
import com.infotree.qliktest.admin.entity.referencedata.Role;
import com.infotree.qliktest.admin.entity.referencedata.Team;
import com.infotree.qliktest.admin.entity.referencedata.TeamProject;
import com.infotree.qliktest.admin.entity.referencedata.TeamReports;
import com.infotree.qliktest.admin.entity.referencedata.Tenant;
import com.infotree.qliktest.admin.entity.referencedata.TenantReports;
import com.infotree.qliktest.admin.entity.referencedata.User;
import com.infotree.qliktest.admin.entity.referencedata.UserProject;
import com.infotree.qliktest.admin.entity.referencedata.UserReports;
import com.infotree.qliktest.admin.entity.referencedata.UserRole;
import com.infotree.qliktest.admin.entity.referencedata.UserTeam;
import com.infotree.qliktest.admin.entity.referencedata.UserTenant;
import com.infotree.qliktest.admin.entity.system.AuditType;
import com.infotree.qliktest.admin.service.referencedata.AuditLogRecordService;
import com.infotree.qliktest.admin.service.referencedata.ModulePermissionsService;
import com.infotree.qliktest.admin.service.referencedata.ModuleService;
import com.infotree.qliktest.admin.service.referencedata.PermissionsService;
import com.infotree.qliktest.admin.service.referencedata.ProjectModuleService;
import com.infotree.qliktest.admin.service.referencedata.ProjectService;
import com.infotree.qliktest.admin.service.referencedata.ProjectTenantService;
import com.infotree.qliktest.admin.service.referencedata.ReportsService;
import com.infotree.qliktest.admin.service.referencedata.RoleService;
import com.infotree.qliktest.admin.service.referencedata.TeamProjectService;
import com.infotree.qliktest.admin.service.referencedata.TeamService;
import com.infotree.qliktest.admin.service.referencedata.TenantService;
import com.infotree.qliktest.admin.service.referencedata.UserProfileService;
import com.infotree.qliktest.admin.service.referencedata.UserProjectService;
import com.infotree.qliktest.admin.service.referencedata.UserRoleService;
import com.infotree.qliktest.admin.service.referencedata.UserTeamService;
import com.infotree.qliktest.admin.service.referencedata.UserTenantService;
import com.infotree.qliktest.admin.web.validator.DoNothingValidator;

@RequestMapping("/reports")
@Controller
public class ReportsController {
    private static final Logger LOG = LoggerFactory.getLogger(ReportsController.class);
    @Autowired
    private DoNothingValidator validator;

    @Autowired
    private ReportsService reportsService;

    @Autowired
    private ModuleService moduleService;

    @Autowired
    private ProjectModuleService projectModuleService;

    @Autowired
    private TeamService teamService;

    @Autowired
    private UserTenantService userTenantService;

    @Autowired
    private ProjectTenantService projectTenantService;

    @Autowired
    private UserTeamService userTeamService;

    @Autowired
    private UserProjectService userProjectService;

    @Autowired
    private ModulePermissionsService modulePermissionsService;

    @Autowired
    private TenantService tenantService;

    @Autowired
    private UserRoleService userRoleService;

    @Autowired
    private PermissionsService permissionsService;

    @Autowired
    private AuditLogRecordService auditRecordService;

    @Autowired
    private RoleService roleService;

    @Autowired
    private UserProfileService userService;

    @Autowired
    private ProjectService projectService;

    @Autowired
    private TeamProjectService teamProjectService;

    /**
     * This method returns the users related reports
     * projectService.getProjectsByUserId(userTenant.getUserTenantComp().getTenantId())
     */
    @RequestMapping(value = "/userreports", method = RequestMethod.GET)
    public String userReports(Model model, HttpServletRequest request) {
        try {
            model.addAttribute("crudObj", new UserReports());
            List<Project> projList = new ArrayList<Project>();
            List<UserReports> userReports = new ArrayList<UserReports>();
            List<User> userlist = userService
                    .getUsersBasedOnCreatedBy((Integer) request.getSession().getAttribute("userid"));
            if (userlist != null) {
                Iterator<User> itr1 = userlist.iterator();
                try {
                    while (itr1.hasNext()) {
                        User u = itr1.next();
                        UserReports reports = new UserReports();
                        reports.setFirstName(u.getFirstName());
                        reports.setLastName(u.getSurName());
                        if (u.getDisabled() == 0) {
                            reports.setActive("Yes");
                        } else {
                            reports.setActive("No");
                        }
                        if (u.getImportedFromLdap() == 0) {
                            reports.setImported("No");
                        } else if (u.getImportedFromLdap() == 1) {
                            reports.setImported("Yes");
                        }
                        List<UserRole> role = userRoleService.getByUserId(u.getId());
                        String userrole = "";
                        if (role != null) {
                            Iterator<UserRole> itr = role.iterator();
                            while (itr.hasNext()) {
                                UserRole userRole = itr.next();
                                String r = roleService.getNameById(userRole.getUserRoleComp().getRoleId());
                                if (userrole == "") {
                                    userrole = r;
                                } else {
                                    userrole = userrole + "," + r;
                                }
                            }
                        }

                        reports.setRole(userrole);
                        List<UserProject> userProject = userProjectService.getByUserId(u.getId());
                        String userprojects = "";
                        if (userProject != null) {
                            Iterator<UserProject> userprojitr = userProject.iterator();

                            while (userprojitr.hasNext()) {
                                UserProject projects = userprojitr.next();
                                Project proj = projectService.getById(projects.getUserProjectComp().getProjectId());
                                if (userprojects.equals("")) {
                                    userprojects = proj.getName();
                                } else {
                                    userprojects = userprojects + "," + proj.getName();
                                }
                            }
                        }

                        reports.setProjects(userprojects);
                        List<UserTeam> userTeamList = userTeamService.findByUserId(u.getId());
                        String userTeamReport = "";
                        if (userTeamList != null) {
                            Iterator<UserTeam> userTeamItr = userTeamList.iterator();
                            while (userTeamItr.hasNext()) {
                                UserTeam userTeam = userTeamItr.next();
                                Team team = teamService.getById(userTeam.getUserTeamComp().getTeamId());
                                if (userTeamReport.equals("") && team != null) {
                                    userTeamReport = team.getName();
                                } else if (team != null) {
                                    userTeamReport = userTeamReport + "," + team.getName();
                                }
                            }
                        }

                        reports.setTeam(userTeamReport);
                        userReports.add(reports);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }

            }

            model.addAttribute("user_list", userReports);
            List<UserProject> projects = userProjectService
                    .getByUserId((Integer) request.getSession().getAttribute("userid"));
            if (projects != null) {
                Iterator<UserProject> itr = projects.iterator();
                while (itr.hasNext()) {
                    UserProject userProj = itr.next();
                    projList.add(projectService.getById(userProj.getUserProjectComp().getProjectId()));
                }
            }

            model.addAttribute("team_list",
                    teamService.getTeamsById((Integer) request.getSession().getAttribute("userid") + ""));
            List<Role> list = roleService.list();
            List<Role> rolelist = new ArrayList<Role>();
            if (list != null) {
                Iterator<Role> itrRole = list.iterator();
                while (itrRole.hasNext()) {
                    Role r = itrRole.next();
                    if (!r.getName().equalsIgnoreCase("System Administrator")) {
                        if (!r.getName().equalsIgnoreCase("Application Administrator")) {
                            rolelist.add(r);
                        }
                    }
                }
            }
            HttpSession session = request.getSession();
            Integer id = (Integer) session.getAttribute("userid");
            UserTenant userTenant = userTenantService.findByUserId(id);
            model.addAttribute("project_list",
                    projectService.getProjectsByUserId(userTenant.getUserTenantComp().getTenantId()));

            /*model.addAttribute("viewrole","viewrole");*/
            model.addAttribute("role_list", rolelist);
            //model.addAttribute("project_list",projectService.list());
            model.addAttribute("userreports", "userreports");

            Locale clientLocale = request.getLocale();
            Calendar calendar = Calendar.getInstance(clientLocale);
            TimeZone clientTimeZone = calendar.getTimeZone();
            String clientZone = clientTimeZone.getID();
            DateTime dt = new DateTime();
            DateTimeZone dtZone = DateTimeZone.forID(clientZone);
            DateTime dtus = dt.withZone(dtZone);
            Date dateInIndia = dtus.toLocalDateTime().toDate();

            AuditLogRecord record = new AuditLogRecord();
            record.setActionDate(dateInIndia);

            record.setActionData("Viewed the users reports");
            record.setActionType(AuditType.VIEW);
            record.setActionPerformed("Viewed the users reports");
            record.setIpOrigin(request.getSession().getAttribute("ipAddress").toString());
            /*try {
               InetAddress inetAddress = InetAddress.getLocalHost();
               record.setIpOrigin(inetAddress.getHostAddress());
            } catch (UnknownHostException e) {
               e.printStackTrace();
            }*/
            record.setUserId((Integer) request.getSession().getAttribute("userid"));
            record.setUserName(request.getSession().getAttribute("username").toString());
            auditRecordService.saveRecord(record);
        } catch (Exception e) {
            LOG.error(e.toString());
            e.printStackTrace();
        }

        return "home";
    }

    /**
     * This method returns the tenants related reports
     */
    @RequestMapping(value = "/tenantsreports", method = RequestMethod.GET)
    public String tenantReports(Model model, HttpServletRequest request) {
        try {
            model.addAttribute("crudObj", new TenantReports());
            model.addAttribute("tenant_list",
                    userService.getUsersBasedOnCreatedBy((Integer) request.getSession().getAttribute("userid")));
            List<TenantReports> tenantList = new ArrayList<TenantReports>();
            List<User> userList = userService
                    .getUsersBasedOnCreatedBy((Integer) request.getSession().getAttribute("userid"));
            if (userList != null) {
                Iterator<User> itr = userList.iterator();

                while (itr.hasNext()) {
                    TenantReports tenantReports = new TenantReports();
                    User u = itr.next();
                    UserTenant userTenant = userTenantService.findByUserId(u.getId());
                    Tenant t = tenantService.findByTenantId(userTenant.getUserTenantComp().getTenantId());

                    tenantReports.setName(t.getName());
                    tenantReports.setFirstName(u.getFirstName());
                    tenantReports.setUserName(u.getUserName());
                    tenantReports.setCreatedDate(t.getCreatedDate());
                    tenantReports.setModifiedDate(t.getModifiedDate());

                    String projects = "";
                    UserTenant userTenants = userTenantService.findByUserId(u.getId());
                    List<ProjectTenant> tenantProjList = projectTenantService
                            .getByTenantId(userTenants.getUserTenantComp().getTenantId());
                    if (tenantProjList != null) {
                        Iterator<ProjectTenant> itrerator = tenantProjList.iterator();
                        while (itrerator.hasNext()) {
                            ProjectTenant proj = itrerator.next();
                            Project p = projectService.getById(proj.getProjectTenantComp().getProjectId());
                            if (projects.equals("")) {
                                projects = p.getName();
                            } else {
                                projects = projects + "," + p.getName();
                            }
                        }
                    }

                    tenantReports.setProjects(projects);
                    tenantReports.setEmail(u.getEmailAddress());
                    tenantReports.setLastName(u.getSurName());
                    tenantReports.setMobile(u.getMobile());
                    tenantReports.setLandLine(u.getLandline());
                    tenantList.add(tenantReports);
                }
            }

            model.addAttribute("tenant_list", tenantList);
            model.addAttribute("tenantname_list", tenantService.list());
            model.addAttribute("project_list", projectService.getActiveProjects());
            model.addAttribute("tenantsreports", "tenantsreports");
        } catch (Exception e) {
            LOG.error(e.toString());
            e.printStackTrace();
        }
        return "home";
    }

    /**
     * This method returns the teams related reports
     */
    @RequestMapping(value = "/teamsreports", method = RequestMethod.GET)
    public String teamsReports(Model model, HttpServletRequest request) {
        try {
            model.addAttribute("crudObj", new TeamReports());
            List<Project> projList = new ArrayList<Project>();
            List<User> listusers = new ArrayList<User>();
            List<TeamReports> teamReports = new ArrayList<TeamReports>();
            List<Team> teamsList = teamService
                    .getTeamsById((Integer) request.getSession().getAttribute("userid") + "");
            if (teamsList != null) {
                Iterator<Team> teamsItr = teamsList.iterator();
                while (teamsItr.hasNext()) {

                    String users = "";
                    String projects = "";
                    TeamReports teams = new TeamReports();
                    Team team = teamsItr.next();
                    teams.setTeamName(team.getName());
                    int count = userTeamService.getNoOfUsers(team.getId());
                    if (count == 0) {
                        teams.setTeamCount(count);
                        users = "No Users Available";
                    } else {
                        teams.setTeamCount(userTeamService.getNoOfUsers(team.getId()));
                    }
                    if (!(count == 0)) {
                        listusers = userService.getUsersByTeamId(team.getId());
                        Iterator<User> iter = listusers.iterator();
                        while (iter.hasNext()) {
                            User u = iter.next();
                            if (users == "")
                                users = users + u.getFirstName();
                            else
                                users = users + " " + "<br>" + u.getFirstName();
                        }
                    }
                    List<TeamProject> projectList = teamProjectService.getProjectsByTeamId(team.getId());
                    if (projectList != null) {
                        Iterator<TeamProject> itr = projectList.iterator();

                        while (itr.hasNext()) {
                            TeamProject teamproj = itr.next();
                            Project p = projectService.getById(teamproj.getTeamProjId().getProjectId());
                            if (projects.equals("")) {
                                projects = projects + p.getName();
                            } else {
                                projects = projects + "," + p.getName();
                            }

                        }
                    }

                    Locale clientLocale = request.getLocale();
                    Calendar calendar = Calendar.getInstance(clientLocale);
                    TimeZone clientTimeZone = calendar.getTimeZone();
                    String clientZone = clientTimeZone.getID();
                    DateTime dt = new DateTime();
                    DateTimeZone dtZone = DateTimeZone.forID(clientZone);
                    DateTime dtus = dt.withZone(dtZone);
                    Date dateInIndia = dtus.toLocalDateTime().toDate();

                    AuditLogRecord record = new AuditLogRecord();
                    record.setActionDate(dateInIndia);

                    record.setActionData("Viewed the Teams Reports");
                    record.setActionType(AuditType.VIEW);
                    record.setActionPerformed("Viewed the Teams Reports");
                    record.setIpOrigin(request.getSession().getAttribute("ipAddress").toString());
                    /*try {
                       InetAddress inetAddress = InetAddress.getLocalHost();
                       record.setIpOrigin(inetAddress.getHostAddress());
                    } catch (UnknownHostException e) {
                       e.printStackTrace();
                    }*/
                    record.setUserId((Integer) request.getSession().getAttribute("userid"));
                    record.setUserName(request.getSession().getAttribute("username").toString());
                    auditRecordService.saveRecord(record);

                    teams.setProjects(projects);
                    teams.setUserName(
                            "<center><table width=70% border=1><tr><th><center>User Names</center></th></tr><tr><td><center>"
                                    + users + "</center></td></tr></table></center>");
                    teamReports.add(teams);

                }
            }

            List<UserProject> projectList = userProjectService
                    .getByUserId((Integer) request.getSession().getAttribute("userid"));

            if (projectList != null) {
                Iterator<UserProject> itr = projectList.iterator();
                while (itr.hasNext()) {
                    UserProject userProj = itr.next();
                    projList.add(projectService.getById(userProj.getUserProjectComp().getProjectId()));
                }
            }

            List<Role> rolelist = new ArrayList<Role>();
            List<Role> list = roleService.list();
            if (list != null) {
                Iterator<Role> itrRole = list.iterator();
                while (itrRole.hasNext()) {
                    Role r = itrRole.next();
                    Role r1 = new Role();
                    r1.setId(r.getId());
                    r1.setDescription(r.getDescription());
                    r1.setCreatedBy("1");
                    r1.setName(r.getName());
                    rolelist.add(r1);

                }
            }

            List<Project> projs = new ArrayList<Project>();
            UserTenant ut = userTenantService.findByUserId((Integer) request.getSession().getAttribute("userid"));
            List<ProjectTenant> projTenant = projectTenantService
                    .getByTenantId(ut.getUserTenantComp().getTenantId());
            if (projTenant != null) {
                Iterator<ProjectTenant> projTenantItr = projTenant.iterator();
                while (projTenantItr.hasNext()) {
                    ProjectTenant pt = projTenantItr.next();
                    Project p = projectService.getById(pt.getProjectTenantComp().getProjectId());
                    projs.add(p);
                }
            }

            model.addAttribute("project_list", projs);

            List<Role> rolesList = roleService.list();
            List<Role> newRoleList = new ArrayList<Role>();
            for (Role role : rolesList) {
                if (!role.getName().equalsIgnoreCase("System Administrator")) {
                    if (!role.getName().equalsIgnoreCase("Application Administrator")) {
                        newRoleList.add(role);
                    }

                }
            }
            model.addAttribute("role_list", newRoleList);
            model.addAttribute("team_list", teamReports);

            model.addAttribute("teamsreports", "teamsreports");
        } catch (Exception e) {
            LOG.error(e.toString());
            e.printStackTrace();
        }
        return "home";
    }

    /**
     * This method returns the projects related reports
     */
    @RequestMapping(value = "/projectsreports", method = RequestMethod.GET)
    public String projectsReports(Model model) {

        try {
            List<Project> projectList = projectService.getActiveProjects();
            List<ProjectsReports> projReports = new ArrayList<ProjectsReports>();
            if (projectList != null) {
                Iterator<Project> itr = projectList.iterator();
                while (itr.hasNext()) {
                    String modules = "";
                    ProjectsReports report = new ProjectsReports();
                    Project p = itr.next();
                    int count = projectModuleService.getModuleCountByProjectId(p.getId());
                    report.setName(p.getName());
                    SimpleDateFormat formatt = new SimpleDateFormat("yyyy-MM-dd");
                    report.setStartingDate(formatt.format(p.getStartDate()));
                    report.setEndingDate(formatt.format(p.getEndDate()));
                    report.setStartDate(p.getStartDate());
                    report.setEndDate(p.getEndDate());
                    report.setModuleCount(count);
                    report.setCreatedDate(p.getCreatedDate());
                    report.setModifiedDate(p.getModifiedDate());
                    List<ProjectModule> projectsList = projectModuleService.findByProjectId(p.getId());
                    if (projectsList != null) {
                        Iterator<ProjectModule> iterator = projectsList.iterator();
                        if (count == 0) {

                            modules = "No Modules Available";
                            report.setModuleName(modules);
                        } else if (count != 0) {

                            while (iterator.hasNext()) {
                                ProjectModule pm = iterator.next();
                                Module m = moduleService.getById(pm.getProjectModuleComp().getModuleId());
                                if (modules == "") {
                                    modules = modules + m.getName();
                                    //report.setModuleName(modules);
                                    report.setModuleName(
                                            "<center><table width=70% border=1><tr><th><center>License Names</center></th></tr><tr><td><center>"
                                                    + modules + "</center></td></tr></table></center>");
                                } else {
                                    modules = modules + " " + "<br>" + m.getName();
                                    report.setModuleName(
                                            "<center><table width=70% border=1><tr><th><center>License Names</center></th></tr><tr><td><center>"
                                                    + modules + "</center></td></tr></table></center>");
                                }
                            }
                        }
                    }
                    projReports.add(report);
                }
            }

            model.addAttribute("crudObj", new ProjectsReports());
            model.addAttribute("module_list", moduleService.list());
            model.addAttribute("project_list", projReports);
            model.addAttribute("projectname_list", projectService.getActiveProjects());
            model.addAttribute("projectsreports", "projectsreports");
        } catch (Exception e) {
            LOG.error(e.toString());
            e.printStackTrace();
        }
        return "home";
    }

    /**
     * This method returns the modules related reports
     */
    @RequestMapping(value = "/modulereports", method = RequestMethod.GET)
    public String moduleReports(Model model) {

        try {
            List<ModuleReports> moduleReports = new ArrayList<ModuleReports>();
            model.addAttribute("crudObj", new ModuleReports());
            List<Module> moduleList = moduleService.list();
            if (moduleList != null) {
                Iterator<Module> itr = moduleList.iterator();
                while (itr.hasNext()) {

                    String permissions = "";
                    Module module = itr.next();
                    ModuleReports report = new ModuleReports();
                    int count = modulePermissionsService.getPermissionsCountByModuleId(module.getId());

                    report.setName(module.getName());
                    report.setDescription(module.getDescription());
                    report.setPermissionsCount(count + "");
                    report.setCreatedDate(module.getCreatedDate());
                    report.setModifiedDate(module.getModifiedDate());
                    List<ModulePermissions> permList = modulePermissionsService.findByModuleId(module.getId());
                    if (permList != null) {
                        Iterator<ModulePermissions> iterator = permList.iterator();

                        if (count == 0) {

                            permissions = "No Permissions Available";
                        } else {
                            while (iterator.hasNext()) {
                                ModulePermissions pm = iterator.next();

                                Permissions m = permissionsService
                                        .getById(pm.getModulePermissionsComp().getPermissionId());
                                if (permissions == "")
                                    permissions = m.getName();
                                else
                                    permissions = permissions + " " + "<br>" + m.getName();
                            }
                        }
                    }

                    report.setPermissionsNames(
                            "<center><table width=70% border=1><tr><th><center>Permission Names</center></th></tr><tr><td><center>"
                                    + permissions + "</center></td></tr></table></center>");
                    moduleReports.add(report);
                }
            }

            model.addAttribute("modulereports", "modulereports");
            model.addAttribute("module_list", moduleReports);
            model.addAttribute("modulename_list", moduleService.list());
            model.addAttribute("permissions_list", permissionsService.list());
        } catch (Exception e) {
            LOG.error(e.toString());
            e.printStackTrace();
        }
        return "home";
    }

    /**
     * This method is used to search the users based on the filters selected by the user
     */
    @RequestMapping(value = "/search", method = RequestMethod.POST)
    public String searchUsers(@Valid UserReports entity, BindingResult bindingResult, Model model,
            HttpServletRequest request) {
        try {

            Integer userId = (Integer) request.getSession().getAttribute("userid");
            model.addAttribute("crudObj", new UserReports());
            String projid = entity.getProjectId();
            String teamid = entity.getTeamId();
            String roleId = entity.getRoleId();

            int isImported = 2;
            int isActive = 2;

            //********************************//*

            final HashMap<String, String> map = new HashMap<String, String>();

            if (entity.getImported() != null && entity.getImported().equalsIgnoreCase("yes")) {
                isImported = 1;

                map.put("imported_from_ldap", String.valueOf(isImported));
            } else if (entity.getImported() != null && entity.getImported().equalsIgnoreCase("no")) {
                isImported = 0;
                map.put("imported_from_ldap", String.valueOf(isImported));
            }

            if (entity.getActive() != null && entity.getActive().equalsIgnoreCase("yes")) {
                isActive = 0;
                map.put("is_disabled", String.valueOf(isActive));
            } else if (entity.getActive() != null && entity.getActive().equalsIgnoreCase("no")) {
                isActive = 1;
                map.put("is_disabled", String.valueOf(isActive));
            }

            if (projid != null && projid != "") {
                map.put("project_id", projid);
            }

            if (teamid != null && teamid != "") {
                map.put("team_id", teamid);
            }

            if (roleId != null && roleId != "") {
                map.put("role_id", roleId);
            }

            StringBuffer sb = new StringBuffer();

            sb.append("select * from user where ");
            Iterator<Entry<String, String>> it = map.entrySet().iterator();
            int i = 1;
            while (it.hasNext()) {
                @SuppressWarnings("rawtypes")
                Map.Entry pairs = (Map.Entry) it.next();

                if (i > 1) {
                    sb.append(" and ");
                }

                if (pairs.getKey().toString().equalsIgnoreCase("imported_from_ldap")) {
                    sb.append(pairs.getKey().toString() + "=" + pairs.getValue().toString());
                }

                if (pairs.getKey().toString().equalsIgnoreCase("is_disabled")) {
                    sb.append(pairs.getKey().toString() + "=" + pairs.getValue().toString());
                }

                if (pairs.getKey().toString().equalsIgnoreCase("project_id")) {
                    sb.append("id in (select user_id from user_project where ");
                    sb.append(pairs.getKey().toString() + "=" + pairs.getValue().toString());
                    sb.append(")");
                }

                if (pairs.getKey().toString().equalsIgnoreCase("team_id")) {
                    sb.append("id in (select user_id from user_team where ");
                    sb.append(pairs.getKey().toString() + "=" + pairs.getValue().toString());
                    sb.append(")");
                }

                if (pairs.getKey().toString().equalsIgnoreCase("role_id")) {
                    sb.append("id in (select user_id from user_role where ");
                    sb.append(pairs.getKey().toString() + "=" + pairs.getValue().toString());
                    sb.append(")");
                }

                i++;

            }
            sb.append(" and created_by=" + userId);
            List<User> userList = userService.executeSqlQuery(sb.toString());
            List<UserReports> userReports = new ArrayList<UserReports>();
            List<Project> projList = new ArrayList<Project>();
            if (projList != null) {
                Iterator<User> itr1 = userList.iterator();

                while (itr1.hasNext()) {
                    String userprojects = "";
                    String userrole = "";

                    String userTeamReport = "";
                    User u = itr1.next();
                    UserReports reports = new UserReports();
                    reports.setFirstName(u.getFirstName());
                    reports.setLastName(u.getSurName());
                    if (u.isDisabled()) {
                        reports.setActive("No");
                    } else {
                        reports.setActive("Yes");
                    }
                    if (u.getImportedFromLdap() == 0) {
                        reports.setImported("No");
                    } else {
                        reports.setImported("Yes");
                    }
                    List<UserRole> role = userRoleService.getByUserId(u.getId());
                    if (role != null) {
                        Iterator<UserRole> itr = role.iterator();
                        while (itr.hasNext()) {
                            UserRole userRole = itr.next();
                            String r = roleService.getNameById(userRole.getUserRoleComp().getRoleId());
                            if (userrole == "") {
                                userrole = r;
                            } else {
                                userrole = userrole + "," + r;
                            }
                        }
                    }

                    reports.setRole(userrole);
                    userrole = "";
                    List<UserProject> userProject = userProjectService.getByUserId(u.getId());
                    if (userProject != null) {
                        Iterator<UserProject> userprojitr = userProject.iterator();
                        while (userprojitr.hasNext()) {
                            UserProject projects = userprojitr.next();
                            Project proj = projectService.getById(projects.getUserProjectComp().getProjectId());
                            if (userprojects.equals("")) {
                                userprojects = proj.getName();
                            } else {
                                userprojects = userprojects + "," + proj.getName();
                            }
                        }
                    }

                    reports.setProjects(userprojects);
                    userprojects = "";
                    List<UserTeam> userTeamList = userTeamService.findByUserId(u.getId());
                    if (userTeamList != null) {
                        Iterator<UserTeam> userTeamItr = userTeamList.iterator();
                        while (userTeamItr.hasNext()) {
                            UserTeam userTeam = userTeamItr.next();
                            Team team = teamService.getById(userTeam.getUserTeamComp().getTeamId());
                            if (userTeamReport.equals("")) {
                                userTeamReport = team.getName();
                            } else {
                                userTeamReport = userTeamReport + "," + team.getName();
                            }
                        }
                    }

                    reports.setTeam(userTeamReport);
                    userTeamReport = "";
                    userReports.add(reports);
                }
            }

            model.addAttribute("user_list", userReports);
            List<UserProject> projects = userProjectService
                    .getByUserId((Integer) request.getSession().getAttribute("userid"));
            if (projects != null) {
                Iterator<UserProject> itr = projects.iterator();
                while (itr.hasNext()) {
                    UserProject userProj = itr.next();
                    projList.add(projectService.getById(userProj.getUserProjectComp().getProjectId()));
                }
            }
            model.addAttribute("project_list", projList);
            model.addAttribute("team_list",
                    teamService.getTeamsById((Integer) request.getSession().getAttribute("userid") + ""));
            List<Role> list = roleService.list();
            List<Role> rolelist = new ArrayList<Role>();
            for (Role r : list) {
                if (!r.getName().equalsIgnoreCase("System Administrator")) {
                    if (!r.getName().equalsIgnoreCase("Application Administrator")) {
                        rolelist.add(r);
                    }
                }

            }
            model.addAttribute("crudObj", entity);
            model.addAttribute("viewrole", "viewrole");
            model.addAttribute("role_list", rolelist);
            //model.addAttribute("project_list",projList);
            HttpSession session = request.getSession();
            Integer id = (Integer) session.getAttribute("userid");
            UserTenant userTenant = userTenantService.findByUserId(id);
            model.addAttribute("project_list",
                    projectService.getProjectsByUserId(userTenant.getUserTenantComp().getTenantId()));
            //model.addAttribute("project_list", projectService.list());
            model.addAttribute("userreports", "userreports");
        } catch (Exception e) {
            LOG.error(e.toString());
            e.printStackTrace();
        }

        return "home";
    }

    /**
     * This method is used to search the projects based on the filters given by the user
     */
    @RequestMapping(value = "/searchprojects", method = RequestMethod.POST)
    public String searchProjects(@ModelAttribute("crudObj") @Valid ProjectsReports entity,
            BindingResult bindingResult, Model model) {
        try {
            String modules = "";
            Map<String, String> map = new HashMap<String, String>();
            String moduleId = entity.getModuleId();

            //new code

            if (moduleId != null && moduleId != "") {
                map.put("module_Id", moduleId);
            }

            if (entity.getStartingDate() != null && entity.getStartingDate() != "") {
                map.put("start_date", entity.getStartingDate());
            }

            if (entity.getEndingDate() != null && entity.getEndingDate() != "") {
                map.put("end_date", entity.getEndingDate());
            }
            if (entity.getProjectId() != null && entity.getProjectId() != "") {
                map.put("id", entity.getProjectId());
            }

            StringBuffer sb = new StringBuffer();

            sb.append("select * from project where ");
            Iterator<Entry<String, String>> it = map.entrySet().iterator();
            int i = 1;
            while (it.hasNext()) {
                @SuppressWarnings("rawtypes")
                Map.Entry pairs = (Map.Entry) it.next();

                if (i > 1) {
                    sb.append(" or ");
                }

                if (pairs.getKey().toString().equalsIgnoreCase("module_id")) {
                    sb.append("id in (select project_id from project_module where ");
                    sb.append(pairs.getKey().toString() + "=" + pairs.getValue().toString());
                    sb.append(")");
                }

                if (pairs.getKey().toString().equalsIgnoreCase("start_date")) {
                    sb.append(pairs.getKey().toString() + ">='" + pairs.getValue().toString() + "'");
                }

                if (pairs.getKey().toString().equalsIgnoreCase("end_date")) {
                    sb.append(pairs.getKey().toString() + "<='" + pairs.getValue().toString() + "'");
                }
                if (pairs.getKey().toString().equalsIgnoreCase("id")) {
                    sb.append(pairs.getKey().toString() + "='" + pairs.getValue().toString() + "'");
                }

                i++;
            }

            List<Project> projectList = projectService.executeQuery(sb.toString());
            List<ProjectsReports> projReports = new ArrayList<ProjectsReports>();
            if (projectList != null) {
                Iterator<Project> itr = projectList.iterator();

                while (itr.hasNext()) {

                    modules = "";
                    ProjectsReports report = new ProjectsReports();
                    Project p = itr.next();
                    int count = projectModuleService.getModuleCountByProjectId(p.getId());
                    report.setName(p.getName());
                    SimpleDateFormat formatt = new SimpleDateFormat("yyyy-MM-dd");
                    report.setStartingDate(formatt.format(p.getStartDate()));
                    report.setEndingDate(formatt.format(p.getEndDate()));
                    report.setStartDate(p.getStartDate());
                    report.setEndDate(p.getEndDate());
                    report.setModuleCount(count);
                    report.setCreatedDate(p.getCreatedDate());
                    report.setModifiedDate(p.getModifiedDate());
                    List<ProjectModule> projectsList = projectModuleService.findByProjectId(p.getId());
                    if (projectsList != null) {
                        Iterator<ProjectModule> iterator = projectsList.iterator();
                        if (count == 0) {

                            modules = "No Modules Available";
                        } else {
                            while (iterator.hasNext()) {
                                ProjectModule pm = iterator.next();
                                Module m = moduleService.getById(pm.getProjectModuleComp().getModuleId());
                                if (modules == "")
                                    modules = modules + m.getName();
                                else
                                    modules = modules + " " + "<br>" + m.getName();
                            }
                        }
                    }

                    //report.setModuleName(modules);
                    report.setModuleName(
                            "<center><table width=70% border=1><tr><th><center>License Names</center></th></tr><tr><td><center>"
                                    + modules + "</center></td></tr></table></center>");
                    projReports.add(report);
                }
            }

            model.addAttribute("module_list", moduleService.list());
            model.addAttribute("project_list", projReports);
            model.addAttribute("projectname_list", projectService.getActiveProjects());
            model.addAttribute("projectsreports", "projectsreports");
        } catch (Exception e) {
            LOG.error(e.toString());
            e.printStackTrace();
        }
        entity.setStartingDate(entity.getStartingDate());
        entity.setEndingDate(entity.getEndingDate());
        entity.setModuleName(entity.getName());
        return "home";
    }

    /**
     * This method is used to search the teams based on the filters selected by the user
     */
    @RequestMapping(value = "/searchteams", method = RequestMethod.POST)
    public String searchTeams(@Valid TeamReports entity, BindingResult bindingResult, Model model,
            HttpServletRequest request) {
        try {
            String roleid = entity.getRoleId();
            String projectid = entity.getProjectid();
            String sqlQuery = "";
            String users = "";
            String projects = "";
            List<User> listusers = new ArrayList<User>();
            List<TeamReports> teamReports = new ArrayList<TeamReports>();
            String userId = request.getSession().getAttribute("userid").toString();

            if ((projectid != null || projectid != "") && (roleid == null || roleid == "")) {
                sqlQuery = "select * from team where id in (select team_id from team_project where project_id="
                        + projectid + ") and created_by = " + userId + "";
            }

            if ((roleid != null && roleid != "") && (projectid == null || projectid == "")) {
                sqlQuery = "select * from team where id in (select team_id from user_team where user_id in (select user_id from user_role where role_id="
                        + roleid + ") and created_by = " + userId + ")";
            }

            if (projectid != null && projectid != "" && roleid != null && roleid != "") {

                sqlQuery = "select * from team where id in (select team_id from user_team where user_id in (select up.user_id from user_project up ,user_role ur where up.user_id=ur.user_id and up.project_id="
                        + projectid + " and ur.role_id=" + roleid + ") and created_by = " + userId + ")";

            }
            List<Team> teamList = teamService.executeSqlQuery(sqlQuery);
            if (teamList != null) {
                Iterator<Team> teamsItr = teamList.iterator();
                while (teamsItr.hasNext()) {
                    TeamReports teams = new TeamReports();
                    Team team = teamsItr.next();
                    teams.setTeamName(team.getName());
                    int count = userTeamService.getNoOfUsers(team.getId());
                    if (count == 0) {
                        teams.setTeamCount(count);
                        users = "No Users Available";
                    } else {
                        teams.setTeamCount(userTeamService.getNoOfUsers(team.getId()));
                    }
                    if (!(count == 0)) {
                        listusers = userService.getUsersByTeamId(team.getId());
                        Iterator<User> iter = listusers.iterator();
                        users = "";
                        while (iter.hasNext()) {
                            User u = iter.next();
                            if (users == "")
                                users = users + u.getFirstName();
                            else
                                users = users + " " + "<br>" + u.getFirstName();
                        }
                    }
                    List<TeamProject> projectList = teamProjectService.getProjectsByTeamId(team.getId());
                    if (projectList != null) {
                        Iterator<TeamProject> itr = projectList.iterator();

                        while (itr.hasNext()) {
                            TeamProject teamproj = itr.next();
                            Project p = projectService.getById(teamproj.getTeamProjId().getProjectId());
                            if (projects.equals("")) {
                                projects = projects + p.getName();
                            } else {
                                projects = p.getName();
                            }

                        }
                    }
                    teams.setProjects(projects);
                    //teams.setUserName(users);
                    teams.setUserName(
                            "<center><table width=70% border=1><tr><th><center>User Names</center></th></tr><tr><td><center>"
                                    + users + "</center></td></tr></table></center>");
                    teamReports.add(teams);

                }
            }

            List<Project> projs = new ArrayList<Project>();
            UserTenant ut = userTenantService.findByUserId((Integer) request.getSession().getAttribute("userid"));
            List<ProjectTenant> projTenant = projectTenantService
                    .getByTenantId(ut.getUserTenantComp().getTenantId());
            if (projTenant != null) {
                Iterator<ProjectTenant> projTenantItr = projTenant.iterator();
                while (projTenantItr.hasNext()) {
                    ProjectTenant pt = projTenantItr.next();
                    Project p = projectService.getById(pt.getProjectTenantComp().getProjectId());
                    projs.add(p);
                }
            }

            model.addAttribute("project_list", projs);
            List<Role> rolelist = new ArrayList<Role>();
            List<Role> list = roleService.list();
            if (list != null) {
                Iterator<Role> itrRole = list.iterator();
                while (itrRole.hasNext()) {
                    Role r = itrRole.next();
                    Role r1 = new Role();
                    r1.setId(r.getId());
                    r1.setDescription(r.getDescription());
                    r1.setCreatedBy("SYSADMIN");
                    r1.setName(r.getName());
                    rolelist.add(r1);

                }
            }

            List<Role> rolesList = roleService.list();
            List<Role> newRoleList = new ArrayList<Role>();
            for (Role role : rolesList) {
                if (!role.getName().equalsIgnoreCase("System Administrator")) {
                    if (!role.getName().equalsIgnoreCase("Application Administrator")) {
                        newRoleList.add(role);
                    }

                }
            }

            model.addAttribute("crudObj", new TeamReports());
            model.addAttribute("role_list", newRoleList);
            model.addAttribute("team_list", teamReports);
            model.addAttribute("teamsreports", "teamsreports");
        } catch (Exception e) {
            LOG.error(e.toString());
            e.printStackTrace();
        }
        return "home";
    }

    /**
     * searching the modules based on the filters given by the user
     */
    @RequestMapping(value = "/searchmodules", method = RequestMethod.POST)
    public String searchModules(@Valid ModuleReports entity, BindingResult bindingResult, Model model) {
        try {
            Integer moduleId = entity.getModuleId();
            Integer permissionId = entity.getPermissionId();
            List<Module> modList = null;
            model.addAttribute("crudObj", entity);

            if (moduleId != null && permissionId != null) {
                modList = moduleService.findByModuleIdAndPermissionId(moduleId, permissionId);
            } else if (moduleId != null && permissionId == null) {
                modList = moduleService.findByModuleId(moduleId);
            } else if (moduleId == null && permissionId != null) {
                modList = moduleService.findByPermissionId(permissionId);
            } else {
                modList = moduleService.list();
            }
            List<ModuleReports> moduleReports = new ArrayList<ModuleReports>();
            model.addAttribute("modulereports", "modulereports");
            if (modList != null) {
                Iterator<Module> iterator = modList.iterator();
                while (iterator.hasNext()) {
                    Module module = iterator.next();
                    String permissions = "";
                    ModuleReports report = new ModuleReports();
                    int count = modulePermissionsService.getPermissionsCountByModuleId(module.getId());
                    report.setName(module.getName());
                    report.setDescription(module.getDescription());
                    report.setPermissionsCount(count + "");
                    report.setCreatedDate(module.getCreatedDate());
                    report.setModifiedDate(module.getModifiedDate());
                    List<ModulePermissions> permList = modulePermissionsService.findByModuleId(module.getId());
                    if (permList != null) {
                        Iterator<ModulePermissions> itr = permList.iterator();
                        if (count == 0) {

                            permissions = "No Permissions Available";
                        }
                        if (!(count == 0)) {

                            while (itr.hasNext()) {
                                ModulePermissions pm = itr.next();
                                Permissions m = permissionsService
                                        .getById(pm.getModulePermissionsComp().getPermissionId());
                                if (permissions == "")
                                    permissions = permissions + m.getName();
                                else
                                    permissions = permissions + " " + "<br>" + m.getName();
                            }
                        }
                    }
                    report.setPermissionsNames(permissions);
                    moduleReports.add(report);
                }
            }
            model.addAttribute("modulereports", "modulereports");
            model.addAttribute("module_list", moduleReports);
            model.addAttribute("permissions_list", permissionsService.list());
            model.addAttribute("modulename_list", moduleService.list());

        } catch (Exception e) {
            LOG.error(e.toString());
            e.printStackTrace();
        }
        return "home";
    }

    /**
     * This method is used to search the tenants based on the filters given by the user
     */
    @RequestMapping(value = "/searchtenants", method = RequestMethod.POST)
    public String searchTenants(@Valid TenantReports entity, BindingResult bindingResult, Model model,
            HttpServletRequest request) {
        try {
            Integer projectId = entity.getProjectId();
            Integer tenantId = entity.getId();
            List<TenantReports> tenantList = new ArrayList<TenantReports>();
            if (tenantId == null && projectId == null) {
                List<User> userList = userService
                        .getUsersByCreated((Integer) request.getSession().getAttribute("userid") + "");
                if (userList != null) {
                    Iterator<User> itr = userList.iterator();
                    while (itr.hasNext()) {
                        TenantReports reports = new TenantReports();
                        User u = itr.next();
                        UserTenant ut = userTenantService.findByUserId(u.getId());
                        reports.setUserName(u.getUserName());
                        reports.setFirstName(u.getFirstName());
                        reports.setLastName(u.getSurName());
                        reports.setEmail(u.getEmailAddress());
                        reports.setMobile(u.getMobile());
                        reports.setLandLine(u.getLandline());
                        Tenant t = tenantService.findByTenantIdAndCreatedBy(ut.getUserTenantComp().getTenantId(),
                                (Integer) request.getSession().getAttribute("userid"));
                        reports.setCreatedDate(t.getCreatedDate());
                        reports.setModifiedDate(t.getModifiedDate());
                        reports.setName(t.getName());
                        List<ProjectTenant> list = projectTenantService.getByTenantId(t.getId());
                        String projects = "";
                        if (list != null) {
                            Iterator<ProjectTenant> iterator = list.iterator();
                            while (iterator.hasNext()) {
                                ProjectTenant pt = iterator.next();
                                Project p = projectService.getById(pt.getProjectTenantComp().getProjectId());
                                if (projects == "") {
                                    projects = p.getName();
                                } else {
                                    projects = projects + "," + p.getName();
                                }

                            }
                        }

                        reports.setProjects(projects);
                        tenantList.add(reports);
                        model.addAttribute("tenant_list", tenantList);
                        model.addAttribute("tenantname_list", tenantService.list());
                        model.addAttribute("project_list", projectService.getActiveProjects());

                    }
                }

            } else if (projectId == null && tenantId != null) {
                UserTenant userTenant = userTenantService.findByTenantIdAndCreatedBy(tenantId,
                        (Integer) request.getSession().getAttribute("userid"));
                if (userTenant != null) {
                    TenantReports reports = new TenantReports();
                    User u = userService.getById(userTenant.getUserTenantComp().getUserId());
                    UserTenant ut = userTenantService.findByUserId(u.getId());
                    reports.setUserName(u.getUserName());
                    reports.setFirstName(u.getFirstName());
                    reports.setLastName(u.getSurName());
                    reports.setEmail(u.getEmailAddress());
                    Tenant t = tenantService.findByTenantId(ut.getUserTenantComp().getTenantId());
                    reports.setName(t.getName());
                    List<ProjectTenant> list = projectTenantService.getByTenantId(t.getId());
                    String projects = "";
                    if (list != null) {
                        Iterator<ProjectTenant> itr = list.iterator();
                        while (itr.hasNext()) {
                            ProjectTenant pt = itr.next();
                            Project p = projectService.getById(pt.getProjectTenantComp().getProjectId());
                            if (projects == "") {
                                projects = p.getName();
                            } else {
                                projects = projects + "," + p.getName();
                            }

                        }
                    }

                    reports.setProjects(projects);
                    tenantList.add(reports);
                }

                model.addAttribute("tenant_list", tenantList);
                model.addAttribute("tenantname_list", tenantService.list());
                model.addAttribute("project_list", projectService.getActiveProjects());

            } else if (projectId != null && tenantId == null) {

                ProjectTenant projectTenant = projectTenantService.findByProjectId(projectId);
                if (projectTenant != null) {
                    UserTenant userTenant = userTenantService.findByTenantIdAndCreatedBy(
                            projectTenant.getProjectTenantComp().getTenantId(),
                            (Integer) request.getSession().getAttribute("userid"));
                    String projects = "";
                    TenantReports reports = new TenantReports();
                    User u = userService.getById(userTenant.getUserTenantComp().getUserId());
                    UserTenant ut = userTenantService.findByUserId(u.getId());
                    reports.setUserName(u.getUserName());
                    reports.setFirstName(u.getFirstName());
                    reports.setLastName(u.getSurName());
                    reports.setEmail(u.getEmailAddress());
                    Tenant t = tenantService.findByTenantId(ut.getUserTenantComp().getTenantId());
                    reports.setName(t.getName());
                    List<ProjectTenant> list = projectTenantService.getByTenantId(t.getId());
                    if (list != null) {
                        Iterator<ProjectTenant> itr = list.iterator();
                        while (itr.hasNext()) {
                            ProjectTenant pt = itr.next();
                            Project p = projectService.getById(pt.getProjectTenantComp().getProjectId());
                            if (projects == "") {
                                projects = p.getName();
                            } else {
                                projects = projects + " " + "<br>" + p.getName();
                            }

                        }
                    }

                    reports.setProjects(projects);
                    tenantList.add(reports);
                }

                model.addAttribute("tenant_list", tenantList);
                model.addAttribute("tenantname_list", tenantService.list());
                model.addAttribute("project_list", projectService.getActiveProjects());

            } else if (projectId != null && tenantId != null) {
                ProjectTenant projectTenant = projectTenantService.findByIds(projectId, tenantId);
                if (projectTenant != null) {
                    UserTenant userTenant = userTenantService.findByTenantIdAndCreatedBy(tenantId,
                            (Integer) request.getSession().getAttribute("userid"));
                    TenantReports reports = new TenantReports();
                    User u = userService.getById(userTenant.getUserTenantComp().getUserId());
                    UserTenant ut = userTenantService.findByUserId(u.getId());
                    reports.setUserName(u.getUserName());
                    reports.setFirstName(u.getFirstName());
                    reports.setLastName(u.getSurName());
                    reports.setEmail(u.getEmailAddress());
                    Tenant t = tenantService.findByTenantId(ut.getUserTenantComp().getTenantId());
                    reports.setName(t.getName());
                    List<ProjectTenant> list = projectTenantService.getByTenantId(t.getId());
                    String projects = "";
                    if (list != null) {
                        Iterator<ProjectTenant> itr = list.iterator();
                        while (itr.hasNext()) {
                            ProjectTenant pt = itr.next();
                            Project p = projectService.getById(pt.getProjectTenantComp().getProjectId());
                            if (projects == "") {
                                projects = p.getName();
                            } else {
                                projects = projects + "," + p.getName();
                            }

                        }
                    }
                    reports.setProjects(projects);
                    tenantList.add(reports);
                }

                model.addAttribute("tenant_list", tenantList);
                model.addAttribute("tenantname_list", tenantService.list());
                model.addAttribute("project_list", projectService.getActiveProjects());
            }

            model.addAttribute("crudObj", entity);
            model.addAttribute("tenantsreports", "tenantsreports");
        } catch (Exception e) {
            LOG.error(e.toString());
            e.printStackTrace();
        }
        return "home";
    }

    /**
     * This method returns the UI to create the other reports
     */
    @RequestMapping(value = "/otherreports", method = RequestMethod.GET)
    public String otherreports(Model model, HttpServletResponse response, HttpServletRequest request) {
        try {
            model.addAttribute("crudObj", new DashBoardReports());
            model.addAttribute("otherreports", "otherreports");
            model.addAttribute("other_reports", reportsService.getOtherReports());
        } catch (Exception e) {
            LOG.error(e.toString());
            e.printStackTrace();
        }
        return "home";
    }

    /**
     * This method returns the UI to edit the other reports
     */
    @RequestMapping(value = "/editotherreports", method = RequestMethod.GET)
    public String editotherreports(@Valid DashBoardReports entity, BindingResult bindingResult, Model model,
            HttpServletResponse response, HttpServletRequest request) {
        try {
            Integer repid = Integer.parseInt(request.getParameter("repid"));
            DashBoardReports entityToBeUpdated = reportsService.getById(repid);
            model.addAttribute("crudObj", entityToBeUpdated);
            model.addAttribute("updatereports", "updatereports");
        } catch (NumberFormatException e) {
            LOG.error(e.toString());
            e.printStackTrace();
        }
        return "home";
    }

    /**
     * This method returns the report screen to edit the report
     */
    @RequestMapping(value = "/edit/{reportId}/update", method = RequestMethod.GET)
    public String updateReport(@PathVariable Integer reportId, Model model) {
        try {
            DashBoardReports entityToBeUpdated = reportsService.getById(reportId);
            model.addAttribute("crudObj", entityToBeUpdated);
            model.addAttribute("idToBeUpdated", entityToBeUpdated.getId());
            model.addAttribute("updatemodules", "updatemodules");
        } catch (Exception e) {
            LOG.error(e.toString());
            e.printStackTrace();
        }

        return "home";
    }

    /**
     * This method is used to update the other reports
     */
    @RequestMapping(value = "/updatereports", method = RequestMethod.POST)
    public String updateReport(@ModelAttribute("crudObj") @Valid DashBoardReports entity,
            BindingResult bindingResult, Model model, HttpServletRequest request) {

        try {
            reportsService.updateReports(entity);
            model.addAttribute("otherreports", "otherreports");
            model.addAttribute("other_reports", reportsService.getOtherReports());
            model.addAttribute("report_list", reportsService.list());
            model.addAttribute("reportupdated", "Report Updated Successfully");
        } catch (Exception e) {
            LOG.error(e.toString());
            e.printStackTrace();
        }
        return "home";
    }

    /**
     * This method is used to save the other reports
     */
    @RequestMapping(value = "/savedashboardreports", method = RequestMethod.POST)
    public String save(@Valid DashBoardReports entity, BindingResult bindingResult, Model model,
            HttpServletRequest request) {
        try {
            /*DateTime dt = new DateTime();
            DateTimeZone dtZone = DateTimeZone.forID("Asia/Kolkata");
            DateTime dtus = dt.withZone(dtZone);
            Date dateInIndia = dtus.toLocalDateTime().toDate();*/
            Locale clientLocale = request.getLocale();
            Calendar calendar = Calendar.getInstance(clientLocale);
            TimeZone clientTimeZone = calendar.getTimeZone();
            String clientZone = clientTimeZone.getID();
            DateTime dt = new DateTime();
            DateTimeZone dtZone = DateTimeZone.forID(clientZone);
            DateTime dtus = dt.withZone(dtZone);
            Date dateInIndia = dtus.toLocalDateTime().toDate();
            DashBoardReports dashBoard = new DashBoardReports();
            DashBoardReports report = reportsService.findByName(entity.getName());
            Integer userid = (Integer) request.getSession().getAttribute("userid");
            if (report != null) {
                model.addAttribute("reportupdated", "Report Name Already Exists");
            } else {
                dashBoard.setId(entity.getId());
                dashBoard.setName(entity.getName());
                dashBoard.setDisplayname(entity.getDisplayname());
                dashBoard.setDescription(entity.getDescription());
                //dashBoard.setCreatedBy(entity.getCreatedBy());
                dashBoard.setCreatedBy(userid.toString());
                dashBoard.setCreatedDate(dateInIndia);
                dashBoard.setModifiedBy(entity.getModifiedBy());
                dashBoard.setModifiedDate(dateInIndia);

                reportsService.save(dashBoard);
                if (reportsService.save(dashBoard) == null) {
                    model.addAttribute("reportupdated", "Report Saved Successfully");
                } else {
                    model.addAttribute("reportupdated", "Report Saved Successfully");
                }
            }

            model.addAttribute("crudObj", new DashBoardReports());
            model.addAttribute("other_reports", reportsService.getOtherReports());
            model.addAttribute("otherreports", "otherreports");
        } catch (Exception e) {
            LOG.error(e.toString());
            e.printStackTrace();
        }
        return "home";
    }

}