PHP 7.4.33
Preview: server.js Size: 6.58 KB
/var/www/dmgmultieventapihandlerdev.bitkit.dk/httpdocs/server.js
// server.js
const express = require("express");
const axios = require("axios");
const cors = require("cors");
require("dotenv").config();

const app = express();
const PORT = process.env.PORT || 3015;
const API_URL = process.env.API_URL_STG;
const API_KEY = process.env.API_KEY_STG;

app.use(cors());
app.use(express.json());

// API endpoint to handle requests from React app
app.get("/", async (req, res) => {
  res.send("Hi, Nothing to see here!");
});
app.get("/api/published-sessions", async (req, res) => {
  // console.log('hit');

  const { slug } = req.query;
  // console.log(slug);
  try {
    const response = await axios.get(
      `${API_URL}/api/session/published-sessions?paging=All`,
      {
        headers: {
          accept: "*/*",
          role: "event_admin",
          "slug-name": slug,
          Authorization: `Bearer ${API_KEY}`,
          "Content-type": "application/json",
        },
      }
    );
    // console.log(response.data);
    const data = await response.data;
    for (let session of data.published_sessions["data"]) {
      let speakers = session.published_data.users;

      let speaker_array = [];

      for (let speaker of speakers) {
        // console.log(speaker);
        speaker.fax = null;
        speaker.city = null;
        speaker.email = null;
        speaker.phone = null;
        speaker.state = null;
        speaker.mobile = null;
        speaker.poBox = null;
        speaker.po_box = null;
        speaker.street = null;
        speaker.postCode = null;
        speaker.linkedinLink = null;
        speaker.linkedin_link = null;
        speaker.company_address = null;
        speaker.companyAddress = null;
        speaker.companyCountry = null;
        speaker.company_country = null;
        speaker.pS_User_CreatedDate = null;
        speaker.company_logo = null;
        speaker.pS_User_ModifiedDate = null;
        speaker.post_code = null;
        speaker.avatar = { value: speaker.avatar?.value };
        speaker_array.push(speaker);
      }

      session.published_data.users = speaker_array;
    }

    res.json(data);
  } catch (error) {
    console.error("Error fetching data:", error);
    res.status(500).json({ error: "Error fetching data" });
  }
});

app.get("/api/category-list", async (req, res) => {
  const { slug } = req.query;
  const promises = slug.split(",").map(async (s) => {
    try {
      const response = await axios.get(
        `${API_URL}/api/session/category-settings/list?paging=All`,
        {
          headers: {
            accept: "*/*",
            role: "event_admin",
            "slug-name": s,
            Authorization: `Bearer ${API_KEY}`,
            "Content-type": "application/json",
          },
        }
      );
      // console.log(response.data);
      response.data.data.categories.forEach(item => {
        item.event_slug = s;
      });
      return response.data;
    } catch (error) {
      console.error("Error fetching data:", error);
      return null;
      // res.status(500).json({ error: 'Error fetching data' });
    }
  });

  const result = {
    status: true,
    data: {
      enabled: true,
      settings_id: "session_form_settings",
      label: "",
      categories: [],
    },
  };
  // Wait for all promises to resolve using Promise.all
  const results = await Promise.all(promises);

  // Filter out any null responses (in case some API calls failed)
  const validResults = results.filter((result) => result !== null);

  //  console.log(validResults);

  for (vr of validResults) {
    result.data.categories = result.data.categories.concat(vr.data.categories);
  }

  //  console.log(result);
  // Combine and process the results as needed
  // For example, sending the combined result as a JSON response
  res.json(result);
});

app.get("/api/date-list", async (req, res) => {
  const { slug } = req.query;
  const promises = slug.split(",").map(async (s) => {
    try {
      const response = await axios.get(
        `${API_URL}/api/session/chair-person/list?paging=All`,
        {
          headers: {
            accept: "*/*",
            role: "event_admin",
            "slug-name": s,
            Authorization: `Bearer ${API_KEY}`,
            "Content-type": "application/json",
          },
        }
      );
      const data = await response.data;
      let new_list = {};

      for (let date in data.chair_persons) {
        // console.log(date);
        // console.log(data.chair_persons[date]);
        new_items = [];
        for (let speaker of data.chair_persons[date]) {
          // console.log(item.user);
          speaker.user.fax = null;
          speaker.user.city = null;
          speaker.user.email = null;
          speaker.user.phone = null;
          speaker.user.state = null;
          speaker.user.mobile = null;
          speaker.user.poBox = null;
          speaker.user.po_box = null;
          speaker.user.street = null;
          speaker.user.postCode = null;
          speaker.user.linkedinLink = null;
          speaker.user.linkedin_link = null;
          speaker.user.company_address = null;
          speaker.user.companyAddress = null;
          speaker.user.companyCountry = null;
          speaker.user.company_country = null;
          speaker.user.pS_User_CreatedDate = null;
          speaker.user.company_logo = null;
          speaker.user.pS_User_ModifiedDate = null;
          speaker.user.post_code = null;
          new_items.push(speaker);
        }

        new_list[date] = new_items;
      }
      // console.log(new_list);
      return new_list;
      // const new_response = { status: data.status, chair_persons: new_list };
      // return new_response;
      // res.json(new_response);
    } catch (error) {
      console.error("Error fetching data:", error);
      return null;
      // res.status(500).json({ error: "Error fetching data" });
    }
  });

  const result = {
    status: true,
    chair_persons: {},
  };

  const results = await Promise.all(promises);

  // Filter out any null responses (in case some API calls failed)
  const validResults = results.filter((result) => result !== null);

  // console.log(validResults);

  for (vr of validResults) {
    for(date in vr) {
    result.chair_persons[date] = vr[date];
    }
  }

  // console.log(result);
  // Combine and process the results as needed
  // For example, sending the combined result as a JSON response
  res.json(result);
});

app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

Directory Contents

Dirs: 1 × Files: 4
Name Size Perms Modified Actions
- drwxr-xr-x 2024-09-19 04:54:51
Edit Download
222 B lrw-rw-r-- 2024-10-09 05:07:56
Edit Download
29.08 KB lrw-r--r-- 2024-10-09 05:11:19
Edit Download
352 B lrw-rw-r-- 2024-09-19 06:10:26
Edit Download
6.58 KB lrw-rw-r-- 2024-10-09 05:35:37
Edit Download
If ZipArchive is unavailable, a .tar will be created (no compression).