Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
peripherad
/
back
/
app
/
Http
/
Controllers
/
Api
/
V1
:
ProjectGroupController.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php declare(strict_types=1); namespace App\Http\Controllers\Api\V1; use App\Attributes\OpenApiResponse; use App\Domain\Article\Enums\ArticleTypeEnum; use App\Domain\Project\Requests\CreateProjectGroupRequest; use App\Domain\Project\Services\projectGroupService; use App\Http\Controllers\Api\ApiController; use App\Http\Resources\CashFlowCreditResource; use App\Http\Resources\CashFlowDebitResource; use App\Http\Resources\ShowProjectGroupResource; use App\Models\ProjectGroup; use App\Responses\ResponseDto; use App\Services\CashFlow\ActiveTabProjectService; use App\Services\CashFlowService; use Illuminate\Support\Facades\Log; use Knuckles\Scribe\Attributes\Group; use Illuminate\Http\Request; /** * Контроллер для управления группами. */ class ProjectGroupController extends ApiController { protected ProjectGroupService $projectGroupService; public function __construct(projectGroupService $articleService, protected CashFlowService $cashFlowService, protected ActiveTabProjectService $tabProjectService) { $this->projectGroupService = $articleService; } /** * Получить список групп проектов. */ #[Group('projects')] #[OpenApiResponse(ProjectGroup::class)] public function index(int $modelID): ResponseDto { return new ResponseDto( data: $this->projectGroupService->getAll($modelID), status: true ); } /** * Получить группу по ID. */ #[Group('projects')] #[OpenApiResponse(ProjectGroup::class)] public function show(int $modelID, int $id, Request $request): ResponseDto { $group = $this->projectGroupService->findById($id); $sort = $request->get('sort'); $direction = $request->get('sort_direction', 'ASC'); if ($sort) { //TODO сделать сортировку в $group } return new ResponseDto( data: new ShowProjectGroupResource($this->projectGroupService->findById($id)), status: true ); } /** * Создать новую группу. * * @queryParam name string * @queryParam description string * @queryParam projects array[] */ #[Group('projects')] #[OpenApiResponse(ProjectGroup::class)] public function store(int $modelID, CreateProjectGroupRequest $request): ResponseDto { return new ResponseDto( data: $this->projectGroupService->create($modelID, $request), status: true ); } /** * Обновить существующую группу. */ #[Group('projects')] #[OpenApiResponse(ProjectGroup::class)] public function update(int $modelID, int $id, Request $request) { $data = $request->all(); return new ResponseDto( status: (bool)$this->projectGroupService->update($id, $data) ); } /** * Удалить группу. */ #[Group('projects')] #[OpenApiResponse(ResponseDto::class)] public function destroy(int $modelID, int $id): ResponseDto { return new ResponseDto( status: (bool)$this->projectGroupService->delete($id) ); } public function getGroupedByArticle($modelId, $groupId, Request $request) { $paymentsMadeInput = $request->input('payments_made'); $filters = [ 'date_from' => $request->input('date_from'), 'date_to' => $request->input('date_to'), 'payments_made' => $paymentsMadeInput ?? null, ]; return $this->projectGroupService->getGroupedByArticleForProjetsGroup($modelId, $groupId, $filters); } }