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()">
 | 
			
		||||
          <fa-icon icon="arrow-left"></fa-icon>  <span jhiTranslate="entity.action.back">Back</span>
 | 
			
		||||
        </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>
 | 
			
		||||
        </ng-container>
 | 
			
		||||
      </div>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,7 +14,7 @@ import { IEncuesta, Encuesta } from '../encuesta.model';
 | 
			
		|||
import { EncuestaService } from '../service/encuesta.service';
 | 
			
		||||
import { ICategoria } from 'app/entities/categoria/categoria.model';
 | 
			
		||||
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 { 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 { 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({
 | 
			
		||||
  selector: 'jhi-encuesta-detail',
 | 
			
		||||
| 
						 | 
				
			
			@ -47,6 +51,8 @@ export class EncuestaDetailComponent implements OnInit {
 | 
			
		|||
  successPublished = false;
 | 
			
		||||
  ePreguntas?: any[];
 | 
			
		||||
  ePreguntasOpciones?: any[];
 | 
			
		||||
  usuarioExtra: UsuarioExtra | null = null;
 | 
			
		||||
  usuariosColaboradores: IUsuarioEncuesta[] = [];
 | 
			
		||||
 | 
			
		||||
  constructor(
 | 
			
		||||
    protected activatedRoute: ActivatedRoute,
 | 
			
		||||
| 
						 | 
				
			
			@ -57,7 +63,9 @@ export class EncuestaDetailComponent implements OnInit {
 | 
			
		|||
    protected modalService: NgbModal,
 | 
			
		||||
    protected ePreguntaCerradaService: EPreguntaCerradaService,
 | 
			
		||||
    protected ePreguntaCerradaOpcionService: EPreguntaCerradaOpcionService,
 | 
			
		||||
    protected ePreguntaAbiertaService: EPreguntaAbiertaService
 | 
			
		||||
    protected ePreguntaAbiertaService: EPreguntaAbiertaService,
 | 
			
		||||
    protected accountService: AccountService,
 | 
			
		||||
    protected usuarioEncuestaService: UsuarioEncuestaService
 | 
			
		||||
  ) {}
 | 
			
		||||
 | 
			
		||||
  ngOnInit(): void {
 | 
			
		||||
| 
						 | 
				
			
			@ -69,6 +77,15 @@ export class EncuestaDetailComponent implements OnInit {
 | 
			
		|||
        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 {
 | 
			
		||||
| 
						 | 
				
			
			@ -145,6 +162,16 @@ export class EncuestaDetailComponent implements OnInit {
 | 
			
		|||
        this.isLoading = false;
 | 
			
		||||
      }
 | 
			
		||||
    );*/
 | 
			
		||||
 | 
			
		||||
    this.usuarioEncuestaService.findCollaborators(this.encuesta?.id!).subscribe(
 | 
			
		||||
      (res: any) => {
 | 
			
		||||
        this.isLoading = false;
 | 
			
		||||
        this.usuariosColaboradores = res.body ?? [];
 | 
			
		||||
      },
 | 
			
		||||
      () => {
 | 
			
		||||
        this.isLoading = false;
 | 
			
		||||
      }
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
  publishSurvey(): void {
 | 
			
		||||
    const modalRef = this.modalService.open(EncuestaPublishDialogComponent, { size: 'lg', backdrop: 'static' });
 | 
			
		||||
| 
						 | 
				
			
			@ -161,4 +188,20 @@ export class EncuestaDetailComponent implements OnInit {
 | 
			
		|||
  previousState(): void {
 | 
			
		||||
    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="row" style="flex-direction: row-reverse">
 | 
			
		||||
            <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>
 | 
			
		||||
              </div>
 | 
			
		||||
            </div>
 | 
			
		||||
| 
						 | 
				
			
			@ -56,6 +56,7 @@
 | 
			
		|||
        [disabled]="isLoading"
 | 
			
		||||
        data-toggle="modal"
 | 
			
		||||
        data-target="#crearPregunta"
 | 
			
		||||
        *ngIf="isAutor() || isEscritor()"
 | 
			
		||||
      >
 | 
			
		||||
        <fa-icon icon="sync" [icon]="faPlus"></fa-icon>  <span>Crear pregunta</span>
 | 
			
		||||
      </button>
 | 
			
		||||
| 
						 | 
				
			
			@ -106,7 +107,7 @@
 | 
			
		|||
                >
 | 
			
		||||
              </span>
 | 
			
		||||
              <fa-icon
 | 
			
		||||
                *ngIf="encuesta!.estado === 'DRAFT'"
 | 
			
		||||
                *ngIf="encuesta!.estado === 'DRAFT' && (isAutor() || isEscritor())"
 | 
			
		||||
                class="ds-survey--titulo--icon"
 | 
			
		||||
                [icon]="faTimes"
 | 
			
		||||
                (click)="deleteQuestion($event)"
 | 
			
		||||
| 
						 | 
				
			
			@ -138,7 +139,7 @@
 | 
			
		|||
                      <!-- <input class="ds-survey--checkbox" id="{{ ePregunta.id }}-{{ ePreguntaOpcionFinal.id }}" type="checkbox" disabled /> -->
 | 
			
		||||
                      <label for="{{ ePregunta.id }}-{{ ePreguntaOpcionFinal.id }}">{{ ePreguntaOpcionFinal.nombre }}</label>
 | 
			
		||||
                      <fa-icon
 | 
			
		||||
                        *ngIf="encuesta!.estado === 'DRAFT'"
 | 
			
		||||
                        *ngIf="encuesta!.estado === 'DRAFT' && (isAutor() || isEscritor())"
 | 
			
		||||
                        class="ds-survey--titulo--icon ds-survey--titulo--icon--small"
 | 
			
		||||
                        [icon]="faTimes"
 | 
			
		||||
                        (click)="deleteOption($event)"
 | 
			
		||||
| 
						 | 
				
			
			@ -154,6 +155,7 @@
 | 
			
		|||
                data-toggle="modal"
 | 
			
		||||
                data-target="#crearOpcion"
 | 
			
		||||
                [attr.data-id]="ePregunta.id"
 | 
			
		||||
                *ngIf="isAutor() || isEscritor()"
 | 
			
		||||
              >
 | 
			
		||||
                <fa-icon
 | 
			
		||||
                  class="ds-survey--add-option--icon"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -35,7 +35,7 @@ import { IParametroAplicacion } from './../../parametro-aplicacion/parametro-apl
 | 
			
		|||
import { Router } from '@angular/router';
 | 
			
		||||
 | 
			
		||||
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 { Account } from '../../../core/auth/account.model';
 | 
			
		||||
import { AccountService } from 'app/core/auth/account.service';
 | 
			
		||||
| 
						 | 
				
			
			@ -660,6 +660,18 @@ export class EncuestaUpdateComponent implements OnInit, AfterViewChecked {
 | 
			
		|||
  }
 | 
			
		||||
 | 
			
		||||
  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!)">
 | 
			
		||||
  <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>
 | 
			
		||||
 | 
			
		||||
<form class="ds-form" *ngIf="usuarioEncuesta" name="deleteForm" (ngSubmit)="confirmDelete(usuarioEncuesta.id!)">
 | 
			
		||||
  <div class="modal-body">
 | 
			
		||||
    <jhi-alert-error></jhi-alert-error>
 | 
			
		||||
 | 
			
		||||
    <p class="ds-title--small">Salir de colaboración</p>
 | 
			
		||||
    <p
 | 
			
		||||
      class="ds-subtitle"
 | 
			
		||||
      id="jhi-delete-usuarioEncuesta-heading"
 | 
			
		||||
      jhiTranslate="dataSurveyApp.usuarioEncuesta.delete.question"
 | 
			
		||||
      jhiTranslate="dataSurveyApp.usuarioEncuesta.delete.questionGetOut"
 | 
			
		||||
      [translateValues]="{ id: usuarioEncuesta.id }"
 | 
			
		||||
    >
 | 
			
		||||
      Are you sure you want to delete this Usuario Encuesta?
 | 
			
		||||
| 
						 | 
				
			
			@ -18,12 +12,12 @@
 | 
			
		|||
  </div>
 | 
			
		||||
 | 
			
		||||
  <div class="modal-footer">
 | 
			
		||||
    <button type="button" class="btn btn-secondary" data-dismiss="modal" (click)="cancel()">
 | 
			
		||||
      <fa-icon icon="ban"></fa-icon> <span jhiTranslate="entity.action.cancel">Cancel</span>
 | 
			
		||||
    <button type="button" class="ds-btn ds-btn--secondary" data-dismiss="modal" (click)="cancel()">
 | 
			
		||||
      <fa-icon icon="arrow-left"></fa-icon> <span jhiTranslate="entity.action.cancel">Cancel</span>
 | 
			
		||||
    </button>
 | 
			
		||||
 | 
			
		||||
    <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>
 | 
			
		||||
  </div>
 | 
			
		||||
</form>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
<div>
 | 
			
		||||
  <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">
 | 
			
		||||
      <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">
 | 
			
		||||
          <td jhiTranslate="{{ 'dataSurveyApp.RolColaborador.' + usuarioEncuesta.rol }}">{{ usuarioEncuesta.rol }}</td>
 | 
			
		||||
          <td jhiTranslate="{{ 'dataSurveyApp.EstadoColaborador.' + usuarioEncuesta.estado }}">{{ usuarioEncuesta.estado }}</td>
 | 
			
		||||
          <td>{{ usuarioEncuesta.fechaAgregado | formatMediumDatetime }}</td>
 | 
			
		||||
          <td>{{ usuarioEncuesta.fechaAgregado | formatShortDatetime | titlecase }}</td>
 | 
			
		||||
          <td>
 | 
			
		||||
            <div *ngIf="usuarioEncuesta.encuesta">
 | 
			
		||||
              <a>{{ usuarioEncuesta.encuesta?.id }}</a>
 | 
			
		||||
| 
						 | 
				
			
			@ -48,25 +49,16 @@
 | 
			
		|||
          <td class="text-right">
 | 
			
		||||
            <div class="btn-group" *ngIf="usuarioEncuesta.encuesta">
 | 
			
		||||
              <button
 | 
			
		||||
                *ngIf="usuarioEncuesta.rol === 'WRITE'"
 | 
			
		||||
                type="button"
 | 
			
		||||
                [routerLink]="['/encuesta', usuarioEncuesta.encuesta.id, 'edit']"
 | 
			
		||||
                class="ds-btn ds-btn--primary"
 | 
			
		||||
                [disabled]="isLoading"
 | 
			
		||||
              >
 | 
			
		||||
                <fa-icon [icon]="faPencilAlt"></fa-icon>  <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>
 | 
			
		||||
                <span>Editar encuesta</span>
 | 
			
		||||
              </button>
 | 
			
		||||
              <button type="submit" (click)="delete(usuarioEncuesta)" class="ds-btn ds-btn--danger btn-sm" data-cy="entityDeleteButton">
 | 
			
		||||
                <fa-icon icon="times"></fa-icon>
 | 
			
		||||
                <span class="d-none d-md-inline" jhiTranslate="entity.action.delete">Delete</span>
 | 
			
		||||
                <fa-icon icon="sign-out-alt"></fa-icon>
 | 
			
		||||
                <span class="d-none d-md-inline" jhiTranslate="dataSurveyApp.usuarioEncuesta.delete.getOut">Get Out</span>
 | 
			
		||||
              </button>
 | 
			
		||||
            </div>
 | 
			
		||||
          </td>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -76,10 +76,10 @@ export const USER_ROUTES: RouteInfo[] = [
 | 
			
		|||
  //   type: 'link',
 | 
			
		||||
  //   icontype: 'nc-icon nc-album-2',
 | 
			
		||||
  // },
 | 
			
		||||
  // {
 | 
			
		||||
  //   path: '/colaboraciones',
 | 
			
		||||
  //   title: 'Colaboraciones',
 | 
			
		||||
  //   type: 'link',
 | 
			
		||||
  //   icontype: 'nc-icon nc-world-2',
 | 
			
		||||
  // },
 | 
			
		||||
  {
 | 
			
		||||
    path: '/colaboraciones',
 | 
			
		||||
    title: 'Colaboraciones',
 | 
			
		||||
    type: 'link',
 | 
			
		||||
    icontype: 'nc-icon nc-world-2',
 | 
			
		||||
  },
 | 
			
		||||
];
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,7 +2,7 @@
 | 
			
		|||
  "dataSurveyApp": {
 | 
			
		||||
    "usuarioEncuesta": {
 | 
			
		||||
      "home": {
 | 
			
		||||
        "title": "Colaboraciones en Encuestas",
 | 
			
		||||
        "title": "Colaboraciones",
 | 
			
		||||
        "refreshListLabel": "Refrescar lista",
 | 
			
		||||
        "createLabel": "Crear nuevo Colaborador",
 | 
			
		||||
        "createOrEditLabel": "Crear o editar Colaboración",
 | 
			
		||||
| 
						 | 
				
			
			@ -12,7 +12,9 @@
 | 
			
		|||
      "updated": "Una colaboración ha sido actualizada con el identificador {{ param }}",
 | 
			
		||||
      "deleted": "Una colaboracióna ha sido eliminada con el identificador {{ param }}",
 | 
			
		||||
      "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": {
 | 
			
		||||
        "title": "Colaboración en encuesta"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue