Skip to content
This repository was archived by the owner on May 6, 2022. It is now read-only.

Commit c96fcec

Browse files
authored
Merge pull request #106 from Tolfix/dev
v3.2
2 parents 1ef8515 + 54671b0 commit c96fcec

24 files changed

+841
-325
lines changed

package.json

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "cpg-api",
3-
"version": "v3.1",
3+
"version": "v3.2",
44
"description": "Central Payment Gateway",
55
"main": "./build/Main.js",
66
"dependencies": {
@@ -39,6 +39,8 @@
3939
"graphql-compose-mongoose": "^9.7.1",
4040
"graphql-resolvers": "^0.4.2",
4141
"inquirer": "^8.2.2",
42+
"inquirer-search-checkbox": "^1.0.0",
43+
"inquirer-search-list": "^1.2.6",
4244
"jimp": "^0.16.1",
4345
"jsonwebtoken": "^8.5.1",
4446
"mongoose": "^6.1.4",
@@ -48,6 +50,7 @@
4850
"nodemailer": "^6.7.0",
4951
"npm": "^7.20.5",
5052
"paypal-rest-sdk": "^1.8.1",
53+
"pdfkit-table": "^0.1.86",
5154
"pg": "^8.7.1",
5255
"pg-hstore": "^2.3.4",
5356
"prompt": "^1.2.0",

src/Admin/AdminHandler.ts

+4-188
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,10 @@
1-
import { stripIndent } from "common-tags";
2-
import prompt from "prompt";
3-
import { CacheAdmin } from "../Cache/Admin.cache";
4-
import { cron_chargeStripePayment, cron_notifyInvoices, cron_notifyLateInvoicePaid } from "../Cron/Methods/Invoices.cron.methods";
5-
import AdminModel from "../Database/Models/Administrators.model";
6-
import ConfigModel from "../Database/Models/Configs.model";
71
import Logger from "../Lib/Logger";
8-
import { getPlugins, installPlugin } from "../Plugins/PluginHandler";
9-
import createAdmin from "./CreateAdmin";
102
import chalk from "chalk";
113
import clear from "clear";
124
import figlet from "figlet";
135
import Prompt, { cacheCommands } from "./Commands/Prompt";
146
import inquirer from 'inquirer';
157

16-
export interface ICommandsAdmin
17-
{
18-
[key: string]: {
19-
description: string;
20-
method: any;
21-
[key: string]: any;
22-
}
23-
}
24-
258
export default class AdminHandler
269
{
2710

@@ -35,6 +18,8 @@ export default class AdminHandler
3518
})
3619
)
3720
)
21+
inquirer.registerPrompt('search-list', require('inquirer-search-list'));
22+
inquirer.registerPrompt('search-checkbox', require('inquirer-search-checkbox'));
3823
this.action();
3924
}
4025

@@ -67,178 +52,9 @@ export default class AdminHandler
6752
}
6853
}).catch((error) =>
6954
{
70-
console.log(error)
71-
});
72-
}
73-
74-
75-
private async show_emails()
76-
{
77-
return new Promise(async (resolve,) =>
78-
{
79-
// Get our config from database
80-
const config = (await ConfigModel.find())[0];
81-
Logger.info(`Emails:`, config.smtp_emails);
82-
resolve(true);
83-
});
84-
}
85-
86-
private async add_email()
87-
{
88-
return new Promise((resolve) =>
89-
{
90-
prompt.get([
91-
{
92-
name: "email",
93-
description: "Email for administrator",
94-
required: true
95-
},
96-
], async (err, result) =>
97-
{
98-
const email = result.email as string;
99-
Logger.info(`Adding email..`);
100-
// Check if email is valid
101-
// eslint-disable-next-line no-useless-escape
102-
if(!email.match(/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/))
103-
{
104-
Logger.error(`Invalid email`);
105-
return resolve(false);
106-
}
107-
// Get our config from database
108-
const config = (await ConfigModel.find())[0];
109-
110-
config.smtp_emails.push(email);
111-
112-
// Save our config
113-
await config.save();
114-
return resolve(true)
115-
});
116-
});
117-
}
118-
119-
private async delete_email()
120-
{
121-
return new Promise((resolve) =>
122-
{
123-
prompt.get([
124-
{
125-
name: "email",
126-
description: "Email for administrator",
127-
required: true
128-
},
129-
], async (err, result) =>
130-
{
131-
const email = result.email as string;
132-
Logger.info(`Deleting email..`);
133-
// Get our config from database
134-
const config = (await ConfigModel.find())[0];
135-
136-
// Remove email
137-
config.smtp_emails = config.smtp_emails.filter(e => e !== email);
138-
139-
// Save our config
140-
await config.save();
141-
return resolve(true)
142-
});
55+
Logger.error(error);
56+
this.action();
14357
});
14458
}
14559

146-
147-
private async add_webhook()
148-
{
149-
return new Promise((resolve) =>
150-
{
151-
prompt.get([
152-
{
153-
name: "url",
154-
description: "URL for webhook",
155-
required: true
156-
},
157-
], async (err, result) =>
158-
{
159-
const url = result.url as string;
160-
Logger.info(`Adding webhook..`);
161-
// Get our config from database
162-
const config = (await ConfigModel.find())[0];
163-
164-
// Add webhook
165-
config.webhooks_urls.push(url);
166-
167-
// Save our config
168-
await config.save();
169-
return resolve(true)
170-
});
171-
});
172-
}
173-
174-
private async delete_webhook()
175-
{
176-
return new Promise((resolve) =>
177-
{
178-
prompt.get([
179-
{
180-
name: "url",
181-
description: "URL for webhook",
182-
required: true
183-
},
184-
], async (err, result) =>
185-
{
186-
const url = result.url as string;
187-
Logger.info(`Deleting webhook..`);
188-
// Get our config from database
189-
const config = (await ConfigModel.find())[0];
190-
191-
// Remove webhook
192-
config.webhooks_urls = config.webhooks_urls.filter((e: any) => e !== url);
193-
194-
// Save our config
195-
await config.save();
196-
return resolve(true)
197-
});
198-
});
199-
}
200-
201-
private async show_webhooks()
202-
{
203-
return new Promise(async (resolve) =>
204-
{
205-
// Get our config from database
206-
const config = (await ConfigModel.find())[0];
207-
Logger.info(`Webhooks:`, config.webhooks_urls);
208-
resolve(true);
209-
});
210-
}
211-
212-
private async show_plugins()
213-
{
214-
return new Promise(async (resolve) =>
215-
{
216-
// Get our config from database
217-
const plugins = getPlugins()
218-
Logger.info(`Plugins:`, ...plugins);
219-
resolve(true);
220-
});
221-
}
222-
223-
private async update_plugin()
224-
{
225-
return new Promise(async (resolve) =>
226-
{
227-
prompt.get([
228-
{
229-
name: "plugin",
230-
description: "Plugin",
231-
required: false,
232-
type: "string",
233-
},
234-
], async (err, result) =>
235-
{
236-
Logger.info(`Updating plugins..`);
237-
const plugin = result.plugin as string;
238-
if(plugin)
239-
await installPlugin(`${plugin}@latest`);
240-
return resolve(true)
241-
});
242-
});
243-
}
24460
}

src/Admin/Commands/Admin.prompt.ts

-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
/* eslint-disable no-case-declarations */
22
import Logger from "../../Lib/Logger";
33
import prompt from "prompt";
4-
import { CacheConfig } from "../../Cache/Configs.cache";
5-
import ConfigModel from "../../Database/Models/Configs.model";
6-
import updateSMTP from "../updateSMTP";
74
import AdminModel from "../../Database/Models/Administrators.model";
85
import createAdmin from "../CreateAdmin";
96

src/Admin/Commands/Company.prompt.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import Logger from "../../Lib/Logger";
33
import prompt from "prompt";
44
import { CacheConfig } from "../../Cache/Configs.cache";
55
import ConfigModel from "../../Database/Models/Configs.model";
6+
import { TPaymentCurrency } from "../../Lib/Currencies";
67

78
export default
89
{
@@ -133,7 +134,7 @@ export default
133134
email: result.email as string,
134135
logo_url: result.logo_url as string,
135136
tax_registered: result.tax_registered === "true",
136-
currency: result.currency as string,
137+
currency: result.currency as TPaymentCurrency,
137138
website: result.website as string
138139
};
139140

src/Admin/Commands/Email.prompt.ts

+102
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
/* eslint-disable no-case-declarations */
2+
import Logger from "../../Lib/Logger";
3+
import prompt from "prompt";
4+
import ConfigModel from "../../Database/Models/Configs.model";
5+
6+
export default
7+
{
8+
name: 'Emails',
9+
description: 'Get all email jobs',
10+
args: [
11+
{
12+
name: 'action',
13+
type: "list",
14+
message: "Select the email job you want to run",
15+
choices: [
16+
{
17+
name: 'Show emails',
18+
value: 'show_emails',
19+
},
20+
{
21+
name: 'Add email',
22+
value: 'add_email',
23+
},
24+
{
25+
name: 'Delete email',
26+
value: 'delete_email',
27+
}
28+
],
29+
}
30+
],
31+
method: async ({action}: {action: string}) =>
32+
{
33+
switch(action)
34+
{
35+
case 'show_emails':
36+
return new Promise(async (resolve,) =>
37+
{
38+
// Get our config from database
39+
const config = (await ConfigModel.find())[0];
40+
Logger.info(`Emails:`, config.smtp_emails);
41+
resolve(true);
42+
});
43+
44+
case 'add_email':
45+
return new Promise((resolve) =>
46+
{
47+
prompt.get([
48+
{
49+
name: "email",
50+
description: "Email for administrator",
51+
required: true
52+
},
53+
], async (err, result) =>
54+
{
55+
const email = result.email as string;
56+
Logger.info(`Adding email..`);
57+
// Check if email is valid
58+
// eslint-disable-next-line no-useless-escape
59+
if(!email.match(/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/))
60+
{
61+
Logger.error(`Invalid email`);
62+
return resolve(false);
63+
}
64+
// Get our config from database
65+
const config = (await ConfigModel.find())[0];
66+
67+
config.smtp_emails.push(email);
68+
69+
// Save our config
70+
await config.save();
71+
return resolve(true)
72+
});
73+
});
74+
case 'delete_email':
75+
return new Promise((resolve) =>
76+
{
77+
prompt.get([
78+
{
79+
name: "email",
80+
description: "Email for administrator",
81+
required: true
82+
},
83+
], async (err, result) =>
84+
{
85+
const email = result.email as string;
86+
Logger.info(`Deleting email..`);
87+
// Get our config from database
88+
const config = (await ConfigModel.find())[0];
89+
90+
// Remove email
91+
config.smtp_emails = config.smtp_emails.filter(e => e !== email);
92+
93+
// Save our config
94+
await config.save();
95+
return resolve(true)
96+
});
97+
});
98+
99+
}
100+
return true;
101+
}
102+
}

0 commit comments

Comments
 (0)