// imports
const express = require('express');
const http = require('http');
const schedule = require('node-schedule');
const axios = require('axios');
const { SerialPort } = require('serialport');
const { ReadlineParser } = require('@serialport/parser-readline');
const fs = require('fs');
const cors = require('cors');


// Start Express and define port
const app = express();
const serverPort = 3000;

// Set Cors Policy
app.use(cors());
app.use(express.json());
app.use(express.static('public'));

// Setting of Port of Arduino
const arduinoPort = new SerialPort({
  path: 'COM6',
  baudRate: 9600
});

// Server and Client information
const clientURL = 'http://localhost:80';

// fetching data from Serialport: Getting Card Information which is in the middle
function waitForData() {
  return new Promise((resolve) => {
    const parser = arduinoPort.pipe(new ReadlineParser({ delimiter: '\r\n' }));
    parser.once('data', (data) => {
      resolve(data);
    });
  });
}

// fetching data from Serialport: Getting Hand Information of the Player


// Get Request for Playerhand
app.get('/cardinmyhand/:playerid', async (req, res) => {
  try {
    const playerid = req.params.playerid;
    const data = await waitForData(); // Warte auf Daten von der seriellen Schnittstelle
    res.send(data); // Sende die Daten an den Client
  } catch (error) {
    res.status(500).send('Fehler beim Lesen der Daten');
  }
});

// Get Request for Card in the middle
app.get('/cardinthemiddle', async (req, res) => {
  try {
    const data = await waitForData(); // Warte auf Daten von der seriellen Schnittstelle
    res.send(data); // Sende die Daten an den Client
  } catch (error) {
    res.status(500).send('Fehler beim Lesen der Daten');
  }
});




// // Shedule Format (* * * * *) (Sec(0-59), Min(0-59), Hours(0-23), Day (1-31), Month (0-11))
// const job = schedule.scheduleJob('*/15 * * * *', () => {
    

// axios.get(clientURL)
//   .then((response) => {
//   })
//   .catch((error) => {
//   });
//   });

// Port Definition
app.listen(serverPort, () => {
  console.log(`Server läuft auf http://localhost:${serverPort}`);
});
