Merge pull request #174 from bipproduction/join

Fix bug
This commit is contained in:
Bagasbanuna02
2024-12-09 17:33:04 +08:00
committed by GitHub
7 changed files with 154 additions and 15 deletions

View File

@@ -2,6 +2,8 @@
All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines. All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
## [1.2.21](https://github.com/bipproduction/hipmi/compare/v1.2.20...v1.2.21) (2024-12-09)
## [1.2.20](https://github.com/bipproduction/hipmi/compare/v1.2.19...v1.2.20) (2024-12-09) ## [1.2.20](https://github.com/bipproduction/hipmi/compare/v1.2.19...v1.2.20) (2024-12-09)
## [1.2.19](https://github.com/bipproduction/hipmi/compare/v1.2.18...v1.2.19) (2024-12-06) ## [1.2.19](https://github.com/bipproduction/hipmi/compare/v1.2.18...v1.2.19) (2024-12-06)

View File

@@ -1,10 +1,10 @@
{ {
"name": "hipmi", "name": "hipmi",
"version": "1.2.20", "version": "1.2.21",
"private": true, "private": true,
"prisma": { "prisma": {
"seed": "npx tsx prisma/seed.ts --yes" "seed": "npx tsx prisma/seed.ts --yes"
}, },
"scripts": { "scripts": {
"dev": "bun --bun run next dev --experimental-https", "dev": "bun --bun run next dev --experimental-https",
"build": "NODE_OPTIONS='--max-old-space-size=2048' bun --bun run next build", "build": "NODE_OPTIONS='--max-old-space-size=2048' bun --bun run next build",

View File

@@ -0,0 +1,67 @@
import { prisma } from "@/app/lib"
import { NextResponse } from "next/server";
export const dynamic = "force-dynamic";
// GET ALL DATA PORTOFOLIO BY PROFILE ID
export async function GET(request: Request) {
try {
const { searchParams } = new URL(request.url)
const page = searchParams.get("page")
const search = searchParams.get("search")
const dataSkip = Number(page) * 5 - 5;
const data = await prisma.forum_Posting.findMany({
take: 5,
skip: dataSkip,
orderBy: {
createdAt: "desc",
},
where: {
isActive: true,
diskusi: {
mode: "insensitive",
contains: (search == undefined || search == "null") ? "" : search,
},
},
select: {
id: true,
diskusi: true,
createdAt: true,
isActive: true,
authorId: true,
Author: {
select: {
id: true,
username: true,
Profile: {
select: {
id: true,
name: true,
imageId: true,
},
},
},
},
Forum_Komentar: {
where: {
isActive: true,
},
},
ForumMaster_StatusPosting: {
select: {
id: true,
status: true,
},
},
forumMaster_StatusPostingId: true,
},
});
return NextResponse.json({ success: true, message: "Berhasil mendapatkan data", data }, { status: 200 });
}
catch (error) {
console.error(error);
return NextResponse.json({ success: false, message: "Gagal mendapatkan data, coba lagi nanti ", reason: (error as Error).message, }, { status: 500 });
}
}

View File

@@ -20,6 +20,7 @@ import { Event_funJoinAndConfirmEvent } from "../fun/create/fun_join_and_confirm
import { gs_event_hotMenu } from "../global_state"; import { gs_event_hotMenu } from "../global_state";
import { MODEL_EVENT } from "../model/interface"; import { MODEL_EVENT } from "../model/interface";
import { Event_funJoinEvent } from "../fun/create/fun_join_event"; import { Event_funJoinEvent } from "../fun/create/fun_join_event";
import "moment/locale/id";
export default function Ui_Konfirmasi({ export default function Ui_Konfirmasi({
userLoginId, userLoginId,
@@ -88,7 +89,7 @@ export default function Ui_Konfirmasi({
); );
} }
// Jika tanggal acara lewat // Jika tanggal acara sudah lewat
if (moment(data?.tanggalSelesai).diff(moment(), "minute") < 0) { if (moment(data?.tanggalSelesai).diff(moment(), "minute") < 0) {
return ( return (
<> <>
@@ -97,6 +98,15 @@ export default function Ui_Konfirmasi({
); );
} }
// Jika join true
if (isJoin == true && moment(data?.tanggal).diff(moment(), "minute") > 0) {
return (
<>
<UserJoinTrue title={data?.title} tanggal={data?.tanggal} />
</>
);
}
// Jika belum join dan tanggal mulai acara belum lewat // Jika belum join dan tanggal mulai acara belum lewat
if (isJoin == false && moment(data?.tanggal).diff(moment(), "minute") > 0) { if (isJoin == false && moment(data?.tanggal).diff(moment(), "minute") > 0) {
return ( return (
@@ -125,8 +135,13 @@ export default function Ui_Konfirmasi({
); );
} }
// Jika sudah join, belum konfirm dan acara sudah mulai // Jika sudah join, sudah konfirmasi dan tanggal mulai acara sudah lewat
if (isPresent && moment(data?.tanggal).diff(moment(), "minute") < 0) { // if (isPresent && moment(data?.tanggal).diff(moment(), "minute") < 0)
if (
isPresent &&
isJoin &&
moment(data?.tanggal).diff(moment(), "minute") < 0
) {
return <UserAlreadyConfirm title={data.title} />; return <UserAlreadyConfirm title={data.title} />;
} }
@@ -199,6 +214,52 @@ function SkeletonIsDataNull() {
); );
} }
function UserJoinTrue({ title, tanggal }: { title: string; tanggal: Date }) {
const router = useRouter();
const [isLoading, setLoading] = useState(false);
const [hotMenu, setHotMenu] = useAtom(gs_event_hotMenu);
return (
<>
<UIGlobal_LayoutDefault>
<Stack h={"100vh"} justify="center">
<ComponentGlobal_CardStyles>
<Stack align="center" justify="center">
<Text align="center">
Terima kasih, Bapak/Ibu, Anda telah berhasil bergabung dalam
acara{" "}
<Text inherit span fw={"bold"}>
{title}
</Text>{" "}
. Mohon ditunggu hingga tanggal{" "}
<Text inherit span fw={"bold"}>
{moment(tanggal).format("DD-MM-YYYY")}
</Text>{" "}
untuk melakukan konfirmasi kehadiran melalui aplikasi HIPMI APP.
</Text>
<Button
loading={isLoading}
loaderPosition="center"
radius={"xl"}
color="green"
c={"black"}
onClick={() => {
setHotMenu(0);
setLoading(true);
router.push(RouterEvent.beranda, { scroll: false });
}}
>
Beranda
</Button>
</Stack>
</ComponentGlobal_CardStyles>
</Stack>
</UIGlobal_LayoutDefault>
</>
);
}
function UserAllowToJoin({ function UserAllowToJoin({
title, title,
tanggal, tanggal,

View File

@@ -89,7 +89,7 @@ export default function DrawerKatalogNew({ opened, close, userRoleId, userId }:
))} ))}
<Component_ButtonLogout userId={userId} /> <Component_ButtonLogout userId={userId} />
{userRoleId != "1" && ( {userRoleId != "1" && userRoleId != "" && (
<Stack align="center" spacing={"xs"}> <Stack align="center" spacing={"xs"}>
<ActionIcon <ActionIcon
variant="transparent" variant="transparent"

View File

@@ -15,9 +15,11 @@ export default function LayoutKatalogNew({ children }: { children: any }) {
const [userRoleId, setUserRoleId] = useState("") const [userRoleId, setUserRoleId] = useState("")
const [userLoginId, setUserLoginId] = useState("") const [userLoginId, setUserLoginId] = useState("")
const [opened, { open, close }] = useDisclosure() const [opened, { open, close }] = useDisclosure()
const [loading, setLoading] = useState(true);
async function getProfile() { async function getProfile() {
try { try {
setLoading(true)
const response = await apiGetUserProfile(`?profile=${param.id}`) const response = await apiGetUserProfile(`?profile=${param.id}`)
const response2 = await funGetUserIdByToken() const response2 = await funGetUserIdByToken()
if (response.success) { if (response.success) {
@@ -27,6 +29,8 @@ export default function LayoutKatalogNew({ children }: { children: any }) {
} }
} catch (error) { } catch (error) {
console.error(error); console.error(error);
} finally {
setLoading(false)
} }
} }
@@ -41,13 +45,15 @@ export default function LayoutKatalogNew({ children }: { children: any }) {
<UIGlobal_LayoutHeaderTamplate <UIGlobal_LayoutHeaderTamplate
title="KATALOG" title="KATALOG"
customButtonRight={ customButtonRight={
authorId !== userLoginId ? ( loading ?
<ActionIcon disabled variant="transparent"></ActionIcon> <ActionIcon disabled variant="transparent"></ActionIcon> :
) : ( authorId == userLoginId ? (
<ActionIcon c="white" variant="transparent" onClick={() => open()}> <ActionIcon c="white" variant="transparent" onClick={() => open()}>
<IconDotsVertical /> <IconDotsVertical />
</ActionIcon> </ActionIcon>
) ) : (
<ActionIcon disabled variant="transparent"></ActionIcon>
)
} }
/> />
} }

View File

@@ -2,7 +2,7 @@
import { APIs } from "@/app/lib"; import { APIs } from "@/app/lib";
import { AccentColor } from "@/app_modules/_global/color/color_pallet"; import { AccentColor } from "@/app_modules/_global/color/color_pallet";
import ComponentGlobal_IsEmptyData from "@/app_modules/_global/component/is_empty_data"; import ComponentGlobal_IsEmptyData from "@/app_modules/_global/component/is_empty_data";
import { Avatar, Stack } from "@mantine/core"; import { Avatar, Loader, Stack } from "@mantine/core";
import { useShallowEffect } from "@mantine/hooks"; import { useShallowEffect } from "@mantine/hooks";
import "mapbox-gl/dist/mapbox-gl.css"; import "mapbox-gl/dist/mapbox-gl.css";
import { useState } from "react"; import { useState } from "react";
@@ -44,7 +44,10 @@ export function UiMap_MapBoxViewNew({ mapboxToken, }: { mapboxToken: string }) {
<Stack style={{ borderRadius: "10px" }}> <Stack style={{ borderRadius: "10px" }}>
{ {
loading ? loading ?
<></> : <Stack align="center" spacing="sm">
<Loader color="gray" variant="dots" />
</Stack>
:
<Map <Map
mapboxAccessToken={mapboxToken} mapboxAccessToken={mapboxToken}
mapStyle={"mapbox://styles/mapbox/streets-v11"} mapStyle={"mapbox://styles/mapbox/streets-v11"}