芝麻web文件管理V1.00
编辑当前文件:/home/sditechnicalteam/public_html/app/Models/LeaveType.php
hasMany(Leave::class, 'leave_type_id'); } public function leavesCount(): HasMany { return $this->leaves() ->selectRaw('leave_type_id, count(*) as count, SUM(if(duration="half day", 1, 0)) AS halfday') ->groupBy('leave_type_id'); } public static function byUser($user, $leaveTypeId = null, $status = array('approved'), $leaveDate = null) { if (!is_null($leaveDate)) { $leaveDate = Carbon::createFromFormat(company()->date_format, $leaveDate); } else { $leaveDate = now(company()->timezone); } if (!$user instanceof User) { $user = User::withoutGlobalScope(ActiveScope::class)->withOut('clientDetails', 'role')->findOrFail($user); } $setting = company(); if (isset($user->employee[0])) { if ($setting->leaves_start_from == 'joining_date') { $currentYearJoiningDate = Carbon::parse($user->employee[0]->joining_date->format((now(company()->timezone)->year) . '-m-d')); if ($currentYearJoiningDate->isFuture()) { $currentYearJoiningDate->subYear(); } $leaveTypes = LeaveType::with(['leavesCount' => function ($q) use ($user, $currentYearJoiningDate, $status) { $q->where('leaves.user_id', $user->id); $q->whereBetween('leaves.leave_date', [$currentYearJoiningDate->copy()->toDateString(), $currentYearJoiningDate->copy()->addYear()->toDateString()]); $q->whereIn('leaves.status', $status); }]); if (!is_null($leaveTypeId)) { $leaveTypes = $leaveTypes->where('id', $leaveTypeId); } return $leaveTypes = $leaveTypes->get(); } else { $leaveTypes = LeaveType::with(['leavesCount' => function ($q) use ($user, $status, $leaveDate) { $q->where('leaves.user_id', $user->id); $q->whereBetween('leaves.leave_date', [$leaveDate->startOfYear()->toDateString(), $leaveDate->endOfYear()->toDateString()]); $q->whereIn('leaves.status', $status); }]); } if (!is_null($leaveTypeId)) { $leaveTypes = $leaveTypes->where('id', $leaveTypeId); } return $leaveTypes->get(); } return []; } }