Add Tenent Properties service route

This commit is contained in:
Peter Morton 2023-10-11 19:17:57 -05:00
parent ae9f0fae73
commit 037b001de6
3 changed files with 56 additions and 217 deletions

View File

@ -3,6 +3,7 @@ import config from "./config.js";
import auth from "./auth.js";
import interactionsFlows from "./interactions-flow.js";
import udg from "./unified-data-gateway.js";
import tps from "./tps.js";
const router = Router();
import middlewares from "../middlewares/index.js";
@ -13,5 +14,6 @@ router.use("/config", config);
router.use("/auth", auth);
router.use("/interactions-flow", interactionsFlows);
router.use("/unified-data-gateway", udg);
router.use("/tps", tps);
export default router;

54
src/api/routes/tps.js Normal file
View File

@ -0,0 +1,54 @@
import { Router } from "express";
import axios from "axios";
import { logger, store, isEmpty } from "../../utils/index.js";
import createHttpError from "http-errors";
const router = Router();
router.get("/", async (req, res, next) => {
const auth = await store.hGetAll(req.query.authKey);
if (isEmpty(auth)) {
next(
new createHttpError.Forbidden(
`No authenication information found in store`
)
);
return;
}
const propertyName = req.query.propertyName;
const { host, tenant, token } = auth;
logger.debug(`tps GET ${propertyName} from ${host}`);
axios
.get(
`${host}/tenant-properties-service/${tenant}/properties?q=${propertyName}`,
{
headers: {
Authorization: `OIDC_id_token ${token}`,
"Content-Type": "application/json",
},
}
)
.then((result) => {
if (result.data.errors && result.data.errors.length > 0) {
result.data.errors.forEach(function (error) {
logger.error("ERROR: Errors in results - " + error.message);
});
next(new Error("Error(s) getting propertyName " + propertyName));
return;
}
const totalItems = result.data["hydra:totalItems"];
logger.debug("tps result has hydra:totalItems [" + totalItems + "]");
if (totalItems > 0) {
const value = result.data["hydra:member"][0]["vcfg:value"];
res.json({ data: { value: value } });
} else {
next(
new createHttpError.NotFound(`property ${propertyName} not found`)
);
}
});
});
export default router;

View File

@ -1,217 +0,0 @@
import { logger } from "../utils/index.js";
export default function generate(filter) {
filter = filter ? filter : "Channel, Sub-Channel, Queue, Outcome";
logger.info(`Generating sample data for ${filter}`);
var data = {
nodes: [],
links: [],
};
const channels = ["Email", "Messaging", "Legacy Live Chat"];
const subChannels = [
"Live Chat",
"Facebook Messenger",
"Twitter DM",
"WhatsApp",
"Other",
];
const queues = ["General Enquiries", "Complaints", "Default"];
const outcomes = [
"No need for response",
"Case Updated",
"Escalated to Manager",
];
if (filter.includes("Channel")) {
channels.forEach((value) => {
data.nodes.push({
name: value,
category: "Channel",
});
});
}
if (filter.includes("Sub-Channel")) {
subChannels.forEach((value) => {
data.nodes.push({
name: value,
category: "Sub-Channel",
});
});
}
if (filter.includes("Queue")) {
queues.forEach((value) => {
data.nodes.push({
name: value,
category: "Queue",
});
});
}
if (filter.includes("Outcome")) {
outcomes.forEach((value) => {
data.nodes.push({
name: value,
category: "Outcome",
});
});
}
data.links.push(
{
source: "Email",
target: "Default",
value: 342,
},
{
source: "Messaging",
target: "Live Chat",
value: 232,
},
{
source: "Messaging",
target: "Facebook Messenger",
value: 623,
},
{
source: "Messaging",
target: "Twitter DM",
value: 434,
},
{
source: "Messaging",
target: "WhatsApp",
value: 1243,
},
{
source: "Messaging",
target: "Other",
value: 150,
},
{
source: "Live Chat",
target: "Default",
value: 132,
},
{
source: "Live Chat",
target: "Complaints",
value: 90,
},
{
source: "Live Chat",
target: "General Enquires",
value: 42,
},
{
source: "WhatsApp",
target: "Default",
value: 343,
},
{
source: "WhatsApp",
target: "Complaints",
value: 300,
},
{
source: "WhatsApp",
target: "General Enquires",
value: 523,
},
{
source: "Facebook Messenger",
target: "Default",
value: 143,
},
{
source: "Facebook Messenger",
target: "Complaints",
value: 200,
},
{
source: "Facebook Messenger",
target: "General Enquires",
value: 323,
},
{
source: "Twitter DM",
target: "Default",
value: 143,
},
{
source: "Twitter DM",
target: "Complaints",
value: 50,
},
{
source: "Twitter DM",
target: "General Enquires",
value: 223,
},
{
source: "General Enquires",
target: "Case Closed",
value: 421,
},
{
source: "General Enquires",
target: "Completed",
value: 612,
},
{
source: "General Enquires",
target: "Escalated to Manager",
value: 23,
},
{
source: "General Enquires",
target: "No need for response",
value: 241,
},
{
source: "Complaints",
target: "Case Closed",
value: 21,
},
{
source: "Complaints",
target: "Completed",
value: 12,
},
{
source: "Complaints",
target: "Escalated to Manager",
value: 3,
},
{
source: "Complaints",
target: "No need for response",
value: 41,
},
{
source: "Default",
target: "Completed",
value: 41,
},
{
source: "Default",
target: "Case Updated",
value: 410,
},
{
source: "General Enquires",
target: "Case Updated",
value: 50,
},
{
source: "Complaints",
target: "Case Updated",
value: 410,
}
);
return data;
}