Bläddra i källkod

update import leave

tags/Baseline_30082024_FRONTEND_UAT
cyril.tsui 1 år sedan
förälder
incheckning
28ade778d6
2 ändrade filer med 92 tillägg och 3 borttagningar
  1. +24
    -0
      src/app/api/timesheets/actions.ts
  2. +68
    -3
      src/components/ExcelFileImport/ExcelFileImport.tsx

+ 24
- 0
src/app/api/timesheets/actions.ts Visa fil

@@ -158,3 +158,27 @@ export const importTimesheets = async (data: FormData) => {

return importTimesheets;
};

export const importLeaves = async (data: FormData) => {
const importLeaves = await serverFetchString<string>(
`${BASE_API_URL}/timesheets/import-leave`,
{
method: "POST",
body: data,
},
);

return importLeaves;
};

export const rearrangeTimesheets = async () => {
const importLeaves = await serverFetchString<string>(
`${BASE_API_URL}/timesheets/rearrange`,
{
method: "POST",
// body: data,
},
);

return importLeaves;
};

+ 68
- 3
src/components/ExcelFileImport/ExcelFileImport.tsx Visa fil

@@ -5,8 +5,8 @@ import { FileUpload } from "@mui/icons-material";
import { Button, Grid, Stack } from "@mui/material";
import React, { ChangeEvent, useCallback } from "react";
import { useTranslation } from "react-i18next";
import { errorDialogWithContent, successDialog, successDialogWithContent } from "../Swal/CustomAlerts";
import { importTimesheets } from "@/app/api/timesheets/actions";
import { errorDialogWithContent, submitDialog, successDialog, successDialogWithContent } from "../Swal/CustomAlerts";
import { importLeaves, importTimesheets, rearrangeTimesheets } from "@/app/api/timesheets/actions";

interface Props {
}
@@ -34,9 +34,12 @@ const ExcelFileImport: React.FC<Props> = async ({ }) => {
case "importTimesheet":
response = await importTimesheets(formData)
break;
case "importLeave":
response = await importLeaves(formData)
break;
}

if (response === "Import Excel success") {
if (response.includes("Import Excel success")) {
successDialogWithContent(t("Import Success"), t(`${response}`), t)
} else {
errorDialogWithContent(t("Import Fail"), t(`${response}`), t)
@@ -52,6 +55,37 @@ const ExcelFileImport: React.FC<Props> = async ({ }) => {
return
}, [])

const handleButtonClick = useCallback(async (event: React.MouseEvent<HTMLElement>) => {
try {

const targetId = event.currentTarget.id
submitDialog(async () => {
let response: String = ""

switch (targetId) {
case "rearrangeTimesheet":
response = await rearrangeTimesheets()
break;
}
if (response.includes("Rearrange success")) {
successDialogWithContent(t("Rearrange Success"), t(`${response}`), t)
} else {
errorDialogWithContent(t("Rearrange Fail"), t(`${response}`), t)
}
}, t,
{
title: "Do you want to rearrange?",
confirmButtonText: "Rearrange"
})

} catch (err) {
console.log(err)
return false
}
}, [])

return (
<>
<Grid container rowGap={1.5}>
@@ -93,6 +127,37 @@ const ExcelFileImport: React.FC<Props> = async ({ }) => {
{t("Import Timesheet")}
</Button>
</Grid>
<Grid container>
<Button
id="rearrangeTimesheet"
variant="contained"
color="error"
startIcon={<FileUpload />}
component="label"
onClick={handleButtonClick}
>
{t("Rearrange Timesheet")}
</Button>
</Grid>
<Grid container>
<Button
variant="contained"
color="info"
startIcon={<FileUpload />}
component="label"
>
<input
id='importLeave'
type='file'
accept='.xlsx, .csv'
hidden
onChange={(event) => {
handleExcelFileImportClick(event)
}}
/>
{t("Import Leave")}
</Button>
</Grid>
</Grid>
</>
);


Laddar…
Avbryt
Spara