You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

79 lines
3.3KB

  1. <?php
  2. namespace Lc\CaracoleBundle\Controller\Product;
  3. use Doctrine\ORM\QueryBuilder;
  4. use EasyCorp\Bundle\EasyAdminBundle\Collection\FieldCollection;
  5. use EasyCorp\Bundle\EasyAdminBundle\Collection\FilterCollection;
  6. use EasyCorp\Bundle\EasyAdminBundle\Config\KeyValueStore;
  7. use EasyCorp\Bundle\EasyAdminBundle\Context\AdminContext;
  8. use EasyCorp\Bundle\EasyAdminBundle\Dto\EntityDto;
  9. use EasyCorp\Bundle\EasyAdminBundle\Dto\SearchDto;
  10. use EasyCorp\Bundle\EasyAdminBundle\Field\AssociationField;
  11. use EasyCorp\Bundle\EasyAdminBundle\Field\FormField;
  12. use EasyCorp\Bundle\EasyAdminBundle\Field\NumberField;
  13. use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
  14. use Lc\CaracoleBundle\Container\Order\OrderShopContainer;
  15. use Lc\CaracoleBundle\Container\Product\ProductFamilyContainer;
  16. use Lc\CaracoleBundle\Controller\AdminControllerTrait;
  17. use Lc\CaracoleBundle\Doctrine\Extension\FilterSectionInterface;
  18. use Lc\CaracoleBundle\Field\Address\AddressField;
  19. use Lc\CaracoleBundle\Resolver\SectionResolver;
  20. use Lc\SovBundle\Controller\AbstractAdminController;
  21. use Lc\SovBundle\Field\BooleanField;
  22. use Lc\SovBundle\Field\CKEditorField;
  23. use Lc\SovBundle\Field\StatusField;
  24. use Lc\SovBundle\Repository\RepositoryQueryInterface;
  25. use Symfony\Component\HttpFoundation\RequestStack;
  26. use Symfony\Component\HttpFoundation\Response;
  27. abstract class ProductFamilyAdminController extends AbstractAdminController
  28. {
  29. use AdminControllerTrait;
  30. public function getRepositoryQuery() :RepositoryQueryInterface
  31. {
  32. return $this->get(ProductFamilyContainer::class)->getRepositoryQuery();
  33. }
  34. // public function createIndexQueryBuilder(SearchDto $searchDto, EntityDto $entityDto, FieldCollection $fields, FilterCollection $filters): QueryBuilder
  35. // {
  36. // $queryBuilder = parent::createIndexQueryBuilder($searchDto, $entityDto, $fields, $filters);
  37. //
  38. // $queryBuilder->leftJoin('entity.productFamilySectionProperties', 'pfsp');
  39. // $queryBuilder->andWhereSection('pfsp', $this->getSectionCurrent());
  40. // $queryBuilder->addOrderBy('entity.id');
  41. // return $queryBuilder;
  42. // }
  43. public function configureResponseParameters(KeyValueStore $responseParameters): KeyValueStore
  44. {
  45. $responseParameters = parent::configureResponseParameters($responseParameters);
  46. // affichage du filtre sur section
  47. $responseParameters->set('display_switch_section', true);
  48. return $responseParameters;
  49. }
  50. public function showSalesStatistic(AdminContext $context)
  51. {
  52. $productFamily = $context->getEntity()->getInstance();
  53. $currentSection = $this->get(SectionResolver::class)->getCurrent();
  54. $productsSalesStatistic = $this->get(OrderShopContainer::class)->getBuilder()->getProductsSalesStatistic($currentSection, $productFamily, 16);
  55. $parameters = array(
  56. 'productFamily' => $productFamily,
  57. 'productsSalesStatistic' => $productsSalesStatistic
  58. );
  59. //TODO flashMessages ???
  60. $response['flashMessages'] = [];//$this->utils->getFlashMessages();
  61. $response['data'] = $this->render('@LcCaracole/admin/product/modal/show_products_sales_statistic.html.twig', $parameters)->getContent();
  62. $response['statistics'] = $productsSalesStatistic;
  63. return new Response(json_encode($response));
  64. }
  65. }