diff --git a/modules/mobileApp/routes/agendas.ts b/modules/mobileApp/routes/agendas.ts index 9845708fb..735253cdd 100644 --- a/modules/mobileApp/routes/agendas.ts +++ b/modules/mobileApp/routes/agendas.ts @@ -54,6 +54,15 @@ router.get('/agendasDisponibles', async (req: any, res, next) => { matchAgendas['bloques.restantesMobile'] = { $gt: 0 }; } pipelineAgendas.push({ $match: matchAgendas }); + pipelineAgendas.push({ $unwind: '$bloques' }); + pipelineAgendas.push({ + $match: + { + 'bloques.turnosMobile': true, + 'bloques.restantesProgramados': { $gt: 0 } + } + }); + pipelineAgendas.push({ $addFields: { bloques: ['$bloques'] } }); if (fieldRegla) { pipelineAgendas.push({ $addFields: fieldRegla }); } diff --git a/modules/turnos/controller/agenda.ts b/modules/turnos/controller/agenda.ts index 09aa90b66..eb47ac0bb 100644 --- a/modules/turnos/controller/agenda.ts +++ b/modules/turnos/controller/agenda.ts @@ -152,6 +152,9 @@ export async function liberarTurno(req, data, turno) { } else { if (data.bloques[position.indexBloque].restantesProgramados < (data.bloques[position.indexBloque].accesoDirectoProgramado - turnosAsignados.programados)) { data.bloques[position.indexBloque].restantesProgramados = data.bloques[position.indexBloque].restantesProgramados + cant; + if (data.bloques[position.indexBloque].restantesMobile < (data.bloques[position.indexBloque].cupoMobile - turnosAsignados.programados)) { + data.bloques[position.indexBloque].restantesMobile = data.bloques[position.indexBloque].restantesMobile + cant; + } } else { data.bloques[position.indexBloque].restantesDelDia = data.bloques[position.indexBloque].restantesDelDia + cant; }