add validaciones de permisos en las encuestas por rol de colaborador
This commit is contained in:
parent
2b51cacb7a
commit
9d59fc2346
|
@ -11,7 +11,7 @@
|
||||||
<button type="button" class="ds-btn ds-btn--secondary" (click)="previousState()">
|
<button type="button" class="ds-btn ds-btn--secondary" (click)="previousState()">
|
||||||
<fa-icon icon="arrow-left"></fa-icon> <span jhiTranslate="entity.action.back">Back</span>
|
<fa-icon icon="arrow-left"></fa-icon> <span jhiTranslate="entity.action.back">Back</span>
|
||||||
</button>
|
</button>
|
||||||
<ng-container *ngIf="encuesta!.estado === 'DRAFT'">
|
<ng-container *ngIf="encuesta!.estado === 'DRAFT' && (isAutor() || isEscritor())">
|
||||||
<button type="button" class="ds-btn ds-btn--primary" (click)="publishSurvey()">Publicar encuesta</button>
|
<button type="button" class="ds-btn ds-btn--primary" (click)="publishSurvey()">Publicar encuesta</button>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -14,7 +14,7 @@ import { IEncuesta, Encuesta } from '../encuesta.model';
|
||||||
import { EncuestaService } from '../service/encuesta.service';
|
import { EncuestaService } from '../service/encuesta.service';
|
||||||
import { ICategoria } from 'app/entities/categoria/categoria.model';
|
import { ICategoria } from 'app/entities/categoria/categoria.model';
|
||||||
import { CategoriaService } from 'app/entities/categoria/service/categoria.service';
|
import { CategoriaService } from 'app/entities/categoria/service/categoria.service';
|
||||||
import { IUsuarioExtra } from 'app/entities/usuario-extra/usuario-extra.model';
|
import { IUsuarioExtra, UsuarioExtra } from 'app/entities/usuario-extra/usuario-extra.model';
|
||||||
import { UsuarioExtraService } from 'app/entities/usuario-extra/service/usuario-extra.service';
|
import { UsuarioExtraService } from 'app/entities/usuario-extra/service/usuario-extra.service';
|
||||||
|
|
||||||
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
|
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
|
||||||
|
@ -30,6 +30,10 @@ import { PreguntaCerradaTipo } from 'app/entities/enumerations/pregunta-cerrada-
|
||||||
|
|
||||||
import { faTimes, faPlus, faStar, faQuestion } from '@fortawesome/free-solid-svg-icons';
|
import { faTimes, faPlus, faStar, faQuestion } from '@fortawesome/free-solid-svg-icons';
|
||||||
import { EncuestaPublishDialogComponent } from '../encuesta-publish-dialog/encuesta-publish-dialog.component';
|
import { EncuestaPublishDialogComponent } from '../encuesta-publish-dialog/encuesta-publish-dialog.component';
|
||||||
|
import { UsuarioEncuestaService } from 'app/entities/usuario-encuesta/service/usuario-encuesta.service';
|
||||||
|
import { Account } from '../../../core/auth/account.model';
|
||||||
|
import { AccountService } from 'app/core/auth/account.service';
|
||||||
|
import { IUsuarioEncuesta } from '../../usuario-encuesta/usuario-encuesta.model';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'jhi-encuesta-detail',
|
selector: 'jhi-encuesta-detail',
|
||||||
|
@ -47,6 +51,8 @@ export class EncuestaDetailComponent implements OnInit {
|
||||||
successPublished = false;
|
successPublished = false;
|
||||||
ePreguntas?: any[];
|
ePreguntas?: any[];
|
||||||
ePreguntasOpciones?: any[];
|
ePreguntasOpciones?: any[];
|
||||||
|
usuarioExtra: UsuarioExtra | null = null;
|
||||||
|
usuariosColaboradores: IUsuarioEncuesta[] = [];
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
protected activatedRoute: ActivatedRoute,
|
protected activatedRoute: ActivatedRoute,
|
||||||
|
@ -57,7 +63,9 @@ export class EncuestaDetailComponent implements OnInit {
|
||||||
protected modalService: NgbModal,
|
protected modalService: NgbModal,
|
||||||
protected ePreguntaCerradaService: EPreguntaCerradaService,
|
protected ePreguntaCerradaService: EPreguntaCerradaService,
|
||||||
protected ePreguntaCerradaOpcionService: EPreguntaCerradaOpcionService,
|
protected ePreguntaCerradaOpcionService: EPreguntaCerradaOpcionService,
|
||||||
protected ePreguntaAbiertaService: EPreguntaAbiertaService
|
protected ePreguntaAbiertaService: EPreguntaAbiertaService,
|
||||||
|
protected accountService: AccountService,
|
||||||
|
protected usuarioEncuestaService: UsuarioEncuestaService
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
|
@ -69,6 +77,15 @@ export class EncuestaDetailComponent implements OnInit {
|
||||||
this.previousState();
|
this.previousState();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Get jhi_user and usuario_extra information
|
||||||
|
this.accountService.getAuthenticationState().subscribe(account => {
|
||||||
|
if (account !== null) {
|
||||||
|
this.usuarioExtraService.find(account.id).subscribe(usuarioExtra => {
|
||||||
|
this.usuarioExtra = usuarioExtra.body;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
ngAfterViewChecked(): void {
|
ngAfterViewChecked(): void {
|
||||||
|
@ -145,6 +162,16 @@ export class EncuestaDetailComponent implements OnInit {
|
||||||
this.isLoading = false;
|
this.isLoading = false;
|
||||||
}
|
}
|
||||||
);*/
|
);*/
|
||||||
|
|
||||||
|
this.usuarioEncuestaService.findCollaborators(this.encuesta?.id!).subscribe(
|
||||||
|
(res: any) => {
|
||||||
|
this.isLoading = false;
|
||||||
|
this.usuariosColaboradores = res.body ?? [];
|
||||||
|
},
|
||||||
|
() => {
|
||||||
|
this.isLoading = false;
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
publishSurvey(): void {
|
publishSurvey(): void {
|
||||||
const modalRef = this.modalService.open(EncuestaPublishDialogComponent, { size: 'lg', backdrop: 'static' });
|
const modalRef = this.modalService.open(EncuestaPublishDialogComponent, { size: 'lg', backdrop: 'static' });
|
||||||
|
@ -161,4 +188,20 @@ export class EncuestaDetailComponent implements OnInit {
|
||||||
previousState(): void {
|
previousState(): void {
|
||||||
window.history.back();
|
window.history.back();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isAutor() {
|
||||||
|
return this.usuarioExtra?.id === this.encuesta?.usuarioExtra?.id;
|
||||||
|
}
|
||||||
|
|
||||||
|
isEscritor() {
|
||||||
|
let escritor = false;
|
||||||
|
this.usuariosColaboradores.forEach(c => {
|
||||||
|
if (this.usuarioExtra?.id === c.usuarioExtra?.id) {
|
||||||
|
if (c.rol === 'WRITE') {
|
||||||
|
escritor = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return escritor;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<div class="row" style="flex-direction: row-reverse">
|
<div class="row" style="flex-direction: row-reverse">
|
||||||
<div class="col-mb-2 iconos-colab">
|
<div class="col-mb-2 iconos-colab">
|
||||||
<div class="add-collab">
|
<div class="add-collab" *ngIf="isAutor()">
|
||||||
<fa-icon icon="sync" [icon]="faPlus"></fa-icon>
|
<fa-icon icon="sync" [icon]="faPlus"></fa-icon>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -56,6 +56,7 @@
|
||||||
[disabled]="isLoading"
|
[disabled]="isLoading"
|
||||||
data-toggle="modal"
|
data-toggle="modal"
|
||||||
data-target="#crearPregunta"
|
data-target="#crearPregunta"
|
||||||
|
*ngIf="isAutor() || isEscritor()"
|
||||||
>
|
>
|
||||||
<fa-icon icon="sync" [icon]="faPlus"></fa-icon> <span>Crear pregunta</span>
|
<fa-icon icon="sync" [icon]="faPlus"></fa-icon> <span>Crear pregunta</span>
|
||||||
</button>
|
</button>
|
||||||
|
@ -106,7 +107,7 @@
|
||||||
>
|
>
|
||||||
</span>
|
</span>
|
||||||
<fa-icon
|
<fa-icon
|
||||||
*ngIf="encuesta!.estado === 'DRAFT'"
|
*ngIf="encuesta!.estado === 'DRAFT' && (isAutor() || isEscritor())"
|
||||||
class="ds-survey--titulo--icon"
|
class="ds-survey--titulo--icon"
|
||||||
[icon]="faTimes"
|
[icon]="faTimes"
|
||||||
(click)="deleteQuestion($event)"
|
(click)="deleteQuestion($event)"
|
||||||
|
@ -138,7 +139,7 @@
|
||||||
<!-- <input class="ds-survey--checkbox" id="{{ ePregunta.id }}-{{ ePreguntaOpcionFinal.id }}" type="checkbox" disabled /> -->
|
<!-- <input class="ds-survey--checkbox" id="{{ ePregunta.id }}-{{ ePreguntaOpcionFinal.id }}" type="checkbox" disabled /> -->
|
||||||
<label for="{{ ePregunta.id }}-{{ ePreguntaOpcionFinal.id }}">{{ ePreguntaOpcionFinal.nombre }}</label>
|
<label for="{{ ePregunta.id }}-{{ ePreguntaOpcionFinal.id }}">{{ ePreguntaOpcionFinal.nombre }}</label>
|
||||||
<fa-icon
|
<fa-icon
|
||||||
*ngIf="encuesta!.estado === 'DRAFT'"
|
*ngIf="encuesta!.estado === 'DRAFT' && (isAutor() || isEscritor())"
|
||||||
class="ds-survey--titulo--icon ds-survey--titulo--icon--small"
|
class="ds-survey--titulo--icon ds-survey--titulo--icon--small"
|
||||||
[icon]="faTimes"
|
[icon]="faTimes"
|
||||||
(click)="deleteOption($event)"
|
(click)="deleteOption($event)"
|
||||||
|
@ -154,6 +155,7 @@
|
||||||
data-toggle="modal"
|
data-toggle="modal"
|
||||||
data-target="#crearOpcion"
|
data-target="#crearOpcion"
|
||||||
[attr.data-id]="ePregunta.id"
|
[attr.data-id]="ePregunta.id"
|
||||||
|
*ngIf="isAutor() || isEscritor()"
|
||||||
>
|
>
|
||||||
<fa-icon
|
<fa-icon
|
||||||
class="ds-survey--add-option--icon"
|
class="ds-survey--add-option--icon"
|
||||||
|
|
|
@ -35,7 +35,7 @@ import { IParametroAplicacion } from './../../parametro-aplicacion/parametro-apl
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
|
|
||||||
import { UsuarioEncuestaService } from 'app/entities/usuario-encuesta/service/usuario-encuesta.service';
|
import { UsuarioEncuestaService } from 'app/entities/usuario-encuesta/service/usuario-encuesta.service';
|
||||||
import { IUsuarioEncuesta } from '../../usuario-encuesta/usuario-encuesta.model';
|
import { IUsuarioEncuesta, UsuarioEncuesta } from '../../usuario-encuesta/usuario-encuesta.model';
|
||||||
import { RolColaborador } from '../../enumerations/rol-colaborador.model';
|
import { RolColaborador } from '../../enumerations/rol-colaborador.model';
|
||||||
import { Account } from '../../../core/auth/account.model';
|
import { Account } from '../../../core/auth/account.model';
|
||||||
import { AccountService } from 'app/core/auth/account.service';
|
import { AccountService } from 'app/core/auth/account.service';
|
||||||
|
@ -660,6 +660,18 @@ export class EncuestaUpdateComponent implements OnInit, AfterViewChecked {
|
||||||
}
|
}
|
||||||
|
|
||||||
isAutor() {
|
isAutor() {
|
||||||
return this.usuarioExtra?.id == this.encuesta?.usuarioExtra?.id;
|
return this.usuarioExtra?.id === this.encuesta?.usuarioExtra?.id;
|
||||||
|
}
|
||||||
|
|
||||||
|
isEscritor() {
|
||||||
|
let escritor = false;
|
||||||
|
this.usuariosColaboradores.forEach(c => {
|
||||||
|
if (this.usuarioExtra?.id === c.usuarioExtra?.id) {
|
||||||
|
if (c.rol === 'WRITE') {
|
||||||
|
escritor = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return escritor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,16 +1,10 @@
|
||||||
<form *ngIf="usuarioEncuesta" name="deleteForm" (ngSubmit)="confirmDelete(usuarioEncuesta.id!)">
|
<form class="ds-form" *ngIf="usuarioEncuesta" name="deleteForm" (ngSubmit)="confirmDelete(usuarioEncuesta.id!)">
|
||||||
<div class="modal-header">
|
|
||||||
<h4 class="modal-title" data-cy="usuarioEncuestaDeleteDialogHeading" jhiTranslate="entity.delete.title">Confirm delete operation</h4>
|
|
||||||
|
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true" (click)="cancel()">×</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<jhi-alert-error></jhi-alert-error>
|
<p class="ds-title--small">Salir de colaboración</p>
|
||||||
|
|
||||||
<p
|
<p
|
||||||
|
class="ds-subtitle"
|
||||||
id="jhi-delete-usuarioEncuesta-heading"
|
id="jhi-delete-usuarioEncuesta-heading"
|
||||||
jhiTranslate="dataSurveyApp.usuarioEncuesta.delete.question"
|
jhiTranslate="dataSurveyApp.usuarioEncuesta.delete.questionGetOut"
|
||||||
[translateValues]="{ id: usuarioEncuesta.id }"
|
[translateValues]="{ id: usuarioEncuesta.id }"
|
||||||
>
|
>
|
||||||
Are you sure you want to delete this Usuario Encuesta?
|
Are you sure you want to delete this Usuario Encuesta?
|
||||||
|
@ -18,12 +12,12 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-secondary" data-dismiss="modal" (click)="cancel()">
|
<button type="button" class="ds-btn ds-btn--secondary" data-dismiss="modal" (click)="cancel()">
|
||||||
<fa-icon icon="ban"></fa-icon> <span jhiTranslate="entity.action.cancel">Cancel</span>
|
<fa-icon icon="arrow-left"></fa-icon> <span jhiTranslate="entity.action.cancel">Cancel</span>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button id="jhi-confirm-delete-usuarioEncuesta" data-cy="entityConfirmDeleteButton" type="submit" class="btn btn-danger">
|
<button id="jhi-confirm-delete-usuarioEncuesta" data-cy="entityConfirmDeleteButton" type="submit" class="btn btn-danger">
|
||||||
<fa-icon icon="times"></fa-icon> <span jhiTranslate="entity.action.delete">Delete</span>
|
<fa-icon icon="sign-out-alt"></fa-icon> <span jhiTranslate="dataSurveyApp.usuarioEncuesta.delete.getOut">Get Out</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<div>
|
<div>
|
||||||
<h2 id="page-heading" data-cy="UsuarioEncuestaHeading">
|
<h2 id="page-heading" data-cy="UsuarioEncuestaHeading">
|
||||||
<span jhiTranslate="dataSurveyApp.usuarioEncuesta.home.title">Colaboraciones en Encuestas</span>
|
<span class="ds-title" jhiTranslate="dataSurveyApp.usuarioEncuesta.home.title">Colaboraciones </span>
|
||||||
|
<p class="ds-subtitle">Gestione las colaboraciones en encuestas a las que se encuentra agregado</p>
|
||||||
|
|
||||||
<div class="d-flex justify-content-end">
|
<div class="d-flex justify-content-end">
|
||||||
<button class="ds-btn ds-btn--secondary mr-2" (click)="loadAll()" [disabled]="isLoading">
|
<button class="ds-btn ds-btn--secondary mr-2" (click)="loadAll()" [disabled]="isLoading">
|
||||||
|
@ -34,7 +35,7 @@
|
||||||
<tr *ngFor="let usuarioEncuesta of usuarioEncuestas; trackBy: trackId" data-cy="entityTable">
|
<tr *ngFor="let usuarioEncuesta of usuarioEncuestas; trackBy: trackId" data-cy="entityTable">
|
||||||
<td jhiTranslate="{{ 'dataSurveyApp.RolColaborador.' + usuarioEncuesta.rol }}">{{ usuarioEncuesta.rol }}</td>
|
<td jhiTranslate="{{ 'dataSurveyApp.RolColaborador.' + usuarioEncuesta.rol }}">{{ usuarioEncuesta.rol }}</td>
|
||||||
<td jhiTranslate="{{ 'dataSurveyApp.EstadoColaborador.' + usuarioEncuesta.estado }}">{{ usuarioEncuesta.estado }}</td>
|
<td jhiTranslate="{{ 'dataSurveyApp.EstadoColaborador.' + usuarioEncuesta.estado }}">{{ usuarioEncuesta.estado }}</td>
|
||||||
<td>{{ usuarioEncuesta.fechaAgregado | formatMediumDatetime }}</td>
|
<td>{{ usuarioEncuesta.fechaAgregado | formatShortDatetime | titlecase }}</td>
|
||||||
<td>
|
<td>
|
||||||
<div *ngIf="usuarioEncuesta.encuesta">
|
<div *ngIf="usuarioEncuesta.encuesta">
|
||||||
<a>{{ usuarioEncuesta.encuesta?.id }}</a>
|
<a>{{ usuarioEncuesta.encuesta?.id }}</a>
|
||||||
|
@ -48,25 +49,16 @@
|
||||||
<td class="text-right">
|
<td class="text-right">
|
||||||
<div class="btn-group" *ngIf="usuarioEncuesta.encuesta">
|
<div class="btn-group" *ngIf="usuarioEncuesta.encuesta">
|
||||||
<button
|
<button
|
||||||
*ngIf="usuarioEncuesta.rol === 'WRITE'"
|
|
||||||
type="button"
|
type="button"
|
||||||
[routerLink]="['/encuesta', usuarioEncuesta.encuesta.id, 'edit']"
|
[routerLink]="['/encuesta', usuarioEncuesta.encuesta.id, 'edit']"
|
||||||
class="ds-btn ds-btn--primary"
|
class="ds-btn ds-btn--primary"
|
||||||
[disabled]="isLoading"
|
[disabled]="isLoading"
|
||||||
>
|
>
|
||||||
<fa-icon [icon]="faPencilAlt"></fa-icon> <span>Editar encuesta</span>
|
<span>Editar encuesta</span>
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
[routerLink]="['/encuesta', usuarioEncuesta.encuesta.id, 'preview']"
|
|
||||||
class="ds-btn ds-btn--success"
|
|
||||||
[disabled]="isLoading"
|
|
||||||
>
|
|
||||||
<fa-icon [icon]="faPollH"></fa-icon> <span>Ver vista previa</span>
|
|
||||||
</button>
|
</button>
|
||||||
<button type="submit" (click)="delete(usuarioEncuesta)" class="ds-btn ds-btn--danger btn-sm" data-cy="entityDeleteButton">
|
<button type="submit" (click)="delete(usuarioEncuesta)" class="ds-btn ds-btn--danger btn-sm" data-cy="entityDeleteButton">
|
||||||
<fa-icon icon="times"></fa-icon>
|
<fa-icon icon="sign-out-alt"></fa-icon>
|
||||||
<span class="d-none d-md-inline" jhiTranslate="entity.action.delete">Delete</span>
|
<span class="d-none d-md-inline" jhiTranslate="dataSurveyApp.usuarioEncuesta.delete.getOut">Get Out</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
@ -76,10 +76,10 @@ export const USER_ROUTES: RouteInfo[] = [
|
||||||
// type: 'link',
|
// type: 'link',
|
||||||
// icontype: 'nc-icon nc-album-2',
|
// icontype: 'nc-icon nc-album-2',
|
||||||
// },
|
// },
|
||||||
// {
|
{
|
||||||
// path: '/colaboraciones',
|
path: '/colaboraciones',
|
||||||
// title: 'Colaboraciones',
|
title: 'Colaboraciones',
|
||||||
// type: 'link',
|
type: 'link',
|
||||||
// icontype: 'nc-icon nc-world-2',
|
icontype: 'nc-icon nc-world-2',
|
||||||
// },
|
},
|
||||||
];
|
];
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"dataSurveyApp": {
|
"dataSurveyApp": {
|
||||||
"usuarioEncuesta": {
|
"usuarioEncuesta": {
|
||||||
"home": {
|
"home": {
|
||||||
"title": "Colaboraciones en Encuestas",
|
"title": "Colaboraciones",
|
||||||
"refreshListLabel": "Refrescar lista",
|
"refreshListLabel": "Refrescar lista",
|
||||||
"createLabel": "Crear nuevo Colaborador",
|
"createLabel": "Crear nuevo Colaborador",
|
||||||
"createOrEditLabel": "Crear o editar Colaboración",
|
"createOrEditLabel": "Crear o editar Colaboración",
|
||||||
|
@ -12,7 +12,9 @@
|
||||||
"updated": "Una colaboración ha sido actualizada con el identificador {{ param }}",
|
"updated": "Una colaboración ha sido actualizada con el identificador {{ param }}",
|
||||||
"deleted": "Una colaboracióna ha sido eliminada con el identificador {{ param }}",
|
"deleted": "Una colaboracióna ha sido eliminada con el identificador {{ param }}",
|
||||||
"delete": {
|
"delete": {
|
||||||
"question": "¿Seguro que quiere eliminar la colaboración {{ id }}?"
|
"question": "¿Seguro que quiere eliminar la colaboración {{ id }}?",
|
||||||
|
"questionGetOut": "¿Seguro que quiere salirse de la colaboracion de encuesta?",
|
||||||
|
"getOut": "Salir"
|
||||||
},
|
},
|
||||||
"detail": {
|
"detail": {
|
||||||
"title": "Colaboración en encuesta"
|
"title": "Colaboración en encuesta"
|
||||||
|
|
Loading…
Reference in New Issue