Process.php 3.7 KB

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