mirror of
https://github.com/janishutz/libreevent.git
synced 2025-11-25 13:24:24 +00:00
153 lines
6.9 KiB
JavaScript
153 lines
6.9 KiB
JavaScript
/*
|
|
* libreevent - postHandler.js
|
|
*
|
|
* Created by Janis Hutz 07/20/2023, Licensed under the GPL V3 License
|
|
* https://janishutz.com, development@janishutz.com
|
|
*
|
|
*
|
|
*/
|
|
|
|
const db = require( '../../backend/db/db.js' );
|
|
const fs = require( 'fs' );
|
|
const path = require( 'path' );
|
|
const pm = require( '../../backend/plugins/manager.js' );
|
|
|
|
const letters = [ ',', '{' ];
|
|
|
|
class POSTHandler {
|
|
constructor ( settings ) {
|
|
this.pluginManager = new pm( settings );
|
|
this.settings = settings;
|
|
}
|
|
|
|
handleCall ( call, data, lang ) {
|
|
return new Promise( ( resolve, reject ) => {
|
|
console.log( lang );
|
|
if ( call === 'saveSeatplanDraft' ) {
|
|
db.getJSONDataSimple( 'seatplan', data.location ).then( res => {
|
|
let dat = res;
|
|
dat[ 'draft' ] = data.data;
|
|
db.writeJSONDataSimple( 'seatplan', data.location, dat ).then( resp => {
|
|
resolve( resp );
|
|
} ).catch( error => {
|
|
reject( { 'code': 500, 'error': error } );
|
|
} );
|
|
} );
|
|
} else if ( call === 'saveSeatplan' ) {
|
|
db.writeJSONDataSimple( 'seatplan', data.location, { 'draft': {}, 'save': data.data } ).then( resp => {
|
|
resolve( resp );
|
|
} ).catch( error => {
|
|
reject( { 'code': 500, 'error': error } );
|
|
} );
|
|
} else if ( call === 'saveLocations' ) {
|
|
db.getJSONData( 'seatplan' ).then( res => {
|
|
let dat = res;
|
|
for ( let loc in data.updated ) {
|
|
if ( res[ loc ] ) {
|
|
dat[ data.updated[ loc ] ] = res[ loc ];
|
|
delete dat[ loc ];
|
|
}
|
|
}
|
|
db.writeJSONData( 'seatplan', dat ).catch( error => {
|
|
reject( { 'code': 500, 'error': error } );
|
|
} );
|
|
} ).catch( error => {
|
|
reject( { 'code': 500, 'error': error } );
|
|
} );
|
|
|
|
db.writeJSONData( 'locations', data.data ).then( resp => {
|
|
resolve( resp );
|
|
} ).catch( error => {
|
|
reject( { 'code': 500, 'error': error } );
|
|
} );
|
|
} else if ( call === 'deleteLocation' ) {
|
|
db.deleteJSONDataSimple( 'locations', data.location ).then( () => {
|
|
resolve( 'ok' );
|
|
} ).catch( error => {
|
|
reject( { 'code': 500, 'error': error } );
|
|
} );
|
|
} else if ( call === 'createEvent' ) {
|
|
db.getJSONDataSimple( 'eventDrafts', data.event ).then( dat => {
|
|
if ( Object.keys( dat ).length < 1 ) {
|
|
db.writeJSONDataSimple( 'eventDrafts', data.event, { 'name': 'Unnamed event', 'description': '', 'location': '', 'date': '', 'categories': {}, 'ageGroups': { '1': { 'id': 1, 'name': 'Child', 'age': '0 - 15.99' }, '2': { 'id': 2, 'name': 'Adult' } }, 'maxTickets': 2, 'eventID': data.event } ).then( () => {
|
|
resolve( 'ok' );
|
|
} ).catch( error => {
|
|
reject( { 'code': 500, 'error': error } );
|
|
} );
|
|
} else {
|
|
reject( { 'code': 409, 'error': 'ExistsAlready' } );
|
|
}
|
|
} );
|
|
} else if ( call === 'saveEvent' ) {
|
|
db.writeJSONDataSimple( 'eventDrafts', data.event, data.eventData ).then( () => {
|
|
resolve( 'ok' );
|
|
} ).catch( error => {
|
|
reject( { 'code': 500, 'error': error } );
|
|
} );
|
|
} else if ( call === 'deployEvent' ) {
|
|
db.writeJSONDataSimple( 'events', data.event, data.eventData ).then( () => {
|
|
resolve( 'ok' );
|
|
} ).catch( error => {
|
|
reject( { 'code': 500, 'error': error } );
|
|
} );
|
|
} else if ( call === 'deleteEvent' ) {
|
|
db.deleteJSONDataSimple( 'eventDrafts', data.event ).then( () => {
|
|
db.deleteJSONDataSimple( 'events', data.event ).then( () => {
|
|
resolve( 'ok' );
|
|
} ).catch( error => {
|
|
reject( { 'code': 500, 'error': error } );
|
|
} );
|
|
} ).catch( error => {
|
|
reject( { 'code': 500, 'error': error } );
|
|
} );
|
|
} else if ( call === 'undeployEvent' ) {
|
|
db.deleteJSONDataSimple( 'events', data.event ).then( () => {
|
|
resolve( 'ok' );
|
|
} ).catch( error => {
|
|
reject( { 'code': 500, 'error': error } );
|
|
} );
|
|
} else if ( call === 'saveTickets' ) {
|
|
db.writeJSONDataSimple( 'tickets', data.location, data.data ).then( resp => {
|
|
resolve( resp );
|
|
} ).catch( error => {
|
|
reject( { 'code': 500, 'error': error } );
|
|
} );
|
|
} else if ( call === 'createAdminAccount' ) {
|
|
// TODO: Finish
|
|
} else if ( call === 'updateAdminAccount' ) {
|
|
// TODO: Finish
|
|
} else if ( call === 'deleteAdminAccount' ) {
|
|
// TODO: Finish
|
|
} else if ( call === 'updateSettings' ) {
|
|
this.settings[ 'twoFA' ] = data.twoFA;
|
|
this.settings[ 'currency' ] = data.currency;
|
|
this.settings[ 'payments' ] = data.payments;
|
|
this.settings[ 'ticketTimeout' ] = data.ticketTimeout;
|
|
const settingsString = JSON.stringify( this.settings );
|
|
let settingsToSave = '';
|
|
for ( let letter in settingsString ) {
|
|
if ( letters.includes( settingsString[ letter ] ) ) {
|
|
settingsToSave += settingsString[ letter ] + '\n\t';
|
|
} else if ( settingsString[ letter ] === '}' ) {
|
|
settingsToSave += '\n' + settingsString[ letter ];
|
|
} else {
|
|
settingsToSave += settingsString[ letter ];
|
|
}
|
|
}
|
|
fs.writeFileSync( path.join( __dirname + '/../../config/settings.config.json' ), settingsToSave );
|
|
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' } );
|
|
}
|
|
} );
|
|
}
|
|
}
|
|
|
|
module.exports = POSTHandler; |