add modal add colaborador

This commit is contained in:
Mariela Bonilla 2021-08-01 12:18:00 -06:00
parent 184dc96556
commit b068359da6
3 changed files with 127 additions and 11 deletions

View File

@ -100,6 +100,8 @@ export class EncuestaService {
return this.http.delete(`${this.resourceUrl}/notify/${encuesta.id}`, { observe: 'response' }); return this.http.delete(`${this.resourceUrl}/notify/${encuesta.id}`, { observe: 'response' });
} }
sendCorreoInvitacion(correo: string) {}
addEncuestaToCollectionIfMissing(encuestaCollection: IEncuesta[], ...encuestasToCheck: (IEncuesta | null | undefined)[]): IEncuesta[] { addEncuestaToCollectionIfMissing(encuestaCollection: IEncuesta[], ...encuestasToCheck: (IEncuesta | null | undefined)[]): IEncuesta[] {
const encuestas: IEncuesta[] = encuestasToCheck.filter(isPresent); const encuestas: IEncuesta[] = encuestasToCheck.filter(isPresent);
if (encuestas.length > 0) { if (encuestas.length > 0) {

View File

@ -16,7 +16,7 @@
<div class="col-12 ds-list-collabs"> <div class="col-12 ds-list-collabs">
<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" data-toggle="modal" data-target="modalAddColaborators">
<fa-icon icon="sync" [icon]="faPlus"></fa-icon> <fa-icon icon="sync" [icon]="faPlus"></fa-icon>
</div> </div>
</div> </div>
@ -443,7 +443,7 @@
<!-- ------------------------------------------------------------------------------------------------- --> <!-- ------------------------------------------------------------------------------------------------- -->
<!-- Survey Parameters Information --> <!-- Survey Update Colaborator -->
<div <div
class="modal fade ds-modal" class="modal fade ds-modal"
id="modalUpdateColaborators" id="modalUpdateColaborators"
@ -498,3 +498,63 @@
</div> </div>
<!-- ------------------------------------------------------------------------------------------------- --> <!-- ------------------------------------------------------------------------------------------------- -->
<!-- Survey Add Colaborator -->
<div
class="modal fade ds-modal"
id="modalAddColaborators"
tabindex="-1"
role="dialog"
aria-labelledby="verColaboradoresTitle"
aria-hidden="true"
*ngIf="isAutor()"
>
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<form class="ds-form" name="editFormAddCollab" role="form" (ngSubmit)="saveAddCollab()" [formGroup]="editFormAddCollab">
<div class="modal-header">
<h1 class="modal-title" id="modalAddColaboradores">Colaborador</h1>
</div>
<div class="modal-body">
<div>
<div class="mb-5">
<p class="ds-subtitle">Correo electrónico</p>
<input
type="email"
class="form-control"
name="email_collab"
id="field_add_email"
data-cy="email_collab"
formControlName="email_collab"
/>
</div>
<div>
<label for="field_update_rol">Rol</label>
<select class="form-control" name="add_rol" formControlName="add_rol" id="field_add_rol" data-cy="rol">
<option value="" selected disabled>Seleccione un rol</option>
<option value="READ">Lector</option>
<option value="WRITE">Escritor</option>
</select>
</div>
</div>
</div>
<div class="modal-footer">
<button id="btnCancelAddColaboradores" type="button" class="ds-btn ds-btn--secondary" data-dismiss="modal">
<fa-icon icon="arrow-left"></fa-icon>&nbsp;&nbsp;<span>Cancelar</span>
</button>
<button
id="btnAddColaboradores"
type="submit"
class="ds-btn ds-btn--primary"
data-cy="entityAddButton"
[disabled]="isSavingCollab"
>
<span>Guardar</span>
</button>
</div>
</form>
</div>
</div>
</div>
<!-- ------------------------------------------------------------------------------------------------- -->

View File

@ -1,19 +1,19 @@
import { EPreguntaAbierta, IEPreguntaAbierta } from './../../e-pregunta-abierta/e-pregunta-abierta.model'; import { EPreguntaAbierta, IEPreguntaAbierta } from './../../e-pregunta-abierta/e-pregunta-abierta.model';
import { EPreguntaCerrada } from './../../e-pregunta-cerrada/e-pregunta-cerrada.model'; import { EPreguntaCerrada } from './../../e-pregunta-cerrada/e-pregunta-cerrada.model';
import { EPreguntaCerradaOpcion, IEPreguntaCerradaOpcion } from './../../e-pregunta-cerrada-opcion/e-pregunta-cerrada-opcion.model'; import { IEPreguntaCerradaOpcion } from './../../e-pregunta-cerrada-opcion/e-pregunta-cerrada-opcion.model';
import { EPreguntaAbiertaService } from './../../e-pregunta-abierta/service/e-pregunta-abierta.service'; import { EPreguntaAbiertaService } from './../../e-pregunta-abierta/service/e-pregunta-abierta.service';
import { EPreguntaCerradaOpcionService } from './../../e-pregunta-cerrada-opcion/service/e-pregunta-cerrada-opcion.service'; import { EPreguntaCerradaOpcionService } from './../../e-pregunta-cerrada-opcion/service/e-pregunta-cerrada-opcion.service';
import { AfterViewChecked, Component, OnInit } from '@angular/core'; import { AfterViewChecked, Component, OnInit } from '@angular/core';
import { HttpResponse } from '@angular/common/http'; import { HttpResponse } from '@angular/common/http';
import { FormBuilder, Validators } from '@angular/forms'; import { FormBuilder, Validators } from '@angular/forms';
import { ActivatedRoute } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { finalize, map } from 'rxjs/operators'; import { finalize } from 'rxjs/operators';
import * as dayjs from 'dayjs'; import * as dayjs from 'dayjs';
import { DATE_TIME_FORMAT } from 'app/config/input.constants'; import { DATE_TIME_FORMAT } from 'app/config/input.constants';
import { IEncuesta, Encuesta } from '../encuesta.model'; import { 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';
@ -25,24 +25,25 @@ import { IEPreguntaCerrada } from 'app/entities/e-pregunta-cerrada/e-pregunta-ce
import { EPreguntaCerradaService } from 'app/entities/e-pregunta-cerrada/service/e-pregunta-cerrada.service'; import { EPreguntaCerradaService } from 'app/entities/e-pregunta-cerrada/service/e-pregunta-cerrada.service';
import { EPreguntaCerradaDeleteDialogComponent } from 'app/entities/e-pregunta-cerrada/delete/e-pregunta-cerrada-delete-dialog.component'; import { EPreguntaCerradaDeleteDialogComponent } from 'app/entities/e-pregunta-cerrada/delete/e-pregunta-cerrada-delete-dialog.component';
import { faTimes, faPlus, faQuestion, faPollH, faEye } from '@fortawesome/free-solid-svg-icons'; import { faEye, faPlus, faPollH, faQuestion, faTimes } from '@fortawesome/free-solid-svg-icons';
import { PreguntaCerradaTipo } from 'app/entities/enumerations/pregunta-cerrada-tipo.model'; import { PreguntaCerradaTipo } from 'app/entities/enumerations/pregunta-cerrada-tipo.model';
import { EncuestaDeleteQuestionDialogComponent } from '../encuesta-delete-question-dialog/encuesta-delete-question-dialog.component'; import { EncuestaDeleteQuestionDialogComponent } from '../encuesta-delete-question-dialog/encuesta-delete-question-dialog.component';
import { EncuestaDeleteOptionDialogComponent } from '../encuesta-delete-option-dialog/encuesta-delete-option-dialog.component'; import { EncuestaDeleteOptionDialogComponent } from '../encuesta-delete-option-dialog/encuesta-delete-option-dialog.component';
import { ParametroAplicacionService } from './../../parametro-aplicacion/service/parametro-aplicacion.service'; import { ParametroAplicacionService } from './../../parametro-aplicacion/service/parametro-aplicacion.service';
import { IParametroAplicacion } from './../../parametro-aplicacion/parametro-aplicacion.model'; import { IParametroAplicacion } from './../../parametro-aplicacion/parametro-aplicacion.model';
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';
import { EncuestaDeleteDialogComponent } from '../delete/encuesta-delete-dialog.component';
import { EncuestaDeleteColaboratorDialogComponent } from '../encuesta-delete-colaborator-dialog/encuesta-delete-colaborator-dialog.component'; import { EncuestaDeleteColaboratorDialogComponent } from '../encuesta-delete-colaborator-dialog/encuesta-delete-colaborator-dialog.component';
import { IUser } from '../../user/user.model';
import * as $ from 'jquery'; import * as $ from 'jquery';
import { UserService } from '../../user/user.service';
import { EstadoColaborador } from '../../enumerations/estado-colaborador.model';
@Component({ @Component({
selector: 'jhi-encuesta-update', selector: 'jhi-encuesta-update',
@ -102,6 +103,10 @@ export class EncuestaUpdateComponent implements OnInit, AfterViewChecked {
editFormUpdateCollab = this.fb.group({ editFormUpdateCollab = this.fb.group({
rol: [null, [Validators.required]], rol: [null, [Validators.required]],
}); });
editFormAddCollab = this.fb.group({
email: [null, [Validators.required, Validators.email]],
rol: [null, [Validators.required]],
});
ePreguntas?: any[]; ePreguntas?: any[];
ePreguntasOpciones?: any[]; ePreguntasOpciones?: any[];
@ -114,6 +119,9 @@ export class EncuestaUpdateComponent implements OnInit, AfterViewChecked {
createAnotherQuestion: Boolean = false; createAnotherQuestion: Boolean = false;
selectedQuestionToCreateOption: IEPreguntaCerrada | null = null; selectedQuestionToCreateOption: IEPreguntaCerrada | null = null;
userPublicCollab: IUser | null = null;
usuarioExtraCollab: UsuarioExtra | null = null;
userCollabNotExist: boolean = false;
constructor( constructor(
protected encuestaService: EncuestaService, protected encuestaService: EncuestaService,
protected categoriaService: CategoriaService, protected categoriaService: CategoriaService,
@ -127,7 +135,8 @@ export class EncuestaUpdateComponent implements OnInit, AfterViewChecked {
protected ePreguntaAbiertaService: EPreguntaAbiertaService, protected ePreguntaAbiertaService: EPreguntaAbiertaService,
protected usuarioEncuestaService: UsuarioEncuestaService, protected usuarioEncuestaService: UsuarioEncuestaService,
protected router: Router, protected router: Router,
protected accountService: AccountService protected accountService: AccountService,
protected userService: UserService
) {} ) {}
loadAll(): void { loadAll(): void {
@ -623,6 +632,13 @@ export class EncuestaUpdateComponent implements OnInit, AfterViewChecked {
// } // }
/* methods for colaborators*/ /* methods for colaborators*/
protected createFromFormCollab(): UsuarioEncuesta {
return {
id: undefined,
rol: this.editFormAddCollab.get(['rol_add'])!.value,
};
}
selectColaborator(c: IUsuarioEncuesta) { selectColaborator(c: IUsuarioEncuesta) {
this.colaborador = c; this.colaborador = c;
this.rolSeleccionado = c.rol; this.rolSeleccionado = c.rol;
@ -643,6 +659,40 @@ export class EncuestaUpdateComponent implements OnInit, AfterViewChecked {
} }
} }
saveAddCollab(): void {
this.isSavingCollab = true;
const collab = this.createFromFormCollab();
let correoCollab = this.editFormAddCollab.get('email_collab')!.value;
this.usuarioExtraService
.retrieveAllPublicUsers()
.pipe(
finalize(() => {
if (this.userPublicCollab?.id !== undefined) {
this.usuarioExtraService.find(this.userPublicCollab?.id).subscribe(res => {
this.usuarioExtraCollab = res.body;
collab.fechaAgregado = dayjs(new Date(), DATE_TIME_FORMAT);
collab.usuarioExtra = this.usuarioExtraCollab;
collab.estado = EstadoColaborador.PENDING;
collab.encuesta = this.encuesta;
let id = 0;
this.subscribeToSaveResponseUpdateCollab(this.usuarioEncuestaService.create(collab));
this.sendInvitation(correoCollab);
});
} else {
this.userCollabNotExist = true;
}
})
)
.subscribe(res => {
res.forEach(user => {
if (user.login === correoCollab) {
this.userPublicCollab = user;
}
});
});
}
protected subscribeToSaveResponseUpdateCollab(result: Observable<HttpResponse<IUsuarioEncuesta>>): void { protected subscribeToSaveResponseUpdateCollab(result: Observable<HttpResponse<IUsuarioEncuesta>>): void {
result.pipe(finalize(() => this.onSaveFinalizeUpdateCollab())).subscribe( result.pipe(finalize(() => this.onSaveFinalizeUpdateCollab())).subscribe(
() => this.onSaveSuccessUpdateCollab(), () => this.onSaveSuccessUpdateCollab(),
@ -681,4 +731,8 @@ export class EncuestaUpdateComponent implements OnInit, AfterViewChecked {
isAutor() { isAutor() {
return this.usuarioExtra?.id == this.encuesta?.usuarioExtra?.id; return this.usuarioExtra?.id == this.encuesta?.usuarioExtra?.id;
} }
sendInvitation(correo: string) {
this.encuestaService.sendCorreoInvitacion(correo);
}
} }