<?php

namespace App\Providers;


use App\Repositories\Contracts\ActivityLogRepositoryInterface;
use App\Repositories\Contracts\AiReviewRepositoryInterface;
use App\Repositories\Contracts\ApplicationRepositoryInterface;
use App\Repositories\Contracts\AuditTrailRepositoryInterface;
use App\Repositories\Contracts\CertificationRepositoryInterface;
use App\Repositories\Contracts\CourseEnrollmentRepositoryInterface;
use App\Repositories\Contracts\CourseRepositoryInterface;
use App\Repositories\Contracts\DocumentRepositoryInterface;
use App\Repositories\Contracts\InvoiceRepositoryInterface;
use App\Repositories\Contracts\JobPostRepositoryInterface;
use App\Repositories\Contracts\LearnerProfileRepositoryInterface;
use App\Repositories\Contracts\MeetingRepositoryInterface;
use App\Repositories\Contracts\MessageRepositoryInterface;
use App\Repositories\Contracts\MilestoneRepositoryInterface;
use App\Repositories\Contracts\ProposalRepositoryInterface;
use App\Repositories\Contracts\ProjectRepositoryInterface;
use App\Repositories\Contracts\RatingRepositoryInterface;
use App\Repositories\Contracts\RecruiterProfileRepositoryInterface;
use App\Repositories\Contracts\ReportRepositoryInterface;
use App\Repositories\Contracts\ResearchDocumentRepositoryInterface;
use App\Repositories\Contracts\ResearcherProfileRepositoryInterface;
use App\Repositories\Contracts\RoleRepositoryInterface;
use App\Repositories\Contracts\SettingRepositoryInterface;
use App\Repositories\Contracts\StudentProfileRepositoryInterface;
use App\Repositories\Contracts\TransactionRepositoryInterface;
use App\Repositories\Contracts\UserRepositoryInterface;
use App\Repositories\Eloquent\ActivityLogRepository;
use App\Repositories\Eloquent\AiReviewRepository;
use App\Repositories\Eloquent\ApplicationRepository;
use App\Repositories\Eloquent\AuditTrailRepository;
use App\Repositories\Eloquent\CertificationRepository;
use App\Repositories\Eloquent\CourseEnrollmentRepository;
use App\Repositories\Eloquent\CourseRepository;
use App\Repositories\Eloquent\DocumentRepository;
use App\Repositories\Eloquent\InvoiceRepository;
use App\Repositories\Eloquent\JobPostRepository;
use App\Repositories\Eloquent\LearnerProfileRepository;
use App\Repositories\Eloquent\MeetingRepository;
use App\Repositories\Eloquent\MessageRepository;
use App\Repositories\Eloquent\MilestoneRepository;
use App\Repositories\Eloquent\ProposalRepository;
use App\Repositories\Eloquent\ProjectRepository;
use App\Repositories\Eloquent\RatingRepository;
use App\Repositories\Eloquent\RecruiterProfileRepository;
use App\Repositories\Eloquent\ReportRepository;
use App\Repositories\Eloquent\ResearchDocumentRepository;
use App\Repositories\Eloquent\ResearcherProfileRepository;
use App\Repositories\Eloquent\RoleRepository;
use App\Repositories\Eloquent\SettingRepository;
use App\Repositories\Eloquent\StudentProfileRepository;
use App\Repositories\Eloquent\TransactionRepository;
use App\Repositories\Eloquent\UserRepository;
use Illuminate\Support\ServiceProvider;

class RepositoryServiceProvider extends ServiceProvider
{
    /**
     * Register services.
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * Bootstrap services.
     *
     * @return void
     */
    public function boot()
    {
        $this->app->bind(
            ActivityLogRepositoryInterface::class,
            ActivityLogRepository::class
        );
        $this->app->bind(
            AiReviewRepositoryInterface::class,
            AiReviewRepository::class
        );
        $this->app->bind(
            ApplicationRepositoryInterface::class,
            ApplicationRepository::class
        );
        $this->app->bind(
            AuditTrailRepositoryInterface::class,
            AuditTrailRepository::class
        );
        $this->app->bind(
            CertificationRepositoryInterface::class,
            CertificationRepository::class
        );
        $this->app->bind(
            CourseRepositoryInterface::class,
            CourseRepository::class
        );
        $this->app->bind(
            CourseEnrollmentRepositoryInterface::class,
            CourseEnrollmentRepository::class
        );
        $this->app->bind(
            DocumentRepositoryInterface::class,
            DocumentRepository::class
        );
        $this->app->bind(
            InvoiceRepositoryInterface::class,
            InvoiceRepository::class
        );
        $this->app->bind(
            JobPostRepositoryInterface::class,
            JobPostRepository::class
        );
        $this->app->bind(
            LearnerProfileRepositoryInterface::class,
            LearnerProfileRepository::class
        );
        $this->app->bind(
            MeetingRepositoryInterface::class,
            MeetingRepository::class
        );
        $this->app->bind(
            MessageRepositoryInterface::class,
            MessageRepository::class
        );
        $this->app->bind(
            MilestoneRepositoryInterface::class,
            MilestoneRepository::class
        );
        $this->app->bind(
            ProposalRepositoryInterface::class,
            ProposalRepository::class
        );
        $this->app->bind(
            ProjectRepositoryInterface::class,
            ProjectRepository::class
        );
        $this->app->bind(
            RatingRepositoryInterface::class,
            RatingRepository::class
        );
        $this->app->bind(
            RecruiterProfileRepositoryInterface::class,
            RecruiterProfileRepository::class
        );

        $this->app->bind(
            ReportRepositoryInterface::class,
            ReportRepository::class
        );
        $this->app->bind(
            ResearchDocumentRepositoryInterface::class,
            ResearchDocumentRepository::class
        );
        $this->app->bind(
            ResearcherProfileRepositoryInterface::class,
            ResearcherProfileRepository::class
        );

        $this->app->bind(
            RoleRepositoryInterface::class,
            RoleRepository::class
        );
        $this->app->bind(
            SettingRepositoryInterface::class,
            SettingRepository::class
        );
        $this->app->bind(
            StudentProfileRepositoryInterface::class,
            StudentProfileRepository::class
        );
        $this->app->bind(
            TransactionRepositoryInterface::class,
            TransactionRepository::class
        );

        $this->app->bind(
            UserRepositoryInterface::class,
            UserRepository::class
        );
    }
}
