update: cruddy request controller

This commit is contained in:
Roardom
2023-04-21 17:09:09 +00:00
parent 901ab78d9c
commit 4c93353f03
23 changed files with 285 additions and 207 deletions
+95
View File
@@ -0,0 +1,95 @@
<?php
/**
* NOTICE OF LICENSE.
*
* UNIT3D Community Edition is open-sourced software licensed under the GNU Affero General Public License v3.0
* The details is bundled with this project in the file LICENSE.txt.
*
* @project UNIT3D Community Edition
*
* @author HDVinnie <hdinnovations@protonmail.com>
* @license https://www.gnu.org/licenses/agpl-3.0.en.html/ GNU Affero General Public License v3.0
*/
namespace App\Http\Controllers;
use App\Models\BonTransactions;
use App\Models\TorrentRequest;
use App\Models\TorrentRequestBounty;
use App\Notifications\NewRequestBounty;
use App\Repositories\ChatRepository;
use Illuminate\Http\Request;
use Illuminate\Support\Carbon;
/**
* @see \Tests\Todo\Feature\Http\Controllers\RequestControllerTest
*/
class BountyController extends Controller
{
/**
* RequestController Constructor.
*/
public function __construct(private readonly ChatRepository $chatRepository)
{
}
/**
* Add Bounty To A Torrent Request.
*/
public function store(Request $request, int $id): \Illuminate\Http\RedirectResponse
{
$user = $request->user();
$tr = TorrentRequest::with('user')->findOrFail($id);
$tr->votes++;
$tr->bounty += $request->input('bonus_value');
$tr->created_at = Carbon::now();
$v = validator($request->all(), [
'bonus_value' => sprintf('required|numeric|min:100|max:%s', $user->seedbonus),
]);
if ($v->fails()) {
return to_route('requests.show', ['id' => $tr->id])
->withErrors($v->errors());
}
$tr->save();
$torrentRequestBounty = new TorrentRequestBounty();
$torrentRequestBounty->user_id = $user->id;
$torrentRequestBounty->seedbonus = $request->input('bonus_value');
$torrentRequestBounty->requests_id = $tr->id;
$torrentRequestBounty->anon = $request->input('anon');
$torrentRequestBounty->save();
$BonTransactions = new BonTransactions();
$BonTransactions->itemID = 0;
$BonTransactions->name = 'request';
$BonTransactions->cost = $request->input('bonus_value');
$BonTransactions->sender = $user->id;
$BonTransactions->comment = sprintf('adding bonus to %s', $tr->name);
$BonTransactions->save();
$user->seedbonus -= $request->input('bonus_value');
$user->save();
$trUrl = href_request($tr);
$profileUrl = href_profile($user);
// Auto Shout
if ($torrentRequestBounty->anon == 0) {
$this->chatRepository->systemMessage(
sprintf('[url=%s]%s[/url] has added %s BON bounty to request [url=%s]%s[/url]', $profileUrl, $user->username, $request->input('bonus_value'), $trUrl, $tr->name)
);
} else {
$this->chatRepository->systemMessage(
sprintf('An anonymous user added %s BON bounty to request [url=%s]%s[/url]', $request->input('bonus_value'), $trUrl, $tr->name)
);
}
$sender = $request->input('anon') == 1 ? 'Anonymous' : $user->username;
$requester = $tr->user;
if ($requester->acceptsNotification($request->user(), $requester, 'request', 'show_request_bounty')) {
$requester->notify(new NewRequestBounty('torrent', $sender, $request->input('bonus_value'), $tr));
}
return to_route('requests.show', ['id' => $request->input('request_id')])
->withSuccess(trans('request.added-bonus'));
}
}
+104
View File
@@ -0,0 +1,104 @@
<?php
/**
* NOTICE OF LICENSE.
*
* UNIT3D Community Edition is open-sourced software licensed under the GNU Affero General Public License v3.0
* The details is bundled with this project in the file LICENSE.txt.
*
* @project UNIT3D Community Edition
*
* @author HDVinnie <hdinnovations@protonmail.com>
* @license https://www.gnu.org/licenses/agpl-3.0.en.html/ GNU Affero General Public License v3.0
*/
namespace App\Http\Controllers;
use App\Models\TorrentRequest;
use App\Models\TorrentRequestClaim;
use App\Notifications\NewRequestClaim;
use App\Notifications\NewRequestUnclaim;
use App\Repositories\ChatRepository;
use Illuminate\Http\Request;
use Exception;
/**
* @see \Tests\Todo\Feature\Http\Controllers\RequestControllerTest
*/
class ClaimController extends Controller
{
/**
* RequestController Constructor.
*/
public function __construct(private readonly ChatRepository $chatRepository)
{
}
/**
* Claim A Torrent Request.
*/
public function store(Request $request, int $id): \Illuminate\Http\RedirectResponse
{
$user = $request->user();
$torrentRequest = TorrentRequest::with('user')->findOrFail($id);
if ($torrentRequest->claimed == null) {
$torrentRequestClaim = new TorrentRequestClaim();
$torrentRequestClaim->request_id = $id;
$torrentRequestClaim->username = $user->username;
$torrentRequestClaim->anon = $request->input('anon');
$torrentRequestClaim->save();
$torrentRequest->claimed = 1;
$torrentRequest->save();
$sender = $request->input('anon') == 1 ? 'Anonymous' : $user->username;
$requester = $torrentRequest->user;
if ($requester->acceptsNotification($request->user(), $requester, 'request', 'show_request_claim')) {
$requester->notify(new NewRequestClaim('torrent', $sender, $torrentRequest));
}
return to_route('requests.show', ['id' => $id])
->withSuccess(trans('request.claimed-success'));
}
return to_route('requests.show', ['id' => $id])
->withErrors(trans('request.already-claimed'));
}
/**
* Uncliam A Torrent Request.
*
* @throws Exception
*/
public function destroy(Request $request, int $id): \Illuminate\Http\RedirectResponse
{
$user = $request->user();
$torrentRequest = TorrentRequest::findOrFail($id);
$claimer = TorrentRequestClaim::where('request_id', '=', $id)->first();
abort_unless($user->group->is_modo || $user->username == $claimer->username, 403);
if ($torrentRequest->claimed == 1) {
$requestClaim = TorrentRequestClaim::where('request_id', '=', $id)->firstOrFail();
$isAnon = $requestClaim->anon;
$requestClaim->delete();
$torrentRequest->claimed = null;
$torrentRequest->save();
$sender = $isAnon == 1 ? 'Anonymous' : $user->username;
$requester = $torrentRequest->user;
if ($requester->acceptsNotification($request->user(), $requester, 'request', 'show_request_unclaim')) {
$requester->notify(new NewRequestUnclaim('torrent', $sender, $torrentRequest));
}
return to_route('requests.show', ['id' => $id])
->withSuccess(trans('request.unclaimed-success'));
}
return to_route('requests.show', ['id' => $id])
->withErrors(trans('request.unclaim-error'));
}
}
+2 -2
View File
@@ -45,7 +45,7 @@ class ReportController extends Controller
]);
if ($v->fails()) {
return to_route('request', ['id' => $id])
return to_route('requests.show', ['id' => $id])
->withErrors($v->errors());
}
@@ -60,7 +60,7 @@ class ReportController extends Controller
'solved' => 0,
]);
return to_route('request', ['id' => $id])
return to_route('requests.show', ['id' => $id])
->withSuccess(trans('user.report-sent'));
}
+23 -155
View File
@@ -28,12 +28,9 @@ use App\Models\TorrentRequestClaim;
use App\Models\Tv;
use App\Models\Type;
use App\Models\User;
use App\Notifications\NewRequestBounty;
use App\Notifications\NewRequestClaim;
use App\Notifications\NewRequestFill;
use App\Notifications\NewRequestFillApprove;
use App\Notifications\NewRequestFillReject;
use App\Notifications\NewRequestUnclaim;
use App\Repositories\ChatRepository;
use App\Services\Tmdb\TMDBScraper;
use Illuminate\Http\Request;
@@ -64,7 +61,7 @@ class RequestController extends Controller
/**
* Display The Torrent Request.
*/
public function request(Request $request, int $id): \Illuminate\Contracts\View\Factory|\Illuminate\View\View
public function show(Request $request, int $id): \Illuminate\Contracts\View\Factory|\Illuminate\View\View
{
$torrentRequest = TorrentRequest::with('category')->findOrFail($id);
$user = $request->user();
@@ -120,7 +117,7 @@ class RequestController extends Controller
/**
* Torrent Request Add Form.
*/
public function addRequestForm(Request $request): \Illuminate\Contracts\View\Factory|\Illuminate\View\View
public function create(Request $request): \Illuminate\Contracts\View\Factory|\Illuminate\View\View
{
$user = $request->user();
@@ -142,7 +139,7 @@ class RequestController extends Controller
/**
* Store A New Torrent Request.
*/
public function addrequest(Request $request): \Illuminate\Http\RedirectResponse
public function store(Request $request): \Illuminate\Http\RedirectResponse
{
$user = $request->user();
@@ -230,7 +227,7 @@ class RequestController extends Controller
/**
* Torrent Request Edit Form.
*/
public function editRequestForm(Request $request, int $id): \Illuminate\Contracts\View\Factory|\Illuminate\View\View
public function edit(Request $request, int $id): \Illuminate\Contracts\View\Factory|\Illuminate\View\View
{
$user = $request->user();
$torrentRequest = TorrentRequest::findOrFail($id);
@@ -246,7 +243,7 @@ class RequestController extends Controller
/**
* Edit A Torrent Request.
*/
public function editrequest(Request $request, int $id): \Illuminate\Http\RedirectResponse
public function update(Request $request, int $id): \Illuminate\Http\RedirectResponse
{
$user = $request->user();
$torrentRequest = TorrentRequest::findOrFail($id);
@@ -307,74 +304,14 @@ class RequestController extends Controller
$tmdbScraper->movie($torrentRequest->tmdb);
}
return to_route('request', ['id' => $torrentRequest->id])
return to_route('requests.show', ['id' => $torrentRequest->id])
->withSuccess(trans('request.edited-request'));
}
/**
* Add Bounty To A Torrent Request.
*/
public function addBonus(Request $request, int $id): \Illuminate\Http\RedirectResponse
{
$user = $request->user();
$tr = TorrentRequest::with('user')->findOrFail($id);
$tr->votes++;
$tr->bounty += $request->input('bonus_value');
$tr->created_at = Carbon::now();
$v = validator($request->all(), [
'bonus_value' => sprintf('required|numeric|min:100|max:%s', $user->seedbonus),
]);
if ($v->fails()) {
return to_route('request', ['id' => $tr->id])
->withErrors($v->errors());
}
$tr->save();
$torrentRequestBounty = new TorrentRequestBounty();
$torrentRequestBounty->user_id = $user->id;
$torrentRequestBounty->seedbonus = $request->input('bonus_value');
$torrentRequestBounty->requests_id = $tr->id;
$torrentRequestBounty->anon = $request->input('anon');
$torrentRequestBounty->save();
$BonTransactions = new BonTransactions();
$BonTransactions->itemID = 0;
$BonTransactions->name = 'request';
$BonTransactions->cost = $request->input('bonus_value');
$BonTransactions->sender = $user->id;
$BonTransactions->comment = sprintf('adding bonus to %s', $tr->name);
$BonTransactions->save();
$user->seedbonus -= $request->input('bonus_value');
$user->save();
$trUrl = href_request($tr);
$profileUrl = href_profile($user);
// Auto Shout
if ($torrentRequestBounty->anon == 0) {
$this->chatRepository->systemMessage(
sprintf('[url=%s]%s[/url] has added %s BON bounty to request [url=%s]%s[/url]', $profileUrl, $user->username, $request->input('bonus_value'), $trUrl, $tr->name)
);
} else {
$this->chatRepository->systemMessage(
sprintf('An anonymous user added %s BON bounty to request [url=%s]%s[/url]', $request->input('bonus_value'), $trUrl, $tr->name)
);
}
$sender = $request->input('anon') == 1 ? 'Anonymous' : $user->username;
$requester = $tr->user;
if ($requester->acceptsNotification($request->user(), $requester, 'request', 'show_request_bounty')) {
$requester->notify(new NewRequestBounty('torrent', $sender, $request->input('bonus_value'), $tr));
}
return to_route('request', ['id' => $request->input('request_id')])
->withSuccess(trans('request.added-bonus'));
}
/**
* Fill A Torrent Request.
*/
public function fillRequest(Request $request, int $id): \Illuminate\Http\RedirectResponse
public function fill(Request $request, int $id): \Illuminate\Http\RedirectResponse
{
$user = $request->user();
@@ -391,13 +328,13 @@ class RequestController extends Controller
]);
if ($v->fails()) {
return to_route('request', ['id' => $request->input('request_id')])
return to_route('requests.show', ['id' => $request->input('request_id')])
->withErrors($v->errors());
}
$torrent = Torrent::withAnyStatus()->where('id', '=', $torrentRequest->torrent_id)->first();
if ($torrent->isApproved() === false) {
return to_route('request', ['id' => $request->input('request_id')])
return to_route('requests.show', ['id' => $request->input('request_id')])
->withErrors(trans('request.pending-moderation'));
}
@@ -409,14 +346,14 @@ class RequestController extends Controller
$requester->notify(new NewRequestFill('torrent', $sender, $torrentRequest));
}
return to_route('request', ['id' => $request->input('request_id')])
return to_route('requests.show', ['id' => $request->input('request_id')])
->withSuccess(trans('request.pending-approval'));
}
/**
* Approve A Torrent Request.
*/
public function approveRequest(Request $request, int $id): \Illuminate\Http\RedirectResponse
public function approve(Request $request, int $id): \Illuminate\Http\RedirectResponse
{
$user = $request->user();
@@ -424,7 +361,7 @@ class RequestController extends Controller
if ($user->id == $tr->user_id || $request->user()->group->is_modo) {
if ($tr->approved_by != null) {
return to_route('request', ['id' => $id])
return to_route('requests.show', ['id' => $id])
->withErrors(trans('request.already-approved'));
}
@@ -473,29 +410,29 @@ class RequestController extends Controller
}
if ($tr->filled_anon == 0) {
return to_route('request', ['id' => $id])
return to_route('requests.show', ['id' => $id])
->withSuccess(sprintf(trans('request.approved-user'), $tr->name, $fillUser->username));
}
return to_route('request', ['id' => $id])
return to_route('requests.show', ['id' => $id])
->withSuccess(sprintf(trans('request.approved-anon'), $tr->name));
}
return to_route('request', ['id' => $id])
return to_route('requests.show', ['id' => $id])
->withErrors(trans('request.access-error'));
}
/**
* Reject A Torrent Request.
*/
public function rejectRequest(Request $request, int $id): \Illuminate\Http\RedirectResponse
public function reject(Request $request, int $id): \Illuminate\Http\RedirectResponse
{
$user = $request->user();
$torrentRequest = TorrentRequest::findOrFail($id);
if ($user->id == $torrentRequest->user_id) {
if ($torrentRequest->approved_by != null) {
return to_route('request', ['id' => $id])
return to_route('requests.show', ['id' => $id])
->withErrors(trans('request.already-rejected'));
}
@@ -509,11 +446,11 @@ class RequestController extends Controller
$torrentRequest->torrent_id = null;
$torrentRequest->save();
return to_route('request', ['id' => $id])
return to_route('requests.show', ['id' => $id])
->withSuccess(trans('request.request-reset'));
}
return to_route('request', ['id' => $id])
return to_route('requests.show', ['id' => $id])
->withSuccess(trans('request.access-error'));
}
@@ -522,7 +459,7 @@ class RequestController extends Controller
*
* @throws Exception
*/
public function deleteRequest(Request $request, int $id): \Illuminate\Http\RedirectResponse
public function destroy(Request $request, int $id): \Illuminate\Http\RedirectResponse
{
$user = $request->user();
$torrentRequest = TorrentRequest::findOrFail($id);
@@ -535,83 +472,14 @@ class RequestController extends Controller
->withSuccess(sprintf(trans('request.deleted'), $name));
}
return to_route('request', ['id' => $id])
return to_route('requests.show', ['id' => $id])
->withErrors(trans('request.access-delete-error'));
}
/**
* Claim A Torrent Request.
*/
public function claimRequest(Request $request, int $id): \Illuminate\Http\RedirectResponse
{
$user = $request->user();
$torrentRequest = TorrentRequest::with('user')->findOrFail($id);
if ($torrentRequest->claimed == null) {
$torrentRequestClaim = new TorrentRequestClaim();
$torrentRequestClaim->request_id = $id;
$torrentRequestClaim->username = $user->username;
$torrentRequestClaim->anon = $request->input('anon');
$torrentRequestClaim->save();
$torrentRequest->claimed = 1;
$torrentRequest->save();
$sender = $request->input('anon') == 1 ? 'Anonymous' : $user->username;
$requester = $torrentRequest->user;
if ($requester->acceptsNotification($request->user(), $requester, 'request', 'show_request_claim')) {
$requester->notify(new NewRequestClaim('torrent', $sender, $torrentRequest));
}
return to_route('request', ['id' => $id])
->withSuccess(trans('request.claimed-success'));
}
return to_route('request', ['id' => $id])
->withErrors(trans('request.already-claimed'));
}
/**
* Uncliam A Torrent Request.
*
* @throws Exception
*/
public function unclaimRequest(Request $request, int $id): \Illuminate\Http\RedirectResponse
{
$user = $request->user();
$torrentRequest = TorrentRequest::findOrFail($id);
$claimer = TorrentRequestClaim::where('request_id', '=', $id)->first();
abort_unless($user->group->is_modo || $user->username == $claimer->username, 403);
if ($torrentRequest->claimed == 1) {
$requestClaim = TorrentRequestClaim::where('request_id', '=', $id)->firstOrFail();
$isAnon = $requestClaim->anon;
$requestClaim->delete();
$torrentRequest->claimed = null;
$torrentRequest->save();
$sender = $isAnon == 1 ? 'Anonymous' : $user->username;
$requester = $torrentRequest->user;
if ($requester->acceptsNotification($request->user(), $requester, 'request', 'show_request_unclaim')) {
$requester->notify(new NewRequestUnclaim('torrent', $sender, $torrentRequest));
}
return to_route('request', ['id' => $id])
->withSuccess(trans('request.unclaimed-success'));
}
return to_route('request', ['id' => $id])
->withErrors(trans('request.unclaim-error'));
}
/**
* Resets the filled and approved attributes on a given request.
*/
public function resetRequest(Request $request, int $id): \Illuminate\Http\RedirectResponse
public function reset(Request $request, int $id): \Illuminate\Http\RedirectResponse
{
$user = $request->user();
abort_unless($user->group->is_modo, 403);
@@ -624,7 +492,7 @@ class RequestController extends Controller
$torrentRequest->approved_when = null;
$torrentRequest->save();
return to_route('request', ['id' => $id])
return to_route('requests.show', ['id' => $id])
->withSuccess(trans('request.request-reset'));
}
}
+1 -1
View File
@@ -40,7 +40,7 @@
<section class="panelV2">
<h2>{{ __('torrent.torrent-request') }} {{ __('request.title') }}</h2>
<div class="panel__body">
<a href="{{ route('request', ['id' => $report->request->id]) }}">
<a href="{{ route('requests.show', ['id' => $report->request->id]) }}">
{{ $report->title }}
</a>
</div>
@@ -5,7 +5,7 @@
<h2 class="panel__heading">{{ __('request.requests') }}</h2>
<div class="panel__actions">
<div class="panel__action">
<a href="{{ route('add_request') }}" class="form__button form__button--text">
<a href="{{ route('requests.create') }}" class="form__button form__button--text">
{{ __('request.add-request') }}
</a>
</div>
@@ -57,7 +57,7 @@
@forelse($torrentRequests as $torrentRequest)
<tr>
<td>
<a href="{{ route('request', ['id' => $torrentRequest->id]) }}">
<a href="{{ route('requests.show', ['id' => $torrentRequest->id]) }}">
{{ $torrentRequest->name }}
</a>
</td>
@@ -22,7 +22,7 @@
<section class="panelV2">
<h2 class="panel__heading">{{ __('request.add-request') }}</h2>
<div class="panel__body">
<form class="form" method="POST" action="{{ route('add_request') }}">
<form class="form" method="POST" action="{{ route('requests.store') }}">
@csrf
<p class="form__group">
<input
@@ -11,7 +11,7 @@
</a>
</li>
<li class="breadcrumbV2">
<a href="{{ route('request', ['id' => $torrentRequest->id]) }}" class="breadcrumb__link">
<a href="{{ route('requests.show', ['id' => $torrentRequest->id]) }}" class="breadcrumb__link">
{{ $torrentRequest->name }}
</a>
</li>
@@ -35,8 +35,9 @@
<section class="panelV2">
<h2 class="panel__heading">{{ __('request.edit-request') }}</h2>
<div class="panel__body">
<form class="form" method="POST" action="{{ route('edit_request', ['id' => $torrentRequest->id]) }}">
<form class="form" method="POST" action="{{ route('requests.update', ['id' => $torrentRequest->id]) }}">
@csrf
@method('PATCH')
<p class="form__group">
<input
id="title"
@@ -9,7 +9,7 @@
<form
class="dialog__form"
method="POST"
action="{{ route("claimRequest", ['id' => $torrentRequest->id]) }}"
action="{{ route("requests.claims.store", ['id' => $torrentRequest->id]) }}"
x-on:click.outside="$refs.dialog.close()"
>
@csrf
@@ -1,11 +1,12 @@
<li class="form__group form__group--short-horizontal">
<form
action="{{ route("deleteRequest", ['id' => $torrentRequest->id]) }}"
action="{{ route("requests.destroy", ['id' => $torrentRequest->id]) }}"
method="POST"
x-data
style="display: contents"
>
@csrf
@method('DELETE')
<button
x-on:click.prevent="Swal.fire({
title: 'Are you sure?',
@@ -1,7 +1,7 @@
<li class="form__group form__group--short-horizontal">
<a
class="form__button form__button--outlined form__button--centered"
href="{{ route('edit_request', ['id' => $torrentRequest->id]) }}"
href="{{ route('requests.edit', ['id' => $torrentRequest->id]) }}"
>
{{ __('common.edit') }}
</a>
@@ -9,7 +9,7 @@
<form
class="dialog__form"
method="POST"
action="{{ route("fill_request", ['id' => $torrentRequest->id]) }}"
action="{{ route("requests.fill", ['id' => $torrentRequest->id]) }}"
x-on:click.outside="$refs.dialog.close()"
>
@csrf
@@ -1,7 +1,7 @@
<li class="form__group form__group--short-horizontal">
<form
method="POST"
action="{{ route("resetRequest", ['id' => $torrentRequest->id]) }}"
action="{{ route("requests.reset", ['id' => $torrentRequest->id]) }}"
x-data
style="display: contents"
>
@@ -1,10 +1,11 @@
<li class="form__group form__group--short-horizontal">
<form
method="POST"
action="{{ route('unclaimRequest', ['id' => $torrentRequest->id]) }}"
action="{{ route('requests.claims.destroy', ['id' => $torrentRequest->id]) }}"
style="display: contents"
>
@csrf
@method('DELETE')
<button class="form__button form__button--outlined form__button--centered">
{{ __('request.unclaim') }}
</button>
@@ -9,7 +9,7 @@
<form
class="dialog__form"
method="POST"
action="{{ route("add_votes", ['id' => $torrentRequest->id]) }}"
action="{{ route("requests.bounties.store", ['id' => $torrentRequest->id]) }}"
x-on:click.outside="$refs.dialog.close()"
>
@csrf
+2 -2
View File
@@ -179,7 +179,7 @@
<div class="form__group">
<form
method="POST"
action="{{ route('approveRequest', ['id' => $torrentRequest->id]) }}"
action="{{ route('requests.approve', ['id' => $torrentRequest->id]) }}"
style="display: contents"
>
@csrf
@@ -189,7 +189,7 @@
</form>
<form
method="POST"
action="{{ route('rejectRequest', ['id' => $torrentRequest->id]) }}"
action="{{ route('requests.reject', ['id' => $torrentRequest->id]) }}"
style="display: contents"
>
@csrf
@@ -39,7 +39,7 @@
<tr>
<td>{{ $loop->iteration }}</td>
<td>
<a href="{{ route('request', ['id' => $request->id]) }}">
<a href="{{ route('requests.show', ['id' => $request->id]) }}">
{{ $request->name }}
</a>
</td>
@@ -32,7 +32,7 @@
</a>
</li>
<li>
<a href="{{ route('add_request_form', [
<a href="{{ route('requests.create', [
'category_id' => $category->id,
'title' => rawurlencode(($meta?->name ?? '') . ' ' . substr($meta->release_date ?? '', 0, 4) ?? ''),
'imdb' => $torrent->imdb ?? '',
@@ -32,7 +32,7 @@
</a>
</li>
<li>
<a href="{{ route('add_request_form', [
<a href="{{ route('requests.create', [
'category_id' => $category->id,
'title' => rawurlencode(($meta?->title ?? '') . ' ' . substr($meta->release_date ?? '', 0, 4) ?? ''),
'imdb' => $torrent->imdb ?? '',
@@ -19,7 +19,7 @@
</a>
</li>
<li>
<a href="{{ route('add_request_form', ['title' => rawurlencode($meta?->title ?? '') ?? 'Unknown', 'imdb' => $torrent?->imdb ?? '', 'tmdb' => $meta?->id ?? '']) }}">
<a href="{{ route('requests.create', ['title' => rawurlencode($meta?->title ?? '') ?? 'Unknown', 'imdb' => $torrent?->imdb ?? '', 'tmdb' => $meta?->id ?? '']) }}">
Request similar
</a>
</li>
@@ -32,7 +32,7 @@
</a>
</li>
<li>
<a href="{{ route('add_request_form', [
<a href="{{ route('requests.create', [
'category_id' => $category->id,
'title' => rawurlencode(($meta?->name ?? '') . ' ' . substr($meta->first_air_date ?? '', 0, 4) ?? ''),
'imdb' => $torrent->imdb ?? '',
+22 -14
View File
@@ -157,22 +157,30 @@ Route::group(['middleware' => 'language'], function (): void {
});
});
Route::group(['prefix' => 'requests'], function (): void {
Route::get('/add', [App\Http\Controllers\RequestController::class, 'addRequestForm'])->name('add_request_form');
Route::post('/add', [App\Http\Controllers\RequestController::class, 'addRequest'])->name('add_request');
Route::get('/{id}/edit', [App\Http\Controllers\RequestController::class, 'editRequestForm'])->name('edit_request_form');
Route::post('/{id}/edit', [App\Http\Controllers\RequestController::class, 'editRequest'])->name('edit_request');
Route::get('/{id}{hash?}', [App\Http\Controllers\RequestController::class, 'request'])->name('request');
Route::post('/{id}/accept', [App\Http\Controllers\RequestController::class, 'approveRequest'])->name('approveRequest');
Route::post('/{id}/delete', [App\Http\Controllers\RequestController::class, 'deleteRequest'])->name('deleteRequest');
Route::post('/{id}/fill', [App\Http\Controllers\RequestController::class, 'fillRequest'])->name('fill_request');
Route::post('/{id}/reject', [App\Http\Controllers\RequestController::class, 'rejectRequest'])->name('rejectRequest');
Route::post('/{id}/vote', [App\Http\Controllers\RequestController::class, 'addBonus'])->name('add_votes');
Route::post('/{id}/claim', [App\Http\Controllers\RequestController::class, 'claimRequest'])->name('claimRequest');
Route::post('/{id}/unclaim', [App\Http\Controllers\RequestController::class, 'unclaimRequest'])->name('unclaimRequest');
Route::post('/{id}/reset', [App\Http\Controllers\RequestController::class, 'resetRequest'])->name('resetRequest')->middleware('modo');
Route::group(['prefix' => 'requests', 'as' => 'requests.'], function (): void {
Route::get('/add', [App\Http\Controllers\RequestController::class, 'create'])->name('create');
Route::post('/', [App\Http\Controllers\RequestController::class, 'store'])->name('store');
Route::get('/{id}/edit', [App\Http\Controllers\RequestController::class, 'edit'])->name('edit');
Route::patch('/{id}', [App\Http\Controllers\RequestController::class, 'update'])->name('update');
Route::get('/{id}', [App\Http\Controllers\RequestController::class, 'show'])->name('show');
Route::delete('/{id}', [App\Http\Controllers\RequestController::class, 'destroy'])->name('destroy');
Route::post('/{id}/accept', [App\Http\Controllers\RequestController::class, 'approve'])->name('approve');
Route::post('/{id}/fill', [App\Http\Controllers\RequestController::class, 'fill'])->name('fill');
Route::post('/{id}/reject', [App\Http\Controllers\RequestController::class, 'reject'])->name('reject');
Route::post('/{id}/reset', [App\Http\Controllers\RequestController::class, 'reset'])->name('reset')->middleware('modo');
Route::group(['prefix' => 'bounties', 'as' => 'bounties.'], function (): void {
Route::post('/{id}', [App\Http\Controllers\BountyController::class, 'store'])->name('store');
});
Route::group(['prefix' => 'claims', 'as' => 'claims.'], function (): void {
Route::post('/{id}', [App\Http\Controllers\ClaimController::class, 'store'])->name('store');
Route::delete('/{id}', [App\Http\Controllers\ClaimController::class, 'destroy'])->name('destroy');
});
});
// Top 10 System
Route::group(['prefix' => 'top10'], function (): void {
Route::name('top10.')->group(function (): void {
@@ -22,7 +22,7 @@ class RequestControllerTest extends TestCase
$user = User::factory()->create();
$response = $this->actingAs($user)->post(route('add_votes', ['id' => $id]), [
$response = $this->actingAs($user)->post(route('bounty.store', ['id' => $id]), [
// TODO: send request data
]);
@@ -34,13 +34,13 @@ class RequestControllerTest extends TestCase
/**
* @test
*/
public function add_request_form_returns_an_ok_response(): void
public function requests_create_returns_an_ok_response(): void
{
$this->markTestIncomplete('This test case was generated by Shift. When you are ready, remove this line and complete this test case.');
$user = User::factory()->create();
$response = $this->actingAs($user)->get(route('add_request_form'));
$response = $this->actingAs($user)->get(route('requests.create'));
$response->assertOk();
$response->assertViewIs('requests.add_request');
@@ -63,7 +63,7 @@ class RequestControllerTest extends TestCase
$user = User::factory()->create();
$response = $this->actingAs($user)->get(route('approveRequest', ['id' => $id]));
$response = $this->actingAs($user)->get(route('requests.approve', ['id' => $id]));
$response->assertRedirect(withErrors('Seems this request was already approved'));
@@ -79,7 +79,7 @@ class RequestControllerTest extends TestCase
$user = User::factory()->create();
$response = $this->actingAs($user)->post(route('claimRequest', ['id' => $id]), [
$response = $this->actingAs($user)->post(route('requests.claims.store', ['id' => $id]), [
// TODO: send request data
]);
@@ -97,7 +97,7 @@ class RequestControllerTest extends TestCase
$user = User::factory()->create();
$response = $this->actingAs($user)->post(route('deleteRequest', ['id' => $id]), [
$response = $this->actingAs($user)->delete(route('requests.deleted', ['id' => $id]), [
// TODO: send request data
]);
@@ -109,13 +109,13 @@ class RequestControllerTest extends TestCase
/**
* @test
*/
public function edit_request_form_returns_an_ok_response(): void
public function requests_edit_returns_an_ok_response(): void
{
$this->markTestIncomplete('This test case was generated by Shift. When you are ready, remove this line and complete this test case.');
$user = User::factory()->create();
$response = $this->actingAs($user)->get(route('edit_request_form', ['id' => $id]));
$response = $this->actingAs($user)->get(route('requests.edit', ['id' => $id]));
$response->assertOk();
$response->assertViewIs('requests.edit_request');
@@ -147,13 +147,13 @@ class RequestControllerTest extends TestCase
/**
* @test
*/
public function fill_request_returns_an_ok_response(): void
public function requests_fill_returns_an_ok_response(): void
{
$this->markTestIncomplete('This test case was generated by Shift. When you are ready, remove this line and complete this test case.');
$user = User::factory()->create();
$response = $this->actingAs($user)->post(route('fill_request', ['id' => $id]), [
$response = $this->actingAs($user)->post(route('requests.fill', ['id' => $id]), [
// TODO: send request data
]);
@@ -165,13 +165,13 @@ class RequestControllerTest extends TestCase
/**
* @test
*/
public function reject_request_returns_an_ok_response(): void
public function requests_reject_returns_an_ok_response(): void
{
$this->markTestIncomplete('This test case was generated by Shift. When you are ready, remove this line and complete this test case.');
$user = User::factory()->create();
$response = $this->actingAs($user)->get(route('rejectRequest', ['id' => $id]));
$response = $this->actingAs($user)->get(route('requests.reject', ['id' => $id]));
$response->assertRedirect(withErrors('Seems this request was already rejected'));
@@ -181,13 +181,13 @@ class RequestControllerTest extends TestCase
/**
* @test
*/
public function request_returns_an_ok_response(): void
public function request_show_returns_an_ok_response(): void
{
$this->markTestIncomplete('This test case was generated by Shift. When you are ready, remove this line and complete this test case.');
$user = User::factory()->create();
$response = $this->actingAs($user)->get(route('request', ['id' => $id]));
$response = $this->actingAs($user)->get(route('request.show', ['id' => $id]));
$response->assertOk();
$response->assertViewIs('requests.request');
@@ -237,7 +237,7 @@ class RequestControllerTest extends TestCase
$user = User::factory()->create();
$response = $this->actingAs($user)->get(route('resetRequest', ['id' => $id]));
$response = $this->actingAs($user)->get(route('requests.reset', ['id' => $id]));
$response->assertRedirect(withSuccess('The request has been reset!'));
@@ -253,7 +253,7 @@ class RequestControllerTest extends TestCase
$user = User::factory()->create();
$response = $this->actingAs($user)->get(route('unclaimRequest', ['id' => $id]));
$response = $this->actingAs($user)->delete(route('requests.claims.destroy', ['id' => $id]));
$response->assertRedirect(withSuccess('Request Successfully Un-Claimed'));