Bansari Akhani commited on
Commit
222dbfc
·
1 Parent(s): a0126d8

#7629 -propertywaae api set up, #7635 - fetch glaccounts, #7636 - fetch vendors

Browse files
.env.example CHANGED
@@ -5,3 +5,11 @@ DB_NAME=
5
  DB_HOST=
6
  DB_PORT=
7
  DB_DIALECT=
 
 
 
 
 
 
 
 
 
5
  DB_HOST=
6
  DB_PORT=
7
  DB_DIALECT=
8
+
9
+
10
+ AI_SERVICE_URL=
11
+ PW_API_URL=
12
+
13
+ PW_CLIENTID=
14
+ PW_CLIENTSECRET=
15
+ PW_ORG_ID=
package.json CHANGED
@@ -4,6 +4,7 @@
4
  "packageManager": "yarn@4.2.2",
5
  "dependencies": {
6
  "@types/sequelize": "^4.28.20",
 
7
  "babel-register": "^6.26.0",
8
  "dotenv": "^16.4.5",
9
  "express": "^4.19.2",
 
4
  "packageManager": "yarn@4.2.2",
5
  "dependencies": {
6
  "@types/sequelize": "^4.28.20",
7
+ "axios": "^1.7.2",
8
  "babel-register": "^6.26.0",
9
  "dotenv": "^16.4.5",
10
  "express": "^4.19.2",
src/app.ts CHANGED
@@ -1,5 +1,7 @@
1
  import express from 'express';
2
 
 
 
3
  const app = express();
4
  const port = 3000;
5
 
@@ -7,6 +9,9 @@ app.get('/', (req, res) => {
7
  res.send('Service is healthy!');
8
  });
9
 
 
 
 
10
  try {
11
  app.listen(port, () => {
12
  console.log(`Server running on http://localhost:${port}`)
 
1
  import express from 'express';
2
 
3
+ import router from './routes';
4
+
5
  const app = express();
6
  const port = 3000;
7
 
 
9
  res.send('Service is healthy!');
10
  });
11
 
12
+
13
+ app.use("/api/", router);
14
+
15
  try {
16
  app.listen(port, () => {
17
  console.log(`Server running on http://localhost:${port}`)
src/controllers/propertyware/glAccounts.controller.ts ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { Request, Response } from 'express';
2
+
3
+ import { fetchGLAccounts } from '../../shared/services/propertyware.service';
4
+
5
+ export const fetchGLAccountsData = async (req: Request, res: Response) => {
6
+ try {
7
+
8
+ const glAccounts = await fetchGLAccounts();
9
+
10
+ const glAccountsResponseData = glAccounts.map((account: { id: any; name: any; }) => ({
11
+ id: account.id,
12
+ name: account.name,
13
+ }));
14
+
15
+ res.json(glAccountsResponseData);
16
+ } catch (error) {
17
+ console.error('Error fetching GL accounts:', error);
18
+ res.status(500).json({ error: 'Error fetching GL accounts' });
19
+ }
20
+ };
src/controllers/propertyware/vendors.controller.ts ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { Request, Response } from 'express';
2
+
3
+ import { fetchVendors } from '../../shared/services/propertyware.service';
4
+
5
+ export const fetchVendorsData = async (req: Request, res: Response) => {
6
+ try {
7
+
8
+ const vendors = await fetchVendors();
9
+
10
+ const VendorsResponseData = vendors.map((vendor: { id: any; name: any; }) => ({
11
+ id: vendor.id,
12
+ name: vendor.name,
13
+ }));
14
+
15
+ res.json(VendorsResponseData);
16
+ } catch (error) {
17
+ console.error('Error fetching Vendors:', error);
18
+ res.status(500).json({ error: 'Error fetching Vendors' });
19
+ }
20
+ };
src/routes/index.ts ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ import express from "express";
2
+ import { fetchVendorsData } from "../controllers/propertyware/vendors.controller";
3
+ import { fetchGLAccountsData } from "../controllers/propertyware/glAccounts.controller";
4
+
5
+ const pwRouter = express.Router();
6
+
7
+ pwRouter.get("/pw/glAccounts", fetchGLAccountsData);
8
+ pwRouter.get("/pw/vendors", fetchVendorsData);
9
+
10
+ export default pwRouter;
src/shared/services/api.service.ts ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import axios from 'axios';
2
+ import dotenv from "dotenv";
3
+
4
+ dotenv.config();
5
+
6
+ export const apiClientPW = axios.create({
7
+ baseURL: process.env.PW_API_URL,
8
+ headers: {
9
+ 'x-propertyware-client-id': process.env.PW_CLIENTID,
10
+ 'x-propertyware-client-secret': process.env.PW_CLIENTSECRET,
11
+ 'x-propertyware-system-id': process.env.PW_ORG_ID,
12
+ },
13
+ });
14
+
15
+ export const apiClientAiService = axios.create({
16
+ baseURL: process.env.AI_API_URL
17
+ });
18
+
19
+
20
+
21
+
src/shared/services/propertyware.service.ts ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ import { apiClientPW } from "./api.service";
2
+
3
+ export const fetchGLAccounts = async (params = []) => {
4
+ const response = await apiClientPW.get(`/accounting/glaccounts`, { params });
5
+ return response.data;
6
+ };
7
+ export const fetchVendors = async (params = []) => {
8
+ const response = await apiClientPW.get(`/vendors`, { params });
9
+ return response.data;
10
+ };
yarn.lock CHANGED
@@ -667,6 +667,13 @@ __metadata:
667
  languageName: node
668
  linkType: hard
669
 
 
 
 
 
 
 
 
670
  "at-least-node@npm:^1.0.0":
671
  version: 1.0.0
672
  resolution: "at-least-node@npm:1.0.0"
@@ -674,6 +681,17 @@ __metadata:
674
  languageName: node
675
  linkType: hard
676
 
 
 
 
 
 
 
 
 
 
 
 
677
  "babel-code-frame@npm:^6.26.0":
678
  version: 6.26.0
679
  resolution: "babel-code-frame@npm:6.26.0"
@@ -1035,6 +1053,15 @@ __metadata:
1035
  languageName: node
1036
  linkType: hard
1037
 
 
 
 
 
 
 
 
 
 
1038
  "commander@npm:^10.0.0":
1039
  version: 10.0.1
1040
  resolution: "commander@npm:10.0.1"
@@ -1170,6 +1197,13 @@ __metadata:
1170
  languageName: node
1171
  linkType: hard
1172
 
 
 
 
 
 
 
 
1173
  "denque@npm:^2.1.0":
1174
  version: 2.1.0
1175
  resolution: "denque@npm:2.1.0"
@@ -1677,6 +1711,7 @@ __metadata:
1677
  "@types/sequelize": "npm:^4.28.20"
1678
  "@typescript-eslint/eslint-plugin": "npm:^7.16.0"
1679
  "@typescript-eslint/parser": "npm:^7.16.0"
 
1680
  babel-register: "npm:^6.26.0"
1681
  dotenv: "npm:^16.4.5"
1682
  eslint: "npm:^9.6.0"
@@ -1754,6 +1789,16 @@ __metadata:
1754
  languageName: node
1755
  linkType: hard
1756
 
 
 
 
 
 
 
 
 
 
 
1757
  "foreground-child@npm:^3.1.0":
1758
  version: 3.2.1
1759
  resolution: "foreground-child@npm:3.2.1"
@@ -1764,6 +1809,17 @@ __metadata:
1764
  languageName: node
1765
  linkType: hard
1766
 
 
 
 
 
 
 
 
 
 
 
 
1767
  "forwarded@npm:0.2.0":
1768
  version: 0.2.0
1769
  resolution: "forwarded@npm:0.2.0"
@@ -2599,7 +2655,7 @@ __metadata:
2599
  languageName: node
2600
  linkType: hard
2601
 
2602
- "mime-types@npm:~2.1.24, mime-types@npm:~2.1.34":
2603
  version: 2.1.35
2604
  resolution: "mime-types@npm:2.1.35"
2605
  dependencies:
@@ -3138,6 +3194,13 @@ __metadata:
3138
  languageName: node
3139
  linkType: hard
3140
 
 
 
 
 
 
 
 
3141
  "pstree.remy@npm:^1.1.8":
3142
  version: 1.1.8
3143
  resolution: "pstree.remy@npm:1.1.8"
 
667
  languageName: node
668
  linkType: hard
669
 
670
+ "asynckit@npm:^0.4.0":
671
+ version: 0.4.0
672
+ resolution: "asynckit@npm:0.4.0"
673
+ checksum: 10c0/d73e2ddf20c4eb9337e1b3df1a0f6159481050a5de457c55b14ea2e5cb6d90bb69e004c9af54737a5ee0917fcf2c9e25de67777bbe58261847846066ba75bc9d
674
+ languageName: node
675
+ linkType: hard
676
+
677
  "at-least-node@npm:^1.0.0":
678
  version: 1.0.0
679
  resolution: "at-least-node@npm:1.0.0"
 
681
  languageName: node
682
  linkType: hard
683
 
684
+ "axios@npm:^1.7.2":
685
+ version: 1.7.2
686
+ resolution: "axios@npm:1.7.2"
687
+ dependencies:
688
+ follow-redirects: "npm:^1.15.6"
689
+ form-data: "npm:^4.0.0"
690
+ proxy-from-env: "npm:^1.1.0"
691
+ checksum: 10c0/cbd47ce380fe045313364e740bb03b936420b8b5558c7ea36a4563db1258c658f05e40feb5ddd41f6633fdd96d37ac2a76f884dad599c5b0224b4c451b3fa7ae
692
+ languageName: node
693
+ linkType: hard
694
+
695
  "babel-code-frame@npm:^6.26.0":
696
  version: 6.26.0
697
  resolution: "babel-code-frame@npm:6.26.0"
 
1053
  languageName: node
1054
  linkType: hard
1055
 
1056
+ "combined-stream@npm:^1.0.8":
1057
+ version: 1.0.8
1058
+ resolution: "combined-stream@npm:1.0.8"
1059
+ dependencies:
1060
+ delayed-stream: "npm:~1.0.0"
1061
+ checksum: 10c0/0dbb829577e1b1e839fa82b40c07ffaf7de8a09b935cadd355a73652ae70a88b4320db322f6634a4ad93424292fa80973ac6480986247f1734a1137debf271d5
1062
+ languageName: node
1063
+ linkType: hard
1064
+
1065
  "commander@npm:^10.0.0":
1066
  version: 10.0.1
1067
  resolution: "commander@npm:10.0.1"
 
1197
  languageName: node
1198
  linkType: hard
1199
 
1200
+ "delayed-stream@npm:~1.0.0":
1201
+ version: 1.0.0
1202
+ resolution: "delayed-stream@npm:1.0.0"
1203
+ checksum: 10c0/d758899da03392e6712f042bec80aa293bbe9e9ff1b2634baae6a360113e708b91326594c8a486d475c69d6259afb7efacdc3537bfcda1c6c648e390ce601b19
1204
+ languageName: node
1205
+ linkType: hard
1206
+
1207
  "denque@npm:^2.1.0":
1208
  version: 2.1.0
1209
  resolution: "denque@npm:2.1.0"
 
1711
  "@types/sequelize": "npm:^4.28.20"
1712
  "@typescript-eslint/eslint-plugin": "npm:^7.16.0"
1713
  "@typescript-eslint/parser": "npm:^7.16.0"
1714
+ axios: "npm:^1.7.2"
1715
  babel-register: "npm:^6.26.0"
1716
  dotenv: "npm:^16.4.5"
1717
  eslint: "npm:^9.6.0"
 
1789
  languageName: node
1790
  linkType: hard
1791
 
1792
+ "follow-redirects@npm:^1.15.6":
1793
+ version: 1.15.6
1794
+ resolution: "follow-redirects@npm:1.15.6"
1795
+ peerDependenciesMeta:
1796
+ debug:
1797
+ optional: true
1798
+ checksum: 10c0/9ff767f0d7be6aa6870c82ac79cf0368cd73e01bbc00e9eb1c2a16fbb198ec105e3c9b6628bb98e9f3ac66fe29a957b9645bcb9a490bb7aa0d35f908b6b85071
1799
+ languageName: node
1800
+ linkType: hard
1801
+
1802
  "foreground-child@npm:^3.1.0":
1803
  version: 3.2.1
1804
  resolution: "foreground-child@npm:3.2.1"
 
1809
  languageName: node
1810
  linkType: hard
1811
 
1812
+ "form-data@npm:^4.0.0":
1813
+ version: 4.0.0
1814
+ resolution: "form-data@npm:4.0.0"
1815
+ dependencies:
1816
+ asynckit: "npm:^0.4.0"
1817
+ combined-stream: "npm:^1.0.8"
1818
+ mime-types: "npm:^2.1.12"
1819
+ checksum: 10c0/cb6f3ac49180be03ff07ba3ff125f9eba2ff0b277fb33c7fc47569fc5e616882c5b1c69b9904c4c4187e97dd0419dd03b134174756f296dec62041e6527e2c6e
1820
+ languageName: node
1821
+ linkType: hard
1822
+
1823
  "forwarded@npm:0.2.0":
1824
  version: 0.2.0
1825
  resolution: "forwarded@npm:0.2.0"
 
2655
  languageName: node
2656
  linkType: hard
2657
 
2658
+ "mime-types@npm:^2.1.12, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34":
2659
  version: 2.1.35
2660
  resolution: "mime-types@npm:2.1.35"
2661
  dependencies:
 
3194
  languageName: node
3195
  linkType: hard
3196
 
3197
+ "proxy-from-env@npm:^1.1.0":
3198
+ version: 1.1.0
3199
+ resolution: "proxy-from-env@npm:1.1.0"
3200
+ checksum: 10c0/fe7dd8b1bdbbbea18d1459107729c3e4a2243ca870d26d34c2c1bcd3e4425b7bcc5112362df2d93cc7fb9746f6142b5e272fd1cc5c86ddf8580175186f6ad42b
3201
+ languageName: node
3202
+ linkType: hard
3203
+
3204
  "pstree.remy@npm:^1.1.8":
3205
  version: 1.1.8
3206
  resolution: "pstree.remy@npm:1.1.8"