10
10
use Illuminate \Http \Request ;
11
11
use Auth ;
12
12
use Carbon \Carbon ;
13
+ use Illuminate \Support \Facades \Storage ;
14
+ use Illuminate \Support \Facades \Validator ;
15
+ use Illuminate \Support \Str ;
13
16
14
17
class EventController extends Controller
15
18
{
@@ -33,6 +36,11 @@ public function viewEvent($slug)
33
36
{
34
37
$ event = Event::where ('slug ' , $ slug )->firstOrFail ();
35
38
$ updates = $ event ->updates ;
39
+ if (Auth::check () && ControllerApplication::where ('user_id ' , Auth::id ())->where ('event_id ' , $ event ->id ))
40
+ {
41
+ $ app = ControllerApplication::where ('user_id ' , Auth::id ())->where ('event_id ' , $ event ->id )->first ();
42
+ return view ('events.view ' , compact ('event ' , 'updates ' , 'app ' ));
43
+ }
36
44
return view ('events.view ' , compact ('event ' , 'updates ' ));
37
45
}
38
46
@@ -71,4 +79,84 @@ public function adminViewEvent($slug)
71
79
$ updates = $ event ->updates ;
72
80
return view ('admin.events.view ' , compact ('event ' ,'applications ' , 'updates ' ));
73
81
}
82
+
83
+ public function adminCreateEvent ()
84
+ {
85
+ return view ('admin.events.create ' );
86
+ }
87
+
88
+ public function adminCreateEventPost (Request $ request )
89
+ {
90
+ //Define validator messages
91
+ $ messages = [
92
+ 'name.required ' => 'A name is required. ' ,
93
+ 'name.max ' => 'A name may not be more than 100 characters long. ' ,
94
+ 'image.mimes ' => 'An image file must be in the jpg png or gif formats. ' ,
95
+ 'description.required ' => 'A description is required. ' ,
96
+ ];
97
+
98
+ //Validate
99
+ $ validator = Validator::make ($ request ->all (), [
100
+ 'name ' => 'required|max:100 ' ,
101
+ 'image ' => 'mimes:jpeg,jpg,png,gif ' ,
102
+ 'description ' => 'required ' ,
103
+ 'start ' => 'required ' ,
104
+ 'end ' => 'required '
105
+ ], $ messages );
106
+
107
+ //Redirect if fails
108
+ if ($ validator ->fails ()) {
109
+ return redirect ()->back ()->withInput ()->withErrors ($ validator , 'createEventErrors ' );
110
+ }
111
+
112
+ //Create event object
113
+ $ event = new Event ();
114
+
115
+ //Assign name
116
+ $ event ->name = $ request ->get ('name ' );
117
+
118
+ //Assign start/end date/time
119
+ $ event ->start_timestamp = $ request ->get ('start ' );
120
+ $ event ->end_timestamp = $ request ->get ('end ' );
121
+
122
+ //Assign description
123
+ $ event ->description = $ request ->get ('description ' );
124
+
125
+ //Assign user
126
+ $ event ->user_id = Auth::id ();
127
+
128
+ //Upload image if it exists
129
+ if ($ request ->file ('image ' )) {
130
+ $ basePath = 'public/files/ ' .Carbon::now ()->toDateString ().'/ ' .rand (1000 ,2000 );
131
+ $ path = $ request ->file ('image ' )->store ($ basePath );
132
+ $ event ->image_url = Storage::url ($ path );
133
+ }
134
+
135
+ //Create slug
136
+ $ event ->slug = Str::slug ($ request ->get ('name ' ).'- ' .Carbon::now ()->toDateString ());
137
+
138
+ //Assign departure icao and arrival icao if they exist
139
+ if ($ request ->get ('departure_icao ' ) && $ request ->get ('arrival_icao ' )) {
140
+ $ event ->departure_icao = $ request ->get ('departure_icao ' );
141
+ $ event ->arrival_icao = $ request ->get ('arrival_icao ' );
142
+ }
143
+
144
+ //If controller apps are open then lets make them open
145
+ if ($ request ->has ('openControllerApps ' )) {
146
+ $ event ->controller_applications_open = true ;
147
+ }
148
+
149
+ //Save it
150
+ $ event ->save ();
151
+
152
+ //Redirect
153
+ return redirect ()->route ('events.admin.view ' , $ event ->slug )->with ('success ' , 'Event created! ' );
154
+ }
155
+
156
+ public function adminDeleteEvent ($ slug )
157
+ {
158
+ $ event = Event::where ('slug ' , $ slug )->firstOrFail ();
159
+ $ event ->delete ();
160
+ return redirect ()->route ('events.admin.index ' )->with ('info ' , 'Event deleted. ' );
161
+ }
74
162
}
0 commit comments