summaryrefslogtreecommitdiff
path: root/src/pages
diff options
context:
space:
mode:
authortrisusilo48 <tri.susilo@altama.co.id>2024-09-24 09:33:10 +0700
committertrisusilo48 <tri.susilo@altama.co.id>2024-09-24 09:33:10 +0700
commitd4cb977d050a54b9daa1658b6de6e82878ca4c9b (patch)
treec58569a165721c6e60aad9c1ed9fcf8f8525b6b0 /src/pages
parent1475593324319d1faf377f2d00a22a4b3caa3faa (diff)
parentcf42512eb11b1a96c99ced8d1f867aeb8c2dcbc1 (diff)
Merge branch 'release' into CR/product_detail
Diffstat (limited to 'src/pages')
-rw-r--r--src/pages/api/activation-request.js26
-rw-r--r--src/pages/api/shop/brands.js2
-rw-r--r--src/pages/api/shop/finish-checkout.js84
-rw-r--r--src/pages/index.jsx20
-rw-r--r--src/pages/login.jsx12
-rw-r--r--src/pages/my/address/[id]/edit.jsx29
6 files changed, 98 insertions, 75 deletions
diff --git a/src/pages/api/activation-request.js b/src/pages/api/activation-request.js
index 98d27f78..2b8ccec3 100644
--- a/src/pages/api/activation-request.js
+++ b/src/pages/api/activation-request.js
@@ -1,27 +1,29 @@
-import odooApi from '@/core/api/odooApi'
-import mailer from '@/core/utils/mailer'
+import odooApi from '@/core/api/odooApi';
+import mailer from '@/core/utils/mailer';
export default async function handler(req, res) {
try {
- const { email } = req.body
- let result = await odooApi('POST', '/api/v1/user/activation-request', { email })
+ const { email } = req.body;
+ let result = await odooApi('POST', '/api/v1/user/activation-request', {
+ email,
+ });
if (result.activationRequest) {
mailer.sendMail({
- from: 'Indoteknik.com <noreply@indoteknik.com>',
+ from: 'noreply@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.NEXT_PUBLIC_SELF_HOST}/activate?token=${result.token}">Aktivasi Akun</a></p>
- `
- })
+ `,
+ });
}
- delete result.user
- delete result.token
- res.status(200).json(result)
+ delete result.user;
+ delete result.token;
+ res.status(200).json(result);
} catch (error) {
- console.log(error)
- res.status(400).json({ error: error.message })
+ console.log(error);
+ res.status(400).json({ error: error.message });
}
}
diff --git a/src/pages/api/shop/brands.js b/src/pages/api/shop/brands.js
index cc64a7e7..9c2824b3 100644
--- a/src/pages/api/shop/brands.js
+++ b/src/pages/api/shop/brands.js
@@ -24,6 +24,8 @@ export default async function handler(req, res) {
params = `name_s:${req.query.params}`.toLowerCase();
}
}
+ if(req.query.rows) rows = req.query.rows;
+
const url = `${SOLR_HOST}/solr/brands/select?q=${params}&q.op=OR&indent=true&rows=${rows}&${sort}`;
let brands = await axios(url);
let dataBrands = responseMap(brands.data.response.docs);
diff --git a/src/pages/api/shop/finish-checkout.js b/src/pages/api/shop/finish-checkout.js
index 9eaa36db..4dcc915c 100644
--- a/src/pages/api/shop/finish-checkout.js
+++ b/src/pages/api/shop/finish-checkout.js
@@ -1,60 +1,66 @@
-import odooApi from '@/core/api/odooApi'
-import mailer from '@/core/utils/mailer'
-import FinishCheckoutEmail from '@/lib/checkout/email/FinishCheckoutEmail'
-import { render } from '@react-email/render'
-import axios from 'axios'
-import camelcaseObjectDeep from 'camelcase-object-deep'
+import odooApi from '@/core/api/odooApi';
+import mailer from '@/core/utils/mailer';
+import FinishCheckoutEmail from '@/lib/checkout/email/FinishCheckoutEmail';
+import { render } from '@react-email/render';
+import axios from 'axios';
+import camelcaseObjectDeep from 'camelcase-object-deep';
export default async function handler(req, res) {
- const { orderName = null } = req.query
+ const { orderName = null } = req.query;
if (!orderName) {
- return res.status(422).json({ error: 'parameter missing' })
+ return res.status(422).json({ error: 'parameter missing' });
}
- let { auth } = req.cookies
+ let { auth } = req.cookies;
if (!auth) {
- return res.status(401).json({ error: 'Unauthorized' })
+ return res.status(401).json({ error: 'Unauthorized' });
}
- auth = JSON.parse(auth)
+ auth = JSON.parse(auth);
- const midtransAuthKey = btoa(process.env.MIDTRANS_SERVER_KEY + ':')
+ const midtransAuthKey = btoa(process.env.MIDTRANS_SERVER_KEY + ':');
const midtransHeaders = {
Accept: 'application/json',
'Content-Type': 'application/json',
- Authorization: `Basic ${midtransAuthKey}`
- }
- let midtransStatus = {}
+ Authorization: `Basic ${midtransAuthKey}`,
+ };
+ let midtransStatus = {};
try {
- midtransStatus = await axios.get(`${process.env.MIDTRANS_HOST}/v2/${orderName}/status`, {
- headers: midtransHeaders
- })
- midtransStatus = camelcaseObjectDeep(midtransStatus.data)
+ midtransStatus = await axios.get(
+ `${process.env.MIDTRANS_HOST}/v2/${orderName}/status`,
+ {
+ headers: midtransHeaders,
+ }
+ );
+ midtransStatus = camelcaseObjectDeep(midtransStatus.data);
} catch (error) {
- console.log(error)
+ console.log(error);
}
- let statusPayment = 'manual'
+ let statusPayment = 'manual';
if (midtransStatus?.orderId) {
- const transactionStatus = midtransStatus.transactionStatus
- statusPayment = 'failed'
+ const transactionStatus = midtransStatus.transactionStatus;
+ statusPayment = 'failed';
if (['capture', 'settlement'].includes(transactionStatus)) {
- statusPayment = 'success'
+ statusPayment = 'success';
} else if (transactionStatus == 'pending') {
- statusPayment = 'pending'
+ statusPayment = 'pending';
}
}
- const query = `name=${orderName.replaceAll('-', '/')}&limit=1&context=quotation`
+ const query = `name=${orderName.replaceAll(
+ '-',
+ '/'
+ )}&limit=1&context=quotation`;
const searchTransaction = await odooApi(
'GET',
`/api/v1/partner/${auth.partnerId}/sale_order?${query}`,
{},
{ Token: auth.token }
- )
+ );
if (searchTransaction.saleOrderTotal == 0) {
- return res.status(400).json({ error: 'Transaction Not Found' })
+ return res.status(400).json({ error: 'Transaction Not Found' });
}
let transaction = await odooApi(
@@ -62,17 +68,17 @@ export default async function handler(req, res) {
`/api/v1/partner/${auth.partnerId}/sale_order/${searchTransaction.saleOrders[0].id}`,
{},
{ Token: auth.token }
- )
+ );
if (!transaction?.id) {
- return res.status(400).json({ error: 'Transaction Detail Not Found' })
+ return res.status(400).json({ error: 'Transaction Detail Not Found' });
}
- transaction.subtotal = 0
- transaction.discountTotal = 0
+ transaction.subtotal = 0;
+ transaction.discountTotal = 0;
for (const product of transaction.products) {
- transaction.subtotal += product.price.price * product.quantity
+ transaction.subtotal += product.price.price * product.quantity;
transaction.discountTotal -=
- (product.price.price - product.price.priceDiscount) * product.quantity
+ (product.price.price - product.price.priceDiscount) * product.quantity;
}
const emailMessage = render(
@@ -81,14 +87,14 @@ export default async function handler(req, res) {
payment={midtransStatus}
statusPayment={statusPayment}
/>
- )
+ );
mailer.sendMail({
- from: 'sales@indoteknik.com',
+ from: 'noreply@indoteknik.com',
to: transaction.address.customer.email,
subject: 'Pembelian di Indoteknik.com',
- html: emailMessage
- })
+ html: emailMessage,
+ });
- return res.status(200).json({ description: 'success' })
+ return res.status(200).json({ description: 'success' });
}
diff --git a/src/pages/index.jsx b/src/pages/index.jsx
index 0e87205e..6077c192 100644
--- a/src/pages/index.jsx
+++ b/src/pages/index.jsx
@@ -18,7 +18,7 @@ import { getAuth } from '~/libs/auth';
import useProductDetail from '~/modules/product-detail/stores/useProductDetail';
const BasicLayout = dynamic(() =>
- import('@/core/components/layouts/BasicLayout')
+ import('@/core/components/layouts/BasicLayout'),{ssr: false}
);
const HeroBanner = dynamic(() => import('@/components/ui/HeroBanner'), {
loading: () => <HeroBannerSkeleton />,
@@ -55,24 +55,24 @@ const ProgramPromotion = dynamic(() =>
);
const BannerSection = dynamic(() =>
- import('@/lib/home/components/BannerSection')
+ import('@/lib/home/components/BannerSection'), {ssr: false}
);
const CategoryHomeId = dynamic(() =>
- import('@/lib/home/components/CategoryHomeId')
+ import('@/lib/home/components/CategoryHomeId'), {ssr: false}
);
const CategoryDynamic = dynamic(() =>
- import('@/lib/home/components/CategoryDynamic')
+ import('@/lib/home/components/CategoryDynamic'), {ssr: false}
);
const CategoryDynamicMobile = dynamic(() =>
-import('@/lib/home/components/CategoryDynamicMobile')
+import('@/lib/home/components/CategoryDynamicMobile'), {ssr: false}
);
const CustomerReviews = dynamic(() =>
- import('@/lib/review/components/CustomerReviews')
+ import('@/lib/review/components/CustomerReviews'), {ssr: false}
); // need to ssr:false
-const ServiceList = dynamic(() => import('@/lib/home/components/ServiceList')); // need to ssr: false
+const ServiceList = dynamic(() => import('@/lib/home/components/ServiceList'), {ssr: false}); // need to ssr: false
@@ -148,11 +148,11 @@ export default function Home({categoryId}) {
</DelayRender>
</>
)}
- <PromotinProgram />
+ {/* <PromotinProgram /> */}
{dataCategories &&(
<CategoryPilihan categories={dataCategories} />
)}
- <CategoryDynamic />
+ <CategoryDynamic />
<CategoryHomeId />
<BannerSection />
<CustomerReviews />
@@ -183,7 +183,7 @@ export default function Home({categoryId}) {
</>
)}
<DelayRender renderAfter={600}>
- <PromotinProgram />
+ {/* <PromotinProgram /> */}
</DelayRender>
<DelayRender renderAfter={600}>
{dataCategories &&(
diff --git a/src/pages/login.jsx b/src/pages/login.jsx
index 9a1aa85b..07d13784 100644
--- a/src/pages/login.jsx
+++ b/src/pages/login.jsx
@@ -1,3 +1,5 @@
+import { useEffect } from 'react';
+import { useRouter } from 'next/router';
import Seo from '@/core/components/Seo';
import SimpleFooter from '@/core/components/elements/Footer/SimpleFooter';
import BasicLayout from '@/core/components/layouts/BasicLayout';
@@ -5,8 +7,18 @@ import DesktopView from '@/core/components/views/DesktopView';
import MobileView from '@/core/components/views/MobileView';
import LoginComponent from '@/lib/auth/components/Login';
import AccountActivation from '~/modules/account-activation';
+import useAuth from '@/core/hooks/useAuth';
export default function Login() {
+ const router = useRouter();
+ const auth = useAuth();
+
+ useEffect(() => {
+ if (auth) {
+ router.push('/');
+ }
+ }, [auth, router]);
+
return (
<>
<Seo title='Login - Indoteknik.com' />
diff --git a/src/pages/my/address/[id]/edit.jsx b/src/pages/my/address/[id]/edit.jsx
index bd680b90..c552659b 100644
--- a/src/pages/my/address/[id]/edit.jsx
+++ b/src/pages/my/address/[id]/edit.jsx
@@ -1,11 +1,11 @@
-import Seo from '@/core/components/Seo'
-import AppLayout from '@/core/components/layouts/AppLayout'
-import BasicLayout from '@/core/components/layouts/BasicLayout'
-import DesktopView from '@/core/components/views/DesktopView'
-import MobileView from '@/core/components/views/MobileView'
-import addressApi from '@/lib/address/api/addressApi'
-import EditAddressComponent from '@/lib/address/components/EditAddress'
-import IsAuth from '@/lib/auth/components/IsAuth'
+import Seo from '@/core/components/Seo';
+import AppLayout from '@/core/components/layouts/AppLayout';
+import BasicLayout from '@/core/components/layouts/BasicLayout';
+import DesktopView from '@/core/components/views/DesktopView';
+import MobileView from '@/core/components/views/MobileView';
+import addressApi from '@/lib/address/api/addressApi';
+import EditAddressComponent from '@/lib/address/components/EditAddress';
+import IsAuth from '@/lib/auth/components/IsAuth';
export default function EditAddress({ id, defaultValues }) {
return (
@@ -24,12 +24,12 @@ export default function EditAddress({ id, defaultValues }) {
</BasicLayout>
</DesktopView>
</IsAuth>
- )
+ );
}
export async function getServerSideProps(context) {
- const { id } = context.query
- const address = await addressApi({ id })
+ const { id } = context.query;
+ const address = await addressApi({ id });
const defaultValues = {
type: address.type,
name: address.name,
@@ -41,7 +41,8 @@ export async function getServerSideProps(context) {
oldDistrict: address.district?.id || '',
district: '',
oldSubDistrict: address.subDistrict?.id || '',
- subDistrict: ''
- }
- return { props: { id, defaultValues } }
+ subDistrict: '',
+ business_name: '',
+ };
+ return { props: { id, defaultValues } };
}