Passed
Push — main ( bb1631...b48e8d )
by PRATIK
07:52 queued 04:02
created

WebsiteServiceProvider::repos()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 30
Code Lines 28

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 1 Features 1
Metric Value
cc 1
eloc 28
c 2
b 1
f 1
nc 1
nop 0
dl 0
loc 30
rs 9.472
1
<?php
2
3
namespace Adminetic\Website\Provider;
4
5
use Adminetic\Website\Console\Commands\AdmineticWebsiteInstallCommand;
6
use Adminetic\Website\Console\Commands\AdmineticWebsiteMigrateCommand;
7
use Adminetic\Website\Console\Commands\AdmineticWebsitePermissionCommand;
8
use Adminetic\Website\Console\Commands\AdmineticWebsiteRollbackCommand;
9
use Adminetic\Website\Console\Commands\SitemapGenerateCommand;
10
use Adminetic\Website\Http\Livewire\Admin\Attribute\AttributeTable;
11
use Adminetic\Website\Http\Livewire\Admin\Career\ApplicationTable;
12
use Adminetic\Website\Http\Livewire\Admin\Career\CareerTable;
13
use Adminetic\Website\Http\Livewire\Admin\Career\Selection;
14
use Adminetic\Website\Http\Livewire\Admin\Career\Summary;
15
use Adminetic\Website\Http\Livewire\Admin\Category\CategoryTable;
16
use Adminetic\Website\Http\Livewire\Admin\Category\QuickCategory;
17
use Adminetic\Website\Http\Livewire\Admin\Charts\Event\EventPassChart;
18
use Adminetic\Website\Http\Livewire\Admin\Charts\Event\EventPaymentChart;
19
use Adminetic\Website\Http\Livewire\Admin\Client\ClientTable;
20
use Adminetic\Website\Http\Livewire\Admin\Counter\CounterTable;
21
use Adminetic\Website\Http\Livewire\Admin\Dashboard\NewsHeadline;
22
use Adminetic\Website\Http\Livewire\Admin\Dashboard\WebsiteDashboard;
23
use Adminetic\Website\Http\Livewire\Admin\Download\DownloadTable;
24
use Adminetic\Website\Http\Livewire\Admin\Facility\FacilityTable;
25
use Adminetic\Website\Http\Livewire\Admin\Faq\FaqTable;
26
use Adminetic\Website\Http\Livewire\Admin\Feature\FeatureTable;
27
use Adminetic\Website\Http\Livewire\Admin\Slider\SliderTable;
28
use Adminetic\Website\Http\Livewire\Admin\About\AboutTable;
29
use Adminetic\Website\Http\Livewire\Admin\Gallery\GalleryTable;
30
use Adminetic\Website\Http\Livewire\Admin\Gallery\GalleryVideo;
31
use Adminetic\Website\Http\Livewire\Admin\Notice\NoticeTable;
32
use Adminetic\Website\Http\Livewire\Admin\Package\PackageFeature;
33
use Adminetic\Website\Http\Livewire\Admin\Package\PackageTable;
34
use Adminetic\Website\Http\Livewire\Admin\Page\PageTable;
35
use Adminetic\Website\Http\Livewire\Admin\Payment\PaymentMaster;
36
use Adminetic\Website\Http\Livewire\Admin\Payment\PaymentPanel;
37
use Adminetic\Website\Http\Livewire\Admin\Payment\PaymentTable;
38
use Adminetic\Website\Http\Livewire\Admin\Popup\PopupTable;
39
use Adminetic\Website\Http\Livewire\Admin\Post\PostTable;
40
use Adminetic\Website\Http\Livewire\Admin\Process\ProcessTable;
41
use Adminetic\Website\Http\Livewire\Admin\Product\ProductTable;
42
use Adminetic\Website\Http\Livewire\Admin\Project\ProjectTable;
43
use Adminetic\Website\Http\Livewire\Admin\Service\ServiceTable;
44
use Adminetic\Website\Http\Livewire\Admin\Slider\SliderTable;
0 ignored issues
show
Bug introduced by
A parse error occurred: Cannot use Adminetic\Website\Http\Livewire\Admin\Slider\SliderTable as SliderTable because the name is already in use
Loading history...
45
use Adminetic\Website\Http\Livewire\Admin\Software\SoftwareModules;
46
use Adminetic\Website\Http\Livewire\Admin\Software\SoftwareTable;
47
use Adminetic\Website\Http\Livewire\Admin\System\UploadImage;
48
use Adminetic\Website\Http\Livewire\Admin\Team\TeamTable;
49
use Adminetic\Website\Http\Livewire\Admin\Testimonial\TestimonialTable;
50
use Adminetic\Website\Http\Livewire\Admin\History\HistoryTable;
51
use Adminetic\Website\Models\Admin\Application;
52
use Adminetic\Website\Models\Admin\Attribute;
53
use Adminetic\Website\Models\Admin\Career;
54
use Adminetic\Website\Models\Admin\Category;
55
use Adminetic\Website\Models\Admin\Client;
56
use Adminetic\Website\Models\Admin\Counter;
57
use Adminetic\Website\Models\Admin\Download;
58
use Adminetic\Website\Models\Admin\Facility;
59
use Adminetic\Website\Models\Admin\Faq;
60
use Adminetic\Website\Models\Admin\Feature;
61
use Adminetic\Website\Models\Admin\Gallery;
62
use Adminetic\Website\Models\Admin\Notice;
63
use Adminetic\Website\Models\Admin\Package;
64
use Adminetic\Website\Models\Admin\Page;
65
use Adminetic\Website\Models\Admin\Payment;
66
use Adminetic\Website\Models\Admin\Popup;
67
use Adminetic\Website\Models\Admin\Post;
68
use Adminetic\Website\Models\Admin\Process;
69
use Adminetic\Website\Models\Admin\Product;
70
use Adminetic\Website\Models\Admin\Project;
71
use Adminetic\Website\Models\Admin\Service;
72
use Adminetic\Website\Models\Admin\Slider;
73
use Adminetic\Website\Models\Admin\Software;
74
use Adminetic\Website\Models\Admin\Team;
75
use Adminetic\Website\Models\Admin\Testimonial;
76
use Adminetic\Website\Policies\ApplicationPolicy;
77
use Adminetic\Website\Policies\AttributePolicy;
78
use Adminetic\Website\Policies\CareerPolicy;
79
use Adminetic\Website\Policies\CategoryPolicy;
80
use Adminetic\Website\Policies\ClientPolicy;
81
use Adminetic\Website\Policies\CounterPolicy;
82
use Adminetic\Website\Policies\DownloadPolicy;
83
use Adminetic\Website\Policies\FacilityPolicy;
84
use Adminetic\Website\Policies\FaqPolicy;
85
use Adminetic\Website\Policies\FeaturePolicy;
86
use Adminetic\Website\Policies\GalleryPolicy;
87
use Adminetic\Website\Policies\NoticePolicy;
88
use Adminetic\Website\Policies\PackagePolicy;
89
use Adminetic\Website\Policies\PagePolicy;
90
use Adminetic\Website\Policies\PaymentPolicy;
91
use Adminetic\Website\Policies\PopupPolicy;
92
use Adminetic\Website\Policies\PostPolicy;
93
use Adminetic\Website\Policies\ProcessPolicy;
94
use Adminetic\Website\Policies\ProductPolicy;
95
use Adminetic\Website\Policies\ProjectPolicy;
96
use Adminetic\Website\Policies\ServicePolicy;
97
use Adminetic\Website\Policies\SliderPolicy;
98
use Adminetic\Website\Policies\SoftwarePolicy;
99
use Adminetic\Website\Policies\TeamPolicy;
100
use Adminetic\Website\Policies\TestimonialPolicy;
101
use Adminetic\Website\Models\Admin\Slider;
102
use Adminetic\Website\Policies\SliderPolicy;
103
use Adminetic\Website\Models\Admin\About;
104
use Adminetic\Website\Policies\AboutPolicy;
105
use Adminetic\Website\Models\Admin\History;
106
use Adminetic\Website\Policies\HistoryPolicy;
107
use Illuminate\Support\Facades\Gate;
108
use Illuminate\Support\Facades\Route;
109
use Illuminate\Support\ServiceProvider;
110
use Livewire\Livewire;
111
112
class WebsiteServiceProvider extends ServiceProvider
113
{
114
    // Register Policies
115
    protected $policies = [
116
        Application::class => ApplicationPolicy::class,
117
        Attribute::class => AttributePolicy::class,
118
        Career::class => CareerPolicy::class,
119
        Category::class => CategoryPolicy::class,
120
        Client::class => ClientPolicy::class,
121
        Counter::class => CounterPolicy::class,
122
        Download::class => DownloadPolicy::class,
123
        Facility::class => FacilityPolicy::class,
124
        Faq::class => FaqPolicy::class,
125
        Feature::class => FeaturePolicy::class,
126
        Gallery::class => GalleryPolicy::class,
127
        Notice::class => NoticePolicy::class,
128
        Package::class => PackagePolicy::class,
129
        Page::class => PagePolicy::class,
130
        Payment::class => PaymentPolicy::class,
131
        Popup::class => PopupPolicy::class,
132
        Post::class => PostPolicy::class,
133
        Process::class => ProcessPolicy::class,
134
        Product::class => ProductPolicy::class,
135
        Project::class => ProjectPolicy::class,
136
        Service::class => ServicePolicy::class,
137
        Software::class => SoftwarePolicy::class,
138
        Team::class => TeamPolicy::class,
139
        Testimonial::class => TestimonialPolicy::class,
140
        Slider::class => SliderPolicy::class,
141
        About::class => AboutPolicy::class,
142
        History::class => HistoryPolicy::class,
143
144
145
    ];
146
147
    /**
148
     * Bootstrap services.
149
     *
150
     * @return void
151
     */
152
    public function boot()
153
    {
154
        // Publish Ressource
155
        if ($this->app->runningInConsole()) {
156
            $this->publishResource();
157
        }
158
        // Register Resources
159
        $this->registerResource();
160
        // Register Policies
161
        $this->registerPolicies();
162
        // Register View Components
163
        $this->registerLivewireComponents();
164
    }
165
166
    /**
167
     * Register services.
168
     *
169
     * @return void
170
     */
171
    public function register()
172
    {
173
        $this->registerCommands();
174
        /* Repository Interface Binding */
175
        $this->repos();
176
    }
177
178
    /**
179
     * Publish Package Resource.
180
     *
181
     *@return void
182
     */
183
    protected function publishResource()
184
    {
185
        // Publish Config File
186
        $this->publishes([
187
            __DIR__.'/../../config/website.php' => config_path('website.php'),
188
        ], 'website-config');
189
        // Publish View Files
190
        $this->publishes([
191
            __DIR__.'/../../resources/views' => resource_path('views/vendor/adminetic/plugin/website'),
192
        ], 'website-views');
193
        // Publish Migration Files
194
        $this->publishes([
195
            __DIR__.'/../../database/migrations' => database_path('migrations/website'),
196
        ], 'website-migrations');
197
        $this->publishes([
198
            __DIR__.'/../../payload/assets' => public_path('plugins/website'),
199
        ], 'website-assets');
200
        $this->publishes([
201
            __DIR__.'/../../payload/modules' => app_path('Modules'),
202
        ], 'website-modules');
203
    }
204
205
    /**
206
     * Register Package Resource.
207
     *
208
     *@return void
209
     */
210
    protected function registerResource()
211
    {
212
        if (! config('website.publish_migrations', true)) {
213
            $this->loadMigrationsFrom(__DIR__.'/../../database/migrations'); // Loading Migration Files
214
        }
215
        $this->loadViewsFrom(__DIR__.'/../../resources/views', 'website'); // Loading Views Files
216
        $this->registerRoutes();
217
    }
218
219
    /**
220
     * Register Package Command.
221
     *
222
     *@return void
223
     */
224
    protected function registerCommands()
225
    {
226
        $this->commands([
227
            AdmineticWebsiteInstallCommand::class,
228
            AdmineticWebsitePermissionCommand::class,
229
            AdmineticWebsiteMigrateCommand::class,
230
            AdmineticWebsiteRollbackCommand::class,
231
            SitemapGenerateCommand::class,
232
        ]);
233
    }
234
235
    /**
236
     * Register Routes.
237
     *
238
     * @return void
239
     */
240
    protected function registerRoutes()
241
    {
242
        Route::group($this->routeConfiguration(), function () {
243
            $this->loadRoutesFrom(__DIR__.'/../../routes/web.php');
244
        });
245
246
        if (config('website.website_api_end_points', true)) {
247
            Route::group($this->apiRouteConfiguration(), function () {
248
                $this->loadRoutesFrom(__DIR__.'/../../routes/api.php');
249
            });
250
        }
251
    }
252
253
    /**
254
     * Register Route Configuration.
255
     *
256
     * @return array
257
     */
258
    protected function routeConfiguration()
259
    {
260
        return [
261
            'prefix' => config('adminetic.prefix', 'admin'),
262
            'middleware' => config('adminetic.middleware', ['web', 'auth']),
263
        ];
264
    }
265
266
    /**
267
     * Register API Route Configuration.
268
     *
269
     *@return array
270
     */
271
    protected function apiRouteConfiguration()
272
    {
273
        return [
274
            'prefix' => config('website.api_prefix', 'api'),
275
            'middleware' => config('website.api_middleware', ['api']),
276
        ];
277
    }
278
279
    /**
280
     * Register Components.
281
     *
282
     *@return void
283
     */
284
    protected function registerLivewireComponents()
285
    {
286
        Livewire::component('admin.attribute.attribute-table', AttributeTable::class);
287
        Livewire::component('admin.career.application-table', ApplicationTable::class);
288
        Livewire::component('admin.career.career-table', CareerTable::class);
289
        Livewire::component('admin.career.selection', Selection::class);
290
        Livewire::component('admin.career.summary', Summary::class);
291
        Livewire::component('admin.category.category-table', CategoryTable::class);
292
        Livewire::component('admin.category.quick-category', QuickCategory::class);
293
        Livewire::component('admin.charts.event.event-pass-chart', EventPassChart::class);
294
        Livewire::component('admin.charts.event.event-payment-chart', EventPaymentChart::class);
295
        Livewire::component('admin.client.client-table', ClientTable::class);
296
        Livewire::component('admin.counter.counter-table', CounterTable::class);
297
        Livewire::component('admin.dashboard.news-headline', NewsHeadline::class);
298
        Livewire::component('admin.dashboard.website-dashboard', WebsiteDashboard::class);
299
        Livewire::component('admin.download.download-table', DownloadTable::class);
300
        Livewire::component('admin.facility.facility-table', FacilityTable::class);
301
        Livewire::component('admin.faq.faq-table', FaqTable::class);
302
        Livewire::component('admin.feature.feature-table', FeatureTable::class);
303
        Livewire::component('admin.gallery.gallery-table', GalleryTable::class);
304
        Livewire::component('admin.gallery.gallery-video', GalleryVideo::class);
305
        Livewire::component('admin.notice.notice-table', NoticeTable::class);
306
        Livewire::component('admin.package.package-table', PackageTable::class);
307
        Livewire::component('admin.package.package-feature', PackageFeature::class);
308
        Livewire::component('admin.page.page-table', PageTable::class);
309
        Livewire::component('admin.payment.payment-master', PaymentMaster::class);
310
        Livewire::component('admin.payment.payment-panel', PaymentPanel::class);
311
        Livewire::component('admin.payment.payment-table', PaymentTable::class);
312
        Livewire::component('admin.popup.faq-table', PopupTable::class);
313
        Livewire::component('admin.post.post-table', PostTable::class);
314
        Livewire::component('admin.process.process-table', ProcessTable::class);
315
        Livewire::component('admin.product.product-table', ProductTable::class);
316
        Livewire::component('admin.project.project-table', ProjectTable::class);
317
        Livewire::component('admin.service.service-table', ServiceTable::class);
318
        Livewire::component('admin.software.software-table', SoftwareTable::class);
319
        Livewire::component('admin.software.software-modules', SoftwareModules::class);
320
        Livewire::component('admin.system.upload-image', UploadImage::class);
321
        Livewire::component('admin.team.team-table', TeamTable::class);
322
        Livewire::component('admin.testimonial.testimonial-table', TestimonialTable::class);
323
        Livewire::component('admin.slider.slider-table', SliderTable::class);
324
        Livewire::component('admin.about.about-table', AboutTable::class);
325
        Livewire::component('admin.history.history-table', HistoryTable::class);
326
    }
327
328
    /**
329
     * Repository Binding.
330
     *
331
     * @return void
332
     */
333
    protected function repos()
334
    {
335
        $this->app->bind(\Adminetic\Website\Contracts\CategoryRepositoryInterface::class, \Adminetic\Website\Repositories\CategoryRepository::class);
336
        $this->app->bind(\Adminetic\Website\Contracts\ServiceRepositoryInterface::class, \Adminetic\Website\Repositories\ServiceRepository::class);
337
        $this->app->bind(\Adminetic\Website\Contracts\FacilityRepositoryInterface::class, \Adminetic\Website\Repositories\FacilityRepository::class);
338
        $this->app->bind(\Adminetic\Website\Contracts\FeatureRepositoryInterface::class, \Adminetic\Website\Repositories\FeatureRepository::class);
339
        $this->app->bind(\Adminetic\Website\Contracts\FaqRepositoryInterface::class, \Adminetic\Website\Repositories\FaqRepository::class);
340
        $this->app->bind(\Adminetic\Website\Contracts\CounterRepositoryInterface::class, \Adminetic\Website\Repositories\CounterRepository::class);
341
        $this->app->bind(\Adminetic\Website\Contracts\GalleryRepositoryInterface::class, \Adminetic\Website\Repositories\GalleryRepository::class);
342
        $this->app->bind(\Adminetic\Website\Contracts\ClientRepositoryInterface::class, \Adminetic\Website\Repositories\ClientRepository::class);
343
        $this->app->bind(\Adminetic\Website\Contracts\NoticeRepositoryInterface::class, \Adminetic\Website\Repositories\NoticeRepository::class);
344
        $this->app->bind(\Adminetic\Website\Contracts\PopupRepositoryInterface::class, \Adminetic\Website\Repositories\PopupRepository::class);
345
        $this->app->bind(\Adminetic\Website\Contracts\DownloadRepositoryInterface::class, \Adminetic\Website\Repositories\DownloadRepository::class);
346
        $this->app->bind(\Adminetic\Website\Contracts\PageRepositoryInterface::class, \Adminetic\Website\Repositories\PageRepository::class);
347
        $this->app->bind(\Adminetic\Website\Contracts\TestimonialRepositoryInterface::class, \Adminetic\Website\Repositories\TestimonialRepository::class);
348
        $this->app->bind(\Adminetic\Website\Contracts\TeamRepositoryInterface::class, \Adminetic\Website\Repositories\TeamRepository::class);
349
        $this->app->bind(\Adminetic\Website\Contracts\PackageRepositoryInterface::class, \Adminetic\Website\Repositories\PackageRepository::class);
350
        $this->app->bind(\Adminetic\Website\Contracts\ProjectRepositoryInterface::class, \Adminetic\Website\Repositories\ProjectRepository::class);
351
        $this->app->bind(\Adminetic\Website\Contracts\EventRepositoryInterface::class, \Adminetic\Website\Repositories\EventRepository::class);
352
        $this->app->bind(\Adminetic\Website\Contracts\TicketRepositoryInterface::class, \Adminetic\Website\Repositories\TicketRepository::class);
353
        $this->app->bind(\Adminetic\Website\Contracts\GuestRepositoryInterface::class, \Adminetic\Website\Repositories\GuestRepository::class);
354
        $this->app->bind(\Adminetic\Website\Contracts\CouponRepositoryInterface::class, \Adminetic\Website\Repositories\CouponRepository::class);
355
        $this->app->bind(\Adminetic\Website\Contracts\PaymentRepositoryInterface::class, \Adminetic\Website\Repositories\PaymentRepository::class);
356
        $this->app->bind(\Adminetic\Website\Contracts\PostRepositoryInterface::class, \Adminetic\Website\Repositories\PostRepository::class);
357
        $this->app->bind(\Adminetic\Website\Contracts\CareerRepositoryInterface::class, \Adminetic\Website\Repositories\CareerRepository::class);
358
        $this->app->bind(\Adminetic\Website\Contracts\AttributeRepositoryInterface::class, \Adminetic\Website\Repositories\AttributeRepository::class);
359
        $this->app->bind(\Adminetic\Website\Contracts\ProductRepositoryInterface::class, \Adminetic\Website\Repositories\ProductRepository::class);
360
        $this->app->bind(\Adminetic\Website\Contracts\ProcessRepositoryInterface::class, \Adminetic\Website\Repositories\ProcessRepository::class);
361
        $this->app->bind(\Adminetic\Website\Contracts\SoftwareRepositoryInterface::class, \Adminetic\Website\Repositories\SoftwareRepository::class);
362
        $this->app->bind(\Adminetic\Website\Contracts\SliderRepositoryInterface::class, \Adminetic\Website\Repositories\SliderRepository::class);
363
        $this->app->bind(\Adminetic\Website\Contracts\AboutRepositoryInterface::class, \Adminetic\Website\Repositories\AboutRepository::class);
364
        $this->app->bind(\Adminetic\Website\Contracts\HistoryRepositoryInterface::class, \Adminetic\Website\Repositories\HistoryRepository::class);
365
    }
366
367
    /**
368
     * Register Policies.
369
     *
370
     *@return void
371
     */
372
    protected function registerPolicies()
373
    {
374
        foreach ($this->policies as $key => $value) {
375
            Gate::policy($key, $value);
376
        }
377
    }
378
}
379