/branches/v3/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportStudentsService.java |
---|
60,6 → 60,7 |
int unitsAddedToStudents = 0; |
int alunosErasmusCadeirasEcontradas = 0; |
int turmaMoreThanOneRegularCourse = 0; |
int unidadesProcuradasNumCursoAleatorio = 0; |
List<String> turmasMoreThanOneCourse = new ArrayList<String>(); |
int turmasWrongSubscriptions = 0; |
int estudantesDesaparecidosDoSigesNesteAno = 0; |
100,6 → 101,7 |
estudantesComCadeirasSemTurma = 0; |
turmasComCodigoNullRemovidas = 0; |
unidadesSoComAlunosExtra = 0; |
unidadesProcuradasNumCursoAleatorio = 0; |
ImportCourseService.resetCourseYearTurmaPolicy(); |
149,6 → 151,8 |
} |
Aluno alunoSiges = service.loadInscrito(c,institutionCode, year,conn); |
if(alunoSiges.getCodigo()==15726) |
System.out.println(""); |
Student s = loadStudent(alunoSiges); |
boolean newUser = false; |
if(s.getId() <= 0) |
260,6 → 264,8 |
serviceLogInfo("#Units not Added because localy removed: " + unitsLocallyRemovedNotAdded); |
serviceLogInfo("#Alunos com Unidades repetidas: " + unitsRepeated); |
serviceLogInfo("#ERASMUS Sum Subscriptions Replaced: " + alunosErasmusCadeirasEcontradas); |
if(unidadesProcuradasNumCursoAleatorio > 0) |
serviceLogInfo("######!!!!!Unidades atribuidas com curso aleatoriamente escolhido derivado a duvidas: " + unidadesProcuradasNumCursoAleatorio + " (procurar por \"tem mais de um curso vamos procurar num qualquer\")"); |
if(turmaMoreThanOneRegularCourse > 0) |
{ |
serviceLogWarn("#########!!!!!!!ATENÇÃO TURMAS COM MAIS DE UM CURSO: " + turmaMoreThanOneRegularCourse); |
319,6 → 325,9 |
logger.info("#Units not Added because localy removed: " + unitsLocallyRemovedNotAdded); |
logger.info("#Alunos com Unidades repetidas: " + unitsRepeated); |
logger.info("#ERASMUS Sum Subscriptions Replaced: " + alunosErasmusCadeirasEcontradas); |
if(unidadesProcuradasNumCursoAleatorio > 0) |
logger.warn("######!!!!!Unidades atribuidas com curso aleatoriamente escolhido derivado a duvidas: " + unidadesProcuradasNumCursoAleatorio + " (procurar por \"tem mais de um curso vamos procurar num qualquer\")"); |
if(turmaMoreThanOneRegularCourse > 0) |
{ |
logger.warn("#########!!!!!!!ATENÇÃO TURMAS COM MAIS DE UM CURSO: " + turmaMoreThanOneRegularCourse); |
709,17 → 718,11 |
logger.warn(msg); |
serviceLogWarn(msg); |
} |
sendNotificationAdmin("Atenção existe um caso de dúvida nas inscrições",msgAdmin); |
sendNotificationAdmin("Atenção existe um caso de dúvida nas inscrições vamos devolver código invalido de curso para o sistema atribuir o primeiro onde a unidade se encontre",msgAdmin); |
return -1; |
} |
if(cursos.size() > 0) |
else if(cursos.size() == 1) |
{ |
/**Para garantir que se atribui sempre o mesmo curso em mais que uma iteração**/ |
Collections.sort(cursos,new Comparator<Integer>() { |
@Override |
public int compare(Integer integer, Integer integer2) { |
return integer - integer2; |
} |
}); |
return cursos.get(0); |
} |
else |
950,13 → 953,11 |
} |
else if(turmasAfectadas.get(turma) == null) |
{ |
//Este caso nao devera acontecer mas fica aqui a seguranca |
String msg = "Atenção turma com código " + turma.getTurma() + " nao existe nas afetadas e nao e' local unit:" + turma.getCourseUnit().getCode() + " aluno:" + student.getSigesCode(); |
String msg = "Atenção turma com código " + turma.getTurma() + " nao existe nas afetadas e vai ser removida ao aluno e nao e' local unit:" + turma.getCourseUnit().getCode() + " aluno:" + student.getSigesCode(); |
serviceLogError(msg); |
logger.error(msg); |
} |
else |
{ |
iter.remove(); |
turma.getStudents().remove(student); |
} |
1126,12 → 1127,22 |
logger.info(msg); |
} |
codigoDoCurso = getRealCourse(disciplina.getCdTurma(),year,institutionCode,disciplina.getCdDuracao(),logMessages); |
if(codigoDoCurso != null) |
{ |
if(codigoDoCurso < 0) |
{ |
String msg = "Codigo de curso (" + disciplina.getCodigoCurso() + ") da disciplina " + disciplina.getCodigo() + " tipo: " + disciplina.getCdTipoDisciplina() + " turma: " + disciplina.getCdTurma() + " tem mais de um curso vamos procurar num qualquer curso onde exista "; |
serviceLogInfo(msg); |
logger.info(msg); |
} |
else |
{ |
String msg = "Codigo de curso (" + disciplina.getCodigoCurso() + ") da disciplina " + disciplina.getCodigo() + " tipo: " + disciplina.getCdTipoDisciplina() + " turma: " + disciplina.getCdTurma() + " Modificado para o real: " + codigoDoCurso; |
serviceLogInfo(msg); |
logger.info(msg); |
} |
} |
else |
{ |
String msg = "Problema Encontrado Turma não tem Curso Real --> Codigo de curso (" + disciplina.getCodigoCurso() + ") da disciplina " + disciplina.getCodigo() + " tipo: " + disciplina.getCdTipoDisciplina() + " turma: " + disciplina.getCdTurma(); |
1149,12 → 1160,34 |
//Politica de separação de turmas em unidades independentes neste curso |
boolean separateTurmas = ImportCourseService.loadCourseYearTurmasPolicy(codigoDoCurso, year, logMessages, this); |
List<CourseUnit> courseUnits; |
/*BLOCO DE LOAD DAS UNIDADES*/ |
if(codigoDoCurso <= 0) //O curso encontrado foi mais que um vamos fazer o melhor esforço e atribuir um que dê isto apenas deverá acontecer com erasmus e em turmas com mais que um curso |
{ |
unidadesProcuradasNumCursoAleatorio++; |
if(separateTurmas) |
courseUnits = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUniqueWithTurmaIgnoreCourse("" + disciplina.getCodigo(), disciplina.getCdDuracao(), disciplina.getCdLectivo(), disciplina.getCdTurma()); |
else |
courseUnits = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUniqueIgnoreCourse("" + disciplina.getCodigo(),disciplina.getCdDuracao(),disciplina.getCdLectivo()); |
if(courseUnits.size() > 0) |
{ |
//Neste caso adicionamos apenas a primeira |
CourseUnit cu = courseUnits.get(0); |
courseUnits = new ArrayList<CourseUnit>(); |
courseUnits.add(cu); |
} |
} |
else |
{ |
if(separateTurmas) |
courseUnits = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUniqueWithTurma("" + disciplina.getCodigo(), "" + codigoDoCurso, disciplina.getCdDuracao(), disciplina.getCdLectivo(), disciplina.getCdTurma()); |
else |
courseUnits = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique("" + disciplina.getCodigo(),"" + codigoDoCurso,disciplina.getCdDuracao(),disciplina.getCdLectivo()); |
} |
/*BLOCO DE LOAD DAS UNIDADES*/ |
if(courseUnits != null && courseUnits.size() > 1 ) |
{ |
studentComUnidadesRepetidas=true; |
1347,7 → 1380,7 |
System.out.println("YEAR:" + year); |
if(args != null && args.length > 0) |
year = args[0]; |
String institutionCode = "1"; |
String institutionCode = "3"; |
if(args != null && args.length > 1) |
institutionCode = args[1]; |
AbstractDao.getCurrentSession().beginTransaction(); |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/sigesimports/oracle/dao/AlunoDao.java |
---|
134,7 → 134,13 |
"CSE.T_INSCRI.CD_TURMA_P, " + |
"CSE.T_INSCRI.CD_TURMA_L, " + |
"CSE.T_INSCRI.CD_TURMA_TP " + |
"FROM CSE.T_ALUNOS INNER JOIN (CSE.T_INSCRI INNER JOIN CSE.T_TBDISCIP ON CSE.T_INSCRI.CD_DISCIP = CSE.T_TBDISCIP.CD_DISCIP) ON CSE.T_ALUNOS.CD_ALUNO = CSE.T_INSCRI.CD_ALUNO WHERE CSE.T_ALUNOS.CD_ALUNO = " + codigo + " AND (((CSE.T_TBDISCIP.CD_INSTITUIC)=" + codigoInstituicao + ") AND ((CSE.T_INSCRI.CD_LECTIVO)='" + ano + "') AND ((CSE.T_ALUNOS.CD_SITUA_PAR)=1) AND ((CSE.T_INSCRI.CD_STATUS)<>5) AND (CSE.T_INSCRI.CD_TIPDIS = 2 OR CSE.T_INSCRI.CD_TIPDIS = 1 OR CSE.T_INSCRI.CD_TIPDIS = 6))"); |
" FROM CSE.T_INSCRI INNER JOIN CSE.T_TBDISCIP ON CSE.T_INSCRI.CD_DISCIP = CSE.T_TBDISCIP.CD_DISCIP" + |
" WHERE CSE.T_INSCRI.CD_ALUNO = " + codigo + " " + |
" AND" + |
" CSE.T_TBDISCIP.CD_INSTITUIC= " + codigoInstituicao + " AND " + |
" CSE.T_INSCRI.CD_LECTIVO='" + ano + "' AND " + |
" CSE.T_INSCRI.CD_STATUS<>5 AND " + |
" (CSE.T_INSCRI.CD_TIPDIS = 2 OR CSE.T_INSCRI.CD_TIPDIS = 1 OR CSE.T_INSCRI.CD_TIPDIS = 6) "); |
//CD_TIPDISC = 1 Inscricoes normais |
//CD_TIPDISC = 2 Nao conta para media |
//CD_TIPDISC = 3 Qualitativa |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportCourseService.java |
---|
670,7 → 670,7 |
public static void main(String[] args) throws ServiceException |
{ |
String year = DaoFactory.getConfigurationDaoImpl().getImportsDefaultImportYearCreateTransaction(); |
int institutionCode = 4;// DaoFactory.getConfigurationDaoImpl().getInstitutionCodeCreateTransaction(); |
int institutionCode = 3;// DaoFactory.getConfigurationDaoImpl().getInstitutionCodeCreateTransaction(); |
if(args != null && args.length > 0) |
year = args[0]; |
if(args != null && args.length > 1) |
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/views/CourseUnitView.java |
---|
47,6 → 47,7 |
private CourseUnit courseUnit; |
private UserView responsableTeacher; |
private Set<UserView> teachers; |
private Set<UserView> studentsWithoutTurma; |
private Set<UserView> students; |
private List<UserView> studentsOrderedByName; |
private List<UserView> studentsOrderedByNumber; |
173,6 → 174,7 |
this.id = courseUnit.getId(); |
teachers = new HashSet<UserView>(); |
students = new HashSet<UserView>(); |
studentsWithoutTurma = new HashSet<UserView>(); |
if(initTeachers && courseUnit.getTeachers() != null) |
{ |
responsableTeacher = new UserView(courseUnit.getResponsableTeacher()); |
206,6 → 208,25 |
else |
logger.error("Unidade sem turmas: " + courseUnit.getName() + " (" + courseUnit.getCode() + ")"); |
} |
if(students.size() != courseUnit.getStudents().size()) |
{ |
for(Student s: courseUnit.getStudents()) |
{ |
boolean found = false; |
for(UserView uv : students) |
{ |
if(uv.getId() == s.getId()) |
{ |
found = true; |
break; |
} |
} |
if(!found) |
studentsWithoutTurma.add(new UserView(s)); |
} |
} |
if(initBlog) |
{ |
blog = new BlogView(((CourseUnitImpl)courseUnit).getUnitBlog(),this); |
223,6 → 244,10 |
courseView = new CourseView(courseUnit.getCourse(),false); |
} |
public Set<UserView> getStudentsWithoutTurma() { |
return studentsWithoutTurma; |
} |
public String getEvaluationStreamId() { |
return evaluationStreamId; |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/CourseUnitImpl.java |
---|
186,7 → 186,27 |
", " + getSemestre() + " of " + getImportYear() + " - " + getName() + " Turma - " + getCdTurma(); |
} |
public int studentsSize() |
{ |
if(getStudents() !=null) |
return getStudents().size(); |
return 0; |
} |
public int studentsTurmaSize() |
{ |
int countTotalStudentsTurmas = 0; |
if(getTurmas() == null) |
return 0; |
for(CourseUnitTurma turma: getTurmas()) |
{ |
if(turma.getStudents() != null) |
countTotalStudentsTurmas+=turma.getStudents().size(); |
} |
return countTotalStudentsTurmas; |
} |
public boolean hasStudent(long studentId, boolean transaction) |
{ |
Set<StudentImpl> students; |
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseUnitDaoImpl.java |
---|
285,18 → 285,24 |
.list(); |
} |
public List<CourseUnit> loadBySigesCodeUniqueIgnoreCourse(String sigesCode, String semestre, String year) |
{ |
return loadBySigesCodeUnique(sigesCode,null,semestre,year); |
} |
//TODO Na actualizacao de uma cadeira para o curso de TESTE mudar o coursecode para o o coursecode desse curso para nao deixar os dados duplicados e mal |
//se nao a carregar unidades vai buscar a errada |
public List<CourseUnit> loadBySigesCodeUnique(String sigesCode, String courseCode, String semestre, String year) |
{ |
List<CourseUnit> cus = |
createCriteria() |
.add(eq("code", sigesCode)) |
.add(eq("courseCode", courseCode)) |
Criteria c = createCriteria(); |
if(courseCode != null) |
c.add(eq("courseCode", courseCode)); |
c.add(eq("code", sigesCode)) |
.add(eq("semestre", semestre)) |
.add(eq("importYear", year)) |
.add(eq("importYear", year)); |
//not any more .add(eq("cdTurma", turma)) |
.list(); |
List<CourseUnit> cus = c.list(); |
if(cus.size() > 1) |
{ |
logger.warn("WARNING WARNING ####Two units found for: "); |
307,16 → 313,20 |
return cus; |
} |
public List<CourseUnit> loadBySigesCodeUniqueWithTurmaIgnoreCourse(String sigesCode, String semestre, String year,String turma){ |
return loadBySigesCodeUniqueWithTurma(sigesCode,null,semestre,year,turma); |
} |
public List<CourseUnit> loadBySigesCodeUniqueWithTurma(String sigesCode, String courseCode, String semestre, String year,String turma) |
{ |
List<CourseUnit> cus = |
createCriteria() |
.add(eq("code", sigesCode)) |
.add(eq("courseCode", courseCode)) |
Criteria c = createCriteria(); |
if(courseCode != null) |
c.add(eq("courseCode", courseCode)); |
c.add(eq("code", sigesCode)) |
.add(eq("semestre", semestre)) |
.add(eq("importYear", year)) |
.add(eq("cdTurma", turma)) |
.list(); |
.add(eq("cdTurma", turma)); |
List<CourseUnit> cus = c.list(); |
if(cus.size() > 1) |
{ |
logger.warn("WARNING WARNING ####Two units found for: "); |
/branches/v3/impl/src/doc/siges/ModeloDeInformacaoPAE.docx |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/v3/impl/src/web/admin/questionarios/pedagogicoEstudante/questionarioObsEdit.jsp |
---|
42,10 → 42,11 |
<div class="form-group"> |
<label class="control-label col-sm-2">Observações</label> |
<div class="col-sm-10"> |
<textarea class="form-control" name="val" id="setObsUnidade<%=unidadeAfetaId%>Val"><%=unidadeAfeta.getObs()%></textarea> |
<textarea class="form-control" rows="10" name="val" id="setObsUnidade<%=unidadeAfetaId%>Val"><%=unidadeAfeta.getObs()%></textarea> |
</div> |
</div> |
<button type="button" id="setObsUnidade<%=unidadeAfetaId%>" class="btn btn-success" data-dismiss="modal">Salvar</button> |
<button type="button" id="setObsUnidade<%=unidadeAfetaId%>" class="btn btn-success pull-right" data-dismiss="modal">Salvar</button> |
<button style="margin-right:10px" type="button" onclick="$(this.form).find('textarea').html('')" class="btn btn-warning pull-right">Clear</button> |
</form> |
<% |
AbstractDao.getCurrentSession().getTransaction().commit(); |
/branches/v3/impl/src/web/admin/questionarios/pedagogicoEstudante/pedagogicoCourseCheckCursoAfeto.jsp |
---|
92,8 → 92,8 |
<th>Docentes</th> |
<th>Estudantes</th> |
<th>Alertas</th> |
<th>Docentes s/ turma</th> |
<th>Turmas s/ docente</th> |
<th>Docentes s/ sumario</th> |
<th>Turmas s/ sumario</th> |
<th>Usar</th> |
<th>Vista</th> |
<th>Obs.</th> |
160,9 → 160,38 |
</td> |
<td> |
<% |
CourseUnitImpl courseUnitImpl = (CourseUnitImpl) DaoFactory.getCourseUnitDaoImpl().narrow(unidade.getCourseUnit()); |
int students = courseUnitImpl.studentsSize(); |
int studentsTurmasSize = courseUnitImpl.studentsTurmaSize(); |
if(students != studentsTurmasSize) |
{ |
unidade.setMarked(true); |
if(unidade.getObs() != null && unidade.getObs().indexOf("Nº Estudantes")< 0) |
unidade.setObs("Nº Estudantes diferente Somatorio Estudantes das turmas"); |
%> |
<a href="#" data-href="<%=request.getContextPath()%>/user/courseunits/listStudentsService.jsp?courseUnitView.id=${unidade.courseUnit.id}" data-title="Alunos da unidade de ${unidade.nome} (${unidade.codigoUnidade}) do curso de ${CursoAfeto.nome} (${CursoAfeto.codigoCurso})" data-toggle="modal" data-target="#modalAjaxRequest"> |
${unidade.students} |
<%=students%> |
</a> |
!= |
<a href="#" data-href="<%=request.getContextPath()%>/user/courseunits/listStudentsService.jsp?courseUnitView.id=${unidade.courseUnit.id}" data-title="Alunos da unidade de ${unidade.nome} (${unidade.codigoUnidade}) do curso de ${CursoAfeto.nome} (${CursoAfeto.codigoCurso})" data-toggle="modal" data-target="#modalAjaxRequest"> |
<%=studentsTurmasSize%> |
</a> |
<span class="glyphicon glyphicon-alert"></span> |
<% |
} |
else |
{ |
%> |
<a href="#" data-href="<%=request.getContextPath()%>/user/courseunits/listStudentsService.jsp?courseUnitView.id=${unidade.courseUnit.id}" data-title="Alunos da unidade de ${unidade.nome} (${unidade.codigoUnidade}) do curso de ${CursoAfeto.nome} (${CursoAfeto.codigoCurso})" data-toggle="modal" data-target="#modalAjaxRequest"> |
<%=students%> |
</a> |
<% |
} |
%> |
</td> |
<td> |
<logic:equal value="true" name="unidade" property="marked"> |
193,7 → 222,7 |
</td> |
</tr> |
<% |
DaoFactory.getQuestionarioPedagogicoUnidadeCurricularAfetaDaoImpl().evict(unidade); |
//DaoFactory.getQuestionarioPedagogicoUnidadeCurricularAfetaDaoImpl().evict(unidade); |
%> |
</logic:iterate> |
</tbody> |
/branches/v3/impl/src/web/admin/questionarios/pedagogicoEstudante/pedagogicoCourseCheckUnidadeAfeta.jsp |
---|
1,9 → 1,9 |
<%@ page import="jomm.dao.impl.AbstractDao" %> |
<%@ page import="pt.estgp.estgweb.domain.CourseUnitImpl" %> |
<%@ page import="pt.estgp.estgweb.domain.QuestionarioPedagogicoCursoAfeto" %> |
<%@ page import="pt.estgp.estgweb.domain.QuestionarioPedagogicoUnidadeCurricularAfeta" %> |
<%@ page import="pt.estgp.estgweb.domain.QuestionarioPedagogicoUnidadeCurricularAfetaImpl" %> |
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %> |
<%@ page import="java.util.List" %> |
<%@ page import="pt.estgp.estgweb.domain.QuestionarioPedagogicoUnidadeCurricularAfeta" %> |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %> |
57,8 → 57,10 |
if(tipoPersistente == null) |
{ |
unidade.setMarked(true); |
if(unidade.getObs().indexOf("ERRO TURMA NAO SINCRONIZADA")<0) |
unidade.setObs(unidade.getObs() + " ERRO TURMA NAO SINCRONIZADA TENTE CORRER AS IMPORTACOES ALUNOS E DOCENTES: " + tipologia.getCdTurma() + " " + tipologia.getCdDocente() + " " + tipologia.getDsTipologia()); |
if(unidade.getObs() != null && unidade.getObs().indexOf("Tipologia inexistente")<0) |
((QuestionarioPedagogicoUnidadeCurricularAfetaImpl)unidade).addObs( |
"Tipologia inexistente nesta unidade, possivelmente foi devida a sumários de uma turma paralela noutro curso Verificar: " + tipologia.getCdTurma() + " verificar se esta turma ou par sua têm curso associado. " |
+ tipologia.getCdDocente() + " " + tipologia.getDsTipologia()); |
%> |
<script> |
$(document).ready( |
68,7 → 70,7 |
} |
); |
</script> |
<tr> |
<%--<tr> |
<td>${tipologia.cdDocente}</td> |
<td>ERRO PROFESSOR NAO SINCRONIZADO</td> |
<td>${tipologia.dsTipologia}</td> |
96,7 → 98,7 |
<span class="glyphicon glyphicon-ok"></span> |
</logic:equal> |
</td> |
</tr> |
</tr>--%> |
<% |
} |
else |
/branches/v3/impl/src/web/user/courseunits/students.jsp |
---|
117,4 → 117,76 |
</tbody> |
</table> |
</div> |
</div> |
</div> |
<% |
if(CourseUnitView.getStudentsWithoutTurma() != null && CourseUnitView.getStudentsWithoutTurma().size() > 0) |
{ |
request.setAttribute("students",CourseUnitView.getStudentsWithoutTurma()); |
request.setAttribute("studentsSize",CourseUnitView.getStudentsWithoutTurma().size()); |
%> |
<h2>Estudantes MAL ATRIBUIDOS, SEM TURMA, contactar a administração do sistema informático</h2> |
<div class="panel panel-default"> |
<div class="panel-body"> |
<p> |
<logic:notEmpty name="turma"> |
(${turma}) |
</logic:notEmpty> |
<bean:message key="courseunit.students.count"/>: ${studentsSize} |
</p> |
<table class="tablesorterfiltered"> |
<thead> |
<tr> |
<%/*<th><html:link action="${user}/startLoadCourseUnitStudents${fromAction}?courseUnitView.id=${CourseUnitView.id}&order=byNumber"><bean:message key="number"/></html:link></th> |
<th><html:link action="${user}/startLoadCourseUnitStudents${fromAction}?courseUnitView.id=${CourseUnitView.id}&order=byName"><bean:message key="name"/></html:link></th> |
*/%> |
<th><bean:message key="number"/></th> |
<th><bean:message key="name"/></th> |
<th><bean:message key="user"/></th> |
<th><bean:message key="email"/></th> |
<baco:hasRole role="teacher"> |
<th><bean:message key="phone.number"/></th> |
</baco:hasRole> |
</tr> |
</thead> |
<tbody> |
<logic:iterate id="student" name="students" type="pt.estgp.estgweb.domain.views.UserView"> |
<tr> |
<td> |
${student.code} |
</td> |
<td> |
<logic:notEmpty name="fromAction"> |
<html:link action="${user}/startLoadStudentCourseUnit${fromAction}?code=${student.code}&courseUnitView.id=${CourseUnitView.id}">${student.name}</html:link> |
</logic:notEmpty> |
<logic:empty name="fromAction"> |
<html:link target="_blank" action="/user/startProfileFromHome.do?userView.id=${student.id}">${student.name}</html:link> |
</logic:empty> |
</td> |
<td> |
${student.username} |
</td> |
<td> |
<logic:empty name="UserSession" property="user"> |
${student.safeEmail} |
</logic:empty> |
<logic:notEmpty name="UserSession" property="user"> |
${student.email} |
</logic:notEmpty> |
</td> |
<baco:hasRole role="teacher"> |
<td>${student.phonenumber} </td> |
</baco:hasRole> |
</tr> |
</logic:iterate> |
</tbody> |
</table> |
</div> |
</div> |
<% |
} |
%> |