aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/Http/Controllers/ReservationsController.php51
-rw-r--r--public/js/activities.js2
-rw-r--r--public/js/reservations.js66
-rw-r--r--routes/api.php1
-rw-r--r--routes/web.php2
5 files changed, 117 insertions, 5 deletions
diff --git a/app/Http/Controllers/ReservationsController.php b/app/Http/Controllers/ReservationsController.php
index 2a46343..c105433 100644
--- a/app/Http/Controllers/ReservationsController.php
+++ b/app/Http/Controllers/ReservationsController.php
@@ -3,6 +3,7 @@
namespace App\Http\Controllers;
use Illuminate\Http\Request;
+use function GuzzleHttp\json_encode;
use function dd;
use function redirect;
@@ -167,6 +168,54 @@ class ReservationsController extends Controller
public function update(Request $request)
{
- return Redirect::back();
+ $rules = [
+ 'action' => 'required',
+ 'id' => 'required|numeric',
+ 'qso' => 'required|numeric',
+ 'approved' => 'required',
+ 'specialCall' => 'required|alphanum',
+ 'fromTime' => 'required|date',
+ 'toTime' => 'required|date|after:fromTime',
+ 'frequencies' => 'required',
+ 'modes' => 'required',
+ 'operatorCall' => 'required|alphanum',
+ 'operatorName' => 'required',
+ 'operatorEmail' => 'required|email',
+ 'operatorPhone' => ['required', 'regex:/^[0-9 ]+$/'],
+ ];
+ $validatedData = $request->validate($rules);
+
+ $record = Reservation::findOrFail($request->id);
+
+ if ($request->action == "update") {
+ $record->approved = filter_var($request->approved, FILTER_VALIDATE_BOOLEAN);
+ $record->qso = $request->qso;
+ $record->specialCall = $request->specialCall;
+ $record->fromTime = $request->fromTime;
+ $record->toTime = $request->toTime;
+ $record->frequencies = $request->frequencies;
+ $record->modes = $request->modes;
+ $record->operatorCall = $request->operatorCall;
+ $record->operatorName = $request->operatorName;
+ $record->operatorEmail = $request->operatorEmail;
+ $record->operatorPhone = $request->operatorPhone;
+ $record->saveOrFail();
+
+ return response()->json(['action' => $request->input('action')]);
+
+ } else if ($request->action == "restore") {
+ $resp = $record->toArray();
+ $resp['action'] = $request->input('action');
+
+ return response()->json($resp);
+
+ } else if ($request->action == "delete") {
+ $record->delete();
+
+ return response()->json(['action' => $request->input('action')]);
+
+ } else {
+ return response()->json(['action' => 'error']);
+ }
}
}
diff --git a/public/js/activities.js b/public/js/activities.js
index 94bee2d..6529e6b 100644
--- a/public/js/activities.js
+++ b/public/js/activities.js
@@ -17,7 +17,7 @@ function fillTable() {
if (status === 'success') {
if (data.data.length > 0) {
tableData.empty();
- for (var i = 0, len = data.data.length; i < len; i++) {
+ for (i = 0, len = data.data.length; i < len; i++) {
tr = '<tr><td>' + data.data[i].operatorCall + '</td>' +
'<td>' + data.data[i].fromTime + '</td>' +
'<td>' + data.data[i].toTime + '</td>' +
diff --git a/public/js/reservations.js b/public/js/reservations.js
index 65b2e2e..781b835 100644
--- a/public/js/reservations.js
+++ b/public/js/reservations.js
@@ -17,7 +17,7 @@ function fillTable() {
if (status === 'success') {
if (data.data.length > 0) {
tableData.empty();
- for (var i = 0, len = data.data.length; i < len; i++) {
+ for (i = 0, len = data.data.length; i < len; i++) {
tr = '<tr>';
tr += '<td>' + data.data[i].id + '</td>';
if (data.data[i].approved === 1)
@@ -56,5 +56,67 @@ function fillTable() {
}
function btnAction(action, btn) {
- console.log(action);
+ trDom = btn.parentElement.parentElement;
+ trData = trDom.children;
+
+ actionData = {
+ action: action,
+ id: trData[0].innerText,
+ approved: trData[1].firstElementChild.checked,
+ operatorCall: trData[2].innerText,
+ qso: trData[3].innerText,
+ fromTime: trData[4].innerText,
+ toTime: trData[5].innerText,
+ specialCall: trData[6].innerText,
+ frequencies: trData[7].innerText,
+ modes: trData[8].innerText,
+ operatorName: trData[9].innerText,
+ operatorEmail: trData[10].innerText,
+ operatorPhone: trData[11].innerText
+ };
+
+ if (actionData.action == 'delete') {
+ if (confirm("Are you sure you want to delete reservation #" + actionData.id + " made by " + actionData.operatorCall + "?") === true)
+ trDom.remove();
+ else return;
+ }
+
+ jQuery.post('/api/reservations', actionData, function (response, status) {
+ if (status === 'success') {
+ try {
+ // Handle various actions
+ if (response.action == "update") {
+ //document.getElementById("notice").innerText = "Record #" + actionData.id + " updated.";
+ console.log('Record #' + actionData.id + ' updated.');
+ } else if (response.action == "restore") {
+ trData[1].firstElementChild.checked = response.approved == 1;
+ trData[2].innerText = response.operatorCall;
+ trData[3].innerText = response.qso;
+ trData[4].innerText = response.fromTime;
+ trData[5].innerText = response.toTime;
+ trData[6].innerText = response.specialCall;
+ trData[7].innerText = response.frequencies;
+ trData[8].innerText = response.modes;
+ trData[9].innerText = response.operatorName;
+ trData[10].innerText = response.operatorEmail;
+ trData[11].innerText = response.operatorPhone;
+ //document.getElementById("notice").innerText = "Record's #" + actionData.id + " data restored.";
+ //console.log('Record #' + actionData.id + ' data restored.');
+ } else if (response.action == "delete") {
+ //document.getElementById("notice").innerText = "Record #" + actionData.id + " deleted.";
+ //console.log('Record #' + actionData.id + ' deleted.');
+ } else {
+ //console.log("No action?");
+ //console.log(data);
+ }
+ } catch {
+ //console.log(data);
+ alert("Bad input data!");
+ }
+ }
+ else {
+ //console.log('AJAX error');
+ alert("Bad input data!");
+ }
+ });
}
diff --git a/routes/api.php b/routes/api.php
index 413ea33..d85ea7a 100644
--- a/routes/api.php
+++ b/routes/api.php
@@ -21,4 +21,3 @@ Route::middleware('auth:api')->get('/user', function (Request $request) {
});
Route::post('activities', [ReservationsController::class, 'index']);
-Route::post('reservations', [ReservationsController::class, 'update'])->middleware(['auth']);
diff --git a/routes/web.php b/routes/web.php
index 393b226..20437b1 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -43,6 +43,8 @@ Route::post('/special-calls/reserve', [ReservationsController::class, 'store'])-
Route::get('/special-calls/reservations', [ReservationsController::class, 'edit'])->name('reservations')->middleware(['auth']);
Route::post('/special-calls/reservations', [ReservationsController::class, 'edit'])->name('reservationsForm')->middleware(['auth']);
+Route::post('/api/reservations', [ReservationsController::class, 'update'])->middleware(['auth']);
+
Route::get('/special-calls/add', [SpecialCallsController::class, 'create'])->name('addSign')->middleware(['auth']);
Route::post('/special-calls/add', [SpecialCallsController::class, 'store'])->name('addSignForm')->middleware(['auth']);