search
parent
fefb39141d
commit
49de3574a3
Binary file not shown.
BIN
data/appUser.db
BIN
data/appUser.db
Binary file not shown.
|
@ -6,3 +6,6 @@ name 3,published,,parent,,Apr,2023-05-14,2024-05-13,,IK2,,70000000011,,Feb,Sept,
|
|||
name 2,published,,parent,,Apr,2023-05-14,2024-05-13,,IK2,,70000000011,,Feb,Sept,Oct,Jul,2@email.com,IN,WB,Habra,sample road near landmark,individual
|
||||
name 6,published,,parent,,Jun,2023-05-14,2024-05-13,,IK3,,70000000011,,Mar,Sept,Jul,Apr,6@email.com,BD,55,Lalmonirhat,sample road near landmark,individual
|
||||
teacher name,published,,teacher,,Apr,2023-05-15,2024-05-13,,IK2,,99999 99933,,Mar,0,0,0,t1@email.com,IN,WB,Barasat,,individual
|
||||
suvankar,published,,teacher,,Apr,2023-05-15,2024-05-13,,IK2,,0,,Mar,0,0,0,suvvv@email.com,IN,WB,Barasat,,individual
|
||||
teacher name,published,,teacher,,Apr,2023-05-15,2024-05-13,,IK2,,99999 99933,,Mar,0,0,0,t1@email.com,IN,WB,Barasat,,individual
|
||||
Name 11,published,,parent,,Feb,2023-05-14,2024-05-13,,IK2,,70000000011,,Jan,Feb,Mar,Jul,1@email.com,IN,WB,Habra,sample road near landmark,individual
|
||||
|
|
|
Binary file not shown.
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 4.2 KiB |
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 394 80"><path fill="#000" d="M262 0h68.5v12.7h-27.2v66.6h-13.6V12.7H262V0ZM149 0v12.7H94v20.4h44.3v12.6H94v21h55v12.6H80.5V0h68.7zm34.3 0h-17.8l63.8 79.4h17.9l-32-39.7 32-39.6h-17.9l-23 28.6-23-28.6zm18.3 56.7-9-11-27.1 33.7h17.8l18.3-22.7z"/><path fill="#000" d="M81 79.3 17 0H0v79.3h13.6V17l50.2 62.3H81Zm252.6-.4c-1 0-1.8-.4-2.5-1s-1.1-1.6-1.1-2.6.3-1.8 1-2.5 1.6-1 2.6-1 1.8.3 2.5 1a3.4 3.4 0 0 1 .6 4.3 3.7 3.7 0 0 1-3 1.8zm23.2-33.5h6v23.3c0 2.1-.4 4-1.3 5.5a9.1 9.1 0 0 1-3.8 3.5c-1.6.8-3.5 1.3-5.7 1.3-2 0-3.7-.4-5.3-1s-2.8-1.8-3.7-3.2c-.9-1.3-1.4-3-1.4-5h6c.1.8.3 1.6.7 2.2s1 1.2 1.6 1.5c.7.4 1.5.5 2.4.5 1 0 1.8-.2 2.4-.6a4 4 0 0 0 1.6-1.8c.3-.8.5-1.8.5-3V45.5zm30.9 9.1a4.4 4.4 0 0 0-2-3.3 7.5 7.5 0 0 0-4.3-1.1c-1.3 0-2.4.2-3.3.5-.9.4-1.6 1-2 1.6a3.5 3.5 0 0 0-.3 4c.3.5.7.9 1.3 1.2l1.8 1 2 .5 3.2.8c1.3.3 2.5.7 3.7 1.2a13 13 0 0 1 3.2 1.8 8.1 8.1 0 0 1 3 6.5c0 2-.5 3.7-1.5 5.1a10 10 0 0 1-4.4 3.5c-1.8.8-4.1 1.2-6.8 1.2-2.6 0-4.9-.4-6.8-1.2-2-.8-3.4-2-4.5-3.5a10 10 0 0 1-1.7-5.6h6a5 5 0 0 0 3.5 4.6c1 .4 2.2.6 3.4.6 1.3 0 2.5-.2 3.5-.6 1-.4 1.8-1 2.4-1.7a4 4 0 0 0 .8-2.4c0-.9-.2-1.6-.7-2.2a11 11 0 0 0-2.1-1.4l-3.2-1-3.8-1c-2.8-.7-5-1.7-6.6-3.2a7.2 7.2 0 0 1-2.4-5.7 8 8 0 0 1 1.7-5 10 10 0 0 1 4.3-3.5c2-.8 4-1.2 6.4-1.2 2.3 0 4.4.4 6.2 1.2 1.8.8 3.2 2 4.3 3.4 1 1.4 1.5 3 1.5 5h-5.8z"/></svg>
|
Before Width: | Height: | Size: 1.3 KiB |
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 283 64"><path fill="black" d="M141 16c-11 0-19 7-19 18s9 18 20 18c7 0 13-3 16-7l-7-5c-2 3-6 4-9 4-5 0-9-3-10-7h28v-3c0-11-8-18-19-18zm-9 15c1-4 4-7 9-7s8 3 9 7h-18zm117-15c-11 0-19 7-19 18s9 18 20 18c6 0 12-3 16-7l-8-5c-2 3-5 4-8 4-5 0-9-3-11-7h28l1-3c0-11-8-18-19-18zm-10 15c2-4 5-7 10-7s8 3 9 7h-19zm-39 3c0 6 4 10 10 10 4 0 7-2 9-5l8 5c-3 5-9 8-17 8-11 0-19-7-19-18s8-18 19-18c8 0 14 3 17 8l-8 5c-2-3-5-5-9-5-6 0-10 4-10 10zm83-29v46h-9V5h9zM37 0l37 64H0L37 0zm92 5-27 48L74 5h10l18 30 17-30h10zm59 12v10l-3-1c-6 0-10 4-10 10v15h-9V17h9v9c0-5 6-9 13-9z"/></svg>
|
Before Width: | Height: | Size: 629 B |
|
@ -0,0 +1,170 @@
|
|||
import NavBar from '../components/NavBar'
|
||||
import { signIn, signOut, useSession } from 'next-auth/react'
|
||||
import { useId, useState, useEffect, useMemo } from 'react';
|
||||
import Select from 'react-select'
|
||||
import countryList from 'react-select-country-list'
|
||||
import 'react-phone-number-input/style.css'
|
||||
import PhoneInput from 'react-phone-number-input'
|
||||
|
||||
export default function AddSchool() {
|
||||
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-test", {
|
||||
method: "POST",
|
||||
body
|
||||
});
|
||||
};
|
||||
const [countryValue, setCountryValue] =useState('')
|
||||
const options = useMemo(() => countryList().getData(), [])
|
||||
const [phoneValue, setphoneValue] = useState()
|
||||
const [allStates, setAllStates] = useState([])
|
||||
const [allCities, setAllCities] = useState([])
|
||||
const { data: session } = useSession()
|
||||
|
||||
const handleSelectAllStates = stateCode => {
|
||||
setAllCities([])
|
||||
fetch(`https://api.siliconpin.com/v3/list/country/city/?country=${countryValue.value}&state=${stateCode.value}`)
|
||||
.then(res => res.json())
|
||||
.then(data => {
|
||||
// console.log("handleSelectAllStates:", data, options)
|
||||
let newData = data && data.length > 0 && data.map(n => {
|
||||
return {
|
||||
label: n.name,
|
||||
value: n.name
|
||||
}
|
||||
})
|
||||
setAllCities(newData)
|
||||
})
|
||||
}
|
||||
const selectCountry = countryValue => {
|
||||
setAllStates([])
|
||||
fetch(`https://api.siliconpin.com/v3/list/country/state/?country=${countryValue.value}`)
|
||||
.then(res => res.json())
|
||||
.then(data => {
|
||||
// console.log("countryValue:", data, options)
|
||||
let newData = data && data.length > 0 && data.map(n => {
|
||||
return {
|
||||
label: n.name,
|
||||
value: n.iso2
|
||||
}
|
||||
})
|
||||
setAllStates(newData)
|
||||
setAllCities([])
|
||||
})
|
||||
setCountryValue(countryValue)
|
||||
}
|
||||
// console.log(phoneValue)
|
||||
// const selectCountry = countryValue => {
|
||||
// setCountryValue(countryValue)
|
||||
// }
|
||||
const handleSubmit = async (event) => {
|
||||
event.preventDefault()
|
||||
const data = {
|
||||
// "status":"published",
|
||||
name: event.target.name.value,
|
||||
location: event.target.location.value,
|
||||
expiry: event.target.expiry.value,
|
||||
status: event.target.status.value,
|
||||
annual: event.target.annual.value,
|
||||
toddlers: event.target.toddlers.value,
|
||||
address: event.target.address.value,
|
||||
interakto: event.target.interakto.value,
|
||||
email: event.target.email.value,
|
||||
pin: event.target.pin.value,
|
||||
// phone: event.target.phone.value,
|
||||
// email: event.target.email.value,
|
||||
|
||||
}
|
||||
const JSONdata = JSON.stringify(data)
|
||||
console.log(data)
|
||||
const endpoint = '/api/addSchool-test'
|
||||
const options = {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
body: JSONdata,
|
||||
}
|
||||
const response = await fetch(endpoint, options)
|
||||
|
||||
const result = await response.json()
|
||||
// alert(`Is this your full name: ${result.data}`)
|
||||
alert(`School Saved`)
|
||||
}
|
||||
if (session) {
|
||||
return (
|
||||
<main>
|
||||
<div>
|
||||
<NavBar />
|
||||
<section className='container mx-auto px-4 my-16 lg:px-28 xl:px-56 2xl:px-96'>
|
||||
<div className='flex flex-col justify-center place-items-center bg-[#FFF6F2] pt-6 pb-20 rounded-tl-[50px] rounded-br-[50px]'>
|
||||
<div className='flex flex-col justify-center place-items-center'>
|
||||
<img src="/img/1.svg" alt="" />
|
||||
<p className='text-2xl md:text-4xl font-bold underline decoration-4 decoration-[#FE4501] pb-10'>School Registration Form</p>
|
||||
</div>
|
||||
<form onSubmit={handleSubmit} className='w-full px-6 md:px-20'>
|
||||
<div className='flex flex-col'>
|
||||
<label htmlFor="name">Name</label>
|
||||
<input type="text" name="name" id="name" className='p-2 border-2 rounded-full' />
|
||||
</div>
|
||||
<div className='flex flex-col'>
|
||||
<label htmlFor="location">Location</label>
|
||||
<input type="text" name="location" id="location" className='p-2 border-2 rounded-full' />
|
||||
</div>
|
||||
<div className='flex flex-col'>
|
||||
<label htmlFor="expiry">Expiry</label>
|
||||
<input type="date" name="expiry" id="expiry" className='p-2 border-2 rounded-full'/>
|
||||
</div>
|
||||
<div className='flex flex-col'>
|
||||
<label htmlFor="status">Status</label>
|
||||
<input type="text" name="status" id="status" className='p-2 border-2 rounded-full'/>
|
||||
</div>
|
||||
<div className='flex flex-col'>
|
||||
<label htmlFor="toddlers">Toddlers</label>
|
||||
<input type="text" name="toddlers" id="toddlers" className='p-2 border-2 rounded-full'/>
|
||||
</div>
|
||||
<div className='flex flex-col'>
|
||||
<label htmlFor="address">Address</label>
|
||||
<input type="text" name="address" id="address" className='p-2 border-2 rounded-full'/>
|
||||
</div>
|
||||
<div className='flex flex-col'>
|
||||
<label htmlFor="annual">annual</label>
|
||||
<input type="text" name="annual" id="annual" className='p-2 border-2 rounded-full'/>
|
||||
</div>
|
||||
<div className='flex flex-col'>
|
||||
<label htmlFor="interakto">Interakto</label>
|
||||
<input type="text" name="interakto" id="interakto" className='p-2 border-2 rounded-full'/>
|
||||
</div>
|
||||
<div className='flex flex-col'>
|
||||
<label htmlFor="email">Email</label>
|
||||
<input type="email" name="email" id="email" className='p-2 border-2 rounded-full'/>
|
||||
</div>
|
||||
<div className='flex flex-col'>
|
||||
<label htmlFor="pin">Pin Code</label>
|
||||
<input type="text" name="pin" id="pin" className='p-2 border-2 rounded-full'/>
|
||||
</div>
|
||||
|
||||
<div className='flex justify-center pt-8'>
|
||||
<input type="submit" value="Save" className='bg-[#FE4501] hover:shadow-2xl hover:shadow-[#F2B705] p-2.5 rounded-lg px-10 rounded-tl-full rounded-br-full hover:scale-110 active:scale-75 duration-200 text-xl font-bold text-white cursor-pointer' />
|
||||
</div>
|
||||
</form>
|
||||
<div className='flex flex-col'>
|
||||
<label htmlFor="file">Files Upload</label>
|
||||
<input type="file" name="file" id="agreement" className='p-2 border-2 rounded-full'/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</main>
|
||||
)
|
||||
}
|
||||
return (
|
||||
<>
|
||||
Not signed in <br />
|
||||
<button onClick={() => signIn()}>Sign in</button>
|
||||
</>
|
||||
)
|
||||
|
||||
}
|
|
@ -179,7 +179,7 @@ export default function addUserForm() {
|
|||
</select>
|
||||
</div>
|
||||
<div className='flex flex-col w-full'>
|
||||
<label htmlFor="name" className='text-xl font-bold'> Name</label>
|
||||
<label htmlFor="name" className='text-xl font-bold'>Name</label>
|
||||
<input type="text" name="uname"
|
||||
className=' border-2 border-[#FE4501] p-2 rounded-md focus:outline-none focus:border-2 focus:border-[#F2B705]'
|
||||
placeholder='Enter your Name'/>
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
export default function handler(req, res) {
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
|
||||
// console.log(req.body)
|
||||
// Open a new database connection
|
||||
let name, location, expiry, status, toddlers, address, annual, interakto, email, pin = "";
|
||||
|
||||
// if(req.body.name) name =req.body.name;
|
||||
// if(req.body.status) status =req.body.status;
|
||||
// if(req.body.status) status ="published";
|
||||
if(req.body.name) name =req.body.name;
|
||||
if(req.body.location) location =req.body.location;
|
||||
if(req.body.expiry) expiry =req.body.expiry;
|
||||
if(req.body.status) status =req.body.status;
|
||||
if(req.body.toddlers) toddlers =req.body.toddlers;
|
||||
if(req.body.address) address =req.body.address;
|
||||
if(req.body.annual) annual =req.body.annual;
|
||||
if(req.body.state) state =req.body.state;
|
||||
if(req.body.interakto) interakto =req.body.interakto;
|
||||
if(req.body.email) email =req.body.email;
|
||||
if(req.body.pin) pin =req.body.pin;
|
||||
// if(req.body.usage_expiry) usage_expiry =req.body.usage_expiry;
|
||||
console.log(address)
|
||||
const db = new sqlite3.Database('data/appSchool-test.db');
|
||||
db.run(`INSERT INTO school (sname, city, usage_expiry, status, toddlers, address, annual, interakto, email, pin ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ? )`, [ name, location, expiry, status, toddlers, address, annual, interakto, email, pin ],
|
||||
function(err) {
|
||||
if (err) {
|
||||
return console.log(err.message);
|
||||
}
|
||||
}
|
||||
);
|
||||
db.close();
|
||||
res.status(200).json({ msg: 'ok' });
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
import formidable from "formidable";
|
||||
import fs from "fs";
|
||||
|
||||
export const config = {
|
||||
api: {
|
||||
bodyParser: false
|
||||
}
|
||||
};
|
||||
|
||||
const post = async (req, res) => {
|
||||
const form = new formidable.IncomingForm();
|
||||
form.parse(req, async function (err, fields, files) {
|
||||
console.log(fields)
|
||||
await saveFile(files.file,fields.fName? fields.fName:files.file.originalFilename );
|
||||
return res.status(201).send("");
|
||||
});
|
||||
};
|
||||
|
||||
const saveFile = async (file,fName) => {
|
||||
console.log(file.filepath)
|
||||
console.log(fName)
|
||||
const data = fs.readFileSync(file.filepath);
|
||||
fs.writeFileSync(`./public/uploaded/${fName}`, data);
|
||||
fs.unlinkSync(file.filepath);
|
||||
return;
|
||||
};
|
||||
|
||||
export default (req, res) => {
|
||||
req.method === "POST"
|
||||
? post(req, res)
|
||||
: req.method === "PUT"
|
||||
? console.log("PUT")
|
||||
: req.method === "DELETE"
|
||||
? console.log("DELETE")
|
||||
: req.method === "GET"
|
||||
? console.log("GET")
|
||||
: res.status(404).send("");
|
||||
};
|
|
@ -10,15 +10,15 @@ export const config = {
|
|||
const post = async (req, res) => {
|
||||
const form = new formidable.IncomingForm();
|
||||
form.parse(req, async function (err, fields, files) {
|
||||
// console.log(fields)
|
||||
console.log(fields)
|
||||
await saveFile(files.file,fields.fName? fields.fName:files.file.originalFilename );
|
||||
return res.status(201).send("");
|
||||
});
|
||||
};
|
||||
|
||||
const saveFile = async (file,fName) => {
|
||||
// console.log(file.filepath)
|
||||
// console.log(fName)
|
||||
console.log(file.filepath)
|
||||
console.log(fName)
|
||||
const data = fs.readFileSync(file.filepath);
|
||||
fs.writeFileSync(`./public/uploaded/${fName}`, data);
|
||||
fs.unlinkSync(file.filepath);
|
||||
|
|
|
@ -0,0 +1,73 @@
|
|||
import csv from 'csv-parser';
|
||||
import fs from 'fs';
|
||||
import sqlite3 from 'sqlite3';
|
||||
|
||||
export default function handler(req,res) {
|
||||
|
||||
console.log(req.body.school)
|
||||
// const {
|
||||
// query: { name, keyword },
|
||||
// method,
|
||||
// } = req;
|
||||
// console.log(name, keyword, method);
|
||||
|
||||
const DB_NAME = 'data/appSchool-test.db';
|
||||
const TABLE_NAME = 'school';
|
||||
|
||||
// Open a connection to the SQLite database
|
||||
const db = new sqlite3.Database(DB_NAME);
|
||||
|
||||
const query = `SELECT * FROM ${TABLE_NAME}`;
|
||||
|
||||
function getAllRows(tableName) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const sql = `SELECT * FROM ${tableName}`;
|
||||
db.all(sql, [], (err, rows) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
return;
|
||||
}
|
||||
const data = rows;
|
||||
resolve(data);
|
||||
});
|
||||
});
|
||||
};
|
||||
async function doSomething() {
|
||||
try {
|
||||
const returnData = await getAllRows(TABLE_NAME);
|
||||
res.setHeader('Content-Type', 'application/json')
|
||||
res.status(200).json(returnData)
|
||||
// console.log(data);
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
}
|
||||
}
|
||||
|
||||
doSomething();
|
||||
// const returnData = getAllRows('user');
|
||||
// console.log(getAllRows('user'));
|
||||
// const returnData= db.run('SELECT * FROM user');
|
||||
|
||||
// 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);
|
||||
// }
|
||||
// });
|
||||
// })
|
||||
// .on('end', () => {
|
||||
// console.log(`Data inserted successfully into table ${TABLE_NAME}`);
|
||||
|
||||
// // Close the database connection
|
||||
// db.close();
|
||||
// });
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,79 @@
|
|||
import csv from 'csv-parser';
|
||||
import fs from 'fs';
|
||||
import sqlite3 from 'sqlite3';
|
||||
|
||||
export default function handler(req,res) {
|
||||
|
||||
// const query = req.query;
|
||||
const { searchQry, limit } = req.query;
|
||||
console.log(searchQry)
|
||||
// const {
|
||||
// query: { name, keyword },
|
||||
// method,
|
||||
// } = req;
|
||||
// console.log(name, keyword, method);
|
||||
|
||||
const DB_NAME = 'data/appUser.db';
|
||||
const TABLE_NAME = 'user';
|
||||
|
||||
// Open a connection to the SQLite database
|
||||
const db = new sqlite3.Database(DB_NAME);
|
||||
|
||||
const query = `SELECT * FROM ${TABLE_NAME}`;
|
||||
|
||||
function getAllRows(tableName, searchQry, pageSize) {
|
||||
const sql = `SELECT * FROM ${tableName} WHERE uname LIKE '%${searchQry}%'`;
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
db.all(sql, [], (err, rows) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
return;
|
||||
}
|
||||
|
||||
resolve(rows);
|
||||
});
|
||||
// let tData={data:rows,page:7}
|
||||
// const data = tData;
|
||||
// resolve(data);
|
||||
});
|
||||
};
|
||||
async function doSomething() {
|
||||
try {
|
||||
const returnData = await getAllRows('user',searchQry,limit);
|
||||
res.setHeader('Content-Type', 'application/json')
|
||||
res.status(200).json(returnData)
|
||||
// console.log(data);
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
}
|
||||
}
|
||||
|
||||
doSomething();
|
||||
// const returnData = getAllRows('user');
|
||||
// console.log(getAllRows('user'));
|
||||
// const returnData= db.run('SELECT * FROM user');
|
||||
|
||||
// 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);
|
||||
// }
|
||||
// });
|
||||
// })
|
||||
// .on('end', () => {
|
||||
// console.log(`Data inserted successfully into table ${TABLE_NAME}`);
|
||||
|
||||
// // Close the database connection
|
||||
// db.close();
|
||||
// });
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -17,6 +17,8 @@ export default function EditSchool() {
|
|||
method: "POST",
|
||||
body
|
||||
});
|
||||
|
||||
|
||||
};
|
||||
const uploadCsv = async (event) => {
|
||||
// alert('p')
|
||||
|
@ -166,6 +168,7 @@ export default function EditSchool() {
|
|||
<div className='flex flex-col w-full'>
|
||||
<label htmlFor="agreement_documents" className='text-xl font-bold'>Upload Agreement Document's</label>
|
||||
<input id="agreement" onChange={uploadToServer} 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]' />
|
||||
|
||||
<div className='flex justify-end pt-2'>
|
||||
<button className=' bg-[#FE4501] px-4 py-1.5 rounded-lg text-white'>Download Agreement</button>
|
||||
</div>
|
||||
|
|
|
@ -0,0 +1,91 @@
|
|||
import { signIn, signOut, useSession } from 'next-auth/react'
|
||||
import {useId, useState, useEffect, useMemo} from 'react';
|
||||
import { useRouter } from 'next/router'
|
||||
export default function fileUpload() {
|
||||
const [school, setSchool] = useState([]);
|
||||
const { data: session} = useSession()
|
||||
const fetchData = async () => {
|
||||
const response = await fetch("/api/listSchlools-test");
|
||||
const data = await response.json();
|
||||
|
||||
return setSchool(data);
|
||||
}
|
||||
// console.log(school)
|
||||
useEffect(() => {
|
||||
fetchData();
|
||||
},[])
|
||||
const uploadToServer = async (event) => {
|
||||
const body = new FormData();
|
||||
body.append("file", agreement.files[0]);
|
||||
body.append("fName", `${+new Date()}.pdf`);
|
||||
const response = await fetch("/api/fileUpload-test", {
|
||||
method: "POST",
|
||||
body
|
||||
});
|
||||
};
|
||||
function fInput() {
|
||||
let x = document.getElementById('myInput').value
|
||||
document.getElementById('print').innerHTML = "You Typed :-" + x;
|
||||
}
|
||||
var dt = Date();
|
||||
var unix = Math.floor(+new Date()/1000);
|
||||
function myFunction() {
|
||||
document.getElementById('demo').innerHTML = "Time :-"+dt+ " & Unix Time :-"+unix;
|
||||
document.getElementById('demo').style.color = "red"
|
||||
}
|
||||
// console.log(+new Date())
|
||||
// console.log(Math.floor(Date.now() / 1000))
|
||||
return (
|
||||
<main>
|
||||
<div>
|
||||
<section className='container mx-auto px-4'>
|
||||
<button onClick={myFunction}>Click</button>
|
||||
<p id='demo'></p>
|
||||
<div className=' pt-24 flex flex-col justify-center place-items-center w-full'>
|
||||
<input type="file" id='agreement' onChange={uploadToServer} className='border-2 border-[#7c4c23] p-2 rounded-lg' />
|
||||
<label htmlFor="">School Name</label>
|
||||
<input type="text" className='border-2 border-[#7c4c23] p-2 rounded-lg' id='myInput' onInput={fInput} />
|
||||
<p id='print'></p>
|
||||
<input type="text" name="" id="print" className='border-2' />
|
||||
</div>
|
||||
</section>
|
||||
<section className='container mx-auto px-4'>
|
||||
<div className='flex 2xl:justify-center overflow-x-scroll '>
|
||||
<table className='border-2'>
|
||||
<thead className='border-2'>
|
||||
<tr className='bg-gray-300'>
|
||||
<th className='border-2'>ID</th>
|
||||
<th className='border-2'>School Name</th>
|
||||
<th className='border-2'>Toddlers</th>
|
||||
<th className='border-2'>City</th>
|
||||
<th>Input</th>
|
||||
</tr>
|
||||
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
{school.map(data =>
|
||||
<tr key={data.id} className='text-center'>
|
||||
<td className='border-2 p-2'>{data.id}</td>
|
||||
<td className='border-2'>{data.sname}</td>
|
||||
<td className='border-2'>{data.toddlers}</td>
|
||||
<td className='border-2'>{data.city}</td>
|
||||
<td>
|
||||
<div>
|
||||
<label htmlFor="">Name</label>
|
||||
<input type="text" className='border-2 p-2 rounded-lg'/>
|
||||
<button className='bg-orange-500 px-4 py-1.5 rounded-lg text-white'>Submit</button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
)}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
</main>
|
||||
)
|
||||
}
|
|
@ -0,0 +1,96 @@
|
|||
// import SchoolEditForm from '../../components/SchoolEditForm'
|
||||
import { signIn, signOut, useSession } from 'next-auth/react'
|
||||
import React, { useEffect, useState } from "react";
|
||||
import Image from 'next/image'
|
||||
import { Inter } from 'next/font/google'
|
||||
const inter = Inter({ subsets: ['latin'] })
|
||||
import NavBar from '../../components/NavBar'
|
||||
export default function Modal() {
|
||||
const [school, setSchool] = useState([]);
|
||||
const { data: session} = useSession()
|
||||
const fetchData = async () => {
|
||||
const response = await fetch("/api/listSchlools-test");
|
||||
const data = await response.json();
|
||||
return setSchool(data);
|
||||
}
|
||||
console.log(school)
|
||||
useEffect(() => {
|
||||
fetchData();
|
||||
},[])
|
||||
|
||||
if (session) {
|
||||
return (
|
||||
<main>
|
||||
<div>
|
||||
<NavBar />
|
||||
<section className='container mx-auto px-4 mt-16'>
|
||||
<div className="flex flex-row justify-end bg-[#FFF6F2] p-2 gap-x-4 border-x-2 border-t-2 rounded-t-xl">
|
||||
<div className="flex flex-row justify-center place-items-center">
|
||||
<input type="text" className="md:w-32 md:focus:w-96 duration-[1s] border-2 border-[#FE4501] w-full rounded-l-full p-2 focus:outline-none focus:border-[#F2B705] bg-[#FFF6F2] focus:bg-white text-center" placeholder="Search School" />
|
||||
<a href="" className="bg-[#FE4501] rounded-r-full p-2 px-4 border-2 border-[#FE4501] text-white font-bold">
|
||||
<svg width="24px" height="24px" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" fill="none" stroke="#ffffff"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <path fill="#ffffff" fill-rule="evenodd" d="M4 9a5 5 0 1110 0A5 5 0 014 9zm5-7a7 7 0 104.2 12.6.999.999 0 00.093.107l3 3a1 1 0 001.414-1.414l-3-3a.999.999 0 00-.107-.093A7 7 0 009 2z"></path> </g></svg>
|
||||
</a>
|
||||
</div>
|
||||
{/* <a href="/add-school-form" className="inline-flex place-items-center justify-center p-2 bg-[#FE4501] text-white font-bold rounded-full whitespace-nowrap">
|
||||
<svg width="20px" height="20px" viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg" stroke="#ffffff"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <path d="M7.5 4.5L11.5 6.5V14.5H3.5V6.5L7.5 4.5ZM7.5 4.5V0M0 14.5H15M1.5 14.5V8.5H3.5M13.5 14.5V8.5H11.5M6.5 14.5V11.5H8.5V14.5M7.5 0.5H10.5V2.5H7.5M7.5 9.5C6.94772 9.5 6.5 9.05228 6.5 8.5C6.5 7.94772 6.94772 7.5 7.5 7.5C8.05228 7.5 8.5 7.94772 8.5 8.5C8.5 9.05228 8.05228 9.5 7.5 9.5Z" stroke="#ffffff"></path> </g></svg>
|
||||
Add School
|
||||
</a> */}
|
||||
</div>
|
||||
<div className='flex xl:justify-center overflow-x-scroll pb-4 w-full'>
|
||||
<table className=" text-center border-x-2 border-b-2 p-2 w-full">
|
||||
<thead className=''>
|
||||
<tr className='bg-[#FFF6F2] text-[#1D1D1D] text-xl whitespace-nowrap'>
|
||||
<th className="p-2">Name</th>
|
||||
<th className="p-2">Email</th>
|
||||
<th className="p-2">Location</th>
|
||||
<th className="p-2">Status</th>
|
||||
<th className="p-2">Expiry</th>
|
||||
<th className="p-2">Toddlers</th>
|
||||
<th className="p-2">Interakto</th>
|
||||
<th className="p-2">Address</th>
|
||||
<th className="p-2">Pin</th>
|
||||
<th className="p-2">Anual</th>
|
||||
<th className="p-2 inline-flex">
|
||||
<img src="/img/3.svg" alt="" />Edit
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{school.map(data=>
|
||||
<tr key={data.id} className="border-b-2 whitespace-normal">
|
||||
<td className=" p-2">{data.sname}</td>
|
||||
<td className=" p-2">{data.email}</td>
|
||||
<td className=" p-2">{data.city}</td>
|
||||
{/* <td className="p-2">{data.city}</td> */}
|
||||
<td className="p-2">{data.status}</td>
|
||||
<td className="p-2">{data.usage_expiry}</td>
|
||||
<td className="p-2">{data.toddlers}</td>
|
||||
<td className="p-2">{data.interakto}</td>
|
||||
<td className="p-2">{data.address}</td>
|
||||
<td className="p-2">{data.pin}</td>
|
||||
<td className="p-2">{data.annual}</td>
|
||||
<td className="p-2">
|
||||
<a href={'/edit-school?school='+data.id} className="flex justify-center place-items-center">
|
||||
<svg width="35px" height="35px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" stroke="#166435"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <path opacity="0.15" d="M8 16H12L18 10L14 6L8 12V16Z" fill="#166435"></path> <path d="M14 6L8 12V16H12L18 10M14 6L17 3L21 7L18 10M14 6L18 10M10 4L4 4L4 20L20 20V14" stroke="#166435" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path> </g></svg>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
)}
|
||||
</tbody>
|
||||
{/* <SchoolEditForm /> */}
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</main>
|
||||
)
|
||||
}
|
||||
{/* <LogOutPage /> */}
|
||||
return (
|
||||
<>
|
||||
Not signed in <br />
|
||||
<button onClick={() => signIn()}>Sign in</button>
|
||||
</>
|
||||
)
|
||||
|
||||
}
|
Loading…
Reference in New Issue