From 79333b46ff37c37ab359f7e2920cf493d824fe25 Mon Sep 17 00:00:00 2001
From: nicolasarana <90768149+nicolasarana@users.noreply.github.com>
Date: Wed, 8 Jul 2026 12:55:51 -0300
Subject: [PATCH 1/2] CIT : Agendas con bloques sin horario libre en el medio

---
 .../planificar-agenda.component.ts            | 21 +++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/src/app/components/turnos/gestor-agendas/operaciones-agenda/planificar-agenda.component.ts b/src/app/components/turnos/gestor-agendas/operaciones-agenda/planificar-agenda.component.ts
index b37a1844bf..3774b174a5 100644
--- a/src/app/components/turnos/gestor-agendas/operaciones-agenda/planificar-agenda.component.ts
+++ b/src/app/components/turnos/gestor-agendas/operaciones-agenda/planificar-agenda.component.ts
@@ -749,6 +749,22 @@ export class PlanificarAgendaComponent implements OnInit {
                     }
                 });
             });
+
+            // Verifica que los bloques sean consecutivos sin horario libre entre ellos
+            if (bloques.length > 1) {
+                const bloquesOrdenados = [...bloques].sort((a, b) => this.compararFechas(a.horaInicio, b.horaInicio));
+                for (let i = 0; i < bloquesOrdenados.length - 1; i++) {
+                    const actual = bloquesOrdenados[i];
+                    const siguiente = bloquesOrdenados[i + 1];
+                    if (actual.horaFin && siguiente.horaInicio) {
+                        const finActual = this.combinarFechas(this.fecha, actual.horaFin);
+                        const iniSiguiente = this.combinarFechas(this.fecha, siguiente.horaInicio);
+                        if (this.compararFechas(finActual, iniSiguiente) !== 0) {
+                            this.alertas.push('El bloque 2 tiene que empezar exactamente cuando termina el bloque 1');
+                        }
+                    }
+                }
+            }
         }
     }
 
@@ -766,6 +782,11 @@ export class PlanificarAgendaComponent implements OnInit {
     }
 
     onSave($event, clonar: Boolean) {
+        this.validarTodo();
+        if (this.alertas.length > 0) {
+            this.hideGuardar = false;
+            return;
+        }
         this.hideGuardar = true;
         if (this.dinamica) {
             this.modelo.dinamica = true;

From c3cbbd7a46542255388ab4f91263a55ee7070fd2 Mon Sep 17 00:00:00 2001
From: nicolasarana <90768149+nicolasarana@users.noreply.github.com>
Date: Tue, 21 Jul 2026 09:05:07 -0300
Subject: [PATCH 2/2] =?UTF-8?q?CIT-423=20:=20"Agregar=20tipo=20de=20presta?=
 =?UTF-8?q?ci=C3=B3n=20al=20sidebar=20del=20bloques"?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../operaciones-agenda/planificar-agenda.component.ts     | 8 ++++++++
 .../operaciones-agenda/planificar-agenda.html             | 5 ++++-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/src/app/components/turnos/gestor-agendas/operaciones-agenda/planificar-agenda.component.ts b/src/app/components/turnos/gestor-agendas/operaciones-agenda/planificar-agenda.component.ts
index 3774b174a5..f92f1750f9 100644
--- a/src/app/components/turnos/gestor-agendas/operaciones-agenda/planificar-agenda.component.ts
+++ b/src/app/components/turnos/gestor-agendas/operaciones-agenda/planificar-agenda.component.ts
@@ -1023,6 +1023,14 @@ export class PlanificarAgendaComponent implements OnInit {
         this.showModal = false;
     }
 
+    getPrestacionesActivas(bloque): string {
+        if (!bloque.tipoPrestaciones) {
+            return '';
+        }
+        const activas = bloque.tipoPrestaciones.filter(p => p.activo);
+        return activas.map(p => p.nombre).join(', ');
+    }
+
     isMobile() {
         return this.breakpointObserver.isMatched('(max-width: 599px)');
     }
diff --git a/src/app/components/turnos/gestor-agendas/operaciones-agenda/planificar-agenda.html b/src/app/components/turnos/gestor-agendas/operaciones-agenda/planificar-agenda.html
index 85924a0d04..b4629ec976 100644
--- a/src/app/components/turnos/gestor-agendas/operaciones-agenda/planificar-agenda.html
+++ b/src/app/components/turnos/gestor-agendas/operaciones-agenda/planificar-agenda.html
@@ -118,7 +118,10 @@
                         <plex-label *ngIf="unBloque.horaInicio && unBloque.horaFin"
                                     titulo="{{unBloque.horaInicio | date: 'HH:mm'}} a {{unBloque.horaFin | date: 'HH:mm'}}"
                                     size="md"></plex-label>
-                        <plex-label *ngIf="unBloque.descripcion" titulo="{{unBloque.descripcion}}" size="md">
+                        <plex-label *ngIf="getPrestacionesActivas(unBloque)"
+                                    titulo="{{getPrestacionesActivas(unBloque)}}"
+                                    [hint]="unBloque.descripcion || null"
+                                    hintType="info" hintIcon="eye" size="md">
                         </plex-label>
                         <plex-button *ngIf="!dinamica && modelo.bloques.length > 1" icon="delete" type="danger"
                                      size="sm" (click)="deleteBloque(i)">
