From 4b2e1e296a84683f8a6f303332aa9671ae2cd87b Mon Sep 17 00:00:00 2001 From: moTech Date: Sat, 18 Apr 2026 06:17:01 +0000 Subject: [PATCH] UPDATE 1405-01-29 --- app/Http/Controllers/AdminController.php | 39 ++++++++----- app/Http/Controllers/AttendanceController.php | 9 +-- app/Models/User.php | 2 +- resources/views/app.blade.php | 4 +- resources/views/attendance/index.blade.php | 58 +++++++++---------- 5 files changed, 62 insertions(+), 50 deletions(-) diff --git a/app/Http/Controllers/AdminController.php b/app/Http/Controllers/AdminController.php index 31dac3d2..79a83593 100644 --- a/app/Http/Controllers/AdminController.php +++ b/app/Http/Controllers/AdminController.php @@ -34,9 +34,9 @@ class AdminController extends Controller $u = User::select('name', 'is_admin') ->where('user_name', $uname) ->first(); - if ($u->is_admin == 1){ + if ($u->is_admin == 1) { $provider = 'admin'; - }elseif ($u->is_admin == 2){ + } elseif ($u->is_admin == 2) { $provider = 'supervisor'; } if ($u->is_admin == '1' || $u->is_admin == '2') { @@ -143,15 +143,15 @@ class AdminController extends Controller $nendt = $request->endtime; // dd($request); $user = User::where('user_name', $_COOKIE['user_identity'])->first(); - if ($user->is_admin == 2){ + if ($user->is_admin == 2) { $attController = new AttendanceController(); return $attController->edit($request); } if ($id == 'new') { $user_name = $request->uname; - if($request->display_date == null){ + if ($request->display_date == null) { $date = Carbon::now()->format('Y-m-d'); - }else{ + } else { // dump($date); $date = \Morilog\Jalali\CalendarUtils::convertNumbers($request->display_date, true); $date = str_replace('/', '-', $date); @@ -279,12 +279,21 @@ class AdminController extends Controller // } $record->exited_at = $date . ' ' . $data->newexit; - $record->duration = $attendance->duration($data->newenter, $data->newexit); + $duration = $attendance->duration($data->newenter, $data->newexit); } else { $record->exited_at = null; $record->duration = null; } + $break = AttendanceBreak::where('attendance_id', $data->id)->sum('duration'); + if ($break) { + $breakSec = strtotime("1970-01-01 " . $break) - strtotime("1970-01-01 00:00:00"); + $durationSec = strtotime("1970-01-01 " . $duration) - strtotime("1970-01-01 00:00:00"); + $durationSec -= $breakSec; + $record->duration = gmdate("H:i:s", $durationSec); + + } +//dd($record->duration, $duration, $break); $record->requested = ''; $record->save(); // $create_requests_key = "att-tempreq:creates:{$data->userid}"; @@ -292,12 +301,13 @@ class AdminController extends Controller // $t = Redis::connection()->lrem($create_requests_key, -1, json_encode($data)); Redis::connection()->del("att-tempreq:{$data->userid}:{$data->id}"); + tel_notif($record->user_identity, "تایید"); - return json_encode($data); -// return redirect()->back()->with('message', [ -// 'color' => '#6aff00ff', -// "text" => 'رکورد با موفقیت ذخیره شد.✔️' -// ]); + + return redirect()->back()->with('message', [ + 'color' => '#6aff00ff', + "text" => 'رکورد با موفقیت ذخیره شد.✔️' + ]); } elseif ($data->function == 'new') { // dd($data); $starttime = $data->oldenter ? Carbon::parse($data->oldenter)->format('H:i:s') : null; @@ -324,9 +334,9 @@ class AdminController extends Controller } if ($request->update == 'reject') { - if($data->function == 'delete' || $data->function == 'edit'){ + if ($data->function == 'delete' || $data->function == 'edit') { Redis::connection()->del("att-tempreq:{$data->userid}:{$data->id}"); - }elseif($data->function == 'new'){ + } elseif ($data->function == 'new') { $create_requests_key = "att-tempreq:creates:{$data->userid}"; Redis::connection()->lrem($create_requests_key, 1, json_encode($data)); } @@ -347,7 +357,8 @@ class AdminController extends Controller } - private function fa2en_numbers($input) { + private function fa2en_numbers($input) + { if (is_string($input)) { $fa_numbers = ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹']; $en_numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; diff --git a/app/Http/Controllers/AttendanceController.php b/app/Http/Controllers/AttendanceController.php index 2f01258d..a991ec18 100644 --- a/app/Http/Controllers/AttendanceController.php +++ b/app/Http/Controllers/AttendanceController.php @@ -219,9 +219,10 @@ class AttendanceController extends Controller if (!empty($user)) { setcookie('user_identity', $user->user_name ?? $user->id, time() + (60 * 60 * 24 * 365 * 5), "/"); - $admin = $user->is_admin == 1 ? true : false; - if ($admin) { + if ($user->is_admin == 1) { setcookie('ad', '1', time() + (60 * 60 * 24 * 365 * 5), "/"); + }elseif ($user->is_admin == 2){ + setcookie('ad', '2', time() + (60 * 60 * 24 * 365 * 5), "/"); } return redirect(url(''))->with([ @@ -229,7 +230,7 @@ class AttendanceController extends Controller 'color' => '#00c300ff', 'text' => 'ورود موفق' ], - 'admin' => $admin, + 'admin' => $user->is_admin, ]); } @@ -687,7 +688,7 @@ function send_tel($user, $data, $status) $message = "{$user} درخواست {$data} ثبت کرد."; } - $admins = User::where('is_admin', '1')->whereNotNull('chatid')->select('chatid', 'bale', 'user_name')->get(); + $admins = User::whereIn('is_admin', [1,2])->whereNotNull('chatid')->select('chatid', 'bale', 'user_name')->get(); if ($_COOKIE['user_identity'] !== 'test') { foreach ($admins as $admin) { if (!$admin->bale) {continue;} diff --git a/app/Models/User.php b/app/Models/User.php index 12691d27..39486ccd 100755 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -81,7 +81,7 @@ class User extends Authenticatable return $this->hasManyThrough(AttendanceBreak::class,Attendance::class,'user_identity','attendance_id', 'user_name', // local key در users 'id' // local key در attendances - )->orderBy('entered_at', 'desc'); + )->orderBy('id', 'desc'); } diff --git a/resources/views/app.blade.php b/resources/views/app.blade.php index 0eba25c3..2a8f54c8 100755 --- a/resources/views/app.blade.php +++ b/resources/views/app.blade.php @@ -385,12 +385,12 @@ - @if(!request()->is("admin") && (isset($_COOKIE['ad']) && $_COOKIE['ad']==1)) + @if(!request()->is("admin") && (isset($_COOKIE['ad']) && $_COOKIE['ad']!=null)) - @elseif(request()->is("admin") && (isset($_COOKIE['ad']) && $_COOKIE['ad']==1)) + @elseif(request()->is("admin") && (isset($_COOKIE['ad']) && $_COOKIE['ad']!=null)) diff --git a/resources/views/attendance/index.blade.php b/resources/views/attendance/index.blade.php index d56839ab..162b3a6f 100755 --- a/resources/views/attendance/index.blade.php +++ b/resources/views/attendance/index.blade.php @@ -8,35 +8,35 @@ use Carbon\Carbon; use Illuminate\Support\Collection; -//if (!empty($user->tasks)) { -// $in_progress = '#fca000'; -// $todo = '#7d7d7d'; -// $error = '#fc0000'; -// $backlog = '#bababa'; -// $done = '#40de02'; -// $cancelled = 'black'; -// -// $state = [ -// "c73c2044-ea14-42cb-b08d-cecf3d1fdfb5" => "$in_progress",// in progress -// "a9ce312f-cfca-491e-8e3d-1975aa6ebc10" => "$todo",//to do -// "dea1fb57-a281-4fe7-8f3e-ee5567637e35" => "$error",// error -// "770fbe42-99f6-41db-9b9e-773d9cced1a5" => "$backlog",//backlog -// "b0e464e1-34eb-41ea-b2f7-3ef7483bc9f0" => "$done",//done -// "d61d14a3-72f7-4f44-894b-efe8b2a75be1" => "$cancelled",//canceled -// ]; -// $state_order = [ -// "c73c2044-ea14-42cb-b08d-cecf3d1fdfb5", -// "a9ce312f-cfca-491e-8e3d-1975aa6ebc10", -// "dea1fb57-a281-4fe7-8f3e-ee5567637e35", -// "770fbe42-99f6-41db-9b9e-773d9cced1a5", -// "b0e464e1-34eb-41ea-b2f7-3ef7483bc9f0", -// "d61d14a3-72f7-4f44-894b-efe8b2a75be1", -// ]; -// -// $user->tasks = $user->tasks->sortBy(function ($task) use ($state_order) { -// return array_search($task->state, $state_order); -// }); -//} +if (!empty($user->tasks)) { + $in_progress = '#fca000'; + $todo = '#7d7d7d'; + $error = '#fc0000'; + $backlog = '#bababa'; + $done = '#40de02'; + $cancelled = 'black'; + + $state = [ + "c73c2044-ea14-42cb-b08d-cecf3d1fdfb5" => "$in_progress",// in progress + "a9ce312f-cfca-491e-8e3d-1975aa6ebc10" => "$todo",//to do + "dea1fb57-a281-4fe7-8f3e-ee5567637e35" => "$error",// error + "770fbe42-99f6-41db-9b9e-773d9cced1a5" => "$backlog",//backlog + "b0e464e1-34eb-41ea-b2f7-3ef7483bc9f0" => "$done",//done + "d61d14a3-72f7-4f44-894b-efe8b2a75be1" => "$cancelled",//canceled + ]; + $state_order = [ + "c73c2044-ea14-42cb-b08d-cecf3d1fdfb5", + "a9ce312f-cfca-491e-8e3d-1975aa6ebc10", + "dea1fb57-a281-4fe7-8f3e-ee5567637e35", + "770fbe42-99f6-41db-9b9e-773d9cced1a5", + "b0e464e1-34eb-41ea-b2f7-3ef7483bc9f0", + "d61d14a3-72f7-4f44-894b-efe8b2a75be1", + ]; + + $user->tasks = $user->tasks->sortBy(function ($task) use ($state_order) { + return array_search($task->state, $state_order); + }); +} //dd(count($break = $user->attendanceBreaks)); if (count($user->attendanceBreaks) > 0){ $break = $user->attendanceBreaks[0];