FarisaRahmaSari_E31222327/app/Http/Controllers/AttendanceController.php

84 lines
2.5 KiB
PHP

<?php
namespace App\Http\Controllers;
use DateTime;
use App\Models\Employee;
use App\Models\Latetime;
use App\Models\Attendance;
use Illuminate\Support\Facades\Hash;
use App\Http\Requests\AttendanceEmp;
use App\Models\Presensi;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
class AttendanceController extends Controller
{
//show attendance
public function index()
{
$presensis = Presensi::with('user')
->select('presensi.*')
->join('users', 'presensi.user_id', '=', 'users.id')
->orderBy('presensi.created_at', 'desc')
->get();
return view('admin.attendance', compact('presensis'));
}
//show late times
public function indexLatetime()
{
return view('admin.latetime')->with(['latetimes' => Latetime::all()]);
}
// public static function lateTime(Employee $employee)
// {
// $current_t = new DateTime(date('H:i:s'));
// $start_t = new DateTime($employee->schedules->first()->time_in);
// $difference = $start_t->diff($current_t)->format('%H:%I:%S');
// $latetime = new Latetime();
// $latetime->emp_id = $employee->id;
// $latetime->duration = $difference;
// $latetime->latetime_date = date('Y-m-d');
// $latetime->save();
// }
public static function lateTimeDevice($att_dateTime, Employee $employee)
{
$attendance_time = new DateTime($att_dateTime);
$checkin = new DateTime($employee->schedules->first()->time_in);
$difference = $checkin->diff($attendance_time)->format('%H:%I:%S');
$latetime = new Latetime();
$latetime->emp_id = $employee->id;
$latetime->duration = $difference;
$latetime->latetime_date = date('Y-m-d', strtotime($att_dateTime));
$latetime->save();
}
public function destroy($id)
{
try {
$presensi = Presensi::findOrFail($id);
// Hapus file foto jika ada
if ($presensi->foto) {
Storage::delete('public/' . $presensi->foto);
}
// Hapus record dari database
$presensi->delete();
return redirect()->route('admin.attendance')
->with('success', 'Data presensi berhasil dihapus');
} catch (\Exception $e) {
return redirect()->route('admin.attendance')
->with('error', 'Gagal menghapus data presensi: ' . $e->getMessage());
}
}
}