Process.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?php
  2. namespace App;
  3. use Illuminate\Database\Eloquent\Model;
  4. use App\Traits\ModelTimeFormat;
  5. use Illuminate\Database\Eloquent\SoftDeletes;
  6. use Illuminate\Support\Facades\Auth;
  7. class Process extends Model
  8. {
  9. use ModelTimeFormat;
  10. use SoftDeletes;
  11. protected $fillable=[
  12. 'code','owner_id','process_method_id','unit_price','status','remark','balance_remark','amount','completed_amount','created_at','updated_at','deleted_at'
  13. ];
  14. protected $appends=[
  15. 'owner_name','process_method_name',
  16. ];
  17. public static function filterAuthorities(){
  18. $user=Auth::user();
  19. if(!$user){
  20. return (new static)->newQuery()->where('processes.owner_id','0');
  21. }
  22. $ownerIds=$user->getPermittingOwnerIdsAttribute();
  23. return (new static)->newQuery()->whereIn('processes.owner_id',$ownerIds);
  24. }
  25. public function owner(){
  26. return $this->belongsTo('App\Owner','owner_id','id');
  27. }
  28. public function processMethod(){
  29. return $this->belongsTo('App\ProcessMethod','process_method_id','id');
  30. }
  31. public function tutorials(){
  32. return $this->belongsToMany('App\Tutorial','process_tutorial','process_id','tutorial_id');
  33. }
  34. public function processesContents(){
  35. return $this->hasMany('App\ProcessesContent','process_id','id');
  36. }
  37. public function processDailies(){
  38. return $this->hasMany('App\ProcessDaily','process_id','id');
  39. }
  40. public function operatorLogs(){
  41. return $this->hasMany('App\OperatorLog','operator_logable_id','id')
  42. ->where('operator_logable_type','processes')->orderBy('id','DESC');
  43. }
  44. public function signs(){
  45. return $this->hasMany('App\Sign','signable_id','id')
  46. ->where('signable_type','processes')->where('field','unit_price');
  47. }
  48. public function automaticSupplementSign(){
  49. return $this->hasOne('App\Sign','signable_id','id')
  50. ->where('signable_type','processes')->where('field','automatic_supplement');
  51. }
  52. public function signUnitPrice(){
  53. return $this->hasOne('App\Sign','signable_id','id')
  54. ->where('signable_type','processes')->where('field','update_unit_price_value');
  55. }
  56. public function getOwnerNameAttribute()
  57. {
  58. return $this['owner']? $this['owner']['name']:null;
  59. }
  60. public function getProcessMethodNameAttribute()
  61. {
  62. return $this['processMethod']? $this['processMethod']['name']:null;
  63. }
  64. public function createOperatorLog($operation){
  65. OperatorLog::query()->create([
  66. 'operator_logable_type'=>'processes',
  67. 'operator_logable_id'=>$this->id,
  68. 'user_id'=>Auth::id(),
  69. 'operation'=>$operation
  70. ]);
  71. }
  72. public function createSign($mark){
  73. return Sign::query()->create([
  74. 'signable_type'=>'processes',
  75. 'signable_id'=>$this->id,
  76. 'field'=>'unit_price',
  77. 'mark'=>$mark
  78. ]);
  79. }
  80. public function createSignUnitPrice($unit_price){
  81. return Sign::query()->create([
  82. 'signable_type'=>'processes',
  83. 'signable_id'=>$this->id,
  84. 'field'=>'update_unit_price_value',
  85. 'mark'=>$unit_price
  86. ]);
  87. }
  88. public function destroySign(){
  89. Sign::query()->where('signable_type','processes')->where('signable_id',$this->id)->where('field','unit_price')
  90. ->orWhere('field','update_unit_price_value')->delete();
  91. }
  92. }