mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-23 18:03:17 +00:00
Missing basket persist.
This commit is contained in:
@@ -13,6 +13,7 @@ use Alchemy\Phrasea\Controller\Controller;
|
||||
use Alchemy\Phrasea\Controller\RecordsRequest;
|
||||
use Alchemy\Phrasea\Model\Entities\Basket;
|
||||
use Alchemy\Phrasea\Model\Entities\BasketElement;
|
||||
use Alchemy\Phrasea\Model\Manipulator\BasketManipulator;
|
||||
use Alchemy\Phrasea\Model\Repositories\BasketElementRepository;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
@@ -49,35 +50,36 @@ class BasketController extends Controller
|
||||
|
||||
public function createBasket(Request $request)
|
||||
{
|
||||
$Basket = new Basket();
|
||||
$basket = new Basket();
|
||||
|
||||
$Basket->setName($request->request->get('name', ''));
|
||||
$Basket->setUser($this->getAuthenticatedUser());
|
||||
$Basket->setDescription($request->request->get('desc'));
|
||||
$basket->setName($request->request->get('name', ''));
|
||||
$basket->setUser($this->getAuthenticatedUser());
|
||||
$basket->setDescription($request->request->get('desc'));
|
||||
|
||||
$records = RecordsRequest::fromRequest($this->app, $request, true);
|
||||
|
||||
$this->app['manipulator.basket']->addRecords($Basket, $records);
|
||||
$manipulator = $this->getBasketManipulator();
|
||||
$manipulator->addRecords($basket, $records);
|
||||
$manipulator->saveBasket($basket);
|
||||
|
||||
if ($request->getRequestFormat() === 'json') {
|
||||
$data = [
|
||||
'success' => true,
|
||||
'message' => $this->app->trans('Basket created'),
|
||||
'basket' => [
|
||||
'id' => $Basket->getId(),
|
||||
'id' => $basket->getId(),
|
||||
]
|
||||
];
|
||||
|
||||
return $this->app->json($data);
|
||||
}
|
||||
|
||||
return $this->app->redirectPath('prod_baskets_basket', ['basket' => $Basket->getId()]);
|
||||
return $this->app->redirectPath('prod_baskets_basket', ['basket' => $basket->getId()]);
|
||||
}
|
||||
|
||||
public function deleteBasket(Request $request, Basket $basket)
|
||||
{
|
||||
$this->getEntityManager()->remove($basket);
|
||||
$this->getEntityManager()->flush();
|
||||
$this->getBasketManipulator()->removeBasket($basket);
|
||||
|
||||
$data = [
|
||||
'success' => true
|
||||
@@ -95,7 +97,7 @@ class BasketController extends Controller
|
||||
{
|
||||
/** @var BasketElement $basketElement */
|
||||
$basketElement = $this->getEntityManager()->getRepository('Phraseanet:BasketElement')->find($basket_element_id);
|
||||
$this->app['manipulator.basket']->removeElements($basket, [$basketElement]);
|
||||
$this->getBasketManipulator()->removeElements($basket, [$basketElement]);
|
||||
|
||||
$data = ['success' => true, 'message' => $this->app->trans('Record removed from basket')];
|
||||
|
||||
@@ -205,7 +207,7 @@ class BasketController extends Controller
|
||||
{
|
||||
$records = RecordsRequest::fromRequest($this->app, $request, true);
|
||||
|
||||
$elements = $this->app['manipulator.basket']->addRecords($basket, $records);
|
||||
$elements = $this->getBasketManipulator()->addRecords($basket, $records);
|
||||
|
||||
$data = [
|
||||
'success' => true,
|
||||
@@ -234,7 +236,6 @@ class BasketController extends Controller
|
||||
}
|
||||
|
||||
$basket_element->getBasket()->removeElement($basket_element);
|
||||
$basket_element->setBasket($basket);
|
||||
$basket->addElement($basket_element);
|
||||
$n++;
|
||||
}
|
||||
@@ -262,4 +263,12 @@ class BasketController extends Controller
|
||||
{
|
||||
return $this->app['orm.em'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return BasketManipulator
|
||||
*/
|
||||
private function getBasketManipulator()
|
||||
{
|
||||
return $this->app['manipulator.basket'];
|
||||
}
|
||||
}
|
||||
|
@@ -106,4 +106,16 @@ class BasketManipulator
|
||||
|
||||
$this->manager->flush();
|
||||
}
|
||||
|
||||
public function saveBasket(Basket $basket)
|
||||
{
|
||||
$this->manager->persist($basket);
|
||||
$this->manager->flush();
|
||||
}
|
||||
|
||||
public function removeBasket(Basket $basket)
|
||||
{
|
||||
$this->manager->remove($basket);
|
||||
$this->manager->flush();
|
||||
}
|
||||
}
|
||||
|
@@ -3,8 +3,7 @@
|
||||
namespace Alchemy\Tests\Phrasea\Controller\Prod;
|
||||
|
||||
use Alchemy\Phrasea\Application;
|
||||
use Alchemy\Phrasea\Model\Entities\Basket;
|
||||
use Alchemy\Phrasea\Model\Entities\BasketElement;
|
||||
use Doctrine\ORM\EntityManager;
|
||||
|
||||
/**
|
||||
* @group functional
|
||||
@@ -56,27 +55,31 @@ class BasketTest extends \PhraseanetAuthenticatedWebTestCase
|
||||
|
||||
public function testRootPostJSON()
|
||||
{
|
||||
$query = self::$DI['app']['orm.em']->createQuery('SELECT COUNT(b.id) FROM Phraseanet:Basket b');
|
||||
$app = $this->getApplication();
|
||||
/** @var EntityManager $entityManager */
|
||||
$entityManager = $app['orm.em'];
|
||||
$query = $entityManager->createQuery('SELECT COUNT(b.id) FROM Phraseanet:Basket b');
|
||||
$count = $query->getSingleScalarResult();
|
||||
|
||||
$route = '/prod/baskets/';
|
||||
|
||||
self::$DI['client']->request(
|
||||
'POST'
|
||||
, $route
|
||||
, [
|
||||
$client = $this->getClient();
|
||||
$client->request(
|
||||
'POST',
|
||||
$route,
|
||||
[
|
||||
'name' => 'panier',
|
||||
'desc' => 'mon beau panier',
|
||||
]
|
||||
, []
|
||||
, [
|
||||
"HTTP_ACCEPT" => "application/json"
|
||||
],
|
||||
[],
|
||||
[
|
||||
"HTTP_ACCEPT" => "application/json",
|
||||
]
|
||||
);
|
||||
|
||||
$response = self::$DI['client']->getResponse();
|
||||
$response = $client->getResponse();
|
||||
|
||||
$query = self::$DI['app']['orm.em']->createQuery('SELECT COUNT(b.id) FROM Phraseanet:Basket b');
|
||||
$query = $entityManager->createQuery('SELECT COUNT(b.id) FROM Phraseanet:Basket b');
|
||||
|
||||
$this->assertEquals($count + 1, $query->getSingleScalarResult());
|
||||
$this->assertEquals(200, $response->getStatusCode());
|
||||
@@ -86,9 +89,10 @@ class BasketTest extends \PhraseanetAuthenticatedWebTestCase
|
||||
{
|
||||
$route = '/prod/baskets/create/';
|
||||
|
||||
$crawler = self::$DI['client']->request('GET', $route);
|
||||
$client = $this->getClient();
|
||||
$crawler = $client->request('GET', $route);
|
||||
|
||||
$response = self::$DI['client']->getResponse();
|
||||
$response = $client->getResponse();
|
||||
$this->assertEquals(200, $response->getStatusCode());
|
||||
|
||||
$filter = "form[action='/prod/baskets/']";
|
||||
|
Reference in New Issue
Block a user