<?php namespace App\Models; use Illuminate\Database\Eloquent\Builder; use Illuminate\Support\Facades\Auth; class LeaveApplication extends BaseModel { public static $rules = ['start_date' => 'required', 'end_date' => 'required', 'reason' => 'required', 'leaveType' => 'required']; protected $table = 'leave_applications'; protected $fillable = []; protected $guarded = ['id']; protected static function boot() { parent::boot(); static::addGlobalScope('company', function (Builder $builder) { if (admin()) { $builder->where('leave_applications.company_id', admin()->company_id); } if (employee()) { $builder->where('leave_applications.company_id', employee()->company_id); } }); } public static function rules_single_leaves($input) { foreach ($input as $key => $val) { $rules_single_leaves['date.' . $key] = 'unique:leave_applications,start_date,NULL,id,employeeID,' . auth()->guard('employee')->user()->employeeID; } $rules_single_leaves['date.0'] = 'required|date|unique:leave_applications,start_date,NULL,id,employeeID,' . auth()->guard('employee')->user()->employeeID; return $rules_single_leaves; } public static function messages_single_leaves($input) { $messages = []; foreach ($input as $key => $val) { $messages['date.' . $key . '.unique'] = "You have already applied for <b>$val</b> date.So change this date"; } $messages['date.0.unique'] = "You have already applied for <b>$input[0]</b> date.So change this date"; $messages['date.0.required'] = "Date 0 field is required"; return $messages; } public function setStartDateAttribute($value) { $date = date('Y-m-d', strtotime(str_replace('/', '-', $value))); $this->attributes['start_date'] = $date; } public function setEndDateAttribute($value) { if ($value == NULL) { $this->attributes['end_date'] = NULL; } else { $date = date('Y-m-d', strtotime(str_replace('/', '-', $value))); $this->attributes['end_date'] = $date; } } // Get employee Details public function employee() { return $this->belongsTo(Employee::class); } public function scopeManager($query, $id) { if (admin()->manager == 1) { return $query->join('designation', 'designation.id', '=', 'employees.designation') ->join('department', 'designation.department_id', '=', 'department.id') ->join('department_manager', 'department_manager.department_id', '=', 'department.id') ->where('department_manager.manager_id', '=', $id); } return $query->join('designation', 'designation.id', '=', 'employees.designation') ->join('department', 'designation.department_id', '=', 'department.id'); } }