Search-code
Subhodip Ghosh 2023-05-25 21:42:17 +05:30
parent fefb39141d
commit 49de3574a3
16 changed files with 591 additions and 6 deletions

BIN
data/appSchool-test.db Normal file

Binary file not shown.

Binary file not shown.

View File

@ -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

1 uname status user type year start_month start_date end_date plan klas lang phone pass annual early_start_programme toddlers interakto email country state city address school
6 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
7 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
8 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
9 suvankar published teacher Apr 2023-05-15 2024-05-13 IK2 0 Mar 0 0 0 suvvv@email.com IN WB Barasat individual
10 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
11 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

View File

@ -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

View File

@ -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

View File

@ -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>
</>
)
}

View File

@ -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'/>

View File

@ -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' });
}

View File

@ -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("");
};

View File

@ -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);

View File

@ -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();
// });
}

View File

@ -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();
// });
}

View File

@ -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&apos;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>

91
src/pages/file-upload.jsx Normal file
View File

@ -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>&nbsp;
<input type="text" className='border-2 p-2 rounded-lg'/>&nbsp;
<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>
)
}

View File

@ -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>&nbsp;
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>
</>
)
}