Process.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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');
  39. }
  40. public function getOwnerNameAttribute()
  41. {
  42. return $this['owner']? $this['owner']['name']:null;
  43. }
  44. public function getProcessMethodNameAttribute()
  45. {
  46. return $this['processMethod']? $this['processMethod']['name']:null;
  47. }
  48. public function createOperatorLog($operation){
  49. OperatorLog::create([
  50. 'operator_logable_type'=>'processes',
  51. 'operator_logable_id'=>$this->id,
  52. 'user_id'=>Auth::id(),
  53. 'operation'=>$operation
  54. ]);
  55. }
  56. public function createSign($mark){
  57. return Sign::create([
  58. 'signable_type'=>'processes',
  59. 'signable_id'=>$this->id,
  60. 'field'=>'unit_price',
  61. 'mark'=>$mark
  62. ]);
  63. }
  64. public function destroySign(){
  65. Sign::where('signable_type','processes')->where('signable_id',$this->id)->where('field','unit_price')->delete();
  66. }
  67. }