Bursa Investasi

# feat:
- Tampilan portofolio selesai
- Hapus investasi
- Function get data publish
### no issue
This commit is contained in:
2023-11-15 16:14:27 +08:00
parent 989c9eed32
commit e2e30c2af0
44 changed files with 910 additions and 414 deletions

View File

@@ -0,0 +1,61 @@
import { RouterInvestasi } from "@/app/lib/router_hipmi/router_investasi";
import {
Card,
CardSection,
AspectRatio,
Box,
Title,
Divider,
Group,
Badge,
Image,
Text,
Center,
} from "@mantine/core";
import { useRouter } from "next/navigation";
import { MODEL_Investasi } from "../model/model_investasi";
import _ from "lodash";
export default function Draft({ data }: { data: MODEL_Investasi[] }) {
const router = useRouter();
return (
<>
{/* <pre> {JSON.stringify(data,null, 2)}</pre> */}
{data.map((e) =>
<Card
key={e.id}
withBorder
mb={40}
bg={"gray.5"}
onClick={() =>
router.push(RouterInvestasi.detail_draft + `${e.id}`)
}
>
<CardSection p={"xs"}>
<AspectRatio ratio={16 / 9}>
<Image
alt=""
src={RouterInvestasi.api_gambar + `${e.imagesId}`}
/>
</AspectRatio>
</CardSection>
<CardSection p={"lg"}>
<Box>
<Title order={4}>{e.title}</Title>
</Box>
</CardSection>
<Divider />
<CardSection p={"md"}>
<Group position="center">
<Badge color="yellow" variant="dot">
Draft
</Badge>
</Group>
</CardSection>
</Card>
)}
</>
);
}

View File

@@ -0,0 +1,96 @@
import { RouterInvestasi } from "@/app/lib/router_hipmi/router_investasi";
import {
Card,
CardSection,
AspectRatio,
Box,
Title,
Slider,
Divider,
Group,
Badge,
Image,
Text,
Center,
} from "@mantine/core";
import { useRouter } from "next/navigation";
import {
MODEL_Investasi,
MODEL_Status_investasi,
} from "../model/model_investasi";
import _ from "lodash";
import moment from "moment";
import { useState } from "react";
import { IconCircleCheck } from "@tabler/icons-react";
export default function Publish({ data }: { data: MODEL_Investasi[] }) {
const router = useRouter();
const [sisaWaktu, setSisaWaktu] = useState();
if (_.isEmpty(data))
return (
<>
<Center h={"50vh"}>Tidak ada Publish</Center>
</>
);
return (
<>
{data.map((e) => (
<Card
key={e.id}
withBorder
mb={40}
bg={"gray.5"}
onClick={() =>
router.push(RouterInvestasi.detail_publish + `${e.id}`)
}
>
<CardSection p={"xs"}>
<AspectRatio ratio={16 / 9}>
<Image
alt=""
src={RouterInvestasi.api_gambar + `${e.imagesId}`}
/>
</AspectRatio>
</CardSection>
<CardSection p={"lg"}>
<Box mb={"md"}>
<Title order={4}>{e.title}</Title>
{/* <Slider
size={10}
disabled
labelAlwaysOn
value={60}
marks={[{ value: 60, label: 60 + `%` }]}
/> */}
</Box>
</CardSection>
<Divider />
<CardSection p={"md"}>
{Number(e.MasterPencarianInvestor.name) -
moment(new Date()).diff(new Date(e.updatedAt), "days") <=
0 ? (
<Group position="right">
<IconCircleCheck color="green" />
<Text c={"green"}>Selesai</Text>
</Group>
) : (
<Group position="apart">
<Badge color="green" variant="dot">
Publish
</Badge>
<Text>
Sisa Waktu :{" "}
{Number(e.MasterPencarianInvestor.name) -
moment(new Date()).diff(new Date(e.updatedAt), "days")}{" "}
hari
</Text>
</Group>
)}
</CardSection>
</Card>
))}
</>
);
}

View File

@@ -0,0 +1,71 @@
import { RouterInvestasi } from "@/app/lib/router_hipmi/router_investasi";
import {
Card,
CardSection,
AspectRatio,
Box,
Title,
Divider,
Group,
Badge,
Image,
Text,
Center,
} from "@mantine/core";
import { useRouter } from "next/navigation";
import {
MODEL_Investasi,
MODEL_Status_investasi,
} from "../model/model_investasi";
import { useState } from "react";
import _ from "lodash";
export default function Reject({ data }: { data: MODEL_Investasi[] }) {
const [investasi, setInvestasi] = useState(data);
const router = useRouter();
if (_.isEmpty(data))
return (
<>
<Center h={"50vh"}>Tidak ada Reject</Center>
</>
);
return (
<>
{investasi.map((e) => (
<Card
key={e.id}
withBorder
mb={40}
bg={"gray.5"}
onClick={() => router.push(RouterInvestasi.detail_reject + `${e.id}`)}
>
<CardSection p={"xs"}>
<AspectRatio ratio={16 / 9}>
<Image
alt=""
src={RouterInvestasi.api_gambar + `${e.imagesId}`}
/>
</AspectRatio>
</CardSection>
<CardSection p={"lg"}>
<Box>
<Title order={4}>{e.title}</Title>
</Box>
</CardSection>
<Divider />
<CardSection p={"md"}>
<Group position="center">
<Badge color="red" variant="dot">
Reject
</Badge>
</Group>
</CardSection>
</Card>
))}
</>
);
}

View File

@@ -0,0 +1,67 @@
import { RouterInvestasi } from "@/app/lib/router_hipmi/router_investasi";
import {
Card,
CardSection,
AspectRatio,
Box,
Title,
Divider,
Group,
Badge,
Image,
Center,
Text,
} from "@mantine/core";
import { useRouter } from "next/navigation";
import {
MODEL_Status_investasi,
MODEL_Investasi,
} from "../model/model_investasi";
import _ from "lodash";
export default function Review({ data }: { data: MODEL_Investasi[] }) {
const router = useRouter();
if (_.isEmpty(data))
return (
<>
<Center h={"50vh"}>Tidak ada Review</Center>
</>
);
return (
<>
{data.map((e) => (
<Card
key={e.id}
withBorder
mb={40}
bg={"gray.5"}
onClick={() => router.push(RouterInvestasi.detail_review + `${e.id}`)}
>
<CardSection p={"xs"}>
<AspectRatio ratio={16 / 9}>
<Image
alt=""
src={RouterInvestasi.api_gambar + `${e.imagesId}`}
/>
</AspectRatio>
</CardSection>
<CardSection p={"lg"}>
<Box>
<Title order={4}>{e.title}</Title>
</Box>
</CardSection>
<Divider />
<CardSection p={"md"}>
<Group position="center">
<Badge color="yellow" variant="dot">
Review
</Badge>
</Group>
</CardSection>
</Card>
))}
</>
);
}

View File

@@ -47,18 +47,26 @@ import {
MODEL_Status_investasi,
} from "../model/model_investasi";
import _ from "lodash";
import Draft from "./draft";
import Review from "./review";
import Publish from "./publish";
import Reject from "./reject";
export default function PortofolioInvestasi({
dataInvestasi,
listStatusInvestasi,
dataDraft,
dataReview,
dataPublish,
dataReject,
}: {
dataInvestasi: any
listStatusInvestasi: any;
dataDraft: any;
dataReview: any;
dataPublish: any;
dataReject: any;
}) {
const router = useRouter();
const [activeTab, setActiveTab] = useAtom(gs_StatusPortoInvestasi);
const [investasi, setInvestasi] = useState<MODEL_Investasi[]>(dataInvestasi);
const [status_inves, setStatus_inves] =
useState<MODEL_Status_investasi[]>(listStatusInvestasi);
@@ -85,190 +93,18 @@ export default function PortofolioInvestasi({
</Tabs.List>
<Divider my={"xs"} />
<Tabs.Panel key={"1"} value="Draft">
<Draft data={investasi as any} />
<Draft data={dataDraft as any} />
</Tabs.Panel>
<Tabs.Panel key={"2"} value="Review">
<Review status={status_inves as any} data={investasi as any} />
<Review data={dataReview as any} />
</Tabs.Panel>
<Tabs.Panel key={"3"} value="Publish">
<Publish status={status_inves as any} />
<Publish data={dataPublish as any} />
</Tabs.Panel>
<Tabs.Panel key={"4"} value="Reject">
<Reject status={status_inves as any} />
<Reject data={dataReject as any} />
</Tabs.Panel>
</Tabs>
</>
);
}
function Draft({ data }: { data: MODEL_Investasi[] }) {
const router = useRouter();
return (
<>
{data.map((e) =>
e.MasterStatusInvestasi.id === "1" ? (
<Card
key={e.id}
withBorder
mb={40}
bg={"gray.5"}
onClick={() =>
router.push(RouterInvestasi.detail_draft + `${e.id}`)
}
>
<CardSection p={"xs"}>
<AspectRatio ratio={16 / 9}>
<Image
alt=""
src={RouterInvestasi.api_gambar + `${e.imagesId}`}
/>
</AspectRatio>
</CardSection>
<CardSection p={"lg"}>
<Box>
<Title order={4}>{e.title}</Title>
</Box>
</CardSection>
<Divider />
<CardSection p={"md"}>
<Group position="center">
<Badge color="yellow" variant="dot">
Draft
</Badge>
</Group>
</CardSection>
</Card>
) : (
""
)
)}
</>
);
}
function Review({
status,
data,
}: {
status: MODEL_Status_investasi;
data: MODEL_Investasi[];
}) {
const router = useRouter();
return (
<>
{data.map((e) =>
e.MasterStatusInvestasi.id === "2" ? (
<Card
key={e.id}
withBorder
mb={40}
bg={"gray.5"}
onClick={() => router.push(RouterInvestasi.detail_review + `${e.id}`)}
>
<CardSection p={"xs"}>
<AspectRatio ratio={16 / 9}>
<Image
alt=""
src={RouterInvestasi.api_gambar + `${e.imagesId}`}
/>
</AspectRatio>
</CardSection>
<CardSection p={"lg"}>
<Box>
<Title order={4}>{e.title}</Title>
</Box>
</CardSection>
<Divider />
<CardSection p={"md"}>
<Group position="center">
<Badge color="yellow" variant="dot">
Review
</Badge>
</Group>
</CardSection>
</Card>
) : (
""
)
)}
</>
);
}
function Publish({ status }: { status: MODEL_Status_investasi }) {
const router = useRouter();
return (
<>
<Card
withBorder
mb={40}
bg={"gray.5"}
onClick={() => router.push(RouterInvestasi.detail_publish)}
>
<CardSection p={"xs"}>
<AspectRatio ratio={16 / 9}>
<Image alt="" src={"/aset/no-img.png"} />
</AspectRatio>
</CardSection>
<CardSection p={"lg"}>
<Box mb={"md"}>
<Title order={4}>Judul Investasi</Title>
<Slider
size={10}
disabled
labelAlwaysOn
value={60}
marks={[{ value: 60, label: 60 + `%` }]}
/>
</Box>
</CardSection>
<Divider />
<CardSection p={"md"}>
<Group position="apart">
<Badge color="green" variant="dot">
{status.name}
</Badge>
<Text>Sisa Waktu : 30 Hari</Text>
</Group>
</CardSection>
</Card>
</>
);
}
function Reject({ status }: { status: MODEL_Status_investasi }) {
const router = useRouter();
return (
<>
<Card
withBorder
mb={40}
bg={"gray.5"}
onClick={() => router.push(RouterInvestasi.detail_reject)}
>
<CardSection p={"xs"}>
<AspectRatio ratio={16 / 9}>
<Image alt="" src={"/aset/no-img.png"} />
</AspectRatio>
</CardSection>
<CardSection p={"lg"}>
<Box>
<Title order={4}>Judul Investasi</Title>
</Box>
</CardSection>
<Divider />
<CardSection p={"md"}>
<Group position="center">
<Badge color="red" variant="dot">
{status.name}
</Badge>
</Group>
</CardSection>
</Card>
</>
);
}