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.

46 line
1.5KB

  1. <?php
  2. namespace domain\Producer\Producer;
  3. use common\components\PageSizer;
  4. use domain\_\AbstractManager;
  5. class ProducerPageSizer extends AbstractManager
  6. {
  7. protected ProducerSolver $producerSolver;
  8. protected ProducerBuilder $producerBuilder;
  9. protected PageSizer $pageSizer;
  10. public function loadDependencies(): void
  11. {
  12. $this->pageSizer = \Yii::$app->pageSizer;
  13. $this->producerSolver = $this->loadService(ProducerSolver::class);
  14. $this->producerBuilder = $this->loadService(ProducerBuilder::class);
  15. }
  16. public function getPageSizeConfigName(string $entity)
  17. {
  18. return 'option_pagesize_'.$entity;
  19. }
  20. public function getPageSize(Producer $producer, string $entity)
  21. {
  22. $pageSizeConfig = $this->getPageSizeConfigName($entity);
  23. return $this->producerSolver->getConfig($pageSizeConfig, $producer) ?: PageSizer::DEFAULT_PAGE_SIZE ;
  24. }
  25. public function getPageSizeSummary(Producer $producer, string $entity, string $labelEntity): string
  26. {
  27. return $this->pageSizer->getForm($entity, $labelEntity, $this->getPageSize($producer, $entity));
  28. }
  29. public function updatePagesize(Producer $producer, string $entity, int $pageSize)
  30. {
  31. $field = $this->getPageSizeConfigName($entity);
  32. if($producer->hasAttribute($field) && $this->pageSizer->isPageSizeExist($pageSize)) {
  33. $producer->$field = $pageSize;
  34. $this->producerBuilder->update($producer);
  35. }
  36. }
  37. }