1 <?php
2
3 4 5 6 7 8 9 10 11
12
13 14 15 16 17 18 19 20 21
22 class CategoryServiceFactory extends AbstractCategoryServiceFactory
23 {
24 25 26 27 28
29 protected $db;
30
31 32 33 34 35
36 protected $settings;
37
38
39 40 41 42 43 44
45 public function __construct(CI_DB_query_builder $db, CategoryServiceSettingsInterface $settings)
46 {
47 $this->db = $db;
48 $this->settings = $settings;
49 }
50
51
52 53 54 55 56
57 public function createCategoryObjectService()
58 {
59 return MainFactory::create('CategoryObjectService', MainFactory::create('CategoryFactory'));
60 }
61
62
63 64 65 66 67
68 public function createCategoryReadService()
69 {
70
71 $addonValueService = MainFactory::create('AddonValueService',
72 MainFactory::create('AddonValueStorageFactory',
73 $this->db));
74 $customerStatusProvider = MainFactory::create('CustomerStatusProvider', $this->db);
75 $categoryRepositoryReader = MainFactory::create('CategoryRepositoryReader', $this->db,
76 MainFactory::create('CategoryFactory'));
77 $categoryRepositoryWriter = MainFactory::create('CategoryRepositoryWriter', $this->db,
78 MainFactory::create('YetAnotherLanguageProvider', $this->db));
79 $categoryRepositoryDeleter = MainFactory::create('CategoryRepositoryDeleter', $this->db);
80 $categorySettingsRepositoryReader = MainFactory::create('CategorySettingsRepositoryReader', $this->db,
81 MainFactory::create('CategoryFactory'),
82 $customerStatusProvider);
83 $categorySettingsRepositoryWriter = MainFactory::create('CategorySettingsRepositoryWriter', $this->db,
84 $customerStatusProvider);
85 $categorySettingsRepository = MainFactory::create('CategorySettingsRepository',
86 $categorySettingsRepositoryReader,
87 $categorySettingsRepositoryWriter);
88 $categoryRepository = MainFactory::create('CategoryRepository', $categoryRepositoryReader,
89 $categoryRepositoryWriter, $categoryRepositoryDeleter,
90 $categorySettingsRepository, $addonValueService,
91 $customerStatusProvider);
92
93
94 $categoryListProviderFactory = MainFactory::create('CategoryListProviderFactory', $categoryRepository,
95 $this->db);
96
97
98 return MainFactory::create('CategoryReadService', $categoryRepository, $categoryListProviderFactory);
99 }
100
101
102 103 104 105 106
107 public function createCategoryWriteService()
108 {
109
110 $addonValueService = MainFactory::create('AddonValueService',
111 MainFactory::create('AddonValueStorageFactory',
112 $this->db));
113 $customerStatusProvider = MainFactory::create('CustomerStatusProvider', $this->db);
114 $categoryRepositoryReader = MainFactory::create('CategoryRepositoryReader', $this->db,
115 MainFactory::create('CategoryFactory'));
116 $categoryRepositoryWriter = MainFactory::create('CategoryRepositoryWriter', $this->db,
117 MainFactory::create('YetAnotherLanguageProvider', $this->db));
118 $categoryRepositoryDeleter = MainFactory::create('CategoryRepositoryDeleter', $this->db);
119 $categorySettingsRepositoryReader = MainFactory::create('CategorySettingsRepositoryReader', $this->db,
120 MainFactory::create('CategoryFactory'),
121 $customerStatusProvider);
122 $categorySettingsRepositoryWriter = MainFactory::create('CategorySettingsRepositoryWriter', $this->db,
123 $customerStatusProvider);
124 $categorySettingsRepository = MainFactory::create('CategorySettingsRepository',
125 $categorySettingsRepositoryReader,
126 $categorySettingsRepositoryWriter);
127 $categoryRepository = MainFactory::create('CategoryRepository', $categoryRepositoryReader,
128 $categoryRepositoryWriter, $categoryRepositoryDeleter,
129 $categorySettingsRepository, $addonValueService,
130 $customerStatusProvider);
131
132
133 $imageDirPath = $this->settings->getImagesDirPath() . 'categories';
134 $iconDirPath = $imageDirPath . DIRECTORY_SEPARATOR . 'icons';
135
136 $categoryImageStorage = MainFactory::create('ImageFileStorage',
137 MainFactory::create('WritableDirectory', $imageDirPath));
138 $categoryIconStorage = MainFactory::create('ImageFileStorage',
139 MainFactory::create('WritableDirectory', $iconDirPath));
140
141 $productPermissionSetter = MainFactory::create('ProductPermissionSetter', $this->db);
142
143 return MainFactory::create('CategoryWriteService', $categoryRepository, $categoryImageStorage,
144 $categoryIconStorage, $productPermissionSetter);
145 }
146 }