From a918600813e3a7429a16a5d3ef4a893a4d94f5cb Mon Sep 17 00:00:00 2001 From: Nicholas Ciechanowski Date: Sat, 7 Oct 2023 20:48:36 +1100 Subject: [PATCH] feat: basic quotes request --- app/Console/Commands/CreateUserCommand.php | 15 ++++++ app/Models/Quote.php | 18 ++----- app/Models/RequestedQuotes.php | 16 ++++++ .../2023_10_05_193121_create_quotes_table.php | 3 +- ...7_194337_create_requested_quotes_table.php | 25 +++++++++ database/seeders/BaseQuotesSeeder.php | 2 +- resources/views/components/sidebar.blade.php | 2 +- resources/views/home.blade.php | 6 ++- .../views/livewire/pages/quote/list.blade.php | 5 +- .../livewire/pages/quote/request.blade.php | 40 ++++++++++++++ .../livewire/pages/quote/requested.blade.php | 54 +++++++++++++++++++ routes/web.php | 3 +- 12 files changed, 165 insertions(+), 24 deletions(-) create mode 100644 app/Models/RequestedQuotes.php create mode 100644 database/migrations/2023_10_07_194337_create_requested_quotes_table.php create mode 100644 resources/views/livewire/pages/quote/request.blade.php create mode 100644 resources/views/livewire/pages/quote/requested.blade.php diff --git a/app/Console/Commands/CreateUserCommand.php b/app/Console/Commands/CreateUserCommand.php index d051748..881a152 100644 --- a/app/Console/Commands/CreateUserCommand.php +++ b/app/Console/Commands/CreateUserCommand.php @@ -102,6 +102,21 @@ class CreateUserCommand extends Command hint: 'One will be randomly generated if non is provided', ); + // If we're not randomly generating one, let's make sure they're the same. + // If they fucked it up and don't know what the first password is they're fucked. + if (!empty($password)) { + password( + label: 'Confirm password?', + placeholder: '**********', + validate: function (string $value) use ($password) { + if ($value !== $password) { + return "Passwords don't match"; + } + }, + hint: 'One will be randomly generated if non is provided', + ); + } + if (empty($password)) { $password = Str::password(12); $this->info("Randomly Generated Password: $password"); diff --git a/app/Models/Quote.php b/app/Models/Quote.php index 68cf9b2..88cedce 100644 --- a/app/Models/Quote.php +++ b/app/Models/Quote.php @@ -3,23 +3,13 @@ namespace App\Models; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\SoftDeletes; class Quote extends Model { - /** - * The attributes that are mass assignable. - * - * @var array - */ - protected $fillable = [ - 'last_used', - 'quote', - 'times_used', - ]; + use SoftDeletes; - protected $casts = [ - 'created_at' => 'datetime', - 'last_used' => 'datetime', - 'updated_at' => 'datetime', + protected $fillable = [ + 'quote', ]; } diff --git a/app/Models/RequestedQuotes.php b/app/Models/RequestedQuotes.php new file mode 100644 index 0000000..9abff21 --- /dev/null +++ b/app/Models/RequestedQuotes.php @@ -0,0 +1,16 @@ +id(); $table->string('quote'); - $table->integer('times_used')->default(0); - $table->timestamp('last_used')->nullable(); + $table->softDeletes(); $table->timestamps(); }); } diff --git a/database/migrations/2023_10_07_194337_create_requested_quotes_table.php b/database/migrations/2023_10_07_194337_create_requested_quotes_table.php new file mode 100644 index 0000000..21fefa9 --- /dev/null +++ b/database/migrations/2023_10_07_194337_create_requested_quotes_table.php @@ -0,0 +1,25 @@ +id(); + $table->string('quote'); + $table->foreignIdFor(User::class)->nullable(); + $table->softDeletes(); + $table->timestamps(); + }); + } + + public function down(): void + { + Schema::dropIfExists('requested_quotes'); + } +}; diff --git a/database/seeders/BaseQuotesSeeder.php b/database/seeders/BaseQuotesSeeder.php index c3ab1af..ecba727 100644 --- a/database/seeders/BaseQuotesSeeder.php +++ b/database/seeders/BaseQuotesSeeder.php @@ -254,7 +254,7 @@ class BaseQuotesSeeder extends Seeder "It's like a breakfast buffet for a paedophile ", "Aadyn Goodlet's Handjob Simulatior", 'You threat me with rape all the fucking time', - 'I DIDN\"T TRY TO FUCK THE 5 YEAR OLD', + 'I DIDN"T TRY TO FUCK THE 5 YEAR OLD', 'I am funny racist', 'Most vegans should go the same way a ginger-haired new babies..... DROWNED, straight to hell, do not pass purgatory, do not collect your last rites', 'Those priest spreads those little boy baby ass cheeks quicker than they can say Amen!!!!!', diff --git a/resources/views/components/sidebar.blade.php b/resources/views/components/sidebar.blade.php index 78f9cc9..f355088 100644 --- a/resources/views/components/sidebar.blade.php +++ b/resources/views/components/sidebar.blade.php @@ -1,6 +1,6 @@
diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php index 4fa34ec..79edd57 100644 --- a/resources/views/home.blade.php +++ b/resources/views/home.blade.php @@ -1,5 +1,9 @@ +
+ + - + +
diff --git a/resources/views/livewire/pages/quote/list.blade.php b/resources/views/livewire/pages/quote/list.blade.php index 3127042..4875c23 100644 --- a/resources/views/livewire/pages/quote/list.blade.php +++ b/resources/views/livewire/pages/quote/list.blade.php @@ -1,11 +1,8 @@ quotes = Quote::all()->sortDesc(); + $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 new file mode 100644 index 0000000..e9ddbf6 --- /dev/null +++ b/resources/views/livewire/pages/quote/request.blade.php @@ -0,0 +1,40 @@ +validate(); + + RequestedQuotes::create([ + 'quote' => $validated['quote'], + 'user_id' => auth()->user()->id ?? null, + ]); + + $this->quote = ''; + + $this->dispatch('quote-requested'); + } +}; ?> + +
+
+ + + + {{ __('Request') }} + +
diff --git a/resources/views/livewire/pages/quote/requested.blade.php b/resources/views/livewire/pages/quote/requested.blade.php new file mode 100644 index 0000000..753deaf --- /dev/null +++ b/resources/views/livewire/pages/quote/requested.blade.php @@ -0,0 +1,54 @@ +getRequestedQuotes(); + + } + + #[On('quote-requested')] + public function getRequestedQuotes() + { + $this->quotes = RequestedQuotes::all()->whereNull('deleted_at')->sortDesc(); + } +}; ?> + + +
+
+ + + + + {{-- TODO: add logged in user stuff --}} + + + + @foreach ($quotes as $quote) + + + + @endforeach + +
+ Requested Quotes +
+ {{ $quote->quote }} +
+
+
diff --git a/routes/web.php b/routes/web.php index 41267c6..8fb824f 100644 --- a/routes/web.php +++ b/routes/web.php @@ -14,7 +14,8 @@ use Livewire\Volt\Volt; | */ -Route::view('/', 'home'); +Route::view('/', 'home') + ->name('home'); Route::view('dashboard', 'dashboard') ->middleware(['auth'])