Skip to content

Commit 47a3642

Browse files
committed
Release
0 parents  commit 47a3642

30 files changed

+1592
-0
lines changed

Config/config.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?php
2+
/**
3+
* Provide any configuration items here
4+
*/
5+
6+
return [
7+
'name' => 'CHEvents'
8+
];
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
<?php
2+
3+
use App\Contracts\Migration;
4+
use Illuminate\Support\Facades\Schema;
5+
use Illuminate\Database\Schema\Blueprint;
6+
7+
/**
8+
* Class CreateChEventsTables
9+
*/
10+
class CreateChEventsTables extends Migration
11+
{
12+
/**
13+
* Run the migrations.
14+
*
15+
* @return void
16+
*/
17+
public function up()
18+
{
19+
if (!Schema::hasTable('ch_events')) {
20+
Schema::create('ch_events', function (Blueprint $table) {
21+
$table->id();
22+
$table->string('name');
23+
$table->text('description')->nullable();
24+
$table->string('banner_url')->nullable();
25+
$table->string('route_code')->nullable();
26+
$table->dateTime('starting_at');
27+
$table->dateTime('ending_at');
28+
$table->timestamps();
29+
$table->softDeletes();
30+
});
31+
}
32+
if (!Schema::hasTable('ch_event_user')) {
33+
Schema::create('ch_event_user', function (Blueprint $table) {
34+
$table->id();
35+
$table->foreignId('event_id');
36+
$table->foreignId('user_id');
37+
});
38+
}
39+
if (!Schema::hasTable('ch_event_matrix')) {
40+
Schema::create('ch_event_matrix', function (Blueprint $table) {
41+
$table->id();
42+
$table->foreignId('user_id')->nullable();
43+
$table->foreignId('event_id');
44+
$table->string('flight_id')->nullable();
45+
$table->string('pirep_id')->nullable();
46+
$table->foreign('event_id')->references('id')->on('ch_events')->cascadeOnDelete();
47+
});
48+
}
49+
}
50+
51+
/**
52+
* Reverse the migrations.
53+
*
54+
* @return void
55+
*/
56+
public function down()
57+
{
58+
Schema::dropIfExists('ch_events');
59+
Schema::dropIfExists('ch_event_user');
60+
Schema::dropIfExists('ch_event_user_matrix');
61+
}
62+
}
Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,164 @@
1+
<?php
2+
3+
namespace Modules\CHEvents\Http\Controllers\Admin;
4+
5+
use App\Contracts\Controller;
6+
use App\Models\Pirep;
7+
use Carbon\Carbon;
8+
use Illuminate\Http\Request;
9+
use Laracasts\Flash\Flash;
10+
use Modules\CHEvents\Models\Event;
11+
use Modules\CHEvents\Models\EventMatrix;
12+
13+
/**
14+
* Admin controller
15+
*/
16+
class AdminController extends Controller
17+
{
18+
/**
19+
* Display a listing of the resource.
20+
*
21+
* @param Request $request
22+
*
23+
* @return mixed
24+
*/
25+
public function index(Request $request)
26+
{
27+
return view('chevents::admin.index', ['events' => Event::paginate(20)]);
28+
}
29+
30+
/**
31+
* Show the form for creating a new resource.
32+
*
33+
* @param Request $request
34+
*
35+
* @return mixed
36+
*/
37+
public function create(Request $request)
38+
{
39+
return view('chevents::admin.create');
40+
}
41+
42+
/**
43+
* Store a newly created resource in storage.
44+
*
45+
* @param Request $request
46+
*/
47+
public function store(Request $request)
48+
{
49+
$data = $request->all();
50+
$sd = Carbon::parse($data['starting_at']);
51+
$ed = Carbon::parse($data['ending_at']);
52+
53+
if ($sd->isAfter($ed)) {
54+
Flash::error("Starting Date/Time is after Ending Date/Time.");
55+
return back();
56+
}
57+
$event = Event::create($data);
58+
return response()->redirectToRoute('admin.chevents.show', [$event]);
59+
}
60+
61+
/**
62+
* Show the form for editing the specified resource.
63+
*
64+
* @param Request $request
65+
*
66+
* @return mixed
67+
*/
68+
public function edit(Event $event, Request $request)
69+
{
70+
return view('chevents::admin.edit', ['event' => $event]);
71+
}
72+
73+
/**
74+
* Show the specified resource.
75+
*
76+
* @param Request $request
77+
*
78+
* @return mixed
79+
*/
80+
public function show(Event $event, Request $request)
81+
{
82+
$pireps = $event->matrix()->whereNotNull('pirep_id')->get()->map(function($m) { return $m->pirep; });
83+
return view('chevents::admin.show', ['event' => $event, 'pireps' => $pireps]);
84+
}
85+
public function show_pireps(Event $event, Request $request) {
86+
$pireps = $event->matrix()->whereNotNull('pirep_id')->get()->map(function($m) { return $m->pirep; });
87+
return view('chevents::admin.show_pireps', ['event' => $event, 'pireps' => $pireps]);
88+
}
89+
90+
public function attach_pirep(Event $event, Request $request) {
91+
$pirep = Pirep::findOrFail($request->input('pirep_id'));
92+
$event->matrix()->create([
93+
'pirep_id' => $pirep->id,
94+
'user_id' => $pirep->user_id
95+
]);
96+
return response()->redirectToRoute('admin.chevents.pireps.index', $event);
97+
}
98+
99+
public function detach_pirep(Event $event, Request $request) {
100+
$em = EventMatrix::where(['event_id' => $event->id, 'pirep_id' => $request->input('pirep_id')])->first();
101+
102+
if ($em->flight_id == null) {
103+
$em->delete();
104+
} else {
105+
$em->pirep_id = null;
106+
$em->save();
107+
}
108+
return response()->redirectToRoute('admin.chevents.pireps.index', $event);
109+
}
110+
111+
public function show_users(Event $event, Request $request) {
112+
$event->load('users');
113+
return view('chevents::admin.show_users', ['event' => $event]);
114+
}
115+
116+
public function attach_user(Event $event, Request $request) {
117+
// check if already attached
118+
$user_id = $request->input('user_id');
119+
if (!$event->users->contains($user_id)) {
120+
$event->users()->attach($request->input('user_id'));
121+
Flash::success("User Attached!");
122+
} else {
123+
Flash::info("User Already Attached!");
124+
}
125+
return response()->redirectToRoute('admin.chevents.users.index', $event);
126+
}
127+
128+
public function detach_user(Event $event, Request $request) {
129+
$event->users()->detach($request->input('user_id'));
130+
return response()->redirectToRoute('admin.chevents.users.index', $event);
131+
}
132+
133+
/**
134+
* Update the specified resource in storage.
135+
*
136+
* @param Request $request
137+
*/
138+
public function update(Event $event, Request $request)
139+
{
140+
$data = $request->all();
141+
142+
$sd = Carbon::parse($data['starting_at']);
143+
$ed = Carbon::parse($data['ending_at']);
144+
145+
if ($sd->isAfter($ed)) {
146+
Flash::error("Starting Date/Time is after Ending Date/Time.");
147+
return back();
148+
}
149+
$event->update($request->all());
150+
return response()->redirectToRoute('admin.chevents.show', [$event]);
151+
}
152+
153+
/**
154+
* Remove the specified resource from storage.
155+
*
156+
* @param Request $request
157+
*/
158+
public function destroy(Event $event, Request $request)
159+
{
160+
$event->delete();
161+
Flash::success("Event Deleted Successfully");
162+
return response()->redirectToRoute('admin.chevents.index');
163+
}
164+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?php
2+
3+
namespace Modules\CHEvents\Http\Controllers\Api;
4+
5+
use App\Contracts\Controller;
6+
use Illuminate\Http\Request;
7+
8+
/**
9+
* class ApiController
10+
* @package Modules\CHEvents\Http\Controllers\Api
11+
*/
12+
class ApiController extends Controller
13+
{
14+
/**
15+
* Just send out a message
16+
*
17+
* @param Request $request
18+
*
19+
* @return mixed
20+
*/
21+
public function index(Request $request)
22+
{
23+
return $this->message('Hello, world!');
24+
}
25+
26+
/**
27+
* Handles /hello
28+
*
29+
* @param Request $request
30+
*
31+
* @return mixed
32+
*/
33+
public function hello(Request $request)
34+
{
35+
// Another way to return JSON, this for a custom response
36+
// It's recommended to use Resources for responses from the database
37+
return response()->json([
38+
'name' => Auth::user()->name,
39+
]);
40+
}
41+
42+
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
<?php
2+
3+
namespace Modules\CHEvents\Http\Controllers\Frontend;
4+
5+
use App\Contracts\Controller;
6+
use Illuminate\Http\Request;
7+
use Illuminate\Support\Facades\Auth;
8+
use Modules\CHEvents\Models\Event;
9+
10+
/**
11+
* Class $CLASS$
12+
* @package
13+
*/
14+
class IndexController extends Controller
15+
{
16+
/**
17+
* Display a listing of the resource.
18+
*
19+
* @param Request $request
20+
*
21+
* @return mixed
22+
*/
23+
public function index(Request $request)
24+
{
25+
26+
return view('chevents::frontend.index', ['events' => Event::orderByDesc('starting_at')->paginate(20)]);
27+
}
28+
29+
/**
30+
* Show the specified resource.
31+
*
32+
* @param Request $request
33+
*
34+
* @return mixed
35+
*/
36+
public function show(Event $event, Request $request)
37+
{
38+
return view('chevents::frontend.show', ['event' => $event]);
39+
}
40+
41+
public function attach(Event $event, Request $request)
42+
{
43+
$user = Auth::user();
44+
$event->users()->attach($user->id);
45+
return redirect()->back();
46+
//return response()->redirectToRoute('chevents.show', [$event]);
47+
}
48+
49+
public function detach(Event $event, Request $request)
50+
{
51+
$user = Auth::user();
52+
$event->users()->detach($user->id);
53+
return redirect()->back();
54+
//return response()->redirectToRoute('chevents.show', [$event]);
55+
}
56+
57+
}

Http/Routes/api.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?php
2+
3+
/**
4+
* This is publicly accessible
5+
*/
6+
Route::group(['middleware' => []], function() {
7+
Route::get('/', 'ApiController@index');
8+
});
9+
10+
/**
11+
* This is required to have a valid API key
12+
*/
13+
Route::group(['middleware' => [
14+
'api.auth'
15+
]], function() {
16+
Route::get('/hello', 'ApiController@hello');
17+
});

0 commit comments

Comments
 (0)