aboutsummaryrefslogtreecommitdiff
path: root/app/Http/Controllers/ReservationsController.php
diff options
context:
space:
mode:
Diffstat (limited to 'app/Http/Controllers/ReservationsController.php')
-rw-r--r--app/Http/Controllers/ReservationsController.php85
1 files changed, 85 insertions, 0 deletions
diff --git a/app/Http/Controllers/ReservationsController.php b/app/Http/Controllers/ReservationsController.php
new file mode 100644
index 0000000..4816993
--- /dev/null
+++ b/app/Http/Controllers/ReservationsController.php
@@ -0,0 +1,85 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Http\Request;
+use function dd;
+use function redirect;
+
+use Illuminate\Support\Facades\Validator;
+use Illuminate\Support\Facades\Redirect;
+
+use App\Models\Reservation;
+use App\Models\SpecialCall;
+
+class ReservationsController extends Controller
+{
+ public function reserve(Request $request)
+ {
+ $signs = SpecialCall::all();
+ return view('pages.reserve', compact('signs'));
+ }
+
+ public function reserveForm(Request $request)
+ {
+ //$validatedData = $request->validate([
+ //...
+ //]);
+
+ $rules = [
+ 'scall' => 'required|alphanum',
+ 'sdate' => 'required|date',
+ 'stime' => 'required',
+ 'edate' => 'required|date',
+ 'etime' => 'required',
+ 'freqs' => 'required',
+ 'modes' => 'required',
+ 'ocall' => 'required|alphanum',
+ 'oname' => 'required',
+ 'email' => 'required|email',
+ 'phone' => ['required', 'regex:/^[0-9 ]+$/'],
+ ];
+
+ $messages = [
+ 'freqs.required' => 'You need to choose at least one frequency.',
+ 'modes.required' => 'You need to choose at least one mode.',
+ 'ocall.alphanum' => 'Callsigns must be alpha-numeric!',
+ ];
+
+ $validator = Validator::make($request->all(), $rules, $messages);
+
+ if ($validator->fails()) {
+ return Redirect::back()
+ ->withErrors($validator)
+ ->withInput();
+ }
+
+ $reservation = new Reservation();
+
+ $reservation->specialCall = $request->scall;
+ $reservation->fromTime = $request->sdate . ' ' . $request->stime;
+ $reservation->toTime = $request->edate . ' ' . $request->etime;
+ $reservation->frequencies = implode(', ', $request->freqs);
+ $reservation->modes = implode(', ', $request->modes);
+ $reservation->operatorCall = $request->ocall;
+ $reservation->operatorName = $request->oname;
+ $reservation->operatorEmail = $request->email;
+ $reservation->operatorPhone = $request->phone;
+
+ $reservation->saveOrFail();
+
+ return redirect()->route('reserve')->with('status', 'Reservation submitted.');
+ }
+
+ // Administration
+ public function reservations(Request $request)
+ {
+ $data = Reservation::all();
+ return view('pages.reservations', compact('data'));
+ }
+
+ public function reservationsForm(Request $request)
+ {
+ return Redirect::back();
+ }
+}