Example #1
0
function reservasalas_getBooking($type, $campusid, $date, $multiply, $size, $finaldate, $days, $frequency)
{
    global $DB;
    if ($multiply == 1) {
        $times = reservasalas_daysCalculator($date, $finaldate, $days, $frequency);
        $timesArray = array();
        foreach ($times as $time) {
            $timesArray[] = "'" . $time . "'";
        }
        $date = implode(",", $timesArray);
        if ($size != "0") {
            $sizePieces = explode("-", $size);
            if ($sizePieces[1] == "+") {
                $sizePieces[1] = 1000;
            }
            // $sqlCapacityFilter = "AND rs.capacidad BETWEEN $sizePieces[0] AND $sizePieces[1]";
        }
    } else {
        $date = "'" . date("Y-m-d", $date) . "'";
    }
    $sqlDisponibility = "SELECT salaid, salanombre, moduloid, modulonombre, moduloinicio, modulofin,capacidad , MAX(ocupada) as ocupada FROM (\n\tSELECT rs.id AS salaid, \n\trs.nombre AS salanombre, \n\trs.capacidad as capacidad, \n\trm.id AS moduloid, \n\trm.nombre_modulo as modulonombre, \n\trm.hora_inicio as moduloinicio, \n\trm.hora_fin as modulofin, \n\trr.activa as status, \n\tCASE WHEN rr.id IS NULL THEN 0 ELSE 1 END AS ocupada \n\tFROM {reservasalas_salas} AS rs \n\tINNER JOIN {reservasalas_edificios} AS re ON (re.id = rs.edificios_id AND rs.tipo = ? AND re.id = ?) \n\tINNER JOIN {reservasalas_modulos} AS rm ON (rm.edificio_id = re.id AND rm.nombre_modulo not like '%B') \n\tLEFT JOIN {reservasalas_reservas} AS rr ON (rr.salas_id = rs.id AND rr.modulo = rm.id AND rr.fecha_reserva IN ({$date}) AND rr.activa=1) \n\tORDER BY rs.id, rm.nombre_modulo ASC) AS disp \n\tGROUP BY salaid, moduloid";
    $data = $DB->get_recordset_sql($sqlDisponibility, array($type, $campusid));
    return $data;
}
Example #2
0
 $values = array();
 if (!has_capability("local/reservasalas:advancesearch", context_system::instance())) {
     list($weekBookings, $todayBookings) = booking_availability($initialDate);
     if ($todayBookings == 2 || count($room) > 3 || $CFG->reservasDia - $todayBookings - count($room) + 1 < 0 && $CFG->reservasSemana - $weekBookings - count($room) + 1 < 0) {
         $validation = false;
     } else {
         $validation = true;
     }
 } else {
     $validation = true;
 }
 $reservation = array();
 for ($counter = 1; $counter < count($room); $counter++) {
     if ($multiply == 1 && has_capability("local/reservasalas:advancesearch", context_system::instance())) {
         //calculate all the dates from reserves rooms (Y-m-d)
         $fechas = reservasalas_daysCalculator($initialDate, $enddate, $days, $frequency);
         foreach ($fechas as $fecha) {
             if (reservasalas_validationBooking($room[$counter], $moduleid[$counter], $fecha)) {
                 $time = time();
                 $data = array();
                 $data["fecha_reserva"] = $fecha;
                 $data["modulo"] = $moduleid[$counter];
                 $data["confirmado"] = 0;
                 $data["activa"] = 1;
                 $data["alumno_id"] = $USER->id;
                 $data["salas_id"] = $room[$counter];
                 $data["fecha_creacion"] = $time;
                 $data["nombre_evento"] = $eventname;
                 $data["asistentes"] = $assistants;
                 array_push($reservation, $data);
                 $values[] = array("sala" => $room[$counter], "nombresala" => $roomname[$counter], "modulo" => $moduleid[$counter], "nombremodulo" => $modulename[$counter], "inicio" => $start[$counter], "termino" => $finish[$counter], "fecha" => $fecha);