script user role
This commit is contained in:
parent
28c94c5230
commit
4427fc2ed6
|
|
@ -1,13 +1,14 @@
|
|||
import MagazineTable from '@/components/table/magazine/magazine-table'
|
||||
import MenuDataTable from '@/components/table/master/master-menu/menu-data/menu-data-table'
|
||||
import MasterModuleTable from '@/components/table/master/master-module/master-module-table'
|
||||
import MasterUserLevelTable from '@/components/table/master/master-user-level/master-user-level-table'
|
||||
import React from 'react'
|
||||
import MappingUserLevel from "@/components/table/master/master-user-level/mapping-user-level";
|
||||
import MasterUserLevelTable from "@/components/table/master/master-user-level/master-user-level-table";
|
||||
import React from "react";
|
||||
|
||||
const AdminMasterUserLevel = () => {
|
||||
return (
|
||||
<div><MasterUserLevelTable /></div>
|
||||
)
|
||||
}
|
||||
return (
|
||||
// <div><MasterUserLevelTable /></div>
|
||||
<div>
|
||||
<MappingUserLevel />
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default AdminMasterUserLevel
|
||||
export default AdminMasterUserLevel;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,170 @@
|
|||
"use client";
|
||||
import {
|
||||
createUserLevel,
|
||||
editUserLevel,
|
||||
getUserLevel,
|
||||
} from "@/service/master-user-level";
|
||||
import { Button } from "@nextui-org/button";
|
||||
import { RootRaws } from "postcss/lib/root";
|
||||
import React, { useEffect, useState } from "react";
|
||||
|
||||
// Define the shape of the parsed data
|
||||
interface CSVRow {
|
||||
id: string;
|
||||
parent: string;
|
||||
name: string;
|
||||
level_number: string;
|
||||
group: string;
|
||||
}
|
||||
|
||||
export default function MappingUserLevel() {
|
||||
const [parsedData, setParsedData] = useState<CSVRow[] | null>(null);
|
||||
const [level2, setLevel2] = useState<any>();
|
||||
|
||||
// Function to parse the CSV data
|
||||
function parseCSV(csvText: string): CSVRow[] {
|
||||
const rows = csvText.split("\n");
|
||||
const headers = rows[0].split("\t"); // Assuming tab-delimited CSV
|
||||
const data: CSVRow[] = [];
|
||||
|
||||
for (let i = 1; i < rows.length; i++) {
|
||||
const row = rows[i].split("\t");
|
||||
|
||||
// Skip empty rows or rows that don't have the correct number of columns
|
||||
if (
|
||||
row.length === headers.length &&
|
||||
row.some((cell) => cell.trim() !== "")
|
||||
) {
|
||||
const temp = row[0].split(";");
|
||||
|
||||
if (temp[0] !== "") {
|
||||
temp[4].replace("/r", "");
|
||||
|
||||
const rowData: CSVRow = {
|
||||
id: temp[0],
|
||||
parent: temp[1],
|
||||
name: temp[2],
|
||||
level_number: temp[3],
|
||||
group: temp[4].replace("\r", ""),
|
||||
};
|
||||
if (i <= 3) {
|
||||
console.log("i", rowData);
|
||||
}
|
||||
data.push(rowData);
|
||||
}
|
||||
}
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
// Handle the file input change event
|
||||
const handleFileChange = (event: React.ChangeEvent<HTMLInputElement>) => {
|
||||
const file = event.target.files?.[0];
|
||||
if (file) {
|
||||
const reader = new FileReader();
|
||||
reader.onload = function (e) {
|
||||
const csvText = e.target?.result as string;
|
||||
const data = parseCSV(csvText);
|
||||
console.log("data", data);
|
||||
setParsedData(data);
|
||||
};
|
||||
reader.readAsText(file);
|
||||
}
|
||||
};
|
||||
|
||||
const doPostData = async () => {
|
||||
if (parsedData) {
|
||||
let level2Now = undefined;
|
||||
|
||||
for (let i = 0; i < parsedData.length; i++) {
|
||||
const temp = parsedData[i];
|
||||
if (temp.level_number === "2") {
|
||||
const request = {
|
||||
aliasName: temp.group,
|
||||
isActive: true,
|
||||
levelNumber: 2,
|
||||
name: temp.name,
|
||||
parentLevelId: 79,
|
||||
provinceId: 0,
|
||||
};
|
||||
const res = await createUserLevel(request);
|
||||
if (res?.error) {
|
||||
break;
|
||||
}
|
||||
setLevel2(res?.data?.data?.id);
|
||||
console.log("res?.data?.data?.id", res?.data?.data?.id);
|
||||
level2Now = res?.data?.data?.id;
|
||||
} else if (temp.level_number === "3") {
|
||||
const request = {
|
||||
aliasName: temp.group,
|
||||
isActive: true,
|
||||
levelNumber: 3,
|
||||
name: temp.name,
|
||||
parentLevelId: level2 || level2Now,
|
||||
provinceId: 0,
|
||||
};
|
||||
console.log("reqqq", request);
|
||||
const res = await createUserLevel(request);
|
||||
if (res?.error) {
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
console.log("data", temp);
|
||||
// const request = {
|
||||
// aliasName: temp.group,
|
||||
// isActive: true,
|
||||
// levelNumber: 1,
|
||||
// name: temp.name,
|
||||
// parentLevelId: 1,
|
||||
// provinceId: 0,
|
||||
// };
|
||||
// const res = await createUserLevel(request);
|
||||
// console.log("ress", res?.data?.data?.id);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
initFecth();
|
||||
}, []);
|
||||
|
||||
const initFecth = async () => {
|
||||
const res = await getUserLevel();
|
||||
const data = res?.data?.data;
|
||||
console.log("dataa", data);
|
||||
// for (const element of data) {
|
||||
// if (element.aliasName === "satker") {
|
||||
// console.log("namanya", element.id);
|
||||
// const request = {
|
||||
// aliasName: element.aliasName,
|
||||
// levelNumber: 2,
|
||||
// name: element.name,
|
||||
// parentLevelId: 692,
|
||||
// provinceId: 0,
|
||||
// };
|
||||
// console.log("reqq", request);
|
||||
// const response = await editUserLevel(request, element.id);
|
||||
// if (response?.error) {
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
};
|
||||
return (
|
||||
<div>
|
||||
<h1>Mapping User Level</h1>
|
||||
<Button onPress={doPostData}>Run</Button>
|
||||
{/* File input */}
|
||||
<input type="file" accept=".csv" onChange={handleFileChange} />
|
||||
|
||||
{/* Display parsed data */}
|
||||
{parsedData && (
|
||||
<div>
|
||||
<h2>Parsed Data:</h2>
|
||||
<pre>{JSON.stringify(parsedData, null, 2)}</pre>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
import {
|
||||
httpDeleteInterceptor,
|
||||
httpGet,
|
||||
httpPost,
|
||||
httpPut,
|
||||
} from "./http-config/axios-base-service";
|
||||
|
||||
export async function createUserLevel(data: any) {
|
||||
const headers = {
|
||||
"content-type": "application/json",
|
||||
};
|
||||
const pathUrl = `/user-levels`;
|
||||
return await httpPost(pathUrl, headers, data);
|
||||
}
|
||||
|
||||
export async function getUserLevel() {
|
||||
const headers = {
|
||||
"content-type": "application/json",
|
||||
};
|
||||
return await httpGet(`/user-levels?levelNumber=2&parentLevelId=79`, headers);
|
||||
}
|
||||
|
||||
export async function editUserLevel(data: any, id: number) {
|
||||
const headers = {
|
||||
"content-type": "application/json",
|
||||
};
|
||||
const pathUrl = `/user-levels/${id}`;
|
||||
return await httpPut(pathUrl, headers, data);
|
||||
}
|
||||
Loading…
Reference in New Issue