powr-sdk-api 3.0.8 → 3.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -13,7 +13,7 @@ const functionsManager = require('../services/functions');
13
13
  const commentsRoutes = require('./comments');
14
14
  const filesRoutes = require('./files');
15
15
  const formsRoutes = require('./forms');
16
- const invoiceRoutes = require('./invoice');
16
+ const invoicesRoutes = require('./invoices');
17
17
  const likesRoutes = require('./likes');
18
18
  const functionsRoutes = require('./functions');
19
19
  const ratingsRoutes = require('./ratings');
@@ -32,19 +32,19 @@ const createPowrRoutes = (options = {}) => {
32
32
 
33
33
  // Use the dedicated projectId injection middleware
34
34
  router.use(injectProjectId(options));
35
- router.use('/comments', commentsRoutes);
36
- router.use('/files', filesRoutes);
37
- router.use('/forms', formsRoutes);
38
- router.use('/invoice', invoiceRoutes);
39
- router.use('/likes', likesRoutes);
40
- router.use('/functions', functionsRoutes);
41
- router.use('/ratings', ratingsRoutes);
42
- router.use('/users', usersRoutes);
43
- router.use('/waitlists', waitlistsRoutes);
44
- router.use('/activities', activitiesRoutes);
45
35
  router.use('/auth', authRoutes);
46
- router.use('/slides', slidesRoutes);
47
- router.use('/notifications', notificationsRoutes);
36
+ router.use('/comments', verifyToken, commentsRoutes);
37
+ router.use('/files', verifyToken, filesRoutes);
38
+ router.use('/forms', verifyToken, formsRoutes);
39
+ router.use('/invoices', verifyToken, invoicesRoutes);
40
+ router.use('/likes', verifyToken, likesRoutes);
41
+ router.use('/functions', verifyToken, functionsRoutes);
42
+ router.use('/ratings', verifyToken, ratingsRoutes);
43
+ router.use('/users', verifyToken, usersRoutes);
44
+ router.use('/waitlists', verifyToken, waitlistsRoutes);
45
+ router.use('/activities', verifyToken, activitiesRoutes);
46
+ router.use('/slides', verifyToken, slidesRoutes);
47
+ router.use('/notifications', verifyToken, notificationsRoutes);
48
48
  router.use('/profiles', verifyToken, profilesRoutes);
49
49
  router.use('/chat', verifyToken, chatRoutes);
50
50
  return router;
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+
3
+ const express = require('express');
4
+ const router = express.Router();
5
+ const {
6
+ getDb
7
+ } = require("../services/mongo");
8
+ const {
9
+ ObjectId
10
+ } = require("mongodb");
11
+ router.get('/', async (req, res) => {
12
+ const {
13
+ projectId
14
+ } = req.query;
15
+ try {
16
+ const query = {
17
+ projectId
18
+ };
19
+ if (!projectId) {
20
+ return res.status(400).json({
21
+ success: false,
22
+ message: 'projectId is required.'
23
+ });
24
+ }
25
+ const db = await getDb();
26
+ const invoiceData = await db.collection("invoices").find(query).toArray();
27
+ return res.status(200).json({
28
+ success: true,
29
+ invoices: invoiceData
30
+ });
31
+ } catch (error) {
32
+ console.error("Error retrieving invoices :", error);
33
+ return res.status(500).json({
34
+ success: false,
35
+ message: "Failed to retrieve invoices ."
36
+ });
37
+ }
38
+ });
39
+ router.get('/:invoiceId', async (req, res) => {
40
+ const {
41
+ invoiceId
42
+ } = req.params;
43
+ const {
44
+ projectId
45
+ } = req.query;
46
+ try {
47
+ if (!projectId) {
48
+ return res.status(400).json({
49
+ success: false,
50
+ message: 'projectId is required.'
51
+ });
52
+ }
53
+ const _id = new ObjectId(invoiceId);
54
+ const db = await getDb();
55
+ const invoiceData = await db.collection("invoices").findOne({
56
+ _id,
57
+ projectId
58
+ });
59
+ return res.status(200).json({
60
+ success: true,
61
+ invoice: invoiceData
62
+ });
63
+ } catch (error) {
64
+ console.error("Error retrieving invoice :", error);
65
+ return res.status(500).json({
66
+ success: false,
67
+ message: "Failed to retrieve invoice."
68
+ });
69
+ }
70
+ });
71
+ router.post('/', async (req, res) => {
72
+ const {
73
+ projectId
74
+ } = req.query;
75
+ const {
76
+ invoiceNumber,
77
+ dateOfIssue,
78
+ paymentStatus,
79
+ customerInfo,
80
+ serviceSection,
81
+ paymentSection
82
+ } = req.body;
83
+ if (!projectId) {
84
+ return res.status(400).json({
85
+ success: false,
86
+ message: "projectId is required."
87
+ });
88
+ }
89
+ const invoice = {
90
+ invoiceNumber,
91
+ dateOfIssue,
92
+ paymentStatus,
93
+ customerInfo,
94
+ serviceSection,
95
+ paymentSection,
96
+ createdAt: new Date()
97
+ };
98
+ invoice.projectId = projectId;
99
+ try {
100
+ const db = await getDb();
101
+ const result = await db.collection("invoices").insertOne(invoice);
102
+ if (result && result.insertedId) {
103
+ return res.status(201).json({
104
+ success: true,
105
+ message: "Invoice created successfully.",
106
+ invoiceId: result.insertedId,
107
+ invoice
108
+ });
109
+ } else {
110
+ return res.status(500).json({
111
+ success: false,
112
+ message: "Invoice could not be added."
113
+ });
114
+ }
115
+ } catch (error) {
116
+ console.error("Error adding invoice:", error);
117
+ return res.status(500).json({
118
+ success: false,
119
+ message: "Failed to add invoice due to a server error."
120
+ });
121
+ }
122
+ });
123
+ router.put('/:invoiceId', async (req, res) => {
124
+ const {
125
+ invoiceId
126
+ } = req.params;
127
+ const {
128
+ projectId
129
+ } = req.query;
130
+ if (!projectId) {
131
+ return res.status(400).json({
132
+ success: false,
133
+ message: "projectId is required."
134
+ });
135
+ }
136
+ let filter;
137
+ try {
138
+ filter = {
139
+ _id: new ObjectId(invoiceId),
140
+ projectId: projectId
141
+ };
142
+ } catch (e) {
143
+ return res.status(400).json({
144
+ success: false,
145
+ message: "Invalid invoiceId format."
146
+ });
147
+ }
148
+ const updateData = req.body;
149
+ try {
150
+ const db = await getDb();
151
+ const result = await db.collection("invoices").updateOne(filter, {
152
+ $set: updateData
153
+ });
154
+ return res.status(200).json({
155
+ success: true,
156
+ message: "Invoice updated successfully.",
157
+ result: result
158
+ });
159
+ } catch (error) {
160
+ console.error("Error updating invoice:", error);
161
+ return res.status(500).json({
162
+ success: false,
163
+ message: "Failed to update invoice due to a server error."
164
+ });
165
+ }
166
+ });
167
+ module.exports = router;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "powr-sdk-api",
3
- "version": "3.0.8",
3
+ "version": "3.0.10",
4
4
  "description": "Shared API core library for PowrStack projects",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",