/
mistercode
/
calculate-price
Обзор
Документация
Войти
/
mistercode
/
calculate-price
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/Controller/PriceController.php
46 строк
1 KB
codefinecode
Fixtures, DTO, Services, Validators, Strategies, Controllers and Routes
07 фев 2025, 16:46
07 фев 2025, 16:46
4b208d2
Код
Авторство
О чём код?
<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Validator\Validator\ValidatorInterface; use App\Dto\CalculatePriceInput; use App\Service\PriceCalculatorService; class PriceController extends AbstractController { #[Route('/calculate-price', methods: ['POST'])] public function calculatePrice( Request $request, ValidatorInterface $validator, PriceCalculatorService $calculator ): JsonResponse { $data = json_decode($request->getContent(), true); $input = new CalculatePriceInput( $data['product'] ?? null, $data['taxNumber'] ?? null, $data['couponCode'] ?? null ); $violations = $validator->validate($input); if (count($violations) > 0) { return new JsonResponse(['errors' => (string)$violations], JsonResponse::HTTP_UNPROCESSABLE_ENTITY); } try { $result = $calculator->calculate( $input->getProduct(), $input->getTaxNumber(), $input->getCouponCode() ); return new JsonResponse($result); } catch (\Exception $e) { return new JsonResponse(['error' => $e->getMessage()], JsonResponse::HTTP_BAD_REQUEST); } } }