diff --git a/src/layout/MainLayout/Header/index.js b/src/layout/MainLayout/Header/index.js
index ea6c01e..25e0d66 100644
--- a/src/layout/MainLayout/Header/index.js
+++ b/src/layout/MainLayout/Header/index.js
@@ -149,6 +149,9 @@ function Header(props) {
Holiday Setting
+
+ DR Import
+
Announcement
diff --git a/src/pages/Setting/DrImport/index.js b/src/pages/Setting/DrImport/index.js
new file mode 100644
index 0000000..4918323
--- /dev/null
+++ b/src/pages/Setting/DrImport/index.js
@@ -0,0 +1,176 @@
+
+import * as React from "react";
+import * as HttpUtils from "utils/HttpUtils";
+import * as UrlUtils from "utils/ApiPathConst";
+
+import {
+ Grid, Typography, Button,
+ Stack, Box,
+ Dialog, DialogTitle, DialogContent, DialogActions,
+} from '@mui/material';
+import { notifyDownloadSuccess } from 'utils/CommonFunction';
+
+import { FormattedMessage, useIntl } from "react-intl";
+
+import titleBackgroundImg from 'assets/images/dashboard/gazette-bar.png'
+
+// ==============================|| DASHBOARD - DEFAULT ||============================== //
+
+const Index = () => {
+ const [isWarningPopUp, setIsWarningPopUp] = React.useState(false);
+ const [warningText, setWarningText] = React.useState("");
+ const [resultStr, setResultStr] = React.useState("");
+
+ const intl = useIntl();
+
+
+ const BackgroundHead = {
+ backgroundImage: `url(${titleBackgroundImg})`,
+ width: 'auto',
+ height: 'auto',
+ backgroundSize: 'contain',
+ backgroundRepeat: 'no-repeat',
+ backgroundColor: '#0C489E',
+ backgroundPosition: 'right'
+ }
+
+
+ const readFile = (event) => {
+ let file = event.target.files[0];
+ if (file) {
+ if (file.name.toLowerCase().substr(file.name.length - 5).includes(".xlsx")
+ ) {
+ HttpUtils.postWithFiles({
+ url: UrlUtils.DR_IMPORT,
+ params:null,
+ files: [event.target.files[0]],
+ onSuccess: function (responData) {
+ if(responData?.msg){
+ setResultStr(<>Error:
{responData?.msg}>)
+ }else if(responData?.success){
+ setResultStr(<>Success
Record Count: {responData.recordCount}>)
+ }
+ }
+ });
+ } else {
+ setWarningText(intl.formatMessage({ id: 'requireValidFileWithFormat' }));
+ setIsWarningPopUp(true);
+ setAttachment({});
+ document.getElementById("uploadFileBtn").value = "";
+ return;
+ }
+ }
+ document.getElementById("uploadFileBtn").value = "";
+ }
+
+ return (
+
+
+
+
+
+ DR Import
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {
+ readFile(event)
+ }}
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Result:
+
+ {resultStr}
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default Index;
\ No newline at end of file
diff --git a/src/routes/GLDUserRoutes.js b/src/routes/GLDUserRoutes.js
index a2f78c8..bfc21f6 100644
--- a/src/routes/GLDUserRoutes.js
+++ b/src/routes/GLDUserRoutes.js
@@ -22,6 +22,7 @@ const UserMaintainPage = Loadable(lazy(() => import('pages/User/GLDUserProfile')
const SystemSetting = Loadable(lazy(() => import('pages/Setting/SystemSetting')));
const AnnouncementDetails = Loadable(lazy(() => import('pages/Announcement/Details')));
const AnnouncementSearch = Loadable(lazy(() => import('pages/Announcement/Search')));
+const DrImport = Loadable(lazy(() => import('pages/Setting/DrImport')));
// ==============================|| MAIN ROUTING ||============================== //
@@ -100,6 +101,10 @@ const GLDUserRoutes = {
path: '/setting/announcement/details/:id',
element:
},
+ {
+ path: '/setting/drImport',
+ element:
+ },
]
},
]
diff --git a/src/utils/ApiPathConst.js b/src/utils/ApiPathConst.js
index bcd1daf..c44004b 100644
--- a/src/utils/ApiPathConst.js
+++ b/src/utils/ApiPathConst.js
@@ -67,6 +67,11 @@ export const POST_FILE_LIST = apiPath+'/file/list';
export const GET_FILE_DELETE = apiPath+'/file/delete';
//export const FILE_DOWN_GET = ({id,skey,filename})=>{ return apiPath+'/file/dl/'+id+'/'+skey+'/'+filename};
+export const DR_EXPORT = apiPath+'/settings/dr/export';
+export const DR_IMPORT = apiPath+'/settings/dr/import';
+
+
+
// POST request
//Login
export const POST_LOGIN = '/login';
diff --git a/src/utils/HttpUtils.js b/src/utils/HttpUtils.js
index 8209476..1c208ac 100644
--- a/src/utils/HttpUtils.js
+++ b/src/utils/HttpUtils.js
@@ -1,109 +1,110 @@
import axios from "axios";
-import {FILE_UP_POST, FILE_DOWN_GET} from "../utils/ApiPathConst";
+import { FILE_UP_POST, FILE_DOWN_GET } from "../utils/ApiPathConst";
-export const get = ({url, params, onSuccess, onFail, onError}) =>{
- axios.get(url,{
+export const get = ({ url, params, onSuccess, onFail, onError }) => {
+ axios.get(url, {
params: params
}).then(
- (response)=>{onResponse(response, onSuccess, onFail);}
+ (response) => { onResponse(response, onSuccess, onFail); }
).catch(error => {
- return handleError(error,onError);
+ return handleError(error, onError);
});
};
//TODO
-export const put = ({url,params, onSuccess, onFail, onError}) =>{
- axios.put(url,params).then(
- (response)=>{onResponse(response, onSuccess, onFail);}
+export const put = ({ url, params, onSuccess, onFail, onError }) => {
+ axios.put(url, params).then(
+ (response) => { onResponse(response, onSuccess, onFail); }
).catch(error => {
- return handleError(error,onError);
+ return handleError(error, onError);
});
};
-export const patch = ({url,params, onSuccess, onFail, onError}) =>{
- axios.patch(url,params).then(
- (response)=>{onResponse(response, onSuccess, onFail);}
+export const patch = ({ url, params, onSuccess, onFail, onError }) => {
+ axios.patch(url, params).then(
+ (response) => { onResponse(response, onSuccess, onFail); }
).catch(error => {
- return handleError(error,onError);
+ return handleError(error, onError);
});
};
-export const post = ({url, params, onSuccess, onFail, onError, headers}) =>{
- headers = headers?headers:{
- "Content-Type":"application/json"
+export const post = ({ url, params, onSuccess, onFail, onError, headers }) => {
+ headers = headers ? headers : {
+ "Content-Type": "application/json"
};
-
- axios.post(url,params,
+
+ axios.post(url, params,
{
- headers:headers
+ headers: headers
}).then(
- (response)=>{onResponse(response, onSuccess, onFail);}
- ).catch(error => {
- return handleError(error,onError);
- });
+ (response) => { onResponse(response, onSuccess, onFail); }
+ ).catch(error => {
+ return handleError(error, onError);
+ });
};
-export const postWithFiles = ({url, params, files, onSuccess, onFail, onError}) =>{
+export const postWithFiles = ({ url, params, files, onSuccess, onFail, onError }) => {
var formData = new FormData();
- for (let i = 0; i < files.length; i++){
+ for (let i = 0; i < files.length; i++) {
const file = files[i]
formData.append("multipartFileList", file);
}
- for (var key in params) {
- if(typeof(params[key]) ==='object'){
- formData.append(key, JSON.stringify(params[key]));
- }else{
- formData.append(key, params[key]);
- }
- }
-
- axios.post(url,formData,
- {headers: {"Content-Type":"multipart/form-data"}})
- .then(
- (response)=>{onResponse(response, onSuccess, onFail);}
- ).catch(error => {
- return handleError(error,onError);
- });
+ if (params)
+ for (var key in params) {
+ if (typeof (params[key]) === 'object') {
+ formData.append(key, JSON.stringify(params[key]));
+ } else {
+ formData.append(key, params[key]);
+ }
+ }
+
+ axios.post(url, formData,
+ { headers: { "Content-Type": "multipart/form-data" } })
+ .then(
+ (response) => { onResponse(response, onSuccess, onFail); }
+ ).catch(error => {
+ return handleError(error, onError);
+ });
};
-export const fileDownload = ({url, fileId, skey, filename, params, method, onResponse, onError}) =>{
- if(!url){
- url = FILE_DOWN_GET+"/"+fileId+"/"+skey+"/"+filename
+export const fileDownload = ({ url, fileId, skey, filename, params, method, onResponse, onError }) => {
+ if (!url) {
+ url = FILE_DOWN_GET + "/" + fileId + "/" + skey + "/" + filename
}
- if(method == 'post'){
- axios.post( url, params,
+ if (method == 'post') {
+ axios.post(url, params,
{
responseType: 'blob',
- headers:{
- "Content-Type":"application/json"
+ headers: {
+ "Content-Type": "application/json"
}
}
).then(
- (response)=>{
+ (response) => {
fileDownloadResponse(response, onResponse)
}
).catch(error => {
- return handleError(error,onError);
+ return handleError(error, onError);
});
- }else{
- axios.get( url,
+ } else {
+ axios.get(url,
{
responseType: 'blob',
- params:params
+ params: params
}
).then(
- (response)=>{
+ (response) => {
fileDownloadResponse(response, onResponse)
}
).catch(error => {
- return handleError(error,onError);
+ return handleError(error, onError);
});
}
};
-const fileDownloadResponse=(response, onResponse)=>{
- const fn = response.headers.get("content-disposition")?.split("filename=")[1]?.split('"')[1]?.trim()??filename;
+const fileDownloadResponse = (response, onResponse) => {
+ const fn = response.headers.get("content-disposition")?.split("filename=")[1]?.split('"')[1]?.trim() ?? filename;
const url = URL.createObjectURL(response.data);
const a = document.createElement('a');
a.href = url;
@@ -112,47 +113,47 @@ const fileDownloadResponse=(response, onResponse)=>{
a.click();
document.body.removeChild(a);
URL.revokeObjectURL(url);
- if(onResponse){
+ if (onResponse) {
onResponse();
}
}
-export const fileUpload = ({refType, refId, files, refCode, onSuccess, onFail, onError}) =>{
+export const fileUpload = ({ refType, refId, files, refCode, onSuccess, onFail, onError }) => {
postWithFiles({
url: FILE_UP_POST,
- params:{
+ params: {
refType: refType,
refId: refId,
refCode: refCode
},
files: files,
onSuccess: onSuccess,
- onFail:onFail,
- onError:onError
+ onFail: onFail,
+ onError: onError
});
};
-const onResponse= (response, onSuccess, onFail) =>{
- if (response.status >= 300 ||response.status < 200) {
+const onResponse = (response, onSuccess, onFail) => {
+ if (response.status >= 300 || response.status < 200) {
console.log("onFail");
- if(onFail){
+ if (onFail) {
onFail(response);
- }else{
+ } else {
console.log(response);
}
return;
}
-
- if(onSuccess){
+
+ if (onSuccess) {
onSuccess(response?.data);
}
}
-const handleError= (error, onError) =>{
- if(onError){
+const handleError = (error, onError) => {
+ if (onError) {
return onError(error);
- }else{
+ } else {
console.log(error);
return false;
}