From c134be14073e2c2768bac406c02fc94b7f409ff8 Mon Sep 17 00:00:00 2001 From: ma7payne Date: Tue, 22 Oct 2024 10:43:13 -0300 Subject: [PATCH] feat(CIT): chequea turnos antes de asignar demanda --- .../demanda-insatisfecha.component.ts | 1 + .../turnos/dashboard/demandaInsatisfecha.html | 60 ++++++++++++++++++- .../turnos/dashboard/demandaInsatisfecha.scss | 16 +++++ .../turnos/dashboard/demandaInsatisfecha.ts | 30 ++++++++-- .../services/turnos/listaEspera.service.ts | 2 +- 5 files changed, 102 insertions(+), 7 deletions(-) create mode 100644 src/app/components/turnos/dashboard/demandaInsatisfecha.scss diff --git a/src/app/components/demandaInsatisfecha/demanda-insatisfecha.component.ts b/src/app/components/demandaInsatisfecha/demanda-insatisfecha.component.ts index 040aea0b27..093308edda 100644 --- a/src/app/components/demandaInsatisfecha/demanda-insatisfecha.component.ts +++ b/src/app/components/demandaInsatisfecha/demanda-insatisfecha.component.ts @@ -263,6 +263,7 @@ export class DemandaInsatisfechaComponent implements OnInit { idAgenda: datosTurno.idAgenda, }; }; + this.listaEsperaService.patch(this.itemSelected.id, 'estado', data).subscribe(() => { this.plex.toast('success', 'Demanda cerrada exitosamente'); this.actualizarFiltros({ value: '' }, ''); diff --git a/src/app/components/turnos/dashboard/demandaInsatisfecha.html b/src/app/components/turnos/dashboard/demandaInsatisfecha.html index f47ca1cdcf..b381f2e3d0 100644 --- a/src/app/components/turnos/dashboard/demandaInsatisfecha.html +++ b/src/app/components/turnos/dashboard/demandaInsatisfecha.html @@ -14,4 +14,62 @@ - \ No newline at end of file + + + + + ¡Demanda insatisfecha guardada + exitosamente! +
+ +
+ + ACEPTAR + +
+ + + + Información +
+ +
+ + ACEPTAR + +
\ No newline at end of file diff --git a/src/app/components/turnos/dashboard/demandaInsatisfecha.scss b/src/app/components/turnos/dashboard/demandaInsatisfecha.scss new file mode 100644 index 0000000000..c00e9b1be4 --- /dev/null +++ b/src/app/components/turnos/dashboard/demandaInsatisfecha.scss @@ -0,0 +1,16 @@ +main { + min-height: auto !important; +} + +.modal-contents { + .content-row:last-child { + border-bottom: none; + } +} + +.content-row { + display: flex; + align-items: center; + margin-bottom: 10px; + border-bottom: 1px solid #999; +} \ No newline at end of file diff --git a/src/app/components/turnos/dashboard/demandaInsatisfecha.ts b/src/app/components/turnos/dashboard/demandaInsatisfecha.ts index 4e0f1d9bf1..5ae11bf506 100644 --- a/src/app/components/turnos/dashboard/demandaInsatisfecha.ts +++ b/src/app/components/turnos/dashboard/demandaInsatisfecha.ts @@ -1,6 +1,7 @@ import { Auth } from '@andes/auth'; import { Plex } from '@andes/plex'; -import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { PlexModalComponent } from '@andes/plex/src/lib/modal/modal.component'; +import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core'; import { IPaciente } from 'src/app/core/mpi/interfaces/IPaciente'; import { ConceptosTurneablesService } from 'src/app/services/conceptos-turneables.service'; import { ListaEsperaService } from 'src/app/services/turnos/listaEspera.service'; @@ -9,6 +10,7 @@ import { ProfesionalService } from './../../../services/profesional.service'; @Component({ selector: 'demandaInsatisfecha', templateUrl: 'demandaInsatisfecha.html', + styleUrls: ['demandaInsatisfecha.scss'] }) export class demandaInsatisfechaComponent { @@ -17,6 +19,8 @@ export class demandaInsatisfechaComponent { @Input() origen = 'citas'; @Input() estado = 'pendiente'; @Output() demandaCerrada = new EventEmitter(); + @ViewChild('modalSolicitudes', { static: true }) modalSolicitudes: PlexModalComponent; + @ViewChild('modalTurno', { static: true }) modalTurno: PlexModalComponent; tipoPrestacion: any; permisos = []; @@ -28,6 +32,8 @@ export class demandaInsatisfechaComponent { ]; motivo: any; organizacion = this.auth.organizacion; + solicitudesAsociadas; + turnoAsociado; constructor( public auth: Auth, @@ -54,9 +60,23 @@ export class demandaInsatisfechaComponent { guardar() { if (this.motivo && this.tipoPrestacion) { this.listaEsperaService.save({ id: this.paciente.id }, this.tipoPrestacion, this.estado, this.profesional, this.organizacion, this.motivo.nombre, this.origen).subscribe({ - complete: () => { - this.plex.toast('success', 'Demanda insatisfecha guardada exitosamente!'); - this.cerrar(); + next: ({ status, data }) => { + if (status === 'existeTurno') { + const dia = moment(data.horaInicio).format('LL'); + const horario = moment(data.horaInicio).format('HH:mm'); + const profesionales = data.profesionales?.map(prof => ` ${prof.nombre} ${prof.apellido}`); + + this.turnoAsociado = { dia, horario, profesionales }; + this.modalTurno.show(); + } else { + if (data.solicitudes.length) { + this.solicitudesAsociadas = data.solicitudes; + this.modalSolicitudes.show(); + } else { + this.plex.toast('success', 'Demanda insatisfecha guardada exitosamente!'); + this.cerrar(); + } + } }, error: (e) => this.plex.toast('danger', e.message, 'Ha ocurrido un error al guardar') }); @@ -65,6 +85,6 @@ export class demandaInsatisfechaComponent { cerrar() { this.demandaCerrada.emit(); + this.modalSolicitudes.close(); } - } diff --git a/src/app/services/turnos/listaEspera.service.ts b/src/app/services/turnos/listaEspera.service.ts index 3bad17834e..79023b48d2 100644 --- a/src/app/services/turnos/listaEspera.service.ts +++ b/src/app/services/turnos/listaEspera.service.ts @@ -22,7 +22,7 @@ export class ListaEsperaService { return this.server.get(this.listaEsperaUrl, { params: params, showError: true }); } - post(listaEspera: IListaEspera): Observable { + post(listaEspera: IListaEspera): Observable { return this.server.post(this.listaEsperaUrl, listaEspera); }