Subversion Repositories bacoAlunos

Rev

Rev 1354 | Rev 1373 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

<%@ page import="jomm.dao.impl.AbstractDao" %>
<%@ page import="org.hibernate.Criteria" %>
<%@ page import="org.hibernate.criterion.Order" %>
<%@ page import="org.hibernate.criterion.Projections" %>
<%@ page import="pt.estgp.estgweb.Globals" %>
<%@ page import="pt.estgp.estgweb.domain.Course" %>
<%@ page import="pt.estgp.estgweb.domain.CourseUnit" %>
<%@ page import="static org.hibernate.criterion.Restrictions.eq" %>
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="static org.hibernate.criterion.Restrictions.eq" %>
<%@ page import="static org.hibernate.criterion.Restrictions.or" %>
<%@ page import="static org.hibernate.criterion.Restrictions.*" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/baco.tld" prefix="baco" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSessionImpl" scope="request"/>

<%
    String all = request.getParameter("all");
%>
<div class="panel panel-default">
    <div class="panel-heading">
        Estatisticas Unidades nos Cursos
    </div>
    <div class="panel-body">

        <%
            boolean allCourses = false;
            List<String> comissionsRoles = null;
            if(UserSession.getUser().isSuperuserOrAdmin() || UserSession.getUser().hasRole(Globals.SERVICES_PROGRAMS_ROLE) || UserSession.getUser().hasRole(Globals.COURSE_DIRECTOR_ROLE) || UserSession.getUser().hasRole(Globals.COURSE_COORDINATOR_ROLE) || UserSession.getUser().hasRole("services"))
            {
                allCourses = true;
                AbstractDao.getCurrentSession().beginTransaction();
                Criteria c = AbstractDao.getCurrentSession().createCriteria(CourseUnit.class)
                        .setProjection(Projections.projectionList().add(Projections.groupProperty("c.validationRole"))
                                .add(Projections.property("c.id")).add(Projections.property("c.name")).add(Projections.property("c.code")))
                        .createAlias("course", "c")
                        .add(eq("importYear", UserSession.getNowConfiguration().getInterfaceImportYear()));
                List<Object[]> validationRoles = c.list();
                AbstractDao.getCurrentSession().getTransaction().commit();
                comissionsRoles = new ArrayList<String>();

                %>
        <div class="avisosWarning" style="display: none">
            <div class="alert alert-warning">Existem cursos sem papel de comissão atribuido
                <button class="btn btn-warning" onclick="$('.avisos').toggle()">Ver/Ocultar Avisos</button>
            </div>
        </div>
        <div class="avisos" style="display: none">
                <%
                boolean avisos = false;
                for(Object[] validationRolesObj: validationRoles)
                {
                    String role = ((String) validationRolesObj[0]);

                    if(role == null || role.trim().length() == 0)
                    {
                        avisos = true;
    %>
                        <div class="alert alert-warning">Atenção o curso <%=validationRolesObj[1]%> (<%=validationRolesObj[2]%>) não tem papel de comissão de curso associado</div>
    <%
                    }else{
                        comissionsRoles.add(role);
                    }
                }
                if(avisos)
                {
            %>
                <script>
                    $(document).ready(function()
                    {
                        $(".avisosWarning").show();
                    });
                </script>
            <%
                }
            %>
        </div>
            <%
            }
            else
            {
                UserSession.getUser().getRolesList();
                comissionsRoles = new ArrayList<String>();
                for(String role: UserSession.getUser().getRolesList())
                {
                    if(role.startsWith(Globals.COURSE_COMMISSION_PROGRAMS_ROLES_PREFIX))
                        comissionsRoles.add(role);
                }
        }
        if(comissionsRoles.size() == 0)
        {
            %>
            <div class="alert alert-warning">
                Lamentamos mas não têm qualquer comissão de curso associada
            </div>
            <%
        }
        else
        {
            %>
            <script>
                $(document).ready(
                        function()
                        {
                            $("#ROLE_VALIDATION_<%=comissionsRoles.get(0)%>").show();
                        }
                );
                function showRoleSeparator(role)
                {
                    <%
                    for(String roleCourse: comissionsRoles)
                    {
                    %>
                        if(role == '<%=roleCourse%>')
                        {
                            $("#ROLE_VALIDATION_<%=roleCourse%>").show();
                            $("#rolesSeparators<%=roleCourse%>").addClass("active");
                        }
                        else
                        {
                            $("#ROLE_VALIDATION_<%=roleCourse%>").hide();
                            $("#rolesSeparators<%=roleCourse%>").removeClass("active");
                        }
                        <%
                    }
                    %>
                }
            </script>
            <%
            try
            {
                AbstractDao.getCurrentSession().beginTransaction();

                if(all == null)
                {
                %>
                <div class="row">
                    <div class="dropdown col-sm-3">
                        <button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">Escolha Comissão
                            <span class="caret"></span></button>
                        <ul class="dropdown-menu">
                    <%--<ul class="nav nav-tabs">--%>
                        <%
                            for(String roleCourse: comissionsRoles)
                            {
                                request.setAttribute("roleCourse",roleCourse);
                        %>
                                <li id="rolesSeparators<%=roleCourse%>"><a href="javascript:showRoleSeparator('<%=roleCourse%>')"><bean:message key="user.role.${roleCourse}"/></a></li>
                        <%
                            }
                        %>
                        </ul>
                    </div>
                    <div class="col-sm-3">
                        <html:link styleClass="btn btn-default" action="/user/startLoadCourseCourseUnitsStatistics?all=true">Mostrar Tudo na mesma tabela</html:link>
                    </div>
                </div>

                <%
                }
                else if(all!=null && all.equals("true"))
                {
                %>
                    <html:link styleClass="btn btn-default" action="/user/startLoadCourseCourseUnitsStatistics">Filtrar por Comissão de Curso</html:link>
                    <table class="tablesorter tablesorterfiltered">
                        <thead>
                        <tr>
                            <th>Cod Curso.</th>
                            <th class="filter-name filter-select">Curso</th>
                            <th>Cod.</th>
                            <th class="filter-name filter-select">Sem.</th>
                            <th>Nome</th>


                            <th>Sums</th>
                            <th>Sums Pre</th>
                            <th>Sums Falt</th>

                            <th><P></P>lan</th>
                            <th class="filter-name filter-select">Ficha</th>
                            <th>Aval.Enu</th>
                            <th>Aval.Paut</th>
                            <th class="filter-name filter-select">Relat.</th>
                            <th class="filter-name filter-select">Pedag.</th>

                            <th>Conteud.</th>
                            <th class="filter-name filter-select">Detalhes</th>

                        </tr>
                        </thead>
                        <tbody>
            <%
                }
                for(String roleCourse: comissionsRoles)
                {
                    request.setAttribute("roleCourse",roleCourse);
                    if(all == null)
                    {
                    %>
                    <div id="ROLE_VALIDATION_<%=roleCourse%>" style="display: none">
                        <h1><bean:message key="user.role.${roleCourse}"/></h1>
                    <%
                    }
                    Criteria c = AbstractDao.getCurrentSession().createCriteria(CourseUnit.class)
                            .setProjection(Projections.projectionList()
                                    .add(Projections.groupProperty("c.id"))
                                    .add(Projections.property("c.name"))
                                    .add(Projections.property("c.code")))
                            .createAlias("course", "c")
                            .add(eq("importYear", UserSession.getNowConfiguration().getInterfaceImportYear()))
                            .add(eq("c.validationRole", roleCourse));
                    List<Object[]> coursesForRole = c.list();

                    if(all==null && coursesForRole.size() > 1)
                    {
                    %>
                        <div class="alert alert-info alert-small">Mais que um curso para o papel <bean:message key="user.role.${roleCourse}"/></div>
                    <%
                    }
                    if(all == null)
                    {
                    %>
                    <hr/>
                    <%
                    }


                    for(Object[] courseArray: coursesForRole)
                    {
                        Long courseId = (Long) courseArray[0];
                        String courseName = (String) courseArray[1];
                        String courseCode = (String) courseArray[2];

                        c = AbstractDao.getCurrentSession().createCriteria(CourseUnit.class)
                                .setProjection(Projections.distinct(Projections.property("id")))
                                .createAlias("course", "c")
                                .add(eq("importYear", UserSession.getNowConfiguration().getInterfaceImportYear()))
                                .add(eq("c.id", courseId))
                                ;
                        c.addOrder(Order.asc("name"));
                        List<Long> courseUnits = c.list();

                        if(all==null && courseUnits.size() == 0)
                        {
                        %>
                            <h2><bean:message key="user.role.${roleCourse}"/> </h2>
                            <div class="alert alert-info alert-small">
                                Não foram encontradas unidades curriculares no ano ${UserSession.nowConfiguration.interfaceImportYear}
                            </div>
                        <%
                        }
                        else
                        {
                                //
                            // List<Student> students = DaoFactory.getStudentDaoImpl().loadFromCoursesWithValidationRoles(comissionsRoles,UserSession.getNowConfiguration().getInterfaceImportYear());
                            if(all == null)
                            {
                        %>
                            <h2><%=courseName%> (<%=courseCode%>)</h2>
                            <div class="alert alert-info alert-small">
                                Existem <%=courseUnits.size()%> unidades no ano ${UserSession.nowConfiguration.interfaceImportYear}
                            </div>

                            <table class="tablesorter tablesorterfiltered">
                                <thead>
                                <tr>
                                    <th>Cod.</th>
                                    <th class="filter-name filter-select">Sem.</th>
                                    <th>Nome</th>


                                    <th>Sums</th>
                                    <th>Sums Pre</th>
                                    <th>Sums Falt</th>

                                    <th>Plan</th>
                                    <th class="filter-name filter-select">Ficha</th>
                                    <th>Aval.Enu</th>
                                    <th>Aval.Paut</th>
                                    <th class="filter-name filter-select">Relat.</th>
                                    <th class="filter-name filter-select">Pedag.</th>

                                    <th>Conteud.</th>
                                    <th class="filter-name filter-select">Detalhes</th>

                                </tr>
                                </thead>
                                <tbody>
                                    <%
                                }
                                        for(Long unit: courseUnits)
                                        {
                                            Long unitId =  unit;
                                            CourseUnit cu = DaoFactory.getCourseUnitDaoImpl().load(unitId);
                                            request.setAttribute("cu",cu);
                                    %>
                                    <tr>
                                        <%
                                            if(all != null && all.equals("true"))
                                            {
                                        %>
                                        <td><%=courseCode%></td>
                                        <td><%=courseName%></td>
                                        <%
                                            }
                                        %>
                                        <td>${cu.code}</td>
                                        <td>${cu.semestre}</td>
                                        <td><html:link target="_blank" action="/user/startLoadCourseUnitFromHome?id=${cu.id}"> ${cu.name}</html:link></td>
                                        <td>${cu.statdtpSumaries}</td>
                                        <td>${cu.statdtpSumariesPrelancados}</td>
                                        <td>${cu.statdtpSumariesMissing}</td>
                                        <td>${cu.statdtpPlaneamentoFiles}</td>
                                        <td><bean:message key="yes.no.${cu.statdtpFichaCurricularValid}"/></td>
                                        <td>${cu.statdtpAvaliacaoEnunciadosFiles}</td>
                                        <td>${cu.statdtpAvaliacaoPautasFiles}</td>
                                        <td>${cu.statdtpEvaluationReportState}</td>
                                        <td>${cu.statdtpInqueritoPedagogicoFiles}</td>
                                        <td>${cu.statcontentsFiles}</td>
                                        <td><button class="btn btn-default" data-href="<%=request.getContextPath()%>/user/courseunits/statsAjax.jsp?courseUnitId=${cu.id}" data-title="Estatisticas da Unidade ${cu.name} (${cu.code})" data-toggle="modal" data-target="#modalAjaxRequest"><span class="glyphicon glyphicon-zoom-in"/></button> </td>
                                    </tr>
                                    <%
                                        }

                            if(all == null)
                            {
                            %>

                                </tbody>
                            </table>

                        <%
                            }
                        }

                    }

                    if(all == null)
                    {
                    %>
                    </div> <!--FIM DE ROLE VALIDATION-->
                    <%
                    }

                }
                if(all != null && all.equals("true"))
                {
                %>
                        </tbody>
                    </table>
                <%
                }
                AbstractDao.getCurrentSession().getTransaction().commit();
            }
            catch(Exception e)
            {
                System.out.println(e.toString());
                e.printStackTrace();
            }
        }

        %>

    </div>
</div>