whereNotNull('chatid')->select('chatid', 'user_name')->first(); Http::get("https://api.wwwapp.ir/telegran_send.php", [ 'botToken' => "7467099619:AAF2V6yYcbAb8oSIRSCyH5i2GKfdWVO3a7k", 'chatId' => $user->chatid, 'message' => $message, ]); } Route::get('/', function () { $uname = $_COOKIE['user_identity']; $u = User::select('name', 'is_admin') ->where('user_name', $uname) ->first(); if ($u->is_admin == '1') { setcookie('ad', '1', time() + (60 * 60 * 24 * 365 * 5), "/"); $users = User::select('user_name', 'name') ->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}")); if ($get) if ($get->function != 'rejected') $rec['attendances'][] = $get; } $key = "att-tempreq:{$user->user_name}:new"; $get = json_decode(Redis::get("{$key}")); // dd($get); if ($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 ]); } return redirect()->back()->with('message', [ 'color' => '#ff8800ff', "text" => 'شما دسترسی به این صفحه را ندارید!' ]); })->name('admin.dashboard'); Route::get('/get-tasks', function () { $client = new Client(); $response = $client->get('https://api.plane.so/api/v1/workspaces/montzar/projects/c1df4085-582f-4b57-b3c6-95b7d4d19007/issues/', [ 'headers' => [ 'X-API-Key' => 'plane_api_ec378e977ceb4bd1bbd2332855370645', 'Accept' => 'application/json' ], 'query' => [ "filters" => "%7B%22assignee_id__in%22:%227730f957-3448-4b8c-bc16-a87fc2f2e4ae%22%7D", 'expand' => 'assignees', 'assignees' => 'c6a7f605-3088-4400-86dc-7b0702f896a7' ] ]); $data = json_decode($response->getBody(), true); // end of api // get users $users = User::all(); // save in tasks table // foreach ($data['results'] as $a) // dd(gettype($a['assignees'])); // dd('ridi'); $tasks = Tasks::all(); $i = 0; foreach ($data['results'] as $d) { if ($tasks->where('task_id', $d['id'])->first()) continue; else { $i++; try { $task = new Tasks(); $task->task_id = $d['id']; $task->name = $d['name']; $task->description = $d['description'] ?? null; $task->workspace_slug = "montzar"; $task->assignees = json_encode($d['assignees']) ?? null; $task->start_date = $d['start_date'] ?? null; $task->target_date = $d['target_date'] ?? null; $task->priority = $d['priority']; $task->description_html = $d['description_html'] ?? null; $task->completed_at = $d['completed_at'] ?? null; $task->project = $d['project']; $task->workspace = $d['workspace']; $task->state = $d['state'] ?? null; $task->json = json_encode($d); $task->created_at = $d['created_at']; $task->updated_at = $d['updated_at']; $task->deleted_at = $d['deleted_at'] ?? null; $task->created_by = $d['created_by']; $task->updated_by = $d['updated_by']; $task->deleted_by = $d['deleted_by'] ?? null; $task->save(); // فرض کردیم جدول واسط task_user باشه و ستون‌هاش task_id و user_id $assigns = $d['assignees']; foreach ($users as $user) { if (in_array($user->plain_id, $assigns)) DB::table('pivot_tasks')->insertOrIgnore([ 'task_id' => $d['id'], // یا $task->task_id اگر این همون PK هست 'user_id' => $user->plain_id ]); } echo $i; } catch (\Exception $e) { dd($e); } } dd("Added {$i} new tasks."); } }); Route::get('/newuser', function () { // dd('hello world'); return view('admin.new'); })->name('admin.new'); Route::post('/newuser', function (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' => 'مقادیر وارد شده تکراری یا اشتباه است✖️' ]); } })->name('admin.new'); Route::post('/edit', function (Request $request) { // dd($request); $id = $request->id; $nstartt = $request->starttime; $nendt = $request->endtime; // dd($request); if ($id == 'new') { $user_name = $request->uname; $date = \Morilog\Jalali\CalendarUtils::convertNumbers($request->date, true); $date = \Morilog\Jalali\CalendarUtils::createCarbonFromFormat('Y-m-d', $date)->format('Y-m-d'); // dd($date); if ($nendt > $nstartt) { $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 = $attendance->duration($nstartt, $nendt); $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 > $nstartt) { $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" => 'مقادیر اشتباه وارد شده است✖️' ]); } } })->name('admin.edit'); Route::post('/delete', function (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" => 'خطا در حذف رکورد✖️' ]); } })->name('admin.delete'); Route::post('/update', function (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, "تایید"); 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') { $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) { $record->exited_at = $date . ' ' . ($data->newexit > '16:00:00' ? "16:00:00" : $data->newexit); $record->duration = $attendance->duration(($data->newexit > '16:00:00' ? "16:00:00" : $data->newexit), $data->newexit); } else { $record->exited_at = null; $record->duration = null; } $record->requested = ''; $record->save(); 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(); 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') { Redis::connection()->del("att-tempreq:{$data->userid}:{$data->id}"); // dd($data->id); $att = Attendance::find($data->id); // dd($att); $att->requested = null; $att->save(); tel_notif($att->user_identity, "رد"); return redirect()->back()->with('message', [ 'color' => '#6aff00ff', "text" => 'درخواست با موفقیت رد شد.✔️' ]); } })->name('admin.update'); Route::get('/{user_name}', function ($user_name) { // dd($user_name); // $user = User::select('user_name', 'name', 'picture') // ->where('user_name', $user_name) // ->with('attendances') // ->first(); setcookie('token-0', $_COOKIE['user_identity'], time() + (60 * 60 * 24 * 365), "/"); setcookie('user_identity', $user_name, time() + (60 * 60 * 24 * 365), "/"); // $_COOKIE['user_identity'] = $user_name; return redirect(url('/')); })->name('admin.user');