From ae61d19a61c9a692ee027da443cc6903a0835197 Mon Sep 17 00:00:00 2001 From: Sabda Yagra Date: Mon, 17 Nov 2025 12:12:33 +0700 Subject: [PATCH] fix: link href in category, and add isAdmin in update add-experts --- .../admin/add-experts/update/[id]/page.tsx | 160 +++++++++++++----- .../campaign-list/component/table.tsx | 4 +- app/[locale]/(public)/all/filter/page.tsx | 62 ++++--- components/landing-page/content-category.tsx | 27 +-- 4 files changed, 174 insertions(+), 79 deletions(-) diff --git a/app/[locale]/(protected)/admin/add-experts/update/[id]/page.tsx b/app/[locale]/(protected)/admin/add-experts/update/[id]/page.tsx index 3af56ee2..de79e295 100644 --- a/app/[locale]/(protected)/admin/add-experts/update/[id]/page.tsx +++ b/app/[locale]/(protected)/admin/add-experts/update/[id]/page.tsx @@ -37,32 +37,43 @@ import { Eye, EyeOff } from "lucide-react"; import { useParams } from "next/navigation"; const FormSchema = z.object({ - name: z.string({ - required_error: "Required", - }), - username: z.string({ - required_error: "Required", - }), - password: z.string({ - required_error: "Required", - }), - phoneNumber: z.string({ - required_error: "Required", - }), - email: z.string({ - required_error: "Required", - }), - skills: z.string({ - required_error: "Required", - }), - experiences: z.string({ - required_error: "Required", - }), - company: z.string({ - required_error: "Required", - }), + name: z.string().optional(), + username: z.string().optional(), + password: z.string().optional(), + phoneNumber: z.string().optional(), + email: z.string().optional(), + skills: z.string().optional(), + experiences: z.string().optional(), + company: z.string().optional(), }); +// const FormSchema = z.object({ +// name: z.string({ +// required_error: "Required", +// }), +// username: z.string({ +// required_error: "Required", +// }), +// password: z.string({ +// required_error: "Required", +// }), +// phoneNumber: z.string({ +// required_error: "Required", +// }), +// email: z.string({ +// required_error: "Required", +// }), +// skills: z.string({ +// required_error: "Required", +// }), +// experiences: z.string({ +// required_error: "Required", +// }), +// company: z.string({ +// required_error: "Required", +// }), +// }); + export type Placements = { index: number; roleId?: string; @@ -189,18 +200,35 @@ export default function UpdateExpertForm() { const dataReq = { id: detail?.id, - firstName: data.name, - username: data.username, - email: data.email, - password: data.password, + firstName: data.name || detail.fullname, + username: data.username || detail.username, + email: data.email || detail.email, + password: data.password || undefined, address: "", roleId: "EXP-ID", - phoneNumber: data.phoneNumber, - userCompetencyId: data.skills, - userExperienceId: data.experiences, - companyName: data.company, + phoneNumber: data.phoneNumber || detail.phoneNumber, + userCompetencyId: + data.skills || detail.userProfilesAdditional?.userCompetency?.id, + userExperienceId: + data.experiences || detail.userProfilesAdditional?.userExperienceId, + companyName: data.company || detail.userProfilesAdditional?.companyName, + isAdmin: true, }; + // const dataReq = { + // id: detail?.id, + // firstName: data.name, + // username: data.username, + // email: data.email, + // password: data.password, + // address: "", + // roleId: "EXP-ID", + // phoneNumber: data.phoneNumber, + // userCompetencyId: data.skills, + // userExperienceId: data.experiences, + // companyName: data.company, + // }; + loading(); const res = await saveUserInternal(dataReq); const resData = res?.data?.data; @@ -322,10 +350,15 @@ export default function UpdateExpertForm() { render={({ field }) => ( Nama Lengkap - */} + @@ -338,13 +371,18 @@ export default function UpdateExpertForm() { render={({ field }) => ( Username - */} + - )} @@ -355,11 +393,17 @@ export default function UpdateExpertForm() { render={({ field }) => ( No. HP - */} + @@ -371,17 +415,46 @@ export default function UpdateExpertForm() { render={({ field }) => ( Email - */} + )} /> ( + + Password (Opsional) +
+ + +
+
+ )} + /> + {/* ( @@ -406,7 +479,7 @@ export default function UpdateExpertForm() {
)} - /> + /> */} ( Nama Institusi/Perusahaan - */} + + )} diff --git a/app/[locale]/(protected)/admin/broadcast/campaign-list/component/table.tsx b/app/[locale]/(protected)/admin/broadcast/campaign-list/component/table.tsx index 104e342d..0a285fe9 100644 --- a/app/[locale]/(protected)/admin/broadcast/campaign-list/component/table.tsx +++ b/app/[locale]/(protected)/admin/broadcast/campaign-list/component/table.tsx @@ -152,12 +152,12 @@ const CampaignListTable = () => {

Daftar Campaign

- + {/* - + */} - {Array.from({ length: categoryTotalPages }, (_, i) => ( - - ))} + {(() => { + const maxVisible = 4; + let startPage = Math.max( + 1, + Math.min( + categoryPage - Math.floor(maxVisible / 2), + categoryTotalPages - maxVisible + 1 + ) + ); + const endPage = Math.min( + categoryTotalPages, + startPage + maxVisible - 1 + ); + const visiblePages = []; + for (let i = startPage; i <= endPage; i++) { + visiblePages.push(i); + } + + return visiblePages.map((pageNum) => ( + + )); + })()} + + {/* Tombol Next */}
) )}