Добавил обработку редактировпания категорий

parent 5c2c1be5
...@@ -37,6 +37,7 @@ use Psr\Http\Message\ServerRequestInterface; ...@@ -37,6 +37,7 @@ use Psr\Http\Message\ServerRequestInterface;
use Zend\Diactoros\Response\HtmlResponse; use Zend\Diactoros\Response\HtmlResponse;
use Zend\Diactoros\Response\JsonResponse; use Zend\Diactoros\Response\JsonResponse;
use Zend\Diactoros\Response\RedirectResponse; use Zend\Diactoros\Response\RedirectResponse;
use Zend\Hydrator\DelegatingHydrator;
/** /**
...@@ -67,6 +68,9 @@ class Cabinet extends Common ...@@ -67,6 +68,9 @@ class Cabinet extends Common
case self::ACTION_STAT: case self::ACTION_STAT:
$response = $this->getStatData($request); $response = $this->getStatData($request);
break; break;
case self::ACTION_CATS:
$response = $this->editCatsData($request);
break;
default: default:
} }
} catch(\Exception $e) { } catch(\Exception $e) {
...@@ -364,4 +368,54 @@ class Cabinet extends Common ...@@ -364,4 +368,54 @@ class Cabinet extends Common
return new JsonResponse($data); return new JsonResponse($data);
} }
private function editCatsData(ServerRequestInterface $request)
{
$data = $request->getParsedBody();
$cats = json_decode($data['cats'], true);
$cats_id = array_keys($cats);
/** @var \App\Model\Feeds\CategoryFees $categoryFeesModel */
$categoryFeesModel = $this->container->get(\App\Model\Feeds\CategoryFees::class);
/** @var DelegatingHydrator $hydrator */
$hydrator = $this->container->get(DelegatingHydrator::class);
foreach ($cats_id as $cat) {
$category_fee = $categoryFeesModel->findOne(['CatID' => $cat]);
if ($category_fee) {
if ($cats[$cat]['p']) {
$category_fee->setOrderpercent($cats[$cat]['p']);
$result = $categoryFeesModel->saveRetargCatFee($category_fee, 'update');
} else {
$result = $categoryFeesModel->deleteRetargCatFee($category_fee);
}
if(!$result) {
throw new \Exception('DB error');
}
} else {
$cat_item = $cats[$cat];
$data = array(
'feedid' => $cat_item['fi'],
'catid' => $cat_item['id'],
'foreigncatid' => $cat_item['fc'],
'orderpercent' => $cat_item['p']
);
$categoryFee = $hydrator->hydrate($data, new CategoryFee());
$result = $categoryFeesModel->saveRetargCatFee($categoryFee, 'insert');
if(!$result) {
throw new \Exception('DB error');
}
}
}
$response = new JsonResponse([
'result' => true,
'redirect' => $this->router->generateUri('user.cabinet.cats', [
'lang' => $request->getAttribute('layoutInfo')->getLang(),
])
]);
return $response;
}
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment