Process.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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','amount','completed_amount','created_at','updated_at','deleted_at'
  13. ];
  14. protected $appends=[
  15. 'owner_name','process_method_name',
  16. ];
  17. public function owner(){
  18. return $this->belongsTo('App\Owner','owner_id','id');
  19. }
  20. public function processMethod(){
  21. return $this->belongsTo('App\ProcessMethod','process_method_id','id');
  22. }
  23. public function tutorials(){
  24. return $this->belongsToMany('App\Tutorial','process_tutorial','process_id','tutorial_id');
  25. }
  26. public function processesContents(){
  27. return $this->hasMany('App\ProcessesContent','process_id','id');
  28. }
  29. public function processDailies(){
  30. return $this->hasMany('App\ProcessDaily','process_id','id');
  31. }
  32. public function operatorLogs(){
  33. return $this->hasMany('App\OperatorLog','operator_logable_id','id')
  34. ->where('operator_logable_type','processes')->orderBy('id','DESC');
  35. }
  36. public function signs(){
  37. return $this->hasMany('App\Sign','signable_id','id')
  38. ->where('signable_type','processes')->where('field','unit_price');
  39. }
  40. public function automaticSupplementSign(){
  41. return $this->hasOne('App\Sign','signable_id','id')
  42. ->where('signable_type','processes')->where('field','automatic_supplement');
  43. }
  44. public function getOwnerNameAttribute()
  45. {
  46. return $this['owner']? $this['owner']['name']:null;
  47. }
  48. public function getProcessMethodNameAttribute()
  49. {
  50. return $this['processMethod']? $this['processMethod']['name']:null;
  51. }
  52. public function createOperatorLog($operation){
  53. OperatorLog::create([
  54. 'operator_logable_type'=>'processes',
  55. 'operator_logable_id'=>$this->id,
  56. 'user_id'=>Auth::id(),
  57. 'operation'=>$operation
  58. ]);
  59. }
  60. public function createSign($mark){
  61. return Sign::create([
  62. 'signable_type'=>'processes',
  63. 'signable_id'=>$this->id,
  64. 'field'=>'unit_price',
  65. 'mark'=>$mark
  66. ]);
  67. }
  68. public function destroySign(){
  69. Sign::where('signable_type','processes')->where('signable_id',$this->id)->where('field','unit_price')->delete();
  70. }
  71. }