summaryrefslogtreecommitdiff
path: root/src/pages
diff options
context:
space:
mode:
authorit-fixcomart <it@fixcomart.co.id>2025-07-29 09:46:05 +0700
committerit-fixcomart <it@fixcomart.co.id>2025-07-29 09:46:05 +0700
commit077467cf53b46d8049df8b812577cd1a03011eba (patch)
tree0dc641a9acb1237a3caca3f7f8a157a3e938c0b8 /src/pages
parent0d28dc8ff5fb8c5399e356ed6ecae4fce2019ca6 (diff)
parentdc31efb2fec4c7b79917324d922ae820c4b5bb50 (diff)
<hafid> merging new release
Diffstat (limited to 'src/pages')
-rw-r--r--src/pages/api/banner-section.js74
-rw-r--r--src/pages/api/biteship-service.js24
-rw-r--r--src/pages/index.jsx3
-rw-r--r--src/pages/my/address/[id]/edit.jsx5
-rw-r--r--src/pages/pengajuan-tempo/[status].jsx6
5 files changed, 97 insertions, 15 deletions
diff --git a/src/pages/api/banner-section.js b/src/pages/api/banner-section.js
index 7d7040c0..ab48f3f4 100644
--- a/src/pages/api/banner-section.js
+++ b/src/pages/api/banner-section.js
@@ -12,22 +12,81 @@ const connectRedis = async () => {
};
export default async function handler(req, res) {
+ if (req.method !== 'GET') {
+ return res.status(405).json({ error: 'Method not allowed' });
+ }
+
try {
await connectRedis();
- const cacheKey = 'hero-banner';
- // await client.del(cacheKey);
+
+ const type = req.query.type || 'home-banner';
+
+ if (type === 'private-brand') {
+ // Handle multiple private brand banner types
+ const bannerTypes = [
+ 'banner-brand-footer',
+ 'banner-brand-tengah-footer',
+ 'banner-brand-kanan-footer',
+ ];
+
+ const allBanners = [];
+
+ for (const brandType of bannerTypes) {
+ const brandCacheKey = `homepage_bannerSection_${brandType}`;
+
+ let cachedData = await client.get(brandCacheKey);
+
+ if (cachedData) {
+ const data = JSON.parse(cachedData);
+ allBanners.push(...(data || []));
+ } else {
+ try {
+ const dataBannerSections = await odooApi(
+ 'GET',
+ `/api/v1/banner?type=${brandType}`
+ );
+
+ if (dataBannerSections && dataBannerSections.length > 0) {
+ await client.set(
+ brandCacheKey,
+ JSON.stringify(dataBannerSections),
+ 'EX',
+ 259200
+ );
+ allBanners.push(...dataBannerSections);
+ }
+ } catch (error) {
+ continue;
+ }
+ }
+ }
+
+ return res.status(200).json({
+ data: allBanners,
+ total: allBanners.length,
+ });
+ }
+
+ // Handle home-banner and other single types
+ let cacheKey;
+ let apiEndpoint;
+
+ if (type === 'home-banner') {
+ cacheKey = 'hero-banner';
+ apiEndpoint = '/api/v1/banner?type=home-banner';
+ } else {
+ cacheKey = `homepage_bannerSection_${type}`;
+ apiEndpoint = `/api/v1/banner?type=${type}`;
+ }
+
let cachedData = await client.get(cacheKey);
if (cachedData) {
const data = JSON.parse(cachedData);
return res.status(200).json({ data });
} else {
- const dataBannerSections = await odooApi(
- 'GET',
- '/api/v1/banner?type=home-banner'
- );
+ const dataBannerSections = await odooApi('GET', apiEndpoint);
- // Simpan hasil fetch ke Redis dengan masa kadaluarsa 3 hari (259200 detik)
await client.set(
cacheKey,
JSON.stringify(dataBannerSections),
@@ -38,7 +97,6 @@ export default async function handler(req, res) {
return res.status(200).json({ data: dataBannerSections });
}
} catch (error) {
- console.error('Error interacting with Redis or fetching data:', error);
return res.status(500).json({ error: 'Internal Server Error' });
}
}
diff --git a/src/pages/api/biteship-service.js b/src/pages/api/biteship-service.js
new file mode 100644
index 00000000..ed9e2a9f
--- /dev/null
+++ b/src/pages/api/biteship-service.js
@@ -0,0 +1,24 @@
+import biteShipAPI from '../../core/api/biteShip';
+
+export default async function handler(req, res) {
+ const { body } = req.query;
+
+ const parsedBody = JSON.parse(body);
+ console.log(parsedBody);
+
+ try {
+ let result = await biteShipAPI('POST', '/v1/rates/couriers', parsedBody);
+ console.log('ini result', result);
+
+ if (result && result.data && result.data.data) {
+ res.status(200).json(result.data.data);
+ } else {
+ res
+ .status(500)
+ .json({ error: 'Unexpected response structure from Biteship API' });
+ }
+ } catch (error) {
+ console.error('Error:', error);
+ res.status(400).json({ error: error.message });
+ }
+}
diff --git a/src/pages/index.jsx b/src/pages/index.jsx
index df5047a3..809f00ae 100644
--- a/src/pages/index.jsx
+++ b/src/pages/index.jsx
@@ -5,6 +5,7 @@ import DelayRender from '@/core/components/elements/DelayRender/DelayRender';
import DesktopView from '@/core/components/views/DesktopView';
import MobileView from '@/core/components/views/MobileView';
import PreferredBrandSkeleton from '@/lib/home/components/Skeleton/PreferredBrandSkeleton';
+import PagePopupInformation from '@/lib/home/components/PopupBannerPromotion';
import dynamic from 'next/dynamic';
import { useRef } from 'react';
import { getAuth } from '~/libs/auth';
@@ -116,6 +117,7 @@ export default function Home({ categoryId }) {
<PagePopupIformation />
<DesktopView>
+ <PagePopupInformation />
<div className='container mx-auto'>
<div
className='flex min-h-[400px] h-[460px]'
@@ -160,6 +162,7 @@ export default function Home({ categoryId }) {
</div>
</DesktopView>
<MobileView>
+ <PagePopupInformation />
<DelayRender renderAfter={200}>
<HeroBanner />
</DelayRender>
diff --git a/src/pages/my/address/[id]/edit.jsx b/src/pages/my/address/[id]/edit.jsx
index 19d7af41..006785d9 100644
--- a/src/pages/my/address/[id]/edit.jsx
+++ b/src/pages/my/address/[id]/edit.jsx
@@ -45,7 +45,10 @@ export async function getServerSideProps(context) {
oldSubDistrict: address.subDistrict?.id || '',
subDistrict: '',
business_name: '',
+ longtitude: address?.longtitude || 0,
+ latitude: address?.latitude || 0,
+ addressMap: address?.addressMap || '',
+
};
- // console.log('ini default',defaultValues);
return { props: { id, defaultValues } };
}
diff --git a/src/pages/pengajuan-tempo/[status].jsx b/src/pages/pengajuan-tempo/[status].jsx
index 29886892..eff30e46 100644
--- a/src/pages/pengajuan-tempo/[status].jsx
+++ b/src/pages/pengajuan-tempo/[status].jsx
@@ -8,12 +8,6 @@ import Seo from '@/core/components/Seo';
import { getAuth } from '~/libs/auth';
export async function getServerSideProps(context) {
- const { status } = context.query;
- await axios.post(
- `${process.env.NEXT_PUBLIC_SELF_HOST}/api/pengajuan-tempo/${status}`,
- {},
- { headers: context.req.headers }
- );
return { props: {} };
}