attributes['entry_location'] = DB::raw("ST_SetSRID(ST_Point({$value['lng']}, {$value['lat']}), 4326)"); } public function setExitLocationAttribute($value) { $this->attributes['exit_location'] = DB::raw("ST_SetSRID(ST_Point({$value['lng']}, {$value['lat']}), 4326)"); } public function setOfficeLocationAttribute($value) { $this->attributes['office_location'] = DB::raw("ST_SetSRID(ST_Point({$value['lng']}, {$value['lat']}), 4326)"); } public function breaks() { return $this->hasMany(AttendanceBreak::class); } public function duration($start,$end) { // dd($start,$end, $date); $fakedate = '2020/02/20'; $start = Carbon::parse($start)->format('Y/m/d') ? Carbon::parse($start) : Carbon::parse($start . $fakedate); $end = Carbon::parse($end)->format('Y/m/d') ? Carbon::parse($end) : Carbon::parse($end . $fakedate); $diffInSeconds = $start->diffInSeconds($end); // فاصله به ثانیه $hours = floor($diffInSeconds / 3600); $minutes = floor(($diffInSeconds % 3600) / 60); $seconds = $diffInSeconds % 60; $duration = sprintf('%02d:%02d:%02d', $hours, $minutes, $seconds); return $duration; } // public function attendanceBreak() // { // // return $this->hasMany(AttendanceBreak::class, 'attendance_id', 'id') // ->select('attendance_id', 'break_start', 'break_end', 'duration') // ->orderBy('break_start', 'desc'); // // // } public function attendanceBreaks() { return $this->hasMany(AttendanceBreak::class, 'attendance_id', 'id') ->orderBy('break_start', 'desc'); } public $timestamps = true; }