| @@ -24,3 +24,12 @@ export type PostExpenseData = { | |||||
| receiptDate?: string | receiptDate?: string | ||||
| remarks?: string | remarks?: string | ||||
| } | } | ||||
| export const saveProjectExpense = async (data: PostExpenseData[]) => { | |||||
| const response = await serverFetchJson(`${BASE_API_URL}/project-expense/create`, { | |||||
| method: "POST", | |||||
| body: JSON.stringify(data), | |||||
| headers: { "Content-Type": "application/json" }, | |||||
| }); | |||||
| revalidateTag("projectExpenses"); | |||||
| return response; | |||||
| } | |||||
| @@ -86,14 +86,6 @@ export const saveStaff = async (data: CreateStaffInputs) => { | |||||
| console.log(newStaffList) | console.log(newStaffList) | ||||
| revalidateTag("staffs"); | revalidateTag("staffs"); | ||||
| return newStaffList | return newStaffList | ||||
| // } catch (e: any) { | |||||
| // console.log(e.response) | |||||
| // throw new ServerFetchError( | |||||
| // "Something went wrong fetching data in serverssssss.", | |||||
| // e.response, | |||||
| // ); | |||||
| // } | |||||
| }; | }; | ||||
| @@ -16,10 +16,13 @@ import { ProjectResult } from "@/app/api/projects"; | |||||
| import { | import { | ||||
| CreateNewExpense, | CreateNewExpense, | ||||
| PostExpenseData, | PostExpenseData, | ||||
| saveProjectExpense, | |||||
| } from "@/app/api/projectExpenses/actions"; | } from "@/app/api/projectExpenses/actions"; | ||||
| import ExpenseTable from "./ExpenseTable"; | import ExpenseTable from "./ExpenseTable"; | ||||
| import dayjs from "dayjs"; | import dayjs from "dayjs"; | ||||
| import { INPUT_DATE_FORMAT } from "@/app/utils/formatUtil"; | import { INPUT_DATE_FORMAT } from "@/app/utils/formatUtil"; | ||||
| import { submitDialog, successDialog } from "../Swal/CustomAlerts"; | |||||
| import { useRouter } from 'next/navigation'; | |||||
| interface Props { | interface Props { | ||||
| isOpen: boolean; | isOpen: boolean; | ||||
| @@ -44,6 +47,7 @@ type postData = { | |||||
| const CreateExpenseModal: React.FC<Props> = ({ isOpen, onClose, projects }) => { | const CreateExpenseModal: React.FC<Props> = ({ isOpen, onClose, projects }) => { | ||||
| const { t } = useTranslation(); | const { t } = useTranslation(); | ||||
| const formProps = useForm<postData>(); | const formProps = useForm<postData>(); | ||||
| const router = useRouter(); | |||||
| const onSubmit = useCallback<SubmitHandler<postData>>((data) => { | const onSubmit = useCallback<SubmitHandler<postData>>((data) => { | ||||
| const _data = data.data; | const _data = data.data; | ||||
| @@ -60,6 +64,17 @@ const CreateExpenseModal: React.FC<Props> = ({ isOpen, onClose, projects }) => { | |||||
| }; | }; | ||||
| }); | }); | ||||
| console.log(postData); | console.log(postData); | ||||
| submitDialog(async () => { | |||||
| const response = await saveProjectExpense(postData) | |||||
| console.log(response) | |||||
| if (response) { | |||||
| onClose() | |||||
| successDialog(t("Submit Success"), t).then(() => { | |||||
| router.replace("/expense"); | |||||
| }) | |||||
| } | |||||
| }, t) | |||||
| } catch (error) { | } catch (error) { | ||||
| console.log(error); | console.log(error); | ||||
| } | } | ||||
| @@ -28,15 +28,17 @@ const ExpenseSearchWrapper: React.FC & SubComponents = async () => { | |||||
| let filteredExpenses = expenses | let filteredExpenses = expenses | ||||
| if (teamId) { | if (teamId) { | ||||
| filteredExpenses = expenses.filter(e => e.teamId === teamId) | filteredExpenses = expenses.filter(e => e.teamId === teamId) | ||||
| } else { | |||||
| filteredExpenses = [] | |||||
| } | |||||
| } | |||||
| // else { | |||||
| // filteredExpenses = [] | |||||
| // } | |||||
| const _expenses = filteredExpenses.map((e) => { | const _expenses = filteredExpenses.map((e) => { | ||||
| const issueDate = e.issueDate; | |||||
| const receiptDate = e.receiptDate; | |||||
| const formattedIssueDate = dayjs([issueDate[0], issueDate[1], issueDate[2]].join()).format(OUTPUT_DATE_FORMAT) | |||||
| const formattedReceiptDate = dayjs([receiptDate[0], receiptDate[1], receiptDate[2]].join()).format(OUTPUT_DATE_FORMAT) | |||||
| const formattedIssueDate = dayjs([e.issueDate[0], e.issueDate[1], e.issueDate[2]].join()).format(OUTPUT_DATE_FORMAT) | |||||
| let formattedReceiptDate = "" | |||||
| if (e.receiptDate) { | |||||
| formattedReceiptDate = dayjs([e.receiptDate[0], e.receiptDate[1], e.receiptDate[2]].join()).format(OUTPUT_DATE_FORMAT) | |||||
| } | |||||
| return ({ | return ({ | ||||
| ...e, | ...e, | ||||
| issueDate: formattedIssueDate, | issueDate: formattedIssueDate, | ||||