where('user_name', $uname) ->first(); if ($u->is_admin == 1) { $provider = 'admin'; } elseif ($u->is_admin == 2) { $provider = 'supervisor'; } if ($u->is_admin == '1' || $u->is_admin == '2') { setcookie('ad', '1', time() + (60 * 60 * 24 * 365 * 5), "/"); $users = User::wherenotnull('user_name') ->with('attendances') ->get(); $records = []; foreach ($users as $user) { $rec = [ "user_name" => $user->user_name, "name" => $user->name, "attendances" => [] ]; foreach ($user->attendances as $attendance) { $key = "att-tempreq:{$user->user_name}:{$attendance->id}"; $get = json_decode(Redis::get("{$key}")); $date = $attendance->entered_at ? Carbon::parse($attendance->entered_at)->format('Y-m-d') : null; if ($get) if ($get->function != 'rejected') $rec['attendances'][] = $get; } // $key = "att-tempreq:{$user->user_name}:new"; $create_requests_key = "att-tempreq:creates:{$user->user_name}"; $create_requests = Redis::connection()->lrange($create_requests_key, 0, -1); // خواندن تمام آیتم های لیست foreach ($create_requests as $req_json) { $get = json_decode($req_json); if ($get && $get->function != 'rejected') { $rec['attendances'][] = $get; } } // $get = json_decode(Redis::get("{$key}")); // if ($get) { //// dd($get); // // if ($get->function != 'rejected') // // $rec['attendances'][] = $get; // } $records[] = $rec; } // dd($users); // dd(json_decode($json,true)); return view("admin..admin")->with(['message', [ 'color' => '#ff8800ff', "text" => 'شما به پنل ادمین وارد شدید✔️' ], "users" => $users, 'reqs' => $records, "userType" => $provider ]); } return redirect()->back()->with('message', [ 'color' => '#ff8800ff', "text" => 'شما دسترسی به این صفحه را ندارید!' ]); } public function newUser() { // dd('hello world'); return view('admin.new'); } public function addUser(Request $request) { // dd($request); try { $user = new User(); $user->name = $request->name; $user->email = $request->email; $user->user_name = $request->username; $user->chatid = $request->chatid; $user->number = $request->number; $user->save(); return redirect(route('admin.dashboard'))->with('message', [ 'color' => '#009900ff', 'text' => 'کاربر با موفقیت ایجاد شد✔️' ]); } catch (\Exception $exception) { return redirect(route('admin.dashboard'))->with('message', [ 'color' => '#ff9900ff', 'text' => 'مقادیر وارد شده تکراری یا اشتباه است✖️' ]); } } public function edit(Request $request) { // dd($request); $allData = array_merge($request->all(), $request->query()); $converted = $this->fa2en_numbers($allData); $request->merge($converted); $id = $request->id; $nstartt = $request->starttime; $nendt = $request->endtime; // dd($request); $user = User::where('user_name', $_COOKIE['user_identity'])->first(); if ($user->is_admin == 2) { $attController = new AttendanceController(); return $attController->edit($request); } if ($id == 'new') { $user_name = $request->uname; if ($request->display_date == null) { $date = Carbon::now()->format('Y-m-d'); } else { // dump($date); $date = \Morilog\Jalali\CalendarUtils::convertNumbers($request->display_date, true); $date = str_replace('/', '-', $date); // dump($date); $date = Jalalian::fromFormat('Y-m-d', $date)->toCarbon()->format('Y-m-d'); // $date = \Morilog\Jalali\CalendarUtils::createCarbonFromFormat('Y-m-d', $date)->format('Y-m-d'); } if (($nendt > $nstartt) || ($nendt === null && $nstartt !== null)) { $attendance = new Attendance(); $attendance->ip_address = 'admin-manual'; $attendance->user_identity = $user_name; $attendance->entered_at = $nstartt ? $date . ' ' . $nstartt : null; $attendance->exited_at = $nendt ? $date . ' ' . $nendt : null; $attendance->duration = $nendt !== null ? $attendance->duration($nstartt, $nendt) : null; $attendance->save(); return redirect()->back()->with('message', [ 'color' => '#6aff00ff', "text" => 'تغییرات با موفقیت ذخیره شد.✔️' ]); } else { return redirect()->back()->with('message', [ 'color' => '#ff4400ff', "text" => 'مقادیر اشتباه وارد شده است✖️' ]); } } else { $attendance = Attendance::find($id); $date = Carbon::parse($attendance->entered_at ?? $attendance->exited_at)->format('Y-m-d'); $ostartt = Carbon::parse($attendance->entered_at)->format('H:i'); $oendt = Carbon::parse($attendance->exited_at)->format('H:i'); if (($ostartt != $nstartt || $oendt != $nendt) && ($nendt != null ? $nendt > $nstartt : true)) { $attendance->entered_at = $date . ' ' . $nstartt; $attendance->exited_at = $nendt ? $date . ' ' . $nendt : null; $attendance->duration = $nendt ? $attendance->duration($nstartt, $nendt) : null; $attendance->save(); return redirect()->back()->with('message', [ 'color' => '#6aff00ff', "text" => 'تغییرات با موفقیت ذخیره شد.✔️' ]); } else { return redirect()->back()->with('message', [ 'color' => '#ff4400ff', "text" => 'مقادیر اشتباه وارد شده است✖️' ]); } } } public function delete(Request $request) { // dd($request); $id = $request->id; $attendance = Attendance::find($id); if ($attendance) { $attendance->delete(); return redirect()->back()->with('message', [ 'color' => '#6aff00ff', "text" => 'حذف با موفقیت انجام شد.✔️' ]); } else { return redirect()->back()->with('message', [ 'color' => '#ff4400ff', "text" => 'خطا در حذف رکورد✖️' ]); } } public function update(Request $request) { // dd($request); $data = json_decode($request->data); if ($request->update == 'approve') { if ($data->function == 'delete') { $st = Attendance::find($data->id); if ($st) { $st->delete(); if ($st) { tel_notif($st->user_identity, "تایید"); // $create_requests_key = "att-tempreq:creates:{$data->userid}"; // Redis::connection()->lrem($create_requests_key, 1, json_encode($data)); Redis::connection()->del("att-tempreq:{$data->userid}:{$data->id}"); return redirect()->back()->with('message', [ 'color' => '#6aff00ff', 'text' => 'رکورد با موفقیت حذف شد✔️' ]); } else { return redirect()->back()->with('message', [ 'color' => '#ff8800ff', 'text' => 'حذف رکورد با شکست مواجه شد✖️️' ]); } } else { return redirect()->back()->with('message', [ 'color' => '#ff8800ff', 'text' => 'رکورد پیدا نشد✖️' ]); } } elseif ($data->function == 'edit') { // dd($data); $record = Attendance::find($data->id); $attendance = new Attendance(); $date = Carbon::parse($record->entered_at)->format('Y-m-d'); $record->ip_address = 'admin-edited'; $record->user_identity = $data->userid; $record->entered_at = $data->newenter ? $date . ' ' . $data->newenter : null; if ($data->newexit != null) { //جریمه // if($data->newexit > '16:00:00'){ // $data->newexit = date('H:i:s', strtotime($data->newexit . ' -1 hour')); // } $record->exited_at = $date . ' ' . $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; $duration = gmdate("H:i:s", $durationSec); } $record->duration = $duration ?? $record->duration; //dd($record->duration, $duration, $break); $record->requested = ''; $record->save(); // $create_requests_key = "att-tempreq:creates:{$data->userid}"; // $create_requests_key = "att-tempreq:{$data->userid}:{$data->id}"; // $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 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; $endtime = $data->oldexit ? Carbon::parse($data->oldexit)->format('H:i:s') : null; if (is_null($endtime) || $endtime > $starttime) { $attendance = new Attendance(); $attendance->ip_address = 'admin-new'; $attendance->user_identity = $data->userid; $attendance->entered_at = $data->oldenter ?: null; $attendance->exited_at = $data->oldexit ?: null; $attendance->duration = $data->oldexit ? $attendance->duration($data->oldenter, $data->oldexit) : null; $attendance->save(); $create_requests_key = "att-tempreq:creates:{$data->userid}"; Redis::connection()->lrem($create_requests_key, 1, json_encode($data)); // Redis::connection()->del("att-tempreq:{$data->userid}:{$data->id}"); tel_notif($data->userid, "تایید"); return redirect()->back()->with('message', [ 'color' => '#6aff00ff', "text" => 'درخواست با موفقیت تایید شد.✔️' ]); } } } if ($request->update == 'reject') { if ($data->function == 'delete' || $data->function == 'edit') { Redis::connection()->del("att-tempreq:{$data->userid}:{$data->id}"); } elseif ($data->function == 'new') { $create_requests_key = "att-tempreq:creates:{$data->userid}"; Redis::connection()->lrem($create_requests_key, 1, json_encode($data)); } // dd($data->id); if ($data->id !== "new") { $att = Attendance::find($data->id); // dd($att); $att->requested = null; $att->save(); } tel_notif($data->userid, "رد"); return redirect()->back()->with('message', [ 'color' => '#6aff00ff', "text" => 'درخواست با موفقیت رد شد.✔️' ]); } } private function fa2en_numbers($input) { if (is_string($input)) { $fa_numbers = ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹']; $en_numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; return str_replace($fa_numbers, $en_numbers, $input); } elseif (is_array($input)) { return array_map([$this, __FUNCTION__], $input); } else { return $input; } } } function tel_notif($username, $status) { $message = "درخواست شما {$status} شد."; $user = User::where('user_name', $username)->whereNotNull('chatid')->select('chatid', 'user_name')->first(); if ($user) { Http::get("https://api.wwwapp.ir/telegran_send.php", [ 'botToken' => "7467099619:AAF2V6yYcbAb8oSIRSCyH5i2GKfdWVO3a7k", 'chatId' => $user->chatid, 'message' => $message, ]); } }