62 lines
1.8 KiB
PHP
62 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Actions\DeleteUserAddressAction;
|
|
use App\Actions\SaveUserAddressAction;
|
|
use App\Actions\UpdateUserAddressAction;
|
|
use App\Data\AddUserAddressRequestDTO;
|
|
use App\Data\UpdateUserAddressRequestDTO;
|
|
use App\Data\UserAddressResponseDTO;
|
|
use App\Http\Requests\AddUserAddressRequest;
|
|
use App\Http\Requests\UpdateUserAddressRequest;
|
|
use App\Http\Resources\AddressResource;
|
|
use App\Models\Address;
|
|
use Illuminate\Http\Request;
|
|
|
|
class UserAddressController extends Controller
|
|
{
|
|
/**
|
|
* Display a listing of the resource.
|
|
*/
|
|
public function index(Request $request)
|
|
{
|
|
$addresses = $request->user()->addresses;
|
|
$data = $addresses->map(fn ($address) => UserAddressResponseDTO::fromModel($address));
|
|
|
|
return AddressResource::collection($data);
|
|
}
|
|
|
|
/**
|
|
* Store a newly created resource in storage.
|
|
*/
|
|
public function store(AddUserAddressRequest $request, SaveUserAddressAction $action)
|
|
{
|
|
return new AddressResource($action->execute(AddUserAddressRequestDTO::fromRequest($request), $request->user()));
|
|
}
|
|
|
|
/**
|
|
* Display the specified resource.
|
|
*/
|
|
public function show(Address $address)
|
|
{
|
|
return new AddressResource(UserAddressResponseDTO::fromModel($address));
|
|
}
|
|
|
|
/**
|
|
* Update the specified resource in storage.
|
|
*/
|
|
public function update(UpdateUserAddressRequest $request, Address $address, UpdateUserAddressAction $action)
|
|
{
|
|
return new AddressResource($action->execute(UpdateUserAddressRequestDTO::fromRequest($request), $address));
|
|
}
|
|
|
|
/**
|
|
* Remove the specified resource from storage.
|
|
*/
|
|
public function destroy(Address $address, DeleteUserAddressAction $action)
|
|
{
|
|
return $action->execute($address);
|
|
}
|
|
}
|