<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Modules\Area\Interfaces\AreaRepositoryInterface;
use Modules\Area\Repositories\AreaRepository;
use Modules\Attribute\Interfaces\AttributeRepositoryInterface;
use Modules\Attribute\Repositories\AttributeRepository;
use Modules\Banner\Interfaces\BannerRepositoryInterface;
use Modules\Banner\Repositories\BannerRepository;
use Modules\Brand\Interfaces\BrandRepositoryInterface;
use Modules\Brand\Repositories\BrandRepository;
use Modules\Category\Interfaces\CategoryRepositoryInterface;
use Modules\Category\Repositories\CategoryRepository;
use Modules\City\Interfaces\CityRepositoryInterface;
use Modules\City\Repositories\CityRepository;
use Modules\Feature\Interfaces\FeatureRepositoryInterface;
use Modules\Feature\Repositories\FeatureRepository;
use Modules\Gallery\Interfaces\GalleryRepositoryInterface;
use Modules\Gallery\Repositories\GalleryRepository;
use Modules\Language\Interfaces\LanguageRepositoryInterface;
use Modules\Language\Repositories\LanguageRepository;
use Modules\Option\Interfaces\OptionRepositoryInterface;
use Modules\Option\Repositories\OptionRepository;
use Modules\Order\Interfaces\OrderRepositoryInterface;
use Modules\Order\Repositories\OrderRepository;
use Modules\Package\Interfaces\PackageRepositoryInterface;
use Modules\Package\Repositories\PackageRepository;
use Modules\Partner\Interfaces\PartnerRepositoryInterface;
use Modules\Partner\Repositories\PartnerRepository;
use Modules\Review\Interfaces\ReviewRepositoryInterface;
use Modules\Review\Repositories\ReviewRepository;
use Modules\Service\Interfaces\ServiceRepositoryInterface;
use Modules\Service\Repositories\ServiceRepository;
use Modules\Team\Interfaces\TeamRepositoryInterface;
use Modules\Team\Repositories\TeamRepository;
use Modules\Setting\Interfaces\SettingRepositoryInterface;
use Modules\Setting\Repositories\SettingRepository;
use Modules\Newsletter\Interfaces\NewsletterRepositoryInterface;
use Modules\Newsletter\Repositories\NewsletterRepository;
use Modules\News\Interfaces\NewsRepositoryInterface;
use Modules\News\Repositories\NewsRepository;
use Modules\Project\Interfaces\ProjectRepositoryInterface;
use Modules\Project\Repositories\ProjectRepository;
use Modules\Supplier\Interfaces\SupplierRepositoryInterface;
use Modules\Supplier\Repositories\SupplierRepository;
use Modules\Slider\Interfaces\SliderRepositoryInterface;
use Modules\Slider\Repositories\SliderRepository;
use Modules\Page\Interfaces\PageRepositoryInterface;
use Modules\Page\Repositories\PageRepository;
use Modules\Type\Interfaces\TypeRepositoryInterface;
use Modules\Type\Repositories\TypeRepository;
use Modules\Unit\Interfaces\UnitRepositoryInterface;
use Modules\Unit\Repositories\UnitRepository;
use Modules\User\Interfaces\ModuleRepositoryInterface;
use Modules\User\Interfaces\UserRepositoryInterface;
use Modules\User\Repositories\ModuleRepository;
use Modules\User\Repositories\UserRepository;
use Modules\VisitorMessage\Interfaces\VisitorMessageRepositoryInterface;
use Modules\VisitorMessage\Repositories\VisitorMessageRepository;

class RepositoryServiceProvider extends ServiceProvider
{
    /**
     * Register services.
     *
     * @return void
     */
    public function register()
    {
        $this->app->bind(AreaRepositoryInterface::class, AreaRepository::class);
        $this->app->bind(CategoryRepositoryInterface::class, CategoryRepository::class);
        $this->app->bind(CityRepositoryInterface::class, CityRepository::class);
        $this->app->bind(UserRepositoryInterface::class, UserRepository::class);
        $this->app->bind(UnitRepositoryInterface::class, UnitRepository::class);
        $this->app->bind(BannerRepositoryInterface::class, BannerRepository::class);
        $this->app->bind(TypeRepositoryInterface::class, TypeRepository::class);
        $this->app->bind(LanguageRepositoryInterface::class, LanguageRepository::class);
        $this->app->bind(AttributeRepositoryInterface::class, AttributeRepository::class);
        $this->app->bind(BrandRepositoryInterface::class, BrandRepository::class);
        $this->app->bind(ModuleRepositoryInterface::class, ModuleRepository::class);
        $this->app->bind(PageRepositoryInterface::class, PageRepository::class);
        $this->app->bind(PartnerRepositoryInterface::class, PartnerRepository::class);
        $this->app->bind(GalleryRepositoryInterface::class, GalleryRepository::class);
        $this->app->bind(ServiceRepositoryInterface::class, ServiceRepository::class);
        $this->app->bind(TeamRepositoryInterface::class, TeamRepository::class);
        $this->app->bind(VisitorMessageRepositoryInterface::class, VisitorMessageRepository::class);
        $this->app->bind(FeatureRepositoryInterface::class, FeatureRepository::class);
        $this->app->bind(ReviewRepositoryInterface::class, ReviewRepository::class);
        $this->app->bind(NewsletterRepositoryInterface::class, NewsletterRepository::class);
        $this->app->bind(NewsRepositoryInterface::class, NewsRepository::class);
        $this->app->bind(ProjectRepositoryInterface::class, ProjectRepository::class);
        $this->app->bind(SupplierRepositoryInterface::class, SupplierRepository::class);
        $this->app->bind(SliderRepositoryInterface::class, SliderRepository::class);
        $this->app->bind(OptionRepositoryInterface::class, OptionRepository::class);
        $this->app->bind(OrderRepositoryInterface::class, OrderRepository::class);
        $this->app->bind(PackageRepositoryInterface::class, PackageRepository::class);
        $this->app->bind(SettingRepositoryInterface::class, SettingRepository::class);

    }

    /**
     * Bootstrap services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }
}
