chore: initial import for test contour

This commit is contained in:
sova-bootstrap
2026-05-27 19:36:32 +03:00
commit 166cdb148e
282 changed files with 84872 additions and 0 deletions
+75
View File
@@ -0,0 +1,75 @@
<?php
namespace App\Controller;
use App\Repository\PriceListRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Pagerfanta\Doctrine\ORM\QueryAdapter;
use Pagerfanta\Pagerfanta;
use OpenApi\Attributes as OA;
#[Route('/pricelist')]
final class PriceListController extends AbstractController
{
#[OA\Tag(name: 'Услуги и цены')]
#[OA\Parameter(
name: 'page',
in: 'query',
description: 'номер станицы',
schema: new OA\Schema(type: 'integer')
)]
#[OA\Parameter(
name: 'perPage',
in: 'query',
description: 'количество записей',
schema: new OA\Schema(type: 'integer')
)]
#[OA\Parameter(
name: 'filial',
in: 'query',
description: 'id филиала',
schema: new OA\Schema(type: 'integer')
)]
#[OA\Parameter(
name: 'search',
in: 'query',
description: 'поиск по названию или коду услуги',
schema: new OA\Schema(type: 'string')
)]
#[Route('/list', name: 'pricelist_read_all', methods: ['GET'])]
public function readAll(Request $request, PriceListRepository $repository): JsonResponse
{
$page = $request->query->getInt('page', 1);
$perPage = min($request->query->getInt('perPage', 100), 500);
$qb = $repository->createFilteredQueryBuilder(
$request->query->all()
);
$adapter = new QueryAdapter($qb);
$pagerfanta = new Pagerfanta($adapter);
$pagerfanta->setMaxPerPage($perPage);
$pagerfanta->setCurrentPage($page);
$data = $pagerfanta->getCurrentPageResults();
$response = [
'data' => $data,
'pagination' => [
'total' => $pagerfanta->getNbResults(),
'count' => count($data),
'per_page' => $pagerfanta->getMaxPerPage(),
'current_page' => $pagerfanta->getCurrentPage(),
'total_pages' => $pagerfanta->getNbPages(),
'has_previous_page' => $pagerfanta->hasPreviousPage(),
'has_next_page' => $pagerfanta->hasNextPage(),
],
];
return $this->json($response, Response::HTTP_OK, [], [
'groups' => ['pricelist:read']
]);
}
}