PluginProbe
ووسلام – همگام سازی ووکامرس و باسلام / 1.10.0
ووسلام – همگام سازی ووکامرس و باسلام v1.10.0
1.10.19 1.10.20 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 All 53 releases
sync-basalam / includes / Infrastructure / Container / AppServiceProvider.php

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

166 lines 6.2 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
29 defined('ABSPATH') || exit;
30
31 class AppServiceProvider implements ServiceProviderInterface
32 {
33 public function register(ContainerInterface $container): void
34 {
35 $container->singleton(SettingsContainer::class, function () {
36 return new SettingsContainer();
37 });
38
39 $container->singleton(Plugin::class, function () {
40 return new Plugin();
41 });
42
43 $container->singleton(JobManager::class, function () {
44 return new JobManager();
45 });
46
47 $container->singleton(ApiServiceManager::class, function () {
48 return $this->newInstance(ApiServiceManager::class);
49 });
50
51 $container->singleton(ProductOperations::class, function () {
52 return $this->newInstance(ProductOperations::class);
53 });
54
55 $container->singleton(LockManager::class, function () {
56 return new LockManager();
57 });
58
59 $container->singleton(SystemResourceMonitor::class, function () {
60 return new SystemResourceMonitor();
61 });
62
63 $container->singleton(UpdateSingleProductJob::class, function (ContainerInterface $container) {
64 return new UpdateSingleProductJob(
65 $container->get(JobManager::class),
66 $container->get(ProductOperations::class)
67 );
68 });
69
70 $container->singleton(CreateSingleProductJob::class, function (ContainerInterface $container) {
71 return new CreateSingleProductJob(
72 $container->get(JobManager::class),
73 $container->get(ProductOperations::class)
74 );
75 });
76
77 $container->singleton(BulkUpdateProductsJob::class, function (ContainerInterface $container) {
78 return new BulkUpdateProductsJob(
79 $container->get(JobManager::class),
80 $container->get(ApiServiceManager::class),
81 $container->get(\SyncBasalam\Admin\Product\ProductDataFactory::class),
82 $container->get(SettingsContainer::class)
83 );
84 });
85
86 $container->singleton(CreateAllProductsJob::class, function (ContainerInterface $container) {
87 return new CreateAllProductsJob($container->get(JobManager::class));
88 });
89
90 $container->singleton(UpdateAllProductsJob::class, function (ContainerInterface $container) {
91 return new UpdateAllProductsJob($container->get(JobManager::class));
92 });
93
94 $container->singleton(AutoConnectProducts::class, function () {
95 return new AutoConnectProducts();
96 });
97
98 $container->singleton(AutoConnectProductsJob::class, function (ContainerInterface $container) {
99 return new AutoConnectProductsJob(
100 $container->get(JobManager::class),
101 $container->get(AutoConnectProducts::class)
102 );
103 });
104
105 $container->singleton(FetchOrdersService::class, function () {
106 return new FetchOrdersService();
107 });
108
109 $container->singleton(SyncOrderService::class, function () {
110 return new SyncOrderService();
111 });
112
113 $container->singleton(FetchOrdersJob::class, function (ContainerInterface $container) {
114 return new FetchOrdersJob(
115 $container->get(JobManager::class),
116 $container->get(FetchOrdersService::class),
117 $container->get(SyncOrderService::class)
118 );
119 });
120
121 $container->singleton(JobRegistry::class, function (ContainerInterface $container) {
122 return new JobRegistry([
123 $container->get(BulkUpdateProductsJob::class),
124 $container->get(UpdateAllProductsJob::class),
125 $container->get(UpdateSingleProductJob::class),
126 $container->get(CreateSingleProductJob::class),
127 $container->get(CreateAllProductsJob::class),
128 $container->get(AutoConnectProductsJob::class),
129 $container->get(FetchOrdersJob::class),
130 ]);
131 });
132
133 $container->singleton(JobExecutor::class, function (ContainerInterface $container) {
134 return new JobExecutor(
135 $container->get(JobManager::class),
136 $container->get(LockManager::class),
137 $container->get(JobRegistry::class)
138 );
139 });
140
141 $container->singleton(DiscountTaskProcessor::class, function () {
142 return new DiscountTaskProcessor();
143 });
144
145 $container->singleton(DiscountTaskScheduler::class, function (ContainerInterface $container) {
146 return new DiscountTaskScheduler(
147 $container->get(DiscountTaskProcessor::class)
148 );
149 });
150
151 $container->singleton(JobsRunner::class, function (ContainerInterface $container) {
152 return new JobsRunner(
153 $container->get(JobManager::class),
154 $container->get(JobExecutor::class),
155 $container->get(DiscountTaskScheduler::class),
156 $container->get(CheckHttpBlockService::class)
157 );
158 });
159 }
160
161 private function newInstance(string $class)
162 {
163 return new $class();
164 }
165 }
166