From d2c0257b8f4842c4310d4c9174447da845309c15 Mon Sep 17 00:00:00 2001 From: Janis Hutz Date: Thu, 10 Aug 2023 20:54:53 +0200 Subject: [PATCH] clean up settings of event and general ones --- src/server/backend/api/postHandler.js | 2 +- .../plugins/payments/stripe/stripeRoutes.js | 2 +- src/server/backend/tickets/ticketGenerator.js | 2 +- src/server/config/settings.config.json | 3 +- .../main/src/views/admin/SettingsView.vue | 8 + .../views/admin/events/EventsDetailsView.vue | 162 ++++++++++-------- .../src/views/purchasing/PurchaseView.vue | 2 +- src/webapp/main/src/views/user/SignupView.vue | 1 - 8 files changed, 100 insertions(+), 82 deletions(-) diff --git a/src/server/backend/api/postHandler.js b/src/server/backend/api/postHandler.js index fbb7b20..8d01819 100644 --- a/src/server/backend/api/postHandler.js +++ b/src/server/backend/api/postHandler.js @@ -17,7 +17,7 @@ class POSTHandler { db.getJSONData( 'booked' ).then( dat => { this.allSelectedSeats = dat; } ); - // this.allSelectedSeats = { 'test2': { 'secAr1s1': { 'id': 'secAr1s1', 'component': 1 } } }; + // TODO: Load from event db 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/plugins/payments/stripe/stripeRoutes.js b/src/server/backend/plugins/payments/stripe/stripeRoutes.js index c1071a3..4f0b2f6 100644 --- a/src/server/backend/plugins/payments/stripe/stripeRoutes.js +++ b/src/server/backend/plugins/payments/stripe/stripeRoutes.js @@ -49,7 +49,7 @@ module.exports = ( app, settings ) => { 'product_data': { 'name': data[ event ][ item ].name, }, - 'currency': events[ event ].currency, + 'currency': settings.currency, 'unit_amount': Math.round( parseFloat( events[ event ][ 'categories' ][ data[ event ][ item ].category ].price[ data[ event ][ item ][ 'ticketOption' ] ] ) * 100 ), }, 'quantity': data[ event ][ item ].count ?? 1, diff --git a/src/server/backend/tickets/ticketGenerator.js b/src/server/backend/tickets/ticketGenerator.js index a71a706..4fc19c7 100644 --- a/src/server/backend/tickets/ticketGenerator.js +++ b/src/server/backend/tickets/ticketGenerator.js @@ -56,7 +56,7 @@ class TicketGenerator { } } - // TODO: Maybe move to subprocesses + // TODO: FUTURE: move to subprocesses queueHandler () { if ( !this.isRunning ) { this.isRunning = true; diff --git a/src/server/config/settings.config.json b/src/server/config/settings.config.json index 7ef8ebd..b08a5d6 100644 --- a/src/server/config/settings.config.json +++ b/src/server/config/settings.config.json @@ -8,5 +8,6 @@ "name": "libreevent", "yourDomain": "http://localhost:8080", "mailSender": "libreevent ", - "maxTickets": 10 + "maxTickets": 10, + "currency": "USD" } \ 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 c88c770..4d5f8d8 100644 --- a/src/webapp/main/src/views/admin/SettingsView.vue +++ b/src/webapp/main/src/views/admin/SettingsView.vue @@ -10,6 +10,7 @@ @@ -143,6 +153,8 @@ // TODO: When loading data form server, also load categories of this seat plan // and from it construct the array, if not set already. + // TODO: Save info if draft or live + export default { name: 'TicketsDetailsView', components: { @@ -150,6 +162,71 @@ notifications, PictureInput, }, + data() { + return { + locations: {}, + event: { 'name': 'TestEvent', 'description': 'This is a description for the TestEvent to test multiline support and proper positioning of the Fields', 'location': 'test', 'date': '2023-07-15', 'currency': 'CHF', 'categories': { '1': { 'price': { '1':25, '2':35 }, 'bg': 'black', 'fg': 'white', 'name': 'Category 1' }, '2': { 'price': { '1':15, '2':20 }, 'bg': 'green', 'fg': 'white', 'name': 'Category 2' } }, 'ageGroups': { '1':{ 'id': 1, 'name':'Child', 'age':'0 - 15.99' }, '2':{ 'id': 2, 'name': 'Adult' } }, 'maxTickets': 2 }, + specialSettings: { + // 'guest-purchase': { + // 'display': 'Enable guest purchase', + // 'id': 'guest-purchase', + // 'tooltip':'Allowing guest purchase means that a user does not have to create an account in order for them to be able to make a purchase. Default: On', + // 'value': true, + // 'type': 'toggle' + // }, + // 'overbooking': { + // 'display': 'Enable overbooking of event', + // 'id': 'overbooking', + // 'tooltip':'Allow more ticket reservations than you have tickets available. Currently only available for events without seatplans. Default: Off', + // 'value': false, + // 'type': 'toggle' + // }, + 'maxTickets': { + 'display': 'Maximum ticket count per account', + 'id': 'maxTickets', + 'tooltip':'With this setting you can control how many tickets a person can buy. Defaults to 0, which means do not limit.', + 'value': 0, + 'type': 'number', + 'restrictions': { + 'min': 0, + 'max': 100, + } + }, + // 'requiredParameter': { + // 'display': 'Special requirements', + // 'id': 'requiredParameter', + // 'tooltip':'Set this parameter to require the user to provide a certain email domain, a special number or special string of characters. Defaults to None', + // 'value': 'none', + // 'type': 'select', + // 'restrictions': { + // 'none': { + // 'displayName':'None', + // 'value': 'none' + // }, + // 'email': { + // 'displayName':'Email domain', + // 'value': 'email' + // }, + // 'numbers': { + // 'displayName':'Number sequence', + // 'value': 'numbers' + // }, + // 'string': { + // 'displayName':'Text sequence', + // 'value': 'string' + // }, + // } + // }, + // 'requiredParameterValue': { + // 'display': 'Special requirements values ', + // 'id': 'requiredParameterValue', + // 'tooltip':'Put a filter here, corresponding to your selection above. Please read the documentation on our website. See link below!', + // 'value': '', + // 'type': 'text', + // }, + } + } + }, created () { if ( !sessionStorage.getItem( 'selectedTicket' ) ) { this.$router.push( '/admin/events' ); @@ -162,78 +239,8 @@ console.error( error ); } ); } ); - }, - data() { - return { - locations: {}, - event: { 'name': 'TestEvent', 'description': 'This is a description for the TestEvent to test multiline support and proper positioning of the Fields', 'location': 'test', 'date': '2023-07-15', 'currency': 'CHF', 'categories': { '1': { 'price': { '1':25, '2':35 }, 'bg': 'black', 'fg': 'white', 'name': 'Category 1' }, '2': { 'price': { '1':15, '2':20 }, 'bg': 'green', 'fg': 'white', 'name': 'Category 2' } }, 'ageGroups': { '1':{ 'id': 1, 'name':'Child', 'age':'0 - 15.99' }, '2':{ 'id': 2, 'name': 'Adult' } }, 'maxTickets': 2 }, - specialSettings: { - 'currency': { - 'display': 'Currency', - 'id': 'currency', - 'tooltip':'Specify a currency in which the prices are displayed to the customer. Defaults to USD. Please use valid currency codes.', - 'value': 'USD', - 'type': 'text', - }, - 'guest-purchase': { - 'display': 'Enable guest purchase', - 'id': 'guest-purchase', - 'tooltip':'Allowing guest purchase means that a user does not have to create an account in order for them to be able to make a purchase. Default: On', - 'value': true, - 'type': 'toggle' - }, - 'overbooking': { - 'display': 'Enable overbooking of event', - 'id': 'overbooking', - 'tooltip':'Allow more ticket reservations than you have tickets available. Currently only available for events without seatplans. Default: Off', - 'value': false, - 'type': 'toggle' - }, - 'maxTickets': { - 'display': 'Maximum ticket count per account', - 'id': 'maxTickets', - 'tooltip':'With this setting you can control how many tickets a person can buy. Defaults to 0, which means do not limit.', - 'value': 0, - 'type': 'number', - 'restrictions': { - 'min': 0, - 'max': 100, - } - }, - 'requiredParameter': { - 'display': 'Special requirements', - 'id': 'requiredParameter', - 'tooltip':'Set this parameter to require the user to provide a certain email domain, a special number or special string of characters. Defaults to None', - 'value': 'none', - 'type': 'select', - 'restrictions': { - 'none': { - 'displayName':'None', - 'value': 'none' - }, - 'email': { - 'displayName':'Email domain', - 'value': 'email' - }, - 'numbers': { - 'displayName':'Number sequence', - 'value': 'numbers' - }, - 'string': { - 'displayName':'Text sequence', - 'value': 'string' - }, - } - }, - 'requiredParameterValue': { - 'display': 'Special requirements values ', - 'id': 'requiredParameterValue', - 'tooltip':'Put a filter here, corresponding to your selection above. Please read the documentation on our website. See link below!', - 'value': '', - 'type': 'text', - }, - } - } + + // TODO: Load data from server }, methods: { saveImages() { @@ -255,6 +262,9 @@ } else { this.$refs.notification.createNotification( 'No image selected!', 5, 'error', 'normal' ); } + }, + loadLocationData() { + }, save () { diff --git a/src/webapp/main/src/views/purchasing/PurchaseView.vue b/src/webapp/main/src/views/purchasing/PurchaseView.vue index 199108f..c52159a 100644 --- a/src/webapp/main/src/views/purchasing/PurchaseView.vue +++ b/src/webapp/main/src/views/purchasing/PurchaseView.vue @@ -39,7 +39,7 @@
- +
diff --git a/src/webapp/main/src/views/user/SignupView.vue b/src/webapp/main/src/views/user/SignupView.vue index 4d85ad2..e0c214b 100644 --- a/src/webapp/main/src/views/user/SignupView.vue +++ b/src/webapp/main/src/views/user/SignupView.vue @@ -52,7 +52,6 @@ -