<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Modules\Address\Interfaces\AddressRepositoryInterface;
use Modules\Address\Repositories\AddressRepository;
use Modules\Canteen\Interfaces\CanteenRepositoryInterface;
use Modules\Canteen\Repositories\CanteenRepository;
use Modules\Category\Interfaces\CategoryRepositoryInterface;
use Modules\Category\Repositories\CategoryRepository;
use Modules\Chip\Interfaces\ChipRepositoryInterface;
use Modules\Chip\Repositories\ChipRepository;
use Modules\ChipOrder\Interfaces\ChipOrderRepositoryInterface;
use Modules\ChipOrder\Repositories\ChipOrderRepository;
use Modules\Faq\Interfaces\FaqRepositoryInterface;
use Modules\Faq\Repositories\FaqRepository;
use Modules\Language\Interfaces\LanguageRepositoryInterface;
use Modules\Language\Repositories\LanguageRepository;
use Modules\Notification\Interfaces\ManagementNotificationRepositoryInterface;
use Modules\Notification\Repositories\ManagementNotificationRepository;
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\Payment\Interfaces\PaymentRepositoryInterface;
use Modules\Payment\Repositories\PaymentRepository;
use Modules\PaymentLog\Interfaces\PaymentLogRepositoryInterface;
use Modules\PaymentLog\Repositories\PaymentLogRepository;
use Modules\School\Interfaces\SchoolRepositoryInterface;
use Modules\School\Repositories\SchoolRepository;
use Modules\Setting\Interfaces\SettingRepositoryInterface;
use Modules\Setting\Repositories\SettingRepository;
use Modules\Subscription\Interfaces\SubscriptionRepositoryInterface;
use Modules\Subscription\Repositories\SubscriptionRepository;
use Modules\City\Interfaces\CityRepositoryInterface;
use Modules\City\Repositories\CityRepository;
use Modules\Notification\Interfaces\NotificationRepositoryInterface;
use Modules\Notification\Repositories\NotificationRepository;
use Modules\Page\Interfaces\PageRepositoryInterface;
use Modules\Page\Repositories\PageRepository;
use Modules\Product\Interfaces\ProductRepositoryInterface;
use Modules\Product\Repositories\ProductRepository;
use Modules\User\Interfaces\CanteenModuleRepositoryInterface;
use Modules\User\Interfaces\ModuleRepositoryInterface;
use Modules\User\Interfaces\UserRepositoryInterface;
use Modules\User\Interfaces\VerificationRepositoryInterface;
use Modules\User\Repositories\CanteenModuleRepository;
use Modules\User\Repositories\ModuleRepository;
use Modules\User\Repositories\UserRepository;
use Modules\User\Repositories\VerificationRepository;

class RepositoryServiceProvider extends ServiceProvider
{
    /**
     * Register services.
     *
     * @return void
     */
    public function register()
    {
        $this->app->bind(UserRepositoryInterface::class, UserRepository::class);
        $this->app->bind(VerificationRepositoryInterface::class, VerificationRepository::class);
        $this->app->bind(LanguageRepositoryInterface::class, LanguageRepository::class);
        $this->app->bind(SubscriptionRepositoryInterface::class, SubscriptionRepository::class);
        $this->app->bind(CityRepositoryInterface::class, CityRepository::class);
        $this->app->bind(SchoolRepositoryInterface::class, SchoolRepository::class);
        $this->app->bind(CanteenRepositoryInterface::class, CanteenRepository::class);
        $this->app->bind(FaqRepositoryInterface::class, FaqRepository::class);
        $this->app->bind(ProductRepositoryInterface::class, ProductRepository::class);
        $this->app->bind(NotificationRepositoryInterface::class, NotificationRepository::class);
        $this->app->bind(ManagementNotificationRepositoryInterface::class, ManagementNotificationRepository::class);
        $this->app->bind(ModuleRepositoryInterface::class, ModuleRepository::class);
        $this->app->bind(PageRepositoryInterface::class, PageRepository::class);
        $this->app->bind(PackageRepositoryInterface::class, PackageRepository::class);
        $this->app->bind(PaymentLogRepositoryInterface::class, PaymentLogRepository::class);
        $this->app->bind(CartRepositoryInterface::class, CartRepository::class);
        $this->app->bind(OrderRepositoryInterface::class, OrderRepository::class);
        $this->app->bind(SettingRepositoryInterface::class, SettingRepository::class);
        $this->app->bind(CategoryRepositoryInterface::class, CategoryRepository::class);
        $this->app->bind(CanteenModuleRepositoryInterface::class, CanteenModuleRepository::class);
        $this->app->bind(AddressRepositoryInterface::class, AddressRepository::class);
        $this->app->bind(ChipRepositoryInterface::class, ChipRepository::class);
        $this->app->bind(ChipOrderRepositoryInterface::class, ChipOrderRepository::class);
        $this->app->bind(PaymentRepositoryInterface::class, PaymentRepository::class);

    }

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