diff --git a/data/.~lock.user.csv# b/data/.~lock.user.csv# deleted file mode 100644 index 00777a3..0000000 --- a/data/.~lock.user.csv# +++ /dev/null @@ -1 +0,0 @@ -,ov,d4,16.05.2023 12:44,file:///home/ov/.config/libreoffice/4; \ No newline at end of file diff --git a/data/appUser.db b/data/appUser.db index 545b3ac..ea0525f 100644 Binary files a/data/appUser.db and b/data/appUser.db differ diff --git a/src/components/NavBar.tsx b/src/components/NavBar.tsx index 9512dc4..1f5f1bc 100644 --- a/src/components/NavBar.tsx +++ b/src/components/NavBar.tsx @@ -4,7 +4,7 @@ import Link from 'next/link' export default function NavBar() { const { data: session } = useSession() - console.log(session) + // console.log(session) if (session) { return (
@@ -15,6 +15,7 @@ export default function NavBar() { Add School | School List| Add User | + Upload User | User List | diff --git a/src/pages/add-user-form.jsx b/src/pages/add-user-form.jsx index d1ef08b..db8043a 100644 --- a/src/pages/add-user-form.jsx +++ b/src/pages/add-user-form.jsx @@ -10,7 +10,7 @@ import NavBar from '../components/NavBar'; const typeParent = "parent" -export default function AddUser() { +export default function addUserForm() { const [allLanguage, setLanguage] = useState([ {lang: "Assamese", value: false}, {lang: "Bengali", value: false}, @@ -75,7 +75,7 @@ export default function AddUser() { } const [school, setSchool] = useState(null); useEffect(() => { - fetch(`https://management.beanstalkedu.com/items/school`) + fetch(`/api/listSchlools`) .then(res => res.json()) .then(data => { setSchool(data) @@ -102,13 +102,13 @@ export default function AddUser() { start_month: event.target.start_month.value, start_date: event.target.start_date.value, end_date: event.target.end_date.value, - annual: event.target.annual.value, + anual: event.target.anual.value, early_start_programme: event.target.early_start_programme.value, toddlers: event.target.toddlers.value, interakto: event.target.interakto.value, } const JSONdata = JSON.stringify(data) - const endpoint = '/api/addUsers' + const endpoint = '/api/addUser' const options = { method: 'POST', headers: { @@ -223,7 +223,7 @@ export default function AddUser() { @@ -242,8 +242,8 @@ export default function AddUser() { {individualValue &&
- - diff --git a/src/pages/api/addUsers.js b/src/pages/api/addUser.js similarity index 96% rename from src/pages/api/addUsers.js rename to src/pages/api/addUser.js index 81807b0..3aa0d7a 100644 --- a/src/pages/api/addUsers.js +++ b/src/pages/api/addUser.js @@ -14,7 +14,7 @@ export default function handler(req, res) { if(req.body.end_date) end_date =req.body.end_date; if(req.body.plan) plan =req.body.plan; if(req.body.klas) klas =req.body.klas; - if(req.body.lang) lang =req.body.lang; + if(req.body.lang) lang =req.body.lang; lang=JSON.stringify(lang); if(req.body.phone) phone =req.body.phone; if(req.body.pass) pass =req.body.pass; if(req.body.annual) annual =req.body.annual; diff --git a/src/pages/api/addUsersBulk.js b/src/pages/api/addUsersBulk.js index c15f89f..7d2ba17 100644 --- a/src/pages/api/addUsersBulk.js +++ b/src/pages/api/addUsersBulk.js @@ -1,36 +1,56 @@ import csv from 'csv-parser'; -import fs from 'fs'; +import formidable from "formidable"; +import fs from "fs"; import sqlite3 from 'sqlite3'; +export const config = { + api: { + bodyParser: false + } +}; + export default function handler(req,res) { + const form = new formidable.IncomingForm(); + form.parse(req, async function (err, fields, files) { - const DB_NAME = 'data/appUser.db'; - const TABLE_NAME = 'user'; + // console.log('ppp') + console.log(files.file.filepath) + const DB_NAME = 'data/appUser.db'; + const TABLE_NAME = 'user'; + + // Open a connection to the SQLite database + const db = new sqlite3.Database(DB_NAME); + + // fs.createReadStream('data/user.csv') + fs.createReadStream(files.file.filepath) + .pipe(csv()) + .on('data', (data) => { + const values = Object.values(data); + const placeholders = values.map(() => '?').join(','); + const sql = `INSERT INTO ${TABLE_NAME} (${Object.keys(data).join(',')}) VALUES (${placeholders})`; + db.run(sql, values, (err) => { + if (err) { + console.error(err); + } + }); + }) + .on('end', () => { + console.log(`Data inserted successfully into table ${TABLE_NAME}`); - // Open a connection to the SQLite database - const db = new sqlite3.Database(DB_NAME); - - fs.createReadStream('data/user.csv') - .pipe(csv()) - .on('data', (data) => { - const values = Object.values(data); - const placeholders = values.map(() => '?').join(','); - const sql = `INSERT INTO ${TABLE_NAME} (${Object.keys(data).join(',')}) VALUES (${placeholders})`; - db.run(sql, values, (err) => { - if (err) { - console.error(err); - } + fs.unlinkSync(files.file.filepath); + db.close(); }); - }) - .on('end', () => { - console.log(`Data inserted successfully into table ${TABLE_NAME}`); - // Close the database connection - db.close(); + + // console.log(fields) + // await saveFile(files.file,fields.fName? fields.fName:files.file.originalFilename ); + return res.status(201).send(""); }); - res.status(200).json({ name: 'John Doe' }) + + + res.status(200).json({ msg: 'ok' }) } diff --git a/src/pages/edit-school.jsx b/src/pages/edit-school.jsx index 4728526..da7ea0b 100644 --- a/src/pages/edit-school.jsx +++ b/src/pages/edit-school.jsx @@ -7,16 +7,35 @@ import Link from 'next/link' export default function EditSchool() { const router = useRouter(); - + const uploadToServer = async (event) => { + const body = new FormData(); + body.append("file", agreement.files[0]); + body.append("fName", `${router.query.school}.pdf`); + const response = await fetch("/api/fileUpload", { + method: "POST", + body + }); + }; + const uploadCsv = async (event) => { + // alert('p') + const body = new FormData(); + body.append("file", csv.files[0]); + // console.log('body') + // body.append("fName", `${router.query.school}.pdf`); + const response = await fetch("/api/addUsersBulk", { + method: "POST", + body + }); + }; const [school, setSchool] = useState({}); useEffect(()=>{ if(router.query.school && router.query.school>0 ){ - console.log(router.query); + // console.log(router.query); fetch(`/api/getSchoolDetails?school=${router.query.school}`) .then(res => res.json()) .then(data => { - console.log(data); + // console.log(data); setSchool(data[0]) // console.log(school) }) @@ -43,7 +62,7 @@ export default function EditSchool() { email: event.target.email.value, } const JSONdata = JSON.stringify(data) - console.log(data) + // console.log(data) const endpoint = '/api/editSchool' const options = { method: 'POST', @@ -73,8 +92,8 @@ export default function EditSchool() { List Users Under This School
- CSV Upload   - + CSV   +
{/* */} @@ -144,7 +163,7 @@ export default function EditSchool() {
- setSchool(e.target.value)} type="file" name="agreement_documents" className=' bg-white border-2 border-[#FE4501] p-2 rounded-md focus:outline-none focus:border-2 focus:border-[#F2B705]' /> +
diff --git a/src/pages/profile.jsx b/src/pages/profile.jsx index 203746a..48d3540 100644 --- a/src/pages/profile.jsx +++ b/src/pages/profile.jsx @@ -2,7 +2,7 @@ import { signIn, signOut, useSession } from 'next-auth/react' export default function Home() { const { data: session } = useSession() -console.log(session) +// console.log(session) if (session) { return ( <> diff --git a/src/pages/upload-user.jsx b/src/pages/upload-user.jsx new file mode 100644 index 0000000..46ec8aa --- /dev/null +++ b/src/pages/upload-user.jsx @@ -0,0 +1,38 @@ +import {useId, useState, useEffect, useMemo} from 'react'; +import NavBar from '../components/NavBar'; +import { useRouter } from 'next/router' + + +export default function EditSchool() { + const router = useRouter(); + + const uploadCsv = async (event) => { + // alert('p') + const body = new FormData(); + body.append("file", csv.files[0]); + // console.log('body') + // body.append("fName", `${router.query.school}.pdf`); + const response = await fetch("/api/addUsersBulk", { + method: "POST", + body + }); + }; + + + + return ( +
+
+ +
+
+ CSV   + +
+
+
+
+ ) +} + +