lunes, 2 de mayo de 2016

Cruce de horarios

Como la validación del lado del servidor era demasiado lenta, implementé esta solución del lado del cliente, más sencilla.


Javascript
========

//Horario: 'MAR 11:44-19:15'
//HorarioList: 'MAR 09:15-11:45 - JUE 08:30-10:00 - SAB 09:15-1145'

function Cruce_De_Horario(Horario, HorarioList) {
    var Dias = Horario.split(' - ');
    var DiasList = HorarioList.split(' - ');
    var i = 0, k = 0;

    var Dia_Hora_I, Dia_Hora_K;
    var Dia_I, H1_I, H2_I, Dia_K, H1_K, H2_K;

    for (i = 1; i <= Dias.length; i++) {
        Dia_Hora_I = Dias[i - 1].split(' ');

        Dia_I = Dia_Hora_I[0];
        H1_I = new Date('2016/01/01 ' + Dia_Hora_I[1].split('-')[0]);
        H2_I = new Date('2016/01/01 ' + Dia_Hora_I[1].split('-')[1]);

        for (k = 1; k <= DiasList.length; k++) {
            Dia_Hora_K = DiasList[k - 1].split(' ');

            Dia_K = Dia_Hora_K[0];
            H1_K = new Date('2016/01/01 ' + Dia_Hora_K[1].split('-')[0]);
            H2_K = new Date('2016/01/01 ' + Dia_Hora_K[1].split('-')[1]);

            if (Dia_I == Dia_K) {
                if (H1_I >= H1_K && H1_I <= H2_K) {
                    if (H1_I.getHours() != H2_K.getHours() || H1_I.getMinutes() != H2_K.getMinutes()) {

                        return Dia_Hora_I[0] + ' ' + Dia_Hora_I[1] + '|' + Dia_Hora_K[0] + ' ' + Dia_Hora_K[1];
                    }
                }

                if (H2_I >= H1_K && H2_I <= H2_K) {
                    if (H2_I.getHours() != H1_K.getHours() || H2_I.getMinutes() != H1_K.getMinutes()) {

                        return Dia_Hora_I[0] + ' ' + Dia_Hora_I[1] + '|' + Dia_Hora_K[0] + ' ' + Dia_Hora_K[1];
                    }
                }
            }
        }
    }

    return '';
}

La idea es validar que no haya cruce de horario entre el curso seleccionado arriba, y los ya seleccionados abajo.




No hay comentarios:

Publicar un comentario