feat : update admin form ads & ads on landing

This commit is contained in:
hanif salafi 2025-06-07 03:18:18 +07:00
parent 7fc65833b0
commit 98a65aaff8
3 changed files with 22 additions and 23 deletions

View File

@ -185,34 +185,30 @@ export function TambahIklanModal() {
.filter((key) => unitSelection[key as keyof typeof unitSelection]) .filter((key) => unitSelection[key as keyof typeof unitSelection])
.map((key) => unitMapping[key as keyof typeof unitMapping]) .map((key) => unitMapping[key as keyof typeof unitMapping])
.join(","); .join(",");
const requestData = {
title: data.title,
placements: selectedPlacement,
description: data.description,
redirectLink: "https://new.netidhub.com",
createdBy: assignmentToString,
assignedToLevel: handlePoldaPolresChange(),
};
console.log("Form Data Submitted:", requestData);
const response = await postAdvertisements(requestData); const formMedia = new FormData();
formMedia.append("title", data.title);
formMedia.append("placements", selectedPlacement);
formMedia.append("description", data.description);
formMedia.append("redirectLink", "https://new.netidhub.com");
formMedia.append("assignedToLevel", handlePoldaPolresChange());
formMedia.append("file", imageFiles[0]);
console.log("Form Data Submitted:", formMedia);
loading();
const response = await postAdvertisements(formMedia);
if (response?.error) { if (response?.error) {
error(response?.message); error(response?.message);
return false; return false;
} }
close();
Cookies.set("scheduleId", response?.data?.data.id, { Cookies.set("scheduleId", response?.data?.data.id, {
expires: 1, expires: 1,
}); });
loading();
if (imageFiles?.length === 0) {
setIsImageUploadFinish(true);
}
imageFiles?.map(async (item: any, index: number) => {
await uploadResumableFile(index, String(id), item, "1", "0");
});
}; };
async function uploadResumableFile( async function uploadResumableFile(
@ -232,7 +228,7 @@ export function TambahIklanModal() {
}; };
const upload = new Upload(file, { const upload = new Upload(file, {
endpoint: `${process.env.NEXT_PUBLIC_API}/advertisment/file/upload`, endpoint: `${process.env.NEXT_PUBLIC_API}/advertisements/file/upload`,
headers: headers, headers: headers,
retryDelays: [0, 3000, 6000, 12_000, 24_000], retryDelays: [0, 3000, 6000, 12_000, 24_000],
chunkSize: 20_000, chunkSize: 20_000,

View File

@ -40,7 +40,7 @@ const AdvertisementPlacements = (props: { placement?: string }) => {
setLoading(true); setLoading(true);
const res = await listDataAdvertisements( const res = await listDataAdvertisements(
0, 0,
"3", "4",
"" ""
); );
const data = res?.data?.data; const data = res?.data?.data;
@ -62,10 +62,10 @@ const AdvertisementPlacements = (props: { placement?: string }) => {
}, []); }, []);
return ( return (
<div className="sticky top-0 space-y-4 ml-14"> <div className={`sticky top-0 space-y-4 ${props.placement == "left" ? "ml-14" : "mr-14"}`}>
{loading && <p className="text-sm text-gray-500">Loading...</p>} {loading && <p className="text-sm text-gray-500">Loading...</p>}
{ads.map((ad) => ( {ads?.map((ad) => (
<img key={ad.id} src={ad.contentFileUrl} alt={`Banner ${ad.id}`} width={180} /> <img key={ad.id} src={ad.contentFileUrl} alt={`Banner ${ad.id}`} className="w-full" />
))} ))}
</div> </div>
); );

View File

@ -132,5 +132,8 @@ export async function getTagsByParentId(parentId: string | number) {
export async function postAdvertisements(data: any) { export async function postAdvertisements(data: any) {
const url = "advertisements"; const url = "advertisements";
return httpPostInterceptor(url, data); const headers = {
"Content-Type": "multipart/form-data",
};
return httpPostInterceptor(url, data, headers);
} }