From 56548b425876a7fa9be49f2a290de6a1916609a1 Mon Sep 17 00:00:00 2001 From: Bagasbanuna02 Date: Sat, 21 Sep 2024 04:53:19 +0800 Subject: [PATCH] fix: Map Deskripsi: - Tampilan map - Tampilan portofolio - Kirim file ke wibu storage ## No Image --- prisma/schema.prisma | 8 +- public/aset/global/loading.gif | Bin 0 -> 81572 bytes public/aset/global/no-image.svg | 2 + .../b097f87e-c2ac-475d-8c5b-e1b234b18bd7.png | Bin 0 -> 6678 bytes .../4461efd1-2359-47c3-99ef-8999f2fed8da.jpg | Bin 0 -> 5573 bytes .../b41cb5aa-a45d-4ac6-84ba-ad012402b70a.jpg | Bin 0 -> 13964 bytes .../b7774485-6afc-4770-95ac-fbc0c50c4fdb.png | Bin 0 -> 6384 bytes src/app/contoh/page.tsx | 88 +++++++------- src/app/dev/portofolio/main/[id]/page.tsx | 6 +- .../_global/component/comp_load_image.tsx | 79 ++++++++++++ src/app_modules/_global/component/index.ts | 2 + .../map/component/comp_detail_data_drawer.tsx | 16 +-- .../admin/map/fun/fun_get_all_maps.ts | 1 - .../admin/map/fun/fun_get_one_by_id.ts | 2 - src/app_modules/admin/map/ui/ui_map_view.tsx | 7 +- .../job/component/detail/detail_data.tsx | 60 +++++----- .../button/comp_button_edit_logo_bisnis.tsx | 72 +++++++++++ .../button/comp_button_selanjutnya.tsx | 9 +- .../component/detail_data_drawer_map.tsx | 17 +-- .../katalog/portofolio/component/index.ts | 2 + .../katalog/portofolio/create/view.tsx | 29 +---- .../portofolio/edit/logo/ui_edit_logo.tsx | 99 +++------------ .../fun/edit/fun_edit_logo_bisnis_by_id.ts | 38 ++---- .../portofolio/fun/get/get_one_portofolio.ts | 3 - .../katalog/portofolio/fun/index.ts | 3 + .../katalog/portofolio/ui/ui_detail_data.tsx | 67 ++++++----- .../katalog/portofolio/ui/ui_detail_map.tsx | 24 ++-- .../portofolio/ui/ui_detail_portofolio.tsx | 1 - .../button/comp_button_save_pin.tsx | 70 +++++++++++ .../button/comp_button_update_data_map.tsx | 72 +++++++++++ .../map/_component/detail_data.tsx | 11 +- src/app_modules/map/_component/index.ts | 5 + .../map/fun/create/fun_create_pin.ts | 38 ++---- .../map/fun/edit/fun_custom_pin_map.ts | 34 +----- src/app_modules/map/fun/edit/fun_edit_map.ts | 71 ++++------- .../map/fun/get/fun_get_one_by_id.ts | 11 +- .../fun/get/fun_get_one_by_portofolio_id.ts | 3 - src/app_modules/map/lib/interface.ts | 8 +- src/app_modules/map/ui/ui_create_pin.tsx | 113 ++++-------------- src/app_modules/map/ui/ui_custom_pin.tsx | 50 ++++---- src/app_modules/map/ui/ui_edit_map.tsx | 76 ++++++------ src/app_modules/map/ui/ui_map.tsx | 11 +- src/lib/routes.ts | 1 + 43 files changed, 620 insertions(+), 589 deletions(-) create mode 100644 public/aset/global/loading.gif create mode 100644 public/aset/global/no-image.svg create mode 100644 public/donasi/invoice/b097f87e-c2ac-475d-8c5b-e1b234b18bd7.png create mode 100644 public/investasi/invoice/4461efd1-2359-47c3-99ef-8999f2fed8da.jpg create mode 100644 public/map/foto/b41cb5aa-a45d-4ac6-84ba-ad012402b70a.jpg create mode 100644 public/map/pin/b7774485-6afc-4770-95ac-fbc0c50c4fdb.png create mode 100644 src/app_modules/_global/component/comp_load_image.tsx create mode 100644 src/app_modules/katalog/portofolio/component/button/comp_button_edit_logo_bisnis.tsx create mode 100644 src/app_modules/katalog/portofolio/fun/index.ts create mode 100644 src/app_modules/map/_component/button/comp_button_save_pin.tsx create mode 100644 src/app_modules/map/_component/button/comp_button_update_data_map.tsx diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 5a37e8b4..520196b8 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -113,8 +113,6 @@ model Images { Donasi_Kabar Donasi_Kabar[] Donasi_PencairanDana Donasi_PencairanDana[] Donasi_Invoice Donasi_Invoice[] - Image_Map BusinessMaps[] @relation("ImageMap") - Image_Pin BusinessMaps[] @relation("ImagePin") Investasi_Invoice Investasi_Invoice[] } @@ -926,10 +924,8 @@ model BusinessMaps { authorId String? Portofolio Portofolio? @relation(fields: [portofolioId], references: [id]) portofolioId String? @unique - ImageMap Images? @relation("ImageMap", fields: [imageMapId], references: [id], map: "MapImage") - imageMapId String? - ImagePin Images? @relation("ImagePin", fields: [imagePinId], references: [id], map: "PinImage") - imagePinId String? + imageId String? + pinId String? } // Kategori App diff --git a/public/aset/global/loading.gif b/public/aset/global/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..e1b07ea2e5bbd9c1ebf7d719a3892a7d2917f253 GIT binary patch literal 81572 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 literal 0 HcmV?d00001 diff --git a/public/aset/global/no-image.svg b/public/aset/global/no-image.svg new file mode 100644 index 00000000..37449107 --- /dev/null +++ b/public/aset/global/no-image.svg @@ -0,0 +1,2 @@ + +no-image \ No newline at end of file diff --git a/public/donasi/invoice/b097f87e-c2ac-475d-8c5b-e1b234b18bd7.png b/public/donasi/invoice/b097f87e-c2ac-475d-8c5b-e1b234b18bd7.png new file mode 100644 index 0000000000000000000000000000000000000000..6f356546a82de81838417c73f04762730d7cb955 GIT binary patch literal 6678 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 literal 0 HcmV?d00001 diff --git a/public/investasi/invoice/4461efd1-2359-47c3-99ef-8999f2fed8da.jpg b/public/investasi/invoice/4461efd1-2359-47c3-99ef-8999f2fed8da.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ea83eb05bc4c42a620cbb15e3224b7376afebdcc GIT binary patch literal 5573 zcmdT`cT|(xvj39MkzPaSO$bHl2-2jZNK2?ekb0y^6C_9r0ukv=ij5u!Eg&7FNYT(l z2?Tzlpz%+L!cL4@kIxa2_-qW9xmy?s9lNZX%%g4*l4&{aNL18d1E+|YwUQ$R%UWAKRLPHWR zub`r=3=`MT(NNNsQ&Ls{F)}i;vakxUvkPg%#iX=U6qJ;dv@a?tsVM2_obuD9!s+;% zerx_o7ZsEgwEr^#6K(YW10ulwlY#<05=wtwZodN_yenb5iQBi{+G_>GTr8X-7 z20_4J8X7uk2=#9R5Ey{4u~UhNDo}H9>se*dDB2*dXL4S$4vNd3e8VN?R!mR|ZW7mT z?ECX{KlIe^|MU%jAXH%LQA7IYZ}oql4FW@~*w{I#I21(s^iJl0GmujgHV7M_ z1MJHuuDg_he2Pu+W|=R~fICQcUbqBn zf&j;%rH1D1PI?PUYfdzQY!>~ltMs7oV!QIh#&E07>v!zARZUtbItg9Mqqx0~=7%sB zj-CV=Ms}TnJ-gRAJT1k8hpJXRi(TKgC3FH7kUu>phMr@;D}RisV?G=4Pj_kkHitW_ zLN)2~=7J9+1A{cj|0xJ#f6{tW>ZkiiwsEE4Jpa}GhMb?B5yo2rcPn=&L>>FjA0|&x z&~kMB<=pCM_`39Q*yr@=Q+Vj09rH;osNS2*J0nwGHr~UTNDvKE_L)A>6*m@{xk}>- zE;yAikHr;&u#u#N|nNskxn%?UzAiTZC9@h*Gk=Rp{^(&bp za!aOY9+nlraz1>oDu%fu=WAG7cEUOAL#BoWA(6YRIJa%tA(8`m91j3n;Uh@8R z>CG|a3)r`BtQ~W<@blz4vw@!jQiQ$M+f47Ddk~)|;L&r1sR4EXWw#xBYQH($YLVlq zyb85&O3HcndnQ-?hs~KdoSa$q95LA2Qj&BSt#6wzU`Lt45j9G#!w zri(n6HRb5n_37hEc~RY0iO>hq8>B^J%k zvs3T*r(j1M&hq!42I@GoUj8aJnD2mmMz@SwV>D0lD@^Wq=LU~+F#^Dx0GnE3SqbkH zI_1~g9~@>weRcYS=5%lcM%FKECZ`_A`XD5tvr5*BFW;DvY-f6jk!#fs*{wIIPAQnD zb}XOalI1HXV@TcUaath=>_2I#obmLs%4sW|G)W(D*p+c4o(J9VVA7A~UWPHwy%@S9 zAE(4~(L5`GvF}Air6pmxd(URAr{98Nv-RW?^7P$kQ&ziVZW1L^meu)!Qz~jI6tlJx zw<~AsriUembL)bd_k5#{U(Om?tFu3`-r3S@K2&oHqqxT$re_prR34@i#Di1^_Qh7( z7YvAsnFB&o#Z{5iW1o10J%XqfJ}~ckuW8#hF<8=#gQ zv?Ebv;eSoOQ&c%OI5Z#K%C>w0gr_Tw8xj@MsG3RYYRpUXMTu(d+;TB6|A^1Nt#bjt z_77ThH21_jp~m3LcJ5>O3oF493hhGo#0z>H-kh_PQe}7`EN|Q1JVwrbg>XFNCeyp* zcnY|Fv^MuTHb3Z`nC8BjzqX=yRH?}mEay+o^lv$C5fTwyJ@scvQtyF%a{OT&$;kL^ zM`5OQ&cEJ&drRI3@UxGEJR6Hz|exvSBl&mSCC4_~W?oQpgFYxG1WV4Xy zi2Y-hNdKMCx?Jaf2!_2wAMY5yY@8PBZu$Q!9caex`9G4Wcx26Og!FUB#WZ{@!$4Tt zh{+xPUcwRx9xi!PYoeLDZY7@3v@|0YEx(i6(yUjp)FO<>EPAls?x7#IEjDl)YBsDu zG^W7#9SVYMVZhbm0L@SOElLke_w;R59djmlRM)WHt>Od;bVEb{-@CUf<|QN?(&rfw ze^%z`z7^k##IL;?u2d^<4jsdIa#I+%qT=S8kA;Lnp`V;$vBx66>X zdPSF!z0C?Z>PW2nKtE+6>(RFGWrL~CJjV^v$H7Znu1Fu@zI*xy$UXuU$AoYCBbsbP zUHPVnZ7@l#U1qAp;Wj6;vfTCgh_5Cc^7kqRN{~3f%uhB!w$?Ng%7Sl_4r(UFeabok zVpIGCNA-9Z$mBfrWhYW6Bz32sy7n0pLbr)~S7FWuN2uudMjRI>p_$G3?*8kQ!a<%5kp zvOJRL(KUA63pO~%d7^#%3k~@5s_t6%QB<_p^ANOI?JcXy67~`VDDP3cs!z@?=soz6 zv20Qdiji84rLM`$S>4A2{WK|kip7Ekb`-a1qkYk7CujC)c}4YmL&fF7V%w0%y9WWo zkH$7!6iqK&JI=a(L-~E;O}(fP1kTP@1@k%-bdQ|WAJ`gc$XljtGxyUD@^z3P@CXG4I+_QzwLY

YicJyVj%NV^4@ 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

c2Y6O>i{<0zSm^9qa81Vtux5$V>Zb}BMmL*1+M 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 PlL1hc*O04`u?+t|x95H~ literal 0 HcmV?d00001 diff --git a/src/app/contoh/page.tsx b/src/app/contoh/page.tsx index 8196cbb4..e6e3da3b 100644 --- a/src/app/contoh/page.tsx +++ b/src/app/contoh/page.tsx @@ -1,51 +1,53 @@ "use client"; -import { ComponentNotifikasi_CardSkeleton } from "@/app_modules/notifikasi/component"; -import Coba_UploadFile from "@/app_modules/zCoba/ui_coba_upload_file"; -import { Box, Button, Flex, Paper, Stack, Title } from "@mantine/core"; +import { Box, Center, Image, Loader, Text } from "@mantine/core"; +import { useShallowEffect } from "@mantine/hooks"; +import { useState } from "react"; export default function Page() { return ( <> - + ); - - return ( - - - - {Array.from(new Array(10), (_, i) => ( - - Contoh - - ))} - - - - - Ini Bagian Yang Gak Ikut - - - ); +} + +function LoadImage({ url }: { url: string }) { + const [ada, setAda] = useState(null); + + useShallowEffect(() => { + load(); + }, []); + + async function load() { + try { + const res = await fetch(url); + if (res.ok) { + return setAda(true); + } + setAda(false); + } catch (error) { + console.log(""); + } + } + + if (ada === null) + return ( + + + + ); + if (!ada) + return ( + + ); + return ; } diff --git a/src/app/dev/portofolio/main/[id]/page.tsx b/src/app/dev/portofolio/main/[id]/page.tsx index 60746aea..61d37c14 100644 --- a/src/app/dev/portofolio/main/[id]/page.tsx +++ b/src/app/dev/portofolio/main/[id]/page.tsx @@ -4,14 +4,14 @@ import { portofolio_getOneById } from "@/app_modules/katalog/portofolio/fun/get/ const mapboxToken = process.env.MAPBOX_TOKEN!; export default async function Page({ params }: { params: { id: string } }) { - const getPorto = await portofolio_getOneById(params.id); + const portofolioId = params.id; + const dataPortofolio = await portofolio_getOneById(portofolioId); const userLoginId = await funGetUserIdByToken(); return ( <> - {/*

{JSON.stringify(getPorto, null, 2)}
*/} diff --git a/src/app_modules/_global/component/comp_load_image.tsx b/src/app_modules/_global/component/comp_load_image.tsx new file mode 100644 index 00000000..0861151d --- /dev/null +++ b/src/app_modules/_global/component/comp_load_image.tsx @@ -0,0 +1,79 @@ +"use client"; + +import { AspectRatio, Box, Center, Image } from "@mantine/core"; +import { useShallowEffect } from "@mantine/hooks"; +import { useState } from "react"; +import ComponentGlobal_Loader from "./loader"; + +export function ComponentGlobal_LoadImage({ + url, + maw, + h, +}: { + url: string; + maw?: number; + h?: number; +}) { + const [isImage, setIsImage] = useState(null); + + useShallowEffect(() => { + onLoadImage(); + }, []); + + async function onLoadImage() { + try { + const res = await fetch(url); + if (res.ok) { + return setIsImage(true); + } + setIsImage(false); + } catch (error) { + console.log(error); + } + } + + if (isImage === null) + return ( +
+ +
+ ); + + if (!isImage) + return ( + <> +
+ No Image +
+ + ); + + return ( + <> + {h ? ( + Image + ) : ( + Image + )} + + ); +} diff --git a/src/app_modules/_global/component/index.ts b/src/app_modules/_global/component/index.ts index 1191da65..73a753c2 100644 --- a/src/app_modules/_global/component/index.ts +++ b/src/app_modules/_global/component/index.ts @@ -2,6 +2,7 @@ import ComponentGlobal_BoxInformation from "./box_information"; import ComponentGlobal_AvatarAndAuthorName from "./comp_author_name_and_avatar"; import { ComponentGlobal_BoxUploadImage } from "./comp_box_upload_image"; import { ComponentGlobal_CardStyles } from "./comp_card_box_and_background"; +import { ComponentGlobal_LoadImage } from "./comp_load_image"; import ComponentGlobal_CardLoadingOverlay from "./comp_loading_card"; import ComponentGlobal_TampilanAngkaRatusan from "./comp_tampilan_angka_ratusan"; import ComponentGlobal_TampilanRupiah from "./comp_tampilan_rupiah"; @@ -15,3 +16,4 @@ export { ComponentGlobal_BoxInformation }; export { ComponentGlobal_InputCountDown }; export { ComponentGlobal_CardStyles }; export { ComponentGlobal_BoxUploadImage }; +export { ComponentGlobal_LoadImage }; diff --git a/src/app_modules/admin/map/component/comp_detail_data_drawer.tsx b/src/app_modules/admin/map/component/comp_detail_data_drawer.tsx index cbf04250..88eb1f29 100644 --- a/src/app_modules/admin/map/component/comp_detail_data_drawer.tsx +++ b/src/app_modules/admin/map/component/comp_detail_data_drawer.tsx @@ -1,21 +1,21 @@ -import { RouterMap } from "@/app/lib/router_hipmi/router_map"; +import { APIs } from "@/app/lib"; import { MODEL_MAP } from "@/app_modules/map/lib/interface"; import { - Stack, AspectRatio, Box, - Grid, - Image, - Text, Button, Center, + Grid, + Image, + Stack, + Text, } from "@mantine/core"; import { useShallowEffect } from "@mantine/hooks"; import { IconBuildingSkyscraper, IconListDetails, - IconPhoneCall, IconMapPin, + IconPhoneCall, IconPinned, } from "@tabler/icons-react"; import { useState } from "react"; @@ -48,8 +48,8 @@ export function ComponentAdminMap_DetailDataDrawer({ Foto diff --git a/src/app_modules/admin/map/fun/fun_get_all_maps.ts b/src/app_modules/admin/map/fun/fun_get_all_maps.ts index 41201935..40b58bfc 100644 --- a/src/app_modules/admin/map/fun/fun_get_all_maps.ts +++ b/src/app_modules/admin/map/fun/fun_get_all_maps.ts @@ -11,7 +11,6 @@ export async function adminMap_funGetAllMaps() { isActive: true, }, include: { - ImagePin: true, Portofolio: true, }, }); diff --git a/src/app_modules/admin/map/fun/fun_get_one_by_id.ts b/src/app_modules/admin/map/fun/fun_get_one_by_id.ts index bcb7f7c7..4fc62bff 100644 --- a/src/app_modules/admin/map/fun/fun_get_one_by_id.ts +++ b/src/app_modules/admin/map/fun/fun_get_one_by_id.ts @@ -8,8 +8,6 @@ export async function adminMap_funGetOneById({ mapId }: { mapId: string }) { id: mapId, }, include: { - ImageMap: true, - ImagePin: true, Author: true, Portofolio: { include: { diff --git a/src/app_modules/admin/map/ui/ui_map_view.tsx b/src/app_modules/admin/map/ui/ui_map_view.tsx index 36348fe5..da4abf9b 100644 --- a/src/app_modules/admin/map/ui/ui_map_view.tsx +++ b/src/app_modules/admin/map/ui/ui_map_view.tsx @@ -19,6 +19,7 @@ import { ComponentAdminMap_Drawer } from "../component"; import { AccentColor } from "@/app_modules/_global/color/color_pallet"; import { RouterPortofolio } from "@/app/lib/router_hipmi/router_katalog"; import { RouterMap } from "@/app/lib/router_hipmi/router_map"; +import { APIs } from "@/app/lib"; export function UiAdminMap_MapBoxView({ mapboxToken, @@ -88,9 +89,9 @@ export function UiAdminMap_MapBoxView({ backgroundColor: "white", }} src={ - e.imagePinId === null - ? RouterPortofolio.api_logo_porto + e.Portofolio.logoId - : RouterMap.api_custom_pin + e.imagePinId + e.pinId === null + ? APIs.GET + e.Portofolio.logoId + : APIs.GET + e.pinId } /> diff --git a/src/app_modules/job/component/detail/detail_data.tsx b/src/app_modules/job/component/detail/detail_data.tsx index 9727bcd8..c9009980 100644 --- a/src/app_modules/job/component/detail/detail_data.tsx +++ b/src/app_modules/job/component/detail/detail_data.tsx @@ -18,6 +18,7 @@ import { import { MODEL_JOB } from "../../model/interface"; import { useState } from "react"; import ComponentGlobal_Loader from "@/app_modules/_global/component/loader"; +import { ComponentGlobal_LoadImage } from "@/app_modules/_global/component"; export default function ComponentJob_DetailData({ data, @@ -44,36 +45,37 @@ export default function ComponentJob_DetailData({ {data.imageId ? ( - - {isLoading ? ( - -
- -
-
- ) : ( - "" - )} - - { - setIsLoading(false); - }} - onError={() => { - setIsLoading(false); - }} - alt="Image" - src={APIs.GET + data?.imageId} - maw={200} - /> -
+ ) : ( + // + // {isLoading ? ( + // + //
+ // + //
+ //
+ // ) : ( + // "" + // )} + + // { + // setIsLoading(false); + // }} + // onError={() => { + // setIsLoading(false); + // }} + // alt="Image" + // src={APIs.GET + data?.imageId} + // maw={200} + // /> + //
"" )} diff --git a/src/app_modules/katalog/portofolio/component/button/comp_button_edit_logo_bisnis.tsx b/src/app_modules/katalog/portofolio/component/button/comp_button_edit_logo_bisnis.tsx new file mode 100644 index 00000000..a5600ad7 --- /dev/null +++ b/src/app_modules/katalog/portofolio/component/button/comp_button_edit_logo_bisnis.tsx @@ -0,0 +1,72 @@ +"use client"; + +import { AccentColor, MainColor } from "@/app_modules/_global/color"; +import { + ComponentGlobal_NotifikasiBerhasil, + ComponentGlobal_NotifikasiGagal, + ComponentGlobal_NotifikasiPeringatan, +} from "@/app_modules/_global/notif_global"; +import { Button } from "@mantine/core"; + +import { useRouter } from "next/navigation"; +import { useState } from "react"; +import { funGlobal_UploadToStorage } from "@/app_modules/_global/fun"; +import { DIRECTORY_ID } from "@/app/lib"; +import { portofolio_funEditLogoBisnisById } from "../../fun"; + +export function ComponentPortofolio_ButtonEditLogoBisnis({ + file, + portofolioId, +}: { + file: File; + portofolioId: string; +}) { + const router = useRouter(); + const [loading, setLoading] = useState(false); + async function onUpdate() { + const uploadFileToStorage = await funGlobal_UploadToStorage({ + file: file, + dirId: DIRECTORY_ID.portofolio_logo, + }); + + if (!uploadFileToStorage.success) + return ComponentGlobal_NotifikasiPeringatan("Gagal upload gambar"); + + const res = await portofolio_funEditLogoBisnisById({ + portofolioId: portofolioId, + logoId: uploadFileToStorage.data.id, + }); + if (res.status === 200) { + setLoading(true); + ComponentGlobal_NotifikasiBerhasil(res.message); + router.back(); + } else { + ComponentGlobal_NotifikasiGagal(res.message); + } + } + return ( + <> + {file ? ( + + ) : ( + + )} + + ); +} diff --git a/src/app_modules/katalog/portofolio/component/button/comp_button_selanjutnya.tsx b/src/app_modules/katalog/portofolio/component/button/comp_button_selanjutnya.tsx index 561e8437..79693a3e 100644 --- a/src/app_modules/katalog/portofolio/component/button/comp_button_selanjutnya.tsx +++ b/src/app_modules/katalog/portofolio/component/button/comp_button_selanjutnya.tsx @@ -1,6 +1,7 @@ import { RouterMap } from "@/app/lib/router_hipmi/router_map"; import { MainColor } from "@/app_modules/_global/color"; import { + ComponentGlobal_NotifikasiBerhasil, ComponentGlobal_NotifikasiGagal, ComponentGlobal_NotifikasiPeringatan, } from "@/app_modules/_global/notif_global"; @@ -42,23 +43,23 @@ export function Portofolio_ComponentButtonSelanjutnya({ if (_.values(porto).includes("")) return ComponentGlobal_NotifikasiPeringatan("Lengkapi Data"); - const uploadFile = await funGlobal_UploadToStorage({ + const uploadFileToStorage = await funGlobal_UploadToStorage({ file: file, dirId: DIRECTORY_ID.portofolio_logo, }); - if (!uploadFile.success) + if (!uploadFileToStorage.success) return ComponentGlobal_NotifikasiPeringatan("Gagal upload gambar"); const res = await funCreatePortofolio({ profileId: profileId, data: dataPortofolio as any, medsos: dataMedsos, - fileId: uploadFile.data.id, + fileId: uploadFileToStorage.data.id, }); if (res.status === 201) { setLoading(true); - // ComponentGlobal_NotifikasiBerhasil("Berhasil disimpan"); + ComponentGlobal_NotifikasiBerhasil("Berhasil disimpan"); router.replace(RouterMap.create + res.id, { scroll: false }); } else { ComponentGlobal_NotifikasiGagal("Gagal disimpan"); diff --git a/src/app_modules/katalog/portofolio/component/detail_data_drawer_map.tsx b/src/app_modules/katalog/portofolio/component/detail_data_drawer_map.tsx index ef68cee8..0245193b 100644 --- a/src/app_modules/katalog/portofolio/component/detail_data_drawer_map.tsx +++ b/src/app_modules/katalog/portofolio/component/detail_data_drawer_map.tsx @@ -1,8 +1,10 @@ "use client"; +import { APIs } from "@/app/lib"; import { RouterMap } from "@/app/lib/router_hipmi/router_map"; import ComponentGlobal_AuthorNameOnHeader from "@/app_modules/_global/author_name_on_header"; import { MainColor } from "@/app_modules/_global/color/color_pallet"; +import { ComponentGlobal_LoadImage } from "@/app_modules/_global/component"; import { ComponentMap_SkeletonDrawerDetailData } from "@/app_modules/map/_component"; import { map_funGetOneById } from "@/app_modules/map/fun/get/fun_get_one_by_id"; import { MODEL_MAP } from "@/app_modules/map/lib/interface"; @@ -14,7 +16,7 @@ import { Image, SimpleGrid, Stack, - Text + Text, } from "@mantine/core"; import { useShallowEffect } from "@mantine/hooks"; import { @@ -39,7 +41,7 @@ export function ComponentPortofolio_DetailDataMap({ mapId }: { mapId: any }) { setData(res); } - if(!data) return + if (!data) return ; return ( <> @@ -59,13 +61,14 @@ export function ComponentPortofolio_DetailDataMap({ mapId }: { mapId: any }) { { maxWidth: 600, cols: 1, spacing: "sm" }, ]} > - + {/* Foto + alt="Photo" + src={APIs.GET + data.imageId} + /> */} @@ -114,8 +117,6 @@ export function ComponentPortofolio_DetailDataMap({ mapId }: { mapId: any }) { - - - ) : ( - - )} +
); } - -async function onUpdate( - router: AppRouterInstance, - portoId: string, - file: FormData, - setLoading: any -) { - const gambar = new FormData(); - gambar.append("file", file as any); - - await Portofolio_funEditLogoBisnisById(portoId, gambar).then((res) => { - if (res.status === 200) { - setLoading(true); - ComponentGlobal_NotifikasiBerhasil(res.message); - router.back(); - } else { - ComponentGlobal_NotifikasiGagal(res.message); - } - }); -} diff --git a/src/app_modules/katalog/portofolio/fun/edit/fun_edit_logo_bisnis_by_id.ts b/src/app_modules/katalog/portofolio/fun/edit/fun_edit_logo_bisnis_by_id.ts index 37af9b3f..5ed431af 100644 --- a/src/app_modules/katalog/portofolio/fun/edit/fun_edit_logo_bisnis_by_id.ts +++ b/src/app_modules/katalog/portofolio/fun/edit/fun_edit_logo_bisnis_by_id.ts @@ -1,41 +1,21 @@ "use server"; import prisma from "@/app/lib/prisma"; -import _ from "lodash"; -import { v4 } from "uuid"; -import fs from "fs"; import { revalidatePath } from "next/cache"; -export async function Portofolio_funEditLogoBisnisById( - portoId: string, - file: FormData -) { - const gambar: any = file.get("file"); - const fileName = gambar.name; - const fileExtension = _.lowerCase(gambar.name.split(".").pop()); - const randomNameFile = v4(fileName) + "." + fileExtension; - - const upload = await prisma.images.create({ - data: { - url: randomNameFile, - label: "PORTOFOLIO_LOGO", - }, - select: { - id: true, - url: true, - }, - }); - - if (!upload) return { status: 400, message: "Gagal upload gambar" }; - const upload_toFolder = Buffer.from(await gambar.arrayBuffer()); - fs.writeFileSync(`./public/portofolio/logo/${upload.url}`, upload_toFolder); - +export async function portofolio_funEditLogoBisnisById({ + portofolioId, + logoId, +}: { + portofolioId: string; + logoId: string; +}) { const updatePorto = await prisma.portofolio.update({ where: { - id: portoId, + id: portofolioId, }, data: { - logoId: upload.id, + logoId: logoId, }, }); diff --git a/src/app_modules/katalog/portofolio/fun/get/get_one_portofolio.ts b/src/app_modules/katalog/portofolio/fun/get/get_one_portofolio.ts index 5baca6d4..edc40140 100644 --- a/src/app_modules/katalog/portofolio/fun/get/get_one_portofolio.ts +++ b/src/app_modules/katalog/portofolio/fun/get/get_one_portofolio.ts @@ -9,7 +9,6 @@ export async function portofolio_getOneById(portoId: string) { id: portoId, }, include: { - Logo: true, MasterBidangBisnis: { select: { id: true, @@ -31,8 +30,6 @@ export async function portofolio_getOneById(portoId: string) { BusinessMaps: { include: { Author: true, - ImageMap: true, - ImagePin: true, }, }, }, diff --git a/src/app_modules/katalog/portofolio/fun/index.ts b/src/app_modules/katalog/portofolio/fun/index.ts new file mode 100644 index 00000000..6bacd517 --- /dev/null +++ b/src/app_modules/katalog/portofolio/fun/index.ts @@ -0,0 +1,3 @@ +import { portofolio_funEditLogoBisnisById } from "./edit/fun_edit_logo_bisnis_by_id"; + +export { portofolio_funEditLogoBisnisById }; diff --git a/src/app_modules/katalog/portofolio/ui/ui_detail_data.tsx b/src/app_modules/katalog/portofolio/ui/ui_detail_data.tsx index a6927246..ee11c691 100644 --- a/src/app_modules/katalog/portofolio/ui/ui_detail_data.tsx +++ b/src/app_modules/katalog/portofolio/ui/ui_detail_data.tsx @@ -1,29 +1,30 @@ -import { - Paper, - Title, - Stack, - Grid, - Text, - SimpleGrid, - Box, - AspectRatio, - Image, - Group, - Divider, -} from "@mantine/core"; -import { - IconBuildingSkyscraper, - IconPhoneCall, - IconMapPin, - IconListDetails, - IconPinned, -} from "@tabler/icons-react"; -import { MODEL_PORTOFOLIO } from "../model/interface"; +import { APIs } from "@/app/lib"; import { AccentColor, MainColor, } from "@/app_modules/_global/color/color_pallet"; -import { RouterPortofolio } from "@/app/lib/router_hipmi/router_katalog"; +import { + AspectRatio, + Box, + Divider, + Grid, + Group, + Image, + Paper, + SimpleGrid, + Stack, + Text, + Title, +} from "@mantine/core"; +import { + IconBuildingSkyscraper, + IconListDetails, + IconMapPin, + IconPhoneCall, + IconPinned, +} from "@tabler/icons-react"; +import { MODEL_PORTOFOLIO } from "../model/interface"; +import { ComponentGlobal_LoadImage } from "@/app_modules/_global/component"; export function Portofolio_UiDetailData({ dataPorto, @@ -47,7 +48,9 @@ export function Portofolio_UiDetailData({ Data Bisnis id: {" "} - #{dataPorto.id_Portofolio} + + #{dataPorto.id_Portofolio} + @@ -61,17 +64,19 @@ export function Portofolio_UiDetailData({ ]} > - - + + + {/* Foto - - + */} + diff --git a/src/app_modules/katalog/portofolio/ui/ui_detail_map.tsx b/src/app_modules/katalog/portofolio/ui/ui_detail_map.tsx index 1ecfaffe..237dfb92 100644 --- a/src/app_modules/katalog/portofolio/ui/ui_detail_map.tsx +++ b/src/app_modules/katalog/portofolio/ui/ui_detail_map.tsx @@ -1,12 +1,11 @@ "use client"; -import { RouterPortofolio } from "@/app/lib/router_hipmi/router_katalog"; -import { RouterMap } from "@/app/lib/router_hipmi/router_map"; +import { APIs } from "@/app/lib"; import { AccentColor } from "@/app_modules/_global/color/color_pallet"; import { ComponentMap_DrawerDetailData } from "@/app_modules/map/_component"; import { defaultMapZoom } from "@/app_modules/map/lib/default_lat_long"; import { MODEL_MAP } from "@/app_modules/map/lib/interface"; -import { Image, Paper, Stack, Title } from "@mantine/core"; +import { Avatar, Image, Paper, Stack, Title } from "@mantine/core"; import "mapbox-gl/dist/mapbox-gl.css"; import { useState } from "react"; import { @@ -17,7 +16,7 @@ import { ScaleControl, } from "react-map-gl"; import { ComponentPortofolio_DetailDataMap } from "../component"; -import { MODEL_LOGO, MODEL_PORTOFOLIO } from "../model/interface"; +import { MODEL_PORTOFOLIO } from "../model/interface"; export function Portofolio_UiMap({ mapboxToken, @@ -45,7 +44,7 @@ export function Portofolio_UiMap({ @@ -55,11 +54,11 @@ export function Portofolio_UiMap({ function MapView({ mapboxToken, data, - dataLogo, + logoId, }: { mapboxToken: string; data: MODEL_MAP; - dataLogo: MODEL_LOGO; + logoId: string; }) { const [openDrawer, setOpenDrawer] = useState(false); @@ -98,17 +97,14 @@ function MapView({ pitchAlignment="auto" > - image diff --git a/src/app_modules/katalog/portofolio/ui/ui_detail_portofolio.tsx b/src/app_modules/katalog/portofolio/ui/ui_detail_portofolio.tsx index 883207dd..71167791 100644 --- a/src/app_modules/katalog/portofolio/ui/ui_detail_portofolio.tsx +++ b/src/app_modules/katalog/portofolio/ui/ui_detail_portofolio.tsx @@ -22,7 +22,6 @@ export default function Portofolio_UiDetail({ - {/* */} + + + ); +} diff --git a/src/app_modules/map/_component/button/comp_button_update_data_map.tsx b/src/app_modules/map/_component/button/comp_button_update_data_map.tsx new file mode 100644 index 00000000..749f0efa --- /dev/null +++ b/src/app_modules/map/_component/button/comp_button_update_data_map.tsx @@ -0,0 +1,72 @@ +"use client"; + +import { MainColor } from "@/app_modules/_global/color"; +import { + ComponentGlobal_NotifikasiBerhasil, + ComponentGlobal_NotifikasiGagal, + ComponentGlobal_NotifikasiPeringatan, +} from "@/app_modules/_global/notif_global"; +import { Button } from "@mantine/core"; + +import { map_funEditMap } from "../../fun/edit/fun_edit_map"; +import { MODEL_MAP } from "../../lib/interface"; +import { useRouter } from "next/navigation"; +import { DIRECTORY_ID } from "@/app/lib"; +import { funGlobal_UploadToStorage } from "@/app_modules/_global/fun"; +import { useState } from "react"; + +export function ComponentMap_ButtonUpdateDataMap({ + data, + file, +}: { + data: MODEL_MAP; + file: File; +}) { + const router = useRouter(); + const [isLoading, setIsLoading] = useState(false); + async function onSavePin() { + if (file !== null) { + const uploadFileToStorage = await funGlobal_UploadToStorage({ + file: file, + dirId: DIRECTORY_ID.map_image, + }); + if (!uploadFileToStorage.success) + return ComponentGlobal_NotifikasiPeringatan("Gagal upload gambar"); + + const res = await map_funEditMap({ + data: data, + fileId: uploadFileToStorage.data.id, + }); + res.status === 200 + ? (ComponentGlobal_NotifikasiBerhasil(res.message), router.back()) + : ComponentGlobal_NotifikasiGagal(res.message); + } else { + const res = await map_funEditMap({ + data: data, + }); + res.status === 200 + ? (ComponentGlobal_NotifikasiBerhasil(res.message), router.back()) + : ComponentGlobal_NotifikasiGagal(res.message); + } + setIsLoading(true); + } + + return ( + <> + + + ); +} diff --git a/src/app_modules/map/_component/detail_data.tsx b/src/app_modules/map/_component/detail_data.tsx index 8578e1a0..5eab05a6 100644 --- a/src/app_modules/map/_component/detail_data.tsx +++ b/src/app_modules/map/_component/detail_data.tsx @@ -25,6 +25,8 @@ import { useState } from "react"; import { map_funGetOneById } from "../fun/get/fun_get_one_by_id"; import { MODEL_MAP } from "../lib/interface"; import { ComponentMap_SkeletonDrawerDetailData } from "./skeleton_detail_data"; +import { APIs } from "@/app/lib"; +import { ComponentGlobal_LoadImage } from "@/app_modules/_global/component"; export function ComponentMap_DetailData({ mapId }: { mapId: any }) { const router = useRouter(); @@ -59,13 +61,8 @@ export function ComponentMap_DetailData({ mapId }: { mapId: any }) { { maxWidth: 600, cols: 1, spacing: "sm" }, ]} > - Foto + + {/* Photo */} diff --git a/src/app_modules/map/_component/index.ts b/src/app_modules/map/_component/index.ts index ee9113d6..a41439fe 100644 --- a/src/app_modules/map/_component/index.ts +++ b/src/app_modules/map/_component/index.ts @@ -1,3 +1,8 @@ +import { ComponentMap_ButtonSavePin } from "./button/comp_button_save_pin"; +import { ComponentMap_ButtonUpdateDataMap } from "./button/comp_button_update_data_map"; + export { ComponentMap_Header } from "./header"; export { ComponentMap_DrawerDetailData } from "./drawer"; export { ComponentMap_SkeletonDrawerDetailData } from "./skeleton_detail_data"; +export { ComponentMap_ButtonSavePin }; +export { ComponentMap_ButtonUpdateDataMap }; diff --git a/src/app_modules/map/fun/create/fun_create_pin.ts b/src/app_modules/map/fun/create/fun_create_pin.ts index 05c00366..95b942a4 100644 --- a/src/app_modules/map/fun/create/fun_create_pin.ts +++ b/src/app_modules/map/fun/create/fun_create_pin.ts @@ -3,42 +3,24 @@ import prisma from "@/app/lib/prisma"; import { RouterMap } from "@/app/lib/router_hipmi/router_map"; import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import fs from "fs"; -import _ from "lodash"; +import { Prisma } from "@prisma/client"; import { revalidatePath } from "next/cache"; -import { v4 } from "uuid"; -export async function map_funCreatePin({ data }: { data: any }) { +export async function map_funCreatePin({ + data, +}: { + data: Prisma.BusinessMapsCreateInput; +}) { const userLoginId = await funGetUserIdByToken(); - const gambar: any = data.gambar.get("file"); - const fileName = gambar.name; - const fileExtension = _.lowerCase(gambar.name.split(".").pop()); - const fRandomName = v4(fileName) + "." + fileExtension; - - const uploadImage = await prisma.images.create({ - data: { - url: fRandomName, - label: "MAP_PHOTO", - }, - select: { - id: true, - url: true, - }, - }); - - if (!uploadImage) return { status: 400, message: "Gagal upload foto lokasi" }; - const upload_Folder = Buffer.from(await gambar.arrayBuffer()); - fs.writeFileSync(`./public/map/foto/${uploadImage.url}`, upload_Folder); - const create = await prisma.businessMaps.create({ data: { - latitude: data.lat, - longitude: data.long, + latitude: data.latitude, + longitude: data.longitude, namePin: data.namePin, - portofolioId: data?.portofolioId, + portofolioId: data.Portofolio?.create?.id, authorId: userLoginId, - imageMapId: uploadImage.id, + imageId: data.imageId, }, }); diff --git a/src/app_modules/map/fun/edit/fun_custom_pin_map.ts b/src/app_modules/map/fun/edit/fun_custom_pin_map.ts index 85cadf6d..bc97b941 100644 --- a/src/app_modules/map/fun/edit/fun_custom_pin_map.ts +++ b/src/app_modules/map/fun/edit/fun_custom_pin_map.ts @@ -1,50 +1,26 @@ "use server"; import prisma from "@/app/lib/prisma"; -import _ from "lodash"; -import { v4 } from "uuid"; -import fs from "fs"; -import { revalidatePath } from "next/cache"; import { RouterPortofolio } from "@/app/lib/router_hipmi/router_katalog"; +import { revalidatePath } from "next/cache"; export async function map_funCustomPinMap({ mapId, - file, + fileId, }: { mapId: string; - file: FormData; + fileId: string; }) { - - const newPin: any = file.get("file"); - const fileName = newPin.name; - const fileExtension = _.lowerCase(newPin.name.split(".").pop()); - const fileRandomName = v4(fileName) + "." + fileExtension; - - const uploadPin = await prisma.images.create({ - data: { - url: fileRandomName, - label: "MAP_CUSTOM_PIN", - }, - select: { - id: true, - url: true, - }, - }); - - if (!uploadPin) return { status: 400, message: "Gagal upload foto lokasi" }; - const upload_Folder = Buffer.from(await newPin.arrayBuffer()); - fs.writeFileSync(`./public/map/pin/${uploadPin.url}`, upload_Folder); - const updt = await prisma.businessMaps.update({ where: { id: mapId, }, data: { - imagePinId: uploadPin.id, + pinId: fileId, }, }); if (!updt) return { status: 400, message: "Gagal update pin" }; - revalidatePath(RouterPortofolio.main_detail) + revalidatePath(RouterPortofolio.main_detail); return { status: 200, message: "Berhasil update pin" }; } diff --git a/src/app_modules/map/fun/edit/fun_edit_map.ts b/src/app_modules/map/fun/edit/fun_edit_map.ts index 5fef7c09..c0f25526 100644 --- a/src/app_modules/map/fun/edit/fun_edit_map.ts +++ b/src/app_modules/map/fun/edit/fun_edit_map.ts @@ -1,45 +1,18 @@ "use server"; -import _, { update } from "lodash"; -import { MODEL_MAP } from "../../lib/interface"; -import { v4 } from "uuid"; import prisma from "@/app/lib/prisma"; -import fs from "fs"; -import { revalidatePath } from "next/cache"; import { RouterPortofolio } from "@/app/lib/router_hipmi/router_katalog"; +import { revalidatePath } from "next/cache"; +import { MODEL_MAP } from "../../lib/interface"; export async function map_funEditMap({ data, - file, - + fileId, }: { data: MODEL_MAP; - file: FormData; + fileId?: string; }) { - // console.log(data, file); - - const gambar: any = file.get("file"); - if (gambar !== "null") { - const fileName = gambar.name; - const fileExtension = _.lowerCase(gambar.name.split(".").pop()); - const fRandomName = v4(fileName) + "." + fileExtension; - - const uploadImage = await prisma.images.create({ - data: { - url: fRandomName, - label: "MAP_PHOTO", - }, - select: { - id: true, - url: true, - }, - }); - - if (!uploadImage) - return { status: 400, message: "Gagal upload foto lokasi" }; - const upload_Folder = Buffer.from(await gambar.arrayBuffer()); - fs.writeFileSync(`./public/map/foto/${uploadImage.url}`, upload_Folder); - + if (fileId === undefined || fileId === null) { const updt = await prisma.businessMaps.update({ where: { id: data.id, @@ -48,25 +21,25 @@ export async function map_funEditMap({ latitude: data.latitude, longitude: data.longitude, namePin: data.namePin, - imageMapId: uploadImage.id, }, }); - if (!updt) return { status: 400, message: "Gagal update data" }; + revalidatePath(RouterPortofolio.main_detail); + return { status: 200, message: "Berhasil update" }; + } else { + const updt = await prisma.businessMaps.update({ + where: { + id: data.id, + }, + data: { + latitude: data.latitude, + longitude: data.longitude, + namePin: data.namePin, + imageId: fileId, + }, + }); + if (!updt) return { status: 400, message: "Gagal update data" }; + revalidatePath(RouterPortofolio.main_detail); + return { status: 200, message: "Berhasil update" }; } - - const updt = await prisma.businessMaps.update({ - where: { - id: data.id, - }, - data: { - latitude: data.latitude, - longitude: data.longitude, - namePin: data.namePin, - }, - }); - if (!updt) return { status: 400, message: "Gagal update data" }; - - revalidatePath(RouterPortofolio.main_detail); - return { status: 200, message: "Berhasil update" }; } diff --git a/src/app_modules/map/fun/get/fun_get_one_by_id.ts b/src/app_modules/map/fun/get/fun_get_one_by_id.ts index 1ac1f3c6..16def938 100644 --- a/src/app_modules/map/fun/get/fun_get_one_by_id.ts +++ b/src/app_modules/map/fun/get/fun_get_one_by_id.ts @@ -7,7 +7,7 @@ export async function map_funGetOneById({ mapId }: { mapId: string }) { where: { id: mapId, }, - select: { + include: { Author: { select: { id: true, @@ -20,15 +20,6 @@ export async function map_funGetOneById({ mapId }: { mapId: string }) { }, }, }, - id: true, - isActive: true, - createdAt: true, - updatedAt: true, - namePin: true, - latitude: true, - longitude: true, - authorId: true, - imageMapId: true, Portofolio: { select: { id: true, diff --git a/src/app_modules/map/fun/get/fun_get_one_by_portofolio_id.ts b/src/app_modules/map/fun/get/fun_get_one_by_portofolio_id.ts index 772336bf..81355a48 100644 --- a/src/app_modules/map/fun/get/fun_get_one_by_portofolio_id.ts +++ b/src/app_modules/map/fun/get/fun_get_one_by_portofolio_id.ts @@ -12,12 +12,9 @@ export async function map_funGetOneBusinessMapByPortofolioId({ portofolioId: portofolioId, }, include: { - ImageMap: true, - ImagePin: true, Portofolio: { select: { id: true, - Logo: true, logoId: true } } diff --git a/src/app_modules/map/lib/interface.ts b/src/app_modules/map/lib/interface.ts index d1c08054..fa1123c0 100644 --- a/src/app_modules/map/lib/interface.ts +++ b/src/app_modules/map/lib/interface.ts @@ -12,9 +12,7 @@ export interface MODEL_MAP { authorId: string; Author: MODEL_USER; portofolioId: string; - Portofolio: MODEL_PORTOFOLIO - imageMapId: string - ImageMap: any - imagePinId: string - ImagePin: any + Portofolio: MODEL_PORTOFOLIO; + imageId: string; + pinId: string; } diff --git a/src/app_modules/map/ui/ui_create_pin.tsx b/src/app_modules/map/ui/ui_create_pin.tsx index be6de6d3..db5e656c 100644 --- a/src/app_modules/map/ui/ui_create_pin.tsx +++ b/src/app_modules/map/ui/ui_create_pin.tsx @@ -4,12 +4,10 @@ import { AccentColor, MainColor, } from "@/app_modules/_global/color/color_pallet"; -import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/_global/notif_global/notifikasi_berhasil"; -import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/_global/notif_global/notifikasi_gagal"; +import { ComponentGlobal_BoxUploadImage } from "@/app_modules/_global/component"; import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/_global/notif_global/notifikasi_peringatan"; import { AspectRatio, - Box, Button, Center, FileButton, @@ -22,7 +20,6 @@ import { } from "@mantine/core"; import { IconCamera } from "@tabler/icons-react"; import _ from "lodash"; -import { useRouter } from "next/navigation"; import { useState } from "react"; import Map, { AttributionControl, @@ -30,7 +27,7 @@ import Map, { NavigationControl, ScaleControl, } from "react-map-gl"; -import { map_funCreatePin } from "../fun/create/fun_create_pin"; +import { ComponentMap_ButtonSavePin } from "../_component"; import { defaultLatLong, defaultMapZoom } from "../lib/default_lat_long"; export function UiMap_CreatePin({ @@ -116,52 +113,26 @@ export function UiMap_CreatePin({ - {img ? ( - - + + {img ? ( + Foto - - - ) : ( - - - - - Foto Lokasi Bisnis - - Upload foto lokasi bisnis anda untuk ditampilkan dalam - detail map - - - - - - )} + + ) : ( + + Foto Lokasi Bisnis + + Upload foto lokasi bisnis anda untuk ditampilkan dalam detail + map + + + )} +
- ); } - -function ButtonSavePin({ - namePin, - lat, - long, - portofolioId, - file, -}: { - namePin: string; - lat: string; - long: string; - portofolioId: string; - file: FormData; -}) { - const router = useRouter(); - async function onSavePin() { - const gambar = new FormData(); - gambar.append("file", file as any); - - const res = await map_funCreatePin({ - data: { namePin, lat, long, portofolioId, gambar }, - }); - res.status === 200 - ? (ComponentGlobal_NotifikasiBerhasil(res.message), router.back()) - : ComponentGlobal_NotifikasiGagal(res.message); - } - - return ( - <> - - - ); -} diff --git a/src/app_modules/map/ui/ui_custom_pin.tsx b/src/app_modules/map/ui/ui_custom_pin.tsx index ac3e0cd8..2c66d97d 100644 --- a/src/app_modules/map/ui/ui_custom_pin.tsx +++ b/src/app_modules/map/ui/ui_custom_pin.tsx @@ -11,13 +11,7 @@ import ComponentGlobal_IsEmptyData from "@/app_modules/_global/component/is_empt import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/_global/notif_global/notifikasi_berhasil"; import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/_global/notif_global/notifikasi_gagal"; import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/_global/notif_global/notifikasi_peringatan"; -import { - Avatar, - Button, - Center, - FileButton, - Stack -} from "@mantine/core"; +import { Avatar, Button, Center, FileButton, Stack } from "@mantine/core"; import { IconCamera } from "@tabler/icons-react"; import { useRouter } from "next/navigation"; import { useState } from "react"; @@ -31,6 +25,8 @@ import { import { map_funCustomPinMap } from "../fun"; import { defaultMapZoom } from "../lib/default_lat_long"; import { MODEL_MAP } from "../lib/interface"; +import { APIs, DIRECTORY_ID } from "@/app/lib"; +import { funGlobal_UploadToStorage } from "@/app_modules/_global/fun"; export function UiMap_CustomPin({ dataMap, @@ -62,7 +58,7 @@ export function UiMap_CustomPin({ - {/* Foto Usaha */} + {/* Photo Usaha */} - + - {img ? ( + + {img ? ( + + Photo + + ) : ( + + )} + + + {/* {img ? ( Foto @@ -161,13 +184,13 @@ export function UiMap_EditMap({ > Foto - )} + )} */}
- + ); } -function ButtonSavePin({ data, file }: { data: MODEL_MAP; file: FormData }) { - const router = useRouter(); - async function onSavePin() { - const gambar = new FormData(); - gambar.append("file", file as any); - const res = await map_funEditMap({ - data: data, - file: gambar, - }); - res.status === 200 - ? (ComponentGlobal_NotifikasiBerhasil(res.message), router.back()) - : ComponentGlobal_NotifikasiGagal(res.message); - } - - return ( - <> - - - ); -} diff --git a/src/app_modules/map/ui/ui_map.tsx b/src/app_modules/map/ui/ui_map.tsx index be6cd1a3..77f66f70 100644 --- a/src/app_modules/map/ui/ui_map.tsx +++ b/src/app_modules/map/ui/ui_map.tsx @@ -1,8 +1,8 @@ "use client"; -import { RouterPortofolio } from "@/app/lib/router_hipmi/router_katalog"; -import { RouterMap } from "@/app/lib/router_hipmi/router_map"; +import { APIs } from "@/app/lib"; import { AccentColor } from "@/app_modules/_global/color/color_pallet"; +import ComponentGlobal_IsEmptyData from "@/app_modules/_global/component/is_empty_data"; import { Avatar, Stack } from "@mantine/core"; import { useShallowEffect } from "@mantine/hooks"; import "mapbox-gl/dist/mapbox-gl.css"; @@ -18,7 +18,6 @@ import { ComponentMap_DetailData } from "../_component/detail_data"; import { map_funGetAllMap } from "../fun/get/fun_get_all_map"; import { defaultLatLong, defaultMapZoom } from "../lib/default_lat_long"; import { MODEL_MAP } from "../lib/interface"; -import ComponentGlobal_IsEmptyData from "@/app_modules/_global/component/is_empty_data"; export function UiMap_MapBoxView({ mapboxToken, @@ -91,9 +90,9 @@ export function UiMap_MapBoxView({ backgroundColor: "white", }} src={ - e.imagePinId === null - ? RouterPortofolio.api_logo_porto + e.Portofolio.logoId - : RouterMap.api_custom_pin + e.imagePinId + e.pinId === null + ? APIs.GET + e.Portofolio.logoId + : APIs.GET + e.pinId } /> diff --git a/src/lib/routes.ts b/src/lib/routes.ts index c339a1f9..ae24178e 100644 --- a/src/lib/routes.ts +++ b/src/lib/routes.ts @@ -1,3 +1,4 @@ + export const pages = { "/": "/", "/zCoba": "/zCoba",