Some checks failed
Tests / PHP 8.1 (push) Has been cancelled
Tests / PHP 8.2 (push) Has been cancelled
Tests / PHP 8.3 (push) Has been cancelled
55 lines
1.4 KiB
PHP
55 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace Modules\EcommerceFinance\Http\Controllers\Api;
|
|
|
|
use App\Abstracts\Http\ApiController;
|
|
use Modules\EcommerceFinance\Http\Requests\Store as Request;
|
|
use Modules\EcommerceFinance\Models\Store;
|
|
|
|
class Stores extends ApiController
|
|
{
|
|
public function index()
|
|
{
|
|
$stores = Store::with('channel', 'settlementAccount')
|
|
->orderBy('name')
|
|
->paginate($this->limit());
|
|
|
|
return response()->json($stores);
|
|
}
|
|
|
|
public function show(Store $store)
|
|
{
|
|
return response()->json($store->load('channel', 'settlementAccount'));
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
$store = Store::create($this->attributes($request));
|
|
|
|
return response()
|
|
->json($store, 201)
|
|
->header('Location', route('api.ecommerce-finance.stores.show', $store));
|
|
}
|
|
|
|
public function update(Store $store, Request $request)
|
|
{
|
|
$store->update($request->validated());
|
|
|
|
return response()->json($store->fresh()->load('channel', 'settlementAccount'));
|
|
}
|
|
|
|
private function attributes(Request $request): array
|
|
{
|
|
return array_merge($request->validated(), [
|
|
'company_id' => company_id(),
|
|
'created_by' => user_id(),
|
|
'created_from' => 'ecommerce-finance',
|
|
]);
|
|
}
|
|
|
|
private function limit(): int
|
|
{
|
|
return min(max((int) request('limit', 25), 1), 100);
|
|
}
|
|
}
|