summaryrefslogtreecommitdiff
path: root/src/pages/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/pages/api')
-rw-r--r--src/pages/api/activation-request.js31
-rw-r--r--src/pages/api/activation.js16
-rw-r--r--src/pages/api/login.js15
-rw-r--r--src/pages/api/register.js15
-rw-r--r--src/pages/api/shop/search.js80
-rw-r--r--src/pages/api/shop/suggest.js9
-rw-r--r--src/pages/api/token.js10
7 files changed, 47 insertions, 129 deletions
diff --git a/src/pages/api/activation-request.js b/src/pages/api/activation-request.js
deleted file mode 100644
index 3f33875c..00000000
--- a/src/pages/api/activation-request.js
+++ /dev/null
@@ -1,31 +0,0 @@
-import apiOdoo from "@/core/utils/apiOdoo";
-import mailer from "@/core/utils/mailer";
-
-export default async function handler(req, res) {
- try {
- const { email } = req.body;
- let result = await apiOdoo(
- 'POST',
- '/api/v1/user/activation-request',
- {email}
- );
- if (result.activation_request) {
- mailer.sendMail({
- from: 'sales@indoteknik.com',
- to: result.user.email,
- subject: 'Permintaan Aktivasi Akun Indoteknik',
- html: `
- <h1>Permintaan Aktivasi Akun Indoteknik</h1>
- <br>
- <p>Aktivasi akun anda melalui link berikut: <a href="${process.env.SELF_HOST}/activate?token=${result.token}">Aktivasi Akun</a></p>
- `
- });
- }
- delete result.user;
- delete result.token;
- res.status(200).json(result);
- } catch (error) {
- console.log(error);
- res.status(400).json({ error: error.message });
- }
-} \ No newline at end of file
diff --git a/src/pages/api/activation.js b/src/pages/api/activation.js
deleted file mode 100644
index 8b22af8d..00000000
--- a/src/pages/api/activation.js
+++ /dev/null
@@ -1,16 +0,0 @@
-import apiOdoo from "@/core/utils/apiOdoo";
-
-export default async function handler(req, res) {
- try {
- const { token } = req.body;
- let result = await apiOdoo(
- 'POST',
- '/api/v1/user/activation',
- {token}
- );
- res.status(200).json(result);
- } catch (error) {
- console.log(error);
- res.status(400).json({ error: error.message });
- }
-} \ No newline at end of file
diff --git a/src/pages/api/login.js b/src/pages/api/login.js
deleted file mode 100644
index e02a73cb..00000000
--- a/src/pages/api/login.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import apiOdoo from "@/core/utils/apiOdoo";
-
-export default async function handler(req, res) {
- try {
- const { email, password } = req.body;
- let result = await apiOdoo(
- 'POST',
- '/api/v1/user/login',
- {email, password}
- );
- res.status(200).json(result);
- } catch (error) {
- res.status(400).json({ error: error.message });
- }
-} \ No newline at end of file
diff --git a/src/pages/api/register.js b/src/pages/api/register.js
deleted file mode 100644
index 7c8d8b39..00000000
--- a/src/pages/api/register.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import apiOdoo from "@/core/utils/apiOdoo";
-
-export default async function handler(req, res) {
- try {
- const { email, name, password } = req.body;
- let result = await apiOdoo(
- 'POST',
- '/api/v1/user/register',
- {email, name, password}
- );
- res.status(200).json(result);
- } catch (error) {
- res.status(400).json({ error: error.message });
- }
-} \ No newline at end of file
diff --git a/src/pages/api/shop/search.js b/src/pages/api/shop/search.js
index ad986c86..5e5f1b6a 100644
--- a/src/pages/api/shop/search.js
+++ b/src/pages/api/shop/search.js
@@ -1,4 +1,5 @@
-import axios from "axios";
+import axios from "axios"
+import camelcaseObjectDeep from "camelcase-object-deep"
const productResponseMap = (products) => {
return products.map((product) => {
@@ -7,23 +8,23 @@ const productResponseMap = (products) => {
image: product.image ? product.image[0] : '',
code: product.default_code ? product.default_code[0] : '',
name: product.product_name ? product.product_name[0] : '',
- lowest_price: {
+ lowestPrice: {
price: product.price ? product.price[0] : 0,
- price_discount: product.price_discount ? product.price_discount[0] : 0,
- discount_percentage: product.discount ? product.discount[0] : 0,
+ priceDiscount: product.price_discount ? product.price_discount[0] : 0,
+ discountPercentage: product.discount ? product.discount[0] : 0,
},
- variant_total: product.variant_total ? product.variant_total[0] : 0,
- stock_total: product.stock_total ? product.stock_total[0] : 0,
+ variantTotal: product.variant_total ? product.variant_total[0] : 0,
+ stockTotal: product.stock_total ? product.stock_total[0] : 0,
weight: product.weight ? product.weight[0] : 0,
manufacture: {},
categories: [],
- };
+ }
if (product.manufacture_id && product.brand) {
productMapped.manufacture = {
id: product.manufacture_id ? product.manufacture_id[0] : '',
name: product.brand ? product.brand[0] : '',
- };
+ }
}
productMapped.categories = [
@@ -31,41 +32,41 @@ const productResponseMap = (products) => {
id: product.category_id ? product.category_id[0] : '',
name: product.category_name ? product.category_name[0] : '',
}
- ];
+ ]
- return productMapped;
- });
+ return productMapped
+ })
}
export default async function handler(req, res) {
const {
- q,
+ q = '*',
page = 1,
brand = '',
category = '',
- price_from = 0,
- price_to = 0,
- order_by = ''
- } = req.query;
+ priceFrom = 0,
+ priceTo = 0,
+ orderBy = ''
+ } = req.query
- let paramOrderBy = '';
- switch (order_by) {
+ let paramOrderBy = ''
+ switch (orderBy) {
case 'price-asc':
- paramOrderBy = ', price_discount ASC';
- break;
+ paramOrderBy = ', price_discount ASC'
+ break
case 'price-desc':
- paramOrderBy = ', price_discount DESC';
- break;
+ paramOrderBy = ', price_discount DESC'
+ break
case 'popular':
- paramOrderBy = ', search_rank DESC';
- break;
+ paramOrderBy = ', search_rank DESC'
+ break
case 'stock':
- paramOrderBy = ', stock_total DESC';
- break;
+ paramOrderBy = ', stock_total DESC'
+ break
}
- let limit = 30;
- let offset = (page - 1) * limit;
+ let limit = 30
+ let offset = (page - 1) * limit
let parameter = [
`facet.query=${q}`,
'facet=true',
@@ -77,20 +78,21 @@ export default async function handler(req, res) {
`start=${offset}`,
`rows=${limit}`,
`sort=product_rating DESC ${paramOrderBy}`,
- `fq=price_discount:[${price_from == '' ? '*' : price_from} TO ${price_to == '' ? '*' : price_to}]`
- ];
+ `fq=price_discount:[${priceFrom == '' ? '*' : priceFrom} TO ${priceTo == '' ? '*' : priceTo}]`
+ ]
- if (brand) parameter.push(`fq=brand:${brand}`);
- if (category) parameter.push(`fq=category_name:${category}`);
+ if (brand) parameter.push(`fq=brand:${brand}`)
+ if (category) parameter.push(`fq=category_name:${category}`)
- let result = await axios(process.env.SOLR_HOST + '/solr/products/select?' + parameter.join('&'));
+ let result = await axios(process.env.SOLR_HOST + '/solr/products/select?' + parameter.join('&'))
try {
- result.data.response.products = productResponseMap(result.data.response.docs);
- result.data.responseHeader.params.start = parseInt(result.data.responseHeader.params.start);
- result.data.responseHeader.params.rows = parseInt(result.data.responseHeader.params.rows);
- delete result.data.response.docs;
- res.status(200).json(result.data);
+ result.data.response.products = productResponseMap(result.data.response.docs)
+ result.data.responseHeader.params.start = parseInt(result.data.responseHeader.params.start)
+ result.data.responseHeader.params.rows = parseInt(result.data.responseHeader.params.rows)
+ delete result.data.response.docs
+ result.data = camelcaseObjectDeep(result.data)
+ res.status(200).json(result.data)
} catch (error) {
- res.status(400).json({ error: error.message });
+ res.status(400).json({ error: error.message })
}
} \ No newline at end of file
diff --git a/src/pages/api/shop/suggest.js b/src/pages/api/shop/suggest.js
index 6db1a851..4e373a92 100644
--- a/src/pages/api/shop/suggest.js
+++ b/src/pages/api/shop/suggest.js
@@ -1,12 +1,15 @@
import axios from "axios";
export default async function handler(req, res) {
- const { q } = req.query;
+ const { q = '' } = req.query;
let result = await axios(process.env.SOLR_HOST + `/solr/products/suggest?suggest=true&suggest.dictionary=mySuggester&suggest.q=${q}`);
try {
- res.status(200).json(result.data);
+ res.status(200).json(result.data.suggest.mySuggester[q]);
} catch (error) {
- res.status(400).json({ error: error.message });
+ res.status(400).json({
+ numFound: 0,
+ suggestions: []
+ });
}
} \ No newline at end of file
diff --git a/src/pages/api/token.js b/src/pages/api/token.js
deleted file mode 100644
index ec048158..00000000
--- a/src/pages/api/token.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import axios from "axios";
-
-export default async function handler(req, res) {
- try {
- let result = await axios.get(process.env.ODOO_HOST + '/api/token');
- res.status(200).json(result.data.result);
- } catch (error) {
- res.status(400).json({ error: error.message });
- }
-} \ No newline at end of file