<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Modules\Order\Interfaces\OrderRepositoryInterface;
use Modules\Order\Repositories\CartRepository;
use Modules\Order\Interfaces\CartRepositoryInterface;
use Modules\Order\Repositories\OrderRepository;
use Modules\Setting\Interfaces\SettingRepositoryInterface;
use Modules\Setting\Repositories\SettingRepository;
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\Shipping\Interfaces\ShippingRepositoryInterface;
use Modules\Shipping\Repositories\ShippingRepository;
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(SliderRepositoryInterface::class, SliderRepository::class);
        $this->app->bind(PartnerRepositoryInterface::class, PartnerRepository::class);
        $this->app->bind(CountryRepositoryInterface::class, CountryRepository::class);
        $this->app->bind(CategoryRepositoryInterface::class, CategoryRepository::class);
        $this->app->bind(WayRepositoryInterface::class, WayRepository::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(ShippingRepositoryInterface::class, ShippingRepository::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()
    {
        //
    }
}
