diff --git a/prisma/schema.prisma b/prisma/schema.prisma
index ad58a896..1ab4504c 100644
--- a/prisma/schema.prisma
+++ b/prisma/schema.prisma
@@ -12,30 +12,33 @@ datasource db {
}
model User {
- id String @id @default(cuid())
- username String @unique
- nomor String @unique
- active Boolean @default(true)
- createdAt DateTime? @default(now())
- updatedAt DateTime? @updatedAt
- MasterUserRole MasterUserRole @relation(fields: [masterUserRoleId], references: [id])
- masterUserRoleId String @default("1")
- UserSession UserSession?
- Profile Profile?
- Investasi Investasi[]
- TransaksiInvestasi TransaksiInvestasi[]
- Donasi Donasi[]
- Donasi_Invoice Donasi_Invoice[]
- Donasi_Notif Donasi_Notif[]
- Event Event[]
- Event_Peserta Event_Peserta[]
- Voting Voting[]
- Voting_Kontributor Voting_Kontributor[]
- Job Job[]
- Forum_Posting Forum_Posting[]
- Forum_Komentar Forum_Komentar[]
- Forum_ReportPosting Forum_ReportPosting[]
- Forum_ReportKomentar Forum_ReportKomentar[]
+ id String @id @default(cuid())
+ username String @unique
+ nomor String @unique
+ active Boolean @default(true)
+ createdAt DateTime? @default(now())
+ updatedAt DateTime? @updatedAt
+ MasterUserRole MasterUserRole @relation(fields: [masterUserRoleId], references: [id])
+ masterUserRoleId String @default("1")
+ UserSession UserSession?
+ Profile Profile?
+ Investasi Investasi[]
+ TransaksiInvestasi TransaksiInvestasi[]
+ Donasi Donasi[]
+ Donasi_Invoice Donasi_Invoice[]
+ Donasi_Notif Donasi_Notif[]
+ Event Event[]
+ Event_Peserta Event_Peserta[]
+ Voting Voting[]
+ Voting_Kontributor Voting_Kontributor[]
+ Job Job[]
+ Forum_Posting Forum_Posting[]
+ Forum_Komentar Forum_Komentar[]
+ Forum_ReportPosting Forum_ReportPosting[]
+ Forum_ReportKomentar Forum_ReportKomentar[]
+ ProjectCollaboration ProjectCollaboration[]
+ ProjectCollaboration_Partisipasi ProjectCollaboration_Partisipasi[]
+ ProjectCollaboration_RoomChat ProjectCollaboration_RoomChat[]
}
model MasterUserRole {
@@ -719,3 +722,68 @@ model Forum_ReportKomentar {
User User? @relation(fields: [userId], references: [id])
userId String?
}
+
+// ========================================= PROJECT COLLABORATION ========================================= //
+
+model ProjectCollaboration {
+ id String @id @default(cuid())
+ isActive Boolean @default(true)
+ createdAt DateTime @default(now())
+ updatedAt DateTime @updatedAt
+ catatan String?
+ title String
+ lokasi String
+ purpose String @db.Text
+ benefit String @db.Text
+
+ ProjectCollaborationMaster_Industri ProjectCollaborationMaster_Industri? @relation(fields: [projectCollaborationMaster_IndustriId], references: [id])
+ projectCollaborationMaster_IndustriId Int?
+ Author User? @relation(fields: [userId], references: [id])
+ userId String?
+ ProjectCollaborationMaster_Status ProjectCollaborationMaster_Status? @relation(fields: [projectCollaborationMaster_StatusId], references: [id])
+ projectCollaborationMaster_StatusId Int? @default(1)
+ ProjectCollaboration_Partisipasi ProjectCollaboration_Partisipasi[]
+}
+
+model ProjectCollaborationMaster_Industri {
+ id Int @id @default(autoincrement())
+ isActive Boolean @default(true)
+ createdAt DateTime @default(now())
+ updatedAt DateTime @updatedAt
+ name String
+
+ ProjectCollaboration ProjectCollaboration[]
+}
+
+model ProjectCollaborationMaster_Status {
+ id Int @id @default(autoincrement())
+ name String
+ isActive Boolean @default(true)
+ createdAt DateTime @default(now())
+ updatedAt DateTime @updatedAt
+
+ ProjectCollaboration ProjectCollaboration[]
+}
+
+model ProjectCollaboration_Partisipasi {
+ id String @id @default(cuid())
+ isActive Boolean @default(true)
+ createdAt DateTime @default(now())
+ updatedAt DateTime @updatedAt
+ User User? @relation(fields: [userId], references: [id])
+ userId String?
+ ProjectCollaboration ProjectCollaboration? @relation(fields: [projectCollaborationId], references: [id])
+ projectCollaborationId String?
+ ProjectCollaboration_RoomChat ProjectCollaboration_RoomChat? @relation(fields: [projectCollaboration_RoomChatId], references: [id])
+ projectCollaboration_RoomChatId String?
+}
+
+model ProjectCollaboration_RoomChat {
+ id String @id @default(cuid())
+ isActive Boolean @default(true)
+ createdAt DateTime @default(now())
+ updatedAt DateTime @updatedAt
+ Author User? @relation(fields: [userId], references: [id])
+ userId String?
+ ProjectCollaboration_Partisipasi ProjectCollaboration_Partisipasi[]
+}
diff --git a/src/app/api/seeder/route.ts b/src/app/api/seeder/route.ts
index 0905f917..a4e8b71d 100644
--- a/src/app/api/seeder/route.ts
+++ b/src/app/api/seeder/route.ts
@@ -21,6 +21,8 @@ import voting_status from "../../../bin/seeder/voting/master_status.json";
import master_status from "../../../bin/seeder/master_status.json";
import forum_kategori_report from "../../../bin/seeder/forum/master_report.json";
import forum_status_posting from "../../../bin/seeder/forum/master_status.json";
+import collaboration_industri from "../../../bin/seeder/colab/master_industri.json";
+import collaboration_status from "../../../bin/seeder/colab/master_status.json";
export async function GET(req: Request) {
const dev = new URL(req.url).searchParams.get("dev");
@@ -360,6 +362,34 @@ export async function GET(req: Request) {
});
}
+ for (let p of collaboration_industri) {
+ await prisma.projectCollaborationMaster_Industri.upsert({
+ where: {
+ id: p.id,
+ },
+ create: {
+ name: p.name,
+ },
+ update: {
+ name: p.name,
+ },
+ });
+ }
+
+ for (let p of collaboration_status) {
+ await prisma.projectCollaborationMaster_Status.upsert({
+ where: {
+ id: p.id,
+ },
+ create: {
+ name: p.name,
+ },
+ update: {
+ name: p.name,
+ },
+ });
+ }
+
return NextResponse.json({ success: true });
}
diff --git a/src/app/dev/colab/create/page.tsx b/src/app/dev/colab/create/page.tsx
index 6a530d6f..b0dcdc7c 100644
--- a/src/app/dev/colab/create/page.tsx
+++ b/src/app/dev/colab/create/page.tsx
@@ -1,9 +1,13 @@
import { Colab_Create } from "@/app_modules/colab";
+import colab_funGetMasterIndustri from "@/app_modules/colab/fun/master/fun_get_master_industri";
+import colab_funGetMasterStatus from "@/app_modules/colab/fun/master/fun_get_master_status";
export default async function Page() {
+ const listIndustri = await colab_funGetMasterIndustri();
+
return (
<>
-
+
>
);
}
diff --git a/src/app/dev/forum/proyek/layout.tsx b/src/app/dev/forum/proyek/layout.tsx
deleted file mode 100644
index 3a5cd8e4..00000000
--- a/src/app/dev/forum/proyek/layout.tsx
+++ /dev/null
@@ -1,19 +0,0 @@
-import ComponentColab_HeaderTamplate from "@/app_modules/colab/component/header_tamplate";
-import { AppShell } from "@mantine/core";
-import React from "react";
-
-export default async function Layout({
- children,
-}: {
- children: React.ReactNode;
-}) {
- return (
- <>
- }
- >
- {children}
-
- >
- );
-}
diff --git a/src/app/dev/forum/proyek/page.tsx b/src/app/dev/forum/proyek/page.tsx
deleted file mode 100644
index 5c08e75c..00000000
--- a/src/app/dev/forum/proyek/page.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import { Colab_PartisipasiProyek } from "@/app_modules/colab";
-
-export default async function Page() {
- return (
- <>
-
- >
- );
-}
diff --git a/src/app_modules/colab/create/index.tsx b/src/app_modules/colab/create/index.tsx
index 5d86c700..57589bb3 100644
--- a/src/app_modules/colab/create/index.tsx
+++ b/src/app_modules/colab/create/index.tsx
@@ -4,8 +4,23 @@ import { RouterColab } from "@/app/lib/router_hipmi/router_colab";
import { Button, Select, Stack, TextInput, Textarea } from "@mantine/core";
import { useRouter } from "next/navigation";
import { useState } from "react";
+import { MODEL_COLLABORATION_MASTER } from "../model/interface";
+import colab_funCreateProyek from "../fun/create/fun_create_proyek";
+import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil";
+import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/component_global/notif_global/notifikasi_gagal";
-export default function Colab_Create() {
+export default function Colab_Create({
+ listIndustri,
+}: {
+ listIndustri: MODEL_COLLABORATION_MASTER[];
+}) {
+ const [value, setValue] = useState({
+ title: "",
+ lokasi: "",
+ purpose: "",
+ benefit: "",
+ projectCollaborationMaster_IndustriId: 0,
+ });
return (
<>
@@ -13,22 +28,40 @@ export default function Colab_Create() {
label="Judul"
withAsterisk
placeholder="Masukan judul proyek"
+ onChange={(val) => {
+ setValue({
+ ...value,
+ title: val.currentTarget.value,
+ });
+ }}
/>
{
+ setValue({
+ ...value,
+ lokasi: val.currentTarget.value,
+ });
+ }}
/>
>
);
}
-function ButtonAction() {
+function ButtonAction({ value }: { value: any }) {
const router = useRouter();
const [loading, setLoading] = useState(false);
async function onSave() {
- setLoading(true);
- router.back();
+ await colab_funCreateProyek(value).then((res) => {
+ if (res.status === 201) {
+ setLoading(true);
+ router.back();
+ ComponentGlobal_NotifikasiBerhasil(res.message);
+ } else {
+ ComponentGlobal_NotifikasiGagal(res.message)
+ }
+ });
}
return (
diff --git a/src/app_modules/colab/fun/create/fun_create_proyek.ts b/src/app_modules/colab/fun/create/fun_create_proyek.ts
new file mode 100644
index 00000000..9d0e9627
--- /dev/null
+++ b/src/app_modules/colab/fun/create/fun_create_proyek.ts
@@ -0,0 +1,27 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { MODEL_COLLABORATION } from "../../model/interface";
+import { User_getUserId } from "@/app_modules/fun_global/get_user_token";
+
+export default async function colab_funCreateProyek(
+ value: MODEL_COLLABORATION
+) {
+ const Author = await User_getUserId();
+ console.log(Author);
+
+ const create = await prisma.projectCollaboration.create({
+ data: {
+ title: value.title,
+ lokasi: value.lokasi,
+ purpose: value.purpose,
+ benefit: value.benefit,
+ projectCollaborationMaster_IndustriId:
+ value.projectCollaborationMaster_IndustriId,
+ userId: Author
+ },
+ });
+
+ if (!create) return { status: 400, message: "Gagal Membuat Proyek" };
+ return { status: 201, message: "Berhasil Membuar Proyek" };
+}
diff --git a/src/app_modules/colab/fun/get/get_list_all_proyek.ts b/src/app_modules/colab/fun/get/get_list_all_proyek.ts
new file mode 100644
index 00000000..df2210cb
--- /dev/null
+++ b/src/app_modules/colab/fun/get/get_list_all_proyek.ts
@@ -0,0 +1,5 @@
+"use server"
+
+export default async function colab_getListAllProyek() {
+
+}
\ No newline at end of file
diff --git a/src/app_modules/colab/fun/master/fun_get_master_industri.ts b/src/app_modules/colab/fun/master/fun_get_master_industri.ts
new file mode 100644
index 00000000..fd3ab3db
--- /dev/null
+++ b/src/app_modules/colab/fun/master/fun_get_master_industri.ts
@@ -0,0 +1,8 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+
+export default async function colab_funGetMasterIndustri() {
+ const data = await prisma.projectCollaborationMaster_Industri.findMany({});
+ return data;
+}
diff --git a/src/app_modules/colab/fun/master/fun_get_master_status.ts b/src/app_modules/colab/fun/master/fun_get_master_status.ts
new file mode 100644
index 00000000..77f11720
--- /dev/null
+++ b/src/app_modules/colab/fun/master/fun_get_master_status.ts
@@ -0,0 +1,8 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+
+export default async function colab_funGetMasterStatus() {
+ const data = await prisma.projectCollaborationMaster_Status.findMany({});
+ return data;
+}
diff --git a/src/app_modules/colab/model/interface.ts b/src/app_modules/colab/model/interface.ts
new file mode 100644
index 00000000..68a0842c
--- /dev/null
+++ b/src/app_modules/colab/model/interface.ts
@@ -0,0 +1,27 @@
+import { MODEL_USER } from "@/app_modules/home/model/interface";
+
+export interface MODEL_COLLABORATION_MASTER {
+ id: string;
+ name: string;
+ isActive: boolean;
+ createdAt: Date;
+ updatedAt: Date;
+}
+
+export interface MODEL_COLLABORATION {
+ id: string;
+ isActive: boolean;
+ createdAt: Date;
+ updatedAt: Date;
+ catatan: string;
+ title: string;
+ lokasi: string;
+ purpose: string;
+ benefit: string;
+ ProjectCollaborationMaster_Industri: MODEL_COLLABORATION_MASTER[];
+ projectCollaborationMaster_IndustriId: number;
+ Author: MODEL_USER;
+ ProjectCollaborationMaster_Status: MODEL_COLLABORATION_MASTER[];
+ projectCollaborationMaster_StatusId: number
+ // ProjectCollaboration_Partisipasi
+}
diff --git a/src/bin/seeder/colab/master_industri.json b/src/bin/seeder/colab/master_industri.json
new file mode 100644
index 00000000..044f0fed
--- /dev/null
+++ b/src/bin/seeder/colab/master_industri.json
@@ -0,0 +1,26 @@
+[
+ {
+ "id": 1,
+ "name": "Software Developer"
+ },
+ {
+ "id": 2,
+ "name": "Makanan & Minuman"
+ },
+ {
+ "id": 3,
+ "name": "Kosmetik"
+ },
+ {
+ "id": 4,
+ "name": "Furniture"
+ },
+ {
+ "id": 5,
+ "name": "Kendaraan"
+ },
+ {
+ "id": 6,
+ "name": "Kesehatan"
+ }
+]
diff --git a/src/bin/seeder/colab/master_status.json b/src/bin/seeder/colab/master_status.json
new file mode 100644
index 00000000..67f105bd
--- /dev/null
+++ b/src/bin/seeder/colab/master_status.json
@@ -0,0 +1,14 @@
+[
+ {
+ "id": 1,
+ "name": "Publish"
+ },
+ {
+ "id": 2,
+ "name": "Review"
+ },
+ {
+ "id": 3,
+ "name": "Reject"
+ }
+]