PluginProbe
ووسلام – همگام سازی ووکامرس و باسلام / 1.10.18
ووسلام – همگام سازی ووکامرس و باسلام v1.10.18
1.10.18 1.10.17 1.10.15 1.10.14 1.10.13 1.10.12 1.10.10 1.10.9 1.10.8 1.10.7 1.10.6 1.10.5 1.10.4 1.10.3 1.10.2 1.10.1 1.10.0 1.9.2 1.9.1 1.9.0 1.8.8 1.8.5 1.8.6 1.8.7 1.8.4 All 51 releases
sync-basalam / includes / Infrastructure / Container / AppServiceProvider.php

AppServiceProvider.php in ووسلام – همگام سازی ووکامرس و باسلام 1.10.18, at includes/Infrastructure/Container/AppServiceProvider.php

176 lines 6.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace SyncBasalam\Infrastructure\Container;
4
5 use SyncBasalam\Admin\Product\ProductOperations;
6 use SyncBasalam\Admin\Settings\SettingsContainer;
7 use SyncBasalam\JobManager;
8 use SyncBasalam\Jobs\DiscountTaskScheduler;
9 use SyncBasalam\Jobs\JobExecutor;
10 use SyncBasalam\Jobs\JobRegistry;
11 use SyncBasalam\Jobs\LockManager;
12 use SyncBasalam\Jobs\Types\AutoConnectProductsJob;
13 use SyncBasalam\Jobs\Types\BulkUpdateProductsJob;
14 use SyncBasalam\Jobs\Types\CreateAllProductsJob;
15 use SyncBasalam\Jobs\Types\CreateSingleProductJob;
16 use SyncBasalam\Jobs\Types\FetchOrdersJob;
17 use SyncBasalam\Jobs\Types\UpdateAllProductsJob;
18 use SyncBasalam\Jobs\Types\UpdateSingleProductJob;
19 use SyncBasalam\JobsRunner;
20 use SyncBasalam\Services\CheckHttpBlockService;
21 use SyncBasalam\Plugin;
22 use SyncBasalam\Services\ApiServiceManager;
23 use SyncBasalam\Services\Products\AutoConnectProducts;
24 use SyncBasalam\Services\Products\Discount\DiscountTaskProcessor;
25 use SyncBasalam\Services\Orders\FetchOrdersService;
26 use SyncBasalam\Services\Orders\SyncOrderService;
27 use SyncBasalam\Services\SystemResourceMonitor;
28 use SyncBasalam\Services\VendorInfoService;
29 use SyncBasalam\Services\VendorSyncPolicy;
30
31 defined('ABSPATH') || exit;
32
33 class AppServiceProvider implements ServiceProviderInterface
34 {
35 public function register(ContainerInterface $container): void
36 {
37 $container->singleton(SettingsContainer::class, function () {
38 return new SettingsContainer();
39 });
40
41 $container->singleton(Plugin::class, function () {
42 return new Plugin();
43 });
44
45 $container->singleton(JobManager::class, function () {
46 return new JobManager();
47 });
48
49 $container->singleton(ApiServiceManager::class, function () {
50 return $this->newInstance(ApiServiceManager::class);
51 });
52
53 $container->singleton(VendorInfoService::class, function () {
54 return new VendorInfoService();
55 });
56
57 $container->singleton(VendorSyncPolicy::class, function (ContainerInterface $container) {
58 return new VendorSyncPolicy($container->get(VendorInfoService::class));
59 });
60
61 $container->singleton(ProductOperations::class, function () {
62 return $this->newInstance(ProductOperations::class);
63 });
64
65 $container->singleton(LockManager::class, function () {
66 return new LockManager();
67 });
68
69 $container->singleton(SystemResourceMonitor::class, function () {
70 return new SystemResourceMonitor();
71 });
72
73 $container->singleton(UpdateSingleProductJob::class, function (ContainerInterface $container) {
74 return new UpdateSingleProductJob(
75 $container->get(JobManager::class),
76 $container->get(ProductOperations::class)
77 );
78 });
79
80 $container->singleton(CreateSingleProductJob::class, function (ContainerInterface $container) {
81 return new CreateSingleProductJob(
82 $container->get(JobManager::class),
83 $container->get(ProductOperations::class)
84 );
85 });
86
87 $container->singleton(BulkUpdateProductsJob::class, function (ContainerInterface $container) {
88 return new BulkUpdateProductsJob(
89 $container->get(JobManager::class),
90 $container->get(ApiServiceManager::class),
91 $container->get(\SyncBasalam\Admin\Product\ProductDataFactory::class),
92 $container->get(SettingsContainer::class)
93 );
94 });
95
96 $container->singleton(CreateAllProductsJob::class, function (ContainerInterface $container) {
97 return new CreateAllProductsJob($container->get(JobManager::class));
98 });
99
100 $container->singleton(UpdateAllProductsJob::class, function (ContainerInterface $container) {
101 return new UpdateAllProductsJob($container->get(JobManager::class));
102 });
103
104 $container->singleton(AutoConnectProducts::class, function () {
105 return new AutoConnectProducts();
106 });
107
108 $container->singleton(AutoConnectProductsJob::class, function (ContainerInterface $container) {
109 return new AutoConnectProductsJob(
110 $container->get(JobManager::class),
111 $container->get(AutoConnectProducts::class)
112 );
113 });
114
115 $container->singleton(FetchOrdersService::class, function () {
116 return new FetchOrdersService();
117 });
118
119 $container->singleton(SyncOrderService::class, function () {
120 return new SyncOrderService();
121 });
122
123 $container->singleton(FetchOrdersJob::class, function (ContainerInterface $container) {
124 return new FetchOrdersJob(
125 $container->get(JobManager::class),
126 $container->get(FetchOrdersService::class),
127 $container->get(SyncOrderService::class)
128 );
129 });
130
131 $container->singleton(JobRegistry::class, function (ContainerInterface $container) {
132 return new JobRegistry([
133 $container->get(BulkUpdateProductsJob::class),
134 $container->get(UpdateAllProductsJob::class),
135 $container->get(UpdateSingleProductJob::class),
136 $container->get(CreateSingleProductJob::class),
137 $container->get(CreateAllProductsJob::class),
138 $container->get(AutoConnectProductsJob::class),
139 $container->get(FetchOrdersJob::class),
140 ]);
141 });
142
143 $container->singleton(JobExecutor::class, function (ContainerInterface $container) {
144 return new JobExecutor(
145 $container->get(JobManager::class),
146 $container->get(LockManager::class),
147 $container->get(JobRegistry::class)
148 );
149 });
150
151 $container->singleton(DiscountTaskProcessor::class, function () {
152 return new DiscountTaskProcessor();
153 });
154
155 $container->singleton(DiscountTaskScheduler::class, function (ContainerInterface $container) {
156 return new DiscountTaskScheduler(
157 $container->get(DiscountTaskProcessor::class)
158 );
159 });
160
161 $container->singleton(JobsRunner::class, function (ContainerInterface $container) {
162 return new JobsRunner(
163 $container->get(JobManager::class),
164 $container->get(JobExecutor::class),
165 $container->get(DiscountTaskScheduler::class),
166 $container->get(CheckHttpBlockService::class)
167 );
168 });
169 }
170
171 private function newInstance(string $class)
172 {
173 return new $class();
174 }
175 }
176