From f501ab5438292a4cfd1012658a6cc3661c40ae5a Mon Sep 17 00:00:00 2001 From: Mischa Spelt Date: Sun, 2 Jul 2017 15:20:27 +0200 Subject: [PATCH] programma/nustraks toegevoegd. --- .../Http/Controllers/ProgramController.php | 71 ++++++++++++------- api/routes/web.php | 2 +- 2 files changed, 46 insertions(+), 27 deletions(-) diff --git a/api/app/Http/Controllers/ProgramController.php b/api/app/Http/Controllers/ProgramController.php index fba13a9..9eff212 100644 --- a/api/app/Http/Controllers/ProgramController.php +++ b/api/app/Http/Controllers/ProgramController.php @@ -31,31 +31,50 @@ QUERY; // } + /** + * Programmas nu en straks (24 uur vooruit) + */ + public function comingup() { + $start = new \DateTimeImmutable('now'); + $einde = $start->add(\DateInterval::createFromDateString('today + 48 hours')); + $schema = $this->createSchedule($start, $einde); + + return response()->json($schema); + } + /** * Programmaschema per week */ public function schedule(Request $request, $weeksAhead = null) { - define('PROGRAMMA_START', 1); - define('PROGRAMMA_EINDE', -1); - - define('PW_TIJDSTIP', 0); - define('PW_TYPE', 1); - define('PW_PROGRAMMA', 2); - - $oneWeek = \DateInterval::createFromDateString('1 week'); - if($weeksAhead <= 0) { $weeksAhead = 1; } $start = new \DateTimeImmutable('Monday this week'); $einde = $start->add(\DateInterval::createFromDateString((int)$weeksAhead . ' weeks')); + return response()->json($this->createSchedule($start, $einde)); + } + + private function createSchedule($start, $einde) { + if(!defined('PROGRAMMA_START')) { + define('PROGRAMMA_START', 1); + define('PROGRAMMA_EINDE', -1); + + define('PW_TIJDSTIP', 0); + define('PW_TYPE', 1); + define('PW_PROGRAMMA', 2); + } + + $oneWeek = \DateInterval::createFromDateString('1 week'); + + $programmas = app('db')->select(self::$SCHEDULE_SQL, ['enddate' => $einde->format('Y-m-d'), 'startdate' => $start->format('Y-m-d')]); // Maak een lijstje van alle start en eindtijden en welk programma dan begint/eindigt $startEinde = []; + $startMaandag = $start->modify('Monday this week'); foreach($programmas as $programma) { - $programmaStart = $start->add(\DateInterval::createFromDateString(($programma->startday - 1) % 7 . ' days')); - $programmaEinde = $start->add(\DateInterval::createFromDateString(($programma->endday - 1) % 7 . ' days')); + $programmaStart = $startMaandag->add(\DateInterval::createFromDateString(($programma->startday - 1) % 7 . ' days')); + $programmaEinde = $startMaandag->add(\DateInterval::createFromDateString(($programma->endday - 1) % 7 . ' days')); $startTijd = new \DateTime($programma->starttime); $eindTijd = new \DateTime($programma->endtime); @@ -73,11 +92,13 @@ QUERY; } while($programmaStart < $einde) { - if(($programma->startdate != null) && ($programmaStart < new \DateTime($programma->startdate))) { continue; } - if(($programma->enddate != null) && ($programmaStart > new \DateTime($programma->enddate))) { continue; } - - $startEinde[] = [$programmaStart, PROGRAMMA_START, $programma]; - $startEinde[] = [$programmaEinde, PROGRAMMA_EINDE, $programma]; + if((($programma->startdate == null) || ($programmaStart >= new \DateTime($programma->startdate))) + && (($programma->enddate == null) || ($programmaStart <= new \DateTime($programma->enddate))) + && (($programmaEinde >= $start) && ($programmaStart <= $einde))) + { + $startEinde[] = [$programmaStart, PROGRAMMA_START, $programma]; + $startEinde[] = [$programmaEinde, PROGRAMMA_EINDE, $programma]; + } $programmaStart = $programmaStart->add($oneWeek); $programmaEinde = $programmaEinde->add($oneWeek); @@ -86,8 +107,6 @@ QUERY; array_multisort($startEinde); -// return response()->json($startEinde); - $actieveProgrammas = [null, null, null, null]; $schema = []; $fouten = []; @@ -125,14 +144,14 @@ QUERY; } } - if(false) { - for($i = 1; $i <= count($schema); $i++) { - $eindTijd = ($i == count($schema)) ? $einde : $schema[$i]['tijdstip']; - $programma = $schema[$i-1]['programma']; - print $schema[$i-1]['tijdstip']->format('D d-m-Y, H:i:s') . " - " . $eindTijd->format('D d-m-Y, H:i:s') . ": " . ($programma != null ? $programma->longname : "NULL") . "\n"; + if(false) { + for($i = 1; $i <= count($schema); $i++) { + $eindTijd = ($i == count($schema)) ? $einde : $schema[$i]['tijdstip']; + $programma = $schema[$i-1]['programma']; + print $schema[$i-1]['tijdstip']->format('D d-m-Y, H:i:s') . " - " . $eindTijd->format('D d-m-Y, H:i:s') . ": " . ($programma != null ? $programma->longname : "NULL") . "\n"; + } } - } - return response()->json(['wah' => $weeksAhead, 'startdate' => $start, 'enddate' => $einde, 'schema' => $schema, 'fouten' => $fouten, 'programmas' => $programmas]); - } + return ['startdate' => $start, 'enddate' => $einde, 'schema' => $schema, 'fouten' => $fouten]; + } } diff --git a/api/routes/web.php b/api/routes/web.php index 8abbc6c..d230eac 100644 --- a/api/routes/web.php +++ b/api/routes/web.php @@ -29,7 +29,7 @@ $app->get('podcast/overzicht', 'PodcastController@overview' ); $app->get('podcast/download/{id:\d+}/[{title}]', 'PodcastController@download' ); $app->get('podcast/stream/{id:\d+}/[{title}]', 'PodcastController@stream' ); -// programma/nustraks +$app->get('programma/schema/nustraks', 'ProgramController@comingup' ); $app->get('programma/schema/week[/{weeksAhead:\d+}]', 'ProgramController@schedule' ); // programma/details/{id:\d+}