feat : update project

This commit is contained in:
lukman
2024-08-22 15:22:29 +08:00
parent 0c2694e9dc
commit 7c78d97427
26 changed files with 1526 additions and 131 deletions

View File

@@ -1,6 +1,7 @@
import { prisma } from "@/module/_global";
import { funGetUserByCookies } from "@/module/auth";
import _ from "lodash";
import moment from "moment";
import { NextResponse } from "next/server";
@@ -62,4 +63,89 @@ export async function GET(request: Request) {
console.error(error);
return NextResponse.json({ success: false, message: "Gagal mendapatkan project, coba lagi nanti", reason: (error as Error).message, }, { status: 500 });
}
}
// CREATE PROJECT
export async function POST(request: Request) {
try {
const user = await funGetUserByCookies()
if (user.id == undefined) {
return NextResponse.json({ success: false, message: "Anda harus login untuk mengakses ini" }, { status: 401 });
}
const { idVillage, idGroup, name, task, member, file } = (await request.json())
const userId = user.id
const data = await prisma.project.create({
data: {
idVillage: String(idVillage),
idGroup: String(idGroup),
name: name,
desc: "",
createdBy: String(userId)
},
select: {
id: true
}
})
if (task.length > 0) {
const dataProject = task.map((v: any) => ({
..._.omit(v, ["dateStart", "dateEnd", "name"]),
idProject: data.id,
name: v.name,
dateStart: new Date(moment(v.dateStart).format('YYYY-MM-DD')),
dateEnd: new Date(moment(v.dateEnd).format('YYYY-MM-DD')),
}))
const insertTask = await prisma.projectTask.createMany({
data: dataProject
})
}
if (member.length > 0) {
const dataMember = member.map((v: any) => ({
..._.omit(v, ["idUser", "name"]),
idProject: data.id,
idUser: v.idUser,
name: v.name
}))
const insertMember = await prisma.projectMember.createMany({
data: dataMember
})
}
let fileFix: any[] = []
if (file.length > 0) {
file.map((v: any, index: any) => {
const f: any = file[index].get('file')
const fName = f.name
const fExt = fName.split(".").pop()
// funUploadFile(fName, f)
const dataFile = {
name: fName,
extension: fExt,
idProject: data.id,
}
fileFix.push(dataFile)
})
const insertFile = await prisma.divisionProjectFile.createMany({
data: fileFix
})
}
return NextResponse.json({ success: true, message: "Berhasil mendapatkan divisi", data: data, }, { status: 200 });
} catch (error) {
console.error(error);
return NextResponse.json({ success: false, message: "Gagal mendapatkan divisi, coba lagi nanti", reason: (error as Error).message, }, { status: 500 });
}
}