Rev 1373 | Rev 1525 | 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("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>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(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>