<?php

use Illuminate\Database\Seeder;

class PermissionsSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $this->seedAlbumPermissions();
        $this->seedAdminPermissions();
    }

    private function seedAdminPermissions()
    {
        // admin:access = controls if the admin panel is accessible
        DatabaseSeeder::createOrUpdate('permissions', [
            'section' => 'admin',
            'description' => 'access',
            'is_default' => false,
            'sort_order' => 0
        ]);

        // admin:configure = controls if the system is configurable
        DatabaseSeeder::createOrUpdate('permissions', [
            'section' => 'admin',
            'description' => 'configure',
            'is_default' => false,
            'sort_order' => 0
        ]);

        // admin:manage-albums = controls if albums can be managed
        DatabaseSeeder::createOrUpdate('permissions', [
            'section' => 'admin',
            'description' => 'manage-albums',
            'is_default' => false,
            'sort_order' => 0
        ]);

        // admin:manage-groups = controls if groups can be managed
        DatabaseSeeder::createOrUpdate('permissions', [
            'section' => 'admin',
            'description' => 'manage-groups',
            'is_default' => false,
            'sort_order' => 0
        ]);

        // admin:manage-storage = controls if storages can be managed
        DatabaseSeeder::createOrUpdate('permissions', [
            'section' => 'admin',
            'description' => 'manage-storage',
            'is_default' => false,
            'sort_order' => 0
        ]);

        // admin:manage-users = controls if users can be managed
        DatabaseSeeder::createOrUpdate('permissions', [
            'section' => 'admin',
            'description' => 'manage-users',
            'is_default' => false,
            'sort_order' => 0
        ]);

        // admin:manage-labels = controls if photo labels can be managed
        DatabaseSeeder::createOrUpdate('permissions', [
            'section' => 'admin',
            'description' => 'manage-labels',
            'is_default' => false,
            'sort_order' => 0
        ]);

        // admin:manage-comments = controls if photo comments can be managed
        DatabaseSeeder::createOrUpdate('permissions', [
            'section' => 'admin',
            'description' => 'manage-comments',
            'is_default' => false,
            'sort_order' => 0
        ]);
    }

    private function seedAlbumPermissions()
    {
        // album:list = controls if the album is visible in listings
        DatabaseSeeder::createOrUpdate('permissions', [
            'section' => 'album',
            'description' => 'list',
            'is_default' => true,
            'sort_order' => 0
        ]);

        // album:view = controls if the album can be viewed
        DatabaseSeeder::createOrUpdate('permissions', [
            'section' => 'album',
            'description' => 'view',
            'is_default' => true,
            'sort_order' => 20
        ]);

        // album:edit = controls if the album can be edited in the admin panel
        DatabaseSeeder::createOrUpdate('permissions', [
            'section' => 'album',
            'description' => 'edit',
            'is_default' => false,
            'sort_order' => 10
        ]);

        // album:delete = controls if the album can be deleted from the admin panel
        DatabaseSeeder::createOrUpdate('permissions', [
            'section' => 'album',
            'description' => 'delete',
            'is_default' => false,
            'sort_order' => 20
        ]);

        // album:upload-photos = controls if photos can be uploaded into the album
        DatabaseSeeder::createOrUpdate('permissions', [
            'section' => 'album',
            'description' => 'upload-photos',
            'is_default' => false,
            'sort_order' => 30
        ]);

        // album:edit-own-photos = controls if existing photos, owned by the current user, in the album can be edited
        DatabaseSeeder::createOrUpdate('permissions', [
            'section' => 'album',
            'description' => 'manipulate-photos',
            'is_default' => false,
            'sort_order' => 40
        ]);

        // album:edit-other-photos = controls if existing photos, owned by other users, in the album can be edited
        DatabaseSeeder::createOrUpdate('permissions', [
            'section' => 'album',
            'description' => 'change-photo-metadata',
            'is_default' => false,
            'sort_order' => 50
        ]);

        // album:delete-own-photos = controls if existing photos, owned by the current user, in the album can be deleted
        DatabaseSeeder::createOrUpdate('permissions', [
            'section' => 'album',
            'description' => 'delete-photos',
            'is_default' => false,
            'sort_order' => 60
        ]);

        // album:moderate-comments = moderate comments posted on photos
        DatabaseSeeder::createOrUpdate('permissions', [
            'section' => 'album',
            'description' => 'moderate-comments',
            'is_default' => false,
            'sort_order' => 70
        ]);

        // album:moderate-comments = moderate comments posted on photos
        DatabaseSeeder::createOrUpdate('permissions', [
            'section' => 'album',
            'description' => 'post-comment',
            'is_default' => false,
            'sort_order' => 80
        ]);
    }
}
