Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/medad.corals.io/Corals/modules/Medad/database/seeds/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/medad.corals.io/Corals/modules/Medad/database/seeds/MedadPermissionsDatabaseSeeder.php
<?php

namespace Corals\Modules\Medad\database\seeds;

use Corals\User\Models\Permission;
use Corals\User\Models\Role;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;
use Spatie\Permission\PermissionRegistrar;

class MedadPermissionsDatabaseSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $permissions = [];

        $permissions[] = [
            'name' => 'Administrations::admin.medad',
        ];

        $models = [
            'company',
            'company_relation',
            'delivery_note',
            'purchase_order',
            'quotation',
            'quotation_request',
            'project',
            'branch',
            'invoice',
            'transaction',
            'vehicle',
            'vehicleService',
            'vehicleDriver',
        ];

        $levels = ['view', 'create', 'update', 'delete'];

        foreach ($models as $model) {
            foreach ($levels as $level) {
                $permissions[] = [
                    'name' => 'Medad::' . $model . '.' . $level,
                ];
            }
        }
        $permissions [] = ['name' => 'Medad::transaction.mark_as_received'];
        $permissions [] = ['name' => 'Medad::invoice.mark_as_received'];
        $permissions [] = ['name' => 'Medad::delivery_note.update_driver'];

        $permissions = array_map(function ($item) {
            return array_merge($item, [
                'guard_name' => config('auth.defaults.guard'),
                'created_at' => now(),
                'updated_at' => now(),
            ]);
        }, $permissions);

        DB::table('permissions')->insert($permissions);

        app(PermissionRegistrar::class)->forgetCachedPermissions();

        $roles = [
            'Company Admin' => [
                'redirect_url' => url('medad/my-company')
            ],
            'Project Manager' => [
                'redirect_url' => url('medad/my-branch')
            ],
            'Company Member' => [
                'redirect_url' => url('medad/my-branch')
            ],
            'Driver' => [
                'redirect_url' => url('medad/my-branch')
            ],
            'Admin' => [
                'redirect_url' => url('medad/my-branch')
            ],
            'Finance' => [
                'redirect_url' => url('medad/my-branch')
            ],
//            'Salesman',
//            'Buyer',
//            'Receiver'
        ];

        foreach ($roles as $role => $details) {
            Role::create(array_merge([
                'name' => 'medad_' . Str::slug($role, '_'),
                'label' => $role,
                'guard_name' => config('auth.defaults.guard'),
            ], $details));
        }

        $admin_role = Role::findByName('medad_company_admin');
        $driver_role = Role::findByName('medad_driver');
        $admin = Role::findByName('medad_admin');

        $utilityPermissionsList = Permission::where('name', 'like', 'Utility%')
            ->whereIn('name', [
                'Utility::comment.create',
            ])->get();

        $medadPermissionsList = Permission::where('name', 'like', 'Medad%')
            ->whereNotIn('name', [
                'Medad::company.create',
                'Medad::company.delete',
            ])->get();

        $medadPermissionsAdmin = Permission::where('name', 'like', 'Medad%')
            ->whereNotIn('name', [
                'Medad::company.create',
                'Medad::company.delete',
                'Medad::branch.create',
                'Medad::branch.delete',
            ])->get();

        $medadPermissionsView = Permission::where('name', 'like', 'Medad%')
            ->whereIn('name', [
                'Medad::company.view',
                'Medad::company_relation.view',
                'Medad::delivery_note.view',
                'Medad::purchase_order.view',
                'Medad::quotation.view',
                'Medad::quotation_request.view',
                'Medad::project.view',
                'Medad::branch.view',
                'Medad::invoice.view',
                'Medad::transaction.view',
                'Medad::vehicle.view',
                'Medad::vehicleService.view',
                'Medad::vehicleDriver.view',
            ])->get();

        $medadPermissionsOfMember = Permission::where('name', 'like', 'Medad%')
            ->whereIn('name', [
                'Medad::delivery_note.create',
                'Medad::purchase_order.create',
                'Medad::quotation.create',
                'Medad::invoice.create',
                'Medad::delivery_note.update',
                'Medad::purchase_order.update',
                'Medad::quotation.update',
                'Medad::invoice.update',
            ])->get();

        $medadPermissionsOfManager = Permission::where('name', 'like', 'Medad%')
            ->whereIn('name', [
                'Medad::project.create',
                'Medad::project.update',
                'Medad::project.delete',
                'Medad::purchase_order.create',
                'Medad::quotation_request.create',
                'Medad::transaction.create',
                'Medad::transaction.update',
                'Medad::transaction.mark_as_received',
                'Medad::invoice.mark_as_received',
                'Medad::delivery_note.update_driver',
            ])->get();

        $medadPermissionsOfFinance = Permission::where('name', 'like', 'Medad%')
            ->whereIn('name', [
                'Medad::invoice.create',
                'Medad::invoice.update',
                'Medad::transaction.create',
                'Medad::transaction.update',
                'Medad::transaction.mark_as_received',
                'Medad::invoice.mark_as_received',
            ])->get();

        $medadPermissionsDriver = Permission::where('name', 'like', 'Medad%')
            ->whereIn('name', [
                'Medad::delivery_note.update_driver',
            ])->get();


        $roles = Role::where('name', 'like', 'medad%')->get();
        foreach ($roles as $role) {
            $role->givePermissionTo($utilityPermissionsList);
        }

        $admin_role->givePermissionTo($medadPermissionsList);
        $driver_role->givePermissionTo($medadPermissionsView);
//        $driver_role->givePermissionTo($medadPermissionsDriver);

        $member_role = Role::findByName('medad_company_member');
        $member_role->givePermissionTo($medadPermissionsView);
        $member_role->givePermissionTo($medadPermissionsOfMember);

        $manager_role = Role::findByName('medad_project_manager');
        $manager_role->givePermissionTo($medadPermissionsView);
        $manager_role->givePermissionTo($medadPermissionsOfManager);

        $finance_role = Role::findByName('medad_finance');
        $finance_role->givePermissionTo($medadPermissionsView);
        $finance_role->givePermissionTo($medadPermissionsOfFinance);

        $admin->givePermissionTo($medadPermissionsView);
        $admin->givePermissionTo($medadPermissionsAdmin);

        $userPermissionsList = Permission::where('name', 'like', 'User::user%')->get();
        $admin_role->givePermissionTo($userPermissionsList);

        try {
            Role::findByName('member')->delete();
        } catch (\Exception $exception) {
        }
    }
}

Spamworldpro Mini