<?php namespace App\Repositories\Backend\Module; use App\Models\Module\Module; use App\Exceptions\GeneralException; use App\Repositories\BaseRepository; use App\Models\Access\Permission\Permission; /** * Class ModuleRepository. */ class ModuleRepository extends BaseRepository { /** * Associated Repository Model. */ const MODEL = Module::class; /** * @return mixed */ public function getForDataTable() { return $this->query() ->leftjoin(config('access.users_table'),config('access.users_table').'.id','=',config('module.table').'.created_by') ->select([ config('module.table').'.id', config('module.table').'.name', config('module.table').'.url', config('module.table').'.view_permission_id', config('module.table').'.created_by', config('module.table').'.updated_by', config('access.users_table').'.first_name as created_by', ]); } /** * @param array $input * * @throws GeneralException * * @return bool */ public function create(array $input) { $module = Module::where('name', $input['name'])->first(); if(!$module) { $name = $input['model_name']; $model = strtolower( $name ); $permissions = [ [ "name" => "view-$model-permission", "display_name" => "View ".ucwords($model)." Permission"], [ "name" => "create-$model-permission", "display_name" => "Create ".ucwords($model)." Permission"], [ "name" => "edit-$model-permission", "display_name" => "Edit ".ucwords($model)." Permission" ], [ "name" => "delete-$model-permission", "display_name" => "Delete ".ucwords($model)." Permission" ] ]; foreach($permissions as $permission) { //Creating Permission $per = Permission::firstOrCreate($permission); } $mod = [ 'view_permission_id' => "view-$model-permission", 'name' => $input['name'], 'url' => "admin." . str_plural( $model ) . ".index", 'created_by' => access()->user()->id ]; $create = Module::create($mod); return $create; } throw new GeneralException(trans('exceptions.backend.modules.create_error')); } /** * @param $module * @param $input * * @throws GeneralException * * @return bool */ public function update($module, array $input) { $module->name = $input['name']; $module->view_permission_id = $input['view_permission_id']; $module->url = $input['url']; $module->updated_by = access()->user()->id; if($module->update()) { return true; } throw new GeneralException( trans('exceptions.backend.modules.update_error') ); } }