<?php

namespace App\Providers;

use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Gate;
use App\Course;
use App\Batch;
use App\Subject;
use App\BatchWiseSubject;
use App\Faculty;
use App\Student;
use App\TeacherSubjectAllocation;
use App\TutorialType;
use App\Tutorial;
use App\MessageType;
use App\Message;
use App\Observers\CourseObserver;
use App\Observers\BatchObserver;
use App\Observers\SubjectObserver;
use App\Observers\BatchWiseSubjectObserver;
use App\Observers\FacultyObserver;
use App\Observers\TeacherSubjectAllocationObserver;
use App\Observers\StudentObserver;
use App\Observers\TutorialTypeObserver;
use App\Observers\TutorialObserver;
use App\Observers\MessageTypeObserver;
use App\Observers\MessageObserver;

class AuthServiceProvider extends ServiceProvider
{
    /**
     * The policy mappings for the application.
     *
     * @var array
     */
    protected $policies = [
        // 'App\Model' => 'App\Policies\ModelPolicy',
    ];

    /**
     * Register any authentication / authorization services.
     *
     * @return void
     */
    public function boot()
    {
        $this->registerPolicies();
        Course::observe(CourseObserver::class);
        Batch::observe(BatchObserver::class);
        Subject::observe(SubjectObserver::class);
        BatchWiseSubject::observe(BatchWiseSubjectObserver::class);
        Faculty::observe(FacultyObserver::class);
        Student::observe(StudentObserver::class);
        TeacherSubjectAllocation::observe(TeacherSubjectAllocationObserver::class);
        TutorialType::observe(TutorialTypeObserver::class);
        Tutorial::observe(TutorialObserver::class);
        MessageType::observe(MessageTypeObserver::class);
        Message::observe(MessageObserver::class);
        //
    }
}
