ConfigurableOptionManager.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <?php
  2. /**
  3. * Class ConfigurableOptionManager
  4. * User: ThurData
  5. * Date: 2019-09-29
  6. * Time: 15:33
  7. * @package ThurData\Servers\KerioEmail\App\UI\Admin\ProductConfiguration\Providers
  8. */
  9. namespace ThurData\Servers\KerioEmail\App\UI\Admin\ProductConfiguration\Providers;
  10. use ThurData\Servers\KerioEmail\App\Enums\ProductParams;
  11. use ThurData\Servers\KerioEmail\App\Libs\Product\ProductManager;
  12. use ThurData\Servers\KerioEmail\App\Services\ConfigurableOptions\ConfigurableOptions;
  13. use ThurData\Servers\KerioEmail\App\Services\ConfigurableOptions\Strategy\ConfigOptionsType;
  14. use ThurData\Servers\KerioEmail\App\UI\Admin\ProductConfiguration\Helper\ConfigurableOptionsBuilder;
  15. use ThurData\Servers\KerioEmail\Core\UI\Interfaces\AdminArea;
  16. use ThurData\Servers\KerioEmail\Core\UI\ResponseTemplates\HtmlDataJsonResponse;
  17. use ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\DataProviders\BaseDataProvider;
  18. class ConfigurableOptionManager extends BaseDataProvider implements AdminArea
  19. {
  20. public function read()
  21. {
  22. $productId = $this->getRequestValue('id');
  23. $productManager = new ProductManager();
  24. $productManager
  25. ->loadById($productId);
  26. $options = new ConfigOptionsType();
  27. $options->setProductId($productId);
  28. $options->load();
  29. $configurableOption = new ConfigurableOptions($productId);
  30. ConfigurableOptionsBuilder::buildAll($configurableOption, $options->getConfigurableOptions());
  31. $this->data = [
  32. 'fields' => $configurableOption->show()
  33. ];
  34. }
  35. /**
  36. * @return HtmlDataJsonResponse|void
  37. */
  38. public function create()
  39. {
  40. $productId = $this->getRequestValue('id');
  41. try
  42. {
  43. $productManager = new ProductManager();
  44. $productManager
  45. ->loadById($productId);
  46. $options = new ConfigOptionsType();
  47. $options->setProductId($productId);
  48. $options->load();
  49. $configurableOption = new ConfigurableOptions($productId);
  50. ConfigurableOptionsBuilder::build($configurableOption, $this->formData, $options->getConfigurableOptions());
  51. $status = $configurableOption->createOrUpdate();
  52. $msg = ($status) ? 'configurableOptionsCreate' : 'configurableOptionsUpdate';
  53. return (new HtmlDataJsonResponse())
  54. ->setStatusSuccess()
  55. ->setCallBackFunction('redirectToConfigurableOptionsTab')
  56. ->setMessageAndTranslate($msg);
  57. }
  58. catch (\Exception $ex)
  59. {
  60. return (new HtmlDataJsonResponse())
  61. ->setStatusError()
  62. ->setMessage($ex->getMessage());
  63. }
  64. }
  65. public function delete()
  66. {
  67. }
  68. public function update()
  69. {
  70. }
  71. }