diff --git a/src/Admin/AdminHandler.ts b/src/Admin/AdminHandler.ts index 2cd44228..594d7725 100644 --- a/src/Admin/AdminHandler.ts +++ b/src/Admin/AdminHandler.ts @@ -60,58 +60,60 @@ export default class AdminHandler run_late_invoice_notify `); - if(result.action === "create_admin") - await this.create(); - - if(result.action === "show_admins") - await this.show(); - - if(result.action === "update_smtp") - await this.update_smtp(); - - if(result.action === "show_smtp") - await this.show_smtp(); - - if(result.action === "delete_admin") - await this.delete_admin(); - - if(result.action === "add_email") - await this.add_email(); - - if(result.action === "delete_email") - await this.delete_email(); - - if(result.action === "show_emails") - await this.show_emails(); - - if(result.action === "add_webhook") - await this.add_webhook(); - - if(result.action === "delete_webhook") - await this.delete_webhook(); - - if(result.action === "show_webhooks") - await this.show_webhooks(); - - if(result.action === "update_company") - await this.update_company(); - - if(result.action === "show_plugins") - await this.show_plugins(); - - if(result.action === "update_plugin") - await this.update_plugin(); - - if(result.action === "run_invoices_notify") - await this.run_invoices_notify(); - - if(result.action === "run_charge_payment") - await this.run_charge_payment(); - - if(result.action === "run_late_invoice_notify") - await this.run_late_invoice_notify(); - - this.action(); + switch (result.action) + { + case "create_admin": + await this.create(); + break; + case "delete_admin": + await this.delete_admin(); + break; + case "show_admins": + await AdminHandler.show(); + break; + case "update_smtp": + await this.update_smtp(); + break; + case "show_smtp": + await this.show_smtp(); + break; + case "add_email": + await this.add_email(); + break; + case "delete_email": + await this.delete_email(); + break; + case "show_emails": + await this.show_emails(); + break; + case "add_webhook": + await this.add_webhook(); + break; + case "delete_webhook": + await this.delete_webhook(); + break; + case "show_webhooks": + await this.show_webhooks(); + break; + case "update_company": + await this.update_company(); + break; + case "show_plugins": + await this.show_plugins(); + break; + case "update_plugin": + await this.update_plugin(); + break; + case "run_invoices_notify": + await this.run_invoices_notify() + break; + case "run_charge_payment": + await this.run_charge_payment(); + break; + case "run_late_invoice_notify": + await this.run_late_invoice_notify() + } + this.action(); }); } @@ -162,7 +164,7 @@ export default class AdminHandler const secure = result.secure === "true"; Logger.info(`Updating smtp config..`); - updateSMTP({ + await updateSMTP({ host, port, username, @@ -174,7 +176,7 @@ export default class AdminHandler }); } - private async show() + private static async show() { Logger.info(CacheAdmin.array()); } @@ -270,7 +272,7 @@ export default class AdminHandler Logger.info(`Adding email..`); // Check if email is valid // eslint-disable-next-line no-useless-escape - 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,}))$/)) + 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,}))$/)) { Logger.error(`Invalid email`); return resolve(false); diff --git a/src/Admin/updateSMTP.ts b/src/Admin/updateSMTP.ts index acd85647..d9157607 100644 --- a/src/Admin/updateSMTP.ts +++ b/src/Admin/updateSMTP.ts @@ -1,5 +1,5 @@ import ConfigModel from "../Database/Models/Configs.model"; -import { IConfigs } from "../Interfaces/Admin/Configs.interface"; +import { IConfigs } from "@interface/Admin/Configs.interface"; export default async function updateSMTP(smtp: IConfigs["smtp"]): Promise { diff --git a/src/Cache/Admin.cache.ts b/src/Cache/Admin.cache.ts index 0f7cc201..ed2c3db2 100644 --- a/src/Cache/Admin.cache.ts +++ b/src/Cache/Admin.cache.ts @@ -1,4 +1,4 @@ -import { IAdministrator } from "../Interfaces/Admin/Administrators.interface"; +import { IAdministrator } from "@interface/Admin/Administrators.interface"; // Keeping this for a while.. export const CacheAdmin = new Map(); diff --git a/src/Cache/Categories.cache.ts b/src/Cache/Categories.cache.ts index 1c70c25a..f96482cf 100644 --- a/src/Cache/Categories.cache.ts +++ b/src/Cache/Categories.cache.ts @@ -1,4 +1,4 @@ -import { ICategory } from "../Interfaces/Categories.interface"; +import { ICategory } from "@interface/Categories.interface"; /** * @deprecated diff --git a/src/Cache/Configs.cache.ts b/src/Cache/Configs.cache.ts index 7fdda7c3..efdce6b6 100644 --- a/src/Cache/Configs.cache.ts +++ b/src/Cache/Configs.cache.ts @@ -1,4 +1,4 @@ -import { IConfigs } from "../Interfaces/Admin/Configs.interface"; +import { IConfigs } from "@interface/Admin/Configs.interface"; export type CacheCN = keyof IConfigs; /** diff --git a/src/Cache/Customer.cache.ts b/src/Cache/Customer.cache.ts index 5139cbfe..396807d1 100644 --- a/src/Cache/Customer.cache.ts +++ b/src/Cache/Customer.cache.ts @@ -1,4 +1,4 @@ -import { ICustomer } from "../Interfaces/Customer.interface"; +import { ICustomer } from "@interface/Customer.interface"; /** * @deprecated diff --git a/src/Cache/Image.cache.ts b/src/Cache/Image.cache.ts index 71f74db6..6fed0f62 100644 --- a/src/Cache/Image.cache.ts +++ b/src/Cache/Image.cache.ts @@ -1,3 +1,3 @@ -import { IImage } from "../Interfaces/Images.interface"; +import { IImage } from "@interface/Images.interface"; export const CacheImages = new Map(); \ No newline at end of file diff --git a/src/Cache/Invoices.cache.ts b/src/Cache/Invoices.cache.ts index 0ba105ef..02379c56 100644 --- a/src/Cache/Invoices.cache.ts +++ b/src/Cache/Invoices.cache.ts @@ -1,4 +1,4 @@ -import { IInvoice } from "../Interfaces/Invoice.interface"; +import { IInvoice } from "@interface/Invoice.interface"; /** * @deprecated diff --git a/src/Cache/Order.cache.ts b/src/Cache/Order.cache.ts index 16b15a75..b5614ef2 100644 --- a/src/Cache/Order.cache.ts +++ b/src/Cache/Order.cache.ts @@ -1,4 +1,4 @@ -import { IOrder } from "../Interfaces/Orders.interface"; +import { IOrder } from "@interface/Orders.interface"; /** * @deprecated diff --git a/src/Cache/Product.cache.ts b/src/Cache/Product.cache.ts index fc541e33..d02be9f6 100644 --- a/src/Cache/Product.cache.ts +++ b/src/Cache/Product.cache.ts @@ -1,4 +1,4 @@ -import { IProduct } from "../Interfaces/Products.interface"; +import { IProduct } from "@interface/Products.interface"; /** * @deprecated diff --git a/src/Cache/Transactions.cache.ts b/src/Cache/Transactions.cache.ts index 8401596f..3c070e82 100644 --- a/src/Cache/Transactions.cache.ts +++ b/src/Cache/Transactions.cache.ts @@ -1,4 +1,4 @@ -import { ITransactions } from "../Interfaces/Transactions.interface"; +import { ITransactions } from "@interface/Transactions.interface"; /** * @deprecated diff --git a/src/Cache/reCache.ts b/src/Cache/reCache.ts index 14241475..caa058c1 100644 --- a/src/Cache/reCache.ts +++ b/src/Cache/reCache.ts @@ -95,8 +95,8 @@ export async function reCache_Transactions() Logger.info(`Starting caching on transactions..`); return new Promise(async (resolve) => { - const transa = await TransactionsModel.find(); - for (const t of transa) + const transactions = await TransactionsModel.find(); + for (const t of transactions) { Logger.cache(`Caching transaction ${t.uid}`); CacheTransactions.set(t.uid, t); @@ -142,7 +142,7 @@ export async function reCache_Configs() }, smtp_emails: [], } - new ConfigModel(smtpData).save(); + await new ConfigModel(smtpData).save(); Logger.cache(`Caching config`); diff --git a/src/Config.ts b/src/Config.ts index 41a255a5..41c17a20 100644 --- a/src/Config.ts +++ b/src/Config.ts @@ -1,12 +1,12 @@ import ConfigModel from "./Database/Models/Configs.model"; -import { IConfigs } from "./Interfaces/Admin/Configs.interface"; -import { IAllLanguages } from "./Interfaces/Lang/AllLang.interface"; +import { IConfigs } from "@interface/Admin/Configs.interface"; +import { IAllLanguages } from "@interface/Lang/AllLang.interface"; /** * @description * Used if this service is running in debug mode. */ -export const DebugMode = process.env.DEBUG === "true" ? true : false; +export const DebugMode = process.env.DEBUG === "true"; export const HomeDir = ((__dirname.replace("\\build", "")).replace("/build", "")); export const JWT_Access_Token = process.env.JWT_ACCESS_TOKEN ?? ""; export const d_Days = parseInt(process.env.D_DAYS ?? "30"); @@ -110,7 +110,7 @@ export const Company_Tax_Registered = async (): Promise => { diff --git a/src/Cron/Methods/Invoices.cron.methods.ts b/src/Cron/Methods/Invoices.cron.methods.ts index 6b8dbab2..7d676cd9 100644 --- a/src/Cron/Methods/Invoices.cron.methods.ts +++ b/src/Cron/Methods/Invoices.cron.methods.ts @@ -53,7 +53,7 @@ export function cron_notifyInvoices() } if(invoices.length > 0) - InvoiceNotifiedReport(invoices); + await InvoiceNotifiedReport(invoices); }); } diff --git a/src/Cron/Orders.cron.ts b/src/Cron/Orders.cron.ts index 0c6f318a..1878e96b 100644 --- a/src/Cron/Orders.cron.ts +++ b/src/Cron/Orders.cron.ts @@ -16,7 +16,7 @@ export = function Cron_Orders() Logger.info(GetText(Default_Language).cron.txt_Orders_Checking); // Logger.info(`Checking orders..`); - // Check if the order needs to create a new invoice if order.dates.next_recylce is withing 14 days + // Check if the order needs to create a new invoice if order.dates.next_recycle is withing 14 days OrderModel.find({ order_status: "active", // order_status: { @@ -30,7 +30,7 @@ export = function Cron_Orders() { Logger.info(GetText(Default_Language).cron.txt_Order_Checking(order.id)); // Logger.info(`Checking order ${order.id}`); - // Check if order.order_status is not "cancelled" or "fruad" + // Check if order.order_status is not "cancelled" or "fraud" if(order.dates.next_recycle) if(dateFormat.parse(order.dates.next_recycle, "YYYY-MM-DD").getTime() - new Date().getTime() <= d_Days * 24 * 60 * 60 * 1000) { @@ -54,7 +54,7 @@ export = function Cron_Orders() await order.save(); } if(newInvoices.length > 0) - InvoiceCreatedReport(newInvoices); + await InvoiceCreatedReport(newInvoices); } }); diff --git a/src/Database/GraphQL/ApolloServer.ts b/src/Database/GraphQL/ApolloServer.ts index 022ee088..6e7e5172 100644 --- a/src/Database/GraphQL/ApolloServer.ts +++ b/src/Database/GraphQL/ApolloServer.ts @@ -40,7 +40,8 @@ export default async (server: Application) => let [login, password] = (Buffer.isBuffer(b64auth[1]) ? Buffer.from(b64auth[1], 'base64') : b64auth[1]).toString().split(':'); if(login.includes("==") || password.includes("==")) { - login = atob(login); + //login = atob(login); + login = Buffer.from(login, 'base64').toString(); password = login.split(":")[1]; login = login.split(":")[0]; } diff --git a/src/Database/GraphQL/ResolverAccess.ts b/src/Database/GraphQL/ResolverAccess.ts index 82ede44a..8d72c946 100644 --- a/src/Database/GraphQL/ResolverAccess.ts +++ b/src/Database/GraphQL/ResolverAccess.ts @@ -3,7 +3,7 @@ import Logger from "../../Lib/Logger"; import GetText from "../../Translation/GetText"; export function resolverAdminAccess(resolvers: { - [key: string]: Resolver; + [key: string]: Resolver; }) { Object.keys(resolvers).forEach((k) => @@ -26,7 +26,7 @@ export function resolverAdminAccess(resolvers: { } export function resolverUserAccess(resolvers: { - [key: string]: Resolver; + [key: string]: Resolver; }) { Object.keys(resolvers).forEach((k) => diff --git a/src/Database/GraphQL/Resolvers/Customer/Customer.resolver.ts b/src/Database/GraphQL/Resolvers/Customer/Customer.resolver.ts index a7110a9b..59626f0e 100644 --- a/src/Database/GraphQL/Resolvers/Customer/Customer.resolver.ts +++ b/src/Database/GraphQL/Resolvers/Customer/Customer.resolver.ts @@ -1,5 +1,5 @@ -import { ObjectTypeComposer, ResolverResolveParams, Resolver, schemaComposer } from "graphql-compose"; -import { ICustomer } from "../../../../Interfaces/Customer.interface"; +import {ObjectTypeComposer, Resolver, ResolverResolveParams, schemaComposer} from "graphql-compose"; +import {ICustomer} from "@interface/Customer.interface"; import CustomerModel from "../../../Models/Customers/Customer.model"; import InvoiceModel from "../../../Models/Invoices.model"; import OrderModel from "../../../Models/Orders.model"; @@ -7,7 +7,7 @@ import TransactionsModel from "../../../Models/Transactions.model"; export function myProfileResolver( object: ObjectTypeComposer -): Resolver +): Resolver { return schemaComposer.createResolver({ name: "myProfile", @@ -27,18 +27,16 @@ export function myProfileResolver( if(context.isAdmin) throw new Error(`Admin not allowed to access this`); - const data = await CustomerModel.findOne({ + return CustomerModel.findOne({ id: context.userData.id, }); - - return data; } }) } export function myInvoicesResolver( object: ObjectTypeComposer -): Resolver +): Resolver { return schemaComposer.createResolver({ name: "myInvoices", @@ -65,21 +63,19 @@ export function myInvoicesResolver( if(!customer) throw new Error(`Customer not found`); - const invoices = await InvoiceModel.find({ + return InvoiceModel.find({ $or: [ - { customer_uid: customer.uid}, - { customer_uid: customer.id} + {customer_uid: customer.uid}, + {customer_uid: customer.id} ] }); - - return invoices; } }) } export function myInvoiceResolver( object: ObjectTypeComposer -): Resolver +): Resolver { return schemaComposer.createResolver({ name: "myInvoice", @@ -114,7 +110,7 @@ export function myInvoiceResolver( if(!customer) throw new Error(`Customer not found`); - const invoice = await InvoiceModel.findOne({ + return InvoiceModel.findOne({ $or: [ { customer_uid: customer.uid, @@ -146,15 +142,13 @@ export function myInvoiceResolver( }, ], }); - - return invoice; } }) } export function myOrdersResolver( object: ObjectTypeComposer -): Resolver +): Resolver { return schemaComposer.createResolver({ name: "myOrders", @@ -181,21 +175,19 @@ export function myOrdersResolver( if(!customer) throw new Error(`Customer not found`); - const orders = await OrderModel.find({ + return OrderModel.find({ $or: [ - { customer_uid: customer.uid}, - { customer_uid: customer.id} + {customer_uid: customer.uid}, + {customer_uid: customer.id} ] }); - - return orders; } }) } export function myOrderResolver( object: ObjectTypeComposer -): Resolver +): Resolver { return schemaComposer.createResolver({ name: "myInvoice", @@ -230,7 +222,7 @@ export function myOrderResolver( if(!customer) throw new Error(`Customer not found`); - const order = await OrderModel.findOne({ + return OrderModel.findOne({ $or: [ { customer_uid: customer.uid, @@ -262,15 +254,13 @@ export function myOrderResolver( }, ], }); - - return order; } }) } export function myTransactionsResolver( object: ObjectTypeComposer -): Resolver +): Resolver { return schemaComposer.createResolver({ name: "myOrders", @@ -297,21 +287,19 @@ export function myTransactionsResolver( if(!customer) throw new Error(`Customer not found`); - const transactions = await TransactionsModel.find({ + return TransactionsModel.find({ $or: [ - { customer_uid: customer.uid}, - { customer_uid: customer.id} + {customer_uid: customer.uid}, + {customer_uid: customer.id} ] }); - - return transactions; } }) } export function myTransactionResolver( object: ObjectTypeComposer -): Resolver +): Resolver { return schemaComposer.createResolver({ name: "myInvoice", @@ -346,7 +334,7 @@ export function myTransactionResolver( if(!customer) throw new Error(`Customer not found`); - const transaction = await TransactionsModel.findOne({ + return TransactionsModel.findOne({ $or: [ { customer_uid: customer.uid, @@ -378,8 +366,6 @@ export function myTransactionResolver( }, ], }); - - return transaction; } }) } \ No newline at end of file diff --git a/src/Database/GraphQL/SchemaPoser.ts b/src/Database/GraphQL/SchemaPoser.ts index 6bc5afe1..9d9ca271 100644 --- a/src/Database/GraphQL/SchemaPoser.ts +++ b/src/Database/GraphQL/SchemaPoser.ts @@ -21,7 +21,7 @@ for(const f of files) if(!name) continue; - // Now get schame[`${name}Query`] and schema[`${name}Mutation`] + // Now get scheme[`${name}Query`] and schema[`${name}Mutation`] const query = schema[`${name}Query`]; const mutation = schema[`${name}Mutation`]; @@ -34,8 +34,8 @@ for(const f of files) if(mutation) schemaComposer.Mutation.addFields(mutation); - continue; + } -// Lets create the schema +// Let's create the schema export default schemaComposer.buildSchema(); \ No newline at end of file diff --git a/src/Database/Models/Administrators.model.ts b/src/Database/Models/Administrators.model.ts index db0bd94b..231a82f1 100644 --- a/src/Database/Models/Administrators.model.ts +++ b/src/Database/Models/Administrators.model.ts @@ -1,7 +1,7 @@ import mongoose, { model, Schema } from "mongoose" import increment from "mongoose-auto-increment"; import { MongoDB_URI } from "../../Config"; -import { IDIAdministrator } from "../../Interfaces/Admin/Administrators.interface"; +import { IDIAdministrator } from "@interface/Admin/Administrators.interface"; import GetText from "../../Translation/GetText"; const AdminSchema = new Schema diff --git a/src/Database/Models/Configs.model.ts b/src/Database/Models/Configs.model.ts index 7ede96d1..9c169509 100644 --- a/src/Database/Models/Configs.model.ts +++ b/src/Database/Models/Configs.model.ts @@ -1,5 +1,5 @@ import { model, Schema } from "mongoose" -import { IDConfigs } from "../../Interfaces/Admin/Configs.interface"; +import { IDConfigs } from "@interface/Admin/Configs.interface"; const ConfigsSchema = new Schema ( diff --git a/src/Database/Models/ConfigurableOptions.model.ts b/src/Database/Models/ConfigurableOptions.model.ts index 9e7b24d6..78683150 100644 --- a/src/Database/Models/ConfigurableOptions.model.ts +++ b/src/Database/Models/ConfigurableOptions.model.ts @@ -1,7 +1,7 @@ import mongoose, { model, Schema, Document } from "mongoose" import increment from "mongoose-auto-increment"; import { Default_Language, MongoDB_URI } from "../../Config"; -import { IConfigurableOptions } from "../../Interfaces/ConfigurableOptions.interface"; +import { IConfigurableOptions } from "@interface/ConfigurableOptions.interface"; import Logger from "../../Lib/Logger"; import GetText from "../../Translation/GetText"; diff --git a/src/Database/Models/Customers/Customer.model.ts b/src/Database/Models/Customers/Customer.model.ts index 4bd4c069..ece5118e 100644 --- a/src/Database/Models/Customers/Customer.model.ts +++ b/src/Database/Models/Customers/Customer.model.ts @@ -1,7 +1,7 @@ import mongoose, { Document, model, Schema } from "mongoose" import increment from "mongoose-auto-increment"; import { Default_Language, MongoDB_URI } from "../../../Config"; -import { ICustomer, ICustomerMethods } from "../../../Interfaces/Customer.interface"; +import { ICustomer, ICustomerMethods } from "@interface/Customer.interface"; import Logger from "../../../Lib/Logger"; import GetText from "../../../Translation/GetText"; import { currencyCodes } from "../../../Types/PaymentTypes"; diff --git a/src/Database/Models/Images.model.ts b/src/Database/Models/Images.model.ts index 6a27ffce..05f717cc 100644 --- a/src/Database/Models/Images.model.ts +++ b/src/Database/Models/Images.model.ts @@ -1,7 +1,7 @@ import mongoose,{ Document, model, Schema } from "mongoose" import increment from "mongoose-auto-increment"; import { Default_Language, MongoDB_URI } from "../../Config"; -import { IImage } from "../../Interfaces/Images.interface"; +import { IImage } from "@interface/Images.interface"; import Logger from "../../Lib/Logger"; import GetText from "../../Translation/GetText"; diff --git a/src/Database/Models/Invoices.model.ts b/src/Database/Models/Invoices.model.ts index 24111471..dd411ddc 100644 --- a/src/Database/Models/Invoices.model.ts +++ b/src/Database/Models/Invoices.model.ts @@ -1,11 +1,22 @@ import mongoose, { Document, model, Schema } from "mongoose" import increment from "mongoose-auto-increment"; import { Default_Language, MongoDB_URI } from "../../Config"; -import { A_InvoiceStatus, IInvoice, IInvoiceMethods } from "../../Interfaces/Invoice.interface"; +import { extendedOrderStatus, IInvoice, IInvoiceMethods } from "@interface/Invoice.interface"; import Logger from "../../Lib/Logger"; import GetText from "../../Translation/GetText"; import { currencyCodes, GetCurrencySymbol } from "../../Types/PaymentTypes"; +export const A_InvoiceStatus: extendedOrderStatus[] = [ + "active", + "pending", + "draft", + "fraud", + "cancelled", + "refunded", + "collections", + "payment_pending", +]; + const InvoiceSchema = new Schema ( { diff --git a/src/Database/Models/Orders.model.ts b/src/Database/Models/Orders.model.ts index a59f9783..a03ad4ee 100644 --- a/src/Database/Models/Orders.model.ts +++ b/src/Database/Models/Orders.model.ts @@ -1,12 +1,19 @@ import mongoose, { Document, model, Schema } from "mongoose" import increment from "mongoose-auto-increment"; import { Default_Language, MongoDB_URI } from "../../Config"; -import { A_OrderStatus, IOrder } from "../../Interfaces/Orders.interface"; +import { IOrder } from "@interface/Orders.interface"; import Logger from "../../Lib/Logger"; import GetText from "../../Translation/GetText"; import { A_CC_Payments, A_RecurringMethod } from "../../Types/PaymentMethod"; import { A_PaymentTypes, currencyCodes } from "../../Types/PaymentTypes"; +export const A_OrderStatus = [ + "active", + "pending", + "fraud", + "cancelled" +] as const; + const OrderSchema = new Schema ( { @@ -67,7 +74,7 @@ const OrderSchema = new Schema price_override: { type: Number, - defualt: 0, + default: 0, }, dates: { diff --git a/src/Database/Models/Products.model.ts b/src/Database/Models/Products.model.ts index 3202c9cd..621e6fbc 100644 --- a/src/Database/Models/Products.model.ts +++ b/src/Database/Models/Products.model.ts @@ -1,7 +1,7 @@ import mongoose, { Document, model, Schema } from "mongoose" import increment from "mongoose-auto-increment"; import { Default_Language, MongoDB_URI } from "../../Config"; -import { IProduct } from "../../Interfaces/Products.interface"; +import { IProduct } from "@interface/Products.interface"; import Logger from "../../Lib/Logger"; import GetText from "../../Translation/GetText"; import { A_RecurringMethod } from "../../Types/PaymentMethod"; diff --git a/src/Database/Models/PromotionsCode.model.ts b/src/Database/Models/PromotionsCode.model.ts index 9c5b3063..46cccedc 100644 --- a/src/Database/Models/PromotionsCode.model.ts +++ b/src/Database/Models/PromotionsCode.model.ts @@ -1,7 +1,7 @@ import mongoose,{ Document, model, Schema } from "mongoose" import increment from "mongoose-auto-increment"; import { Default_Language, MongoDB_URI } from "../../Config"; -import { IPromotionsCodes } from "../../Interfaces/PromotionsCodes.interface"; +import { IPromotionsCodes } from "@interface/PromotionsCodes.interface"; import Logger from "../../Lib/Logger"; import GetText from "../../Translation/GetText"; @@ -21,8 +21,8 @@ const PromotionCodeSchema = new Schema valid_to: { type: String, - enum: [String, "permament"], - default: "permament" + enum: [String, "permanent"], + default: "permanent" }, uses: { @@ -31,7 +31,7 @@ const PromotionCodeSchema = new Schema default: "unlimited" }, - procentage: { + percentage: { type: Boolean, default: false }, diff --git a/src/Database/Models/Quotes.model.ts b/src/Database/Models/Quotes.model.ts index 331916a1..8e546ce7 100644 --- a/src/Database/Models/Quotes.model.ts +++ b/src/Database/Models/Quotes.model.ts @@ -1,7 +1,7 @@ import mongoose, { Document, model, Schema } from "mongoose" import increment from "mongoose-auto-increment"; import { Default_Language, MongoDB_URI } from "../../Config"; -import { IQuotes } from "../../Interfaces/Quotes.interface"; +import { IQuotes } from "@interface/Quotes.interface"; import Logger from "../../Lib/Logger"; import GetText from "../../Translation/GetText"; import { A_CC_Payments } from "../../Types/PaymentMethod"; diff --git a/src/Database/Models/Subscriptions.model.ts b/src/Database/Models/Subscriptions.model.ts index 99ad8d7c..097d14f5 100644 --- a/src/Database/Models/Subscriptions.model.ts +++ b/src/Database/Models/Subscriptions.model.ts @@ -1,12 +1,12 @@ import mongoose, { Document, model, Schema } from "mongoose"; import increment from "mongoose-auto-increment"; import { MongoDB_URI } from "../../Config"; -import { A_InvoiceStatus } from "../../Interfaces/Invoice.interface"; -import { IQuotes } from "../../Interfaces/Quotes.interface"; -import { ISubscription } from "../../Interfaces/Subscriptions.interface"; +import { IQuotes } from "@interface/Quotes.interface"; +import { ISubscription } from "@interface/Subscriptions.interface"; import Logger from "../../Lib/Logger"; import GetText from "../../Translation/GetText"; import { A_RecurringMethod } from "../../Types/PaymentMethod"; +import { A_InvoiceStatus } from "./Invoices.model"; const SubscriptionSchema = new Schema ( diff --git a/src/Database/Models/Transactions.model.ts b/src/Database/Models/Transactions.model.ts index 1bb06501..984c33dc 100644 --- a/src/Database/Models/Transactions.model.ts +++ b/src/Database/Models/Transactions.model.ts @@ -1,7 +1,7 @@ import mongoose, { model, Schema } from "mongoose" import increment from "mongoose-auto-increment"; import { Default_Language, MongoDB_URI } from "../../Config"; -import { IDTransactions } from "../../Interfaces/Transactions.interface"; +import { IDTransactions } from "@interface/Transactions.interface"; import Logger from "../../Lib/Logger"; import GetText from "../../Translation/GetText"; import { A_CC_Payments } from "../../Types/PaymentMethod"; diff --git a/src/Database/Mongo.ts b/src/Database/Mongo.ts index 4c042ca2..1672ebc0 100644 --- a/src/Database/Mongo.ts +++ b/src/Database/Mongo.ts @@ -8,8 +8,8 @@ const db = mongoose.connection; db.on('error', (error: any) => { - Logger.error(GetText(Default_Language).database.txt_Database_Error_default, error); - // Logger.error(`A error accured for the database`, error); + Logger.error(GetText(Default_Language).database.txt_Database_Error_default, error) + // Logger.error(`A error occurred, in the database`, error); }); db.on('disconnected', () => diff --git a/src/Email/Reports/InvoiceReport.ts b/src/Email/Reports/InvoiceReport.ts index 74de439d..ce78558f 100644 --- a/src/Email/Reports/InvoiceReport.ts +++ b/src/Email/Reports/InvoiceReport.ts @@ -1,5 +1,5 @@ import { GetSMTPEmails } from "../../Config"; -import { IInvoice } from "../../Interfaces/Invoice.interface"; +import { IInvoice } from "@interface/Invoice.interface"; import { SendEmail } from "../Send"; export const InvoiceNotifiedReport = async (invoices: IInvoice[]) => diff --git a/src/Email/Send.ts b/src/Email/Send.ts index d1937160..7b268841 100644 --- a/src/Email/Send.ts +++ b/src/Email/Send.ts @@ -1,6 +1,6 @@ import mail from "nodemailer"; import { Company_Name, GetSMTPConfig } from "../Config"; -import { IConfigs } from "../Interfaces/Admin/Configs.interface"; +import { IConfigs } from "@interface/Admin/Configs.interface"; import AW from "../Lib/AW"; import Logger from "../Lib/Logger"; @@ -9,7 +9,7 @@ import Logger from "../Lib/Logger"; * Send a email */ export async function SendEmail( - reciever: string, + receiver: string, subject: string, body: { isHTML: boolean; @@ -48,7 +48,7 @@ export async function SendEmail( attachments?: any; } = { from: `"${await Company_Name()}" <${SMTPConfig.username}>`, - to: `${reciever}`, + to: `${receiver}`, subject: subject, } @@ -64,7 +64,7 @@ export async function SendEmail( //@ts-ignore const transport = mail.createTransport(config); - Logger.info("Email:", `Sending email to ${reciever}`); + Logger.info("Email:", `Sending email to ${receiver}`); transport.sendMail(email).then(() => @@ -77,7 +77,7 @@ export async function SendEmail( } export async function sendEmail(options: { - reciever: string; + receiver: string; subject: string; body: { body: any; @@ -113,7 +113,7 @@ export async function sendEmail(options: { attachments?: any; } = { from: `"${await Company_Name()}" <${SMTPConfig.username}>`, - to: `${options.reciever}`, + to: `${options.receiver}`, html: options.body.body, subject: options.subject, } @@ -124,7 +124,7 @@ export async function sendEmail(options: { //@ts-ignore const transport = mail.createTransport(config); - Logger.info("Email:", `Sending email to ${options.reciever}`); + Logger.info("Email:", `Sending email to ${options.receiver}`); return transport.sendMail(email); } \ No newline at end of file diff --git a/src/Email/Templates/Customer/LoginAttempt.template.ts b/src/Email/Templates/Customer/LoginAttempt.template.ts index 6d2d438b..a4d8cfc1 100644 --- a/src/Email/Templates/Customer/LoginAttempt.template.ts +++ b/src/Email/Templates/Customer/LoginAttempt.template.ts @@ -1,6 +1,6 @@ import { stripIndents } from "common-tags"; import { Company_Email, CPG_Customer_Panel_Domain } from "../../../Config"; -import { ICustomer } from "../../../Interfaces/Customer.interface"; +import { ICustomer } from "@interface/Customer.interface"; import getFullName from "../../../Lib/Customers/getFullName"; import UseStyles from "../General/UseStyles"; diff --git a/src/Email/Templates/Customer/OrderCancel.template.ts b/src/Email/Templates/Customer/OrderCancel.template.ts index c835a7df..3468e4ac 100644 --- a/src/Email/Templates/Customer/OrderCancel.template.ts +++ b/src/Email/Templates/Customer/OrderCancel.template.ts @@ -1,7 +1,7 @@ import { stripIndents } from "common-tags"; import { Company_Email, CPG_Customer_Panel_Domain } from "../../../Config"; -import { ICustomer } from "../../../Interfaces/Customer.interface"; -import { IOrder } from "../../../Interfaces/Orders.interface"; +import { ICustomer } from "@interface/Customer.interface"; +import { IOrder } from "@interface/Orders.interface"; import getFullName from "../../../Lib/Customers/getFullName"; import UseStyles from "../General/UseStyles"; diff --git a/src/Email/Templates/Customer/ResetPassword.template.ts b/src/Email/Templates/Customer/ResetPassword.template.ts index 61844325..4ee6544b 100644 --- a/src/Email/Templates/Customer/ResetPassword.template.ts +++ b/src/Email/Templates/Customer/ResetPassword.template.ts @@ -1,6 +1,6 @@ import { stripIndents } from "common-tags"; import { Full_Domain } from "../../../Config"; -import { ICustomer } from "../../../Interfaces/Customer.interface"; +import { ICustomer } from "@interface/Customer.interface"; import getFullName from "../../../Lib/Customers/getFullName"; import UseStyles from "../General/UseStyles"; diff --git a/src/Email/Templates/Customer/Welcome.template.ts b/src/Email/Templates/Customer/Welcome.template.ts index 8279f7db..2851e0d9 100644 --- a/src/Email/Templates/Customer/Welcome.template.ts +++ b/src/Email/Templates/Customer/Welcome.template.ts @@ -1,6 +1,6 @@ import { stripIndents } from "common-tags"; import { Company_Name, CPG_Customer_Panel_Domain, CPG_Shop_Domain } from "../../../Config"; -import { ICustomer } from "../../../Interfaces/Customer.interface"; +import { ICustomer } from "@interface/Customer.interface"; import getFullName from "../../../Lib/Customers/getFullName"; import UseStyles from "../General/UseStyles"; diff --git a/src/Email/Templates/General/UseStyles.ts b/src/Email/Templates/General/UseStyles.ts index 1df759a7..fcd14070 100644 --- a/src/Email/Templates/General/UseStyles.ts +++ b/src/Email/Templates/General/UseStyles.ts @@ -7,7 +7,7 @@ export default async (s: string) => return ` - diff --git a/src/Email/Templates/Invoices/Invoice.template.ts b/src/Email/Templates/Invoices/Invoice.template.ts index be47e1d8..0401aa1b 100644 --- a/src/Email/Templates/Invoices/Invoice.template.ts +++ b/src/Email/Templates/Invoices/Invoice.template.ts @@ -1,7 +1,7 @@ import { stripIndents } from "common-tags"; import { CPG_Customer_Panel_Domain, Full_Domain } from "../../../Config"; -import { ICustomer } from "../../../Interfaces/Customer.interface"; -import { IInvoice, IInvoiceMethods } from "../../../Interfaces/Invoice.interface"; +import { ICustomer } from "@interface/Customer.interface"; +import { IInvoice, IInvoiceMethods } from "@interface/Invoice.interface"; import getFullName from "../../../Lib/Customers/getFullName"; import UseStyles from "../General/UseStyles"; import printInvoiceItemsTable from "../Methods/InvoiceItems.print"; diff --git a/src/Email/Templates/Invoices/LateInvoice.Template.ts b/src/Email/Templates/Invoices/LateInvoice.Template.ts index 835fdb5e..4fbfa531 100644 --- a/src/Email/Templates/Invoices/LateInvoice.Template.ts +++ b/src/Email/Templates/Invoices/LateInvoice.Template.ts @@ -1,7 +1,7 @@ import { stripIndents } from "common-tags"; import { CPG_Customer_Panel_Domain, Full_Domain } from "../../../Config"; -import { ICustomer } from "../../../Interfaces/Customer.interface"; -import { IInvoice, IInvoiceMethods } from "../../../Interfaces/Invoice.interface"; +import { ICustomer } from "@interface/Customer.interface"; +import { IInvoice, IInvoiceMethods } from "@interface/Invoice.interface"; import getFullName from "../../../Lib/Customers/getFullName"; import UseStyles from "../General/UseStyles"; import printInvoiceItemsTable from "../Methods/InvoiceItems.print"; diff --git a/src/Email/Templates/Orders/NewOrderCreated.ts b/src/Email/Templates/Orders/NewOrderCreated.ts index 73135ddd..84ef9880 100644 --- a/src/Email/Templates/Orders/NewOrderCreated.ts +++ b/src/Email/Templates/Orders/NewOrderCreated.ts @@ -1,8 +1,8 @@ import { stripIndents } from "common-tags"; import { CPG_Customer_Panel_Domain } from "../../../Config"; import ConfigurableOptionsModel from "../../../Database/Models/ConfigurableOptions.model"; -import { ICustomer } from "../../../Interfaces/Customer.interface"; -import { IOrder } from "../../../Interfaces/Orders.interface"; +import { ICustomer } from "@interface/Customer.interface"; +import { IOrder } from "@interface/Orders.interface"; import getFullName from "../../../Lib/Customers/getFullName"; import getProductById from "../../../Lib/Products/getProductById"; import UseStyles from "../General/UseStyles"; diff --git a/src/Email/Templates/Transaction/NewTransaction.template.ts b/src/Email/Templates/Transaction/NewTransaction.template.ts index fe74558f..f305fec0 100644 --- a/src/Email/Templates/Transaction/NewTransaction.template.ts +++ b/src/Email/Templates/Transaction/NewTransaction.template.ts @@ -1,7 +1,7 @@ import { stripIndents } from "common-tags"; import { Company_Email, CPG_Customer_Panel_Domain } from "../../../Config"; -import { ICustomer } from "../../../Interfaces/Customer.interface"; -import { ITransactions } from "../../../Interfaces/Transactions.interface"; +import { ICustomer } from "@interface/Customer.interface"; +import { ITransactions } from "@interface/Transactions.interface"; import PrintCompanyInformation from "../../../Lib/Company/PrintCompanyInformation"; import getFullName from "../../../Lib/Customers/getFullName"; import { GetCurrencySymbol } from "../../../Types/PaymentTypes"; diff --git a/src/Events/Main.event.ts b/src/Events/Main.event.ts index bfe91731..b2016bac 100644 --- a/src/Events/Main.event.ts +++ b/src/Events/Main.event.ts @@ -1,6 +1,6 @@ import request from "request"; import events from "events"; -import { MainOnEvents } from "../Interfaces/Events/MainOnEvents.interface"; +import { MainOnEvents } from "@interface/Events/MainOnEvents.interface"; import ConfigModel from "../Database/Models/Configs.model"; import { Webhook_Secret } from "../Config"; diff --git a/src/Events/SendEmails.events.ts b/src/Events/SendEmails.events.ts index de2f5a54..972b6cd1 100644 --- a/src/Events/SendEmails.events.ts +++ b/src/Events/SendEmails.events.ts @@ -6,15 +6,14 @@ mainEvent.on("invoice_created", async (invoice) => { // Send email to our admins from config const emails = await GetSMTPEmails(); - emails.forEach(async (email) => + for (const email of emails) { - await SendEmail(email, "Invoice created", { isHTML: false, body: `Invoice ${invoice.id} has been created`, }); - - }); + + } }); // Send email to our admins when invoice is paid @@ -22,15 +21,15 @@ mainEvent.on("invoice_paid", async (invoice) => { // Send email to our admins from config const emails = await GetSMTPEmails(); - emails.forEach(async (email) => + for (const email of emails) { - + await SendEmail(email, "Invoice paid", { isHTML: false, body: `Invoice ${invoice.id} has been paid`, }); - - }); + + } }); // Send email to our admins when invoice is deleted @@ -38,15 +37,15 @@ mainEvent.on("invoice_deleted", async (invoice) => { // Send email to our admins from config const emails = await GetSMTPEmails(); - emails.forEach(async (email) => + for (const email of emails) { - + await SendEmail(email, "Invoice deleted", { isHTML: false, body: `Invoice ${invoice.id} has been deleted`, }); - - }); + + } }); // Send email to our admins when invoice is notified @@ -54,13 +53,13 @@ mainEvent.on("invoice_notified", async (invoice) => { // Send email to our admins from config const emails = await GetSMTPEmails(); - emails.forEach(async (email) => + for await (const email of emails) { - + await SendEmail(email, "Invoice notified", { isHTML: false, body: `Invoice ${invoice.id} has been notified`, }); - - }); + + } }); \ No newline at end of file diff --git a/src/Events/Stripe.event.ts b/src/Events/Stripe.event.ts index 3895004e..68966762 100644 --- a/src/Events/Stripe.event.ts +++ b/src/Events/Stripe.event.ts @@ -3,7 +3,7 @@ import CustomerModel from "../Database/Models/Customers/Customer.model"; import InvoiceModel from "../Database/Models/Invoices.model"; import { sendEmail } from "../Email/Send"; import PaymentFailedTemplate from "../Email/Templates/Payments/PaymentFailed.template"; -import { markInvoicePaid, RetrivePaymentIntent } from "../Payments/Stripe"; +import { markInvoicePaid, RetrievePaymentIntent } from "../Payments/Stripe"; export default async function stripeWebhookEvent(event: stripe.Event) { @@ -11,14 +11,14 @@ export default async function stripeWebhookEvent(event: stripe.Event) { case 'payment_intent.succeeded': { const payment_intent = event.data.object as any; - const intent = await RetrivePaymentIntent(payment_intent.id); + const intent = await RetrievePaymentIntent(payment_intent.id); markInvoicePaid(intent); break; } case 'payment_intent.payment_failed': { const payment_intent = event.data.object as any; - const intent = await RetrivePaymentIntent(payment_intent.id); + const intent = await RetrievePaymentIntent(payment_intent.id); // Send email to customer // That their payment failed const invoice_id = intent.metadata.invoice_id; @@ -36,7 +36,7 @@ export default async function stripeWebhookEvent(event: stripe.Event) // Send email to customer // That their payment failed sendEmail({ - reciever: customer.personal.email, + receiver: customer.personal.email, subject: `Payment failed for invoice ${invoice.id}`, body: { body: await PaymentFailedTemplate(invoice, customer), diff --git a/src/Handlers/Cron.handler.ts b/src/Handlers/Cron.handler.ts index 43ddbdd7..a61ff00d 100644 --- a/src/Handlers/Cron.handler.ts +++ b/src/Handlers/Cron.handler.ts @@ -12,5 +12,4 @@ for (const file of command) Logger.info(`Adding new cron job`); pull(); } - continue; } \ No newline at end of file diff --git a/src/Handlers/Route.handler.ts b/src/Handlers/Route.handler.ts index 17b58a1f..02c56ac5 100644 --- a/src/Handlers/Route.handler.ts +++ b/src/Handlers/Route.handler.ts @@ -27,7 +27,7 @@ export default function RouteHandler(server: Application): void Logger.api(`Adding new router in version ${version}, name ${pull.name ?? ""}`) new pull(server, version); } - continue; + } }) }) diff --git a/src/Interfaces/Invoice.interface.ts b/src/Interfaces/Invoice.interface.ts index 64319ae3..05f33eb0 100644 --- a/src/Interfaces/Invoice.interface.ts +++ b/src/Interfaces/Invoice.interface.ts @@ -37,7 +37,7 @@ import { ITransactions } from "./Transactions.interface"; * @property {string} active * @property {string} pending * @property {string} draft - * @property {string} fruad + * @property {string} fraud * @property {string} cancelled * @property {string} refunded * @property {string} collections @@ -77,16 +77,6 @@ export interface IInvoiceMethods } export type extendedOrderStatus = TOrderStatus | "draft" | "refunded" | "collections" | "payment_pending"; -export const A_InvoiceStatus: extendedOrderStatus[] = [ - "active", - "pending", - "draft", - "fraud", - "cancelled", - "refunded", - "collections", - "payment_pending", -]; export interface IInvoice_Dates diff --git a/src/Interfaces/Logging.interface.ts b/src/Interfaces/Logging.interface.ts index ebad52ab..61f8b2e1 100644 --- a/src/Interfaces/Logging.interface.ts +++ b/src/Interfaces/Logging.interface.ts @@ -6,7 +6,7 @@ export interface ILoggingTypes plugin: (...body: T) => void; cache: (...body: T) => void; rainbow: (...body: T) => void; - verbos: (...body: T) => void; + verbose: (...body: T) => void; error: (...body: T) => void; warning: (...body: T) => void; info: (...body: T) => void; diff --git a/src/Interfaces/Orders.interface.ts b/src/Interfaces/Orders.interface.ts index 33c79027..c7f5c242 100644 --- a/src/Interfaces/Orders.interface.ts +++ b/src/Interfaces/Orders.interface.ts @@ -12,7 +12,7 @@ import { IPromotionsCodes } from "./PromotionsCodes.interface"; * @property {string} uid * @property {string} customer_uid * @property {string} payment_method - * @property {string} order_status "active" | "pending" | "fruad" | "cancelled" + * @property {string} order_status "active" | "pending" | "fraud" | "cancelled" * @property {string} product_uid * @property {string} billing_type "free" | "one_time" | "recurring" * @property {string} billing_cycle "monthly" | "quarterly" | "semi_annually" | "biennially" | "triennially" @@ -51,12 +51,6 @@ export interface IOrder export type TOrderStatus = "active" | "pending" | "fraud" | "cancelled"; -export const A_OrderStatus = [ - "active", - "pending", - "fraud", - "cancelled" -] export interface IOrderDates { diff --git a/src/Interfaces/PromotionsCodes.interface.ts b/src/Interfaces/PromotionsCodes.interface.ts index b3c8c885..c725c75b 100644 --- a/src/Interfaces/PromotionsCodes.interface.ts +++ b/src/Interfaces/PromotionsCodes.interface.ts @@ -5,8 +5,8 @@ export interface IPromotionsCodes id: number; name: string; discount: number; - valid_to: string | "permament"; + valid_to: string | "permanent"; uses: number | "unlimited"; - procentage: boolean; + percentage: boolean; products_ids: Array; } \ No newline at end of file diff --git a/src/Interfaces/Quotes.interface.ts b/src/Interfaces/Quotes.interface.ts index 31a2e7a6..eabccc90 100644 --- a/src/Interfaces/Quotes.interface.ts +++ b/src/Interfaces/Quotes.interface.ts @@ -12,7 +12,7 @@ export interface IQuotes due_date: string; memo: string; payment_method: keyof IPayments; - notifed: boolean; + notified: boolean; created_invoice: boolean; invoice_uid?: IInvoice["uid"] | IInvoice["id"]; } diff --git a/src/Lib/Customers/getFullName.ts b/src/Lib/Customers/getFullName.ts index 2f1550b8..fcb4e3d5 100644 --- a/src/Lib/Customers/getFullName.ts +++ b/src/Lib/Customers/getFullName.ts @@ -1,3 +1,3 @@ -import { ICustomer } from "../../Interfaces/Customer.interface"; +import { ICustomer } from "@interface/Customer.interface"; export default (customer: ICustomer) => `${customer.personal.first_name} ${customer.personal.last_name}${customer.billing.company ? ` (${customer.billing.company})` : ''}`; \ No newline at end of file diff --git a/src/Lib/Generator.ts b/src/Lib/Generator.ts index ad010441..004b33b9 100644 --- a/src/Lib/Generator.ts +++ b/src/Lib/Generator.ts @@ -1,23 +1,23 @@ import crypto from "crypto"; -import { CacheAdmin } from "../Cache/Admin.cache"; -import { CacheCategories } from "../Cache/Categories.cache"; -import { CacheCustomer } from "../Cache/Customer.cache"; -import { CacheImages } from "../Cache/Image.cache"; -import { CacheInvoice } from "../Cache/Invoices.cache"; -import { CacheOrder } from "../Cache/Order.cache"; -import { CacheProduct } from "../Cache/Product.cache"; -import { CacheTransactions } from "../Cache/Transactions.cache"; -import { IAdministrator } from "../Interfaces/Admin/Administrators.interface"; -import { ICategory } from "../Interfaces/Categories.interface"; -import { IConfigurableOptions } from "../Interfaces/ConfigurableOptions.interface"; -import { ICustomer } from "../Interfaces/Customer.interface"; -import { IImage } from "../Interfaces/Images.interface"; -import { IInvoice } from "../Interfaces/Invoice.interface"; -import { IOrder } from "../Interfaces/Orders.interface"; -import { IProduct } from "../Interfaces/Products.interface"; -import { IQuotes } from "../Interfaces/Quotes.interface"; -import { ISubscription } from "../Interfaces/Subscriptions.interface"; -import { ITransactions } from "../Interfaces/Transactions.interface"; +import {CacheAdmin} from "../Cache/Admin.cache"; +import {CacheCategories} from "../Cache/Categories.cache"; +import {CacheCustomer} from "../Cache/Customer.cache"; +import {CacheImages} from "../Cache/Image.cache"; +import {CacheInvoice} from "../Cache/Invoices.cache"; +import {CacheOrder} from "../Cache/Order.cache"; +import {CacheProduct} from "../Cache/Product.cache"; +import {CacheTransactions} from "../Cache/Transactions.cache"; +import {IAdministrator} from "@interface/Admin/Administrators.interface"; +import {ICategory} from "@interface/Categories.interface"; +import {IConfigurableOptions} from "@interface/ConfigurableOptions.interface"; +import {ICustomer} from "@interface/Customer.interface"; +import {IImage} from "@interface/Images.interface"; +import {IInvoice} from "@interface/Invoice.interface"; +import {IOrder} from "@interface/Orders.interface"; +import {IProduct} from "@interface/Products.interface"; +import {IQuotes} from "@interface/Quotes.interface"; +import {ISubscription} from "@interface/Subscriptions.interface"; +import {ITransactions} from "@interface/Transactions.interface"; export function idCustomer(): ICustomer["uid"] { @@ -67,7 +67,7 @@ export function idInvoice(): IInvoice["uid"] return uid; } -export function idTransicitons(): ITransactions["uid"] +export function idTransactions(): ITransactions["uid"] { let uid: ITransactions["uid"] = `TRAN_${crypto.randomBytes(20).toString("hex")}`; while(CacheTransactions.get(uid)) @@ -85,18 +85,15 @@ export function idImages(): IImage["uid"] export function idConfigurableOptions(): IConfigurableOptions["uid"] { - const uid: IConfigurableOptions["uid"] = `CO_${crypto.randomBytes(20).toString("hex")}`; - return uid; + return `CO_${crypto.randomBytes(20).toString("hex")}`; } export function idQuotes(): IQuotes["uid"] { - const uid: IQuotes["uid"] = `QUO_${crypto.randomBytes(20).toString("hex")}`; - return uid; + return `QUO_${crypto.randomBytes(20).toString("hex")}`; } export function idSubscription(): ISubscription["uid"] { - const uid: ISubscription["uid"] = `SUB_${crypto.randomBytes(20).toString("hex")}`; - return uid; + return `SUB_${crypto.randomBytes(20).toString("hex")}`; } \ No newline at end of file diff --git a/src/Lib/Invoices/CreatePDFInvoice.ts b/src/Lib/Invoices/CreatePDFInvoice.ts index 51f8517e..21381a61 100644 --- a/src/Lib/Invoices/CreatePDFInvoice.ts +++ b/src/Lib/Invoices/CreatePDFInvoice.ts @@ -1,5 +1,5 @@ import CustomerModel from "../../Database/Models/Customers/Customer.model"; -import { IInvoice } from "../../Interfaces/Invoice.interface"; +import { IInvoice } from "@interface/Invoice.interface"; import easyinvoice from 'easyinvoice'; import { createSwishQRCode } from "../../Payments/Swish"; import { @@ -156,7 +156,7 @@ export default function createPDFInvoice(invoice: IInvoice): Promise data["images"]["background"] = PDF_Template_Url; //@ts-ignore - easyinvoice.createInvoice(data, (result: { pdf: any; }) => + await easyinvoice.createInvoice(data, (result: { pdf: any; }) => { return resolve(result.pdf); }); diff --git a/src/Lib/Invoices/GetOCRNumber.ts b/src/Lib/Invoices/GetOCRNumber.ts index 8f694828..b264dcae 100644 --- a/src/Lib/Invoices/GetOCRNumber.ts +++ b/src/Lib/Invoices/GetOCRNumber.ts @@ -1,4 +1,4 @@ -import { IInvoice } from "../../Interfaces/Invoice.interface"; +import { IInvoice } from "@interface/Invoice.interface"; /** * @description diff --git a/src/Lib/Invoices/MarkAsPaid.ts b/src/Lib/Invoices/MarkAsPaid.ts index a6c1761f..3976af84 100644 --- a/src/Lib/Invoices/MarkAsPaid.ts +++ b/src/Lib/Invoices/MarkAsPaid.ts @@ -1,5 +1,5 @@ import InvoiceModel from "../../Database/Models/Invoices.model"; -import { IInvoice } from "../../Interfaces/Invoice.interface"; +import { IInvoice } from "@interface/Invoice.interface"; import { Document } from "mongoose"; import mainEvent from "../../Events/Main.event"; diff --git a/src/Lib/Invoices/SendEmail.ts b/src/Lib/Invoices/SendEmail.ts index 033b2491..378db632 100644 --- a/src/Lib/Invoices/SendEmail.ts +++ b/src/Lib/Invoices/SendEmail.ts @@ -1,7 +1,7 @@ import { Document } from "mongoose"; import { Company_Name } from "../../Config"; -import { ICustomer } from "../../Interfaces/Customer.interface"; -import { IInvoice, IInvoiceMethods } from "../../Interfaces/Invoice.interface"; +import { ICustomer } from "@interface/Customer.interface"; +import { IInvoice, IInvoiceMethods } from "@interface/Invoice.interface"; import createPDFInvoice from "./CreatePDFInvoice"; import {SendEmail} from "../../Email/Send" import mainEvent from "../../Events/Main.event"; @@ -17,7 +17,7 @@ export async function sendInvoiceEmail(invoice: IInvoice & Document & IInvoiceMe return; //@ts-ignore - SendEmail(Customer.personal.email, `Invoice from ${await Company_Name() !== "" ? await Company_Name() : "CPG"} #${invoice.id}`, { + await SendEmail(Customer.personal.email, `Invoice from ${await Company_Name() !== "" ? await Company_Name() : "CPG"} #${invoice.id}`, { isHTML: true, attachments: [ { @@ -52,7 +52,7 @@ export async function sendLateInvoiceEmail(invoice: IInvoice & Document & IInvoi return; //@ts-ignore - SendEmail(Customer.personal.email, `Invoice reminder | ${await Company_Name() ?? "CPG"} #${invoice.id}`, { + await SendEmail(Customer.personal.email, `Invoice reminder | ${await Company_Name() ?? "CPG"} #${invoice.id}`, { isHTML: true, attachments: [ { @@ -64,7 +64,7 @@ export async function sendLateInvoiceEmail(invoice: IInvoice & Document & IInvoi body: await LateinvoiceTemplate(invoice, Customer) }, (err: any, sent: any) => { - if(!err && sent) + if (!err && sent) { invoice.notified = true; invoice.status = "payment_pending"; diff --git a/src/Lib/Logger.ts b/src/Lib/Logger.ts index e751f105..ee117616 100644 --- a/src/Lib/Logger.ts +++ b/src/Lib/Logger.ts @@ -105,16 +105,16 @@ const Logger = { console.log(time + " | " + colors.rainbow(`rainbow: `), ...body) }, - verbos: (...body: T) => + verbose: (...body: T) => { const time = getTime(); SaveLog(time, ...body); mainEvent.emit("logging", { message: body.join(" "), - type: "verbos", + type: "verbose", time: time, }); - console.log(time + " | " + colors.magenta(`verbos: `), ...body) + console.log(time + " | " + colors.magenta(`verbose: `), ...body) }, error: (...body: T) => diff --git a/src/Lib/Orders/PlaceOrder.ts b/src/Lib/Orders/PlaceOrder.ts index 04057f9c..8f09cdc5 100644 --- a/src/Lib/Orders/PlaceOrder.ts +++ b/src/Lib/Orders/PlaceOrder.ts @@ -1,8 +1,8 @@ import { NextFunction, Request, Response } from "express"; import { Full_Domain, Paypal_Client_Id, Paypal_Client_Secret, Swish_Payee_Number } from "../../Config"; -import { IInvoice } from "../../Interfaces/Invoice.interface"; -import { IOrder } from "../../Interfaces/Orders.interface"; -import { IPayments } from "../../Interfaces/Payments.interface"; +import { IInvoice } from "@interface/Invoice.interface"; +import { IOrder } from "@interface/Orders.interface"; +import { IPayments } from "@interface/Payments.interface"; import { createSwishQRCode } from "../../Payments/Swish"; import { APISuccess } from "../Response"; diff --git a/src/Lib/Orders/newInvoice.ts b/src/Lib/Orders/newInvoice.ts index 6dc69934..f91ef081 100644 --- a/src/Lib/Orders/newInvoice.ts +++ b/src/Lib/Orders/newInvoice.ts @@ -1,15 +1,15 @@ import InvoiceModel from "../../Database/Models/Invoices.model"; import ProductModel from "../../Database/Models/Products.model"; -import { IInvoice_Dates } from "../../Interfaces/Invoice.interface"; -import { IOrder } from "../../Interfaces/Orders.interface"; +import { IInvoice_Dates } from "@interface/Invoice.interface"; +import { IOrder } from "@interface/Orders.interface"; import { idInvoice } from "../Generator"; import dateFormat from "date-and-time"; import getCategoryByProduct from "../Products/getCategoryByProduct"; -import { IProduct } from "../../Interfaces/Products.interface"; +import { IProduct } from "@interface/Products.interface"; import ConfigurableOptionsModel from "../../Database/Models/ConfigurableOptions.model"; -import { IConfigurableOptions } from "../../Interfaces/ConfigurableOptions.interface"; +import { IConfigurableOptions } from "@interface/ConfigurableOptions.interface"; import mainEvent from "../../Events/Main.event"; -import { IPromotionsCodes } from "../../Interfaces/PromotionsCodes.interface"; +import { IPromotionsCodes } from "@interface/PromotionsCodes.interface"; import { Document } from "mongoose"; import Logger from "../Logger"; import PromotionCodeModel from "../../Database/Models/PromotionsCode.model"; @@ -113,20 +113,19 @@ export async function createInvoiceFromOrder(order: IOrder) export async function getNewPriceOfPromotionCode(code: IPromotionsCodes & Document, product: IProduct) { - if(code.valid_to !== "permament") + if(code.valid_to !== "permanent") // Convert string to date if(new Date(code.valid_to) < new Date()) { Logger.debug(`Promotion code ${code.name} got invalid valid date`); return product; } - - if(typeof code.valid_to === "string") - if(code.uses <= 0) - { - Logger.warning(`Promotion code ${code.name} has no uses left`); - return product; - } + + if (code.uses <= 0) + { + Logger.warning(`Promotion code ${code.name} has no uses left`); + return product; + } Logger.info(`Promotion code ${code.name} (${code.id}) is valid`); @@ -137,7 +136,7 @@ export async function getNewPriceOfPromotionCode(code: IPromotionsCodes & Docume { Logger.info(`Promotion code ${code.name} (${code.id}) is valid for product ${product.id}`); const o_price = product.price; - if(code.procentage) + if(code.percentage) product.price = product.price+(product.price*code.discount); else product.price = product.price-code.discount; @@ -169,9 +168,11 @@ export async function getPriceFromOrder(order: IOrder, product?: IProduct[]) export async function getProductsByOrder(order: IOrder) { - return await ProductModel.find({ id: { - $in: [...order.products.map(product => product.product_id)] - } }); + return ProductModel.find({ + id: { + $in: [...order.products.map(product => product.product_id)] + } + }); } export function createMapProductsFromOrder(order: IOrder) diff --git a/src/Lib/Products/getCategoryByProduct.ts b/src/Lib/Products/getCategoryByProduct.ts index b071de87..28c2b2eb 100644 --- a/src/Lib/Products/getCategoryByProduct.ts +++ b/src/Lib/Products/getCategoryByProduct.ts @@ -1,7 +1,7 @@ import CategoryModel from "../../Database/Models/Category.model"; -import { IProduct } from "../../Interfaces/Products.interface"; +import { IProduct } from "@interface/Products.interface"; export default async (product: IProduct) => { - return await CategoryModel.findOne({ id: product.category_uid }); + return CategoryModel.findOne({ id: product.category_uid }); } \ No newline at end of file diff --git a/src/Lib/Quotes/CreateQuotePdf.ts b/src/Lib/Quotes/CreateQuotePdf.ts index a591e5f5..51d36db8 100644 --- a/src/Lib/Quotes/CreateQuotePdf.ts +++ b/src/Lib/Quotes/CreateQuotePdf.ts @@ -11,7 +11,7 @@ import { Company_Tax_Registered, Company_Currency } from "../../Config"; -import { IQuotes } from "../../Interfaces/Quotes.interface"; +import { IQuotes } from "@interface/Quotes.interface"; import GetText from "../../Translation/GetText"; export default function createQuotePdf(quote: IQuotes): Promise @@ -93,7 +93,7 @@ export default function createQuotePdf(quote: IQuotes): Promise data["images"]["background"] = PDF_Template_Url; //@ts-ignore - easyinvoice.createInvoice(data, (result: { pdf: any; }) => + await easyinvoice.createInvoice(data, (result: { pdf: any; }) => { return resolve(result.pdf); }); diff --git a/src/Lib/Subscriptions/PlaceSubscription.ts b/src/Lib/Subscriptions/PlaceSubscription.ts index 3c2ed0e7..bbbb76d9 100644 --- a/src/Lib/Subscriptions/PlaceSubscription.ts +++ b/src/Lib/Subscriptions/PlaceSubscription.ts @@ -1,7 +1,7 @@ import { NextFunction, Response, Request } from "express"; import { Full_Domain, Paypal_Client_Id, Paypal_Client_Secret } from "../../Config"; -import { IPayments } from "../../Interfaces/Payments.interface"; -import { ISubscription } from "../../Interfaces/Subscriptions.interface"; +import { IPayments } from "@interface/Payments.interface"; +import { ISubscription } from "@interface/Subscriptions.interface"; import { APISuccess } from "../Response"; export const ce_subscription = new Map return intent; }; -export const RetrivePaymentIntent = async (payment_intent: string) => (await Stripe.paymentIntents.retrieve(payment_intent)); +export const RetrievePaymentIntent = async (payment_intent: string) => (await Stripe.paymentIntents.retrieve(payment_intent)); export const createSetupIntent = async (id: ICustomer["id"]) => { @@ -148,7 +148,7 @@ export const createSetupIntent = async (id: ICustomer["id"]) => return setupIntent; }; -export const RetriveSetupIntent = async (setup_intent: string) => (await Stripe.setupIntents.retrieve(setup_intent)); +export const RetrieveSetupIntent = async (setup_intent: string) => (await Stripe.setupIntents.retrieve(setup_intent)); export const ChargeCustomer = async (invoice_id: IInvoice["id"]) => { @@ -199,7 +199,7 @@ export const ChargeCustomer = async (invoice_id: IInvoice["id"]) => customer_uid: invoice.customer_uid, currency: invoice.currency ?? await Company_Currency(), date: getDate(), - uid: idTransicitons(), + uid: idTransactions(), }).save()); // await sendEmail(customer.personal.email, "Transaction Statement", { @@ -208,7 +208,7 @@ export const ChargeCustomer = async (invoice_id: IInvoice["id"]) => // }); await sendEmail({ - reciever: customer.personal.email, + receiver: customer.personal.email, subject: "Transaction Statement", body: { body: await NewTransactionTemplate(newTrans, customer, true) @@ -226,7 +226,7 @@ export const ChargeCustomer = async (invoice_id: IInvoice["id"]) => } catch(e) { - Promise.reject(e); + await Promise.reject(e); } } @@ -242,7 +242,7 @@ export const markInvoicePaid = async (intent: stripe.Response= 3) { - SendEmail(customer.personal.email, "Account login attempts", { + await SendEmail(customer.personal.email, "Account login attempts", { isHTML: true, body: await LoginAttemptTemplate(customer), }); diff --git a/src/Server/Routes/v2/Customers/Customers.controller.ts b/src/Server/Routes/v2/Customers/Customers.controller.ts index 41a981f0..6d5a13ac 100644 --- a/src/Server/Routes/v2/Customers/Customers.controller.ts +++ b/src/Server/Routes/v2/Customers/Customers.controller.ts @@ -1,17 +1,17 @@ -import { Request, Response } from "express"; +import {Request, Response} from "express"; import bcrypt from "bcryptjs"; import CustomerModel from "../../../../Database/Models/Customers/Customer.model"; -import { ICustomer } from "../../../../Interfaces/Customer.interface"; -import { idCustomer } from "../../../../Lib/Generator"; -import { APIError, APISuccess } from "../../../../Lib/Response"; +import {ICustomer} from "@interface/Customer.interface"; +import {idCustomer} from "../../../../Lib/Generator"; +import {APIError, APISuccess} from "../../../../Lib/Response"; import BaseModelAPI from "../../../../Models/BaseModelAPI"; import Logger from "../../../../Lib/Logger"; -import { SendEmail } from "../../../../Email/Send"; -import { Company_Currency, Company_Name } from "../../../../Config"; +import {SendEmail} from "../../../../Email/Send"; +import {Company_Currency, Company_Name} from "../../../../Config"; import mainEvent from "../../../../Events/Main.event"; -import { sanitizeMongoose } from "../../../../Lib/Sanitize"; +import {sanitizeMongoose} from "../../../../Lib/Sanitize"; import WelcomeTemplate from "../../../../Email/Templates/Customer/Welcome.template"; -import { currencyCodes, TPaymentCurrency } from "../../../../Types/PaymentTypes"; +import {currencyCodes, TPaymentCurrency} from "../../../../Types/PaymentTypes"; const API = new BaseModelAPI(idCustomer, CustomerModel); @@ -36,8 +36,7 @@ function insert(req: Request, res: Response) if(!req.body.currency) { - const currency = await Company_Currency(); - req.body.currency = currency; + req.body.currency = await Company_Currency(); } // Check if our currency is valid @@ -45,10 +44,9 @@ function insert(req: Request, res: Response) const validCurrency = (currency: string) => { currency = currency.toUpperCase(); - if(currencyCodes.includes(currency as TPaymentCurrency)) - return true; + return currencyCodes.includes(currency as TPaymentCurrency); + - return false; } if(!validCurrency(req.body.currency)) @@ -61,7 +59,7 @@ function insert(req: Request, res: Response) mainEvent.emit("customer_created", result); // Send email to customer - SendEmail(result.personal.email, `Welcome to ${await Company_Name()}`, { + await SendEmail(result.personal.email, `Welcome to ${await Company_Name()}`, { isHTML: true, body: await WelcomeTemplate(result), }); @@ -99,8 +97,7 @@ async function patch(req: Request, res: Response) if(Customer?.password !== req.body.password) { const salt = await bcrypt.genSalt(10) - const hash = await bcrypt.hash(req.body.password ?? "123qwe123", salt); - req.body.password = hash; + req.body.password = await bcrypt.hash(req.body.password ?? "123qwe123", salt); } } API.findAndPatch((req.params.uid as ICustomer["uid"]), req.body).then((result) => diff --git a/src/Server/Routes/v2/Images/Images.config.ts b/src/Server/Routes/v2/Images/Images.config.ts index bfe1a026..503df9df 100644 --- a/src/Server/Routes/v2/Images/Images.config.ts +++ b/src/Server/Routes/v2/Images/Images.config.ts @@ -3,7 +3,7 @@ import Logger from "../../../../Lib/Logger"; import { APIError, APISuccess } from "../../../../Lib/Response"; import EnsureAdmin from "../../../../Middlewares/EnsureAdmin"; import { CacheImages } from "../../../../Cache/Image.cache"; -import { IImage } from "../../../../Interfaces/Images.interface"; +import { IImage } from "@interface/Images.interface"; import { UploadedFile } from "express-fileupload"; import { idImages } from "../../../../Lib/Generator"; import ImageModel from "../../../../Database/Models/Images.model"; @@ -56,12 +56,14 @@ export = class ImagesRouter if(!data) return APIError(`Unable to find image by id ${id}`)(res); - const binstr = Array.prototype.map.call(data.data, function (ch) + const binaryString = Array.prototype.map.call(data.data, function (ch) { return String.fromCharCode(ch); }).join(''); - const d = btoa(binstr); + //const d = btoa(binaryString); + const d = Buffer.from(binaryString, "binary").toString("base64"); + return APISuccess({ data: d, @@ -129,7 +131,7 @@ export = class ImagesRouter CacheImages.delete(id); - APISuccess(`Succesfully delete image`)(res); + APISuccess(`Successfully deleted image`)(res); }); } } \ No newline at end of file diff --git a/src/Server/Routes/v2/Invoices/Invoices.controller.ts b/src/Server/Routes/v2/Invoices/Invoices.controller.ts index c51c782f..0594c0a8 100644 --- a/src/Server/Routes/v2/Invoices/Invoices.controller.ts +++ b/src/Server/Routes/v2/Invoices/Invoices.controller.ts @@ -1,7 +1,7 @@ import { Request, Response } from "express"; import InvoiceModel from "../../../../Database/Models/Invoices.model"; import mainEvent from "../../../../Events/Main.event"; -import { IInvoice } from "../../../../Interfaces/Invoice.interface"; +import { IInvoice } from "@interface/Invoice.interface"; import { idInvoice } from "../../../../Lib/Generator"; import { APIError, APISuccess } from "../../../../Lib/Response"; import BaseModelAPI from "../../../../Models/BaseModelAPI"; diff --git a/src/Server/Routes/v2/Orders/Orders.config.ts b/src/Server/Routes/v2/Orders/Orders.config.ts index 28c4f123..cd9a5f65 100644 --- a/src/Server/Routes/v2/Orders/Orders.config.ts +++ b/src/Server/Routes/v2/Orders/Orders.config.ts @@ -2,8 +2,8 @@ import { Application, Router } from "express"; import CustomerModel from "../../../../Database/Models/Customers/Customer.model"; import OrderModel from "../../../../Database/Models/Orders.model"; import ProductModel from "../../../../Database/Models/Products.model"; -import { IPayments } from "../../../../Interfaces/Payments.interface"; -import { IProduct } from "../../../../Interfaces/Products.interface"; +import { IPayments } from "@interface/Payments.interface"; +import { IProduct } from "@interface/Products.interface"; import { APIError, APISuccess } from "../../../../Lib/Response"; import EnsureAdmin from "../../../../Middlewares/EnsureAdmin"; import OrderController from "./Orders.controller"; @@ -14,11 +14,11 @@ import { idOrder } from "../../../../Lib/Generator"; import { Company_Currency, Company_Name } from "../../../../Config"; import { sendInvoiceEmail } from "../../../../Lib/Invoices/SendEmail"; import EnsureAuth from "../../../../Middlewares/EnsureAuth"; -import { IOrder } from "../../../../Interfaces/Orders.interface"; -import { ICustomer } from "../../../../Interfaces/Customer.interface"; +import { IOrder } from "@interface/Orders.interface"; +import { ICustomer } from "@interface/Customer.interface"; import { SendEmail } from "../../../../Email/Send"; import NewOrderCreated from "../../../../Email/Templates/Orders/NewOrderCreated"; -import { IConfigurableOptions } from "../../../../Interfaces/ConfigurableOptions.interface"; +import { IConfigurableOptions } from "@interface/ConfigurableOptions.interface"; import mainEvent from "../../../../Events/Main.event"; import PromotionCodeModel from "../../../../Database/Models/PromotionsCode.model"; import Logger from "../../../../Lib/Logger"; @@ -64,9 +64,9 @@ async function createOrder(customer: ICustomer, products: Array<{ mainEvent.emit("order_created", order); - SendEmail(customer.personal.email, `New order from ${await Company_Name() !== "" ? await Company_Name() : "CPG"} #${order.id}`, { + await SendEmail(customer.personal.email, `New order from ${await Company_Name() !== "" ? await Company_Name() : "CPG"} #${order.id}`, { isHTML: true, - body: await NewOrderCreated(order, customer), + body: await NewOrderCreated(order, customer), }); } @@ -206,7 +206,7 @@ export = class OrderRoute // Create new orders if(recurring_monthly.length > 0) - createOrder(customer, recurring_monthly.map(p => + await createOrder(customer, recurring_monthly.map(p => { return products.find(p2 => p2.product_id == p.id) ?? { product_id: p.id, @@ -215,7 +215,7 @@ export = class OrderRoute }), recurring_monthly, payment_method, "recurring", _order_.currency, "monthly"); if(recurring_quarterly.length > 0) - createOrder(customer, recurring_quarterly.map(p => + await createOrder(customer, recurring_quarterly.map(p => { return products.find(p2 => p2.product_id == p.id) ?? { product_id: p.id, @@ -224,7 +224,7 @@ export = class OrderRoute }), recurring_quarterly, payment_method, "recurring", _order_.currency, "quarterly"); if(recurring_semi_annually.length > 0) - createOrder(customer, recurring_semi_annually.map(p => + await createOrder(customer, recurring_semi_annually.map(p => { return products.find(p2 => p2.product_id == p.id) ?? { product_id: p.id, @@ -233,7 +233,7 @@ export = class OrderRoute }), recurring_semi_annually, payment_method, "recurring", _order_.currency, "semi_annually"); if(recurring_biennially.length > 0) - createOrder(customer, recurring_biennially.map(p => + await createOrder(customer, recurring_biennially.map(p => { return products.find(p2 => p2.product_id == p.id) ?? { product_id: p.id, @@ -242,7 +242,7 @@ export = class OrderRoute }), recurring_biennially, payment_method, "recurring", _order_.currency, "biennially"); if(recurring_triennially.length > 0) - createOrder(customer, recurring_triennially.map(p => + await createOrder(customer, recurring_triennially.map(p => { return products.find(p2 => p2.product_id == p.id) ?? { product_id: p.id, @@ -251,7 +251,7 @@ export = class OrderRoute }), recurring_triennially, payment_method, "recurring", _order_.currency, "triennially"); if(one_timers.length > 0) - createOrder(customer, one_timers.map(p => + await createOrder(customer, one_timers.map(p => { return products.find(p2 => p2.product_id == p.id) ?? { product_id: p.id, @@ -260,7 +260,7 @@ export = class OrderRoute }), one_timers, payment_method, "one_time", _order_.currency); if(recurring_yearly.length > 0) - createOrder(customer, recurring_yearly.map(p => + await createOrder(customer, recurring_yearly.map(p => { return products.find(p2 => p2.product_id == p.id) ?? { product_id: p.id, diff --git a/src/Server/Routes/v2/Orders/Orders.controller.ts b/src/Server/Routes/v2/Orders/Orders.controller.ts index 200226d9..e455d0b1 100644 --- a/src/Server/Routes/v2/Orders/Orders.controller.ts +++ b/src/Server/Routes/v2/Orders/Orders.controller.ts @@ -1,16 +1,16 @@ -import { Request, Response } from "express"; +import {Request, Response} from "express"; import dateFormat from "date-and-time"; import OrderModel from "../../../../Database/Models/Orders.model"; -import { IOrder } from "../../../../Interfaces/Orders.interface"; +import {IOrder} from "@interface/Orders.interface"; import nextRycleDate from "../../../../Lib/Dates/DateCycle"; -import { idOrder } from "../../../../Lib/Generator"; -import { APISuccess } from "../../../../Lib/Response"; +import {idOrder} from "../../../../Lib/Generator"; +import {APISuccess} from "../../../../Lib/Response"; import BaseModelAPI from "../../../../Models/BaseModelAPI"; -import { createInvoiceFromOrder } from "../../../../Lib/Orders/newInvoice"; -import { SendEmail } from "../../../../Email/Send"; +import {createInvoiceFromOrder} from "../../../../Lib/Orders/newInvoice"; +import {SendEmail} from "../../../../Email/Send"; import CustomerModel from "../../../../Database/Models/Customers/Customer.model"; import NewOrderCreated from "../../../../Email/Templates/Orders/NewOrderCreated"; -import { Company_Name } from "../../../../Config"; +import {Company_Name} from "../../../../Config"; import mainEvent from "../../../../Events/Main.event"; const API = new BaseModelAPI(idOrder, OrderModel); @@ -22,13 +22,11 @@ async function insert(req: Request, res: Response) const b_recurring = billing_type === "recurring"; const billing_cycle = req.body.billing_cycle as IOrder["billing_cycle"] ?? "monthly"; - const dates = { + req.body.dates = { createdAt: new Date(), last_recycle: b_recurring ? dateFormat.format(new Date(), "YYYY-MM-DD") : undefined, next_recycle: b_recurring ? dateFormat.format(nextRycleDate(new Date(), billing_cycle), "YYYY-MM-DD") : undefined, - } - - req.body.dates = dates; + }; const newInvoice = await createInvoiceFromOrder(req.body as IOrder); @@ -43,9 +41,9 @@ async function insert(req: Request, res: Response) const customer = await CustomerModel.findOne({ id: result.customer_uid }); if(customer) - SendEmail(customer.personal.email, `New order from ${await Company_Name() !== "" ? await Company_Name() : "CPG"} #${result.id}`, { + await SendEmail(customer.personal.email, `New order from ${await Company_Name() !== "" ? await Company_Name() : "CPG"} #${result.id}`, { isHTML: true, - body: NewOrderCreated(result, customer), + body: NewOrderCreated(result, customer), }); APISuccess({ diff --git a/src/Server/Routes/v2/Paypal/Paypal.config.ts b/src/Server/Routes/v2/Paypal/Paypal.config.ts index c70ac315..51963932 100644 --- a/src/Server/Routes/v2/Paypal/Paypal.config.ts +++ b/src/Server/Routes/v2/Paypal/Paypal.config.ts @@ -1,7 +1,7 @@ import { Application, Router } from "express"; import { Company_Website } from "../../../../Config"; import InvoiceModel from "../../../../Database/Models/Invoices.model"; -import { IInvoice } from "../../../../Interfaces/Invoice.interface"; +import { IInvoice } from "@interface/Invoice.interface"; import { createPaypalPaymentFromInvoice, retrievePaypalTransaction } from "../../../../Payments/Paypal"; export = class PaypalRouter @@ -43,7 +43,7 @@ export = class PaypalRouter if(!payerId || !paymentId) return res.redirect(await Company_Website()); - retrievePaypalTransaction(payerId, paymentId); + await retrievePaypalTransaction(payerId, paymentId); res.send(` diff --git a/src/Server/Routes/v2/Products/Products.config.ts b/src/Server/Routes/v2/Products/Products.config.ts index 76697e1c..ab76e785 100644 --- a/src/Server/Routes/v2/Products/Products.config.ts +++ b/src/Server/Routes/v2/Products/Products.config.ts @@ -1,7 +1,7 @@ import { Application, Router } from "express"; import ConfigurableOptionsModel from "../../../../Database/Models/ConfigurableOptions.model"; import ProductModel from "../../../../Database/Models/Products.model"; -import { IProduct } from "../../../../Interfaces/Products.interface"; +import { IProduct } from "@interface/Products.interface"; import AW from "../../../../Lib/AW"; import { APIError, APISuccess } from "../../../../Lib/Response"; import EnsureAdmin from "../../../../Middlewares/EnsureAdmin"; diff --git a/src/Server/Routes/v2/Products/Products.controller.ts b/src/Server/Routes/v2/Products/Products.controller.ts index 1b926f7e..c09463a2 100644 --- a/src/Server/Routes/v2/Products/Products.controller.ts +++ b/src/Server/Routes/v2/Products/Products.controller.ts @@ -1,7 +1,7 @@ import { Request, Response } from "express"; import ProductModel from "../../../../Database/Models/Products.model"; import mainEvent from "../../../../Events/Main.event"; -import { IProduct } from "../../../../Interfaces/Products.interface"; +import { IProduct } from "@interface/Products.interface"; import { idProduct } from "../../../../Lib/Generator"; import { APISuccess } from "../../../../Lib/Response"; import BaseModelAPI from "../../../../Models/BaseModelAPI"; diff --git a/src/Server/Routes/v2/PromotionsCodes/PromotionCode.config.ts b/src/Server/Routes/v2/PromotionsCodes/PromotionCode.config.ts index bfc7902c..50136b04 100644 --- a/src/Server/Routes/v2/PromotionsCodes/PromotionCode.config.ts +++ b/src/Server/Routes/v2/PromotionsCodes/PromotionCode.config.ts @@ -45,7 +45,7 @@ export = class PromotionCodeRoute return APIError(`Promotion code ${name} not found`, 404)(res); // Check if code is valid - if(code.valid_to !== "permament") + if(code.valid_to !== "permanent") // Convert string to date if(new Date(code.valid_to) < new Date()) { @@ -86,10 +86,10 @@ export = class PromotionCodeRoute { Logger.info(`Promotion code ${code.name} (${code.id}) is valid for product ${product.id}`); const o_price = product.price; - if(code.procentage) + if(code.discount > 0) product.price = product.price+(product.price*code.discount); else - product.price = product.price-code.discount; + product.price = product.price - code.discount; Logger.info(`New price of product ${product.id} is ${product.price}, old price was ${o_price}`); // Check if we are - on price diff --git a/src/Server/Routes/v2/PromotionsCodes/PromotionCode.controller.ts b/src/Server/Routes/v2/PromotionsCodes/PromotionCode.controller.ts index 7a44236a..39397923 100644 --- a/src/Server/Routes/v2/PromotionsCodes/PromotionCode.controller.ts +++ b/src/Server/Routes/v2/PromotionsCodes/PromotionCode.controller.ts @@ -1,7 +1,7 @@ import { Request, Response } from "express"; import PromotionCodeModel from "../../../../Database/Models/PromotionsCode.model"; // import mainEvent from "../../../../Events/Main.event"; -import { IPromotionsCodes } from "../../../../Interfaces/PromotionsCodes.interface"; +import { IPromotionsCodes } from "@interface/PromotionsCodes.interface"; import { idCategory } from "../../../../Lib/Generator"; import { APISuccess } from "../../../../Lib/Response"; import BaseModelAPI from "../../../../Models/BaseModelAPI"; diff --git a/src/Server/Routes/v2/Quotes/Quotes.controller.ts b/src/Server/Routes/v2/Quotes/Quotes.controller.ts index ebefea28..5c1e1e0f 100644 --- a/src/Server/Routes/v2/Quotes/Quotes.controller.ts +++ b/src/Server/Routes/v2/Quotes/Quotes.controller.ts @@ -4,7 +4,7 @@ import CustomerModel from "../../../../Database/Models/Customers/Customer.model" import QuotesModel from "../../../../Database/Models/Quotes.model"; import { SendEmail } from "../../../../Email/Send"; import mainEvent from "../../../../Events/Main.event"; -import { IQuotes } from "../../../../Interfaces/Quotes.interface"; +import { IQuotes } from "@interface/Quotes.interface"; import getFullName from "../../../../Lib/Customers/getFullName"; import { idQuotes } from "../../../../Lib/Generator"; import { APISuccess } from "../../../../Lib/Response"; @@ -30,7 +30,7 @@ function insert(req: Request, res: Response) if(Customer) { // Send email to customer. - SendEmail(Customer.personal.email, `Quote from ${await Company_Name() === "" ? "CPG" : await Company_Name()}`, { + await SendEmail(Customer.personal.email, `Quote from ${await Company_Name() === "" ? "CPG" : await Company_Name()}`, { isHTML: true, body: `

Quote

diff --git a/src/Server/Routes/v2/Stripe/Stripe.config.ts b/src/Server/Routes/v2/Stripe/Stripe.config.ts index a43b3636..970da2fe 100644 --- a/src/Server/Routes/v2/Stripe/Stripe.config.ts +++ b/src/Server/Routes/v2/Stripe/Stripe.config.ts @@ -7,11 +7,11 @@ import { } from "../../../../Config"; import InvoiceModel from "../../../../Database/Models/Invoices.model"; import { APIError } from "../../../../Lib/Response"; -import stripe from "stripe"; -import { CreatePaymentIntent, createSetupIntent, markInvoicePaid, RetrivePaymentIntent, RetriveSetupIntent } from "../../../../Payments/Stripe"; +import Stripe from "stripe"; +import { CreatePaymentIntent, createSetupIntent, RetrievePaymentIntent, RetrieveSetupIntent } from "../../../../Payments/Stripe"; import CustomerModel from "../../../../Database/Models/Customers/Customer.model"; import stripeWebhookEvent from "../../../../Events/Stripe.event"; -const Stripe = new stripe(DebugMode ? Stripe_SK_Test : Stripe_SK_Live, { +const stripe = new Stripe(DebugMode ? Stripe_SK_Test : Stripe_SK_Live, { apiVersion: "2020-08-27", }); @@ -45,7 +45,7 @@ export = class StripeRouter res.send(` Checkout | ${invoice.id} - + +