<?php

namespace App\Providers;
use App\Models\AcademicYear;
use App\Models\Announcement;
use App\Models\Division;
use App\Models\Level;
use App\Models\Parents;
use App\Models\Role;
use App\Models\Semester;
use App\Models\SemesterExam;
use App\Models\Settings;
use App\Models\Stage;
use App\Models\Student;
use App\Models\StudentNote;
use App\Models\StudyMaterial;
use App\Models\Transportation;
use App\Models\User; 
use App\Models\StudentFinancialRecord;
use App\Models\WeeklyProgram;
use App\Models\Worksheet;
use App\Policies\AcademicYearPolicy;
use App\Policies\AnnouncementsPolicy;
use App\Policies\DivisionPolicy;
use App\Policies\ExamPolicy;
use App\Policies\StudentFinancialRecordPolicy;
use App\Policies\LevelPolicy;
use App\Policies\ParentsPolicy;
use App\Policies\RolePolicy;
use App\Policies\SemesterPolicy;
use App\Policies\SettingsPolicy;
use App\Policies\StagePolicy;
use App\Policies\StudentNotesPolicy;
use App\Policies\StudentsPolicy;
use App\Policies\StudyMaterialPolicy;
use App\Policies\TransportationsPolicy;
use App\Policies\UserPolicy;
use App\Policies\WeeklyProgramsPolicy;
use App\Policies\WorksheetsPolicy;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Gate;

class AuthServiceProvider extends ServiceProvider
{
    /**
     * The policy mappings for the application.
     *
     * @var array
     */
    protected $policies = [
        // 'App\Models\Model' => 'App\Policies\ModelPolicy',
        User::class => UserPolicy::class,
        Role::class => RolePolicy::class,
        Division::class => DivisionPolicy::class,
        Level::class => LevelPolicy::class,
        Semester::class => SemesterPolicy::class,
        Stage::class => StagePolicy::class,
        AcademicYear::class => AcademicYearPolicy::class,
        StudyMaterial::class => StudyMaterialPolicy::class,
        Parents::class => ParentsPolicy::class,
        StudentFinancialRecord::class =>StudentFinancialRecordPolicy::class,
        Worksheet::class => WorksheetsPolicy::class,
        WeeklyProgram::class => WeeklyProgramsPolicy::class,
        Student::class => StudentsPolicy::class,
        SemesterExam::class => ExamPolicy::class,
        Settings::class => SettingsPolicy::class,
        StudentNote::class => StudentNotesPolicy::class,
        Announcement::class => AnnouncementsPolicy::class,
        Transportation::class => TransportationsPolicy::class,
    ];

    /**
     * Register any authentication / authorization services.
     *
     * @return void
     */
    public function boot()
    {
        $this->registerPolicies();

        //
    }
}
