v1.5.15 Added multiple events, not done

This commit is contained in:
Neerholt 2021-04-27 11:23:25 +02:00
parent 384070c40b
commit e5126ae5ae
13 changed files with 295 additions and 63 deletions

View File

@ -3,6 +3,7 @@
namespace App\Http\Controllers;
use App\MultipleEvents;
use App\MultipleEventsParent;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
//Not in use yet
@ -32,7 +33,7 @@ class MultipleEventsController extends Controller
*/
public function index()
{
$multiEvents = MultipleEvents::query()->orderBY('date' , 'asc')->get();
$multiEvents = MultipleEventsParent::query()->orderBY('id' , 'desc')->get();
return Response::detect("multiple-events.index", [ "multiEvents" => $multiEvents]);
}
@ -57,55 +58,56 @@ class MultipleEventsController extends Controller
{
$requestBody = $request->validate([
"week" => "max:255",
"event_name" => "array",
"name" => "array",
"description" => "array",
"accountable" => "array",
"date" => "array",
"event_name.*" => "max:255",
"name.*" => "max:255",
"description.*" => "max:255",
"accountable.*" => "max:255",
"date.*" => "max:255"
]);
$multipleParent = new MultipleEventsParent();
for ($i = 0; $i <= 3; $i++) {
$multipleParent->week = $request->week;
if($request->file("resource")) {
$multipleParent->resource_id = ResourceController::store($request)->id;
}
$multipleParent->save();
for ($i = 0; $i < count($requestBody["name"]); $i++) {
$multi_event = new MultipleEvents();
$multi_event->week = $requestBody['week'];
$multi_event->date = $requestBody['date'][$i];
$multi_event->description = $requestBody['description'][$i];
$multi_event->accountable = $requestBody['accountable'][$i];
$multi_event->event_name = $requestBody['event_name'][$i];
$multi_event->name = $requestBody['name'][$i];
$multi_event->event_end = "2021-27-04 16:00:00";
$multi_event->multiple_events_parent_id = $multipleParent->id;
$multi_event->save();
}
//creates a new Event model with the given parameter
$event = new Event($requestBody);
$allEvents = Event::query()->where('name', '=', $request->name)->get();
if(count($allEvents) > 0) {
return redirect()->route("events.index", ['events' => $event]);
} else {
if($request->file("resource")) {
$event->resource_id = ResourceController::store($request)->id;
}
$event->save();
$events = Event::query()->get();
$event = new MultipleEventsParent($requestBody);
$multiEvents = MultipleEventsParent::query()->get();
if($request->newsoption == true){
$news = new News();
$news->name = "Ny ugenlig aktivitet";
$news->subname = $event->name;
$news->arrangement_id = $event->id;
$news->type_id = '3';
$news->content = $event->description;
$news->name = "Nye ugenlig aktivitet";
$news->subname = $event->week;
$news->arrangement_id = $multipleParent->id;
$news->type_id = '5';
$news->content = "Den ugenlige aktivitets plan er landet";
$news->resource_id = $event->resource_id;
NewsController::storeAndGet($news);
}
return redirect()->route('events.index', ['events' => $events]);
}
return redirect()->route('multiple-events.index', ['multiEvents' => $multiEvents]);
}

View File

@ -7,6 +7,6 @@ use Illuminate\Database\Eloquent\Model;
class MultipleEvents extends Model
{
protected $fillable = [
'date', 'event_name', 'accountable', 'week'
'date', 'event_end', 'event_name', 'accountable', 'week', 'description', 'multiple_events_parent_id'
];
}

View File

@ -0,0 +1,13 @@
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class MultipleEventsParent extends Model
{
protected $table = "multiple_events_parent";
protected $fillable = [
'week', 'resource_id'
];
}

View File

@ -0,0 +1,33 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateMultipleEventsParent extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('multiple_events_parent', function (Blueprint $table) {
$table->id();
$table->string('week');
$table->foreignId('resource_id')->nullable()->constrained('resources', 'id');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('multiple_events');
}
}

View File

@ -15,12 +15,12 @@ class CreateMultipleEvents extends Migration
{
Schema::create('multiple_events', function (Blueprint $table) {
$table->id();
$table->string('week');
$table->json('date');
$table->json('event_name');
$table->json('accountable');
//$table->longText('event_name');
//$table->string('accountable');
$table->foreignId('multiple_events_parent_id')->constrained('multiple_events_parent', 'id');
$table->string("name");
$table->string("accountable");
$table->longText("description");
$table->dateTime("date");
$table->dateTime('event_end');
$table->timestamps();
});
}
@ -32,6 +32,6 @@ class CreateMultipleEvents extends Migration
*/
public function down()
{
Schema::dropIfExists('multipleevents_controllers');
Schema::dropIfExists('multiple_events');
}
}

View File

@ -24,6 +24,9 @@ class NewsTypeSeeder extends Seeder
[
'type' => "Guide",
],
[
'type' => "MultipleEvent",
],
];
foreach ($newstypedata as $data) {

View File

@ -83,5 +83,6 @@ return[
"tirsdag" => "Tirsdag",
"onsdag" => "Onsdag",
"torsdag" => "Torsdag",
"aktivitetaflyst" => "Aktivitet Aflyst :("
"aktivitetaflyst" => "Aktivitet Aflyst :(",
"ugentligaktiviteter" => "Ugentlig aktivitet"
];

View File

@ -85,5 +85,6 @@ return[
"send" => "Send messeags",
"kategori" => "Category",
"opret" => "Created at: ",
"aktivitetaflyst" => "Event Cancelled :("
"aktivitetaflyst" => "Event Cancelled :(",
"ugentligaktiviteter" => "Weekly activities"
];

View File

@ -2,7 +2,7 @@
@extends("admin.layout.header")
@section("title")
Aktivitet - Vis
Ugentligt aktivitet - Vis
@endsection
@section("path")
@ -38,34 +38,41 @@
<!--datetime-local-->
@csrf
<input type="text" name="week" placeholder="week">
<label id="fileuploadee"for="fileuploade">Baggrundsbillede til nyheden (Valgfri)</label>
<input id="fileuploade" type="file" name="resource" accept="image/*">
<table>
<tr>
<th>Ugedag</th>
<th>Aktivitet</th>
<th>Aktivitets navn</th>
<th>Aktivitets beskrivelse</th>
<th>Tovholder</th>
<th>Tidsrum (Start)</th>
</tr>
<tr>
<td>Mandag</td>
<td><input type="text" name="event_name[]" max="60" value="{{ old("event_name.0") }}"></td>
<td><input type="text" name="name[]" max="255" value="{{ old("name.0") }}"></td>
<td><input type="text" name="description[]" max="255" value="{{ old("description.0") }}"></td>
<td><input type="text" name="accountable[]" value="{{ old("accountable.0") }}"></td>
<td><input type="text" name="date[]" value="{{ old("date.0") }}"></td>
</tr>
<tr>
<td>Tirsdag</td>
<td><input type="text" name="event_name[]" max="60" value="{{ old("event_name.1") }}"></td>
<td><input type="text" name="name[]" max="255" value="{{ old("name.1") }}"></td>
<td><input type="text" name="description[]" max="255" value="{{ old("description.1") }}"></td>
<td><input type="text" name="accountable[]" value="{{ old("accountable.1") }}"></td>
<td><input type="text" name="date[]" value="{{ old("date.1") }}"></td>
</tr>
<tr>
<td>Onsdag</td>
<td><input type="text" name="event_name[]" max="60" value="{{ old("event_name.2") }}"></td>
<td><input type="text" name="name[]" max="255" value="{{ old("name.2") }}"></td>
<td><input type="text" name="description[]" max="255" value="{{ old("description.2") }}"></td>
<td><input type="text" name="accountable[]" value="{{ old("accountable.2") }}"></td>
<td><input type="text" name="date[]" value="{{ old("date.2") }}"></td>
</tr>
<tr>
<td>Torsdag</td>
<td><input type="text" name="event_name[]" max="60" value="{{ old("event_name.3") }}"></td>
<td><input type="text" name="name[]" max="255" value="{{ old("name.3") }}"></td>
<td><input type="text" name="description[]" max="255" value="{{ old("description.3") }}"></td>
<td><input type="text" name="accountable[]" value="{{ old("accountable.3") }}"></td>
<td><input type="text" name="date[]" value="{{ old("date.3") }}"></td>
</tr>

View File

@ -2,11 +2,11 @@
@extends("admin.layout.header")
@section("title")
Aktiviteter - Vis
Ugentligt aktiviteter - Vis
@endsection
@section("path")
<a href="" class="text-white">Vis ugenlige aktiviteter</a> /
<a href="" class="text-white">Vis ugentlig aktiviteter</a> /
@endsection
@section("content")
@ -14,12 +14,7 @@
<table class="tbl mt-2 letterSpaceTable fixOverflow" id="table_id">
<thead>
<th>Uge</th>
<th>Aktivitets dag</th>
<th>Aktivitet</th>
<th>Tovholder</th>
<th>Tidsrum</th>
<th class="w-1em"><img class="w-100" src="{{ asset('/images/icons/eye.svg') }}" alt="Show"></th>
<!--<th class="w-1em"><img class="w-100" src="{{ asset('/images/icons/preview.svg') }}" alt="preview"></th>-->
<th class="w-1em"><img class="w-100" src="{{ asset('/images/icons/preview.svg') }}" alt="preview"></th>
@if(auth()->user()->can('event.edit'))
<th class="w-1em"><img class="w-100" src="{{ asset('/images/icons/pencil.svg') }}" alt="Update"></th>
@endif
@ -32,12 +27,7 @@
<tr id="row_{{ $event->id }}">
<td>{{ $event->week}}</td>
<td>{{ ucfirst(\Carbon\Carbon::create(\Carbon\Carbon::getDays()[1])->dayName) }}</td>
<td>{{ $event->event_name}}</td>
<td>{{ $event->accountable}}</td>
<td>{{ $event->date}}</td>
<td><a href="{{ route("events.signups", [ "event" => $event ]) }}"><img class="w-100" src="{{ asset('/images/icons/eye-dark.svg') }}" alt="Show"></a></td>
<!--<td><a id="preview" onclick="modalNewsContent({{$event->id}})" style="cursor: pointer" ><img class="w-100" src="{{ asset('/images/icons/preview-dark.svg') }}" alt="preview"></a></td>-->
<td><a id="preview" onclick="modalEventContent({{$event->id}})" style="cursor: pointer"><img class="w-100" src="{{ asset('/images/icons/preview-dark.svg') }}" alt="preview"></a></td>
@if(auth()->user()->can('event.edit'))
<td><a href="{{ route("events.edit", [ "event" => $event ]) }}"><img class="w-100" src="{{ asset('/images/icons/pencil-dark.svg') }}" alt="Update"></a></td>
@endif

View File

@ -0,0 +1,161 @@
@extends("app.layout.base")
@section("title")
Ugenlige aktiviteter
@endsection
@section("content")
<style>
iframe, .ql-video {
width: 100%;
}
div.card {
margin-top: 1rem;
margin-bottom: 30px;
width: auto;
heigt: auto;
}
div.container {
padding: 8px;
text-align: justify;
line-height: 1.5;
}
.header > img {
border-radius: 2px 2px 2px 2px
}
/*Alert box*/
.alert {
opacity: 0.8;
padding: 20px;
background-color: #00788A;
color: white;
border-radius: 10px;
background: linear-gradient(to right, red, purple);
}
.closebtn {
margin-left: 15px;
color: white;
font-weight: bold;
float: right;
font-size: 22px;
line-height: 20px;
cursor: pointer;
transition: 0.3s;
}
.closebtn:hover {
color: black;
}
alertBoxBackground {
margin-top: 1rem;
margin-bottom: 30px;
width: auto;
heigt: auto;
}
</style>
<main>
<h1 class="text-center sde-blue mb-2rem">{{ __('msg.ugentligaktiviteter') }}</h1>
<!--Alert box, display when a event is delete: start-->
@if(count(\App\Notification::query()->where("user_id", "=", auth()->user()->id)->get()) > 0)
<div class="alertBoxBackground" id="notifications">
<div class="alert">
<span class="closebtn" onclick="deleteNotifications(document.getElementById('notifications'))">&times;</span>
<strong>{{__('msg.aktivitetaflyst')}}</strong>
@foreach(\App\Notification::query()->where("user_id", "=", auth()->user()->id)->get() as $notification)
<p>{{ $notification->message }}{{ __("msg.canceled") }}</p>
@endforeach
</div>
</div>
@endif
<!--Alert box, display when a event is delete: end -->
<!--If there is a images to the event do this: Start-->
@if(!$multiEvents->isEmpty())
@foreach($multiEvents as $event)
<div class="card">
@if($event->resource_id !== null)
<div class="header">
<img class="w-100" src="{{ asset(\App\Resource::query()->where("id", "=", $event->resource_id)->first()->filename) }}">
</div>
@endif
<div class="container" class="mt-1">
<p class="m-none">{{ \Illuminate\Support\Facades\Date::createFromTimeStamp(strtotime($event->date))->format('d/m/Y \k\l\. H:i') }}</p>
<h4 class="m-none">{{ $event->week }}</h4>
<div class="row justify-content-space mt-1">
@if (count(\App\UserEvent::query()->where('event_id', '=', $event->id)->where('user_id', '=', Auth::user()->id)->get()) > 0)
<a class="sde-blue text-center m-none p-none bold" href="javascript:void(0);" onclick="ajaxCall({{ $event->id }}, this)" >{{__('msg.afmeld')}}</a>
@else {{-- ^ If you're already participating in the event, then show a ´cancel´ button - v Else show a ´participate´ button --}}
<a class="sde-blue text-center m-none p-none bold" href="javascript:void(0);" onclick="ajaxCall({{ $event->id }}, this)" >{{__('msg.tilmeld')}}</a>
@endif
<a class="sde-blue text-center m-none p-none bold" href="{{route("events.show", ["event" => $event->id ])}}">{{__('msg.læsmere')}}</a>
<a class="sde-blue text-center m-none p-none bold" href="{{route("events.accountsignups", ["event" => $event->id ])}}">{{__('msg.sedeltagere')}}</a>
</div>
</div>
</div>
@endforeach
@else
<p class="text-center mb-auto">{{__('msg.dereringenaktiviteter')}}!</p>
@endif
<a href="{{ route("userevents.index") }}" class="mt-auto btn text-center btn-sde-blue" id="tilmeld">{{__('msg.setilmeldteaktiviteter')}}</a>
<div id="snackbar"></div>
</main>
@endsection
@section("scripts")
<script type="text/javascript">
function snackbar(data) {
var x = document.getElementById("snackbar");
x.innerHTML = data;
x.className = "show";
setTimeout(function(){ x.className = x.className.replace("show", ""); }, 3000);
}
function ajaxCall(event_id, el) {
if(el.innerHTML === "{{__("msg.tilmeld")}}") {
axios.post("{{ route("userevents.createajax") }}",
{
event_id: event_id
}
).then(function (response) {
var data = response.data;
snackbar(data);
el.innerHTML = "{{__("msg.afmeld")}}";
}).catch(function (error) {
console.log(error);
});
} else if(el.innerHTML === "{{__("msg.afmeld")}}"){
axios.post("{{ route("userevents.createajaxcancel") }}",
{
event_id: event_id
}
).then(function (response) {
var data = response.data;
snackbar(data);
el.innerHTML = "{{__("msg.tilmeld")}}";
}).catch(function (error) {
console.log(error);
});
}
}
function deleteNotifications(el) {
el.remove();
}
window.onload = function () {
setMain();
axios({
method: 'delete',
url: '{{route("notifications.delete")}}',
data: {
user_id: {{ auth()->user()->id }}
}
});
};
</script>
@endsection

View File

@ -166,7 +166,7 @@
<div class="title">{{ $new->subname }}
<span class="createdat">{{__('msg.opret')}}{{ date('Y-m-d H:i:s', strtotime($new->created_at))}}</span>
</div>
@if($new->resource_id !== null)
@if($new->resource_id !== null)<!--No resource_id-->
<div class="header" style="background-size: cover; background-position: center; background-image: url('{{ asset(\App\Resource::query()->where("id", "=", $new->resource_id)->first()->filename) }}');"></div>
<div class="information">{{ \Illuminate\Support\Facades\Date::createFromTimeStamp(strtotime(\App\Event::query()->where('id', '=', $new->arrangement_id)->first()->date))->format('d/m/Y \k\l\. H:i') }} <span class="dot"></span> {{\App\Event::query()->where('id', '=', $new->arrangement_id)->first()->accountable}} </div>
<div class="container">
@ -181,7 +181,7 @@
<a style="margin: 0; padding: 0; font-weight: 700;" class="sde-blue text-center" href="{{route("events.accountsignups", ["event" => $new->arrangement_id ])}}">{{__('msg.sedeltagere')}}</a>
</div>
</div>
@else
@else <!--Has resource_id-->
<div class="container">
{!! \App\Helpers::closetags(substr($new->content, 0, 300) ) !!}
<div class="information2">{{ \Illuminate\Support\Facades\Date::createFromTimeStamp(strtotime(\App\Event::query()->where('id', '=', $new->arrangement_id)->first()->date))->format('d/m/Y \k\l\. H:i') }} <span class="dot"></span> {{\App\Event::query()->where('id', '=', $new->arrangement_id)->first()->accountable}} </div>
@ -197,7 +197,7 @@
</div>
@endif
</div>
@else<!--Code that prints guides-->
@elseif($new->type == 'Guide')<!--Code that prints guides-->
<div class="card">
<div class="img"><a href="{{ route('guides.index') }}"><img src="{{URL::asset('/images/icons/Vejledninger.svg')}}" alt="Vejledninger:"></a></div>
<div class="title">{{ $new->subname }}
@ -207,7 +207,6 @@
<div class="header bs-cover bp-center" style="background-image: url('{{ asset(\App\Resource::query()->where("id", "=", $new->resource_id)->first()->filename) }}');"></div>
<div class="information">{{__('msg.kategori')}} <span class="dot"></span> {{\App\GuidesCategory::query()->where('id', '=', \App\Guide::query()->where('id','=', $new->arrangement_id)->first()->guide_category_id)->first()->guidesCategoryName}}</div>
@endif
<div class="container" style="margin-top: 8px;">
@php $tags = [ '<p>', '<b>', '<em>', '<a>', '<u>', '<s>', '<sub>', '<ul>', '<li>', '<sup>', '<div>', '<blockquote>', '<ol>', '<strong>', '<br>', '<h1>', '<h2>', '<h3>', '<h4>', '<h5>', '<h6>', '<h7>', '<span>'] @endphp
{!! \App\Helpers::closetags(substr(strip_tags($new->content, $tags), 0, 300)) !!}
@ -218,8 +217,29 @@
@endif {{-- Else if it's a menu or news, then don't show a button at bottom --}}
</div>
</div>
<!---->
@elseif($new->type == 'MultipleEvent')
<div class="card">
<div class="img"><a href="{{ route('guides.index') }}"><img src="{{URL::asset('/images/icons/Aktiviteter.svg')}}" alt="Vejledninger:"></a></div>
<div class="title">Ugenlig aktiviteter for uge {{ $new->subname }}
<span class="createdat">{{__('msg.opret')}}{{ date('Y-m-d H:i:s', strtotime($new->created_at))}}</span>
</div>
@if($new->resource_id !== null)
<div class="header bs-cover bp-center" style="background-image: url('{{ asset(\App\Resource::query()->where("id", "=", $new->resource_id)->first()->filename) }}');"></div>
<div class="information">{{__('msg.kategori')}} <span class="dot"></span> {{\App\GuidesCategory::query()->where('id', '=', \App\Guide::query()->where('id','=', $new->arrangement_id)->first()->guide_category_id)->first()->guidesCategoryName}}</div>
@endif
<div class="container" style="margin-top: 8px;">
@php $tags = [ '<p>', '<b>', '<em>', '<a>', '<u>', '<s>', '<sub>', '<ul>', '<li>', '<sup>', '<div>', '<blockquote>', '<ol>', '<strong>', '<br>', '<h1>', '<h2>', '<h3>', '<h4>', '<h5>', '<h6>', '<h7>', '<span>'] @endphp
{!! \App\Helpers::closetags(substr(strip_tags($new->content, $tags), 0, 300)) !!}
<div class="row" style="justify-content: center; padding-top: 12px; border-top: 1px solid rgba(0, 0, 0, .2);">
<a style="font-weight: 700;" href="{{route("guides.show", ["guide" => $new->arrangement_id])}}" class="sde-blue">{{__('msg.læsmere')}}</a>
</div>
</div>
</div>
@endif
@endforeach
@if(count(\App\News::query()->orderBy("created_at", "desc")->get()) == 0)
<p class="text-center">{{__('msg.ingennyheder')}}</p>

View File

@ -39,6 +39,7 @@ Route::get("/settings", "SettingsController@index")->name("settings.index");
Route::post("/events/signup", "UserEventController@createajax")->name("userevents.createajax");
Route::post("/account/mailwants", "UserController@createajax")->name("users.createajax");
Route::get("/about", "AboutController@index")->name("about.index");
Route::get("/multiple-events", "MultipleEventsController@index")->name("multiple-events.index");
Route::post("/events/cancelsignup", "UserEventController@createajaxcancel")->name("userevents.createajaxcancel");
Route::post("/account/cancelmailwants", "UserController@createajaxcancel")->name("users.createajaxcancel");
Route::delete("/notifications/delete", "EventController@deleteNotifications")->name("notifications.delete");