diff --git a/Diagram.mdj b/Diagram.mdj index 5e97374..f8eab55 100644 --- a/Diagram.mdj +++ b/Diagram.mdj @@ -2518,6 +2518,487 @@ "headNameLabel": { "$ref": "AAAAAAFyktFfi0G3a2o=" } + }, + { + "_type": "RectangleView", + "_id": "AAAAAAFzmS7LcWMLwXs=", + "_parent": { + "$ref": "AAAAAAFyJv8bdYmeyX0=" + }, + "font": "Arial;13;0", + "left": 1128, + "top": 288, + "width": 937, + "height": 225 + }, + { + "_type": "UMLTextView", + "_id": "AAAAAAFzmS8SCGMPFm8=", + "_parent": { + "$ref": "AAAAAAFyJv8bdYmeyX0=" + }, + "font": "Arial;13;0", + "left": 1160, + "top": 304, + "width": 60, + "height": 25, + "text": "Events" + }, + { + "_type": "ERDEntityView", + "_id": "AAAAAAFzmS+aamMoovQ=", + "_parent": { + "$ref": "AAAAAAFyJv8bdYmeyX0=" + }, + "model": { + "$ref": "AAAAAAFzmS+aamMmKco=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFzmS+aamMp18A=", + "_parent": { + "$ref": "AAAAAAFzmS+aamMoovQ=" + }, + "font": "Arial;13;1", + "left": 1144, + "top": 373, + "width": 195.45166015625, + "height": 13, + "text": "events" + }, + { + "_type": "ERDColumnCompartmentView", + "_id": "AAAAAAFzmS+aamMqMjs=", + "_parent": { + "$ref": "AAAAAAFzmS+aamMoovQ=" + }, + "model": { + "$ref": "AAAAAAFzmS+aamMmKco=" + }, + "subViews": [ + { + "_type": "ERDColumnView", + "_id": "AAAAAAFzmS+hNmM1gqI=", + "_parent": { + "$ref": "AAAAAAFzmS+aamMqMjs=" + }, + "model": { + "$ref": "AAAAAAFzmS+hAGMyFxQ=" + }, + "font": "Arial;13;0", + "left": 1149, + "top": 396, + "width": 185.45166015625, + "height": 13 + }, + { + "_type": "ERDColumnView", + "_id": "AAAAAAFzmTAruGM/Lp8=", + "_parent": { + "$ref": "AAAAAAFzmS+aamMqMjs=" + }, + "model": { + "$ref": "AAAAAAFzmTArgGM8P34=" + }, + "font": "Arial;13;0", + "left": 1149, + "top": 411, + "width": 185.45166015625, + "height": 13 + }, + { + "_type": "ERDColumnView", + "_id": "AAAAAAFzmTKxaGNOze0=", + "_parent": { + "$ref": "AAAAAAFzmS+aamMqMjs=" + }, + "model": { + "$ref": "AAAAAAFzmTKxMGNLYfU=" + }, + "font": "Arial;13;0", + "left": 1149, + "top": 426, + "width": 185.45166015625, + "height": 13 + }, + { + "_type": "ERDColumnView", + "_id": "AAAAAAFzmTMsZ2NV6ug=", + "_parent": { + "$ref": "AAAAAAFzmS+aamMqMjs=" + }, + "model": { + "$ref": "AAAAAAFzmTMsN2NSMr0=" + }, + "font": "Arial;13;0", + "left": 1149, + "top": 441, + "width": 185.45166015625, + "height": 13 + } + ], + "font": "Arial;13;0", + "left": 1144, + "top": 391, + "width": 195.45166015625, + "height": 68 + } + ], + "font": "Arial;13;0", + "left": 1144, + "top": 368, + "width": 195.45166015625, + "height": 91, + "nameLabel": { + "$ref": "AAAAAAFzmS+aamMp18A=" + }, + "columnCompartment": { + "$ref": "AAAAAAFzmS+aamMqMjs=" + } + }, + { + "_type": "ERDEntityView", + "_id": "AAAAAAFzmTUSMWOxglk=", + "_parent": { + "$ref": "AAAAAAFyJv8bdYmeyX0=" + }, + "model": { + "$ref": "AAAAAAFzmTUSMGOvbdY=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFzmTUSMWOysPE=", + "_parent": { + "$ref": "AAAAAAFzmTUSMWOxglk=" + }, + "font": "Arial;13;1", + "left": 1488, + "top": 341, + "width": 176, + "height": 13, + "text": "user_events" + }, + { + "_type": "ERDColumnCompartmentView", + "_id": "AAAAAAFzmTUSMWOzIXA=", + "_parent": { + "$ref": "AAAAAAFzmTUSMWOxglk=" + }, + "model": { + "$ref": "AAAAAAFzmTUSMGOvbdY=" + }, + "subViews": [ + { + "_type": "ERDColumnView", + "_id": "AAAAAAFzmTUsRWO/CkM=", + "_parent": { + "$ref": "AAAAAAFzmTUSMWOzIXA=" + }, + "model": { + "$ref": "AAAAAAFzmTUsD2O8Tv0=" + }, + "font": "Arial;13;0", + "left": 1493, + "top": 364, + "width": 166, + "height": 13 + }, + { + "_type": "ERDColumnView", + "_id": "AAAAAAFzmTVGV2PGQ0M=", + "_parent": { + "$ref": "AAAAAAFzmTUSMWOzIXA=" + }, + "model": { + "$ref": "AAAAAAFzmTVGIWPD9D4=" + }, + "font": "Arial;13;0", + "left": 1493, + "top": 379, + "width": 166, + "height": 13 + }, + { + "_type": "ERDColumnView", + "_id": "AAAAAAFzmTVY/GPNcbw=", + "_parent": { + "$ref": "AAAAAAFzmTUSMWOzIXA=" + }, + "model": { + "$ref": "AAAAAAFzmTVYxmPKgHI=" + }, + "font": "Arial;13;0", + "left": 1493, + "top": 394, + "width": 166, + "height": 13 + } + ], + "font": "Arial;13;0", + "left": 1488, + "top": 359, + "width": 176, + "height": 53 + } + ], + "font": "Arial;13;0", + "left": 1488, + "top": 336, + "width": 176, + "height": 96, + "nameLabel": { + "$ref": "AAAAAAFzmTUSMWOysPE=" + }, + "columnCompartment": { + "$ref": "AAAAAAFzmTUSMWOzIXA=" + } + }, + { + "_type": "ERDRelationshipView", + "_id": "AAAAAAFzmTidSGPovGU=", + "_parent": { + "$ref": "AAAAAAFyJv8bdYmeyX0=" + }, + "model": { + "$ref": "AAAAAAFzmTidSGPkITg=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFzmTidSGPpLVU=", + "_parent": { + "$ref": "AAAAAAFzmTidSGPovGU=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 1413, + "top": 379, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFzmTidSGPovGU=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFzmTidSGPqI+A=", + "_parent": { + "$ref": "AAAAAAFzmTidSGPovGU=" + }, + "font": "Arial;13;0", + "left": 1363, + "top": 379, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFzmTidSGPovGU=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFzmTidSWPrhLo=", + "_parent": { + "$ref": "AAAAAAFzmTidSGPovGU=" + }, + "font": "Arial;13;0", + "left": 1462, + "top": 379, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFzmTidSGPovGU=" + } + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAFzmTUSMWOxglk=" + }, + "tail": { + "$ref": "AAAAAAFzmS+aamMoovQ=" + }, + "lineStyle": 2, + "points": "1338:400;1488:400", + "nameLabel": { + "$ref": "AAAAAAFzmTidSGPpLVU=" + }, + "tailNameLabel": { + "$ref": "AAAAAAFzmTidSGPqI+A=" + }, + "headNameLabel": { + "$ref": "AAAAAAFzmTidSWPrhLo=" + } + }, + { + "_type": "ERDEntityView", + "_id": "AAAAAAFzmTrFAGQbbu8=", + "_parent": { + "$ref": "AAAAAAFyJv8bdYmeyX0=" + }, + "model": { + "$ref": "AAAAAAFzmTrE/mQZtbU=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAFzmTrFAGQc1P0=", + "_parent": { + "$ref": "AAAAAAFzmTrFAGQbbu8=" + }, + "font": "Arial;13;1", + "left": 1784, + "top": 341, + "width": 208, + "height": 13, + "text": "users (find in user system)" + }, + { + "_type": "ERDColumnCompartmentView", + "_id": "AAAAAAFzmTrFAGQdssg=", + "_parent": { + "$ref": "AAAAAAFzmTrFAGQbbu8=" + }, + "model": { + "$ref": "AAAAAAFzmTrE/mQZtbU=" + }, + "subViews": [ + { + "_type": "ERDColumnView", + "_id": "AAAAAAFzmTrWuWQpM6E=", + "_parent": { + "$ref": "AAAAAAFzmTrFAGQdssg=" + }, + "model": { + "$ref": "AAAAAAFzmTrWh2QmNU4=" + }, + "font": "Arial;13;0", + "left": 1789, + "top": 364, + "width": 198, + "height": 13 + }, + { + "_type": "ERDColumnView", + "_id": "AAAAAAFzmTr2rGQyAHE=", + "_parent": { + "$ref": "AAAAAAFzmTrFAGQdssg=" + }, + "model": { + "$ref": "AAAAAAFzmTr2eGQvxRY=" + }, + "font": "Arial;13;0", + "left": 1789, + "top": 379, + "width": 198, + "height": 13 + } + ], + "font": "Arial;13;0", + "left": 1784, + "top": 359, + "width": 208, + "height": 38 + } + ], + "font": "Arial;13;0", + "left": 1784, + "top": 336, + "width": 208, + "height": 73, + "nameLabel": { + "$ref": "AAAAAAFzmTrFAGQc1P0=" + }, + "columnCompartment": { + "$ref": "AAAAAAFzmTrFAGQdssg=" + } + }, + { + "_type": "ERDRelationshipView", + "_id": "AAAAAAFzmTtiuWR2PIU=", + "_parent": { + "$ref": "AAAAAAFyJv8bdYmeyX0=" + }, + "model": { + "$ref": "AAAAAAFzmTtiuWRye2I=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFzmTtiuWR3x4k=", + "_parent": { + "$ref": "AAAAAAFzmTtiuWR2PIU=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 1723, + "top": 347, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAFzmTtiuWR2PIU=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFzmTtiuWR4U60=", + "_parent": { + "$ref": "AAAAAAFzmTtiuWR2PIU=" + }, + "font": "Arial;13;0", + "left": 1688, + "top": 347, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFzmTtiuWR2PIU=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAFzmTtiuWR5oHg=", + "_parent": { + "$ref": "AAAAAAFzmTtiuWR2PIU=" + }, + "font": "Arial;13;0", + "left": 1758, + "top": 347, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAFzmTtiuWR2PIU=" + } + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAFzmTrFAGQbbu8=" + }, + "tail": { + "$ref": "AAAAAAFzmTUSMWOxglk=" + }, + "lineStyle": 2, + "points": "1663:368;1784:368", + "nameLabel": { + "$ref": "AAAAAAFzmTtiuWR3x4k=" + }, + "tailNameLabel": { + "$ref": "AAAAAAFzmTtiuWR4U60=" + }, + "headNameLabel": { + "$ref": "AAAAAAFzmTtiuWR5oHg=" + } } ] }, @@ -3498,6 +3979,251 @@ "foreignKey": true } ] + }, + { + "_type": "ERDEntity", + "_id": "AAAAAAFzmS9Y8GMUhJA=", + "_parent": { + "$ref": "AAAAAAFyJv8bdImdWmM=" + }, + "name": "Entity1" + }, + { + "_type": "ERDEntity", + "_id": "AAAAAAFzmS+aamMmKco=", + "_parent": { + "$ref": "AAAAAAFyJv8bdImdWmM=" + }, + "name": "events", + "ownedElements": [ + { + "_type": "ERDRelationship", + "_id": "AAAAAAFzmTidSGPkITg=", + "_parent": { + "$ref": "AAAAAAFzmS+aamMmKco=" + }, + "end1": { + "_type": "ERDRelationshipEnd", + "_id": "AAAAAAFzmTidSGPlGys=", + "_parent": { + "$ref": "AAAAAAFzmTidSGPkITg=" + }, + "reference": { + "$ref": "AAAAAAFzmS+aamMmKco=" + } + }, + "end2": { + "_type": "ERDRelationshipEnd", + "_id": "AAAAAAFzmTidSGPmix0=", + "_parent": { + "$ref": "AAAAAAFzmTidSGPkITg=" + }, + "reference": { + "$ref": "AAAAAAFzmTUSMGOvbdY=" + }, + "cardinality": "0..*" + } + } + ], + "columns": [ + { + "_type": "ERDColumn", + "_id": "AAAAAAFzmS+hAGMyFxQ=", + "_parent": { + "$ref": "AAAAAAFzmS+aamMmKco=" + }, + "name": "id", + "type": "INTEGER", + "length": 0, + "primaryKey": true + }, + { + "_type": "ERDColumn", + "_id": "AAAAAAFzmTArgGM8P34=", + "_parent": { + "$ref": "AAAAAAFzmS+aamMmKco=" + }, + "name": "name", + "type": "varchar", + "length": "256" + }, + { + "_type": "ERDColumn", + "_id": "AAAAAAFzmTKxMGNLYfU=", + "_parent": { + "$ref": "AAAAAAFzmS+aamMmKco=" + }, + "name": "description", + "type": "varchar", + "length": "512" + }, + { + "_type": "ERDColumn", + "_id": "AAAAAAFzmTMsN2NSMr0=", + "_parent": { + "$ref": "AAAAAAFzmS+aamMmKco=" + }, + "name": "date", + "type": "datetime", + "length": 0 + } + ] + }, + { + "_type": "ERDEntity", + "_id": "AAAAAAFzmTUSMGOvbdY=", + "_parent": { + "$ref": "AAAAAAFyJv8bdImdWmM=" + }, + "name": "user_events", + "ownedElements": [ + { + "_type": "ERDRelationship", + "_id": "AAAAAAFzmTsziWRExxQ=", + "_parent": { + "$ref": "AAAAAAFzmTUSMGOvbdY=" + }, + "end1": { + "_type": "ERDRelationshipEnd", + "_id": "AAAAAAFzmTsziWRFRrA=", + "_parent": { + "$ref": "AAAAAAFzmTsziWRExxQ=" + }, + "reference": { + "$ref": "AAAAAAFzmTUSMGOvbdY=" + } + }, + "end2": { + "_type": "ERDRelationshipEnd", + "_id": "AAAAAAFzmTsziWRGUkg=", + "_parent": { + "$ref": "AAAAAAFzmTsziWRExxQ=" + }, + "reference": { + "$ref": "AAAAAAFzmTszCGQ4N4k=" + }, + "cardinality": "0..*" + } + }, + { + "_type": "ERDRelationship", + "_id": "AAAAAAFzmTtiuWRye2I=", + "_parent": { + "$ref": "AAAAAAFzmTUSMGOvbdY=" + }, + "end1": { + "_type": "ERDRelationshipEnd", + "_id": "AAAAAAFzmTtiuWRzhic=", + "_parent": { + "$ref": "AAAAAAFzmTtiuWRye2I=" + }, + "reference": { + "$ref": "AAAAAAFzmTUSMGOvbdY=" + } + }, + "end2": { + "_type": "ERDRelationshipEnd", + "_id": "AAAAAAFzmTtiuWR0NaQ=", + "_parent": { + "$ref": "AAAAAAFzmTtiuWRye2I=" + }, + "reference": { + "$ref": "AAAAAAFzmTrE/mQZtbU=" + }, + "cardinality": "0..*" + } + } + ], + "columns": [ + { + "_type": "ERDColumn", + "_id": "AAAAAAFzmTUsD2O8Tv0=", + "_parent": { + "$ref": "AAAAAAFzmTUSMGOvbdY=" + }, + "name": "id", + "type": "INTEGER", + "length": 0, + "primaryKey": true + }, + { + "_type": "ERDColumn", + "_id": "AAAAAAFzmTVGIWPD9D4=", + "_parent": { + "$ref": "AAAAAAFzmTUSMGOvbdY=" + }, + "name": "user_id", + "type": "INTEGER", + "length": 0, + "foreignKey": true + }, + { + "_type": "ERDColumn", + "_id": "AAAAAAFzmTVYxmPKgHI=", + "_parent": { + "$ref": "AAAAAAFzmTUSMGOvbdY=" + }, + "name": "event_id", + "type": "INTEGER", + "length": 0, + "foreignKey": true + } + ] + }, + { + "_type": "ERDEntity", + "_id": "AAAAAAFzmTicyGPYVxQ=", + "_parent": { + "$ref": "AAAAAAFyJv8bdImdWmM=" + }, + "name": "Entity2" + }, + { + "_type": "ERDEntity", + "_id": "AAAAAAFzmTrE/mQZtbU=", + "_parent": { + "$ref": "AAAAAAFyJv8bdImdWmM=" + }, + "name": "users (find in user system)", + "columns": [ + { + "_type": "ERDColumn", + "_id": "AAAAAAFzmTrWh2QmNU4=", + "_parent": { + "$ref": "AAAAAAFzmTrE/mQZtbU=" + }, + "name": "id", + "type": "INTEGER", + "length": 0, + "primaryKey": true + }, + { + "_type": "ERDColumn", + "_id": "AAAAAAFzmTr2eGQvxRY=", + "_parent": { + "$ref": "AAAAAAFzmTrE/mQZtbU=" + }, + "name": "...", + "type": "...", + "length": 0 + } + ] + }, + { + "_type": "ERDEntity", + "_id": "AAAAAAFzmTszCGQ4N4k=", + "_parent": { + "$ref": "AAAAAAFyJv8bdImdWmM=" + }, + "name": "Entity3" + }, + { + "_type": "ERDEntity", + "_id": "AAAAAAFzmTtiNmRmWq4=", + "_parent": { + "$ref": "AAAAAAFyJv8bdImdWmM=" + }, + "name": "Entity4" } ] } diff --git a/skolehjem/app/Http/Controllers/CalendarController.php b/skolehjem/app/Http/Controllers/CalendarController.php deleted file mode 100644 index 33d2d34..0000000 --- a/skolehjem/app/Http/Controllers/CalendarController.php +++ /dev/null @@ -1,12 +0,0 @@ -paginate($request->input("limit", 20)); -// -// return view("calendar-date.index", [ -// "calendarDates" => $calendarDates -// ]); -// } -// -// /** -// * Show the form for creating a new resource. -// * -// * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\View\View -// */ -// public function create() -// { -// return view("calendar-date.create"); -// } -// -// /** -// * Store a newly created resource in storage. -// * -// * @param \Illuminate\Http\Request $request -// * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\View\View -// */ -// public function store(Request $request) -// { -// $fields = $request->validate([ -// "" => "" -// ]); -// -// $calendarDate = new CalendarDate() -// -// return view("calendar-date.store"); -// } -// -// /** -// * Display the specified resource. -// * -// * @param int $id -// * @return \Illuminate\Http\Response -// */ -// public function show($id) -// { -// // -// } -// -// /** -// * Show the form for editing the specified resource. -// * -// * @param int $id -// * @return \Illuminate\Http\Response -// */ -// public function edit($id) -// { -// // -// } -// -// /** -// * Update the specified resource in storage. -// * -// * @param \Illuminate\Http\Request $request -// * @param int $id -// * @return \Illuminate\Http\Response -// */ -// public function update(Request $request, $id) -// { -// // -// } -// -// /** -// * Remove the specified resource from storage. -// * -// * @param int $id -// * @return \Illuminate\Http\Response -// */ -// public function destroy($id) -// { -// // -// } -//} diff --git a/skolehjem/app/Http/Controllers/ExternalLinkController.php b/skolehjem/app/Http/Controllers/ExternalLinkController.php index 3b3b9a7..0df95e4 100644 --- a/skolehjem/app/Http/Controllers/ExternalLinkController.php +++ b/skolehjem/app/Http/Controllers/ExternalLinkController.php @@ -11,6 +11,8 @@ class ExternalLinkController extends Controller { function __construct() { + $this->middleware([ "auth" ]); + $this->middleware("permission:link.external.list")->only("index"); $this->middleware("permission:link.external.create")->only(["create", "store"]); $this->middleware("permission:link.external.show")->only("show"); diff --git a/skolehjem/app/Http/Controllers/RolesController.php b/skolehjem/app/Http/Controllers/RolesController.php index 4b09588..67f4154 100644 --- a/skolehjem/app/Http/Controllers/RolesController.php +++ b/skolehjem/app/Http/Controllers/RolesController.php @@ -9,6 +9,17 @@ use Spatie\Permission\Models\Role; class rolesController extends Controller { + public function __construct() + { + $this->middleware([ "auth" ]); + + $this->middleware([ "check.auth:roles.list" ])->only("index"); + $this->middleware([ "check.auth:roles.show" ])->only("show"); + $this->middleware([ "check.auth:roles.create" ])->only("create", "store"); + $this->middleware([ "check.auth:roles.edit" ])->only("edit", "update"); + $this->middleware([ "check.auth:roles.delete" ])->only("delete"); + } + /** * Display a listing of the resource. * diff --git a/skolehjem/app/Http/Controllers/RootController.php b/skolehjem/app/Http/Controllers/RootController.php index 284d91f..d147e5b 100644 --- a/skolehjem/app/Http/Controllers/RootController.php +++ b/skolehjem/app/Http/Controllers/RootController.php @@ -13,6 +13,9 @@ class RootController extends Controller } public function index() { - return Response::detect("root.index"); + if(auth()->user()->can('admin.panel.show')) + return Response::detect("root.index"); + else + return view('app.root.index'); } } diff --git a/skolehjem/app/Http/Controllers/UserController.php b/skolehjem/app/Http/Controllers/UserController.php index 0bb9d00..461d0f3 100644 --- a/skolehjem/app/Http/Controllers/UserController.php +++ b/skolehjem/app/Http/Controllers/UserController.php @@ -61,29 +61,21 @@ class UserController extends Controller */ public function store(Request $request) { -// Log::debug("STORE FUNCTION"); - $data = $request->validate([ "name_first" => "required|max:255", "name_last" => "required|max:255", "email" => "required|email|unique:users", "password" => "required|max:60", "phone" => "required|unique:users", - ]); -// Log::debug("FINISHED VALIDATION?"); - $rolez = $request->input("roles", [ "User" ]); $user = new User($data); -// Log::debug("CREATED USER [NOT PERSISTED YET]"); - $user->assignRole($rolez); $user->save(); -// Log::debug("SAVED USER"); return Response::detect("users.store"); } @@ -228,6 +220,7 @@ class UserController extends Controller if(Auth::attempt($data)) { //TODO: Implement home? + return redirect()->route("root.index"); } diff --git a/skolehjem/app/Http/Controllers/WashingReservationController.php b/skolehjem/app/Http/Controllers/WashingReservationController.php index 29f5881..d363c54 100644 --- a/skolehjem/app/Http/Controllers/WashingReservationController.php +++ b/skolehjem/app/Http/Controllers/WashingReservationController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers; use App\WashingMachine; use Illuminate\Contracts\Foundation\Application; use Illuminate\Contracts\View\Factory; +use Illuminate\Foundation\Auth\User; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Http\Response; @@ -46,7 +47,8 @@ class WashingReservationController extends Controller public function create() { $machines = WashingMachine::all(); - return Response::detect("washing-reservations.create", [ 'machines' => $machines ]); + $users = User::all(); + return Response::detect("washing-reservations.create", [ 'machines' => $machines, 'users' => $users ]); } /** @@ -59,7 +61,8 @@ class WashingReservationController extends Controller { $data = $request->validate([ "time" => "required", - "machine" => "required" + "machine_id" => "required|unique:washing_reservations,machine_id,NULL,id,time,' . $request->time", + "user_id" => "required" ]); $machineReservation = new WashingReservation($data); @@ -67,14 +70,14 @@ class WashingReservationController extends Controller $saved = $machineReservation->save(); - if(!$saved){ + if (!$saved) { return Response::detect("washing-reservations.store", [ "washing_reservation" => $machineReservation ]); - }else{ + } else { $reservations = WashingReservation::query()->paginate($request->input("limit", 20)); - return Response::detect("washing-reservations.index", [ "reservations" => $reservations]); + return Response::detect("washing-reservations.index", ["reservations" => $reservations]); } } @@ -160,7 +163,15 @@ class WashingReservationController extends Controller $machines = WashingMachine::all(); - $output = json_encode(['date' => $date, 'washingmachines' => $machines]); + $reservations = WashingReservation::query()->where("time", "LIKE", substr($date, 1, strpos($date, "T"))."%")->get(); + + $times = []; + + foreach ($reservations as $reservation){ + array_push($times, $reservation->time); + } + //2020-07-28% + $output = json_encode(['date' => $date, 'washingmachines' => $machines, 'unavailable_times' => $times]); return Response($output); } } diff --git a/skolehjem/app/WashingReservation.php b/skolehjem/app/WashingReservation.php index 8afd30c..c46a739 100644 --- a/skolehjem/app/WashingReservation.php +++ b/skolehjem/app/WashingReservation.php @@ -14,6 +14,6 @@ class WashingReservation extends Model { //protected variable which contains name of database field(s) to be filled. protected $fillable = [ - 'time', 'machine' + 'time', 'machine_id', 'user_id' ]; } diff --git a/skolehjem/database/migrations/2020_06_08_085447_create_washing_reservations.php b/skolehjem/database/migrations/2020_06_08_085447_create_washing_reservations.php index 3ac0a01..a1d3b14 100644 --- a/skolehjem/database/migrations/2020_06_08_085447_create_washing_reservations.php +++ b/skolehjem/database/migrations/2020_06_08_085447_create_washing_reservations.php @@ -19,8 +19,11 @@ class CreateWashingReservations extends Migration $table->id(); $table->timestamp("time"); $table->timestamps(); - $table->unsignedBigInteger('machine'); - $table->foreign("machine")->references('id')->on('washing_machines'); + $table->unsignedBigInteger('machine_id'); + $table->foreign("machine_id")->references('id')->on('washing_machines'); + $table->unsignedBigInteger('user_id'); + $table->foreign("user_id")->references('id')->on('users'); + $table->unique(['time', 'machine_id']); }); } diff --git a/skolehjem/database/seeds/DatabaseSeeder.php b/skolehjem/database/seeds/DatabaseSeeder.php index 624abbb..85fb143 100644 --- a/skolehjem/database/seeds/DatabaseSeeder.php +++ b/skolehjem/database/seeds/DatabaseSeeder.php @@ -11,7 +11,8 @@ class DatabaseSeeder extends Seeder */ public function run() { - $this->call(PermissionSeeder::class); - $this->call(UserSeeder::class); + $this->call(PermissionSeeder::class); + $this->call(UserSeeder::class); + $this->call(RoleSeeder::class); } } diff --git a/skolehjem/database/seeds/PermissionSeeder.php b/skolehjem/database/seeds/PermissionSeeder.php index befed63..4c6c995 100644 --- a/skolehjem/database/seeds/PermissionSeeder.php +++ b/skolehjem/database/seeds/PermissionSeeder.php @@ -98,6 +98,14 @@ class PermissionSeeder extends Seeder "washing.machine.reservation.edit" => "Allows editing of washing machine reservations", "washing.machine.reservation.delete" => "Allows deletion of washing machine reservations", + "roles.create" => "Create a new role", + "roles.list" => "Shows all roles", + "roles.show" => "Shows a specific role", + "roles.edit" => "Allows editing of roles", + "roles.delete" => "Allows deletion of roles", + + //Allows access to the admin panel + "admin.panel.show" => "Allows access to administration panel", ]; diff --git a/skolehjem/database/seeds/RoleSeeder.php b/skolehjem/database/seeds/RoleSeeder.php index b734ecb..41e504b 100644 --- a/skolehjem/database/seeds/RoleSeeder.php +++ b/skolehjem/database/seeds/RoleSeeder.php @@ -12,10 +12,8 @@ class RoleSeeder extends Seeder public function run() { $roles = [ - "administrator" => "Admin", - "user" => "Userstuff", - - + "Administrator" => "Administrator", + "User" => "Bruger", ]; foreach ($roles as $key => $value) { diff --git a/skolehjem/resources/views/admin/washing-reservations/create.blade.php b/skolehjem/resources/views/admin/washing-reservations/create.blade.php index fb0308a..841d82e 100644 --- a/skolehjem/resources/views/admin/washing-reservations/create.blade.php +++ b/skolehjem/resources/views/admin/washing-reservations/create.blade.php @@ -15,13 +15,20 @@ @csrf Tidspunkt: - Vaskemaskine: - + Vaskemaskine: + -- Vælg Vaskemaskine -- @foreach($machines as $machine) {{ $machine->name }} @endforeach + Bruger: + + -- Vælg Bruger -- + @foreach($users as $user) + {{ ucfirst($user->name_first) }} {{ ucfirst($user->name_last) }} + @endforeach + @endsection diff --git a/skolehjem/resources/views/admin/washing-reservations/index.blade.php b/skolehjem/resources/views/admin/washing-reservations/index.blade.php index b26f834..e9cbf21 100644 --- a/skolehjem/resources/views/admin/washing-reservations/index.blade.php +++ b/skolehjem/resources/views/admin/washing-reservations/index.blade.php @@ -28,7 +28,7 @@ @foreach($reservations as $reservation) - {{ \App\WashingMachine::query()->find($reservation->machine)->name }} + {{ \App\WashingMachine::query()->find($reservation->machine_id)->name }} {{ $reservation->time }} diff --git a/skolehjem/resources/views/app/contacts/index.blade.php b/skolehjem/resources/views/app/contacts/index.blade.php index e61a011..a66affd 100644 --- a/skolehjem/resources/views/app/contacts/index.blade.php +++ b/skolehjem/resources/views/app/contacts/index.blade.php @@ -1,5 +1,4 @@ @extends("app.layout.base") -@extends("app.layout.header") @section("title") Kontakt @endsection diff --git a/skolehjem/resources/views/app/events/index.blade.php b/skolehjem/resources/views/app/events/index.blade.php index 427a7ab..43e03ac 100644 --- a/skolehjem/resources/views/app/events/index.blade.php +++ b/skolehjem/resources/views/app/events/index.blade.php @@ -1,5 +1,4 @@ @extends("app.layout.base") -@extends("app.layout.header") @section("title") Aktiviteter @endsection diff --git a/skolehjem/resources/views/app/menuplans/index.blade.php b/skolehjem/resources/views/app/menuplans/index.blade.php index 3f4514a..639ee20 100644 --- a/skolehjem/resources/views/app/menuplans/index.blade.php +++ b/skolehjem/resources/views/app/menuplans/index.blade.php @@ -1,5 +1,4 @@ @extends("app.layout.base") -@extends("app.layout.header") @section("title") Menuplan @endsection diff --git a/skolehjem/resources/views/app/vagttelefons/index.blade.php b/skolehjem/resources/views/app/vagttelefons/index.blade.php index bbd4eb3..493b44c 100644 --- a/skolehjem/resources/views/app/vagttelefons/index.blade.php +++ b/skolehjem/resources/views/app/vagttelefons/index.blade.php @@ -1,5 +1,4 @@ @extends("app.layout.base") -@extends("app.layout.header") @section("title") Vagttelefon @endsection diff --git a/skolehjem/resources/views/app/washing-reservations/create.blade.php b/skolehjem/resources/views/app/washing-reservations/create.blade.php index 19c252f..7734e62 100644 --- a/skolehjem/resources/views/app/washing-reservations/create.blade.php +++ b/skolehjem/resources/views/app/washing-reservations/create.blade.php @@ -1,5 +1,5 @@ @extends("app.layout.base") -@extends("app.layout.header") + @section("title") Booking Liste @endsection @@ -27,6 +27,7 @@ @csrf + Maskiner skal dynamisk opdateres alt efter om det er en fra bygning E eller en af de andre bygninger der vil vaske, da bygning E har egen vaskekælder! @@ -112,7 +113,7 @@ axios({ method: 'get', - url: '/washing-reservationsapi', + url: '{{ route("washing-reservations.api") }}', params: { 'date': date } }).then(function (response) { var data = response.data; @@ -127,7 +128,7 @@ let select = document.createElement("select"); select.classList.add("events__title"); select.id = "washing-machines"; - select.name = "machine"; + select.name = "machine_id"; container.appendChild(span); container.appendChild(select); @@ -139,7 +140,7 @@ else { let span = document.createElement("span"); span.classList.add("events__title"); - span.innerText = "Tider"; + span.innerText = "Tilgængelige tider"; let select = document.createElement("select"); select.classList.add("events__title"); @@ -178,13 +179,33 @@ events.innerHTML = ""; for (let hour = 8; hour <= 20; hour++) { - + let value = data["date"].split("T")[0].slice(1, data["date"].split("T")[0].length) + "T" + prependZero(hour) + ":00"; let option = document.createElement("option"); - option.text = prependZero(hour) + ":00"; - option.value = data["date"].split("T")[0].slice(1, data["date"].split("T")[0].length) + "T" + prependZero(hour) + ":00"; + option.text = prependZero(hour) + ":00"; + option.value = value; + option.id = value; events.appendChild(option); } + + let unavailable_times = data["unavailable_times"]; + + unavailable_times.forEach(function (item, index) { + console.log(item); + document.getElementById(item).remove(); + }); + + if(events.childElementCount == 0){ + let option = document.createElement("option"); + option.disabled = "disabled"; + option.text = "Der er ingen tilgængelige tider"; + option.selected = "selected"; + events.appendChild(option); + + document.getElementById("create-reservation").disabled = "disabled"; + } else { + document.getElementById("create-reservation").disabled = ""; + } }); } diff --git a/skolehjem/resources/views/app/washing-reservations/index.blade.php b/skolehjem/resources/views/app/washing-reservations/index.blade.php index fd31075..8333731 100644 --- a/skolehjem/resources/views/app/washing-reservations/index.blade.php +++ b/skolehjem/resources/views/app/washing-reservations/index.blade.php @@ -1,5 +1,4 @@ @extends("app.layout.base") -@extends("app.layout.header") @section("title") Booking Liste @endsection
Maskiner skal dynamisk opdateres alt efter om det er en fra bygning E eller en af de andre bygninger der vil vaske, da bygning E har egen vaskekælder!