diff --git a/app/Http/Controllers/Backend/DashboardController.php b/app/Http/Controllers/Backend/DashboardController.php
index 2881a63..e138e3f 100644
--- a/app/Http/Controllers/Backend/DashboardController.php
+++ b/app/Http/Controllers/Backend/DashboardController.php
@@ -4,11 +4,23 @@
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
+use App\Models\Hasil;
+use App\Models\User;
+
+use Illuminate\Support\Facades\DB;
class DashboardController extends Controller
{
- //
- public function index(){
- return view('backend.dashboard');
- }
+ public function index()
+ {
+ $kmCounts = Hasil::select('km_class', DB::raw('count(*) as total'))
+ ->groupBy('km_class')
+ ->orderByRaw("FIELD(km_class, 'High', 'Medium', 'Low')")
+ ->get();
+ $rmCounts = Hasil::select('rm_class', DB::raw('count(*) as total'))
+ ->groupBy('rm_class')
+ ->orderByRaw("FIELD(rm_class, 'High', 'Medium', 'Low')")
+ ->get();
+ return view('backend.dashboard', compact('kmCounts', 'rmCounts'));
+ }
}
diff --git a/app/Http/Controllers/Backend/ProfileController.php b/app/Http/Controllers/Backend/ProfileController.php
index daa3527..0d44679 100644
--- a/app/Http/Controllers/Backend/ProfileController.php
+++ b/app/Http/Controllers/Backend/ProfileController.php
@@ -2,12 +2,66 @@
namespace App\Http\Controllers\Backend;
+
use App\Http\Controllers\Controller;
+use App\Models\User;
use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Auth;
class ProfileController extends Controller
{
- public function index(){
+ public function index()
+ {
return view('backend.users-profile');
- }
+ }
+
+ public function update(Request $request)
+ {
+ // Validate the request data (you can add more validation rules)
+ $validatedData = $request->validate([
+ 'nama_lengkap' => 'required',
+ 'nim' => 'required',
+ 'semester' => 'required',
+ 'angkatan' => 'required',
+ 'profile_image' => 'image|mimes:jpeg,png,jpg,gif|max:2048',
+ ]);
+
+ if ($request->hasFile('profile_image')) {
+ $image = $request->file('profile_image');
+ $imagePath = $image->store('images', 'public');
+ }
+
+ $user = User::findOrFail(auth()->user()->id);
+ $user->nama_lengkap = $request->input('nama_lengkap');
+ $user->nim = $request->input('nim');
+ $user->semester = $request->input('semester');
+ $user->angkatan = $request->input('angkatan');
+ $user->foto = $imagePath;
+ $user->update();
+
+ return redirect('/dashboard')->with('success', 'Profile updated successfully1');
+ }
+
+ public function changePassword(Request $request)
+ {
+ $request->validate([
+ 'current_password' => 'required',
+ 'new_password' => 'required|string|min:8|confirmed',
+ ], [
+ 'new_password.min' => 'Password tidak boleh kurang dari 8 karakter',
+ ]);
+
+ $user = Auth::user();
+
+ // Verify the current password using the fully qualified namespace
+ if (!\Illuminate\Support\Facades\Hash::check($request->input('current_password'), $user->password)) {
+ return redirect()->back()->with('error', 'Current password is incorrect');
+ }
+
+ // Update the password
+ $user->password = \Illuminate\Support\Facades\Hash::make($request->input('new_password'));
+ $user->save();
+
+ return redirect()->back()->with('success', 'Password changed successfully');
+ }
}
diff --git a/public/css/app.css b/public/css/app.css
index 345f10e..d921176 100644
--- a/public/css/app.css
+++ b/public/css/app.css
@@ -11980,18 +11980,3 @@ @media print {
display: none !important;
}
}
-
-.hero-image {
- background-image: url("../admin_backend/assets/img/bg_login.png");
- background-color: #2c07d0;
- /* height: 100%; */
- background-position: right center;
- background-repeat: no-repeat;
- background-size: cover;
- position: relative;
-}
-
-.hero-bg{
- background-color: #2c07d0;
-}
-
diff --git a/public/js/app.js b/public/js/app.js
index cf3c9fa..f31b7b4 100644
--- a/public/js/app.js
+++ b/public/js/app.js
@@ -949,7 +949,7 @@ eval("\n\nvar bind = __webpack_require__(/*! ./helpers/bind */ \"./node_modules/
\*****************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
-eval("__webpack_require__(/*! ./bootstrap */ \"./resources/js/bootstrap.js\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvYXBwLmpzIiwibWFwcGluZ3MiOiJBQUFBQSxtQkFBTyxDQUFDLGdEQUFhLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvYXBwLmpzP2NlZDYiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi9ib290c3RyYXAnKTtcbiJdLCJuYW1lcyI6WyJyZXF1aXJlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/app.js\n");
+eval("__webpack_require__(/*! ./bootstrap */ \"./resources/js/bootstrap.js\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvYXBwLmpzIiwibWFwcGluZ3MiOiJBQUFBQSxtQkFBTyxDQUFDLGdEQUFhLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvYXBwLmpzP2NlZDYiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi9ib290c3RyYXAnKTtcclxuIl0sIm5hbWVzIjpbInJlcXVpcmUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/app.js\n");
/***/ }),
@@ -959,7 +959,7 @@ eval("__webpack_require__(/*! ./bootstrap */ \"./resources/js/bootstrap.js\");//
\***********************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
-eval("window._ = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\ntry {\n __webpack_require__(/*! bootstrap */ \"./node_modules/bootstrap/dist/js/bootstrap.esm.js\");\n} catch (e) {}\n\n/**\n * We'll load the axios HTTP library which allows us to easily issue requests\n * to our Laravel back-end. This library automatically handles sending the\n * CSRF token as a header based on the value of the \"XSRF\" token cookie.\n */\n\nwindow.axios = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\nwindow.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n\n/**\n * Echo exposes an expressive API for subscribing to channels and listening\n * for events that are broadcast by Laravel. Echo and event broadcasting\n * allows your team to easily build robust real-time web applications.\n */\n\n// import Echo from 'laravel-echo';\n\n// window.Pusher = require('pusher-js');\n\n// window.Echo = new Echo({\n// broadcaster: 'pusher',\n// key: process.env.MIX_PUSHER_APP_KEY,\n// cluster: process.env.MIX_PUSHER_APP_CLUSTER,\n// forceTLS: true\n// });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvYm9vdHN0cmFwLmpzIiwibWFwcGluZ3MiOiJBQUFBQSxNQUFNLENBQUNDLENBQUMsR0FBR0MsbUJBQU8sQ0FBQywrQ0FBUSxDQUFDO0FBRTVCLElBQUk7RUFDQUEsbUJBQU8sQ0FBQyxvRUFBVyxDQUFDO0FBQ3hCLENBQUMsQ0FBQyxPQUFPQyxDQUFDLEVBQUUsQ0FBQzs7QUFFYjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBSCxNQUFNLENBQUNJLEtBQUssR0FBR0YsbUJBQU8sQ0FBQyw0Q0FBTyxDQUFDO0FBRS9CRixNQUFNLENBQUNJLEtBQUssQ0FBQ0MsUUFBUSxDQUFDQyxPQUFPLENBQUNDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLGdCQUFnQjs7QUFFM0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvYm9vdHN0cmFwLmpzPzZkZTciXSwic291cmNlc0NvbnRlbnQiOlsid2luZG93Ll8gPSByZXF1aXJlKCdsb2Rhc2gnKTtcblxudHJ5IHtcbiAgICByZXF1aXJlKCdib290c3RyYXAnKTtcbn0gY2F0Y2ggKGUpIHt9XG5cbi8qKlxuICogV2UnbGwgbG9hZCB0aGUgYXhpb3MgSFRUUCBsaWJyYXJ5IHdoaWNoIGFsbG93cyB1cyB0byBlYXNpbHkgaXNzdWUgcmVxdWVzdHNcbiAqIHRvIG91ciBMYXJhdmVsIGJhY2stZW5kLiBUaGlzIGxpYnJhcnkgYXV0b21hdGljYWxseSBoYW5kbGVzIHNlbmRpbmcgdGhlXG4gKiBDU1JGIHRva2VuIGFzIGEgaGVhZGVyIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiB0aGUgXCJYU1JGXCIgdG9rZW4gY29va2llLlxuICovXG5cbndpbmRvdy5heGlvcyA9IHJlcXVpcmUoJ2F4aW9zJyk7XG5cbndpbmRvdy5heGlvcy5kZWZhdWx0cy5oZWFkZXJzLmNvbW1vblsnWC1SZXF1ZXN0ZWQtV2l0aCddID0gJ1hNTEh0dHBSZXF1ZXN0JztcblxuLyoqXG4gKiBFY2hvIGV4cG9zZXMgYW4gZXhwcmVzc2l2ZSBBUEkgZm9yIHN1YnNjcmliaW5nIHRvIGNoYW5uZWxzIGFuZCBsaXN0ZW5pbmdcbiAqIGZvciBldmVudHMgdGhhdCBhcmUgYnJvYWRjYXN0IGJ5IExhcmF2ZWwuIEVjaG8gYW5kIGV2ZW50IGJyb2FkY2FzdGluZ1xuICogYWxsb3dzIHlvdXIgdGVhbSB0byBlYXNpbHkgYnVpbGQgcm9idXN0IHJlYWwtdGltZSB3ZWIgYXBwbGljYXRpb25zLlxuICovXG5cbi8vIGltcG9ydCBFY2hvIGZyb20gJ2xhcmF2ZWwtZWNobyc7XG5cbi8vIHdpbmRvdy5QdXNoZXIgPSByZXF1aXJlKCdwdXNoZXItanMnKTtcblxuLy8gd2luZG93LkVjaG8gPSBuZXcgRWNobyh7XG4vLyAgICAgYnJvYWRjYXN0ZXI6ICdwdXNoZXInLFxuLy8gICAgIGtleTogcHJvY2Vzcy5lbnYuTUlYX1BVU0hFUl9BUFBfS0VZLFxuLy8gICAgIGNsdXN0ZXI6IHByb2Nlc3MuZW52Lk1JWF9QVVNIRVJfQVBQX0NMVVNURVIsXG4vLyAgICAgZm9yY2VUTFM6IHRydWVcbi8vIH0pO1xuIl0sIm5hbWVzIjpbIndpbmRvdyIsIl8iLCJyZXF1aXJlIiwiZSIsImF4aW9zIiwiZGVmYXVsdHMiLCJoZWFkZXJzIiwiY29tbW9uIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/bootstrap.js\n");
+eval("window._ = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\ntry {\n __webpack_require__(/*! bootstrap */ \"./node_modules/bootstrap/dist/js/bootstrap.esm.js\");\n} catch (e) {}\n\n/**\r\n * We'll load the axios HTTP library which allows us to easily issue requests\r\n * to our Laravel back-end. This library automatically handles sending the\r\n * CSRF token as a header based on the value of the \"XSRF\" token cookie.\r\n */\n\nwindow.axios = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\nwindow.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n\n/**\r\n * Echo exposes an expressive API for subscribing to channels and listening\r\n * for events that are broadcast by Laravel. Echo and event broadcasting\r\n * allows your team to easily build robust real-time web applications.\r\n */\n\n// import Echo from 'laravel-echo';\n\n// window.Pusher = require('pusher-js');\n\n// window.Echo = new Echo({\n// broadcaster: 'pusher',\n// key: process.env.MIX_PUSHER_APP_KEY,\n// cluster: process.env.MIX_PUSHER_APP_CLUSTER,\n// forceTLS: true\n// });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvYm9vdHN0cmFwLmpzIiwibWFwcGluZ3MiOiJBQUFBQSxNQUFNLENBQUNDLENBQUMsR0FBR0MsbUJBQU8sQ0FBQywrQ0FBUSxDQUFDO0FBRTVCLElBQUk7RUFDQUEsbUJBQU8sQ0FBQyxvRUFBVyxDQUFDO0FBQ3hCLENBQUMsQ0FBQyxPQUFPQyxDQUFDLEVBQUUsQ0FBQzs7QUFFYjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBSCxNQUFNLENBQUNJLEtBQUssR0FBR0YsbUJBQU8sQ0FBQyw0Q0FBTyxDQUFDO0FBRS9CRixNQUFNLENBQUNJLEtBQUssQ0FBQ0MsUUFBUSxDQUFDQyxPQUFPLENBQUNDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLGdCQUFnQjs7QUFFM0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvYm9vdHN0cmFwLmpzPzZkZTciXSwic291cmNlc0NvbnRlbnQiOlsid2luZG93Ll8gPSByZXF1aXJlKCdsb2Rhc2gnKTtcclxuXHJcbnRyeSB7XHJcbiAgICByZXF1aXJlKCdib290c3RyYXAnKTtcclxufSBjYXRjaCAoZSkge31cclxuXHJcbi8qKlxyXG4gKiBXZSdsbCBsb2FkIHRoZSBheGlvcyBIVFRQIGxpYnJhcnkgd2hpY2ggYWxsb3dzIHVzIHRvIGVhc2lseSBpc3N1ZSByZXF1ZXN0c1xyXG4gKiB0byBvdXIgTGFyYXZlbCBiYWNrLWVuZC4gVGhpcyBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgaGFuZGxlcyBzZW5kaW5nIHRoZVxyXG4gKiBDU1JGIHRva2VuIGFzIGEgaGVhZGVyIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiB0aGUgXCJYU1JGXCIgdG9rZW4gY29va2llLlxyXG4gKi9cclxuXHJcbndpbmRvdy5heGlvcyA9IHJlcXVpcmUoJ2F4aW9zJyk7XHJcblxyXG53aW5kb3cuYXhpb3MuZGVmYXVsdHMuaGVhZGVycy5jb21tb25bJ1gtUmVxdWVzdGVkLVdpdGgnXSA9ICdYTUxIdHRwUmVxdWVzdCc7XHJcblxyXG4vKipcclxuICogRWNobyBleHBvc2VzIGFuIGV4cHJlc3NpdmUgQVBJIGZvciBzdWJzY3JpYmluZyB0byBjaGFubmVscyBhbmQgbGlzdGVuaW5nXHJcbiAqIGZvciBldmVudHMgdGhhdCBhcmUgYnJvYWRjYXN0IGJ5IExhcmF2ZWwuIEVjaG8gYW5kIGV2ZW50IGJyb2FkY2FzdGluZ1xyXG4gKiBhbGxvd3MgeW91ciB0ZWFtIHRvIGVhc2lseSBidWlsZCByb2J1c3QgcmVhbC10aW1lIHdlYiBhcHBsaWNhdGlvbnMuXHJcbiAqL1xyXG5cclxuLy8gaW1wb3J0IEVjaG8gZnJvbSAnbGFyYXZlbC1lY2hvJztcclxuXHJcbi8vIHdpbmRvdy5QdXNoZXIgPSByZXF1aXJlKCdwdXNoZXItanMnKTtcclxuXHJcbi8vIHdpbmRvdy5FY2hvID0gbmV3IEVjaG8oe1xyXG4vLyAgICAgYnJvYWRjYXN0ZXI6ICdwdXNoZXInLFxyXG4vLyAgICAga2V5OiBwcm9jZXNzLmVudi5NSVhfUFVTSEVSX0FQUF9LRVksXHJcbi8vICAgICBjbHVzdGVyOiBwcm9jZXNzLmVudi5NSVhfUFVTSEVSX0FQUF9DTFVTVEVSLFxyXG4vLyAgICAgZm9yY2VUTFM6IHRydWVcclxuLy8gfSk7XHJcbiJdLCJuYW1lcyI6WyJ3aW5kb3ciLCJfIiwicmVxdWlyZSIsImUiLCJheGlvcyIsImRlZmF1bHRzIiwiaGVhZGVycyIsImNvbW1vbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./resources/js/bootstrap.js\n");
/***/ }),
diff --git a/public/profile_images/1699193588.jpg b/public/profile_images/1699193588.jpg
new file mode 100644
index 0000000..cb0a641
Binary files /dev/null and b/public/profile_images/1699193588.jpg differ
diff --git a/public/profile_images/1699193657.jpg b/public/profile_images/1699193657.jpg
new file mode 100644
index 0000000..cb0a641
Binary files /dev/null and b/public/profile_images/1699193657.jpg differ
diff --git a/resources/views/admin_backend/admin_profile.blade.php b/resources/views/admin_backend/admin_profile.blade.php
index 5b25fb1..5e663e3 100644
--- a/resources/views/admin_backend/admin_profile.blade.php
+++ b/resources/views/admin_backend/admin_profile.blade.php
@@ -1,11 +1,186 @@
@extends('admin_backend/layouts.template')
@section('content')
- Profile
+
+
+
Raditya Arief Pratama
+ Teknik Informatika
+ Profile Details
+
+
Regulation of Metacognitif (RM) adalah............
+# | -Customer | -Product | -Price | -Status | -
---|---|---|---|---|
#2457 | -Brandon Jacob | -At praesentium minu | -$64 | -Approved | -
#2147 | -Bridie Kessler | -Blanditiis dolor omnis similique | -$47 | -Pending | -
#2049 | -Ashleigh Langosh | -At recusandae consectetur | -$147 | -Approved | -
#2644 | -Angus Grady | -Ut voluptatem id earum et | -$67 | -Rejected | -
#2644 | -Raheem Lehner | -Sunt similique distinctio | -$165 | -Approved | -
Preview | -Product | -Price | -Sold | -Revenue | -
---|---|---|---|---|
![]() |
- Ut inventore ipsa voluptas nulla | -$64 | -124 | -$5,828 | -
![]() |
- Exercitationem similique doloremque | -$46 | -98 | -$4,508 | -
![]() |
- Doloribus nisi exercitationem | -$59 | -74 | -$4,366 | -
![]() |
- Officiis quaerat sint rerum error | -$32 | -63 | -$2,016 | -
![]() |
- Sit unde debitis delectus repellendus | -$79 | -41 | -$3,239 | -
Sit recusandae non aspernatur laboriosam. Quia enim eligendi sed ut harum...
-Illo nemo neque maiores vitae officiis cum eum turos elan dries werona nande...
-Fugiat voluptas vero eaque accusantium eos. Consequuntur sed ipsam et totam...
-Qui enim quia optio. Eligendi aut asperiores enim repellendusvel rerum cuder...
-Odit ut eveniet modi reiciendis. Atque cupiditate libero beatae dignissimos eius...
-