fixes

parent 4e195505
......@@ -2798,6 +2798,7 @@ var ArchivosComponent = (function () {
this.soloMfTooltip = 'Mostrar solo archivos matefun';
var todosLosCursos = this.authService.getTodosLosCursos();
Promise.all(todosLosCursos.map(function (course) { return (_this.haskellService.getCourseGroupsAndMembers(course['id'])); })).then(function (cgm) {
console.log('CGM: ', cgm);
_this.coursesGroupsAndMembers = cgm;
});
this.sortFunction = 'tipo';
......
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
......@@ -61,7 +61,7 @@ export class ArchivosComponent {
directorioCompartidoActual: any
sortFunction:any;
coursesGroupsAndMembers;
configCodeMirror = JSON.parse(localStorage.getItem('codeMirrorConfig')) ;
configCodeMirror = JSON.parse(localStorage.getItem('codeMirrorConfig'));
archivosCurso: Archivo[] = [];
realizandoEntrega: boolean = false;
......@@ -109,6 +109,7 @@ export class ArchivosComponent {
this.haskellService.getCourseGroupsAndMembers(course['id'])
))
).then( cgm => {
console.log ('CGM: ' , cgm);
this.coursesGroupsAndMembers = cgm;
});
......
......@@ -83,7 +83,7 @@
<td>Archivos Accedidos
&nbsp;&nbsp;<i style="font-size: 20px;" triggers="mouseenter:mouseleave" class="fa fa-info-circle fa-4" placement="top" ngbPopover="{{help.textFileAccess}}" popoverTitle="{{help.titleFileAccess}}"></i>
</td>
<td>{{liceoSeleccionado.archivosAccedidos.length}}&nbsp;&nbsp;<p class="link" (click)="mostrarModalDetalle('file');">detalle</p> </td>
<td>{{liceoSeleccionado.archivosAccedidos.length}}&nbsp;&nbsp;<p class="link" *ngIf="liceoSeleccionado.archivosAccedidos.length>0" (click)="mostrarModalDetalle('file');">detalle</p></td>
</tr>
<tr>
<td>Acceso a curso (total período)
......@@ -92,7 +92,7 @@
<td *ngIf="liceoSeleccionado.cursos">
<div class="row">
<div class="col-3">
{{liceoSeleccionado.cursos.length}}
{{ this.calcularAccesoACurso }}
</div>
<div class="col-7">
<select [(ngModel)]="cursoSeleccionado" class="form-control" [ngModelOptions]="{standalone: true}">
......@@ -136,9 +136,9 @@
<ng-template ngbTabContent>
<div class="card">
<p class="ml-2 mt-2 liceomsg" *ngIf="!liceoSeleccionado">Debe seleccionar un liceo ...</p>
<p class="ml-2 mt-2 liceomsg" *ngIf="!!liceoSeleccionado && loading">Cargando <img width=40 src="assets/img/btnloading.gif"/></p>
<p class="ml-2 mt-2 liceomsg" *ngIf="!!liceoSeleccionado && loadingTiempos">Cargando <img width=40 src="assets/img/btnloading.gif"/></p>
<div *ngIf="!!liceoSeleccionado && !loading" class="row mt-3">
<div *ngIf="!!liceoSeleccionado && !loadingTiempos" class="row mt-3">
<div class="col-md-2"></div>
<div class="col-md-3">
<label>Tipo de función</label>
......@@ -158,18 +158,18 @@
</div>
</div>
<div *ngIf="!!liceoSeleccionado && !loading" class="row mt-3">
<div class="col-md-1"></div>
<div class="col-md-8">
<div *ngIf="!!liceoSeleccionado && !loadingTiempos" class="row mt-3 pl-2">
<div class="col-md-11">
<table class="table table-hover">
<thead>
<tr>
<th scope="col">Nombre</th>
<th scope="col">Tipo</th>
<th scope="col">Maximo</th>
<th scope="col">Promedio</th>
<th scope="col">Minimo</th>
<th scope="col">Fecha</th>
<th class="simLink" (click)="setOrder('nombre')" scope="col">Nombre <i *ngIf="tipoOrden=='nombre-down'" class="fa fa-arrow-down" aria-hidden="true"></i> <i *ngIf="tipoOrden=='nombre-up'" class="fa fa-arrow-up" aria-hidden="true"></i> </th>
<th class="simLink" (click)="setOrder('tipo')" scope="col">Tipo <i *ngIf="tipoOrden=='tipo-down'" class="fa fa-arrow-down" aria-hidden="true"></i> <i *ngIf="tipoOrden=='tipo-up'" class="fa fa-arrow-up" aria-hidden="true"></i> </th>
<th class="simLink" (click)="setOrder('max')" scope="col">Maximo <i *ngIf="tipoOrden=='max-down'" class="fa fa-arrow-down" aria-hidden="true"></i> <i *ngIf="tipoOrden=='max-up'" class="fa fa-arrow-up" aria-hidden="true"></i> </th>
<th class="simLink" (click)="setOrder('promediodia')" scope="col">Promedio <i *ngIf="tipoOrden=='promediodia-down'" class="fa fa-arrow-down" aria-hidden="true"></i> <i *ngIf="tipoOrden=='promediodia-up'" class="fa fa-arrow-up" aria-hidden="true"></i> </th>
<th class="simLink" (click)="setOrder('min')" scope="col">Minimo <i *ngIf="tipoOrden=='min-down'" class="fa fa-arrow-down" aria-hidden="true"></i> <i *ngIf="tipoOrden=='min-up'" class="fa fa-arrow-up" aria-hidden="true"></i> </th>
<th class="simLink" (click)="setOrder('fecha')" scope="col">Fecha <i *ngIf="tipoOrden=='fecha-down'" class="fa fa-arrow-down" aria-hidden="true"></i> <i *ngIf="tipoOrden=='fecha-up'" class="fa fa-arrow-up" aria-hidden="true"></i> </th>
<th class="simLink" (click)="setOrder('nombreliceo')" scope="col">Liceo <i *ngIf="tipoOrden=='nombreliceo-down'" class="fa fa-arrow-down" aria-hidden="true"></i> <i *ngIf="tipoOrden=='nombreliceo-up'" class="fa fa-arrow-up" aria-hidden="true"></i> </th>
</tr>
</thead>
<tbody>
......@@ -177,16 +177,16 @@
<td><b>{{ rt.nombre }}</b></td>
<td>{{ rt.tipo }}</td>
<td>{{ rt.max }}&nbsp; ms</td>
<td>{{ rt.promediodia }}&nbsp; ms</td>
<td>{{ this.toFixedDown( rt.promediodia , 1) }}&nbsp; ms</td>
<td>{{ rt.min }}&nbsp; ms</td>
<td>{{ rt.fecha }}</td>
<td>{{ rt.nombreliceo }}</td>
</tr>
</tbody>
</table>
</div>
<div class="col-md-1"></div>
<div *ngIf="estadistico" class="col-md-2">
<div *ngIf="estadistico" class="col-md-1">
<div style="color: #0085ff;" class="row mt-3">Promedio</div>
<div class="row">{{ estadistico.prom }}&nbsp;ms</div>
......
......@@ -3,6 +3,11 @@
min-height: 400px !important;
}
.simLink:hover{
cursor: pointer;
text-decoration: underline;
}
.liceomsg{
color: gray;
}
......
......@@ -26,8 +26,20 @@ export class EstadoSistemaComponent implements OnInit {
esAdminLiceo: boolean = false;
usuarioTotalTooltip: string = 'Hace referencia a cualquier referencia a el curso seleccionado usando matefun.\nEj: Leer archivos de curso.\n compartir archivos a alumnos de un curso.\n entregar trabajo para el curso, etc.';
loading: boolean = false;
loadingTiempos: boolean = false;
tipoFuncion: string;
nombreFuncion: string;
tipoOrden: string = 'promediodia-up';
setOrder(criteria: string){
if (this.tipoOrden === criteria + '-up')
this.tipoOrden = this.tipoOrden.replace('-up','-down');
else if (this.tipoOrden === criteria + '-down') {
this.tipoOrden = this.tipoOrden.replace('-down','-up');
}else{
this.tipoOrden = criteria + '-up';
}
}
help: any = {
......@@ -93,12 +105,17 @@ export class EstadoSistemaComponent implements OnInit {
const liceo = !!this.liceoSeleccionado ? this.liceoSeleccionado.liceoid : null;
const inicio = this.fechainicio ? ((this.fechainicio.year + '-') + (this.fechainicio.month + '-') + (this.fechainicio.day)) : '1970-01-01';
const fin = this.fechafin ? ((this.fechafin.year + '-') + (this.fechafin.month + '-') + (this.fechafin.day)) : '3000-01-01';
this.loadingTiempos = true;
this.estadosistemaservice.getTiempos(liceo, inicio, fin).subscribe(
data => {
this.loadingTiempos = false;
this.tiempos = data;
this.estadistico = this.actualizarEstadistico(this.tiempos);
},
error => { console.log(error); }
error => {
this.loadingTiempos = false;
console.log(error);
}
);
this.loading = true;
this.estadosistemaservice.getEstadoSistema(liceo, inicio, fin).subscribe(
......@@ -135,16 +152,19 @@ export class EstadoSistemaComponent implements OnInit {
return [];
}
const resultado: any[] = this.tiempos.filter ( (t: any) => (!this.tipoFuncion || t.tipo===this.tipoFuncion) &&
(!this.nombreFuncion || t.nombre===this.nombreFuncion)
);
(!this.nombreFuncion || t.nombre===this.nombreFuncion));
this.estadistico = this.actualizarEstadistico(resultado);
return resultado;
const criteria: string = this.tipoOrden.substring(0,this.tipoOrden.indexOf('-'));
const ascdesc: number = this.tipoOrden.substring(this.tipoOrden.indexOf('-')+1)==='up' ? 1 : -1 ;
return resultado.sort((t1: any, t2: any) => (t1[criteria] > t2[criteria] ? 1 : -1) * ascdesc);
}
get funciones() : string[] {
if (!this.tiempos)
return [];
return _.uniqBy(this.tiempos.filter( (t: any) => !this.tipoFuncion || t.tipo === this.tipoFuncion).map ( (t: any) => t.nombre));
return _.uniqBy(this.tiempos.filter( (t: any) => !this.tipoFuncion || t.tipo === this.tipoFuncion).map((t: any) => t.nombre));
}
goto(destination: string){
......@@ -159,11 +179,32 @@ export class EstadoSistemaComponent implements OnInit {
(tipo=='file' ? this.liceoSeleccionado.archivosAccedidos: this.cursoSeleccionado.tareasExistentes),
}).subscribe((_)=>{ });
}
get seleccionaCurso(): boolean {
return this.cursoSeleccionado !== undefined &&
this.cursoSeleccionado !== null &&
this.cursoSeleccionado != -1;
}
get calcularAccesoACurso(): number{
if (!!this.liceoSeleccionado && !!this.liceoSeleccionado.cursos) {
let cantidad = 0;
for (let curso of this.liceoSeleccionado.cursos) {
if (curso.idLiceo>0 && curso.idCurso>0) {
if (curso.archivosCompartidos!=null && curso.archivosCompartidos!=undefined) {
cantidad += curso.archivosCompartidos.length;
}
if (curso.tareasExistentes) {
for (let tarea of curso.tareasExistentes){
cantidad += tarea.archivosEntregados
cantidad += tarea.archivosCorregidos;
}
}
}
}
return cantidad;
}
return 0;
}
}
......@@ -7,12 +7,7 @@ export interface DetalleModel {
modalContent: any;
}
@Component({
@Component({
selector: 'confirm',
template: `<div class="modal-dialog" style="margin-top:100px;">
<div class="modal-content" [ngStyle]="{ 'width': tipo !== 'task' ? '700px' : '900px' }" >
......@@ -25,13 +20,14 @@ export interface DetalleModel {
<div class="modal-body" [ngStyle]="{ 'width': tipo !== 'task' ? '700px' : '900px' }" style="text-align: center !important;">
<div style="display: inline-block !important;">
<table class="table table-striped">
<div *ngIf="tipo!='task'">
<div *ngIf="tipo!='task'" style="overflow-y: scroll; height:400px;">
<thead>
<tr>
<th scope="col">Nombre</th>
<th scope="col">Tamaño (B)</th>
<th scope="col">{{ tipo=='share' ? 'Tipo' : 'Usuario' }}</th>
<th scope="col">Fecha</th>
<th scope="col">Liceo</th>
</tr>
</thead>
<tbody>
......@@ -40,10 +36,11 @@ export interface DetalleModel {
<td>{{ file.tamanio }}</td>
<td>{{ file.additionalData }}</td>
<td>{{ file.fecha }}</td>
<td>{{ file.nombreliceo }}</td>
</tr>
</tbody>
</div>
<div *ngIf="tipo=='task'">
<div *ngIf="tipo=='task'" style="overflow-y: scroll; height:400px;">
<thead>
<tr>
<th scope="col">Nombre</th>
......@@ -53,6 +50,7 @@ export interface DetalleModel {
<th scope="col">Totales</th>
<th scope="col">% entregados</th>
<th scope="col">% corregidos</th>
<th scope="col">Liceo</th>
</tr>
</thead>
<tbody>
......@@ -64,6 +62,7 @@ export interface DetalleModel {
<td>{{ tarea.archivosTotales }}</td>
<td>{{ this.toFixedDown( (tarea.archivosEntregados/tarea.archivosTotales)*100 , 1) }}%</td>
<td>{{ this.toFixedDown( (tarea.archivosCorregidos/tarea.archivosTotales)*100 , 1) }}%</td>
<td>{{ tarea.nombreliceo }}</td>
</tr>
</tbody>
</div>
......
......@@ -10,6 +10,7 @@ public class CoursesDTO {
String shortname;
String fullname;
String displayname;
boolean visible;
List<UsuarioDTO> participantes;
List<GrupoDTO> grupos;
......@@ -23,6 +24,7 @@ public class CoursesDTO {
this.fullname = c.getFullname();
this.grupos = c.getGrupos();
this.participantes = null;
this.visible = true;
}
public CoursesDTO(JsonObject obj) {
......@@ -31,6 +33,7 @@ public class CoursesDTO {
this.shortname = obj.getString("shortname");
this.fullname = obj.getString("fullname");
this.displayname = obj.getString("displayname");
this.visible = !obj.containsKey("visible") || obj.getInt("visible") == 1;
}
public CoursesDTO(Long id, String shortname, String fullname, String displayname, List<UsuarioDTO> participantes, List<GrupoDTO> grupos) {
......@@ -41,6 +44,7 @@ public class CoursesDTO {
this.displayname = displayname;
this.participantes = participantes;
this.grupos = grupos;
this.visible = true;
}
public Long getId() {
return id;
......@@ -82,6 +86,14 @@ public class CoursesDTO {
public void setGrupos(List<GrupoDTO> grupos) {
this.grupos = grupos;
}
public boolean isVisible() {
return visible;
}
public void setVisible(boolean visible) {
this.visible = visible;
}
}
......@@ -14,16 +14,18 @@ public class RegistroArchivoDTO implements Serializable {
String tipo;
String fecha;
Long liceoid;
String nombreliceo;
Long cursoid;
public RegistroArchivoDTO() {
super();
}
public RegistroArchivoDTO(String nombre, Long tamanio, String additionalData, GregorianCalendar fecha, String tipo, Long cursoid, Long liceoid) {
public RegistroArchivoDTO(String nombre, Long tamanio, String additionalData, GregorianCalendar fecha, String tipo, Long cursoid, Long liceoid, String nombreliceo) {
super();
this.nombre = nombre;
this.tipo = tipo;
this.nombreliceo = nombreliceo;
this.cursoid = cursoid;
this.tamanio = tamanio;
this.additionalData = additionalData;
......@@ -81,5 +83,13 @@ public class RegistroArchivoDTO implements Serializable {
public void setLiceoid(Long liceoid) {
this.liceoid = liceoid;
}
public String getNombreliceo() {
return nombreliceo;
}
public void setNombreliceo(String nombreliceo) {
this.nombreliceo = nombreliceo;
}
}
......@@ -6,6 +6,7 @@ import java.util.GregorianCalendar;
public class RegistroLoginDTO {
Long liceoId;
String nombreliceo;
Long moodleUserId;
String moodleUserName;
String fecha;
......@@ -14,9 +15,10 @@ public class RegistroLoginDTO {
super();
}
public RegistroLoginDTO(Long liceoId, Long moodleUserId, String moodleUserName, GregorianCalendar fecha) {
public RegistroLoginDTO(Long liceoId, String nombreLiceo, Long moodleUserId, String moodleUserName, GregorianCalendar fecha) {
super();
this.liceoId = liceoId;
this.nombreliceo = nombreLiceo;
this.moodleUserId = moodleUserId;
this.moodleUserName = moodleUserName;
this.fecha = fecha.get(Calendar.YEAR) + "-" + (fecha.get(Calendar.MONTH)+1) + "-" + fecha.get(Calendar.DATE);
......@@ -53,4 +55,14 @@ public class RegistroLoginDTO {
public void setFecha(String fecha) {
this.fecha = fecha;
}
public String getNombreliceo() {
return nombreliceo;
}
public void setNombreliceo(String nombreliceo) {
this.nombreliceo = nombreliceo;
}
}
......@@ -12,7 +12,7 @@ public class RegistroTareaDTO implements Serializable {
Long archivosEntregados;
Long archivosCorregidos;
Long archivosTotales;
String nombreliceo;
Long liceoid;
Long cursoid;
String fecha;
......@@ -26,9 +26,10 @@ public class RegistroTareaDTO implements Serializable {
}
public RegistroTareaDTO(String nombre, Long archivosEntregados, Long archivosCorregidos, Long archivosTotales,
String tipo, Long liceoid, Long cursoid, GregorianCalendar fecha) {
String tipo, Long liceoid, String nombreliceo, Long cursoid, GregorianCalendar fecha) {
super();
this.nombre = nombre;
this.nombreliceo = nombreliceo;
this.liceoid = liceoid;
setFecha(fecha);
this.cursoid = cursoid;
......@@ -85,5 +86,14 @@ public class RegistroTareaDTO implements Serializable {
public void setFecha(String fecha) {
this.fecha = fecha;
}
public String getNombreliceo() {
return nombreliceo;
}
public void setNombreliceo(String nombreliceo) {
this.nombreliceo = nombreliceo;
}
}
......@@ -18,6 +18,7 @@ public class TiempoAccesoDTO implements Serializable {
Double min;
Long cantidadDatos;
String fecha;
String nombreliceo;
@Override
public String toString() {
......@@ -28,11 +29,12 @@ public class TiempoAccesoDTO implements Serializable {
super();
}
public TiempoAccesoDTO(Long liceoid, String nombre, String tipo, Double max, Double promediodia, Double min, Long cantidadDatos, GregorianCalendar fecha) {
public TiempoAccesoDTO(Long liceoid, String nombre, String tipo, Double max, Double promediodia, Double min, Long cantidadDatos, GregorianCalendar fecha, String nombreliceo) {
super();
this.liceoid = liceoid;
this.nombre = nombre;
this.tipo = tipo;
this.nombreliceo = nombreliceo;
this.max = max;
this.promediodia = promediodia;
this.min = min;
......@@ -91,5 +93,13 @@ public class TiempoAccesoDTO implements Serializable {
public void setCantidadDatos(Long cantidadDatos) {
this.cantidadDatos = cantidadDatos;
}
public String getNombreliceo() {
return nombreliceo;
}
public void setNombreliceo(String nombreliceo) {
this.nombreliceo = nombreliceo;
}
}
......@@ -20,6 +20,8 @@ import edu.proygrado.matefun.MatefunException;
import edu.proygrado.modelo.Archivo;
import edu.proygrado.utils.MoodleFunctions;
import edu.proygrado.utils.MoodleWS;
import edu.proygrado.utils.Pair;
import edu.proygrado.utils.StringPair;
import edu.proygrado.utils.Utils;
@Stateless
......@@ -70,9 +72,44 @@ public class GruposEJB {
return String.join(", ", rolesArr);
}
public Pair<Long,Long> getCantidadAlumnosCantidadGrupos(Long courseid, StringPair moodleTokenPair, String moodleApiEndpoint) throws Exception {
int cantidadEstudiantes = 0;
int cantidadGrupos = 0;
Map<String, Object> params = new HashMap<String, Object>() {{ put("courseid", courseid); }};
JsonObject response = MoodleWS.GET(moodleTokenPair, moodleApiEndpoint, MoodleFunctions.core_enrol_get_enrolled_users, params);
if (!response.getBoolean(MoodleWS.IS_OK)) {
throw new MatefunException("Error en llamada core_enrol_get_enrolled_users: -> " + response.toString());
}else{
JsonArray users = response.getJsonArray("result");
for (int i = 0; i < users.size(); ++i) {
JsonArray roles = users.getJsonObject(i).getJsonArray("roles");
for (int j = 0; j < roles.size(); ++j) {
if (roles.getJsonObject(j).getString("shortname").equals("student")) {
cantidadEstudiantes++;
break;
}
}
}
JsonObject result = MoodleWS.GET(moodleTokenPair, moodleApiEndpoint, MoodleFunctions.core_group_get_course_groups, params);
if (!result.getBoolean(MoodleWS.IS_OK)) {
throw new MatefunException("No se puede obtener los grupos de un curso (getCantidadAlumnosCantidadGrupos) -> " + response.toString());
}else {
cantidadGrupos = result.getJsonArray("result").size();
}
}
return new Pair<Long,Long>(new Long(cantidadEstudiantes),new Long(cantidadGrupos));
}
@SuppressWarnings("serial")
public CoursesDTO getCourseGroupsAndMembers(Long courseid, String matefunToken, InvitadoEJB invitadoEJB) throws Exception {
//TODO: esto hay que arreglar pensando en que puedo ser alumno y docente a la vez (en el mismo courseid?)
Map<String, Object> params = new HashMap<String, Object>() {{ put("courseid", courseid); }};
MoodleCourseDTO moodleCourse = (invitadoEJB.getCoursesInfo(matefunToken).getEnrolledcourses().stream()
......
......@@ -22,6 +22,7 @@ import edu.proygrado.matefun.MatefunException;
import edu.proygrado.modelo.Alumno;
import edu.proygrado.modelo.Archivo;
import edu.proygrado.modelo.EstadoArchivo;
import edu.proygrado.modelo.Liceo;
import edu.proygrado.modelo.Usuario;
import edu.proygrado.utils.StringPair;
......@@ -40,19 +41,23 @@ public class InvitadoEJB {
private boolean isMatefunAdmin(InvitadoSesion s) {
return false; //TODO: ver como averiguar cuando soy matefun admin
return false; //TODO: ver como averiguar cuando es matefun admin
}
private boolean sesionInvalida(InvitadoSesion s) {
return false;
return false; //TODO: averiguar cuando es invalida
}
public Long getLoggueados(Long liceoId) {
private boolean isInvitado(InvitadoSesion s) {
return false; //TODO: ver como averiguar cuando es invitado
}
public Long getLoggueados(Liceo l) {
Long cantidad = 0l;
for (Map.Entry<String, InvitadoSesion> session : sesiones.entrySet()) {
if (isMatefunAdmin(session.getValue()) || sesionInvalida(session.getValue()))
if (isInvitado(session.getValue()) || isMatefunAdmin(session.getValue()) || sesionInvalida(session.getValue()))
continue;
if ( liceoId.equals(0l) || sesiones.get(session.getKey()).getLiceoId().equals(liceoId))
if ( l==null || sesiones.get(session.getKey()).getLiceoId().equals(l.getLiceoPK().getLiceoId()))
cantidad++;
}
return cantidad;
......
package edu.proygrado.modelo;
import java.io.Serializable;
import java.util.Map;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
......@@ -15,8 +17,8 @@ public class RegistroAccesoArchivo implements Serializable {
Long tamanio;
Long cantidadVeces;
public RegistroArchivoDTO toDto() {
return new RegistroArchivoDTO(id.getRuta(), tamanio, id.getMoodleUserId().toString(), id.getFecha(), id.getTipo().toString(), id.getCursoid(), id.getLiceoid());
public RegistroArchivoDTO toDto(Map<Long, Liceo> liceosMap) {
return new RegistroArchivoDTO(id.getRuta(), tamanio, id.getMoodleUserId().toString(), id.getFecha(), id.getTipo().toString(), id.getCursoid(), id.getLiceoid(), liceosMap.get(id.getLiceoid()).getNombre());
}
public RegistroAccesoArchivo(RegistroAccesoArchivoPK id, Long tamanio, Long cantidadVeces) {
......
package edu.proygrado.modelo;
import java.util.GregorianCalendar;
import java.util.Map;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
......@@ -14,8 +15,8 @@ public class RegistroCompartirArchivo {
RegistroCompartirArchivoPK id;
Long tamanio;
public RegistroArchivoDTO toDto() {
return new RegistroArchivoDTO(id.ruta, tamanio, id.tipo.toString(), id.fecha, id.tipo.toString(), id.cursoid, id.liceoid);
public RegistroArchivoDTO toDto(Map<Long, Liceo> liceosMap) {
return new RegistroArchivoDTO(id. ruta, tamanio, id.tipo.toString(), id.fecha, id.tipo.toString(), id.cursoid, id.liceoid, liceosMap.get(id.liceoid).getNombre());
}
public RegistroCompartirArchivo(RegistroCompartirArchivoPK id, Long tamanio) {
......
......@@ -3,6 +3,8 @@ package edu.proygrado.modelo;
import java.io.Serializable;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Map;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
......@@ -24,17 +26,19 @@ public class RegistroLogin implements Serializable{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
long id;
Long liceoId;
Long moodleUserId;
String moodleUserName;
@Temporal(TemporalType.DATE)
GregorianCalendar fecha;
public RegistroLoginDTO toDto() {
return new RegistroLoginDTO( liceoId!=null ? liceoId : null, moodleUserId, moodleUserName, fecha);
public RegistroLoginDTO toDto(Map<Long, Liceo> todosLosLiceos) {
return new RegistroLoginDTO(
liceoId!=null ? liceoId : null,
liceoId!=null ? todosLosLiceos.get(liceoId).getNombre() : "?",
moodleUserId,
moodleUserName,
fecha);
}
public RegistroLogin() {
......
package edu.proygrado.modelo;
import java.io.Serializable;