Skip to content
Carolina Celeste edited this page Mar 19, 2020 · 6 revisions

CITAS

Listar turnos y sobreturnos

Este aggregate une previamente los turnos y sobreturnos para que sean considerados de forma igual. Cambia el tipo de turno a los sobreturnos para identificarlos. Rellenar los stages $match como sean necesarios.

const pipeline = [
    { 
        $match: ...
    },
    { 
        $addFields: { 
            'sobreturnos.tipoTurno': 'sobreturno' 
        } 
    },
    { 
        $addFields: { 
            _sobreturnos: [{ turnos: '$sobreturnos' }] 
        } 
    },
    { 
        $addFields: { 
            bloques: { $concatArrays: ['$_sobreturnos', '$bloques'] } 
        } 
    },
    { $unwind: '$bloques' },
    { $unwind: '$bloques.turnos' },
    { 
        $match: ...
    },
];

Turnos Virtuales

Listado de turnos virtuales disponibles

const pipeline = [
    { 
        $match: {
            'bloques.restantesMobile': {$gt: 0},
            'estado': 'publicada', 
            'horaInicio': { $gte: ISODate("2020-03-20T00:00:03.707-03:00")}
        }
    },
    {
        $unwind: '$bloques'
    },
    {
        $match: {
            'bloques.restantesMobile': {$gt: 0}, 
            'bloques.restantesProgramados': {$gt: 0}
        }
    },
    {
        $addFields: {
                restantes: {
                $cond: {
                    if: {
                        $gte: ['$bloques.restantesMobile', '$bloques.restantesProgramados']
                    },
                    then: '$bloques.restantesProgramados',
                    else: '$bloques.restantesMobile'
                }
            }
        }
    },
    {
       $project: {
            prestacion: '$tipoPrestaciones.term', 
            organizacion: '$organizacion.nombre',
            fecha: { 
                '$dateToString': { 'format': '%d/%m/%Y', date: '$horaInicio' }
            },
            totalTurnosMobile: "$bloques.restantesMobile",
            restantes: 1
        }
    }
];
Clone this wiki locally