From 5d56e3941dae634e36b454ee9a405e614fbe78ee Mon Sep 17 00:00:00 2001 From: jamal azizbeigi Date: Tue, 3 Jan 2023 18:03:57 +0330 Subject: [PATCH 1/3] Create new DB folder in APP for saving DB function --- app/DB/TepRepo.php | 67 +++++++++++++++++++++ app/Http/Controllers/TelUserController.php | 68 +++------------------- 2 files changed, 76 insertions(+), 59 deletions(-) create mode 100644 app/DB/TepRepo.php diff --git a/app/DB/TepRepo.php b/app/DB/TepRepo.php new file mode 100644 index 0000000..583e082 --- /dev/null +++ b/app/DB/TepRepo.php @@ -0,0 +1,67 @@ +paginate('20'); + return $data_user; + } + + /** + * @return \Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection|\Illuminate\Database\Query\Builder[]|\Illuminate\Support\Collection + */ + public function getUserwithoutTrashedAll()// Design pattern , Solid(1) + { + $data_user_all = User::withoutTrashed() + ->get(); + return $data_user_all; + } + + /** + * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator + */ + public function getUserTrashedPaginated()// Design pattern , Solid(1) + { + $data_user = User::onlyTrashed() + ->paginate('20'); + return $data_user; + } + + /** + * @return \Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection|\Illuminate\Database\Query\Builder[]|\Illuminate\Support\Collection + */ + public function getUserTrashedAll()// Design pattern , Solid(1) + { + $data_user_all = User::onlyTrashed() + ->get(); + return $data_user_all; + } + + /** + * @param $id + * @return mixed + */ + public function restoreDeletedMobile($id)// Design pattern , Solid(1) + { + $restore_mobile = $this->getUserTrashedAll()->find($id)->restore(); + return $restore_mobile; + } + + /** + * @param $user_emp_id + * @return mixed + */ + + +} diff --git a/app/Http/Controllers/TelUserController.php b/app/Http/Controllers/TelUserController.php index 132f12a..68cb889 100644 --- a/app/Http/Controllers/TelUserController.php +++ b/app/Http/Controllers/TelUserController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers; +use App\DB\TepRepo; use App\Imports\UsersImport; use App\Models\User; use http\Exception; @@ -93,8 +94,9 @@ public function fileImport(Request $request) public function adminLTE() { // $data_user=User::get(); - $data_user = $this->getUserwithoutTrashedPaginated(); - $data_user_all = $this->getUserwithoutTrashedAll(); + $telFunctionClasses=resolve(TepRepo::class); + $data_user = $telFunctionClasses->getUserwithoutTrashedPaginated(); + $data_user_all = $telFunctionClasses->getUserwithoutTrashedAll(); // echo "Find ID successfuly "; return view('Login.AdminLTE', compact('data_user', 'data_user_all')); // redirect('Login.AdminLTE'); @@ -103,8 +105,9 @@ public function adminLTE() public function Deleted_Mobile_users() { // $data_user=User::get(); - $data_user = $this->getUserTrashedPaginated(); - $data_user_all = $this->getUserTrashedAll(); + $telFunctionClasses=resolve(TepRepo::class); + $data_user = $telFunctionClasses->getUserTrashedPaginated(); + $data_user_all = $telFunctionClasses->getUserTrashedAll(); // echo "Find ID successfuly "; return view('Results.Deleted_User', compact('data_user', 'data_user_all')); // redirect('Login.AdminLTE'); @@ -114,7 +117,8 @@ public function restore_user(Request $request) { // $data_user=User::get(); $id = $request->id; - $restore_mobile = $this->restoreDeletedMobile($id);//db part + $telFunctionClasses=resolve(TepRepo::class); + $restore_mobile = $telFunctionClasses->restoreDeletedMobile($id);//db part if ($restore_mobile) {// http response return response()->json([ 'success' => 'بازنشانی باموفقیت صورت گرفت' @@ -225,60 +229,6 @@ public function telegram() // return (new TelegramNotification()); } - /** - * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator - */ - private function getUserwithoutTrashedPaginated()// Design pattern , Solid(1) - { - $data_user = User::withoutTrashed() - ->paginate('20'); - return $data_user; - } - - /** - * @return \Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection|\Illuminate\Database\Query\Builder[]|\Illuminate\Support\Collection - */ - private function getUserwithoutTrashedAll()// Design pattern , Solid(1) - { - $data_user_all = User::withoutTrashed() - ->get(); - return $data_user_all; - } - - /** - * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator - */ - private function getUserTrashedPaginated()// Design pattern , Solid(1) - { - $data_user = User::onlyTrashed() - ->paginate('20'); - return $data_user; - } - - /** - * @return \Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection|\Illuminate\Database\Query\Builder[]|\Illuminate\Support\Collection - */ - private function getUserTrashedAll()// Design pattern , Solid(1) - { - $data_user_all = User::onlyTrashed() - ->get(); - return $data_user_all; - } - - /** - * @param $id - * @return mixed - */ - private function restoreDeletedMobile($id)// Design pattern , Solid(1) - { - $restore_mobile = $this->getUserTrashedAll()->find($id)->restore(); - return $restore_mobile; - } - - /** - * @param $user_emp_id - * @return mixed - */ } From 7f99309f26fbad1de6f6caa3dc060664cd9da711 Mon Sep 17 00:00:00 2001 From: jamal azizbeigi Date: Wed, 4 Jan 2023 13:08:35 +0330 Subject: [PATCH 2/3] Use Design patter for all of my controller function indeed, Http and DB request are spread each other --- app/DB/TepRepo.php | 61 +++++++++++++++------- app/Http/Controllers/TelUserController.php | 41 ++++++--------- 2 files changed, 58 insertions(+), 44 deletions(-) diff --git a/app/DB/TepRepo.php b/app/DB/TepRepo.php index 583e082..372da86 100644 --- a/app/DB/TepRepo.php +++ b/app/DB/TepRepo.php @@ -5,12 +5,11 @@ use App\Models\User; +use Illuminate\Support\Facades\DB; class TepRepo { - /** - * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator - */ + public function getUserwithoutTrashedPaginated()// Design pattern , Solid(1) { $data_user = User::withoutTrashed() @@ -18,9 +17,6 @@ public function getUserwithoutTrashedPaginated()// Design pattern , Solid(1) return $data_user; } - /** - * @return \Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection|\Illuminate\Database\Query\Builder[]|\Illuminate\Support\Collection - */ public function getUserwithoutTrashedAll()// Design pattern , Solid(1) { $data_user_all = User::withoutTrashed() @@ -28,9 +24,6 @@ public function getUserwithoutTrashedAll()// Design pattern , Solid(1) return $data_user_all; } - /** - * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator - */ public function getUserTrashedPaginated()// Design pattern , Solid(1) { $data_user = User::onlyTrashed() @@ -38,9 +31,6 @@ public function getUserTrashedPaginated()// Design pattern , Solid(1) return $data_user; } - /** - * @return \Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection|\Illuminate\Database\Query\Builder[]|\Illuminate\Support\Collection - */ public function getUserTrashedAll()// Design pattern , Solid(1) { $data_user_all = User::onlyTrashed() @@ -48,20 +38,51 @@ public function getUserTrashedAll()// Design pattern , Solid(1) return $data_user_all; } - /** - * @param $id - * @return mixed - */ public function restoreDeletedMobile($id)// Design pattern , Solid(1) { $restore_mobile = $this->getUserTrashedAll()->find($id)->restore(); return $restore_mobile; } - /** - * @param $user_emp_id - * @return mixed - */ + public function UserCheckCount($username1, $password1) + { + $data3 = User::where('Emd_id', '=', $username1) + ->where('password', '=', $password1) + ->count(); + return $data3; + } + + public function UserSearchBasedEmpID($user_emp_id) + { + $data_user = User::where('Emd_id', $user_emp_id) + ->paginate('25'); + return $data_user; + } + public function getUserAllPaginate($page) + { + $data_user = User::paginate($page); + return $data_user; + } + public function UserDeleteBasedID($id) + { + $del_mobile = User::where('id', $id)->delete(); + return $del_mobile; + } + public function UserForceDeleteByID($id) + { + $del_mobile_force = User::withTrashed()->where('id', $id)->forceDelete(); + return $del_mobile_force; + } + public function UsersearchBasedID($id_user) + { + $update_mobile_user = User::where('id', $id_user); + return $update_mobile_user; + } + public function UserUpdateMobile($id_user,$new_mobile) + { + $set_mobile_user = $this->UsersearchBasedID($id_user)->update(['mobile' => $new_mobile]); + return $set_mobile_user; + } } diff --git a/app/Http/Controllers/TelUserController.php b/app/Http/Controllers/TelUserController.php index 68cb889..60b7a5b 100644 --- a/app/Http/Controllers/TelUserController.php +++ b/app/Http/Controllers/TelUserController.php @@ -28,17 +28,14 @@ public function index(Request $request) public function CheckUser(Request $request) { + $telFunctionClasses=resolve(TepRepo::class); try { if ($request->ajax()) { //$data = DB::table('weblinks')->orderBy('id','desc')->get(); $username1 = $request->user1; $password1 = $request->pass1; - $data3 = DB::table('users') - ->select('*') - ->where('Emd_id', '=', $username1) - ->where('password', '=', $password1) - ->count(); + $data3 = $telFunctionClasses->UserCheckCount($username1, $password1); //->paginate(30); //echo $data3; @@ -130,11 +127,10 @@ public function restore_user(Request $request) public function prs_search(Request $request) { // $data_user=User::get(); + $telFunctionClasses=resolve(TepRepo::class); + $user_emp_id = $request->emp_id; - $data_user = DB::table('users') - ->select('*') - ->where('Emd_id', '=', $user_emp_id) - ->paginate('25'); + $data_user = $telFunctionClasses->UserSearchBasedEmpID($user_emp_id); return view('Results.usershowByPrs', compact('data_user')); @@ -143,20 +139,18 @@ public function prs_search(Request $request) public function FilterUser() { - $data_user = DB::table('users') - ->select('*') - ->paginate('20'); + $page=20; + $telFunctionClasses=resolve(TepRepo::class); + $data_user = $telFunctionClasses->getUserAllPaginate($page); return view('Results.user_management', compact('data_user')); } public function destroy($id) { - //User::find($id)->delete($id); -// DB::table('user_msg') -// ->where('id', $id) -// ->delete(); - $del_mobile = User::where('id', $id)->delete();// by the way the deleted_at generated in mysql + + $telFunctionClasses=resolve(TepRepo::class); + $del_mobile = $telFunctionClasses->UserDeleteBasedID($id);// by the way the deleted_at generated in mysql if ($del_mobile) { return response()->json([ 'success' => 'حذف با موفقیت صورت گرفت!' @@ -167,7 +161,8 @@ public function destroy($id) public function destroyForce($id) { - $del_mobile_force = User::withTrashed()->where('id', $id)->forceDelete();// by the way the deleted_at generated in mysql + $telFunctionClasses=resolve(TepRepo::class); + $del_mobile_force = $telFunctionClasses->UserForceDeleteByID($id);// by the way the deleted_at generated in mysql if ($del_mobile_force) { return response()->json([ 'success' => 'موبایل به طور کامل از دیتا بیس حذف گردید.' @@ -187,17 +182,15 @@ public function Update_mobile(Request $request) //if($request->ajax()) if ($request->ajax()) { + $telFunctionClasses=resolve(TepRepo::class); $user_mobile_new = $request->new_mobile; + $id_user=$request->id_ajax; $time2 = time(); //$time2=jdate('Y/n/j H:i:s'); //$time2="123456789"; try { // Validate the value... - $update_mobile_user = User::where('id', $request->id_ajax)// in this part I used to user_msg model for query - ->update(['mobile' => $user_mobile_new]); -// if(DB::table('user_msg') -// ->where('id', $request->id_ajax) -// ->update(['msg_response'=>$msg_admin1, 'date_response'=>$time2])) + $update_mobile_user = $telFunctionClasses->UserUpdateMobile($id_user,$user_mobile_new);//Use Design pattern and The first principal of Solid if ($update_mobile_user) { echo '
آپدیت موفقیت آمیز بود.
'; // return "ok";// for testing code by postman @@ -208,6 +201,7 @@ public function Update_mobile(Request $request) } } catch (Exception $e) { echo '
error exist in your code
'; + Log::log($e); //consloe.log($ex->getMessage()); //dd($e->getMessage()); //return false; @@ -230,5 +224,4 @@ public function telegram() } - } From e83b0d09293c1c76a2dcb91f4450777c2670f57a Mon Sep 17 00:00:00 2001 From: jamal azizbeigi Date: Sat, 14 Jan 2023 00:37:48 +0330 Subject: [PATCH 3/3] Using github.com/LaravelDaily/laravel-charts for Illutrating charts. 1) Fetching data from user model and exhebeting results in three charts 2) At the next time, try to use Redis instead og MySQL --- app/Decorates/Logger.php | 20 +++ app/Http/Controllers/TelUserController.php | 56 ++++++++- composer.json | 2 + composer.lock | 117 +++++++++++++++++- database/factories/UserFactory.php | 3 +- ...023_01_11_142824_create_sessions_table.php | 35 ++++++ .../2023_01_11_160040_create_cache_table.php | 39 ++++++ database/seeders/userseeder.php | 2 +- resources/views/Charts/UserStastics.blade.php | 25 ++++ resources/views/Charts/javascript.blade.php | 67 ++++++++++ resources/views/Login/AdminLTE.blade.php | 6 +- resources/views/layouts/AdminLayout.blade.php | 6 +- routes/web.php | 8 +- 13 files changed, 374 insertions(+), 12 deletions(-) create mode 100644 app/Decorates/Logger.php create mode 100644 database/migrations/2023_01_11_142824_create_sessions_table.php create mode 100644 database/migrations/2023_01_11_160040_create_cache_table.php create mode 100644 resources/views/Charts/UserStastics.blade.php create mode 100644 resources/views/Charts/javascript.blade.php diff --git a/app/Decorates/Logger.php b/app/Decorates/Logger.php new file mode 100644 index 0000000..4ff0f03 --- /dev/null +++ b/app/Decorates/Logger.php @@ -0,0 +1,20 @@ +call($callable,[$param]); + Log::info('param is: '.implode(',',$param).'and result is: '.$result); + }; + + } + +} diff --git a/app/Http/Controllers/TelUserController.php b/app/Http/Controllers/TelUserController.php index 60b7a5b..21d3415 100644 --- a/app/Http/Controllers/TelUserController.php +++ b/app/Http/Controllers/TelUserController.php @@ -13,6 +13,7 @@ use Illuminate\Support\Facades\DB; use App\Exports\ExportUser; use Illuminate\Support\Facades\Log; +use LaravelDaily\LaravelCharts\Classes\LaravelChart; use Maatwebsite\Excel\Facades\Excel; use App\Notifications\SendNotification; use \App\Notifications\TelegramNotification; @@ -23,7 +24,24 @@ class TelUserController extends Controller // public function index(Request $request) { - return "Welcome to TelUser Project"; +// $user_ip=$request->ip(); +// $user_agent=$request->userAgent(); +// Cache::store('database')->increment('visit_page_cache'); +// Cache::store('file')->forever('visit_page_cache',1); + + try{ + Cache::store('database')->put('visit_page_cache',1,20); + +// if(!session()->has('ip_address') and !session()->has('user_agent') ) +// { +// session(['ip_address' => $user_ip]); +// session(['user_agent' => $user_agent]); +// } + } + catch (\Exception $e){ + Log::error($e); + } + return view('welcome'); } public function CheckUser(Request $request) @@ -94,11 +112,47 @@ public function adminLTE() $telFunctionClasses=resolve(TepRepo::class); $data_user = $telFunctionClasses->getUserwithoutTrashedPaginated(); $data_user_all = $telFunctionClasses->getUserwithoutTrashedAll(); + + + // echo "Find ID successfuly "; return view('Login.AdminLTE', compact('data_user', 'data_user_all')); // redirect('Login.AdminLTE'); } + public function UserStastics(Request $request) + { +// $chart_options = [ +// 'chart_title' => 'Users by months', +// 'report_type' => 'group_by_date', +// 'model' => 'App\Models\User', +// 'group_by_field' => 'created_at', +// 'group_by_period' => 'week', +// 'chart_type' => 'bar', +//// 'conditions' => [ +//// ['name' => 'UserLogin', 'condition' => 'category_id = 1', 'color' => 'yellow', 'fill' => true] +//// ], +// +// ]; + + $chart_options = [ + 'chart_title' => 'Transactions by dates', + 'report_type' => 'group_by_date', + 'model' => 'App\Models\User', + 'group_by_field' => 'created_at', + 'group_by_period' => 'month', +// 'aggregate_function' => 'sum', +// 'aggregate_field' => 'amount', + 'chart_type' => 'line', + ]; + try { + $chart1 = new LaravelChart($chart_options); + } catch (\Exception $e) { + Log::error($e); + } + return view('Charts.UserStastics',compact('chart1')); + } + public function Deleted_Mobile_users() { // $data_user=User::get(); diff --git a/composer.json b/composer.json index 3968196..3677230 100644 --- a/composer.json +++ b/composer.json @@ -9,12 +9,14 @@ "babenkoivan/telegram-notifications": "^1.1", "doctrine/dbal": "*", "guzzlehttp/guzzle": "^7.2", + "imanghafoori/laravel-decorator": "^1.0", "irazasyed/telegram-bot-sdk": "^3.9", "laravel-notification-channels/telegram": "^3.0", "laravel/framework": "^9.19", "laravel/sanctum": "^3.0", "laravel/tinker": "^2.7", "laravel/ui": "^4.1", + "laraveldaily/laravel-charts": "^0.1.29", "maatwebsite/excel": "^3.1", "psr/simple-cache": "1.0" }, diff --git a/composer.lock b/composer.lock index c304c9c..c55c3c8 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "240fd4316c8225614381be3ba8c2ad4e", + "content-hash": "8e181a3811332f9128397b925ddbc52d", "packages": [ { "name": "babenkoivan/telegram-notifications", @@ -1352,6 +1352,77 @@ ], "time": "2022-10-26T14:07:24+00:00" }, + { + "name": "imanghafoori/laravel-decorator", + "version": "v1.0.7", + "source": { + "type": "git", + "url": "https://github.com/imanghafoori1/laravel-decorator.git", + "reference": "797da654524b896b0ad348d304051905270e344d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/imanghafoori1/laravel-decorator/zipball/797da654524b896b0ad348d304051905270e344d", + "reference": "797da654524b896b0ad348d304051905270e344d", + "shasum": "" + }, + "require": { + "laravel/framework": "~5.1|6.*|7.*|8.*|9.*|10.*", + "php": "7.2.*|7.3.*|7.4.*|8.0.*|8.1.*|8.2.*" + }, + "require-dev": { + "orchestra/testbench": "~6.0", + "squizlabs/php_codesniffer": "3.*" + }, + "suggest": { + "imanghafoori/laravel-anypass": " Allows you login with any password in local environment.", + "imanghafoori/laravel-heyman": "It allows to write expressive code to authorize, validate and authenticate.", + "imanghafoori/laravel-masterpass": "You can set a master password for your accounts.", + "imanghafoori/laravel-widgetize": "Gives you a better structure and caching opportunity for your laravel apps." + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Imanghafoori\\Decorator\\DecoratorServiceProvider" + ], + "aliases": { + "Decorator": "Imanghafoori\\Decorator\\Facade" + } + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Imanghafoori\\Decorator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Iman Ghafoori", + "email": "imanghafoori1@gmail.com" + } + ], + "description": "A package to easily decorate your function calls.", + "homepage": "https://github.com/imanghafoori1/laravel-decorator", + "keywords": [ + "decorator pattern", + "design patterns", + "laravel", + "php decorator pattern" + ], + "support": { + "issues": "https://github.com/imanghafoori1/laravel-decorator/issues", + "source": "https://github.com/imanghafoori1/laravel-decorator/tree/v1.0.7" + }, + "time": "2022-05-03T10:23:36+00:00" + }, { "name": "irazasyed/telegram-bot-sdk", "version": "v3.9", @@ -1942,6 +2013,50 @@ }, "time": "2022-12-05T15:09:21+00:00" }, + { + "name": "laraveldaily/laravel-charts", + "version": "0.1.29", + "source": { + "type": "git", + "url": "https://github.com/LaravelDaily/laravel-charts.git", + "reference": "ed91d6e7dedabec8eb3c71cca0a22c8616faea01" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/LaravelDaily/laravel-charts/zipball/ed91d6e7dedabec8eb3c71cca0a22c8616faea01", + "reference": "ed91d6e7dedabec8eb3c71cca0a22c8616faea01", + "shasum": "" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "LaravelDaily\\LaravelCharts\\LaravelChartsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "LaravelDaily\\LaravelCharts\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Povilas Korop", + "email": "povilas@laraveldaily.com" + } + ], + "description": "Create charts and reports from Laravel", + "support": { + "issues": "https://github.com/LaravelDaily/laravel-charts/issues", + "source": "https://github.com/LaravelDaily/laravel-charts/tree/0.1.29" + }, + "time": "2022-01-04T04:41:41+00:00" + }, { "name": "league/commonmark", "version": "2.3.7", diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index 34d1b0f..caee022 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -25,7 +25,8 @@ public function definition() 'family'=>fake()->lastName(), 'type'=>fake()->randomElement(['user', 'admin']), // 'type'=>new Sequence('user','admin'), - 'password' => fake()->numberBetween(100000,999999), + 'password' => fake()->numberBetween(1000000,999999), + 'created_at'=>fake()->dateTimeBetween("-1000 day", now()), ]; } diff --git a/database/migrations/2023_01_11_142824_create_sessions_table.php b/database/migrations/2023_01_11_142824_create_sessions_table.php new file mode 100644 index 0000000..06c3e45 --- /dev/null +++ b/database/migrations/2023_01_11_142824_create_sessions_table.php @@ -0,0 +1,35 @@ +string('id')->primary(); + $table->foreignId('user_id')->nullable()->index(); + $table->string('ip_address', 45)->nullable(); + $table->text('user_agent')->nullable(); + $table->longText('payload'); + $table->integer('last_activity')->index(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('sessions'); + } +}; diff --git a/database/migrations/2023_01_11_160040_create_cache_table.php b/database/migrations/2023_01_11_160040_create_cache_table.php new file mode 100644 index 0000000..eee35e9 --- /dev/null +++ b/database/migrations/2023_01_11_160040_create_cache_table.php @@ -0,0 +1,39 @@ +string('key')->primary(); + $table->mediumText('value'); + $table->integer('expiration'); + }); + + Schema::create('cache_locks', function (Blueprint $table) { + $table->string('key')->primary(); + $table->string('owner'); + $table->integer('expiration'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('cache'); + Schema::dropIfExists('cache_locks'); + } +}; diff --git a/database/seeders/userseeder.php b/database/seeders/userseeder.php index 09e75e4..227b411 100644 --- a/database/seeders/userseeder.php +++ b/database/seeders/userseeder.php @@ -17,7 +17,7 @@ public function run() { // User::truncate(); - $user=User::factory()->count(50)->create(); + $user=User::factory()->count(1000)->create(); } } diff --git a/resources/views/Charts/UserStastics.blade.php b/resources/views/Charts/UserStastics.blade.php new file mode 100644 index 0000000..adbe098 --- /dev/null +++ b/resources/views/Charts/UserStastics.blade.php @@ -0,0 +1,25 @@ +@extends('layouts.AdminLayout') +@section('content') +
+
+
+
+
Dashboard
+ +
+ +

{{ $chart1->options['chart_title'] }}

+ {!! $chart1->renderHtml() !!} + +
+ +
+
+
+
+@endsection + +@section('javascript') + {!! $chart1->renderChartJsLibrary() !!} + {!! $chart1->renderJs() !!} +@endsection diff --git a/resources/views/Charts/javascript.blade.php b/resources/views/Charts/javascript.blade.php new file mode 100644 index 0000000..2644f29 --- /dev/null +++ b/resources/views/Charts/javascript.blade.php @@ -0,0 +1,67 @@ + diff --git a/resources/views/Login/AdminLTE.blade.php b/resources/views/Login/AdminLTE.blade.php index b144bd5..82f72e8 100644 --- a/resources/views/Login/AdminLTE.blade.php +++ b/resources/views/Login/AdminLTE.blade.php @@ -35,7 +35,7 @@ id }}>{{ $value->Emd_id }} id }}>{{ $value->name }} id }}>{{ $value->family }} - id }}>{{ $value->mobile }} + id }}>{{ $value->mobile }} @@ -125,7 +125,7 @@ function(a) { return a.charCodeAt(0) & 0xf } // Remove the Unicode base(2) r document.getElementById("demo").innerHTML =""; for (i = 0; i < tr.length; i++) {// repeat this loop for each row of table td = tr[i].getElementsByTagName("td")[radioValue]; - + if (td) { txtValue = td.textContent || td.innerText; @@ -137,7 +137,7 @@ function(a) { return a.charCodeAt(0) & 0xf } // Remove the Unicode base(2) r // }) } - + if (txtValue.toLowerCase().indexOf(input) > -1) { flag++; tr[i].style.display = ""; diff --git a/resources/views/layouts/AdminLayout.blade.php b/resources/views/layouts/AdminLayout.blade.php index 23fd44e..b68b972 100644 --- a/resources/views/layouts/AdminLayout.blade.php +++ b/resources/views/layouts/AdminLayout.blade.php @@ -219,7 +219,7 @@ class="w3-button w3-display-topright">×
- اطلاعات بیشتر + اطلاعات بیشتر @@ -251,12 +251,15 @@ class="w3-button w3-display-topright">× اطلاعات بیشتر +
{{-- This place is for content --}} @yield('content') + @yield('javascript') +
@@ -360,4 +363,3 @@ function Make_Snow() { } - diff --git a/routes/web.php b/routes/web.php index ed50566..d4c35f4 100644 --- a/routes/web.php +++ b/routes/web.php @@ -15,9 +15,10 @@ | */ -Route::get('/', function () { - return view('welcome'); -}); +//Route::get('/', function () { +// return view('welcome'); +//}); +Route::get('/', [App\Http\Controllers\TelUserController::class,'index']); Route::get('/loginlogin', function (){ return view('Login.login'); }); @@ -35,6 +36,7 @@ Route::get('/telegram', [TelUserController::class, 'telegram'])->name('telegram'); Route::get('/updated-activity', [TelegramBotController::class,'updatedActivity'])->name('updated-activity'); Route::get('/call_madeline', [TelegramBotController::class,'call_madeline']); +Route::get('/UserStastics', [App\Http\Controllers\TelUserController::class,'UserStastics']);