PHRAS-1107 Fix order pagination in repository

This commit is contained in:
Thibaud Fabre
2016-05-19 19:00:06 +02:00
parent 0e3ed6ed94
commit 3381d18b22
4 changed files with 26 additions and 13 deletions

View File

@@ -61,6 +61,7 @@ class OrderSubscriber extends AbstractNotificationSubscriber
]);
$notifier = $this->notifierRegistry->getNotifier($event->getOrder()->getNotificationMethod());
$notifier->notifyCreation($event->getOrder(), $event->getOrder()->getUser());
$notifier = $this->notifierRegistry->getNotifier(Order::NOTIFY_MAIL);
@@ -87,10 +88,10 @@ class OrderSubscriber extends AbstractNotificationSubscriber
$notified = false;
$notifier = $this->notifierRegistry->getNotifier($event->getOrder()->getNotificationMethod());
$notificationData = json_encode([
'from' => $event->getAdmin()->getId(),
'from' => $event->getDelivery()->getAdmin()->getId(),
'to' => $event->getOrder()->getUser()->getId(),
'ssel_id' => $event->getOrder()->getBasket()->getId(),
'n' => $event->getQuantity(),
'n' => $event->getDelivery()->getQuantity()
]);
if ($this->shouldSendNotificationFor($event->getOrder()->getUser(), 'eventsmanager_notify_orderdeliver')) {
@@ -111,9 +112,9 @@ class OrderSubscriber extends AbstractNotificationSubscriber
$notified = false;
$notifier = $this->notifierRegistry->getNotifier($event->getOrder()->getNotificationMethod());
$notificationData = json_encode([
'from' => $event->getAdmin()->getId(),
'from' => $event->getDelivery()->getAdmin()->getId(),
'to' => $event->getOrder()->getUser()->getId(),
'n' => $event->getQuantity(),
'n' => $event->getDelivery()->getQuantity()
]);

View File

@@ -41,11 +41,13 @@ class OrderRepository extends EntityRepository
public function listOrders($baseIds, $offsetStart = 0, $perPage = 20, $sort = "created_on")
{
$qb = $this
->createQueryBuilder('o')
->innerJoin('o.elements', 'e');
->createQueryBuilder('o');
if (!empty($baseIds)) {
$qb->where($qb->expr()->in('e.baseId', $baseIds));
$qb
->innerJoin('o.elements', 'e')
->where($qb->expr()->in('e.baseId', $baseIds))
->groupBy('o.id');
}
if ($sort === 'user') {

View File

@@ -110,7 +110,7 @@ class ProdOrderController extends BaseOrderController
$baseIds = array_keys($this->getAclForUser()->get_granted_base(['order_master']));
$ordersList = $this->getOrderRepository()->listOrders($baseIds, $offsetStart, $perPage, $sort);
$ordersList = $this->getOrderRepository()->listOrders($baseIds, $offsetStart * $perPage, $perPage, $sort);
$total = $this->getOrderRepository()->countTotalOrders($baseIds);
return $this->render('prod/orders/order_box.html.twig', [

View File

@@ -19,6 +19,7 @@ use Alchemy\Phrasea\TaskManager\Editor\DefaultEditor;
use Alchemy\Phrasea\Webhook\EventProcessorFactory;
use Guzzle\Http\Client as GuzzleClient;
use Guzzle\Batch\BatchBuilder;
use Guzzle\Http\Message\Request;
use Silex\Application;
use Guzzle\Common\Event;
use Guzzle\Plugin\Backoff\BackoffPlugin;
@@ -98,26 +99,35 @@ class WebhookJob extends AbstractJob
}, -254);
// Set callback which logs success or failure
$subscriber = new CallbackBackoffStrategy(function ($retries, $request, $response, $e) use ($app, $that) {
$subscriber = new CallbackBackoffStrategy(function ($retries, Request $request, $response, $e) use ($app, $that) {
$retry = true;
if ($response && (null !== $deliverId = parse_url($request->getUrl(), PHP_URL_FRAGMENT))) {
$delivery = $app['repo.webhook-delivery']->find($deliverId);
$logContext = [ 'host' => $request->getHost() ];
if ($response->isSuccessful()) {
$app['manipulator.webhook-delivery']->deliverySuccess($delivery);
$that->log('info', sprintf('Deliver success event "%d:%s" for app "%s"',
$logType = 'info';
$logEntry = sprintf('Deliver success event "%d:%s" for app "%s"',
$delivery->getWebhookEvent()->getId(), $delivery->getWebhookEvent()->getName(),
$delivery->getThirdPartyApplication()->getName()));
$delivery->getThirdPartyApplication()->getName()
);
$retry = false;
} else {
$app['manipulator.webhook-delivery']->deliveryFailure($delivery);
$that->log('error', sprintf('Deliver failure event "%d:%s" for app "%s"',
$logType = 'error';
$logEntry = sprintf('Deliver failure event "%d:%s" for app "%s"',
$delivery->getWebhookEvent()->getId(), $delivery->getWebhookEvent()->getName(),
$delivery->getThirdPartyApplication()->getName()));
$delivery->getThirdPartyApplication()->getName()
);
}
$that->log($logType, $logEntry, $logContext);
return $retry;
}
}, true, new CurlBackoffStrategy());