Browse Source

Intégration des RepositoryQuery dans EasyAdmin

packProduct
Fabien Normand 3 years ago
parent
commit
241880137b
25 changed files with 155 additions and 30 deletions
  1. +8
    -12
      Controller/AdminControllerTrait.php
  2. +6
    -0
      Controller/Config/TaxRateAdminController.php
  3. +5
    -0
      Controller/Config/UnitAdminController.php
  4. +6
    -0
      Controller/Credit/CreditHistoryAdminController.php
  5. +6
    -0
      Controller/Merchant/MerchantAdminController.php
  6. +1
    -0
      Controller/Newsletter/NewsletterAdminController.php
  7. +7
    -0
      Controller/Order/OrderShopAdminController.php
  8. +19
    -0
      Controller/Order/OrderStatusAdminController.php
  9. +6
    -0
      Controller/PointSale/PointSaleAdminController.php
  10. +7
    -0
      Controller/Product/ProductCategoryAdminController.php
  11. +15
    -7
      Controller/Product/ProductFamilyAdminController.php
  12. +6
    -0
      Controller/Reduction/ReductionCartAdminController.php
  13. +6
    -0
      Controller/Reduction/ReductionCatalogAdminController.php
  14. +8
    -0
      Controller/Reduction/ReductionCreditAdminController.php
  15. +6
    -0
      Controller/Section/OpeningAdminController.php
  16. +7
    -0
      Controller/Section/SectionAdminController.php
  17. +0
    -2
      Controller/Site/NewsAdminController.php
  18. +2
    -0
      Controller/Site/PageAdminController.php
  19. +3
    -1
      Controller/Ticket/TicketAdminController.php
  20. +5
    -0
      Controller/User/UserMerchantAdminController.php
  21. +3
    -4
      Field/Filter/ProductCategoriesFilter.php
  22. +1
    -1
      Model/Product/ProductFamilyModel.php
  23. +1
    -0
      Repository/Order/OrderProductRepositoryQuery.php
  24. +2
    -2
      Repository/Product/ProductFamilyRepositoryQuery.php
  25. +19
    -1
      Repository/Product/ProductRepositoryQuery.php

+ 8
- 12
Controller/AdminControllerTrait.php View File

use EasyCorp\Bundle\EasyAdminBundle\Dto\EntityDto; use EasyCorp\Bundle\EasyAdminBundle\Dto\EntityDto;
use EasyCorp\Bundle\EasyAdminBundle\Dto\SearchDto; use EasyCorp\Bundle\EasyAdminBundle\Dto\SearchDto;
use Lc\SovBundle\Component\EntityComponent; use Lc\SovBundle\Component\EntityComponent;
use Lc\SovBundle\Repository\RepositoryQueryInterface;
use Lc\SovBundle\Solver\Setting\SettingSolver; use Lc\SovBundle\Solver\Setting\SettingSolver;
use Lc\SovBundle\Translation\TranslatorAdmin; use Lc\SovBundle\Translation\TranslatorAdmin;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
return $responseParameters; return $responseParameters;
} }


public function createIndexQueryBuilder(
public function createIndexRepositoryQuery(
SearchDto $searchDto, SearchDto $searchDto,
EntityDto $entityDto, EntityDto $entityDto,
FieldCollection $fields, FieldCollection $fields,
FilterCollection $filters FilterCollection $filters
): QueryBuilder {
$queryBuilder = parent::createIndexQueryBuilder(
): RepositoryQueryInterface {
$repositoryQuery = parent::createIndexRepositoryQuery(
$searchDto, $searchDto,
$entityDto, $entityDto,
$fields, $fields,
$filters $filters
); );


if ($this->isInstanceOf(FilterMerchantInterface::class)) {
$queryBuilder->andWhereMerchant('entity', $this->get(MerchantResolver::class)->getCurrent());
}

if ($this->isInstanceOf(FilterMultipleMerchantsInterface::class)) {
$queryBuilder->andWhere(':merchant MEMBER OF entity.merchants');
$queryBuilder->setParameter('merchant', $this->get(MerchantResolver::class)->getCurrent());
if ($this->isInstanceOf(FilterMerchantInterface::class) || $this->isInstanceOf(FilterMultipleMerchantsInterface::class)) {
$repositoryQuery->filterByMerchant($this->get(MerchantResolver::class)->getCurrent());
} }


if ($this->isInstanceOf(FilterSectionInterface::class)) { if ($this->isInstanceOf(FilterSectionInterface::class)) {
$queryBuilder->andWhereSection('entity', $this->get(SectionResolver::class)->getCurrent());
$repositoryQuery->filterBySection($this->get(SectionResolver::class)->getCurrent());
} }


return $queryBuilder;
return $repositoryQuery;
} }





+ 6
- 0
Controller/Config/TaxRateAdminController.php View File

use Lc\CaracoleBundle\Controller\AdminControllerTrait; use Lc\CaracoleBundle\Controller\AdminControllerTrait;
use Lc\CaracoleBundle\Factory\Config\TaxRateFactory; use Lc\CaracoleBundle\Factory\Config\TaxRateFactory;
use Lc\SovBundle\Controller\AbstractAdminController; use Lc\SovBundle\Controller\AbstractAdminController;
use Lc\SovBundle\Repository\RepositoryQueryInterface;


abstract class TaxRateAdminController extends AbstractAdminController abstract class TaxRateAdminController extends AbstractAdminController
{ {
use AdminControllerTrait; use AdminControllerTrait;


public function getRepositoryQuery() :RepositoryQueryInterface
{
return $this->get(TaxRateContainer::class)->getRepositoryQuery();
}

public function configureFields(string $pageName): iterable public function configureFields(string $pageName): iterable
{ {
return [ return [

+ 5
- 0
Controller/Config/UnitAdminController.php View File

use Lc\CaracoleBundle\Controller\AdminControllerTrait; use Lc\CaracoleBundle\Controller\AdminControllerTrait;
use Lc\CaracoleBundle\Factory\Config\UnitFactory; use Lc\CaracoleBundle\Factory\Config\UnitFactory;
use Lc\SovBundle\Controller\AbstractAdminController; use Lc\SovBundle\Controller\AbstractAdminController;
use Lc\SovBundle\Repository\RepositoryQueryInterface;


abstract class UnitAdminController extends AbstractAdminController abstract class UnitAdminController extends AbstractAdminController
{ {
use AdminControllerTrait; use AdminControllerTrait;
public function getRepositoryQuery() :RepositoryQueryInterface
{
return $this->get(UnitContainer::class)->getRepositoryQuery();
}


public function configureFields(string $pageName): iterable public function configureFields(string $pageName): iterable
{ {

+ 6
- 0
Controller/Credit/CreditHistoryAdminController.php View File

use Lc\CaracoleBundle\Model\Order\OrderPaymentModel; use Lc\CaracoleBundle\Model\Order\OrderPaymentModel;
use Lc\CaracoleBundle\Model\User\UserMerchantInterface; use Lc\CaracoleBundle\Model\User\UserMerchantInterface;
use Lc\SovBundle\Controller\AbstractAdminController; use Lc\SovBundle\Controller\AbstractAdminController;
use Lc\SovBundle\Repository\RepositoryQueryInterface;
use Lc\SovBundle\Translation\TranslatorAdmin; use Lc\SovBundle\Translation\TranslatorAdmin;


abstract class CreditHistoryAdminController extends AbstractAdminController abstract class CreditHistoryAdminController extends AbstractAdminController
{ {
use AdminControllerTrait; use AdminControllerTrait;


public function getRepositoryQuery() :RepositoryQueryInterface
{
return $this->get(CreditHistoryContainer::class)->getRepositoryQuery();
}

public function overrideGlobalActions(?ActionCollection $actions): void public function overrideGlobalActions(?ActionCollection $actions): void
{ {
parent::overrideGlobalActions($actions); parent::overrideGlobalActions($actions);

+ 6
- 0
Controller/Merchant/MerchantAdminController.php View File

use Lc\SovBundle\Controller\AbstractAdminController; use Lc\SovBundle\Controller\AbstractAdminController;
use Lc\SovBundle\Field\CKEditorField; use Lc\SovBundle\Field\CKEditorField;
use Lc\SovBundle\Field\StatusField; use Lc\SovBundle\Field\StatusField;
use Lc\SovBundle\Repository\RepositoryQueryInterface;


abstract class MerchantAdminController extends AbstractAdminController abstract class MerchantAdminController extends AbstractAdminController
{ {
use AdminControllerTrait; use AdminControllerTrait;


public function getRepositoryQuery() :RepositoryQueryInterface
{
return $this->get(MerchantContainer::class)->getRepositoryQuery();
}

public function configureFields(string $pageName): iterable public function configureFields(string $pageName): iterable
{ {
$panel = parent::configureFields($pageName); $panel = parent::configureFields($pageName);

+ 1
- 0
Controller/Newsletter/NewsletterAdminController.php View File

use Lc\CaracoleBundle\Resolver\SectionResolver; use Lc\CaracoleBundle\Resolver\SectionResolver;
use Lc\SovBundle\Container\Newsletter\NewsletterContainer; use Lc\SovBundle\Container\Newsletter\NewsletterContainer;
use Lc\SovBundle\Controller\Newsletter\NewsletterAdminController as SovNewsletterAdminController; use Lc\SovBundle\Controller\Newsletter\NewsletterAdminController as SovNewsletterAdminController;
use Lc\SovBundle\Repository\RepositoryQueryInterface;


abstract class NewsletterAdminController extends SovNewsletterAdminController abstract class NewsletterAdminController extends SovNewsletterAdminController
{ {

+ 7
- 0
Controller/Order/OrderShopAdminController.php View File

use EasyCorp\Bundle\EasyAdminBundle\Field\ChoiceField; use EasyCorp\Bundle\EasyAdminBundle\Field\ChoiceField;
use EasyCorp\Bundle\EasyAdminBundle\Field\NumberField; use EasyCorp\Bundle\EasyAdminBundle\Field\NumberField;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextField; use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
use Lc\CaracoleBundle\Container\Order\OrderShopContainer;
use Lc\CaracoleBundle\Controller\AdminControllerTrait; use Lc\CaracoleBundle\Controller\AdminControllerTrait;
use Lc\CaracoleBundle\Model\Config\TaxRateModel; use Lc\CaracoleBundle\Model\Config\TaxRateModel;
use Lc\CaracoleBundle\Model\Config\UnitModel; use Lc\CaracoleBundle\Model\Config\UnitModel;
use Lc\SovBundle\Controller\AbstractAdminController; use Lc\SovBundle\Controller\AbstractAdminController;
use Lc\SovBundle\Repository\RepositoryQueryInterface;
use Lc\SovBundle\Translation\TranslatorAdmin; use Lc\SovBundle\Translation\TranslatorAdmin;


abstract class OrderShopAdminController extends AbstractAdminController abstract class OrderShopAdminController extends AbstractAdminController
{ {
use AdminControllerTrait; use AdminControllerTrait;

public function getRepositoryQuery() :RepositoryQueryInterface
{
return $this->get(OrderShopContainer::class)->getRepositoryQuery();
}
} }

+ 19
- 0
Controller/Order/OrderStatusAdminController.php View File

<?php

namespace Lc\CaracoleBundle\Controller\Order;


use Lc\CaracoleBundle\Container\Order\OrderStatusContainer;
use Lc\CaracoleBundle\Controller\AbstractAdminController;
use Lc\CaracoleBundle\Controller\AdminControllerTrait;
use Lc\SovBundle\Repository\RepositoryQueryInterface;

abstract class OrderStatusAdminController extends AbstractAdminController
{
use AdminControllerTrait;

public function getRepositoryQuery() :RepositoryQueryInterface
{
return $this->get(OrderStatusContainer::class)->getRepositoryQuery();
}
}

+ 6
- 0
Controller/PointSale/PointSaleAdminController.php View File

use Lc\CaracoleBundle\Container\PointSale\PointSaleContainer; use Lc\CaracoleBundle\Container\PointSale\PointSaleContainer;
use Lc\CaracoleBundle\Controller\AdminControllerTrait; use Lc\CaracoleBundle\Controller\AdminControllerTrait;
use Lc\SovBundle\Controller\AbstractAdminController; use Lc\SovBundle\Controller\AbstractAdminController;
use Lc\SovBundle\Repository\RepositoryQueryInterface;


abstract class PointSaleAdminController extends AbstractAdminController abstract class PointSaleAdminController extends AbstractAdminController
{ {
use AdminControllerTrait; use AdminControllerTrait;


public function getRepositoryQuery() :RepositoryQueryInterface
{
return $this->get(PointSaleContainer::class)->getRepositoryQuery();
}

public function configureFields(string $pageName): iterable public function configureFields(string $pageName): iterable
{ {
return $this->getPointSaleContainer() return $this->getPointSaleContainer()

+ 7
- 0
Controller/Product/ProductCategoryAdminController.php View File

use EasyCorp\Bundle\EasyAdminBundle\Field\NumberField; use EasyCorp\Bundle\EasyAdminBundle\Field\NumberField;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextField; use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
use EasyCorp\Bundle\EasyAdminBundle\Field\DateTimeField; use EasyCorp\Bundle\EasyAdminBundle\Field\DateTimeField;
use Lc\CaracoleBundle\Container\Product\ProductCategoryContainer;
use Lc\CaracoleBundle\Controller\AdminControllerTrait; use Lc\CaracoleBundle\Controller\AdminControllerTrait;
use Lc\SovBundle\Controller\AbstractAdminController; use Lc\SovBundle\Controller\AbstractAdminController;
use Lc\SovBundle\Field\CKEditorField; use Lc\SovBundle\Field\CKEditorField;
use Lc\SovBundle\Field\StatusField; use Lc\SovBundle\Field\StatusField;
use Lc\SovBundle\Field\ToggleField; use Lc\SovBundle\Field\ToggleField;
use Lc\SovBundle\Repository\RepositoryQueryInterface;


abstract class ProductCategoryAdminController extends AbstractAdminController abstract class ProductCategoryAdminController extends AbstractAdminController
{ {
use AdminControllerTrait; use AdminControllerTrait;


public function getRepositoryQuery() :RepositoryQueryInterface
{
return $this->get(ProductCategoryContainer::class)->getRepositoryQuery();
}

public function configureFields(string $pageName): iterable public function configureFields(string $pageName): iterable
{ {
return array_merge( return array_merge(

+ 15
- 7
Controller/Product/ProductFamilyAdminController.php View File

use EasyCorp\Bundle\EasyAdminBundle\Field\NumberField; use EasyCorp\Bundle\EasyAdminBundle\Field\NumberField;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextField; use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
use Lc\CaracoleBundle\Container\Order\OrderShopContainer; use Lc\CaracoleBundle\Container\Order\OrderShopContainer;
use Lc\CaracoleBundle\Container\Product\ProductFamilyContainer;
use Lc\CaracoleBundle\Controller\AdminControllerTrait; use Lc\CaracoleBundle\Controller\AdminControllerTrait;
use Lc\CaracoleBundle\Doctrine\Extension\FilterSectionInterface; use Lc\CaracoleBundle\Doctrine\Extension\FilterSectionInterface;
use Lc\CaracoleBundle\Field\Address\AddressField; use Lc\CaracoleBundle\Field\Address\AddressField;
use Lc\SovBundle\Field\BooleanField; use Lc\SovBundle\Field\BooleanField;
use Lc\SovBundle\Field\CKEditorField; use Lc\SovBundle\Field\CKEditorField;
use Lc\SovBundle\Field\StatusField; use Lc\SovBundle\Field\StatusField;
use Lc\SovBundle\Repository\RepositoryQueryInterface;
use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;


{ {
use AdminControllerTrait; use AdminControllerTrait;


public function createIndexQueryBuilder(SearchDto $searchDto, EntityDto $entityDto, FieldCollection $fields, FilterCollection $filters): QueryBuilder
{
$queryBuilder = parent::createIndexQueryBuilder($searchDto, $entityDto, $fields, $filters);


$queryBuilder->leftJoin('entity.productFamilySectionProperties', 'pfsp');
$queryBuilder->andWhereSection('pfsp', $this->getSectionCurrent());
$queryBuilder->addOrderBy('entity.id');
return $queryBuilder;
public function getRepositoryQuery() :RepositoryQueryInterface
{
return $this->get(ProductFamilyContainer::class)->getRepositoryQuery();
} }


// public function createIndexQueryBuilder(SearchDto $searchDto, EntityDto $entityDto, FieldCollection $fields, FilterCollection $filters): QueryBuilder
// {
// $queryBuilder = parent::createIndexQueryBuilder($searchDto, $entityDto, $fields, $filters);
//
// $queryBuilder->leftJoin('entity.productFamilySectionProperties', 'pfsp');
// $queryBuilder->andWhereSection('pfsp', $this->getSectionCurrent());
// $queryBuilder->addOrderBy('entity.id');
// return $queryBuilder;
// }

public function configureResponseParameters(KeyValueStore $responseParameters): KeyValueStore public function configureResponseParameters(KeyValueStore $responseParameters): KeyValueStore
{ {
$responseParameters = parent::configureResponseParameters($responseParameters); $responseParameters = parent::configureResponseParameters($responseParameters);

+ 6
- 0
Controller/Reduction/ReductionCartAdminController.php View File

use EasyCorp\Bundle\EasyAdminBundle\Field\ChoiceField; use EasyCorp\Bundle\EasyAdminBundle\Field\ChoiceField;
use EasyCorp\Bundle\EasyAdminBundle\Field\NumberField; use EasyCorp\Bundle\EasyAdminBundle\Field\NumberField;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextField; use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
use Lc\CaracoleBundle\Container\Reduction\ReductionCartContainer;
use Lc\CaracoleBundle\Controller\AdminControllerTrait; use Lc\CaracoleBundle\Controller\AdminControllerTrait;
use Lc\CaracoleBundle\Model\Config\TaxRateModel; use Lc\CaracoleBundle\Model\Config\TaxRateModel;
use Lc\CaracoleBundle\Model\Config\UnitModel; use Lc\CaracoleBundle\Model\Config\UnitModel;
use Lc\SovBundle\Controller\AbstractAdminController; use Lc\SovBundle\Controller\AbstractAdminController;
use Lc\SovBundle\Repository\RepositoryQueryInterface;
use Lc\SovBundle\Translation\TranslatorAdmin; use Lc\SovBundle\Translation\TranslatorAdmin;


abstract class ReductionCartAdminController extends AbstractAdminController abstract class ReductionCartAdminController extends AbstractAdminController
use AdminControllerTrait; use AdminControllerTrait;




public function getRepositoryQuery() :RepositoryQueryInterface
{
return $this->get(ReductionCartContainer::class)->getRepositoryQuery();
}


} }

+ 6
- 0
Controller/Reduction/ReductionCatalogAdminController.php View File

use EasyCorp\Bundle\EasyAdminBundle\Field\ChoiceField; use EasyCorp\Bundle\EasyAdminBundle\Field\ChoiceField;
use EasyCorp\Bundle\EasyAdminBundle\Field\NumberField; use EasyCorp\Bundle\EasyAdminBundle\Field\NumberField;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextField; use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
use Lc\CaracoleBundle\Container\Reduction\ReductionCatalogContainer;
use Lc\CaracoleBundle\Controller\AdminControllerTrait; use Lc\CaracoleBundle\Controller\AdminControllerTrait;
use Lc\CaracoleBundle\Model\Config\TaxRateModel; use Lc\CaracoleBundle\Model\Config\TaxRateModel;
use Lc\CaracoleBundle\Model\Config\UnitModel; use Lc\CaracoleBundle\Model\Config\UnitModel;
use Lc\SovBundle\Controller\AbstractAdminController; use Lc\SovBundle\Controller\AbstractAdminController;
use Lc\SovBundle\Repository\RepositoryQueryInterface;
use Lc\SovBundle\Translation\TranslatorAdmin; use Lc\SovBundle\Translation\TranslatorAdmin;


abstract class ReductionCatalogAdminController extends AbstractAdminController abstract class ReductionCatalogAdminController extends AbstractAdminController
use AdminControllerTrait; use AdminControllerTrait;




public function getRepositoryQuery() :RepositoryQueryInterface
{
return $this->get(ReductionCatalogContainer::class)->getRepositoryQuery();
}


} }

+ 8
- 0
Controller/Reduction/ReductionCreditAdminController.php View File

use EasyCorp\Bundle\EasyAdminBundle\Field\ChoiceField; use EasyCorp\Bundle\EasyAdminBundle\Field\ChoiceField;
use EasyCorp\Bundle\EasyAdminBundle\Field\NumberField; use EasyCorp\Bundle\EasyAdminBundle\Field\NumberField;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextField; use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
use Lc\CaracoleBundle\Container\Reduction\ReductionCreditContainer;
use Lc\CaracoleBundle\Controller\AdminControllerTrait; use Lc\CaracoleBundle\Controller\AdminControllerTrait;
use Lc\CaracoleBundle\Model\Config\TaxRateModel; use Lc\CaracoleBundle\Model\Config\TaxRateModel;
use Lc\CaracoleBundle\Model\Config\UnitModel; use Lc\CaracoleBundle\Model\Config\UnitModel;
use Lc\SovBundle\Controller\AbstractAdminController; use Lc\SovBundle\Controller\AbstractAdminController;
use Lc\SovBundle\Repository\RepositoryQueryInterface;
use Lc\SovBundle\Translation\TranslatorAdmin; use Lc\SovBundle\Translation\TranslatorAdmin;


abstract class ReductionCreditAdminController extends AbstractAdminController abstract class ReductionCreditAdminController extends AbstractAdminController
{ {
use AdminControllerTrait; use AdminControllerTrait;


public function getRepositoryQuery() :RepositoryQueryInterface
{
return $this->get(ReductionCreditContainer::class)->getRepositoryQuery();
}
} }

+ 6
- 0
Controller/Section/OpeningAdminController.php View File

use Lc\CaracoleBundle\Factory\Section\OpeningFactory; use Lc\CaracoleBundle\Factory\Section\OpeningFactory;
use Lc\CaracoleBundle\Resolver\SectionResolver; use Lc\CaracoleBundle\Resolver\SectionResolver;
use Lc\SovBundle\Controller\AbstractAdminController; use Lc\SovBundle\Controller\AbstractAdminController;
use Lc\SovBundle\Repository\RepositoryQueryInterface;


abstract class OpeningAdminController extends AbstractAdminController abstract class OpeningAdminController extends AbstractAdminController
{ {
use AdminControllerTrait; use AdminControllerTrait;


public function getRepositoryQuery() :RepositoryQueryInterface
{
return $this->get(OpeningContainer::class)->getRepositoryQuery();
}

public function configureFields(string $pageName): iterable public function configureFields(string $pageName): iterable
{ {
$fields = parent::configureFields($pageName); $fields = parent::configureFields($pageName);

+ 7
- 0
Controller/Section/SectionAdminController.php View File

use Lc\SovBundle\Field\BooleanField; use Lc\SovBundle\Field\BooleanField;
use Lc\SovBundle\Field\CKEditorField; use Lc\SovBundle\Field\CKEditorField;
use Lc\SovBundle\Field\StatusField; use Lc\SovBundle\Field\StatusField;
use Lc\SovBundle\Repository\RepositoryQueryInterface;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Session\SessionFactory; use Symfony\Component\HttpFoundation\Session\SessionFactory;
use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Routing\Annotation\Route;
{ {
use AdminControllerTrait; use AdminControllerTrait;



public function getRepositoryQuery() :RepositoryQueryInterface
{
return $this->get(SectionContainer::class)->getRepositoryQuery();
}

public function configureFields(string $pageName): iterable public function configureFields(string $pageName): iterable
{ {
return array_merge( return array_merge(

+ 0
- 2
Controller/Site/NewsAdminController.php View File

namespace Lc\CaracoleBundle\Controller\Site; namespace Lc\CaracoleBundle\Controller\Site;


use Lc\CaracoleBundle\Controller\AdminControllerTrait; use Lc\CaracoleBundle\Controller\AdminControllerTrait;
use Lc\CaracoleBundle\Factory\Site\NewsFactory;
use Lc\CaracoleBundle\Resolver\MerchantResolver;
use Lc\CaracoleBundle\Resolver\SectionResolver; use Lc\CaracoleBundle\Resolver\SectionResolver;
use Lc\SovBundle\Container\Site\NewsContainer; use Lc\SovBundle\Container\Site\NewsContainer;
use Lc\SovBundle\Controller\Site\NewsAdminController as SovNewsAdminController; use Lc\SovBundle\Controller\Site\NewsAdminController as SovNewsAdminController;

+ 2
- 0
Controller/Site/PageAdminController.php View File

use Lc\CaracoleBundle\Resolver\SectionResolver; use Lc\CaracoleBundle\Resolver\SectionResolver;
use Lc\SovBundle\Container\Site\PageContainer; use Lc\SovBundle\Container\Site\PageContainer;
use Lc\SovBundle\Controller\Site\PageAdminController as SovPageAdminController; use Lc\SovBundle\Controller\Site\PageAdminController as SovPageAdminController;
use Lc\SovBundle\Repository\RepositoryQueryInterface;


abstract class PageAdminController extends SovPageAdminController abstract class PageAdminController extends SovPageAdminController
{ {
use AdminControllerTrait; use AdminControllerTrait;



public function createEntity(string $entityFqcn) public function createEntity(string $entityFqcn)
{ {
return $this->getPageContainer() return $this->getPageContainer()

+ 3
- 1
Controller/Ticket/TicketAdminController.php View File



namespace Lc\CaracoleBundle\Controller\Ticket; namespace Lc\CaracoleBundle\Controller\Ticket;


use App\Entity\Ticket\Ticket;
use Lc\CaracoleBundle\Controller\AdminControllerTrait; use Lc\CaracoleBundle\Controller\AdminControllerTrait;
use Lc\CaracoleBundle\Resolver\MerchantResolver; use Lc\CaracoleBundle\Resolver\MerchantResolver;
use Lc\SovBundle\Container\Ticket\TicketContainer; use Lc\SovBundle\Container\Ticket\TicketContainer;
use Lc\SovBundle\Controller\Ticket\TicketAdminController as SovTicketAdminController; use Lc\SovBundle\Controller\Ticket\TicketAdminController as SovTicketAdminController;
use Lc\CaracoleBundle\Factory\Ticket\TicketFactory; use Lc\CaracoleBundle\Factory\Ticket\TicketFactory;
use Lc\SovBundle\Repository\RepositoryQueryInterface;


class TicketAdminController extends SovTicketAdminController
abstract class TicketAdminController extends SovTicketAdminController
{ {
use AdminControllerTrait; use AdminControllerTrait;



+ 5
- 0
Controller/User/UserMerchantAdminController.php View File

use Lc\SovBundle\Field\BooleanField; use Lc\SovBundle\Field\BooleanField;
use Lc\SovBundle\Field\ToggleField; use Lc\SovBundle\Field\ToggleField;
use Lc\SovBundle\Model\User\UserInterface; use Lc\SovBundle\Model\User\UserInterface;
use Lc\SovBundle\Repository\RepositoryQueryInterface;
use Lc\SovBundle\Translation\TranslatorAdmin; use Lc\SovBundle\Translation\TranslatorAdmin;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;


use AdminControllerTrait; use AdminControllerTrait;




public function getRepositoryQuery() :RepositoryQueryInterface
{
return $this->get(UserMerchantContainer::class)->getRepositoryQuery();
}
public function overrideEntitiesActions(?EntityCollection $entities): void public function overrideEntitiesActions(?EntityCollection $entities): void
{ {
$context = $this->get(AdminContextProvider::class)->getContext(); $context = $this->get(AdminContextProvider::class)->getContext();

+ 3
- 4
Field/Filter/ProductCategoriesFilter.php View File

use EasyCorp\Bundle\EasyAdminBundle\Dto\FieldDto; use EasyCorp\Bundle\EasyAdminBundle\Dto\FieldDto;
use Lc\SovBundle\Field\Filter\AssociationFilter; use Lc\SovBundle\Field\Filter\AssociationFilter;
use Lc\SovBundle\Field\Filter\FilterTrait; use Lc\SovBundle\Field\Filter\FilterTrait;
use Lc\SovBundle\Repository\RepositoryQueryInterface;
use Symfony\Bridge\Doctrine\Form\Type\EntityType; use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormBuilderInterface;


} }




public function applyFilter(QueryBuilder $queryBuilder, string $fieldProperty, $filteredValue = null)
public function applyFilter(RepositoryQueryInterface $repositoryQuery, string $fieldProperty, $filteredValue = null)
{ {
if ($filteredValue !== null) { if ($filteredValue !== null) {
$queryBuilder->leftJoin('entity.productCategories', 'product_categories');
$queryBuilder->andWhere(':' . $fieldProperty . ' MEMBER OF entity.' . $fieldProperty . ' OR product_categories.parent = :' . $fieldProperty);
$queryBuilder->setParameter($fieldProperty, $filteredValue);
$repositoryQuery->filterByProductCategory($filteredValue);


} }
} }

+ 1
- 1
Model/Product/ProductFamilyModel.php View File

/** /**
* @ORM\MappedSuperclass() * @ORM\MappedSuperclass()
*/ */
abstract class ProductFamilyModel extends AbstractFullEntity implements ProductPropertyInterface, PriceInterface, ProductFamilyInterface
abstract class ProductFamilyModel extends AbstractFullEntity implements ProductPropertyInterface, PriceInterface, ProductFamilyInterface, FilterSectionInterface
{ {
use ProductPropertyTrait; use ProductPropertyTrait;



+ 1
- 0
Repository/Order/OrderProductRepositoryQuery.php View File

{ {
parent::__construct($repository, 'r', $paginator); parent::__construct($repository, 'r', $paginator);
} }

public function filterByOrderShop(OrderShopInterface $orderShop): self public function filterByOrderShop(OrderShopInterface $orderShop): self
{ {
return $this return $this

+ 2
- 2
Repository/Product/ProductFamilyRepositoryQuery.php View File

return $this; return $this;
} }


public function filterBySection(SectionInterface $section)
public function filterBySection(SectionInterface $section,bool $addSelectProductFamilySectionProperties = true)
{ {
$this->joinProductFamilySectionProperties();
$this->joinProductFamilySectionProperties($addSelectProductFamilySectionProperties);
$this->andWhereSection('pfsp', $section); $this->andWhereSection('pfsp', $section);
$this->andWhere('pfsp.status = 1'); $this->andWhere('pfsp.status = 1');
} }

+ 19
- 1
Repository/Product/ProductRepositoryQuery.php View File

class ProductRepositoryQuery extends AbstractRepositoryQuery class ProductRepositoryQuery extends AbstractRepositoryQuery
{ {
protected bool $isJoinProductFamily =false; protected bool $isJoinProductFamily =false;
protected bool $isJoinProductFamilySectionProperties =false;


public function __construct(ProductRepository $repository, PaginatorInterface $paginator) public function __construct(ProductRepository $repository, PaginatorInterface $paginator)
{ {
} }


public function filterBySection(SectionInterface $section):self public function filterBySection(SectionInterface $section):self
{
$this->joinProductFamilySectionProperties(false);
$this->andWhereSection('pfsp', $section);
$this->andWhere('pfsp.status = 1');

return $this;
}
public function joinProductFamilySectionProperties(bool $addSelect = true): self
{ {
$this->joinProductFamily(); $this->joinProductFamily();
$this->andWhereSection('pf', $section);

if (!$this->isJoinProductFamilySectionProperties) {
$this->isJoinProductFamilySectionProperties = true;

$this->leftJoin('pf.productFamilySectionProperties', 'pfsp');
if ($addSelect) {
$this->addSelect('pfsp');
}
}
return $this; return $this;
} }



public function filterIsOnline():self public function filterIsOnline():self
{ {
$this->joinProductFamily(); $this->joinProductFamily();

Loading…
Cancel
Save