Skip to content

Commit a1db809

Browse files
committed
Update Impostazioni to use controller system
1 parent 331b077 commit a1db809

7 files changed

Lines changed: 80 additions & 80 deletions
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
namespace Modules\Impostazioni\API\Controllers;
4+
5+
use API\Controllers\BaseController;
6+
use Illuminate\Http\JsonResponse;
7+
use Illuminate\Http\Request;
8+
use Models\Setting;
9+
use Modules\Impostazioni\API\ImpostazioneResource;
10+
11+
final class GetImpostazioneController extends BaseController
12+
{
13+
public function __invoke(Request $request): JsonResponse
14+
{
15+
$setting = Setting::find($request->route('id'));
16+
if (!$setting) {
17+
return null;
18+
}
19+
20+
$response = ImpostazioneResource::fromModel($setting);
21+
22+
return new JsonResponse($response);
23+
}
24+
}

modules/impostazioni/src/API/Controllers/GetImpostazioneProvider.php

Lines changed: 0 additions & 23 deletions
This file was deleted.

modules/impostazioni/src/API/Controllers/ListImpostazioniProvider.php renamed to modules/impostazioni/src/API/Controllers/ListImpostazioniController.php

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,25 @@
22

33
namespace Modules\Impostazioni\API\Controllers;
44

5-
use ApiPlatform\Metadata\Operation;
6-
use ApiPlatform\State\ParameterNotFound;
7-
use ApiPlatform\State\ProviderInterface;
5+
use API\Controllers\BaseController;
6+
use Illuminate\Http\JsonResponse;
7+
use Illuminate\Http\Request;
88
use Models\Setting;
99
use Modules\Impostazioni\API\ImpostazioneResource;
1010

11-
final class ListImpostazioniProvider implements ProviderInterface
11+
final class ListImpostazioniController extends BaseController
1212
{
13-
public function provide(Operation $operation, array $uriVariables = [], array $context = []): ?array
13+
public function __invoke(Request $request): JsonResponse
1414
{
15-
$sezione = $operation->getParameters()->get('sezione')->getValue();
16-
$search = $operation->getParameters()->get('ricerca')->getValue();
15+
$sezione = $request->query('sezione');
16+
$search = $request->query('ricerca');
1717

1818
// Trova le impostazioni che corrispondono alla ricerca
19-
if (!$search instanceof ParameterNotFound) {
19+
if (!empty($search)) {
2020
$impostazioni = Setting::where('nome', 'like', '%'.$search.'%')
2121
->orWhere('sezione', 'like', '%'.$search.'%')
2222
->get();
23-
} elseif (!$sezione instanceof ParameterNotFound) {
23+
} elseif (!empty($sezione)) {
2424
$impostazioni = Setting::where('sezione', $sezione)->get();
2525
} else {
2626
$impostazioni = Setting::all();
@@ -31,6 +31,6 @@ public function provide(Operation $operation, array $uriVariables = [], array $c
3131
$results[] = ImpostazioneResource::fromModel($impostazione);
3232
}
3333

34-
return $results;
34+
return new JsonResponse($results);
3535
}
3636
}

modules/impostazioni/src/API/Controllers/ListSezioniImpostazioniProvider.php renamed to modules/impostazioni/src/API/Controllers/ListSezioniImpostazioniController.php

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@
22

33
namespace Modules\Impostazioni\API\Controllers;
44

5-
use ApiPlatform\Metadata\Operation;
6-
use ApiPlatform\State\ProviderInterface;
5+
use API\Controllers\BaseController;
6+
use Illuminate\Http\JsonResponse;
7+
use Illuminate\Http\Request;
78
use Models\Setting;
89
use Modules\Impostazioni\API\Models\ListSezioniImpostazioniResponse;
910

10-
final class ListSezioniImpostazioniProvider implements ProviderInterface
11+
final class ListSezioniImpostazioniController extends BaseController
1112
{
12-
public function provide(Operation $operation, array $uriVariables = [], array $context = []): ?ListSezioniImpostazioniResponse
13+
public function __invoke(Request $request): JsonResponse
1314
{
1415
$gruppi = Setting::selectRaw('sezione AS nome, COUNT(id) AS numero')
1516
->groupBy(['sezione'])
@@ -23,6 +24,6 @@ public function provide(Operation $operation, array $uriVariables = [], array $c
2324
$response->sezioni[$gruppo->nome] = $gruppo->numero;
2425
}
2526

26-
return $response;
27+
return new JsonResponse($response);
2728
}
2829
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?php
2+
3+
namespace Modules\Impostazioni\API\Controllers;
4+
5+
use API\Controllers\BaseController;
6+
use Illuminate\Http\JsonResponse;
7+
use Illuminate\Http\Request;
8+
use Models\Setting;
9+
use Modules\Impostazioni\API\Models\UpdateImpostazioneRequest;
10+
use Modules\Impostazioni\API\Models\UpdateImpostazioneResponse;
11+
12+
final class UpdateImpostazioneController extends BaseController
13+
{
14+
public function __invoke(Request $request): JsonResponse
15+
{
16+
$data = $this->_cast($request, UpdateImpostazioneRequest::class);
17+
18+
$id = $request->route('id');
19+
$response = new UpdateImpostazioneResponse();
20+
21+
$impostazione = Setting::find($id);
22+
if (!$impostazione->editable) {
23+
$response->edited = true;
24+
25+
return new JsonResponse($response);
26+
}
27+
28+
$response->edited = \Settings::setValue($impostazione->id, $data->valore);
29+
30+
return new JsonResponse($response);
31+
}
32+
}

modules/impostazioni/src/API/Controllers/UpdateImpostazioneProcessor.php

Lines changed: 0 additions & 33 deletions
This file was deleted.

modules/impostazioni/src/API/ImpostazioneResource.php

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88
use ApiPlatform\Metadata\Put;
99
use ApiPlatform\Metadata\QueryParameter;
1010
use Models\Setting;
11-
use Modules\Impostazioni\API\Controllers\GetImpostazioneProvider;
12-
use Modules\Impostazioni\API\Controllers\ListImpostazioniProvider;
13-
use Modules\Impostazioni\API\Controllers\ListSezioniImpostazioniProvider;
14-
use Modules\Impostazioni\API\Controllers\UpdateImpostazioneProcessor;
11+
use Modules\Impostazioni\API\Controllers\GetImpostazioneController;
12+
use Modules\Impostazioni\API\Controllers\ListImpostazioniController;
13+
use Modules\Impostazioni\API\Controllers\ListSezioniImpostazioniController;
14+
use Modules\Impostazioni\API\Controllers\UpdateImpostazioneController;
1515
use Modules\Impostazioni\API\Models\ListSezioniImpostazioniResponse;
1616
use Modules\Impostazioni\API\Models\UpdateImpostazioneRequest;
1717
use Modules\Impostazioni\API\Models\UpdateImpostazioneResponse;
@@ -21,12 +21,12 @@
2121
operations: [
2222
new Get(
2323
uriTemplate: '/impostazioni/sezioni',
24-
provider: ListSezioniImpostazioniProvider::class,
24+
controller: ListSezioniImpostazioniController::class,
2525
output: ListSezioniImpostazioniResponse::class,
2626
),
2727
new GetCollection(
2828
uriTemplate: '/impostazioni',
29-
provider: ListImpostazioniProvider::class,
29+
controller: ListImpostazioniController::class,
3030
paginationEnabled: false,
3131
parameters: [
3232
'ricerca' => new QueryParameter(property: 'hydra:freetextQuery', required: false),
@@ -35,12 +35,11 @@
3535
),
3636
new Get(
3737
uriTemplate: '/impostazione/{id}',
38-
provider: GetImpostazioneProvider::class,
38+
controller: GetImpostazioneController::class,
3939
),
4040
new Put(
4141
uriTemplate: '/impostazione/{id}',
42-
provider: GetImpostazioneProvider::class,
43-
processor: UpdateImpostazioneProcessor::class,
42+
controller: UpdateImpostazioneController::class,
4443
input: UpdateImpostazioneRequest::class,
4544
output: UpdateImpostazioneResponse::class,
4645
),

0 commit comments

Comments
 (0)