<?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\Complaint\Interfaces\ComplaintRepositoryInterface;
use Modules\Complaint\Repositories\ComplaintRepository;
use Modules\Faq\Interfaces\FaqRepositoryInterface;
use Modules\Faq\Repositories\FaqRepository;
use Modules\Notification\Interfaces\ManagementNotificationRepositoryInterface;
use Modules\Notification\Repositories\ManagementNotificationRepository;
use Modules\Option\Interfaces\OptionRepositoryInterface;
use Modules\Option\Repositories\OptionRepository;
use Modules\Order\Interfaces\OrderRepositoryInterface;
use Modules\Order\Repositories\CartRepository;
use Modules\Order\Interfaces\CartRepositoryInterface;
use Modules\Order\Repositories\OrderRepository;
use Modules\Package\Interfaces\PackageRepositoryInterface;
use Modules\Package\Repositories\PackageRepository;
use Modules\Quotation\Interfaces\QuotationRepositoryInterface;
use Modules\Quotation\Repositories\QuotationRepository;
use Modules\Region\Interfaces\RegionRepositoryInterface;
use Modules\Region\Repositories\RegionRepository;
use Modules\Review\Interfaces\ReviewRepositoryInterface;
use Modules\Review\Repositories\ReviewRepository;
use Modules\Setting\Interfaces\SettingRepositoryInterface;
use Modules\Setting\Repositories\SettingRepository;
use Modules\Store\Interfaces\BranchRepositoryInterface;
use Modules\Store\Interfaces\EditStoreRepositoryInterface;
use Modules\Store\Interfaces\StoreRepositoryInterface;
use Modules\Store\Repositories\BranchRepository;
use Modules\Store\Repositories\EditStoreRepository;
use Modules\Store\Repositories\StoreRepository;
use Modules\Subscribe\Interfaces\SubscribeRepositoryInterface;
use Modules\Subscribe\Repositories\SubscribeRepository;
use Modules\User\Repositories\AddressRepository;
use Modules\Category\Interfaces\CategoryRepositoryInterface;
use Modules\Category\Repositories\CategoryRepository;
use Modules\City\Interfaces\CityRepositoryInterface;
use Modules\City\Repositories\CityRepository;
use Modules\Country\Interfaces\CountryRepositoryInterface;
use Modules\Country\Repositories\CountryRepository;
use Modules\Coupon\Interfaces\CouponRepositoryInterface;
use Modules\Coupon\Repositories\CouponRepository;
use Modules\Newsletter\Interfaces\NewsletterRepositoryInterface;
use Modules\Newsletter\Repositories\NewsletterRepository;
use Modules\Notification\Interfaces\NotificationRepositoryInterface;
use Modules\Notification\Repositories\NotificationRepository;
use Modules\Page\Interfaces\PageRepositoryInterface;
use Modules\Page\Repositories\PageRepository;
use Modules\Partner\Interfaces\PartnerRepositoryInterface;
use Modules\Partner\Repositories\PartnerRepository;
use Modules\Product\Interfaces\ProductRepositoryInterface;
use Modules\Product\Repositories\ProductRepository;
use Modules\Rate\Interfaces\RateRepositoryInterface;
use Modules\Rate\Repositories\RateRepository;
use Modules\Slider\Interfaces\SliderRepositoryInterface;
use Modules\Slider\Repositories\SliderRepository;
use Modules\User\Interfaces\AddressRepositoryInterface;
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;
use Modules\Way\Interfaces\WayRepositoryInterface;
use Modules\Way\Repositories\WayRepository;

class RepositoryServiceProvider extends ServiceProvider
{
    /**
     * Register services.
     *
     * @return void
     */
    public function register()
    {
        $this->app->bind(UserRepositoryInterface::class, UserRepository::class);
        $this->app->bind(ManagementNotificationRepositoryInterface::class, ManagementNotificationRepository::class);
        $this->app->bind(SliderRepositoryInterface::class, SliderRepository::class);
        $this->app->bind(StoreRepositoryInterface::class, StoreRepository::class);
        $this->app->bind(AttributeRepositoryInterface::class, AttributeRepository::class);
        $this->app->bind(PartnerRepositoryInterface::class, PartnerRepository::class);
        $this->app->bind(BranchRepositoryInterface::class, BranchRepository::class);
        $this->app->bind(SubscribeRepositoryInterface::class, SubscribeRepository::class);
        $this->app->bind(ComplaintRepositoryInterface::class, ComplaintRepository::class);
        $this->app->bind(EditStoreRepositoryInterface::class, EditStoreRepository::class);
        $this->app->bind(RegionRepositoryInterface::class, RegionRepository::class);
        $this->app->bind(AreaRepositoryInterface::class, AreaRepository::class);
        $this->app->bind(FaqRepositoryInterface::class, FaqRepository::class);
        $this->app->bind(QuotationRepositoryInterface::class, QuotationRepository::class);
        $this->app->bind(CategoryRepositoryInterface::class, CategoryRepository::class);
        $this->app->bind(PackageRepositoryInterface::class, PackageRepository::class);
        $this->app->bind(CityRepositoryInterface::class, CityRepository::class);
        $this->app->bind(CouponRepositoryInterface::class, CouponRepository::class);
        $this->app->bind(ProductRepositoryInterface::class, ProductRepository::class);
        $this->app->bind(OptionRepositoryInterface::class, OptionRepository::class);
        $this->app->bind(NotificationRepositoryInterface::class, NotificationRepository::class);
        $this->app->bind(ModuleRepositoryInterface::class, ModuleRepository::class);
        $this->app->bind(RateRepositoryInterface::class, RateRepository::class);
        $this->app->bind(PageRepositoryInterface::class, PageRepository::class);
        $this->app->bind(VisitorMessageRepositoryInterface::class, VisitorMessageRepository::class);
        $this->app->bind(NewsletterRepositoryInterface::class, NewsletterRepository::class);
        $this->app->bind(AddressRepositoryInterface::class, AddressRepository::class);
        $this->app->bind(CartRepositoryInterface::class, CartRepository::class);
        $this->app->bind(OrderRepositoryInterface::class, OrderRepository::class);
        $this->app->bind(SettingRepositoryInterface::class, SettingRepository::class);

    }

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