From 6051b18796a100898126647e10d6c610d240e332 Mon Sep 17 00:00:00 2001
From: Janis Hutz
Date: Fri, 18 Aug 2023 18:13:53 +0200
Subject: [PATCH] implement first part of occupied seat counter
---
src/server/admin/api/getHandler.js | 2 ++
src/server/admin/api/postHandler.js | 8 ++++++-
src/server/backend/api/postHandler.js | 24 +++++++++++++++++--
src/server/backend/db/data/booked.json | 1 +
src/server/backend/db/data/events.json | 2 +-
src/server/config/settings.config.json | 14 +----------
.../main/src/views/admin/SettingsView.vue | 10 ++++----
.../views/purchasing/PaymentSuccessView.vue | 6 ++++-
8 files changed, 44 insertions(+), 23 deletions(-)
diff --git a/src/server/admin/api/getHandler.js b/src/server/admin/api/getHandler.js
index fcf7402..6f64a4d 100644
--- a/src/server/admin/api/getHandler.js
+++ b/src/server/admin/api/getHandler.js
@@ -76,6 +76,8 @@ class GETHandler {
resolve( this.settings.currency );
} else if ( call === 'getAdminAccounts' ) {
// TODO: Finish
+ } else if ( call === 'getPaymentGatewaySettings' ) {
+ // TODO: Finish
} else if ( call === 'getSettings' ) {
resolve( this.settings );
} else {
diff --git a/src/server/admin/api/postHandler.js b/src/server/admin/api/postHandler.js
index 7bbb165..2322749 100644
--- a/src/server/admin/api/postHandler.js
+++ b/src/server/admin/api/postHandler.js
@@ -119,7 +119,13 @@ class POSTHandler {
this.settings[ 'currency' ] = data.currency;
this.settings[ 'payments' ] = data.payments;
fs.writeFileSync( path.join( __dirname + '/../../config/settings.config.json' ), JSON.stringify( this.settings ) );
- // TODO: Parse all events and update currency
+ db.getJSONData( 'events' ).then( dat => {
+ let updated = dat;
+ for ( let event in updated ) {
+ updated[ event ][ 'currency' ] = data.currency;
+ }
+ db.writeJSONData( 'events', updated );
+ } );
resolve( 'ok' );
} else {
reject( { 'code': 404, 'error': 'Route not found' } );
diff --git a/src/server/backend/api/postHandler.js b/src/server/backend/api/postHandler.js
index c563785..de5ef8f 100644
--- a/src/server/backend/api/postHandler.js
+++ b/src/server/backend/api/postHandler.js
@@ -16,10 +16,30 @@ class POSTHandler {
constructor () {
db.getJSONData( 'booked' ).then( dat => {
this.allSelectedSeats = dat;
+ db.getJSONData( 'events' ).then( dat => {
+ db.getJSONData( 'seatplan' ).then( locations => {
+ this.events = dat;
+ // TODO: Load from event db subtract all occupied seats from the ordered db from it.
+ this.ticketTotals = {};
+ for ( let event in this.events ) {
+ if ( locations[ this.events[ event ][ 'location' ] ] ) {
+ this.ticketTotals[ event ] = locations[ this.events[ event ][ 'location' ] ][ 'save' ][ 'seatInfo' ][ 'count' ];
+ } else {
+ this.ticketTotals[ event ] = this.events[ event ][ 'maxTickets' ];
+ }
+ }
+
+ console.log( this.ticketTotals );
+ // for ( let order in this.allSelectedSeats ) {
+
+ // }
+ console.log( this.allSelectedSeats );
+ } );
+ } );
} );
- // TODO: Load from event db subtract all occupied seats from the ordered db from it.
- // TODO: When loading event data, also add currency to it from settings
+
this.ticketTotals = { 'test2': { 'ticket1': 5, 'ticket2': 5 } };
+
this.settings = JSON.parse( fs.readFileSync( path.join( __dirname + '/../../config/settings.config.json' ) ) );
}
diff --git a/src/server/backend/db/data/booked.json b/src/server/backend/db/data/booked.json
index e69de29..819c83c 100644
--- a/src/server/backend/db/data/booked.json
+++ b/src/server/backend/db/data/booked.json
@@ -0,0 +1 @@
+{"test4":{"secAr4s7":{"id":"secAr4s7","component":1,"ticketOption":"1","eventID":"test4","category":"1","name":"Row 5, Seat 8"}}}
\ No newline at end of file
diff --git a/src/server/backend/db/data/events.json b/src/server/backend/db/data/events.json
index 8678d10..5f1d45e 100644
--- a/src/server/backend/db/data/events.json
+++ b/src/server/backend/db/data/events.json
@@ -1 +1 @@
-{"test4":{"name":"Test4Event","description":"Let's see...","location":"test2","date":"2023-09-18T10:00:00.000Z","categories":{"1":{"price":{"1":20,"2":30},"bg":"#FFFFFF","fg":"#000000","name":"Category 1","id":"1","ticketCount":1}},"ageGroups":{"1":{"id":1,"name":"Child","age":"0 - 15.99"},"2":{"id":2,"name":"Adult"}},"maxTickets":0,"eventID":"test4","time":"10:00:00.000","startingPrice":20,"currency":"USD","isDraft":true,"locationName":"TestLocation2","hasSeatplan":true}}
\ No newline at end of file
+{"test4":{"name":"Test4Event","description":"Let's see...","location":"test2","date":"2023-09-18T10:00:00.000Z","categories":{"1":{"price":{"1":20,"2":30},"bg":"#FFFFFF","fg":"#000000","name":"Category 1","id":"1","ticketCount":1}},"ageGroups":{"1":{"id":1,"name":"Child","age":"0 - 15.99"},"2":{"id":2,"name":"Adult"}},"maxTickets":0,"eventID":"test4","time":"10:00:00.000","startingPrice":20,"currency":"CHF","isDraft":true,"locationName":"TestLocation2","hasSeatplan":true}}
\ No newline at end of file
diff --git a/src/server/config/settings.config.json b/src/server/config/settings.config.json
index d003429..1b5caf5 100644
--- a/src/server/config/settings.config.json
+++ b/src/server/config/settings.config.json
@@ -1,13 +1 @@
-{
- "init":true,
- "twoFA":"enforce",
- "setupKey":"hello world",
- "twoFAMode":"enhanced",
- "db":"mysql",
- "payments":"stripe",
- "name":"libreevent",
- "yourDomain":"http://localhost:8080",
- "mailSender":"libreevent ",
- "maxTickets":10,
- "currency":"CHF"
-}
\ No newline at end of file
+{"init":true,"twoFA":"enforce","setupKey":"hello world","twoFAMode":"enhanced","db":"mysql","payments":"stripe","name":"libreevent","yourDomain":"http://localhost:8080","mailSender":"libreevent ","maxTickets":10,"currency":"CHF"}
\ No newline at end of file
diff --git a/src/webapp/main/src/views/admin/SettingsView.vue b/src/webapp/main/src/views/admin/SettingsView.vue
index 9063d6a..11b84a7 100644
--- a/src/webapp/main/src/views/admin/SettingsView.vue
+++ b/src/webapp/main/src/views/admin/SettingsView.vue
@@ -33,7 +33,7 @@
Admin Accounts
Before setting or editing permissions here, please read the corresponding section of the documentation here.
- Usually, the permissions automatically set by the system on account creation should be appropriate.
+ Usually, the permissions automatically set by the system on account creation should be appropriate. (TIP: Right click for more options)
{ e.preventDefault(); openRightClickMenu( account.username, e ); }">