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'; if (!str_contains($start, '-')) { $start = $fakedate . $start; } if (!str_contains($end, '-')) { $end = $fakedate . $end; } $start = \Carbon\Carbon::parse($start); $end = \Carbon\Carbon::parse($end); $diffInSeconds = $start->diffInSeconds($end); $hours = floor($diffInSeconds / 3600); $minutes = floor(($diffInSeconds % 3600) / 60); $seconds = $diffInSeconds % 60; return sprintf('%02d:%02d:%02d', $hours, $minutes, $seconds); } // 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; }