chore: add temporary shift sync script
This commit is contained in:
64
public/sync-paul-shift.php
Normal file
64
public/sync-paul-shift.php
Normal file
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
|
||||
// Check token for security
|
||||
$expectedToken = '7f3b89e902a2cdb8b5de9f2e30f14d8a245fca9b';
|
||||
if (!isset($_GET['token']) || $_GET['token'] !== $expectedToken) {
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
die('Forbidden: Invalid Token');
|
||||
}
|
||||
|
||||
header('Content-Type: text/plain');
|
||||
|
||||
echo "=========================================\n";
|
||||
echo "Syncing and Correcting Paul Rei Paas Shift\n";
|
||||
echo "=========================================\n\n";
|
||||
|
||||
try {
|
||||
// Boot Laravel
|
||||
require __DIR__ . '/../vendor/autoload.php';
|
||||
$app = require_once __DIR__ . '/../bootstrap/app.php';
|
||||
$kernel = $app->make(Illuminate\Contracts\Console\Kernel::class);
|
||||
$kernel->bootstrap();
|
||||
|
||||
// 1. Find Paul Rei Paas
|
||||
$employee = \App\Models\Employee::where('biometric_emp_id', '2068')->first();
|
||||
if (!$employee) {
|
||||
throw new \Exception("Employee Paul Rei Paas (2068) not found.");
|
||||
}
|
||||
|
||||
$userId = $employee->user_id;
|
||||
echo "Employee found: User ID $userId\n";
|
||||
|
||||
// 2. Update default shift to 17 in employees table
|
||||
$employee->shift_id = 17;
|
||||
$employee->save();
|
||||
echo "Updated employee default shift_id to 17 (OPS 08:00AM-05:00PM) in employees table.\n";
|
||||
|
||||
// 3. Update shift_id to 17 in all attendance_records from March 1st onwards
|
||||
$updatedRecords = \App\Models\AttendanceRecord::where('employee_id', $userId)
|
||||
->where('date', '>=', '2026-03-01')
|
||||
->update(['shift_id' => 17]);
|
||||
|
||||
echo "Updated shift_id to 17 for $updatedRecords attendance records (since 2026-03-01).\n";
|
||||
|
||||
// 4. Reprocess all these records so the status, total hours, and warnings are recalculated using shift 17
|
||||
$records = \App\Models\AttendanceRecord::where('employee_id', $userId)
|
||||
->where('date', '>=', '2026-03-01')
|
||||
->get();
|
||||
|
||||
$reprocessedCount = 0;
|
||||
foreach ($records as $record) {
|
||||
$oldStatus = $record->status;
|
||||
$record->processAttendance();
|
||||
$newStatus = $record->status;
|
||||
if ($oldStatus !== $newStatus) {
|
||||
echo "Date: " . $record->date . " | Updated status from $oldStatus to $newStatus\n";
|
||||
}
|
||||
$reprocessedCount++;
|
||||
}
|
||||
|
||||
echo "\nCompleted successfully. Reprocessed $reprocessedCount records.\n";
|
||||
|
||||
} catch (\Exception $e) {
|
||||
echo "ERROR: " . $e->getMessage() . "\n";
|
||||
}
|
||||
Reference in New Issue
Block a user