Make customer addresses editable.

This commit is contained in:
2025-01-10 16:24:01 +01:00
parent 39f4acc1fc
commit 2b3c93a8b6
13 changed files with 213 additions and 15 deletions

View File

@@ -0,0 +1,18 @@
<?php
namespace App\Http\Controllers;
use App\Models\Address;
use Illuminate\Contracts\View\View;
class AddressController extends Controller
{
/**
* Show the form for editing the specified resource.
*/
public function edit(int $address_id): View
{
$address = Address::find($address_id);
return view('address.edit', ['address' => $address]);
}
}

View File

@@ -43,6 +43,7 @@ class AddressController extends Controller
}
$address = $customer->addresses()->create($addressData);
return response()->json($address);
}
@@ -54,6 +55,29 @@ class AddressController extends Controller
return response()->json($address);
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, Address $address): JsonResponse
{
$customer = $address->customer;
$addressData = $request->validate([
'is_address' => 'boolean',
'is_delivery' => 'boolean',
]);
if (isset($addressData['is_address']) && $addressData['is_address'] == 1) {
$customer->addresses()->where('is_address', true)->update(['is_address' => false]);
}
if (isset($addressData['is_delivery']) && $addressData['is_delivery'] == 1) {
$customer->addresses()->where('is_delivery', true)->update(['is_delivery' => false]);
}
$address->update($addressData);
return response()->json($address);
}
/**
* Remove the specified resource from storage.
*/

View File

@@ -3,6 +3,7 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\SoftDeletes;
class Address extends Model
@@ -26,4 +27,12 @@ class Address extends Model
'country',
'zip',
];
/**
* Return the customer having the address.
*/
public function customer(): BelongsTo
{
return $this->belongsTo(Customer::class);
}
}