Bestellungen können jetzt aus der Mail raus abgehakt werden

This commit is contained in:
Alexander Gabriel 2026-04-19 19:04:07 +00:00
parent b0a05726a2
commit c8d83dc542
8 changed files with 82 additions and 10 deletions

View File

@ -0,0 +1,30 @@
<?php
namespace App\Http\Controllers;
use App\Filament\Resources\Orders\OrderResource;
use App\Models\Order;
use App\Models\Orderstatus;
use Illuminate\Http\Request;
class OrderController extends Controller
{
public function ordered($uuid)
{
$order = Order::where('public_uuid', $uuid)->firstOrFail();
$orderstatus = Orderstatus::where("name", "bestellt")->firstOrFail();
$order->orderstatus_id = $orderstatus->id;
$order->save();
return redirect(OrderResource::getUrl('edit', ['record' => $order->id,]));
}
public function taken($uuid)
{
$order = Order::where('public_uuid', $uuid)->firstOrFail();
$orderstatus = Orderstatus::where("name", "genommen")->firstOrFail();
$order->orderstatus_id = $orderstatus->id;
$order->save();
return redirect(OrderResource::getUrl('edit', ['record' => $order->id,]));
}
}

View File

@ -5,11 +5,11 @@ namespace App\Mail;
use App\Filament\Resources\Orders\OrderResource; use App\Filament\Resources\Orders\OrderResource;
use App\Models\Order; use App\Models\Order;
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable; use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Content; use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope; use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels; use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\URL;
class OrderArrived extends Mailable class OrderArrived extends Mailable
{ {
@ -43,7 +43,8 @@ class OrderArrived extends Mailable
return new Content( return new Content(
markdown: 'mail.order-arrived', markdown: 'mail.order-arrived',
with: [ with: [
'url' => OrderResource::getUrl('edit', ['record' => $this->order]), 'url_order' => OrderResource::getUrl('edit', ['record' => $this->order]),
'url_taken' => URL::to('/updateOrderstatusTaken/'.$this->order->public_uuid),
'order' => $this->order, 'order' => $this->order,
], ],
); );

View File

@ -5,11 +5,11 @@ namespace App\Mail;
use App\Filament\Resources\Orders\OrderResource; use App\Filament\Resources\Orders\OrderResource;
use App\Models\Order; use App\Models\Order;
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable; use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Content; use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope; use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels; use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\URL;
class OrderRegistered extends Mailable class OrderRegistered extends Mailable
{ {
@ -43,7 +43,8 @@ class OrderRegistered extends Mailable
return new Content( return new Content(
markdown: 'mail.order-registered', markdown: 'mail.order-registered',
with: [ with: [
'url' => OrderResource::getUrl('edit', ['record' => $this->order]), 'url_order' => OrderResource::getUrl('edit', ['record' => $this->order]),
'url_ordered' => URL::to('/updateOrderstatusOrdered/'.$this->order->public_uuid),
'order' => $this->order, 'order' => $this->order,
], ],
); );

View File

@ -7,8 +7,7 @@ use App\Mail\OrderRegistered;
use App\Models\Order; use App\Models\Order;
use App\Models\User; use App\Models\User;
use Illuminate\Support\Facades\Mail; use Illuminate\Support\Facades\Mail;
use App\Models\Orderstatus; use Illuminate\Support\Str;
use Carbon\Carbon;
class OrderObserver class OrderObserver
{ {
@ -17,6 +16,8 @@ class OrderObserver
*/ */
public function created(Order $order): void public function created(Order $order): void
{ {
$order->public_uuid = (string) Str::uuid();
$order->save();
$users = User::where("ordermanager", 1)->get(); $users = User::where("ordermanager", 1)->get();
foreach ($users as $user) { foreach ($users as $user) {
Mail::to($user)->send(new OrderRegistered($order)); Mail::to($user)->send(new OrderRegistered($order));

View File

@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('orders', function (Blueprint $table) {
$table->uuid('public_uuid')->nullable();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('orders', function (Blueprint $table) {
$table->dropColumn('public_uuid');
});
}
};

View File

@ -9,8 +9,12 @@ Eine deiner Bestellungen ist angekommen.
Bitte nicht vergessen, die Bestellung "abzuhaken", indem du auf "angenommen" drückst Bitte nicht vergessen, die Bestellung "abzuhaken", indem du auf "angenommen" drückst
<x-mail::button :url="$url"> <x-mail::button :url="$url_taken" color="success">
Zur Bestellung Hab's genommen
</x-mail::button>
<x-mail::button :url="$url_order" color="primary">
Bestellung im Cockpit ansehen
</x-mail::button> </x-mail::button>
Danke,<br> Danke,<br>

View File

@ -9,8 +9,12 @@ es gibt eine neue Bestellung:
* <a href="{{ $order->url }}">URL zum Artikel</a> * <a href="{{ $order->url }}">URL zum Artikel</a>
* Bestellt von: {{ $order->user->name }} * Bestellt von: {{ $order->user->name }}
<x-mail::button :url="$url"> <x-mail::button :url="$url_ordered" color="success">
Zur Bestellung Habe bestellt
</x-mail::button>
<x-mail::button :url="$url_order" color="primary">
Bestellung im Cockpit ansehen
</x-mail::button> </x-mail::button>
Danke,<br> Danke,<br>

View File

@ -1,4 +1,7 @@
<?php <?php
use App\Http\Controllers\OrderController;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
Route::get('/updateOrderstatusOrdered/{uuid}', [OrderController::class, 'ordered']);
Route::get('/updateOrderstatusTaken/{uuid}', [OrderController::class, 'taken']);