Project.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. namespace App\Models;
  3. use Illuminate\Support\Facades\Auth;
  4. class Project extends BaseModel
  5. {
  6. public function getManager()
  7. {
  8. $role = ProjectRole::where('name', '经理')->first();
  9. if(!$role) return null;
  10. $res = ProjectUser::where([
  11. ['project_id', '=', $this['id']],
  12. ['project_role_id', '=', $role->id]
  13. ])->first();
  14. if($res) return User::find($res['user_id']);
  15. return false;
  16. }
  17. public function getUserProjectRole()
  18. {
  19. $user = Auth::guard('mini')->user();
  20. $project_user = ProjectUser::where([
  21. ['project_id', '=', $this['id']],
  22. ['user_id', '=', $user->id]
  23. ])->first();
  24. if($project_user) {
  25. return ProjectRole::find($project_user->project_role_id);
  26. }
  27. return null;
  28. }
  29. public function isTopLevel($user)
  30. {
  31. $current_role = ProjectUser::where([
  32. ['project_id', '=', $this['id']],
  33. ['user_id', '=', $user->id]
  34. ])->first();
  35. if(empty($current_role)) return false;
  36. $res = ProjectUser::where([
  37. ['project_id', '=', $this['id']],
  38. ['project_role_id', '>', $current_role['project_role_id']]
  39. ])->first();
  40. return $res ? false : true;
  41. }
  42. /**
  43. * @param User $user
  44. * @param $type: current/next
  45. * @return ProjectUser
  46. */
  47. public function getProjectUser(User $user, $type = 'current')
  48. {
  49. $current = ProjectUser::where([
  50. ['project_id', '=', $this['id']],
  51. ['user_id', '=', $user['id']]
  52. ])->first();
  53. if($type == 'current' || !$current) return $current;
  54. $next = ProjectUser::where([
  55. ['project_id', '=', $this['id']],
  56. ['project_role_id', '>', $current['project_role_id']]
  57. ])->first();
  58. return $next ? $next : $current;
  59. }
  60. public function getCreateProjectRoleId(User $user, $is_draft)
  61. {
  62. $project_user = $this->getProjectUser($user, $is_draft == 1 ? 'current' : 'next');
  63. return $project_user ? $project_user['project_role_id'] : '';
  64. }
  65. }