v1.1.0b -Added guides categorys

This commit is contained in:
Neerholt 2020-09-10 15:31:06 +02:00
parent 5f7d37e08a
commit de3ed9c326
13 changed files with 514 additions and 0 deletions

View File

@ -0,0 +1,12 @@
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class GuidesCategory extends Model
{
protected $fillable = [
'guidesCategoryName'
];
}

View File

@ -0,0 +1,148 @@
<?php
namespace App\Http\Controllers;
use App\GuidesCategory;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
class GuidesCategoryController extends Controller
{
public function __construct()
{
$this->middleware([ "auth" ]);
$this->middleware([ "lang" ]);
$this->middleware([ "check.auth:guides.show" ])->only("show", "index");
$this->middleware([ "check.auth:guides.create" ])->only("create", "store");
$this->middleware([ "check.auth:guides.edit" ])->only("edit", "update");
$this->middleware([ "check.auth:guides.delete" ])->only("delete");
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$guideCate = GuidesCategory::query()->paginate(20);
return Response::detect("guides-category.index", [ "guidesCategory" => $guideCate]);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return Response::detect("guides-category.create");
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$requestGuideCategory = $request->validate([
"guidesCategoryName" => "required|max:255",
]);
$guideCate = new GuidesCategory($requestGuideCategory);
$saved = $guideCate->save();
if(!$saved) {
return redirect()->route("guides-category.store");
} else {
$guides = GuidesCategory::query()->paginate(20);
return redirect()->route("guides.index", ['guides' => $guides]);
}
}
/**
* Display the specified resource.
*
* @param \App\GuidesCategory $guidesCategory
* @return \Illuminate\Http\Response
*/
public function show(GuidesCategory $guidesCategory)
{
return Response::detect("guides-category.show", [ "guideCategory" => $guidesCategory]);
}
/**
* Show the form for editing the specified resource.
*
* @param \App\GuidesCategory $guidesCategory
* @return \Illuminate\Http\Response
*/
public function edit(GuidesCategory $guidesCategory)
{
$guideCate = GuidesCategory::query()->where("id", "=", $guidesCategory->id)->first();
return Response::detect("guides-category.edit", ["guideCategory" => $guideCate]);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\GuidesCategory $guidesCategory
* @return \Illuminate\Http\Response
*/
public function update(Request $request, GuidesCategory $guidesCategory)
{
$data = $request->validate([
"name" => "required|max:255",
"guide_articles" => "required",
]);
$guideCate = Guide::query()->where("id", "=", $guidesCategory->id)->first();
$guideCate->update($data);
$saved = $guideCate->save();
if(!$saved){
return redirect()->route("guides-category.update", [ "guideCategory" => $guide ]);
}else{
$guides = Guide::query()->paginate(20);
return redirect()->route("guides.index", ['guidesCategory' => $guides]);
}
}
/**
* Remove the specified resource from storage.
*
* @param \App\GuidesCategory $guidesCategory
* @return \Illuminate\Http\Response
*/
public function destroy(GuidesCategory $guidesCategory)
{
$guide = Guide::find($guidesCategory); //$guidesCategory = $id
$guide->delete();
return redirect()->route("guides.index");
}
public function nameCheck(Request $request) {
$guide = GuidesCategory::query()->where('guidesCategoryName', 'LIKE',$request->nameCheck)->get();
if(count($guide) > 0 && $request->nameCheck !== NULL){
return 1;
}
}
public function nameCheckUpdate(Request $request) {
$guide = GuidesCategory::query()->where('guidesCategoryName', 'LIKE',$request->nameCheck)->where('id', '!=', $request->id)->get();
if(count($guide) > 0 && $request->nameCheck !== NULL){
return 1;
}
}
}

View File

@ -0,0 +1,32 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateGuidesCategoriesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('guides_categories', function (Blueprint $table) {
$table->id();
$table->string('guidesCategoryName')->unique();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('guides_categories');
}
}

View File

@ -0,0 +1,84 @@
@extends("admin.layout.base")
@extends("admin.layout.header")
@section("title")
Opret vejlednings kategori
@endsection
@section("path")
<a href="{{ route('locations.create') }}" class="text-white">Opret ny kategori</a> /
@endsection
@section("content")
<h1 id="errormesseages" >Opret vejlednigns kategori</h1>
<form method="post" action="{{ route("guides-category.store") }}">
@csrf
<label for="name">Kategoriens navn:</label>
<label hidden id="error" for="errormesseages">Kategorien findes allerede</label>
<input type="text" name="guidesCategoryName" id="name" placeholder="Ankomst" required>
<input type="submit" id="disable" class="btn btn-dark text-white" value="Opret kategori">
</form>
@endsection
@section("scripts")
<script>
$(function() {
$('form').areYouSure(
{
message: 'It looks like you have been editing something. '
+ 'If you leave before saving, your changes will be lost.'
}
);
});
//Dont delete me, if the user reloads the pages with text in the text-box this code runs.
$(document).ready(function () {
$value = $('#name').val();
$.ajax({
type: 'get',
url: '{{route('guides-category.nameCheck')}}',
data: {'nameCheck':$value},
success:function (data) {
if(data){
$("#error").show(100);
$("#error").css('color', 'red');
$("#disable").prop('disabled', true);
$('#disable').css('cursor','not-allowed');
}else{
$("#error").hide();
$("#disable").prop('disabled', false);
$('#disable').css('cursor','pointer');
}
},
error:function (data) {
console.log(data);
}
});
});
$('#name').on('keyup', function () {
$value = $('#name').val();
$.ajax({
type: 'get',
url: '{{route('guides-category.nameCheck')}}',
data: {'nameCheck':$value},
success:function (data) {
if(data){
$("#error").show(100);
$("#error").css('color', 'red');
$("#disable").prop('disabled', true);
$('#disable').css('cursor','not-allowed');
}else{
$("#error").hide();
$("#disable").prop('disabled', false);
$('#disable').css('cursor','pointer');
}
},
error:function (data) {
console.log(data);
}
});
})
</script>
@endsection

View File

@ -0,0 +1,13 @@
@extends("admin.layout.base")
@extends("admin.layout.header")
@section("title")
Vejledning - Fjern
@endsection
@section("path")
<a href="{{ route('guides.delete') }}" class="text-white">Fjern Guide</a> /
@endsection
@section("content")
@endsection

View File

@ -0,0 +1,86 @@
@extends("admin.layout.base")
@extends("admin.layout.header")
@section("title")
Lokation - Rediger
@endsection
@section("path")
<a href="{{route('locations.edit', ['location' => $location ])}}" class="text-white">Rediger lokation</a> /
@endsection
@section("content")
<h1>Rediger Lokation</h1>
<form method="post" action="{{ route("locations.update", ['location' => $location ]) }}">
@csrf
@method("put")
<label for="name">Lokationsnavn:</label>
<label hidden id="error" for="errormesseages">Lokation findes allerede</label>
<input type="text" name="name" id="name" value="{{ $location->name }}" required>
<input type="submit" id="disable" class="btn btn-dark text-white" value="Rediger">
</form>
@endsection
@section("scripts")
<script>
$(function() {
$('form').areYouSure(
{
message: 'It looks like you have been editing something. '
+ 'If you leave before saving, your changes will be lost.'
}
);
});
//Dont delete me, if the user reloads the pages with text in the text-box this code runs.
$(document).ready(function () {
$value = $('#name').val();
$.ajax({
type: 'get',
url: '{{route('locations.nameCheckUpdate')}}',
data: {'nameCheck':$value, 'id':{{$location->id}}},
success:function (data) {
console.log(data);
if(data){
$("#error").show(100);
$("#error").css('color', 'red');
$("#disable").prop('disabled', true);
$('#disable').css('cursor','not-allowed');
}else{
$("#error").hide();
$("#disable").prop('disabled', false);
$('#disable').css('cursor','pointer');
}
},
error:function (data) {
console.log(data);
}
});
});
$('#name').on('keyup', function () {
$value = $(this).val();
$.ajax({
type: 'get',
url: '{{route('locations.nameCheckUpdate')}}',
data: {'nameCheck':$value, 'id':{{$location->id}}},
success:function (data) {
if(data){
$("#error").show(100);
$("#error").css('color', 'red');
$("#disable").prop('disabled', true);
$('#disable').css('cursor','not-allowed');
}else{
$("#error").hide();
$("#disable").prop('disabled', false);
$('#disable').css('cursor','pointer');
}
},
error:function (data) {
console.log(data);
}
});
})
</script>
@endsection

View File

@ -0,0 +1 @@
<--No data-->

View File

@ -0,0 +1,68 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>@yield("title")</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<link type="text/css" rel="stylesheet" href="{{ mix("/css/admin.css") }}">
<script src="{{ asset("/js/jquery-3.2.1.min.js") }}"></script>
</head>
<body>
<header class="row align-items-center" style="background-color: #00788a;">
<img src="{{ URL::asset('/images/logos/Logo-hvid.svg') }}" class="brand" alt="Syddansk Erhvervsskole">
<p class="text-white" style="margin-left: auto; padding-right: 24px; font-size: 1vw;">Lokation: {{ $location->name }}</p>
</header>
<main style="min-height: calc(100% - 72px); background-color: #ffffff;" id="mainDiv">
<?php
date_default_timezone_set('Europe/Copenhagen');
$i = 1;
?>
<div class="row">
@foreach(\App\WashingReservation::query()->join('washing_machines', 'washing_machines.id', '=', 'washing_reservations.machine_id')->where("location_id", "=", $location->id)->where("time", "LIKE", date("Y-m-d"). "%")->orderBy("time", "asc")->get() as $reservation)
@if (date('Y-m-d H:i:s', strtotime('-1 hour')) < $reservation->time)
@if($i % 3 == 1)
</div>
<div class="row w-100">
@endif
<div class="reservation col align-items-center" style="margin: 0 32px 1.75rem 32px; width: calc(33% - 64px);">
<h2 style="font-size: 2vw">{{ \App\WashingMachine::query()->find($reservation->machine_id)->name }}</h2>
<div class="col align-items-center">
<span style="font-size: 1vw"><b>Dato:</b> {{ \Illuminate\Support\Facades\Date::createFromTimeStamp(strtotime($reservation->time))->format('d/m/Y') }}</span>
<span style="font-size: 2vw"><b>Tid:</b> {{ \Illuminate\Support\Facades\Date::createFromTimeStamp(strtotime($reservation->time))->format('\k\l\. H:i') }} - {{ \App\User::query()->where("id", "=", $reservation->user_id)->first()->name_first }} {{ \App\User::query()->where("id", "=", $reservation->user_id)->first()->name_last }}</span>
</div>
</div>
<?php $i++; ?>
@else
{{ \App\WashingReservation::query()->join('washing_machines', 'washing_machines.id', '=', 'washing_reservations.machine_id')->where("location_id", "=", $location->id)->where('time', '<', date('Y-m-d H:i:s'). '%')->delete() }}
@endif
@endforeach
@if($i == 1)
<b class="w-100 text-center" style="font-size: 2vw; padding-top: 16px;">Der er ingen vaskemaskine reservationer for i dag.</b>
@endif
</div>
</main>
<script src="{{ mix("/js/app.js") }}"></script>
<script type="text/javascript">
speed = 10000;
function scroll(speed) {
$('html, body').animate({ scrollTop: $(document).height() - $(window).height() }, speed, function() {
$(this).animate({ scrollTop: 0 }, speed);
});
}
$(document).ready(function () {
setInterval(function(){ // There has to be a space between " and # or it will not load correctly
$('#mainDiv').load(" #mainDiv");
}, (60000*1));
//Autoscroll
scroll(speed)
setInterval(function(){scroll(speed)}, speed * 2);
});
</script>
@yield("scripts")
</body>
</html>

View File

@ -0,0 +1,14 @@
@extends("admin.layout.base")
@extends("admin.layout.header")
@section("title")
Vejledning - Opret
@endsection
@section("path")
<a href="{{ route('guides.create') }}" class="text-white">Opret vejledning</a> /
@endsection
@section("content")
vejledning blev (ikke) oprettet.
@endsection

View File

@ -0,0 +1,14 @@
@extends("admin.layout.base")
@extends("admin.layout.header")
@section("title")
Vejledning - Rediger
@endsection
@section("path")
<a href="{{ route('guides.edit', ["guide" => $link]) }}" class="text-white">Vejledning</a> /
@endsection
@section("content")
Din vejledning blev (ikke) redigeret.
@endsection

View File

@ -29,6 +29,16 @@
<label for="title">Titel guiden</label>
<label hidden id="error" for="errormesseages">Navn findes allerede</label>
<input type="text" name="name" id="title" required>
<div>
<select name="guidesCategryseleted" id="guidesCategory">
<option disabled selected value> -- Vælg en kategori -- </option>
<option value="none">Ingen kategori</option>
@foreach(\App\GuidesCategory::query()->get() as $guideCategory)
<option value="{{ $guideCategory->id }}">{{ $guideCategory->guidesCategoryName }}</option>
@endforeach
</select> <label>Vælg en kategori</label>
<a class="btn btn-inline btn-sde-blue mb-0 ml-1" href="{{ route('guides-category.create') }}"><img src="{{ asset('/images/icons/plus.svg') }}" alt="Create">Opret kategori</a>
</div>
<div id="editor"></div>
<textarea name="guide_articles" class="d-none" id="hiddenArea"></textarea>
<label class="toggle">

View File

@ -13,8 +13,11 @@
@if(auth()->user()->can('guides.create'))
<div class="row align-items-center mb-2">
<a class="btn btn-inline btn-sde-blue mb-0" href="{{ route('guides.create') }}"><img src="{{ asset('/images/icons/plus.svg') }}" alt="Create">Opret Bruger Vejledning</a>
<a class="btn btn-inline btn-sde-blue mb-0 ml-1" href="{{ route('guides-category.create') }}"><img src="{{ asset('/images/icons/plus.svg') }}" alt="Create">Opret vejlednings kategori</a>
</div>
@endif
<div id="guides">
<label>Vejledninger</label>
<table class="tbl">
<tr>
<th>Navn</th>
@ -43,6 +46,32 @@
</tr>
@endforeach
</table>
</div>
<div id="guidesCategory" class="mt-2">
<label>Kategorier til de forskellige vejledninger</label>
<table class="tbl">
<tr>
<th>Vejlednings kategorier</th>
@if(auth()->user()->can('guides.edit'))<!--Jeg ved ikke om vi lave mere specifike permissions-->
<th style="width: 1em;"><img class="w-100" src="{{ asset('/images/icons/pencil.svg') }}" alt="Update"></th>
@endif
@if(auth()->user()->can('guides.delete'))<!--Jeg ved ikke om vi lave mere specifike permissions-->
<th style="width: 1em;"><img class="w-100" src="{{ asset('/images/icons/trashcan.svg') }}" alt="Delete"></th>
@endif
</tr>
@foreach(\App\GuidesCategory::query()->get() as $guideCategory)
<tr>
<td>{{$guideCategory->guidesCategoryName}}</td>
<!--
Code here :)
-->
</tr>
@endforeach
</table>
</div>
{{ $guides->links() }}
@endsection

View File

@ -70,6 +70,7 @@ Route::get("/newsCheck", "NewsController@nameCheck")->name("news.nameCheck");
Route::get("/menuplanCheck", "MenuPlanController@nameCheck")->name("menuplans.nameCheck");
Route::get("/locationsCheck", "LocationController@nameCheck")->name("locations.nameCheck");
Route::get("/washingCheck", "WashingMachineController@nameCheck")->name("washing-machines.nameCheck");
Route::get("/guidesCategoryCheck", "GuidesCategoryController@nameCheck")->name("guides-category.nameCheck");
//Check name update adminpanel
@ -81,6 +82,7 @@ Route::get("/newsCheckUpdate", "NewsController@nameCheckUpdate")->name("news.nam
Route::get("/menuplanCheckUpdate", "MenuPlanController@nameCheckUpdate")->name("menuplans.nameCheckUpdate");
Route::get("/locationsCheckUpdate", "LocationController@nameCheckUpdate")->name("locations.nameCheckUpdate");
Route::get("/washingCheckUpdate", "WashingMachineController@nameCheckUpdate")->name("washing-machines.nameCheckUpdate");
Route::get("/guidesCategoryUpdate", "GuidesCategoryController@nameCheckUpdate")->name("guides-category.nameCheckUpdate");
@ -97,5 +99,6 @@ Route::resource("resource-categories", "ResourceCategoryController");
Route::resource("roles", "RolesController");
Route::resource("guides", "GuideController");
Route::resource("locations", "LocationController");
Route::resource("guides-category", "GuidesCategoryController");
Route::resource("news", "NewsController");
Route::resource("newstype", "NewsTypeController");