Your IP : 216.73.217.77


Current Path : /home/users/unlimited/www/egrocer.codeskitter.site/database/seeders/
Upload File :
Current File : /home/users/unlimited/www/egrocer.codeskitter.site/database/seeders/PermissionSeeder.php

<?php
namespace Database\Seeders;
use App\Models\Role;
use Illuminate\Database\Seeder;
use Spatie\Permission\Models\Permission;

class PermissionSeeder extends Seeder
{
    public function run()
    {
        \Artisan::call('cache:forget spatie.permission.cache');
        \DB::statement('SET FOREIGN_KEY_CHECKS=0;');
        \App\Models\Permission::truncate();
        \DB::statement('SET FOREIGN_KEY_CHECKS=1;');

        /*Role Wise Permissions*/

        /*Super Admin and Admin*/
        $permissionsToSeed = [ 
            [
                'name' => ['manage_dashboard'],
                'category_name' => 'dashboard',
                'default_roles' => ['Super Admin','Admin']
            ],

            /*Orders*/
            [
                'name' => ['order_list','order_update','order_delete'],
                'category_name' => 'order',
                'default_roles' => ['Super Admin','Admin']
            ],

            /*Categories*/
            [
                'name' => ['category_list','category_create','category_update','category_delete',
                    'manage_categories_order'],
                'category_name' => 'category',
                'default_roles' => ['Super Admin','Admin']
            ],

            /*Products*/
            [
                'name' => ['product_list','product_create','product_update','product_delete',
                    'manage_media','manage_product_bulk_upload','manage_product_order'],
                'category_name' => 'product',
                'default_roles' => ['Super Admin','Admin']
            ],

            /*Sellers*/
            [
                'name' => ['seller_list','seller_create','seller_update','seller_delete'],
                'category_name' => 'seller',
                'default_roles' => ['Super Admin','Admin']
            ],

            /*home_slider_image*/
            [
                'name' => ['home_slider_image_list','home_slider_image_create','home_slider_image_update','home_slider_image_delete'],
                'category_name' => 'home_slider_image',
                'default_roles' => ['Super Admin','Admin']
            ],

            /*new_offer_image_list*/
            [
                'name' => ['new_offer_image_list','new_offer_image_create','new_offer_image_update','new_offer_image_delete'],
                'category_name' => 'new_offer_image',
                'default_roles' => ['Super Admin','Admin']
            ],

            /*promo_code*/
            [
                'name' => ['promo_code_list','promo_code_create','promo_code_update','promo_code_delete'],
                'category_name' => 'promo_code',
                'default_roles' => ['Super Admin','Admin']
            ],

            /*return_request*/
            [
                'name' => ['return_request_list','return_request_update','return_request_delete'],
                'category_name' => 'return_request',
                'default_roles' => ['Super Admin','Admin']
            ],

            /*withdrawal_request*/
            [
                'name' => ['withdrawal_request_list','withdrawal_request_update','withdrawal_request_delete'],
                'category_name' => 'withdrawal_request',
                'default_roles' => ['Super Admin','Admin']
            ],

            /*delivery_boy*/
            [
                'name' => ['delivery_boy_list','delivery_boy_create','delivery_boy_update','delivery_boy_delete',
                    'fund_transfers_list','fund_transfers_create','cash_collection_list','cash_collection_create'],
                'category_name' => 'delivery_boy',
                'default_roles' => ['Super Admin','Admin']
            ],

            /*send_notification*/
            [
                'name' => ['notification_list','notification_create','notification_delete'],
                'category_name' => 'send_notification',
                'default_roles' => ['Super Admin','Admin']
            ],

            /*system*/
            [
                'name' => [
                    'manage_time_slots','time_slot_create','time_slot_update','time_slot_delete',
                    'manage_store_settings',
                    'manage_units','unit_create','unit_update',
                    'manage_payment_methods',
                    'manage_Notification_settings','manage_contact_us',
                    'manage_about_us', 'manage_privacy_policy',
                    'manage_privacy_policy_delivery_boy','manage_privacy_policy_manager_app',
                    'manage_privacy_policy_seller_app','manage_secret_key','manage_shipping_methods','manage_system_registration'],
                'category_name' => 'system',
                'default_roles' => ['Super Admin','Admin']
            ],

            /*web_settings*/
            [
                'name' => ['general_settings','manage_social_media_list','manage_social_media_create',
                    'manage_social_media_delete','manage_social_media_update',
                    'manage_about','manage_policies'],
                'category_name' => 'web_settings',
                'default_roles' => ['Super Admin','Admin']
            ],


            /*location*/
            [
                'name' => ['city_list','city_create','city_update','city_delete',
                    'manage_deliverable_area'],
                'category_name' => 'location',
                'default_roles' => ['Super Admin','Admin']
            ],

            /*featured_section*/
            [
                'name' => ['featured_section_list',
                    'featured_section_create','featured_section_update','featured_section_delete'
                ],
                'category_name' => 'featured_section',
                'default_roles' => ['Super Admin','Admin']
            ],

            /*customer*/
            [
                'name' => ['customer_list','customer_update','customer_delete','manage_wishlists',
                    'transaction_list','manage_customer_wallet'],
                'category_name' => 'customer',
                'default_roles' => ['Super Admin','Admin']
            ],

            /*report*/
            [
                'name' => ['product_sales_reports','sales_reports'],
                'category_name' => 'report',
                'default_roles' => ['Super Admin','Admin']
            ],

            /*faq*/
            [
                'name' => ['faq_list','faq_create','faq_update'],
                'category_name' => 'faq',
                'default_roles' => ['Super Admin','Admin']
            ],
        ];
        foreach ($permissionsToSeed as $record) {

            foreach ($record['name'] as $permissionName) {

                \App\Models\Permission::create([
                    'name' => $permissionName,
                    'category_id' => \App\Models\PermissionCategory::where('name', $record['category_name'])->first()->id,
                ]);
            }

            foreach ($record['default_roles'] as $roleName) {
                $adminRole = \Spatie\Permission\Models\Role::where('name', $roleName)->first();
                $adminRole->givePermissionTo($record['name']);
            }
        }

/**********************************************************************************************/

        /*Seller*/
        $permissionsToSeed = [
            [
                'name' => ['manage_dashboard'],
                'category_name' => 'dashboard',
                'default_roles' => ['Seller']
            ],

            /*Orders*/
            [
                'name' => ['order_list','order_update','order_delete'],
                'category_name' => 'order',
                'default_roles' => ['Seller']
            ],

            /*Categories*/
            [
                'name' => ['category_list'],
                'category_name' => 'category',
                'default_roles' => ['Seller']
            ],

            /*Products*/
            [
                'name' => ['product_list','product_create','product_update','product_delete',
                    'manage_media','manage_product_bulk_upload'],
                'category_name' => 'product',
                'default_roles' => ['Super Admin','Admin','Seller']
            ],

            /*return_request*/
            [
                'name' => ['return_request_list','return_request_update','return_request_delete'],
                'category_name' => 'return_request',
                'default_roles' => ['Seller']
            ],

            /*report*/
            [
                'name' => ['product_sales_reports','sales_reports'],
                'category_name' => 'report',
                'default_roles' => ['Seller']
            ],
        ];
        foreach ($permissionsToSeed as $record) {

            /*foreach ($record['name'] as $permissionName) {

                \App\Models\Permission::create([
                    'name' => $permissionName,
                    'category_id' => \App\Models\PermissionCategory::where('name', $record['category_name'])->first()->id,
                ]);
            }*/

            foreach ($record['default_roles'] as $roleName) {
                $adminRole = \Spatie\Permission\Models\Role::where('name', $roleName)->first();
                $adminRole->givePermissionTo($record['name']);
            }
        }

/**********************************************************************************************/

        /*Delivery Boy*/
        $permissionsToSeed = [
            [
                'name' => ['manage_dashboard'],
                'category_name' => 'dashboard',
                'default_roles' => [Role::$roleNameDeliveryBoy]
            ],

            /*Orders*/
            [
                'name' => ['order_list','order_update','order_delete'],
                'category_name' => 'order',
                'default_roles' => [Role::$roleNameDeliveryBoy]
            ],

            /*report*/
            [
                'name' => ['product_sales_reports','sales_reports'],
                'category_name' => 'report',
                'default_roles' => [Role::$roleNameDeliveryBoy]
            ],
        ];
        foreach ($permissionsToSeed as $record) {
            foreach ($record['default_roles'] as $roleName) {
                $adminRole = \Spatie\Permission\Models\Role::where('name', $roleName)->first();
                $adminRole->givePermissionTo($record['name']);
            }
        }

    }
}