diff --git a/app/Models/RequestedQuote.php b/app/Models/RequestedQuote.php new file mode 100644 index 0000000..5eb0775 --- /dev/null +++ b/app/Models/RequestedQuote.php @@ -0,0 +1,33 @@ + $this->quote, + ]); + + $this->delete(); + } + + public function reject(): void + { + // TODO: we'll probs want to log who reject this quote + + $this->delete(); + } +} diff --git a/app/Models/RequestedQuotes.php b/app/Models/RequestedQuotes.php deleted file mode 100644 index 9abff21..0000000 --- a/app/Models/RequestedQuotes.php +++ /dev/null @@ -1,16 +0,0 @@ -user()->is_admin; + } + + public function reject(): bool + { + return auth()->user()->is_admin; + } +} diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php index 54756cd..0d5b42d 100644 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -3,6 +3,8 @@ namespace App\Providers; // use Illuminate\Support\Facades\Gate; +use App\Models\RequestedQuote; +use App\Policies\RequestQuotePolicy; use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; class AuthServiceProvider extends ServiceProvider @@ -13,6 +15,7 @@ class AuthServiceProvider extends ServiceProvider * @var array */ protected $policies = [ + RequestedQuote::class => RequestQuotePolicy::class, // ]; diff --git a/resources/views/components/primary-button.blade.php b/resources/views/components/primary-button.blade.php index 1c122ba..dff6429 100644 --- a/resources/views/components/primary-button.blade.php +++ b/resources/views/components/primary-button.blade.php @@ -1,3 +1,3 @@ - diff --git a/resources/views/layouts/guest.blade.php b/resources/views/layouts/guest.blade.php index ed42d48..4153e09 100644 --- a/resources/views/layouts/guest.blade.php +++ b/resources/views/layouts/guest.blade.php @@ -24,7 +24,7 @@
{{-- TODO: REPLACE WITH OUR LOGO --}} -
+
diff --git a/resources/views/livewire/guest/navigation.blade.php b/resources/views/livewire/guest/navigation.blade.php index ec68b77..6de4550 100644 --- a/resources/views/livewire/guest/navigation.blade.php +++ b/resources/views/livewire/guest/navigation.blade.php @@ -1,4 +1,4 @@ -
+
@auth
getQuotes(); + } + + #[On('quote-approved')] + public function getQuotes(): void { $this->quotes = Quote::all()->whereNull('deleted_at')->sortDesc(); + } }; ?> -
diff --git a/resources/views/livewire/pages/quote/request.blade.php b/resources/views/livewire/pages/quote/request.blade.php index e9ddbf6..960b884 100644 --- a/resources/views/livewire/pages/quote/request.blade.php +++ b/resources/views/livewire/pages/quote/request.blade.php @@ -1,7 +1,7 @@ validate(); - RequestedQuotes::create([ + RequestedQuote::create([ 'quote' => $validated['quote'], 'user_id' => auth()->user()->id ?? null, ]); diff --git a/resources/views/livewire/pages/quote/requested.blade.php b/resources/views/livewire/pages/quote/requested.blade.php index 753deaf..5db3891 100644 --- a/resources/views/livewire/pages/quote/requested.blade.php +++ b/resources/views/livewire/pages/quote/requested.blade.php @@ -1,7 +1,7 @@ getRequestedQuotes(); - } - #[On('quote-requested')] - public function getRequestedQuotes() + public function approve(RequestedQuote $quote): void { - $this->quotes = RequestedQuotes::all()->whereNull('deleted_at')->sortDesc(); + $this->authorize('approve', $quote); + + $quote->approve(); + + $this->dispatch('quote-approved'); + } + + public function reject(RequestedQuote $quote): void + { + $this->authorize('reject', $quote); + + $quote->reject(); + + $this->dispatch('quote-rejected'); + } + + #[On('quote-approved')] + #[On('quote-rejected')] + #[On('quote-requested')] + public function getRequestedQuotes(): void + { + $this->quotes = RequestedQuote::all()->whereNull('deleted_at')->sortDesc(); } }; ?> -
@@ -37,7 +55,9 @@ new #[Layout('layouts.guest')] class extends Component class="py-3.5 pl-4 pr-3 text-left text-sm font-semibold text-nexi-black dark:text-gray-200 sm:pl-6"> Requested Quotes - {{-- TODO: add logged in user stuff --}} + @if(auth()->user()->is_admin) + + @endif @@ -46,6 +66,18 @@ new #[Layout('layouts.guest')] class extends Component + @if(auth()->user()->is_admin) + + @endif @endforeach
{{ $quote->quote }} +
+
+ {{ __('Approve') }} +
+
+ {{ __('Reject') }} +
+
+