Adding delay and penalty calculations

This commit is contained in:
2026-07-22 14:10:05 +03:30
parent 28bf82cde9
commit e1f86e6ffe
21 changed files with 1285 additions and 99 deletions
+8
View File
@@ -18,6 +18,7 @@ use Morilog\Jalali\Jalalian;
use GuzzleHttp\Client;
use App\Models\Tasks;
use App\Models\Pivot_Tasks;
use App\Services\LatePenaltyService;
class AdminController extends Controller
@@ -283,6 +284,9 @@ class AdminController extends Controller
$hours = intdiv($totalSeconds, 3600);
$minutes = intdiv($totalSeconds % 3600, 60);
$user->totaltime = sprintf('%02d:%02d', $hours, $minutes);
[$jMonthStart, $jMonthEnd] = app(LatePenaltyService::class)->jalaliMonthBounds($now);
$user->monthly_late_fine = app(LatePenaltyService::class)
->monthlyTotalFine($user->user_name, $jMonthStart, $jMonthEnd);
$user->working = 0;
$openForUser = $openAttendances->get($user->user_name, collect());
@@ -435,6 +439,7 @@ class AdminController extends Controller
$attendance->exited_at = $nendt ? $date . ' ' . $nendt : null;
$attendance->duration = $nendt !== null ? $attendance->duration($nstartt, $nendt) : null;
$attendance->save();
app(LatePenaltyService::class)->syncAttendance($attendance);
return redirect()->back()->with('message', [
'color' => '#6aff00ff',
"text" => 'تغییرات با موفقیت ذخیره شد.✔️'
@@ -461,6 +466,7 @@ class AdminController extends Controller
$attendance->duration = $nendt ? $attendance->duration($nstartt, $nendt) : null;
$attendance->save();
app(LatePenaltyService::class)->syncAttendance($attendance);
return redirect()->back()->with('message', [
'color' => '#6aff00ff',
"text" => 'تغییرات با موفقیت ذخیره شد.✔️'
@@ -568,6 +574,7 @@ class AdminController extends Controller
$record->duration = $duration ?? $record->duration;
$record->requested = '';
$record->save();
app(LatePenaltyService::class)->syncAttendance($record);
Redis::connection()->del("att-tempreq:{$data->userid}:{$data->id}");
$this->decrementUserRequestCount($data->userid);
@@ -602,6 +609,7 @@ class AdminController extends Controller
? $attendance->duration($starttime, $endtime)
: null;
$attendance->save();
app(LatePenaltyService::class)->syncAttendance($attendance);
$create_requests_key = "att-tempreq:creates:{$data->userid}";
Redis::connection()->lrem($create_requests_key, 1, json_encode($data));
$this->decrementUserRequestCount($data->userid);