ConfigurableOptions.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. namespace ModulesGarden\Servers\KerioEmail\App\UI\Admin\ProductConfiguration\Pages\Sections;
  3. use ModulesGarden\Servers\KerioEmail\App\Enums\ProductParams;
  4. use ModulesGarden\Servers\KerioEmail\App\Libs\Product\ProductManager;
  5. use ModulesGarden\Servers\KerioEmail\App\Services\ConfigurableOptions\Strategy\ConfigOptionsType;
  6. use ModulesGarden\Servers\KerioEmail\App\UI\Admin\Custom\Sections\BoxSectionExtended;
  7. use ModulesGarden\Servers\KerioEmail\App\UI\Admin\ProductConfiguration\Buttons\CreateConfigurableOptionsBaseModalButton;
  8. use ModulesGarden\Servers\KerioEmail\App\UI\Admin\ProductConfiguration\Helper\ConfigurableOptionsBuilder;
  9. use ModulesGarden\Servers\KerioEmail\App\Traits\KerioApiHandler;
  10. use ModulesGarden\Servers\KerioEmail\App\UI\Admin\ProductConfiguration\Providers\ConfigurableOptionManager;
  11. use ModulesGarden\Servers\KerioEmail\Core\UI\Interfaces\AdminArea;
  12. use ModulesGarden\Servers\KerioEmail\Core\UI\Widget\Forms\Sections\BoxSection;
  13. /**
  14. *
  15. * Created by PhpStorm.
  16. * User: Tomasz Bielecki ( tomasz.bi@modulesgarden.com )
  17. * Date: 29.08.19
  18. * Time: 08:32
  19. * Class ConfigurableOptionsSection
  20. */
  21. class ConfigurableOptions extends BoxSectionExtended implements AdminArea
  22. {
  23. protected $id = 'configurableOptions';
  24. protected $name = 'configurableOptions';
  25. protected $title = 'configurableOptions';
  26. use KerioApiHandler;
  27. public function initContent()
  28. {
  29. $this->addButton(new CreateConfigurableOptionsBaseModalButton());
  30. }
  31. /**
  32. * @return array
  33. * @throws \Exception
  34. */
  35. public function getOptions()
  36. {
  37. /**
  38. * product id
  39. */
  40. $productId = $this->getRequestValue('id');
  41. /**
  42. * product manager
  43. */
  44. $productManager = new ProductManager();
  45. $productManager
  46. ->loadById($productId);
  47. /**
  48. * config options strategy
  49. */
  50. $options = new ConfigOptionsType();
  51. $options->setType($productManager->get(ProductParams::CLASS_OF_SERVICE_NAME));
  52. $options->setProductId($productId);
  53. $options->load();
  54. ;
  55. /**
  56. * config option model
  57. */
  58. $configurableOptions = new \ModulesGarden\Servers\KerioEmail\App\Services\ConfigurableOptions\ConfigurableOptions($productId);
  59. /**
  60. * build co to show
  61. */
  62. ConfigurableOptionsBuilder::buildAll($configurableOptions, $options->getConfigurableOptions());
  63. /**
  64. *
  65. */
  66. $fields = $configurableOptions->show();
  67. /**
  68. *
  69. * add additional elements,
  70. * resolve none full line issue (#156)
  71. */
  72. $limit = count($fields) % 3;
  73. if($limit > 0)
  74. {
  75. while($limit < 3)
  76. {
  77. $fields['emptyFields'.$limit] = '-1';
  78. $limit++;
  79. }
  80. }
  81. return $fields;
  82. }
  83. }