<?php
namespace App\Controller;
use App\Entity\Provider;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/provider")
* Class ProviderController
* @package App\Controller
*/
class ProviderController extends AbstractController
{
/**
* @Route("/list", name="provider_list")
* @param Request $request
* @return \Symfony\Component\HttpFoundation\Response
*/
public function providerList(Request $request, ManagerRegistry $managerRegistry) {
return $this->render('provider/list.html.twig', [
'providers' => $managerRegistry->getRepository(Provider::class)->findAll()
]);
}
/**
* @Route("/edit/submit", name="provider_edit_submit")
*/
public function providerEditSubmit(Request $request, ManagerRegistry $managerRegistry) {
$id = $request->get('id');
$name = $request->get('name');
$categorySeparator = $request->get('category_separator');
$globalChargeType = $request->get('global_charge_type', 'rub');
$globalChargeValue = $request->get('global_charge_value', 0);
$cellsParameters = $request->get('cells');
$stockStringReplacements = $request->get('stock_string', []);
$stockStringReplacementsFiltered = [];
foreach ($stockStringReplacements as $item) {
if (!empty(trim($item['original'])) && !empty(trim($item['replacement']))) {
$stockStringReplacementsFiltered[] = $item;
}
}
if ($id === 'new') {
$provider = new Provider();
$managerRegistry->getManager()->persist($provider);
} else {
$provider = $managerRegistry->getRepository(Provider::class)->find($id);
}
$provider->setName(trim($name));
$provider->setGlobalChargeType($globalChargeType);
$provider->setGlobalChargeValue((int)$globalChargeValue);
$provider->setPricelistParameters($cellsParameters);
$provider->setStockStringReplacements($stockStringReplacementsFiltered);
if (!empty(trim($categorySeparator))) {
$provider->setCategorySeparator($categorySeparator);
} else {
$provider->setCategorySeparator(null);
}
$managerRegistry->getManager()->flush();
return $this->redirectToRoute('provider_edit', ['id' => $provider->getId()]);
}
/**
* @Route("/edit/{id}", name="provider_edit")
*/
public function providerEdit(Request $request, ManagerRegistry $managerRegistry, string $id) {
if ($id === 'new') {
$provider = new Provider();
} else {
$provider = $managerRegistry->getRepository(Provider::class)->find($id);
}
if ($provider instanceof Provider) {
return $this->render('provider/edit.html.twig', [
'provider' => $provider,
'id' => $id
]);
}
throw new NotFoundHttpException("Provider with ID $id not found");
}
}