/home/mip/mip/app/Modules/Client/Repositories/Settings/Roles/PermissionRepository.php
<?php

namespace QxCMS\Modules\Client\Repositories\Settings\Roles;

use QxCMS\Modules\AbstractRepository;
use QxCMS\Modules\Client\Repositories\Settings\Roles\RoleRepositoryInterface;
use QxCMS\Modules\Client\Models\Settings\Roles\Permission;

class PermissionRepository extends AbstractRepository implements PermissionRepositoryInterface
{
    protected $model;

    function __construct(Permission $model)
    {
        $this->model = $model;
    }

    public function getPermission($module_id)
    {
        return $this->model->where('menu_id', $module_id)->where('role_id', \Auth::guard('client')->user()->role_id)->first();
    }

    public function setRolePermission(array $module)
    {
        if(!empty($module)) {
            return $module = [
                'menu_id' => $module['menu_id'],
                'role_id' => $module['role_id'],
                'can_access' => (isset($module['can_access']) && !empty($module['can_access'])) ? $module['can_access']:0,
                'can_create' => (isset($module['can_create']) && !empty($module['can_create'])) ? $module['can_create']:0,
                'can_update' => (isset($module['can_update']) && !empty($module['can_update'])) ? $module['can_update']:0,
                'can_delete' => (isset($module['can_delete']) && !empty($module['can_delete'])) ? $module['can_delete']:0,
                'can_export' => (isset($module['can_export']) && !empty($module['can_export'])) ? $module['can_export']:0,
                'can_import' => (isset($module['can_import']) && !empty($module['can_upload'])) ? $module['can_import']:0,
                'can_print' => (isset($module['can_print']) && !empty($module['can_print'])) ? $module['can_print']:0,
            ];
        } 
        return [];
    }

    public function serializeModules($module)
    {
       return $modules = [
            'menu_id'    => $module->id,
            'can_access' => $module->show_menu,
            'can_create' => $module->has_create,
            'can_update' => $module->has_update,
            'can_delete' => $module->has_delete,
            'can_export' => $module->has_export,
            'can_import' => $module->has_import,
            'can_print'  => $module->has_print,
        ] ;
    }

    public function makeRolePermission($module, $id)
    {
        $modules = $this->serializeModules($module);
        $modules['role_id'] = $id;
        $this->model->create($this->setRolePermission($modules));
    }
}