Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
12 / 12
100.00% covered (success)
100.00%
6 / 6
CRAP
100.00% covered (success)
100.00%
1 / 1
PromptCompanyNewUpdateController
100.00% covered (success)
100.00%
12 / 12
100.00% covered (success)
100.00%
6 / 6
6
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 index
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 show
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 store
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 update
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 destroy
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace App\Http\Controllers\v2\Admin;
4
5use App\Http\Controllers\Controller;
6use App\Http\Models\PromptCompanyNewUpdate;
7use App\Http\Requests\v2\PromptCompanyNewUpdate\DestroyPromptCompanyNewUpdateRequest;
8use App\Http\Requests\v2\PromptCompanyNewUpdate\IndexPromptCompanyNewUpdateRequest;
9use App\Http\Requests\v2\PromptCompanyNewUpdate\ShowPromptCompanyNewUpdateRequest;
10use App\Http\Requests\v2\PromptCompanyNewUpdate\StorePromptCompanyNewUpdateRequest;
11use App\Http\Requests\v2\PromptCompanyNewUpdate\UpdatePromptCompanyNewUpdateRequest;
12use App\Http\Resources\v2\PromptCompanyNewUpdateResource;
13use App\Http\Services\PromptCompanyNewUpdateService;
14use Illuminate\Http\JsonResponse;
15use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
16
17/**
18 * Controller for managing prompt company new update configurations.
19 *
20 * Only accessible by users with the VENGRESO_ADMIN role.
21 * Provides CRUD operations for the prompt_company_new_update collection,
22 * which stores "company news" post options used by post AI features.
23 */
24class PromptCompanyNewUpdateController extends Controller
25{
26    public function __construct(
27        private PromptCompanyNewUpdateService $promptCompanyNewUpdateService
28    ) {}
29
30    /**
31     * Get all prompt company new updates.
32     *
33     * @param  IndexPromptCompanyNewUpdateRequest  $request  Validated request (authorization only)
34     *
35     * @response 200 {
36     *   "result": {
37     *     "data": [
38     *       {
39     *         "id": "684c1ce8dca2c6351807ec23",
40     *         "title": "Product Launch",
41     *         "prompt": "Create a post about a product launch...",
42     *         "created_at": 1718278600,
43     *         "updated_at": 1718278600
44     *       }
45     *     ]
46     *   }
47     * }
48     */
49    public function index(IndexPromptCompanyNewUpdateRequest $request): AnonymousResourceCollection
50    {
51        $updates = $this->promptCompanyNewUpdateService->getAll();
52
53        return PromptCompanyNewUpdateResource::collection($updates);
54    }
55
56    /**
57     * Get a single prompt company new update by ID.
58     *
59     * @param  ShowPromptCompanyNewUpdateRequest  $request  Validated request (authorization only)
60     * @param  PromptCompanyNewUpdate  $promptCompanyNewUpdate  The update to retrieve (route model binding)
61     */
62    public function show(ShowPromptCompanyNewUpdateRequest $request, PromptCompanyNewUpdate $promptCompanyNewUpdate): PromptCompanyNewUpdateResource
63    {
64        return new PromptCompanyNewUpdateResource($promptCompanyNewUpdate);
65    }
66
67    /**
68     * Create a new prompt company new update.
69     *
70     * @param  StorePromptCompanyNewUpdateRequest  $request  Validated request with update data
71     */
72    public function store(StorePromptCompanyNewUpdateRequest $request): JsonResponse
73    {
74        $update = $this->promptCompanyNewUpdateService->create($request->validated());
75
76        return (new PromptCompanyNewUpdateResource($update))
77            ->response()
78            ->setStatusCode(201);
79    }
80
81    /**
82     * Update an existing prompt company new update.
83     *
84     * @param  UpdatePromptCompanyNewUpdateRequest  $request  Validated request with update data
85     * @param  PromptCompanyNewUpdate  $promptCompanyNewUpdate  The update to modify (route model binding)
86     */
87    public function update(UpdatePromptCompanyNewUpdateRequest $request, PromptCompanyNewUpdate $promptCompanyNewUpdate): PromptCompanyNewUpdateResource
88    {
89        $update = $this->promptCompanyNewUpdateService->update($promptCompanyNewUpdate, $request->validated());
90
91        return new PromptCompanyNewUpdateResource($update);
92    }
93
94    /**
95     * Delete a prompt company new update.
96     *
97     * @param  DestroyPromptCompanyNewUpdateRequest  $request  Validated request (authorization only)
98     * @param  PromptCompanyNewUpdate  $promptCompanyNewUpdate  The update to delete (route model binding)
99     *
100     * @response 204 No content
101     */
102    public function destroy(DestroyPromptCompanyNewUpdateRequest $request, PromptCompanyNewUpdate $promptCompanyNewUpdate): JsonResponse
103    {
104        $this->promptCompanyNewUpdateService->delete($promptCompanyNewUpdate);
105
106        return response()->json(null, 204);
107    }
108}