D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
home
/
forge
/
kader-lms.com
/
app
/
Filename :
SmLeaveRequest.php
back
Copy
<?php namespace App; use App\Models\User; use Carbon\Carbon; use Illuminate\Support\Facades\Auth; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; class SmLeaveRequest extends Model { use HasFactory; protected $casts = [ 'id' => 'integer', 'apply_date' => 'string', 'leave_from' => 'string', 'leave_to' => 'string', 'reason' => 'string', 'file' => 'string', 'leave_define_id' => 'integer', ]; public function leaveType() { return $this->belongsTo('App\SmLeaveType', 'type_id'); } public function leaveDefine() { return $this->belongsTo('App\SmLeaveDefine', 'leave_define_id', 'id'); } public function staffs() { return $this->belongsTo('App\SmStaff', 'staff_id', 'user_id'); } public function student() { return $this->belongsTo('App\SmStudent', 'staff_id', 'user_id'); } public function user() { return $this->belongsTo('App\Models\User', 'staff_id', 'id'); } public function getRemainingDaysAttribute() { $to = Carbon::parse( $this->leave_from); $from = Carbon::parse( $this->leave_to); $diff_in_days = $to->diffInDays($from); return $diff_in_days; } public static function approvedLeave($type_id){ try { $user = Auth::user(); $leaves = SmLeaveRequest::where('role_id', $user->role_id)->where('staff_id', $user->id) ->where('leave_define_id', $type_id)->where('approve_status', "A")->get(); $approved_days = 0; foreach($leaves as $leave){ $start = strtotime($leave->leave_from); $end = strtotime($leave->leave_to); $days_between = ceil(abs($end - $start) / 86400); $days = $days_between + 1; $approved_days += $days; } return $approved_days; } catch (\Exception $e) { $data=[]; return $data; } } public static function approvedLeaveModal($type_id, $role_id, $staff_id){ try { $leaves = SmLeaveRequest::where('role_id', $role_id)->where('staff_id', $staff_id)->where('leave_define_id', $type_id)->where('approve_status', "A")->get(); $approved_days = 0; foreach($leaves as $leave){ $start = strtotime($leave->leave_from); $end = strtotime($leave->leave_to); $days_between = ceil(abs($end - $start) / 86400); $days = $days_between + 1; $approved_days += $days; } return $approved_days; } catch (\Exception $e) { $data=[]; return $data; } } }