fix: project kegiatan

Deskripsi:
- fix format tgl di server soalnya di server -1 day, di tambah kegiatan, tambah task kegiatan, dan edit task kegiatan
- hapus pilih semua pada bagian pilih anggota

No Issues
This commit is contained in:
amel
2024-11-07 17:21:59 +08:00
parent 14b1c9c012
commit aac649b01f
12 changed files with 34 additions and 32 deletions

View File

@@ -1,5 +1,4 @@
import { EditDetailTaskProject } from "@/module/project"; import { EditDetailTaskProject } from "@/module/project";
import React from "react"; import React from "react";
function Page() { function Page() {

View File

@@ -173,8 +173,8 @@ export async function POST(request: Request, context: { params: { id: string } }
data: { data: {
title: name, title: name,
idProject: id, idProject: id,
dateStart: new Date(moment(dateStart).format('YYYY-MM-DD')), dateStart: new Date(dateStart),
dateEnd: new Date(moment(dateEnd).format('YYYY-MM-DD')), dateEnd: new Date(dateEnd),
}, },
select: { select: {
id: true id: true

View File

@@ -1,7 +1,6 @@
import { prisma } from "@/module/_global"; import { prisma } from "@/module/_global";
import { funGetUserByCookies } from "@/module/auth"; import { funGetUserByCookies } from "@/module/auth";
import { createLogUser } from "@/module/user"; import { createLogUser } from "@/module/user";
import moment from "moment";
import { NextResponse } from "next/server"; import { NextResponse } from "next/server";
@@ -231,8 +230,8 @@ export async function POST(request: Request, context: { params: { id: string } }
}, },
data: { data: {
title, title,
dateStart: new Date(moment(dateStart).format('YYYY-MM-DD')), dateStart: new Date(dateStart),
dateEnd: new Date(moment(dateEnd).format('YYYY-MM-DD')), dateEnd: new Date(dateEnd),
} }
}) })

View File

@@ -2,7 +2,6 @@ import { DIR, funUploadFile, prisma } from "@/module/_global";
import { funGetUserByCookies } from "@/module/auth"; import { funGetUserByCookies } from "@/module/auth";
import { createLogUser } from "@/module/user"; import { createLogUser } from "@/module/user";
import _ from "lodash"; import _ from "lodash";
import moment from "moment";
import { NextResponse } from "next/server"; import { NextResponse } from "next/server";
@@ -157,8 +156,8 @@ export async function POST(request: Request) {
..._.omit(v, ["dateStart", "dateEnd", "name"]), ..._.omit(v, ["dateStart", "dateEnd", "name"]),
idProject: data.id, idProject: data.id,
title: v.title, title: v.title,
dateStart: new Date(moment(v.dateStart).format('YYYY-MM-DD')), dateStart: new Date(v.dateStart),
dateEnd: new Date(moment(v.dateEnd).format('YYYY-MM-DD')), dateEnd: new Date(v.dateEnd),
})) }))
const insertTask = await prisma.projectTask.createMany({ const insertTask = await prisma.projectTask.createMany({

View File

@@ -1,4 +1,4 @@
import { IFormAddDetailproject, IFormAddMemberProject, IFormDateProject } from "./type_project"; import { IFormAddDetailproject, IFormAddMemberProject, IFormDateProject, NewIFormDateProject } from "./type_project";
export const funGetAllProject = async (path?: string) => { export const funGetAllProject = async (path?: string) => {
@@ -54,7 +54,7 @@ export const funGetDetailProject = async (path: string) => {
return await response.json().catch(() => null); return await response.json().catch(() => null);
} }
export const funEditDetailProject = async (path: string, data: IFormDateProject) => { export const funEditDetailProject = async (path: string, data: NewIFormDateProject) => {
const response = await fetch(`/api/project/detail/${path}`, { const response = await fetch(`/api/project/detail/${path}`, {
method: "POST", method: "POST",
headers: { headers: {

View File

@@ -45,6 +45,12 @@ export interface IFormDateProject {
title: string, title: string,
} }
export interface NewIFormDateProject{
dateStart: string,
dateEnd: string,
title: string,
}
export interface IFormMemberProject { export interface IFormMemberProject {
idUser: string, idUser: string,
name: string, name: string,
@@ -53,8 +59,8 @@ export interface IFormMemberProject {
export interface IFormAddDetailproject { export interface IFormAddDetailproject {
dateStart: Date, dateStart: string,
dateEnd: Date, dateEnd: string,
name: string name: string
} }

View File

@@ -4,13 +4,13 @@ import LayoutModal from '@/module/_global/layout/layout_modal';
import { useHookstate } from '@hookstate/core'; import { useHookstate } from '@hookstate/core';
import { Box, Button, Flex, Group, rem, SimpleGrid, Stack, Text, TextInput } from '@mantine/core'; import { Box, Button, Flex, Group, rem, SimpleGrid, Stack, Text, TextInput } from '@mantine/core';
import { DatePicker } from '@mantine/dates'; import { DatePicker } from '@mantine/dates';
import { useShallowEffect } from '@mantine/hooks';
import moment from 'moment'; import moment from 'moment';
import { useParams, useRouter } from 'next/navigation'; import { useParams, useRouter } from 'next/navigation';
import { useState } from 'react'; import { useState } from 'react';
import toast from 'react-hot-toast'; import toast from 'react-hot-toast';
import { useWibuRealtime } from 'wibu-realtime'; import { useWibuRealtime } from 'wibu-realtime';
import { funCreateDetailProject } from '../lib/api_project'; import { funCreateDetailProject } from '../lib/api_project';
import { useShallowEffect } from '@mantine/hooks';
export default function AddDetailTaskProject() { export default function AddDetailTaskProject() {
const [value, setValue] = useState<[Date | null, Date | null]>([null, null]); const [value, setValue] = useState<[Date | null, Date | null]>([null, null]);
@@ -35,8 +35,8 @@ export default function AddDetailTaskProject() {
setLoadingModal(true) setLoadingModal(true)
const res = await funCreateDetailProject(param.id, { const res = await funCreateDetailProject(param.id, {
name, name,
dateStart: (value[0] != null) ? value[0] : new Date, dateStart: (value[0] != null) ? moment(value[0]).format('YYYY-MM-DD') : moment(new Date).format('YYYY-MM-DD'),
dateEnd: (value[1] != null) ? value[1] : new Date, dateEnd: (value[1] != null) ? moment(value[1]).format('YYYY-MM-DD') : moment(new Date).format('YYYY-MM-DD'),
}) })
if (res.success) { if (res.success) {

View File

@@ -223,12 +223,12 @@ export default function AddMemberDetailProject() {
</Box> </Box>
<Box p={20}> <Box p={20}>
<Group justify="space-between" mt={100} onClick={handleSelectAll}> {/* <Group justify="space-between" mt={100} onClick={handleSelectAll}>
<Text c={tema.get().utama} fw={"bold"}> <Text c={tema.get().utama} fw={"bold"}>
Pilih Semua Anggota Pilih Semua Anggota
</Text> </Text>
{selectAll ? <FaCheck style={{ marginRight: 10 }} /> : ""} {selectAll ? <FaCheck style={{ marginRight: 10 }} /> : ""}
</Group> </Group> */}
{loading ? {loading ?
Array(8) Array(8)
.fill(null) .fill(null)

View File

@@ -3,15 +3,15 @@ import { LayoutNavbarNew, TEMA } from "@/module/_global";
import { useHookstate } from "@hookstate/core"; import { useHookstate } from "@hookstate/core";
import { ActionIcon, Box, Button, Flex, Group, rem, SimpleGrid, Stack, Text, TextInput } from "@mantine/core"; import { ActionIcon, Box, Button, Flex, Group, rem, SimpleGrid, Stack, Text, TextInput } from "@mantine/core";
import { DatePicker } from "@mantine/dates"; import { DatePicker } from "@mantine/dates";
import { useShallowEffect } from "@mantine/hooks";
import moment from "moment"; import moment from "moment";
import { useState } from "react"; import { useState } from "react";
import toast from "react-hot-toast"; import toast from "react-hot-toast";
import { HiChevronLeft } from "react-icons/hi2"; import { HiChevronLeft } from "react-icons/hi2";
import { IFormDateProject } from "../lib/type_project"; import { NewIFormDateProject } from "../lib/type_project";
import { useShallowEffect } from "@mantine/hooks";
export default function ViewDateEndTask({ onClose, onSet }: { onClose: (val: boolean) => void, onSet: (val: IFormDateProject) => void }) { export default function ViewDateEndTask({ onClose, onSet }: { onClose: (val: boolean) => void, onSet: (val: NewIFormDateProject) => void }) {
const [value, setValue] = useState<[Date | null, Date | null]>([null, null]); const [value, setValue] = useState<[Date | null, Date | null]>([null, null]);
const [title, setTitle] = useState("") const [title, setTitle] = useState("")
const tema = useHookstate(TEMA) const tema = useHookstate(TEMA)
@@ -29,8 +29,8 @@ export default function ViewDateEndTask({ onClose, onSet }: { onClose: (val: boo
return toast.error("Error! harus memasukkan judul tugas") return toast.error("Error! harus memasukkan judul tugas")
onSet({ onSet({
dateStart: value[0], dateStart: moment(value[0]).format('YYYY-MM-DD'),
dateEnd: value[1], dateEnd: moment(value[1]).format('YYYY-MM-DD'),
title: title title: title
}) })
} }

View File

@@ -15,7 +15,7 @@ import { FaTrash } from "react-icons/fa6";
import { IoIosArrowDropright } from "react-icons/io"; import { IoIosArrowDropright } from "react-icons/io";
import { useWibuRealtime } from "wibu-realtime"; import { useWibuRealtime } from "wibu-realtime";
import { funCreateProject } from "../lib/api_project"; import { funCreateProject } from "../lib/api_project";
import { IFormDateProject, IFormMemberProject, IListFileTaskProject } from "../lib/type_project"; import { IFormMemberProject, IListFileTaskProject, NewIFormDateProject } from "../lib/type_project";
import { globalMemberProject } from "../lib/val_project"; import { globalMemberProject } from "../lib/val_project";
import ViewDateEndTask from "./create_date_end_task"; import ViewDateEndTask from "./create_date_end_task";
import CreateUsersProject from "./create_users_project"; import CreateUsersProject from "./create_users_project";
@@ -32,7 +32,7 @@ export default function CreateProject() {
const member = useHookstate(globalMemberProject) const member = useHookstate(globalMemberProject)
const memberValue = member.get() as IFormMemberProject[] const memberValue = member.get() as IFormMemberProject[]
const [openTugas, setOpenTugas] = useState(false) const [openTugas, setOpenTugas] = useState(false)
const [dataTask, setDataTask] = useState<IFormDateProject[]>([]) const [dataTask, setDataTask] = useState<NewIFormDateProject[]>([])
const openRef = useRef<() => void>(null) const openRef = useRef<() => void>(null)
const [fileForm, setFileForm] = useState<any[]>([]) const [fileForm, setFileForm] = useState<any[]>([])
const [listFile, setListFile] = useState<IListFileTaskProject[]>([]) const [listFile, setListFile] = useState<IListFileTaskProject[]>([])

View File

@@ -42,8 +42,8 @@ export default function EditDetailTaskProject() {
setLoadingModal(true) setLoadingModal(true)
const res = await funEditDetailProject(param.id, { const res = await funEditDetailProject(param.id, {
title: name, title: name,
dateStart: value[0], dateStart: moment(value[0]).format('YYYY-MM-DD'),
dateEnd: value[1], dateEnd: moment(value[1]).format('YYYY-MM-DD'),
}) })

View File

@@ -1,10 +1,9 @@
import { Box, Center, Grid, Group, SimpleGrid, Spoiler, Text } from '@mantine/core'; import { Box, Center, Grid, Group, SimpleGrid, Text } from '@mantine/core';
import React from 'react';
import { AiOutlineFileSync } from "react-icons/ai";
import { IFormDateProject } from '../lib/type_project';
import moment from 'moment'; import moment from 'moment';
import { AiOutlineFileSync } from "react-icons/ai";
import { NewIFormDateProject } from '../lib/type_project';
export default function ResultsDateAndTask(data: IFormDateProject) { export default function ResultsDateAndTask(data: NewIFormDateProject) {
return ( return (
<Box pt={5}> <Box pt={5}>
<Box bg={"white"} style={{ <Box bg={"white"} style={{