Jeeeede Menge updates.
This commit is contained in:
56
routes/auth.php
Normal file
56
routes/auth.php
Normal file
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
|
||||
use App\Http\Controllers\Auth\AuthenticatedSessionController;
|
||||
use App\Http\Controllers\Auth\ConfirmablePasswordController;
|
||||
use App\Http\Controllers\Auth\EmailVerificationNotificationController;
|
||||
use App\Http\Controllers\Auth\EmailVerificationPromptController;
|
||||
use App\Http\Controllers\Auth\NewPasswordController;
|
||||
use App\Http\Controllers\Auth\PasswordResetLinkController;
|
||||
use App\Http\Controllers\Auth\RegisteredUserController;
|
||||
use App\Http\Controllers\Auth\VerifyEmailController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
Route::middleware('guest')->group(function () {
|
||||
Route::get('register', [RegisteredUserController::class, 'create'])
|
||||
->name('register');
|
||||
|
||||
Route::post('register', [RegisteredUserController::class, 'store']);
|
||||
|
||||
Route::get('login', [AuthenticatedSessionController::class, 'create'])
|
||||
->name('login');
|
||||
|
||||
Route::post('login', [AuthenticatedSessionController::class, 'store']);
|
||||
|
||||
Route::get('forgot-password', [PasswordResetLinkController::class, 'create'])
|
||||
->name('password.request');
|
||||
|
||||
Route::post('forgot-password', [PasswordResetLinkController::class, 'store'])
|
||||
->name('password.email');
|
||||
|
||||
Route::get('reset-password/{token}', [NewPasswordController::class, 'create'])
|
||||
->name('password.reset');
|
||||
|
||||
Route::post('reset-password', [NewPasswordController::class, 'store'])
|
||||
->name('password.update');
|
||||
});
|
||||
|
||||
Route::middleware('auth')->group(function () {
|
||||
Route::get('verify-email', [EmailVerificationPromptController::class, '__invoke'])
|
||||
->name('verification.notice');
|
||||
|
||||
Route::get('verify-email/{id}/{hash}', [VerifyEmailController::class, '__invoke'])
|
||||
->middleware(['signed', 'throttle:6,1'])
|
||||
->name('verification.verify');
|
||||
|
||||
Route::post('email/verification-notification', [EmailVerificationNotificationController::class, 'store'])
|
||||
->middleware('throttle:6,1')
|
||||
->name('verification.send');
|
||||
|
||||
Route::get('confirm-password', [ConfirmablePasswordController::class, 'show'])
|
||||
->name('password.confirm');
|
||||
|
||||
Route::post('confirm-password', [ConfirmablePasswordController::class, 'store']);
|
||||
|
||||
Route::post('logout', [AuthenticatedSessionController::class, 'destroy'])
|
||||
->name('logout');
|
||||
});
|
212
routes/web.php
212
routes/web.php
@@ -1,6 +1,19 @@
|
||||
<?php
|
||||
|
||||
use App\Models\Film;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use Tmdb\Repository\MovieRepository;
|
||||
use App\Http\Helpers\TmdbProvider;
|
||||
use App\Models\Setting;
|
||||
use Tmdb\Helper\ImageHelper;
|
||||
use Tmdb\Repository\ConfigurationRepository;
|
||||
use Tmdb\Repository\SearchRepository;
|
||||
use App\Models\News;
|
||||
use App\Models\Vote;
|
||||
use Hamcrest\Core\Set;
|
||||
use Symfony\Component\EventDispatcher\EventDispatcher;
|
||||
use Tmdb\Event\Listener\HydrationListener;
|
||||
use Tmdb\Model\Search\SearchQuery\MovieSearchQuery;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -13,6 +26,203 @@ use Illuminate\Support\Facades\Route;
|
||||
|
|
||||
*/
|
||||
|
||||
|
||||
Route::get('/', function () {
|
||||
return view('welcome');
|
||||
$nextfilmid = Setting::nextFilm()->first()->value;
|
||||
if($nextfilmid != 0 && !is_null($nextfilmid)) {
|
||||
$feature = Film::where('id', $nextfilmid)->first();
|
||||
$featuretype = 'next';
|
||||
} else {
|
||||
//lastfilm
|
||||
$feature = Film::orderBy('seen', 'desc')->first();
|
||||
$featuretype = 'last';
|
||||
}
|
||||
|
||||
$client = TmdbProvider::getClient();
|
||||
$repo = new MovieRepository($client);
|
||||
/** @var \Tmdb\Model\Movie */
|
||||
$tmdb = $repo->load($feature->tvdbid);
|
||||
$ihelp = new ImageHelper((new ConfigurationRepository($client))->load());
|
||||
if($feature->poster === '') {
|
||||
$feature->poster = $tmdb->getPosterPath();
|
||||
$feature->save();
|
||||
}
|
||||
|
||||
$popular = Film::popular()->limit(5)->get();
|
||||
$new = Film::whereNull('seen')->whereNull('rejected')->orderBy('suggested', 'DESC')->limit(5)->get();
|
||||
$seen = $filme = Film::whereNotNull('seen')->orderBy('seen', 'desc')->limit(5, $featuretype == 'next' ? 0 : 1)->get();
|
||||
|
||||
$news = News::orderBy('id', 'desc')->limit(5)->get();
|
||||
|
||||
|
||||
return view('main', ['feature' => $feature, 'ftype' => $featuretype, 'ftmdb' => $tmdb, 'image' => $ihelp, 'popular' => $popular, 'new' => $new, 'seen' => $seen, 'news' => $news]);
|
||||
})->name('home');
|
||||
|
||||
Route::get('/film/{id}', function ($id) {
|
||||
$film = Film::where('id', $id)->first();
|
||||
|
||||
$client = TmdbProvider::getClient();
|
||||
$repo = new MovieRepository($client);
|
||||
/** @var \Tmdb\Model\Movie */
|
||||
$tmdb = $repo->load($film->tvdbid);
|
||||
$ihelp = new ImageHelper((new ConfigurationRepository($client))->load());
|
||||
if($film->poster === '') {
|
||||
$film->poster = $tmdb->getPosterPath();
|
||||
$film->save();
|
||||
}
|
||||
return view('film', ["film" => $film, "tmdb" => $tmdb, "image" => $ihelp]);
|
||||
})->name('film');
|
||||
|
||||
Route::get('/dashboard', function () {
|
||||
return view('dashboard');
|
||||
})->middleware(['auth'])->name('dashboard');
|
||||
|
||||
Route::get('/gesehen/{field?}/{order?}', function ($field = "seen", $order = "desc") {
|
||||
$filme = Film::whereNotNull('seen')->orderBy($field, $order)->paginate(24);
|
||||
|
||||
$client = TmdbProvider::getClient();
|
||||
$ihelp = new ImageHelper((new ConfigurationRepository($client))->load());
|
||||
|
||||
return view('archiv', ['title' => 'Gesehene Filme', 'films' => $filme, 'ihelp' => $ihelp]);
|
||||
})->name('gesehen')->where(['field' => '[a-z]+', 'order' => 'asc|desc']);
|
||||
|
||||
Route::get('/abgelehnt/{field?}/{order?}', function ($field = "seen", $order = "desc") {
|
||||
$filme = Film::whereNotNull('rejected')->orderBy($field, $order)->paginate(24);
|
||||
|
||||
$client = TmdbProvider::getClient();
|
||||
$ihelp = new ImageHelper((new ConfigurationRepository($client))->load());
|
||||
|
||||
return view('archiv', ['title' => 'Abgelehnte Filme', 'films' => $filme, 'ihelp' => $ihelp]);
|
||||
})->name('abgelehnt')->where(['field' => '[a-z]+', 'order' => 'asc|desc']);
|
||||
|
||||
Route::get('/vorschlaege/{order?}', function ($order = 'popular') {
|
||||
if($order === "neu")
|
||||
$films = Film::whereNull('seen')->whereNull('rejected')->orderBy('suggested', 'DESC')->paginate(24);
|
||||
elseif($order === "popular")
|
||||
$films = Film::popular()->paginate(24);
|
||||
else
|
||||
abort(404);
|
||||
|
||||
$client = TmdbProvider::getClient();
|
||||
$ihelp = new ImageHelper((new ConfigurationRepository($client))->load());
|
||||
|
||||
return view('vorschlaege', ["films" => $films, "title" => $order == 'popular' ? "nach Beliebtheit" : "nach Datum", "ihelp" => $ihelp]);
|
||||
})->name('vorschlag');
|
||||
|
||||
Route::get('/neu', function () {
|
||||
return view('suche', ['title' => 'Film vorschlagen']);
|
||||
})->middleware(['auth'])->name('neu');
|
||||
|
||||
Route::get('/api/search/{term?}', function($term = null) {
|
||||
if ($term == null || strlen($term) < 4) {
|
||||
return response('<div class="w-full text-center italic mt-2">Bitte mindestens 4 Zeichen eingeben!</div>');
|
||||
} else {
|
||||
$filme = Film::whereRaw("LOWER(name) like LOWER('%{$term}%')")->limit(12)->get();
|
||||
$count = Film::whereRaw("LOWER(name) like LOWER('%{$term}%')")->count();
|
||||
|
||||
$client = TmdbProvider::getClient();
|
||||
$ihelp = new ImageHelper((new ConfigurationRepository($client))->load());
|
||||
|
||||
return view('localsearch', ['filme' => $filme, 'count' => $count, 'ihelp' => $ihelp]);
|
||||
}
|
||||
});
|
||||
|
||||
Route::get('/api/remotesearch/{term?}', function($term = null) {
|
||||
$client = TmdbProvider::getClient();
|
||||
$query = new MovieSearchQuery();
|
||||
$query->page(1);
|
||||
$search = new SearchRepository($client);
|
||||
$find = $search->searchMovie($term, $query);
|
||||
$ihelp = new ImageHelper((new ConfigurationRepository($client))->load());
|
||||
return view('remotesearch', ['filme' => $find, 'image' => $ihelp]);
|
||||
});
|
||||
|
||||
Route::get('/film/vote/{film}/{vote}', function($film, $vote) {
|
||||
$vbool = (bool) $vote;
|
||||
$vote = Vote::where('film', $film)->where('user', auth()->id())->first();
|
||||
if(is_null($vote)) {
|
||||
$vote = new Vote();
|
||||
$vote->user = auth()->id();
|
||||
$vote->film = $film;
|
||||
}
|
||||
$vote->vote = $vbool;
|
||||
$vote->save();
|
||||
return redirect("/film/{$film}#voting")->with('status', 'Du hast abgestimmt!');
|
||||
})->middleware(['auth']);
|
||||
|
||||
Route::get('/film/mark/{id}/{type}', function($id, $type) {
|
||||
if(!Auth::user()->isAdmin()) {
|
||||
return redirect("/film/{$id}");
|
||||
}
|
||||
switch($type) {
|
||||
case 'next':
|
||||
$setting = Setting::nextFilm()->first();
|
||||
$setting->value = $id;
|
||||
$setting->save();
|
||||
$message = "Als nächsten Film markiert!";
|
||||
break;
|
||||
case 'seen':
|
||||
if(Setting::nextFilm()->first()->value == $id) {
|
||||
$setting = Setting::nextFilm()->first();
|
||||
$setting->value = 0;
|
||||
$setting->save();
|
||||
}
|
||||
$film = Film::find($id);
|
||||
$film->seen = now();
|
||||
$film->save();
|
||||
$message = "Film als gesehen markiert!";
|
||||
break;
|
||||
case 'deny':
|
||||
if(Setting::nextFilm()->first()->value == $id) {
|
||||
$setting = Setting::nextFilm()->first();
|
||||
$setting->value = 0;
|
||||
$setting->save();
|
||||
}
|
||||
$film = Film::find($id);
|
||||
$film->rejected = now();
|
||||
$film->save();
|
||||
$message = "Film als abgelehnt markiert!";
|
||||
break;
|
||||
}
|
||||
return redirect("/film/{$id}")->with('status', $message);
|
||||
})->middleware(['auth']);
|
||||
|
||||
Route::get('/vorschlag/{id}', function($id) {
|
||||
$films = Film::where('tvdbid', $id)->get();
|
||||
$previous = ["seen" => [], "rejected" => [], "suggested" => []];
|
||||
foreach($films as $film) {
|
||||
if(!is_null($film->rejected)) {
|
||||
$previous['rejected'][] = ["id" => $film->id, "date" => $film->rejected];
|
||||
} elseif (!is_null($film->seen)) {
|
||||
$previous['seen'][] = ["id" => $film->id, "date" => $film->seen];
|
||||
} else {
|
||||
$previous['suggested'][] = ["id" => $film->id, "date" => $film->created_at];
|
||||
}
|
||||
}
|
||||
$client = TmdbProvider::getClient();
|
||||
$repo = new MovieRepository($client);
|
||||
/** @var \Tmdb\Model\Movie */
|
||||
$tmdb = $repo->load($id);
|
||||
$ihelp = new ImageHelper((new ConfigurationRepository($client))->load());
|
||||
return view('vorschlag', ["tmdb" => $tmdb, "image" => $ihelp, "previous" => $previous]);
|
||||
})->middleware(['auth']);
|
||||
|
||||
Route::get('/vorschlag/{id}/vorschlagen', function($id) {
|
||||
$client = TmdbProvider::getClient();
|
||||
$repo = new MovieRepository($client);
|
||||
/** @var \Tmdb\Model\Movie */
|
||||
$tmdb = $repo->load($id);
|
||||
|
||||
$film = new Film();
|
||||
$film->name = $tmdb->getTitle();
|
||||
$film->tvdbid = $id;
|
||||
$film->suggested = now();
|
||||
$film->user = auth()->user()->id;
|
||||
$film->poster = $tmdb->getPosterPath();
|
||||
$film->save();
|
||||
|
||||
return redirect("/film/" . $film->id)->with('status', auth()->user()->name . ', Film "' . $film->name . '" vorgeschlagen.');
|
||||
|
||||
})->middleware(['auth']);
|
||||
|
||||
require __DIR__.'/auth.php';
|
||||
|
Reference in New Issue
Block a user