소스 검색

Merge branch 'refs/heads/feat-282-id' into dev

kely 5 달 전
부모
커밋
eb04d615a1

+ 1 - 1
app/Http/Controllers/API/ApprovalFlowController.php

@@ -18,7 +18,7 @@ class ApprovalFlowController extends Controller
     {
         $pageSize=$request->get('page_size') ?? 10;
         $approvalFlows = ApprovalFlow::query()->with(['createdBy'])->orderByDesc("id")->paginate($pageSize);
-        make_display_id($approvalFlows,$pageSize);
+
         return ApprovalFlowResource::collection($approvalFlows);
     }
 

+ 0 - 2
app/Http/Controllers/API/AssetController.php

@@ -42,7 +42,6 @@ class AssetController extends Controller
         });
 
         $resultAssetsTree=make_tree($resultAssets->toArray());
-        make_tree_display_id($resultAssetsTree, 0);
         return $this->success([
             'data' => $resultAssetsTree
         ]);
@@ -65,7 +64,6 @@ class AssetController extends Controller
 
         $resultAssets = Asset::whereIn('id', $fullAsset)->orderByDesc('created_at')->get();
         $resultAssetsTree=make_tree($resultAssets->toArray());
-        make_tree_display_id($resultAssetsTree, 0);
         return $this->success([
             'data' => $resultAssetsTree
         ]);

+ 0 - 1
app/Http/Controllers/API/AssetGroupController.php

@@ -20,7 +20,6 @@ class AssetGroupController extends Controller
         $pageSize=$request->get('page_size') ?? 10;
         $groups = AssetGroup::filter($request->all())->orderByDesc("sequence")->paginate($pageSize);
 
-        make_display_id($groups,$pageSize);
         return AssetGroupResource::collection($groups);
     }
 

+ 0 - 3
app/Http/Controllers/API/DepartmentController.php

@@ -30,10 +30,7 @@ class DepartmentController extends Controller
         $departments = Department::filter($request->all())->orderBy('created_at', $sort)->paginate($pageSize);
         $departmentTree = !empty(make_tree($departments->toArray()['data'])) ? make_tree($departments->toArray()['data']) : $departments->toArray()['data'];
 
-        $page = $departments->currentPage();
 
-        $newId = ($page - 1) * $pageSize+1;
-        make_tree_display_id($departmentTree,$newId,$newId);
         return [
             'data' => $departmentTree,
             'total' => $departments->total(),

+ 9 - 2
app/Http/Controllers/API/NameRuleController.php

@@ -28,8 +28,15 @@ class NameRuleController extends Controller
     public function index(Request $request)
     {
         $pageSize=$request->get('page_size') ?? 10;
-        $namingRules = NamingRule::allowed()->with(['company'])->filter($request->all())->paginate($pageSize);
-        make_display_id($namingRules,$pageSize);
+        $sort=$request->input('sort','desc');
+        $namingRules = NamingRule::allowed()->with(['company'])->filter($request->all())->orderBy('created_at',$sort)->paginate($pageSize);
+        if(Auth::user()->super_admin){
+            $namingRules->transform(function (NamingRule $namingRules) {
+                $namingRules->display_id = $namingRules->id;
+                return $namingRules;
+            });
+            return NamingRuleResource::collection($namingRules);
+        }
         return NamingRuleResource::collection($namingRules);
     }
 

+ 2 - 2
app/Http/Controllers/API/PlanController.php

@@ -37,7 +37,7 @@ class PlanController extends Controller
         });
 
         $planTree=!empty(make_tree($planTree->toArray()))?make_tree($planTree->toArray()):$planTree->toArray();
-        make_tree_display_id($planTree,$newId,$newId);
+
         return $this->success([
             'data' => $planTree,
             'total'=>$plan->total()
@@ -80,7 +80,7 @@ class PlanController extends Controller
         }
 
         $plans = Plan::query()->allowed()->with(['asset'])->whereIn("asset_id", $assets->toArray())->orderBy('created_at',$sort)->paginate($pageSize);;
-        make_display_id($plans,$pageSize);
+
         return PlanByAssetResource::collection($plans);
     }
 

+ 1 - 1
app/Http/Controllers/API/ProjectController.php

@@ -81,7 +81,7 @@ class ProjectController extends Controller
         $pageSize=$request->get('page_size') ?? 10;
         $sort=$request->input('sort','desc');
         $projects=Project::filter($request->all())->allowed()->orderBy('created_at',$sort)->with('assets')->paginate($pageSize);
-        make_display_id($projects,$pageSize);
+
         return $projects;
     }
 

+ 1 - 2
app/Http/Controllers/API/RequirementController.php

@@ -47,7 +47,6 @@ class RequirementController extends Controller
             ->with(['createdBy', 'plan','group','asset.parent','projects'])
             ->paginate($pageSize);
 
-        make_display_id($requirements,$pageSize);
         return AssetRequirementResource::collection($requirements);
     }
 
@@ -61,7 +60,7 @@ class RequirementController extends Controller
             ->where('company_id',Auth::user()->company_id)
             ->orderByDesc('created_at')
             ->paginate($pageSize);
-        make_display_id($requirements,$pageSize);
+
         return RequirementSimpleResource::collection($requirements);
     }
 

+ 0 - 1
app/Http/Controllers/API/RequirementGroupController.php

@@ -20,7 +20,6 @@ class RequirementGroupController extends Controller
         $pageSize=$request->get('page_size') ?? 10;
         $groups = RequirementGroup::filter($request->all())->where("parent_id",0)->with(['children','asset'])->paginate($pageSize);
 
-        make_display_id($groups,$pageSize);
         return RequirementGroupResource::collection($groups);
     }
 

+ 5 - 1
app/Http/Controllers/API/RoleController.php

@@ -9,6 +9,7 @@ use App\Http\Resources\API\RoleResource;
 use App\Http\Resources\API\RoleSimpleResource;
 use App\Models\Menu;
 use App\Models\Role;
+use App\Models\User;
 use Illuminate\Http\Request;
 
 class RoleController extends Controller
@@ -19,7 +20,10 @@ class RoleController extends Controller
     public function index(Request $request)
     {
         $roles = Role::query()->filter($request->all())->get();
-
+        $roles->transform(function (Role $role) {
+            $role->display_id = $role->id;
+            return $role;
+        });
         return RoleResource::collection($roles);
     }
 

+ 1 - 1
app/Http/Controllers/API/TaskController.php

@@ -62,7 +62,7 @@ class TaskController extends Controller
             ->allowed()
             ->orderBy('created_at',$sort)
             ->paginate($pageSize);
-        make_display_id($tasks,$pageSize);
+
         return $tasks;
     }
 

+ 16 - 21
app/Http/Controllers/API/UserController.php

@@ -15,6 +15,7 @@ use App\Models\Enums\RequirementStatus;
 use App\Models\Menu;
 use App\Models\Permission;
 use App\Models\Role;
+use App\Models\Scopes\CompanyScope;
 use App\Models\User;
 use Illuminate\Contracts\Encryption\DecryptException;
 use Illuminate\Http\Request;
@@ -75,27 +76,27 @@ class UserController extends Controller
     public function index(Request $request){
         $pageSize=$request->get('page_size') ?? 10;
         $sort=$request->input('sort','desc');
-        //超管能看到所有用户
+
+        $users = User::query()->allowed()->with(['department'])->filter($request->all())->orderBy('created_at',$sort)->paginate($pageSize);
+
         if(Auth::user()->super_admin){
-            $user = User::query()->filter($request->all())->with(['department'])->orderBy('created_at',$sort)->paginate($pageSize);
-            make_display_id($user,$pageSize);
-            return UserSimpleResource::collection($user);
+            $users->transform(function (User $user) {
+                $user->display_id = $user->id;
+                return $user;
+            });
+            return UserSimpleResource::collection($users);
         }
-        //普通管理员能看到自己公司的用户
-        $user=User::query()
-            ->where('company_id',Auth::user()->company_id)
-            ->filter($request->all())->with(['department'])->orderBy('created_at',$sort)->paginate($pageSize);
-        make_display_id($user,$pageSize);
-        return UserSimpleResource::collection($user);
+        return UserSimpleResource::collection($users);
     }
 
     public function publicSearch(Request $request){
         $pageSize=$request->get('page_size') ?? 10;
         $sort=$request->input('sort','desc');
+        //这里公共查询如超级管理员在邮件抄送时会看到其他公司用户不合适
         $user=User::query()
             ->where('company_id',Auth::user()->company_id)
             ->filter($request->all())->orderBy('created_at',$sort)->paginate($pageSize);
-        make_display_id($user,$pageSize);
+
         return UserSimpleResource::collection($user);
     }
 
@@ -153,32 +154,26 @@ class UserController extends Controller
      * @return \Illuminate\Http\Response
      */
     public function status(Request $request,string $status){
-        //只能删除自己公司的;超管除外
-        if (Auth::user()->super_admin){
-            User::whereIn('id', $request->user_id)->update(['status' => $status]);
-        }
-        else{
-            User::whereIn('id', $request->user_id)->where('company_id',Auth::user()->company_id)->update(['status' => $status]);
-        }
+        User::query()->allowed()->whereIn('id', $request->user_id)->update(['status' => $status]);
         return $this->created();
     }
 
     public function destroy(string $id)
     {
-        $user = User::query()->findOrFail($id);
+        $user = User::query()->allowed()->findOrFail($id);
         $user->delete();
         return $this->noContent();
     }
 
     public function show(string $id)
     {
-        $user = User::query()->findOrFail($id);
+        $user = User::query()->allowed()->findOrFail($id);
         return new UserInfoResource($user);
     }
 
     public function update(UpdateRequest $request,string $id)
     {
-        $user = User::findOrFail($id);
+        $user = User::allowed()->findOrFail($id);
         $newPassword=null;
 
         // 如果用户是超级管理员或具有相应权限

+ 37 - 0
app/Http/Requests/IndexHelper.php

@@ -0,0 +1,37 @@
+<?php
+
+namespace App\Http\Requests;
+
+use App\Models\ApprovalFlow;
+use App\Models\Asset;
+use App\Models\AssetGroup;
+use App\Models\Department;
+use App\Models\Enums\DisplayIndexObjectType;
+use App\Models\NamingRule;
+use App\Models\Plan;
+use App\Models\Project;
+use App\Models\Requirement;
+use App\Models\RequirementGroup;
+use App\Models\Task;
+use App\Models\User;
+
+trait IndexHelper
+{
+    public static function getObjectMaxIndex(DisplayIndexObjectType $type,string $object_id=null):int{
+        $result= match ($type) {
+            DisplayIndexObjectType::ASSET => Asset::max('display_id'),
+            DisplayIndexObjectType::ASSETGROUP => AssetGroup::max('display_id'),
+            DisplayIndexObjectType::PLAN=>Plan::max('display_id'),
+            DisplayIndexObjectType::REQUIREMENTGROUP=>RequirementGroup::max('display_id'),
+            DisplayIndexObjectType::PROJECT => Project::max('display_id'),
+            DisplayIndexObjectType::REQUIREMENT=>Requirement::max('display_id'),
+            DisplayIndexObjectType::TASK=>Task::query()->where('project_id',$object_id)->max('display_id'),
+            DisplayIndexObjectType::DEPARTMENT=>Department::max('display_id'),
+            DisplayIndexObjectType::APPROVALFLOW=>ApprovalFlow::max('display_id'),
+            DisplayIndexObjectType::NAMERULE=>NamingRule::query()->where('company_id',$object_id)->max('display_id'),
+        };
+        return $result >0? $result+1 :1;
+    }
+
+
+}

+ 1 - 5
app/Http/Resources/API/RequirementGroupResource.php

@@ -26,11 +26,7 @@ class RequirementGroupResource extends JsonResource
             'display_id'=>$this->display_id,
             //'children' =>$this->parent_id == 0 ? RequirementGroupResource::collection($this->children) : [],
             'children' =>$this->when($this->children->isNotEmpty(),function (){
-                $index=1;
-                return $this->children->map(function ($child)use (&$index){
-                    //自增id
-                    $child->display_id=$this->display_id.'.'.$index;
-                    $index++;
+                return $this->children->map(function ($child){
                     return new RequirementGroupResource($child);
                 })->all();
             })

+ 1 - 3
app/Http/Resources/API/RoleResource.php

@@ -12,16 +12,14 @@ class RoleResource extends JsonResource
      *
      * @return array<string, mixed>
      */
-    private static $index = 1;
     public function toArray(Request $request): array
     {
-        $displayId = self::$index++;
         return [
             'id' => $this->id,
             'name' => $this->name,
             'description' => $this->description,
             'permissions' => PermissionResource::collection($this->permissions),
-            'display_id'=>(string)$displayId,
+            'display_id'=>$this->display_id,
         ];
     }
 }

+ 1 - 5
app/Http/Resources/API/TaskResource.php

@@ -27,11 +27,7 @@ class TaskResource extends JsonResource
             //"children" => TaskResource::collection($this->children),
             'display_id'=>$this->display_id,
             'children' => $this->when($this->children->isNotEmpty(),function (){
-                $index=1;
-                return $this->children->map(function ($child)use (&$index){
-                    //自增id
-                    $child->display_id=$this->display_id.'.'.$index;
-                    $index++;
+                return $this->children->map(function ($child){
                     return new TaskResource($child);
                 })->all();
             }),

+ 8 - 0
app/Models/ApprovalFlow.php

@@ -2,6 +2,8 @@
 
 namespace App\Models;
 
+use App\Http\Requests\IndexHelper;
+use App\Models\Enums\DisplayIndexObjectType;
 use App\Models\Scopes\CompanyScope;
 use Illuminate\Database\Eloquent\Factories\HasFactory;
 use Illuminate\Database\Eloquent\Model;
@@ -22,6 +24,12 @@ class ApprovalFlow extends Model
     protected static function booted(): void
     {
         static::addGlobalScope(new CompanyScope);
+
+        static::creating(function (ApprovalFlow $approvalFlow){
+            $type =DisplayIndexObjectType::APPROVALFLOW;
+            $displayIndex = IndexHelper::getObjectMaxIndex($type);
+            $approvalFlow->display_id =$displayIndex;
+        });
     }
 
     public function createdBy()

+ 9 - 1
app/Models/Asset.php

@@ -2,6 +2,7 @@
 
 namespace App\Models;
 
+use App\Http\Requests\IndexHelper;
 use App\Models\Enums\AssetACL;
 use App\Models\Scopes\CompanyScope;
 use EloquentFilter\Filterable;
@@ -10,13 +11,14 @@ use Illuminate\Database\Eloquent\Factories\HasFactory;
 use Illuminate\Database\Eloquent\Model;
 use Illuminate\Database\Eloquent\SoftDeletes;
 use Illuminate\Support\Facades\Auth;
+use App\Models\Enums\DisplayIndexObjectType;
 
 /**
  * @method static \Illuminate\Database\Eloquent\Builder allowed()
  */
 class Asset extends Model
 {
-    use HasFactory, Filterable,SoftDeletes;
+    use HasFactory, Filterable,SoftDeletes,IndexHelper;
 
     protected $fillable = [
         "name", "code", "description", "company_id", "status", "created_by",
@@ -33,6 +35,12 @@ class Asset extends Model
     protected static function booted(): void
     {
         static::addGlobalScope(new CompanyScope);
+
+        static::creating(function (Asset $asset){
+            $type =DisplayIndexObjectType::ASSET;
+            $displayIndex = IndexHelper::getObjectMaxIndex($type);
+            $asset->display_id =$displayIndex;
+        });
     }
 
     public function scopeAllowed(Builder $query): void

+ 8 - 0
app/Models/AssetGroup.php

@@ -2,6 +2,8 @@
 
 namespace App\Models;
 
+use App\Http\Requests\IndexHelper;
+use App\Models\Enums\DisplayIndexObjectType;
 use App\Models\Scopes\CompanyScope;
 use EloquentFilter\Filterable;
 use Illuminate\Database\Eloquent\Factories\HasFactory;
@@ -21,6 +23,12 @@ class AssetGroup extends Model
     protected static function booted(): void
     {
         static::addGlobalScope(new CompanyScope);
+
+        static::creating(function (AssetGroup $assetGroup){
+            $type =DisplayIndexObjectType::ASSETGROUP;
+            $displayIndex = IndexHelper::getObjectMaxIndex($type);
+            $assetGroup->display_id =$displayIndex;
+        });
     }
 
     public function Assets(){

+ 8 - 0
app/Models/Department.php

@@ -2,6 +2,8 @@
 
 namespace App\Models;
 
+use App\Http\Requests\IndexHelper;
+use App\Models\Enums\DisplayIndexObjectType;
 use App\Models\Scopes\CompanyScope;
 use EloquentFilter\Filterable;
 use Illuminate\Database\Eloquent\Factories\HasFactory;
@@ -26,6 +28,12 @@ class Department extends Model
         parent::booted(); // TODO: Change the autogenerated stub
 
         static::addGlobalScope(new CompanyScope);
+
+        static::creating(function (Department $department){
+            $type =DisplayIndexObjectType::DEPARTMENT;
+            $displayIndex = IndexHelper::getObjectMaxIndex($type);
+            $department->display_id =$displayIndex;
+        });
     }
 
     public function children()

+ 36 - 0
app/Models/Enums/DisplayIndexObjectType.php

@@ -0,0 +1,36 @@
+<?php
+
+namespace App\Models\Enums;
+
+use App\Models\Action;
+use App\Models\Asset;
+use App\Models\Company;
+use App\Models\Container;
+use App\Models\Plan;
+use App\Models\Project;
+use App\Models\Requirement;
+use App\Models\Task;
+
+enum DisplayIndexObjectType : string
+{
+    case ASSET = "asset";
+
+    case ASSETGROUP="assetGroup";
+
+    case PROJECT = "project";
+
+    case REQUIREMENT = "requirement";
+
+    case REQUIREMENTGROUP = "requirementGroup";
+
+    case TASK = "task";
+
+    case PLAN = "plan";
+
+    case DEPARTMENT = "department";
+
+    case APPROVALFLOW= "approvalFlow";
+
+    case NAMERULE="nameRule";
+
+}

+ 14 - 1
app/Models/NamingRule.php

@@ -2,6 +2,8 @@
 
 namespace App\Models;
 
+use App\Http\Requests\IndexHelper;
+use App\Models\Enums\DisplayIndexObjectType;
 use EloquentFilter\Filterable;
 use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Database\Eloquent\Factories\HasFactory;
@@ -12,7 +14,7 @@ class NamingRule extends Model
 {
     use HasFactory, Filterable;
 
-    public $timestamps = false;
+    public $timestamps = true;
 
     protected $guarded = [
         'id'
@@ -22,6 +24,17 @@ class NamingRule extends Model
         'combination_rules' => 'array'
     ];
 
+    protected static function booted()
+    {
+        parent::booted(); // TODO: Change the autogenerated stub
+
+        static::creating(function (NamingRule $namingRule){
+            $type =DisplayIndexObjectType::NAMERULE;
+            $displayIndex = IndexHelper::getObjectMaxIndex($type,$namingRule->company_id);
+            $namingRule->display_id =$displayIndex;
+        });
+    }
+
     public function scopeAllowed(Builder $query)
     {
         if (!Auth::user()->super_admin) {

+ 8 - 0
app/Models/Plan.php

@@ -2,6 +2,8 @@
 
 namespace App\Models;
 
+use App\Http\Requests\IndexHelper;
+use App\Models\Enums\DisplayIndexObjectType;
 use App\Models\Scopes\CompanyScope;
 use EloquentFilter\Filterable;
 use Illuminate\Database\Eloquent\Factories\HasFactory;
@@ -28,6 +30,12 @@ class Plan extends Model
     {
         parent::booted(); // TODO: Change the autogenerated stub
         static::addGlobalScope(new CompanyScope);
+
+        static::creating(function (Plan $plan){
+            $type =DisplayIndexObjectType::PLAN;
+            $displayIndex = IndexHelper::getObjectMaxIndex($type);
+            $plan->display_id =$displayIndex;
+        });
     }
 
     public function scopeAllowed(Builder $query) : void

+ 8 - 0
app/Models/Project.php

@@ -2,6 +2,8 @@
 
 namespace App\Models;
 
+use App\Http\Requests\IndexHelper;
+use App\Models\Enums\DisplayIndexObjectType;
 use App\Models\Enums\ProjectACL;
 use App\Models\Scopes\CompanyScope;
 use function DragonCode\Support\Instances\when;
@@ -23,6 +25,12 @@ class Project extends Model
     protected static function booted(): void
     {
         static::addGlobalScope(new CompanyScope);
+
+        static::creating(function (Project $project){
+            $type =DisplayIndexObjectType::PROJECT;
+            $displayIndex = IndexHelper::getObjectMaxIndex($type);
+            $project->display_id =$displayIndex;
+        });
     }
 
     /**

+ 8 - 0
app/Models/Requirement.php

@@ -2,6 +2,8 @@
 
 namespace App\Models;
 
+use App\Http\Requests\IndexHelper;
+use App\Models\Enums\DisplayIndexObjectType;
 use App\Models\Scopes\CompanyScope;
 use EloquentFilter\Filterable;
 use Illuminate\Database\Eloquent\Factories\HasFactory;
@@ -42,6 +44,12 @@ class Requirement extends Model
         parent::booted(); // TODO: Change the autogenerated stub
 
         static::addGlobalScope(new CompanyScope);
+
+        static::creating(function (Requirement $requirement){
+            $type =DisplayIndexObjectType::REQUIREMENT;
+            $displayIndex = IndexHelper::getObjectMaxIndex($type);
+            $requirement->display_id =$displayIndex;
+        });
     }
     public function scopeAllowed(Builder $query) : void
     {

+ 8 - 0
app/Models/RequirementGroup.php

@@ -2,6 +2,8 @@
 
 namespace App\Models;
 
+use App\Http\Requests\IndexHelper;
+use App\Models\Enums\DisplayIndexObjectType;
 use App\Models\Scopes\CompanyScope;
 use EloquentFilter\Filterable;
 use Illuminate\Database\Eloquent\Factories\HasFactory;
@@ -19,6 +21,12 @@ class RequirementGroup extends Model
     protected static function booted(): void
     {
         static::addGlobalScope(new CompanyScope);
+
+        static::creating(function (RequirementGroup $requirementGroup){
+            $type =DisplayIndexObjectType::REQUIREMENTGROUP;
+            $displayIndex = IndexHelper::getObjectMaxIndex($type);
+            $requirementGroup->display_id =$displayIndex;
+        });
     }
 
 

+ 10 - 0
app/Models/Task.php

@@ -2,6 +2,8 @@
 
 namespace App\Models;
 
+use App\Http\Requests\IndexHelper;
+use App\Models\Enums\DisplayIndexObjectType;
 use App\Models\Enums\TaskACL;
 use App\Models\Scopes\CompanyScope;
 use EloquentFilter\Filterable;
@@ -27,6 +29,14 @@ class Task extends Model
     protected static function booted(): void
     {
         static::addGlobalScope(new CompanyScope);
+
+        static::creating(function (Task $task){
+            $type =DisplayIndexObjectType::TASK;
+            $displayIndex = IndexHelper::getObjectMaxIndex($type,$task->project_id);
+            $task->display_id =$displayIndex;
+        });
+
+
     }
 
     /**

+ 29 - 1
app/Models/User.php

@@ -3,13 +3,14 @@
 namespace App\Models;
 
 // use Illuminate\Contracts\Auth\MustVerifyEmail;
-use App\Models\Scopes\CompanyScope;
 use EloquentFilter\Filterable;
+use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Database\Eloquent\Casts\Attribute;
 use Illuminate\Database\Eloquent\Factories\HasFactory;
 use Illuminate\Database\Eloquent\SoftDeletes;
 use Illuminate\Foundation\Auth\User as Authenticatable;
 use Illuminate\Notifications\Notifiable;
+use Illuminate\Support\Facades\Auth;
 use Laravel\Sanctum\HasApiTokens;
 use Spatie\Permission\Traits\HasRoles;
 
@@ -40,6 +41,26 @@ class User extends Authenticatable
         'fs_password',
     ];
 
+    //因为CompanyScope要拿到当前用户,但是user模型还没创建完无法使用CompanyScope
+    protected static function booted(): void
+    {
+        //创建用户
+        static::creating(function (User $user){
+            $result=User::query()->where('company_id',$user->company_id)->max('display_id');
+            $displayIndex=$result >0? $result+1 :1;
+            $user->display_id =$displayIndex;
+        });
+
+        //更改用户所属公司
+        static::updating(function (User $user){
+            if($user->isDirty('company_id')){
+                $result=User::query()->where('company_id',$user->company_id)->max('display_id');
+                $displayIndex=$result >0? $result+1 :1;
+                $user->display_id =$displayIndex;
+            }
+        });
+
+    }
     /**
      * The attributes that should be hidden for serialization.
      *
@@ -67,6 +88,13 @@ class User extends Authenticatable
         );
     }
 
+    public function scopeAllowed(Builder $query)
+    {
+        if (!Auth::user()->super_admin) {
+            $query->where("company_id", Auth::user()->company_id);
+        }
+    }
+
     public function guardName(): string
     {
         return $this->guard_name;

+ 1 - 1
app/helpers.php

@@ -140,7 +140,7 @@ if(!function_exists('make_display_id')){
 
         $newId = ($page - 1) * $pageSize + 1;
         foreach ($datas as $data) {
-            $data->display_id = (string)$newId++;
+            $data->display_id = $newId++;
         }
     }
 }

+ 130 - 0
database/migrations/2024_10_12_095445_add_display_id_in_table.php

@@ -0,0 +1,130 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     */
+    public function up(): void
+    {
+        Schema::table('assets', function (Blueprint $table) {
+            //
+            $table->integer('display_id')->default(1);
+        });
+
+        Schema::table('asset_groups', function (Blueprint $table) {
+            //
+            $table->integer('display_id')->default(1);
+        });
+
+        Schema::table('plans', function (Blueprint $table) {
+            //
+            $table->integer('display_id')->default(1);
+        });
+
+        Schema::table('requirement_groups', function (Blueprint $table) {
+            //
+            $table->integer('display_id')->default(1);
+        });
+
+        Schema::table('requirements', function (Blueprint $table) {
+            //
+            $table->integer('display_id')->default(1);
+        });
+
+        Schema::table('projects', function (Blueprint $table) {
+            //
+            $table->integer('display_id')->default(1);
+        });
+
+        Schema::table('tasks', function (Blueprint $table) {
+            //
+            $table->integer('display_id')->default(1);
+        });
+
+        Schema::table('users', function (Blueprint $table) {
+            //
+            $table->integer('display_id')->default(1);
+        });
+
+        Schema::table('department', function (Blueprint $table) {
+            //
+            $table->integer('display_id')->default(1);
+        });
+
+        Schema::table('approval_flows', function (Blueprint $table) {
+            //
+            $table->integer('display_id')->default(1);
+        });
+
+        Schema::table('naming_rules', function (Blueprint $table) {
+            //
+            $table->integer('display_id')->default(1);
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     */
+    public function down(): void
+    {
+        Schema::table('assets', function (Blueprint $table) {
+            //
+            $table->dropColumn("display_id");
+        });
+
+        Schema::table('asset_groups', function (Blueprint $table) {
+            //
+            $table->dropColumn("display_id");
+        });
+
+        Schema::table('plans', function (Blueprint $table) {
+            //
+            $table->dropColumn("display_id");
+        });
+
+        Schema::table('requirement_groups', function (Blueprint $table) {
+            //
+            $table->dropColumn("display_id");
+        });
+
+        Schema::table('requirements', function (Blueprint $table) {
+            //
+            $table->dropColumn("display_id");
+        });
+
+        Schema::table('projects', function (Blueprint $table) {
+            //
+            $table->dropColumn("display_id");
+        });
+
+        Schema::table('tasks', function (Blueprint $table) {
+            //
+            $table->dropColumn("display_id");
+        });
+
+        Schema::table('users', function (Blueprint $table) {
+            //
+            $table->dropColumn("display_id");
+        });
+
+        Schema::table('department', function (Blueprint $table) {
+            //
+            $table->dropColumn("display_id");
+        });
+
+        Schema::table('approval_flows', function (Blueprint $table) {
+            //
+            $table->dropColumn("display_id");
+        });
+
+        Schema::table('naming_rules', function (Blueprint $table) {
+            //
+            $table->dropColumn("display_id");
+        });
+    }
+};