Merge pull request #214 from bipproduction/amalia/10-september-24
Amalia/10 september 24
This commit is contained in:
12
src/app/(application)/division/[id]/layout.tsx
Normal file
12
src/app/(application)/division/[id]/layout.tsx
Normal file
@@ -0,0 +1,12 @@
|
||||
import { WrapLayoutDivision } from "@/module/division_new";
|
||||
import _ from "lodash"
|
||||
|
||||
export default async function Layout({ children }: { children: React.ReactNode }) {
|
||||
return (
|
||||
<>
|
||||
<WrapLayoutDivision>
|
||||
{children}
|
||||
</WrapLayoutDivision>
|
||||
</>
|
||||
);
|
||||
}
|
||||
@@ -1,8 +1,9 @@
|
||||
import { prisma } from "@/module/_global";
|
||||
import { funGetUserByCookies } from "@/module/auth";
|
||||
import { createLogUser } from "@/module/user";
|
||||
import { NextResponse } from "next/server";
|
||||
|
||||
// CREATE COMENT BY ID
|
||||
// CREATE COMENT BY ID KOMENTAR
|
||||
export async function POST(request: Request, context: { params: { id: string } }) {
|
||||
try {
|
||||
const user = await funGetUserByCookies()
|
||||
@@ -34,9 +35,15 @@ export async function POST(request: Request, context: { params: { id: string } }
|
||||
comment: comment,
|
||||
idDisscussion: id,
|
||||
createdBy: user.id
|
||||
},
|
||||
select: {
|
||||
id: true
|
||||
}
|
||||
})
|
||||
|
||||
// create log user
|
||||
const log = await createLogUser({ act: 'CREATE', desc: 'User menambah komentar pada diskusi', table: 'divisionDisscussionComment', data: data.id })
|
||||
|
||||
return NextResponse.json({ success: true, message: "Berhasil menambah komentar", data: data, }, { status: 200 });
|
||||
|
||||
} catch (error) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { prisma } from "@/module/_global";
|
||||
import { funGetUserByCookies } from "@/module/auth";
|
||||
import { stat } from "fs";
|
||||
import { createLogUser } from "@/module/user";
|
||||
import _ from "lodash";
|
||||
import moment from "moment";
|
||||
import "moment/locale/id";
|
||||
@@ -68,10 +68,11 @@ export async function GET(request: Request, context: { params: { id: string } })
|
||||
const username = data?.User.name
|
||||
const user_img = data?.User.img
|
||||
const createdAt = moment(data?.createdAt).format("ll")
|
||||
const isCreator = data?.createdBy == user.id
|
||||
|
||||
|
||||
|
||||
const result = { ...userMember, username, createdAt, user_img }
|
||||
const result = { ...userMember, username, createdAt, user_img, isCreator }
|
||||
|
||||
|
||||
const omitData = _.omit(result, ["User"])
|
||||
@@ -95,7 +96,7 @@ export async function GET(request: Request, context: { params: { id: string } })
|
||||
}
|
||||
|
||||
|
||||
// ONE OR CLOSE DISCUSSION
|
||||
// OPEN OR CLOSE DISCUSSION
|
||||
export async function DELETE(request: Request, context: { params: { id: string } }) {
|
||||
try {
|
||||
const user = await funGetUserByCookies()
|
||||
@@ -131,6 +132,10 @@ export async function DELETE(request: Request, context: { params: { id: string }
|
||||
status: newStatus
|
||||
}
|
||||
});
|
||||
|
||||
// create log user
|
||||
const log = await createLogUser({ act: 'UPDATE', desc: 'User mengupdate status diskusi', table: 'divisionDisscussion', data: id })
|
||||
|
||||
return NextResponse.json({ success: true, message: "Berhasil mengedit diskusi" }, { status: 200 });
|
||||
|
||||
} catch (error) {
|
||||
@@ -167,6 +172,9 @@ export async function PUT(request: Request, context: { params: { id: string } })
|
||||
isActive: false
|
||||
}
|
||||
});
|
||||
// create log user
|
||||
const log = await createLogUser({ act: 'DELETE', desc: 'User menghapus data diskusi', table: 'divisionDisscussion', data: id })
|
||||
|
||||
return NextResponse.json({ success: true, message: "Berhasil menghapus diskusi" }, { status: 200 });
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
@@ -203,6 +211,9 @@ export async function POST(request: Request, context: { params: { id: string } }
|
||||
desc: desc
|
||||
}
|
||||
});
|
||||
|
||||
// create log user
|
||||
const log = await createLogUser({ act: 'UPDATE', desc: 'User mengupdate data diskusi', table: 'divisionDisscussion', data: id })
|
||||
return NextResponse.json({ success: true, message: "Berhasil mengedit diskusi" }, { status: 200 });
|
||||
|
||||
} catch (error) {
|
||||
|
||||
@@ -4,6 +4,7 @@ import _ from "lodash";
|
||||
import moment from "moment";
|
||||
import { NextResponse } from "next/server";
|
||||
import "moment/locale/id";
|
||||
import { createLogUser } from "@/module/user";
|
||||
|
||||
|
||||
// GET ALL DISCUSSION DIVISION ACTIVE = TRUE
|
||||
@@ -116,8 +117,14 @@ export async function POST(request: Request) {
|
||||
desc,
|
||||
createdBy: user.id
|
||||
},
|
||||
select: {
|
||||
id: true
|
||||
}
|
||||
});
|
||||
|
||||
// create log user
|
||||
const log = await createLogUser({ act: 'CREATE', desc: 'User membuat data diskusi', table: 'divisionDisscussion', data: data.id })
|
||||
|
||||
return NextResponse.json({ success: true, message: "Berhasil menambahkan diskusi", data, }, { status: 200 });
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { prisma } from "@/module/_global";
|
||||
import { funGetUserByCookies } from "@/module/auth";
|
||||
import { createLogUser } from "@/module/user";
|
||||
import _ from "lodash";
|
||||
import { NextResponse } from "next/server";
|
||||
|
||||
@@ -65,6 +66,9 @@ export async function POST(request: Request) {
|
||||
})
|
||||
}
|
||||
|
||||
// create log user
|
||||
const log = await createLogUser({ act: 'UPDATE', desc: 'User memindahkan file atau folder', table: 'divisionDocumentFolderFile', data: '' })
|
||||
|
||||
|
||||
return NextResponse.json({ success: true, message: "Berhasil memindahkan item" }, { status: 200 });
|
||||
} catch (error) {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { prisma } from "@/module/_global";
|
||||
import { funGetUserByCookies } from "@/module/auth";
|
||||
import { createLogUser } from "@/module/user";
|
||||
import _ from "lodash";
|
||||
import moment from "moment";
|
||||
import { NextResponse } from "next/server";
|
||||
@@ -281,8 +282,14 @@ export async function POST(request: Request) {
|
||||
extension: "folder",
|
||||
createdBy: user.id,
|
||||
},
|
||||
select: {
|
||||
id: true
|
||||
}
|
||||
});
|
||||
|
||||
// create log user
|
||||
const log = await createLogUser({ act: 'CREATE', desc: 'User membuat folder baru', table: 'divisionDocumentFolderFile', data: data.id })
|
||||
|
||||
return NextResponse.json({ success: true, message: "Berhasil membuat folder baru" }, { status: 200 });
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
@@ -339,6 +346,9 @@ export async function PUT(request: Request) {
|
||||
})
|
||||
|
||||
|
||||
// create log user
|
||||
const log = await createLogUser({ act: 'UPDATE', desc: 'User mengubah nama file atau folder', table: 'divisionDocumentFolderFile', data: id })
|
||||
|
||||
|
||||
return NextResponse.json({ success: true, message: "Berhasil mengubah nama item" }, { status: 200 });
|
||||
} catch (error) {
|
||||
@@ -370,6 +380,9 @@ export async function DELETE(request: Request) {
|
||||
})
|
||||
}
|
||||
|
||||
// create log user
|
||||
const log = await createLogUser({ act: 'DELETE', desc: 'User menghapus file atau folder', table: 'divisionDocumentFolderFile', data: '' })
|
||||
|
||||
|
||||
return NextResponse.json({ success: true, message: "Berhasil menghapus item" }, { status: 200 });
|
||||
} catch (error) {
|
||||
|
||||
@@ -4,6 +4,7 @@ import _ from "lodash";
|
||||
import { NextResponse } from "next/server";
|
||||
import fs from "fs";
|
||||
import path from "path";
|
||||
import { createLogUser } from "@/module/user";
|
||||
|
||||
|
||||
// UPLOAD FILE
|
||||
@@ -92,6 +93,9 @@ export async function POST(request: Request) {
|
||||
// Tulis file ke sistem
|
||||
fs.writeFileSync(filePath, buffer);
|
||||
|
||||
// create log user
|
||||
const log = await createLogUser({ act: 'CREATE', desc: 'User mengupload file baru', table: 'divisionDocumentFolderFile', data: dataInsert.id })
|
||||
|
||||
return NextResponse.json({ success: true, message: "Berhasil upload file" }, { status: 200 });
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { prisma } from "@/module/_global";
|
||||
import { funGetUserByCookies } from "@/module/auth";
|
||||
import { createLogUser } from "@/module/user";
|
||||
import { NextResponse } from "next/server";
|
||||
|
||||
export const dynamic = 'force-dynamic'
|
||||
@@ -75,14 +76,11 @@ export async function DELETE(request: Request, context: { params: { id: string }
|
||||
},
|
||||
});
|
||||
|
||||
return NextResponse.json(
|
||||
{
|
||||
success: true,
|
||||
message: "Grup berhasil diedit",
|
||||
data,
|
||||
},
|
||||
{ status: 200 }
|
||||
);
|
||||
// create log user
|
||||
const log = await createLogUser({ act: 'UPDATE', desc: 'User mengedit status data grup', table: 'group', data: id })
|
||||
|
||||
return NextResponse.json( { success: true, message: "Grup berhasil diedit", data, }, { status: 200 } );
|
||||
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return NextResponse.json({ success: false, message: "Gagal mengedit grup, coba lagi nanti", reason: (error as Error).message, }, { status: 500 });
|
||||
@@ -123,14 +121,11 @@ export async function PUT(request: Request, context: { params: { id: string } })
|
||||
},
|
||||
});
|
||||
|
||||
return NextResponse.json(
|
||||
{
|
||||
success: true,
|
||||
message: "Grup berhasil diedit",
|
||||
data,
|
||||
},
|
||||
{ status: 200 }
|
||||
);
|
||||
// create log user
|
||||
const log = await createLogUser({ act: 'UPDATE', desc: 'User mengedit data grup', table: 'group', data: id })
|
||||
|
||||
return NextResponse.json( { success: true, message: "Grup berhasil diedit", data, }, { status: 200 } );
|
||||
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return NextResponse.json({ success: false, message: "Gagal mengedit grup, coba lagi nanti", reason: (error as Error).message, }, { status: 500 });
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { prisma } from "@/module/_global";
|
||||
import { funGetUserByCookies } from "@/module/auth";
|
||||
import { createLogUser } from "@/module/user";
|
||||
import { revalidatePath, revalidateTag } from "next/cache";
|
||||
import { NextResponse } from "next/server";
|
||||
|
||||
@@ -56,6 +57,9 @@ export async function POST(request: Request) {
|
||||
name,
|
||||
idVillage: String(villaId)
|
||||
},
|
||||
select: {
|
||||
id: true
|
||||
}
|
||||
});
|
||||
|
||||
revalidatePath('/api/group?active=true', "page")
|
||||
@@ -63,6 +67,10 @@ export async function POST(request: Request) {
|
||||
revalidatePath('/group?active=true', 'page')
|
||||
revalidateTag('group')
|
||||
|
||||
// create log user
|
||||
const log = await createLogUser({ act: 'CREATE', desc: 'User membuat data grup', table: 'group', data: data.id })
|
||||
|
||||
|
||||
return NextResponse.json({ success: true, message: "Berhasil menambahkan grup", data, }, { status: 200 });
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { prisma } from "@/module/_global";
|
||||
import { funGetUserByCookies } from "@/module/auth";
|
||||
import { createLogUser } from "@/module/user";
|
||||
import _ from "lodash";
|
||||
import { NextResponse } from "next/server";
|
||||
|
||||
@@ -43,14 +44,11 @@ export async function POST(request: Request, context: { params: { id: string } }
|
||||
})
|
||||
}
|
||||
|
||||
// create log user
|
||||
const log = await createLogUser({ act: 'CREATE', desc: 'User menambahkan anggota tugas divisi', table: 'divisionProject', data: id })
|
||||
|
||||
return NextResponse.json(
|
||||
{
|
||||
success: true,
|
||||
message: "Berhasil menambahkan anggota tugas",
|
||||
},
|
||||
{ status: 200 }
|
||||
);
|
||||
|
||||
return NextResponse.json( { success: true, message: "Berhasil menambahkan anggota tugas", }, { status: 200 } );
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return NextResponse.json({ success: false, message: "Gagal menambah anggota tugas, coba lagi nanti", reason: (error as Error).message, }, { status: 500 });
|
||||
@@ -92,14 +90,10 @@ export async function DELETE(request: Request, context: { params: { id: string }
|
||||
}
|
||||
})
|
||||
|
||||
// create log user
|
||||
const log = await createLogUser({ act: 'DELETE', desc: 'User mengeluarkan anggota dari tugas divisi', table: 'divisionProject', data: id })
|
||||
|
||||
return NextResponse.json(
|
||||
{
|
||||
success: true,
|
||||
message: "Berhasil mengeluarkan anggota",
|
||||
},
|
||||
{ status: 200 }
|
||||
);
|
||||
return NextResponse.json( { success: true, message: "Berhasil mengeluarkan anggota", }, { status: 200 } );
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return NextResponse.json({ success: false, message: "Gagal mengeluarkan anggota, coba lagi nanti", reason: (error as Error).message, }, { status: 500 });
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { prisma } from "@/module/_global";
|
||||
import { funGetUserByCookies } from "@/module/auth";
|
||||
import { createLogUser } from "@/module/user";
|
||||
import _ from "lodash";
|
||||
import moment from "moment";
|
||||
import "moment/locale/id"
|
||||
@@ -184,16 +185,15 @@ export async function POST(request: Request, context: { params: { id: string } }
|
||||
dateStart: new Date(moment(dateStart).format('YYYY-MM-DD')),
|
||||
dateEnd: new Date(moment(dateEnd).format('YYYY-MM-DD')),
|
||||
},
|
||||
select: {
|
||||
id: true
|
||||
}
|
||||
});
|
||||
|
||||
return NextResponse.json(
|
||||
{
|
||||
success: true,
|
||||
message: "Detail tugas berhasil ditambahkan",
|
||||
data,
|
||||
},
|
||||
{ status: 200 }
|
||||
);
|
||||
// create log user
|
||||
const log = await createLogUser({ act: 'CREATE', desc: 'User menambahkan detail tugas divisi', table: 'divisionProjectTask', data: create.id })
|
||||
|
||||
return NextResponse.json({ success: true, message: "Detail tugas berhasil ditambahkan", data, }, { status: 200 });
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return NextResponse.json({ success: false, message: "Gagal mengedit detail tugas, coba lagi nanti", reason: (error as Error).message, }, { status: 500 });
|
||||
@@ -238,13 +238,10 @@ export async function DELETE(request: Request, context: { params: { id: string }
|
||||
}
|
||||
});
|
||||
|
||||
return NextResponse.json(
|
||||
{
|
||||
success: true,
|
||||
message: "Tugas berhasil dibatalkan",
|
||||
},
|
||||
{ status: 200 }
|
||||
);
|
||||
// create log user
|
||||
const log = await createLogUser({ act: 'UPDATE', desc: 'User membatalkan tugas divisi', table: 'divisionProject', data: id })
|
||||
|
||||
return NextResponse.json({ success: true, message: "Tugas berhasil dibatalkan", }, { status: 200 });
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return NextResponse.json({ success: false, message: "Gagal membatalkan tugas, coba lagi nanti", reason: (error as Error).message, }, { status: 500 });
|
||||
@@ -287,13 +284,10 @@ export async function PUT(request: Request, context: { params: { id: string } })
|
||||
}
|
||||
});
|
||||
|
||||
return NextResponse.json(
|
||||
{
|
||||
success: true,
|
||||
message: "Tugas berhasil diedit",
|
||||
},
|
||||
{ status: 200 }
|
||||
);
|
||||
// create log user
|
||||
const log = await createLogUser({ act: 'UPDATE', desc: 'User mengupdate data tugas divisi', table: 'divisionProject', data: id })
|
||||
|
||||
return NextResponse.json( { success: true, message: "Tugas berhasil diedit", }, { status: 200 } );
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return NextResponse.json({ success: false, message: "Gagal mengedit tugas, coba lagi nanti", reason: (error as Error).message, }, { status: 500 });
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { prisma } from "@/module/_global";
|
||||
import { funGetUserByCookies } from "@/module/auth";
|
||||
import { createLogUser } from "@/module/user";
|
||||
import _ from "lodash";
|
||||
import moment from "moment";
|
||||
import { NextResponse } from "next/server";
|
||||
@@ -67,14 +68,10 @@ export async function DELETE(request: Request, context: { params: { id: string }
|
||||
}
|
||||
})
|
||||
|
||||
return NextResponse.json(
|
||||
{
|
||||
success: true,
|
||||
message: "Tugas berhasil dihapus",
|
||||
data,
|
||||
},
|
||||
{ status: 200 }
|
||||
);
|
||||
// create log user
|
||||
const log = await createLogUser({ act: 'DELETE', desc: 'User menghapus detail task divisi', table: 'divisionProjectTask', data: id })
|
||||
|
||||
return NextResponse.json({ success: true, message: "Tugas berhasil dihapus", data, }, { status: 200 });
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return NextResponse.json({ success: false, message: "Gagal menghapus tugas divisi, coba lagi nanti", reason: (error as Error).message, }, { status: 500 });
|
||||
@@ -146,14 +143,10 @@ export async function PUT(request: Request, context: { params: { id: string } })
|
||||
}
|
||||
})
|
||||
|
||||
return NextResponse.json(
|
||||
{
|
||||
success: true,
|
||||
message: "Status detail tugas berhasil diupdate",
|
||||
data,
|
||||
},
|
||||
{ status: 200 }
|
||||
);
|
||||
// create log user
|
||||
const log = await createLogUser({ act: 'UPDATE', desc: 'User mengupdate status detail task divisi', table: 'divisionProjectTask', data: id })
|
||||
|
||||
return NextResponse.json({ success: true, message: "Status detail tugas berhasil diupdate", data, }, { status: 200 });
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return NextResponse.json({ success: false, message: "Gagal mengupdate status detail tugas, coba lagi nanti", reason: (error as Error).message, }, { status: 500 });
|
||||
@@ -230,14 +223,10 @@ export async function POST(request: Request, context: { params: { id: string } }
|
||||
},
|
||||
});
|
||||
|
||||
return NextResponse.json(
|
||||
{
|
||||
success: true,
|
||||
message: "Detail tugas berhasil diedit",
|
||||
data,
|
||||
},
|
||||
{ status: 200 }
|
||||
);
|
||||
// create log user
|
||||
const log = await createLogUser({ act: 'UPDATE', desc: 'User mengupdate data detail task divisi', table: 'divisionProjectTask', data: id })
|
||||
|
||||
return NextResponse.json({ success: true, message: "Detail tugas berhasil diedit", data, }, { status: 200 });
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return NextResponse.json({ success: false, message: "Gagal mengedit detail tugas, coba lagi nanti", reason: (error as Error).message, }, { status: 500 });
|
||||
|
||||
@@ -4,6 +4,7 @@ import _ from "lodash";
|
||||
import { NextResponse } from "next/server";
|
||||
import fs from "fs";
|
||||
import path from "path";
|
||||
import { createLogUser } from "@/module/user";
|
||||
|
||||
// HAPUS DETAIL FILE, HAPUS FILE DI ASSETS DAN DATABASE (BUKAN PAKE ISACTIVE)
|
||||
export async function DELETE(request: Request, context: { params: { id: string } }) {
|
||||
@@ -55,15 +56,10 @@ export async function DELETE(request: Request, context: { params: { id: string }
|
||||
},
|
||||
});
|
||||
|
||||
// create log user
|
||||
const log = await createLogUser({ act: 'DELETE', desc: 'User menghpus file divisi', table: 'divisionProject', data: String(dataRelasi?.idProject) })
|
||||
|
||||
return NextResponse.json(
|
||||
{
|
||||
success: true,
|
||||
message: "File berhasil dihapus",
|
||||
data,
|
||||
},
|
||||
{ status: 200 }
|
||||
);
|
||||
return NextResponse.json({ success: true, message: "File berhasil dihapus", data, }, { status: 200 });
|
||||
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
@@ -155,7 +151,8 @@ export async function POST(request: Request, context: { params: { id: string } }
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
// create log user
|
||||
const log = await createLogUser({ act: 'CREATE', desc: 'User meambahkan file tugas divisi baru', table: 'divisionProject', data: id })
|
||||
return NextResponse.json({ success: true, message: "Berhasil membuat tugas divisi" }, { status: 200 });
|
||||
|
||||
} catch (error) {
|
||||
|
||||
@@ -5,6 +5,7 @@ import { NextResponse } from "next/server";
|
||||
import path from "path";
|
||||
import fs from "fs";
|
||||
import moment from "moment";
|
||||
import { createLogUser } from "@/module/user";
|
||||
|
||||
|
||||
// GET ALL DATA TUGAS DIVISI
|
||||
@@ -196,6 +197,9 @@ export async function POST(request: Request) {
|
||||
})
|
||||
}
|
||||
|
||||
// create log user
|
||||
const log = await createLogUser({ act: 'CREATE', desc: 'User membuat tugas divisi baru', table: 'divisionProject', data: data.id })
|
||||
|
||||
|
||||
return NextResponse.json({ success: true, message: "Berhasil membuat tugas divisi" }, { status: 200 });
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@ import { ActionIcon, Avatar, Badge, Box, Center, Divider, Flex, Grid, Group, Inp
|
||||
import { globalRole, LayoutDrawer, LayoutNavbarNew, SkeletonDetailDiscussionComment, SkeletonDetailDiscussionMember, SkeletonSingle, WARNA } from "@/module/_global";
|
||||
import { GrChatOption } from "react-icons/gr";
|
||||
import { LuSendHorizonal } from "react-icons/lu";
|
||||
import NavbarDetailDiscussion from "@/module/discussion/ui/navbar_detail_discussion";
|
||||
import { useState } from "react";
|
||||
import { funCreateComent, funGetAllDiscussion, funGetDiscussionById } from "../lib/api_discussion";
|
||||
import { useShallowEffect } from "@mantine/hooks";
|
||||
@@ -16,8 +15,7 @@ import { useHookstate } from "@hookstate/core";
|
||||
import { globalRefreshDiscussion } from "../lib/val_discussion";
|
||||
import { HiMenu } from "react-icons/hi";
|
||||
import DrawerDetailDiscussion from "./drawer_detail_discussion";
|
||||
import { funGetUserByCookies } from "@/module/auth";
|
||||
import { funGetDivisionById } from "@/module/division_new";
|
||||
import {globalIsAdminDivision } from "@/module/division_new";
|
||||
|
||||
export default function DetailDiscussion({ id, idDivision }: { id: string, idDivision: string }) {
|
||||
const [isData, setData] = useState<IDetailDiscussion>()
|
||||
@@ -27,20 +25,16 @@ export default function DetailDiscussion({ id, idDivision }: { id: string, idDiv
|
||||
const router = useRouter()
|
||||
const refresh = useHookstate(globalRefreshDiscussion)
|
||||
const roleLogin = useHookstate(globalRole)
|
||||
const [isAdmin, setAdmin] = useState(false)
|
||||
const [isCreator, setCreator] = useState(false)
|
||||
const adminLogin = useHookstate(globalIsAdminDivision)
|
||||
|
||||
const getData = async () => {
|
||||
try {
|
||||
setIsLoad(true)
|
||||
const response = await funGetDiscussionById(id)
|
||||
const res = await funGetDivisionById(param.id);
|
||||
const login = await funGetUserByCookies()
|
||||
const cek = res.data.member.some((i: any) => i.idUser == login.id && i.isAdmin == true)
|
||||
setAdmin(cek)
|
||||
setData(response.data)
|
||||
setIsLoad(false)
|
||||
setCreator(response.data.createdBy == login.id)
|
||||
setCreator(response.data.isCreator)
|
||||
} catch (error) {
|
||||
console.error(error)
|
||||
} finally {
|
||||
@@ -52,19 +46,25 @@ export default function DetailDiscussion({ id, idDivision }: { id: string, idDiv
|
||||
getData()
|
||||
}, [refresh.get()])
|
||||
|
||||
async function reloadData() {
|
||||
try {
|
||||
const response = await funGetDiscussionById(id)
|
||||
setData(response.data)
|
||||
} catch (error) {
|
||||
console.error(error)
|
||||
}
|
||||
}
|
||||
|
||||
const sendComent = async () => {
|
||||
try {
|
||||
if (isComent.trim() == "") {
|
||||
return toast.error("Masukkan Komentar Anda")
|
||||
}
|
||||
const response = await funCreateComent(id, {
|
||||
comment: isComent,
|
||||
idDiscussion: param.detail
|
||||
})
|
||||
const response = await funCreateComent(id, { comment: isComent, idDiscussion: param.detail })
|
||||
|
||||
if (response.success) {
|
||||
setIsComent("")
|
||||
getData()
|
||||
reloadData()
|
||||
} else {
|
||||
toast.error(response.message)
|
||||
}
|
||||
@@ -82,7 +82,7 @@ export default function DetailDiscussion({ id, idDivision }: { id: string, idDiv
|
||||
{/* <NavbarDetailDiscussion id={id} status={Number(isData?.status)} idDivision={idDivision} /> */}
|
||||
<LayoutNavbarNew back={`/division/${param.id}/discussion/`} title="Diskusi "
|
||||
menu={
|
||||
((roleLogin.get() != 'user' && roleLogin.get() != 'coadmin') || isAdmin || isCreator) ?
|
||||
((roleLogin.get() != 'user' && roleLogin.get() != 'coadmin') || adminLogin.get() || isCreator) ?
|
||||
<ActionIcon variant="light" onClick={() => setOpenDrawer(true)} bg={WARNA.bgIcon} size="lg" radius="lg" aria-label="Settings">
|
||||
<HiMenu size={20} color='white' />
|
||||
</ActionIcon>
|
||||
|
||||
@@ -15,6 +15,8 @@ import EditDivision from './ui/edit_division';
|
||||
import CreateReport from './ui/create_report';
|
||||
import ReportDivisionId from './ui/report_division_id';
|
||||
import { funGetDivisionById, funGetListDivisionByIdDivision, funGetSearchMemberDivision } from './lib/api_division';
|
||||
import { globalIsAdminDivision } from './lib/val_division';
|
||||
import WrapLayoutDivision from './ui/wrap_division';
|
||||
|
||||
export { CreateUsers };
|
||||
export { CreateAdminDivision };
|
||||
@@ -34,4 +36,6 @@ export { CreateReport }
|
||||
export { ReportDivisionId }
|
||||
export { funGetDivisionById }
|
||||
export { funGetListDivisionByIdDivision }
|
||||
export { funGetSearchMemberDivision }
|
||||
export { funGetSearchMemberDivision }
|
||||
export { globalIsAdminDivision }
|
||||
export { WrapLayoutDivision }
|
||||
@@ -1,4 +1,5 @@
|
||||
import { hookstate } from "@hookstate/core";
|
||||
import { IFormMemberDivision } from "./type_division";
|
||||
|
||||
export const globalMemberDivision = hookstate<IFormMemberDivision[]>([]);
|
||||
export const globalMemberDivision = hookstate<IFormMemberDivision[]>([]);
|
||||
export const globalIsAdminDivision = hookstate<boolean>(false)
|
||||
28
src/module/division_new/ui/wrap_division.tsx
Normal file
28
src/module/division_new/ui/wrap_division.tsx
Normal file
@@ -0,0 +1,28 @@
|
||||
'use client'
|
||||
import { useHookstate } from "@hookstate/core";
|
||||
import { useShallowEffect } from "@mantine/hooks";
|
||||
import { globalIsAdminDivision } from "../lib/val_division";
|
||||
import { funGetDivisionById } from "../lib/api_division";
|
||||
import { useParams } from "next/navigation";
|
||||
import { funGetUserByCookies } from "@/module/auth";
|
||||
|
||||
export default function WrapLayoutDivision({ children }: { children: React.ReactNode }) {
|
||||
const isAdmin = useHookstate(globalIsAdminDivision)
|
||||
const param = useParams<{ id: string }>()
|
||||
|
||||
const getData = async () => {
|
||||
const res = await funGetDivisionById(param.id);
|
||||
const login = await funGetUserByCookies()
|
||||
const cek = res.data.member.some((i: any) => i.idUser == login.id && i.isAdmin == true)
|
||||
isAdmin.set(cek)
|
||||
}
|
||||
|
||||
useShallowEffect(() => {
|
||||
getData()
|
||||
}, [])
|
||||
return (
|
||||
<>
|
||||
{children}
|
||||
</>
|
||||
);
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
'use client'
|
||||
import { LayoutDrawer, SkeletonSingle, WARNA } from "@/module/_global";
|
||||
import { globalRole, LayoutDrawer, SkeletonSingle, WARNA } from "@/module/_global";
|
||||
import { Box, Group, Flex, Avatar, Text, SimpleGrid, Stack, Grid } from "@mantine/core";
|
||||
import { useShallowEffect } from "@mantine/hooks";
|
||||
import { useParams, useRouter } from "next/navigation";
|
||||
@@ -10,6 +10,8 @@ import { IDataMemberTaskDivision } from "../lib/type_task";
|
||||
import { FaUser } from "react-icons/fa6";
|
||||
import { IoIosCloseCircle } from "react-icons/io";
|
||||
import LayoutModal from "@/module/_global/layout/layout_modal";
|
||||
import { useHookstate } from "@hookstate/core";
|
||||
import { globalIsAdminDivision } from "@/module/division_new";
|
||||
|
||||
|
||||
export default function ListAnggotaDetailTask() {
|
||||
@@ -20,6 +22,8 @@ export default function ListAnggotaDetailTask() {
|
||||
const [isOpenModal, setOpenModal] = useState(false)
|
||||
const [dataChoose, setDataChoose] = useState({ id: '', name: '' })
|
||||
const router = useRouter()
|
||||
const roleLogin = useHookstate(globalRole)
|
||||
const adminLogin = useHookstate(globalIsAdminDivision)
|
||||
|
||||
async function getOneData() {
|
||||
try {
|
||||
@@ -140,15 +144,18 @@ export default function ListAnggotaDetailTask() {
|
||||
<Text c={WARNA.biruTua}>Lihat profil</Text>
|
||||
</Box>
|
||||
</Flex>
|
||||
|
||||
<Flex onClick={() => { setOpenModal(true) }} justify={'center'} align={'center'} direction={'column'} >
|
||||
<Box>
|
||||
<IoIosCloseCircle size={30} color={WARNA.biruTua} />
|
||||
</Box>
|
||||
<Box>
|
||||
<Text c={WARNA.biruTua}>Keluarkan anggota</Text>
|
||||
</Box>
|
||||
</Flex>
|
||||
{
|
||||
(roleLogin.get() != "user" && roleLogin.get() != "coadmin") || adminLogin.get() ?
|
||||
<Flex onClick={() => { setOpenModal(true) }} justify={'center'} align={'center'} direction={'column'} >
|
||||
<Box>
|
||||
<IoIosCloseCircle size={30} color={WARNA.biruTua} />
|
||||
</Box>
|
||||
<Box>
|
||||
<Text c={WARNA.biruTua}>Keluarkan anggota</Text>
|
||||
</Box>
|
||||
</Flex>
|
||||
: <></>
|
||||
}
|
||||
</SimpleGrid>
|
||||
</Stack>
|
||||
</Box>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { WARNA } from "@/module/_global";
|
||||
import { ActionIcon, Avatar, Badge, Box, Card, Center, Divider, Flex, Grid, Group, Progress, Skeleton, Text, TextInput, Title } from "@mantine/core";
|
||||
import { ActionIcon, Avatar, Box, Card, Center, Divider, Flex, Grid, Group, Progress, Skeleton, Text, TextInput, Title } from "@mantine/core";
|
||||
import { useParams, useRouter, useSearchParams } from "next/navigation";
|
||||
import { useState } from "react";
|
||||
import { HiMagnifyingGlass, HiMiniPresentationChartBar, HiOutlineListBullet, HiSquares2X2 } from "react-icons/hi2";
|
||||
@@ -67,6 +67,7 @@ export default function ListDivisionTask() {
|
||||
radius={30}
|
||||
leftSection={<HiMagnifyingGlass size={20} />}
|
||||
placeholder="Pencarian"
|
||||
onChange={(val) => setSearchQuery(val.target.value)}
|
||||
/>
|
||||
</Grid.Col>
|
||||
<Grid.Col span={'auto'}>
|
||||
@@ -181,7 +182,7 @@ export default function ListDivisionTask() {
|
||||
<Avatar>
|
||||
<MdAccountCircle size={32} color={WARNA.biruTua} />
|
||||
</Avatar>
|
||||
<Avatar>+{v.member - 1}</Avatar>
|
||||
<Avatar>{(v.member == 0) ? "0" : "+" + (v.member - 1)}</Avatar>
|
||||
</Avatar.Group>
|
||||
</Group>
|
||||
</Box>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
'use client'
|
||||
import { LayoutDrawer, LayoutNavbarNew, WARNA } from "@/module/_global";
|
||||
import { globalRole, LayoutDrawer, LayoutNavbarNew, WARNA } from "@/module/_global";
|
||||
import { ActionIcon, Box, Flex, SimpleGrid, Stack, Text } from "@mantine/core";
|
||||
import { useParams, useRouter } from "next/navigation";
|
||||
import { useState } from "react";
|
||||
@@ -10,12 +10,16 @@ import { HiMenu } from "react-icons/hi";
|
||||
import { IoAddCircle } from "react-icons/io5";
|
||||
import { FaFileCirclePlus, FaPencil, FaUsers } from "react-icons/fa6";
|
||||
import { MdCancel } from "react-icons/md";
|
||||
import { globalIsAdminDivision } from "@/module/division_new";
|
||||
import { useHookstate } from "@hookstate/core";
|
||||
|
||||
export default function NavbarDetailDivisionTask() {
|
||||
const router = useRouter()
|
||||
const param = useParams<{ id: string, detail: string }>()
|
||||
const [name, setName] = useState('')
|
||||
const [isOpen, setOpen] = useState(false)
|
||||
const roleLogin = useHookstate(globalRole)
|
||||
const adminLogin = useHookstate(globalIsAdminDivision)
|
||||
|
||||
async function getOneData() {
|
||||
try {
|
||||
@@ -75,22 +79,6 @@ export default function NavbarDetailDivisionTask() {
|
||||
</Box>
|
||||
</Flex>
|
||||
|
||||
<Flex justify={'center'} align={'center'} direction={'column'}
|
||||
style={{
|
||||
cursor: 'pointer'
|
||||
}}
|
||||
onClick={() => {
|
||||
router.push(param.detail + '/add-member')
|
||||
}}
|
||||
>
|
||||
<Box>
|
||||
<FaUsers size={30} color={WARNA.biruTua} />
|
||||
</Box>
|
||||
<Box>
|
||||
<Text c={WARNA.biruTua} ta='center'>Tambah anggota</Text>
|
||||
</Box>
|
||||
</Flex>
|
||||
|
||||
<Flex justify={'center'} align={'center'} direction={'column'}
|
||||
style={{
|
||||
cursor: 'pointer'
|
||||
@@ -107,33 +95,51 @@ export default function NavbarDetailDivisionTask() {
|
||||
</Box>
|
||||
</Flex>
|
||||
|
||||
<Flex justify={'center'} align={'center'} direction={'column'}
|
||||
style={{
|
||||
cursor: 'pointer'
|
||||
}}
|
||||
onClick={() => { router.push(param.detail + '/edit') }}
|
||||
>
|
||||
<Box>
|
||||
<FaPencil size={30} color={WARNA.biruTua} />
|
||||
</Box>
|
||||
<Box>
|
||||
<Text c={WARNA.biruTua} ta='center'>Edit</Text>
|
||||
</Box>
|
||||
</Flex>
|
||||
{
|
||||
(roleLogin.get() != "user" && roleLogin.get() != "coadmin") || adminLogin.get() ?
|
||||
<>
|
||||
<Flex justify={'center'} align={'center'} direction={'column'}
|
||||
style={{
|
||||
cursor: 'pointer'
|
||||
}}
|
||||
onClick={() => { router.push(param.detail + '/add-member') }} >
|
||||
<Box>
|
||||
<FaUsers size={30} color={WARNA.biruTua} />
|
||||
</Box>
|
||||
<Box>
|
||||
<Text c={WARNA.biruTua} ta='center'>Tambah anggota</Text>
|
||||
</Box>
|
||||
</Flex>
|
||||
|
||||
<Flex justify={'center'} align={'center'} direction={'column'}
|
||||
style={{
|
||||
cursor: 'pointer'
|
||||
}}
|
||||
onClick={() => { router.push(param.detail + '/edit') }} >
|
||||
<Box>
|
||||
<FaPencil size={30} color={WARNA.biruTua} />
|
||||
</Box>
|
||||
<Box>
|
||||
<Text c={WARNA.biruTua} ta='center'>Edit</Text>
|
||||
</Box>
|
||||
</Flex>
|
||||
|
||||
<Flex justify={'center'} align={'center'} direction={'column'}
|
||||
style={{
|
||||
cursor: 'pointer'
|
||||
}}
|
||||
onClick={() => { router.push(param.detail + '/cancel') }} >
|
||||
<Box>
|
||||
<MdCancel size={30} color={WARNA.biruTua} />
|
||||
</Box>
|
||||
<Box>
|
||||
<Text c={WARNA.biruTua} ta='center'>Batal</Text>
|
||||
</Box>
|
||||
</Flex>
|
||||
</> : <></>
|
||||
|
||||
}
|
||||
|
||||
<Flex justify={'center'} align={'center'} direction={'column'}
|
||||
style={{
|
||||
cursor: 'pointer'
|
||||
}}
|
||||
onClick={() => { router.push(param.detail + '/cancel') }}
|
||||
>
|
||||
<Box>
|
||||
<MdCancel size={30} color={WARNA.biruTua} />
|
||||
</Box>
|
||||
<Box>
|
||||
<Text c={WARNA.biruTua} ta='center'>Batal</Text>
|
||||
</Box>
|
||||
</Flex>
|
||||
|
||||
</SimpleGrid>
|
||||
</Stack>
|
||||
|
||||
@@ -1,21 +1,27 @@
|
||||
'use client'
|
||||
import { LayoutDrawer, LayoutNavbarNew, WARNA } from "@/module/_global";
|
||||
import { globalRole, LayoutDrawer, LayoutNavbarNew, WARNA } from "@/module/_global";
|
||||
import { ActionIcon } from "@mantine/core";
|
||||
import { useState } from "react";
|
||||
import { HiMenu } from "react-icons/hi";
|
||||
import DrawerDivisionTask from "./drawer_division_task";
|
||||
import { useParams } from "next/navigation";
|
||||
import { useHookstate } from "@hookstate/core";
|
||||
import { globalIsAdminDivision } from "@/module/division_new";
|
||||
|
||||
export default function NavbarDivisionTask() {
|
||||
const [openDrawer, setOpenDrawer] = useState(false)
|
||||
const param = useParams<{ id: string}>()
|
||||
const param = useParams<{ id: string }>()
|
||||
const roleLogin = useHookstate(globalRole)
|
||||
const adminLogin = useHookstate(globalIsAdminDivision)
|
||||
|
||||
return (
|
||||
<>
|
||||
<LayoutNavbarNew back={`/division/${param.id}`} title="Divisi - Tugas"
|
||||
menu={
|
||||
menu={((roleLogin.get() != "user" && roleLogin.get() != "coadmin") || adminLogin.get()) ?
|
||||
<ActionIcon variant="light" onClick={() => setOpenDrawer(true)} bg={WARNA.bgIcon} size="lg" radius="lg" aria-label="Settings">
|
||||
<HiMenu size={20} color='white' />
|
||||
</ActionIcon>
|
||||
: <></>
|
||||
}
|
||||
/>
|
||||
<LayoutDrawer opened={openDrawer} title={'Menu'} onClose={() => setOpenDrawer(false)}>
|
||||
|
||||
@@ -17,26 +17,26 @@ export default function TabsDivisionTask() {
|
||||
|
||||
const dataStatus = [
|
||||
{
|
||||
id: "0",
|
||||
title: "Segera",
|
||||
icon: <RiProgress3Line style={iconStyle} />
|
||||
id: "0",
|
||||
title: "Segera",
|
||||
icon: <TbClockPause style={iconStyle} />
|
||||
},
|
||||
{
|
||||
id: "1",
|
||||
title: "Dikerjakan",
|
||||
icon: <TbClockPause style={iconStyle} />
|
||||
id: "1",
|
||||
title: "Dikerjakan",
|
||||
icon: <RiProgress3Line style={iconStyle} />
|
||||
},
|
||||
{
|
||||
id: "2",
|
||||
title: "Selesai",
|
||||
icon: <IoIosCheckmarkCircleOutline style={iconStyle} />
|
||||
id: "2",
|
||||
title: "Selesai",
|
||||
icon: <IoIosCheckmarkCircleOutline style={iconStyle} />
|
||||
},
|
||||
{
|
||||
id: "3",
|
||||
title: "Batal",
|
||||
icon: <IoCloseCircleOutline style={iconStyle} />
|
||||
id: "3",
|
||||
title: "Batal",
|
||||
icon: <IoCloseCircleOutline style={iconStyle} />
|
||||
}
|
||||
]
|
||||
]
|
||||
|
||||
return (
|
||||
<Box p={20}>
|
||||
@@ -77,7 +77,7 @@ export default function TabsDivisionTask() {
|
||||
color={
|
||||
status == item.id
|
||||
? "white"
|
||||
: WARNA.biruTua
|
||||
: (status == null && item.id == "0") ? "white" : WARNA.biruTua
|
||||
}
|
||||
onClick={() => { router.push("?status=" + item.id) }}
|
||||
defaultValue={(status == "1" || status == "2" || status == "3") ? status : "0"}
|
||||
@@ -85,7 +85,7 @@ export default function TabsDivisionTask() {
|
||||
bg={
|
||||
status == item.id
|
||||
? "#FF9861"
|
||||
: "transparent"
|
||||
: (status == null && item.id == "0") ? "#FF9861" : "transparent"
|
||||
}
|
||||
>
|
||||
{item.icon}
|
||||
|
||||
Reference in New Issue
Block a user