diff --git a/contexts/auth.js b/contexts/auth.js
index a824654..c75e798 100644
--- a/contexts/auth.js
+++ b/contexts/auth.js
@@ -3,7 +3,7 @@ import jwt from 'jsonwebtoken';
import axios from 'axios'
const baseUrl = "http://127.0.0.1:8000/"
// const baseUrl = process.env.NEXT_PUBLIC_API_URL;
-const tokenUrl = baseUrl + 'donater/auth/';
+const tokenUrl = baseUrl + 'accounts/donater/auth/';
const AuthContext = createContext();
@@ -21,7 +21,7 @@ export function AuthProvider(props) {
login,
logout,
});
-
+
async function login(username, password) {
const response = await axios.post(tokenUrl, { username, password });
@@ -30,15 +30,11 @@ export function AuthProvider(props) {
const newState = {
tokens: response.data,
- // user: {
- // username: response.data.username,
- // id: decodedAccess.user_id
- // },
}
setState(prevState => ({ ...prevState, ...newState }));
+
}
-
function logout() {
const newState = {
tokens: null,
diff --git a/package-lock.json b/package-lock.json
index 5b6233e..e576d57 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5,6 +5,7 @@
"packages": {
"": {
"dependencies": {
+ "@headlessui/react": "^1.4.2",
"@heroicons/react": "^1.0.5",
"@popperjs/core": "^2.11.0",
"axios": "^0.24.0",
@@ -634,6 +635,18 @@
"resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz",
"integrity": "sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw=="
},
+ "node_modules/@headlessui/react": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.4.2.tgz",
+ "integrity": "sha512-N8tv7kLhg9qGKBkVdtg572BvKvWhmiudmeEpOCyNwzOsZHCXBtl8AazGikIfUS+vBoub20Fse3BjawXDVPPdug==",
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "react": "^16 || ^17 || ^18",
+ "react-dom": "^16 || ^17 || ^18"
+ }
+ },
"node_modules/@heroicons/react": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/@heroicons/react/-/react-1.0.5.tgz",
@@ -5581,6 +5594,12 @@
"resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz",
"integrity": "sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw=="
},
+ "@headlessui/react": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.4.2.tgz",
+ "integrity": "sha512-N8tv7kLhg9qGKBkVdtg572BvKvWhmiudmeEpOCyNwzOsZHCXBtl8AazGikIfUS+vBoub20Fse3BjawXDVPPdug==",
+ "requires": {}
+ },
"@heroicons/react": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/@heroicons/react/-/react-1.0.5.tgz",
diff --git a/package.json b/package.json
index f521ed9..351d0a3 100644
--- a/package.json
+++ b/package.json
@@ -6,6 +6,7 @@
"start": "next start"
},
"dependencies": {
+ "@headlessui/react": "^1.4.2",
"@heroicons/react": "^1.0.5",
"@popperjs/core": "^2.11.0",
"axios": "^0.24.0",
diff --git a/pages/Donar_component/editForm.js b/pages/Donar_component/editForm.js
new file mode 100644
index 0000000..ae6cc82
--- /dev/null
+++ b/pages/Donar_component/editForm.js
@@ -0,0 +1,238 @@
+import { useState } from "react";
+import axios from "axios";
+import { comment } from "postcss";
+import { Component } from "react/cjs/react.production.min";
+import { useAuth } from "../../contexts/auth";
+
+export default function Example(props) {
+ const { tokens } = useAuth();
+ let role = {
+ Doner: "donater",
+ Patient: "patient",
+ };
+ const handlesubmit = async (e) => {
+ let data = new FormData();
+ e.preventDefault();
+ data.append("first_name", e.target.firstname.value);
+ data.append("username", e.target.username.value);
+ data.append("email", e.target.email.value);
+ data.append("image", e.target.img.files[0]);
+ data.append("phone_number", e.target.phone_number.value);
+ data.append("chronic_diseases", e.target.chronic_diseases.checked);
+ data.append("blood_type", props.result.blood_type);
+ if (tokens.Role == "Patient") {
+ data.append("reason", e.target.reason.value);
+ }
+ let url = `http://127.0.0.1:8000/accounts/${role[tokens.Role]}/${
+ tokens.id
+ }/`;
+
+ axios
+ .put(`http://127.0.0.1:8000/blood/update-blood/1/`, {
+ blood_type: e.target.bloodType.value,
+ })
+ .then(() => {
+ axios
+ .put(url, data, {
+ headers: {
+ "content-type": "multipart/form-data",
+ },
+ })
+ .then((res) => {
+ console.log(res);
+ props.setResult(res.data);
+ });
+ });
+
+ props.setEditForm(false);
+ };
+ return (
+ <>
+
+
+
+ >
+ );
+}
diff --git a/pages/Donar_component/userProfile.js b/pages/Donar_component/userProfile.js
new file mode 100644
index 0000000..47e9c8e
--- /dev/null
+++ b/pages/Donar_component/userProfile.js
@@ -0,0 +1,77 @@
+import { useState, useEffect } from "react";
+import EditForm from "./editForm";
+import axios from "axios";
+import { useAuth } from "../../contexts/auth";
+import { PencilAltIcon } from "@heroicons/react/outline";
+import { Result } from "postcss";
+import UserInfo from "../home_compnenet/UserInfo";
+import Header2 from "../layout/Header2";
+import Footer from "../home_compnenet/Footer";
+function UserProfile() {
+ const {tokens } = useAuth();
+ let role = {
+ Doner: "donater",
+ Patient: "patient",
+ };
+ const [result, setResult] = useState([]);
+ const [editForm, setEditForm] = useState(false);
+ let submitHandler = async (e) => {
+ e.preventDefault();
+ setEditForm(true);
+ };
+ let deleteHandler = async () => {
+ await axios.delete(
+ `http://127.0.0.1:8000/accounts/${role[tokens.Role]}/${tokens.id}`
+ );
+ };
+ useEffect(async () => {
+ await axios
+ .get(`http://127.0.0.1:8000/accounts/${role[tokens.Role]}/${tokens.id}`)
+ .then((data) => {
+ setResult(data.data);
+ });
+ }, []);
+
+ return (
+ <>
+
+
+
+

+
+ {result.first_name}
+
+
+
+
+
+ {!editForm ? (
+ <>
+
+
+
+ >
+ ) : (
+
+ )}
+
+
+
+ >
+ );
+}
+
+export default UserProfile;
diff --git a/pages/Hospital_component/Form2.js b/pages/Hospital_component/Form2.js
new file mode 100644
index 0000000..dca18c7
--- /dev/null
+++ b/pages/Hospital_component/Form2.js
@@ -0,0 +1,41 @@
+import React from 'react'
+import { SearchIcon } from "@heroicons/react/outline";
+
+export default function Form2(props) {
+ return (
+ <>
+
+
+
+ >
+ )
+}
diff --git a/pages/Hospital_component/Table2.js b/pages/Hospital_component/Table2.js
new file mode 100644
index 0000000..b6e6cdb
--- /dev/null
+++ b/pages/Hospital_component/Table2.js
@@ -0,0 +1,89 @@
+/* This example requires Tailwind CSS v2.0+ */
+const people = [
+ {
+ name: 'Jane Cooper',
+ title: 'Regional Paradigm Technician',
+ department: 'Optimization',
+ role: 'Admin',
+ email: 'jane.cooper@example.com',
+ image:
+ 'https://images.unsplash.com/photo-1494790108377-be9c29b29330?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=4&w=256&h=256&q=60',
+ },
+ // More people...
+ ]
+
+ export default function Table() {
+ return (
+
+
+
+
+
+
+
+ |
+ Name
+ |
+
+ Location
+ |
+
+ blood Type
+ |
+
+ Phone Number
+ |
+
+
+
+ Edit
+ |
+
+
+
+ {people.map((person) => (
+
+
+
+
+ 
+
+
+ {person.name}
+ {person.email}
+
+
+ |
+
+ {person.title}
+ {person.department}
+ |
+
+
+ Active
+
+ |
+ {person.role} |
+
+
+ ))}
+
+
+
+
+
+
+ )
+ }
\ No newline at end of file
diff --git a/pages/Hospital_component/hospitalProfile.js b/pages/Hospital_component/hospitalProfile.js
new file mode 100644
index 0000000..6755151
--- /dev/null
+++ b/pages/Hospital_component/hospitalProfile.js
@@ -0,0 +1,56 @@
+import axios from "axios";
+import { useState } from "react";
+import { GlobeAltIcon ,SearchIcon } from "@heroicons/react/outline";
+import Form2 from "./Form2";
+import Table from "./Table2";
+import Header2 from '../layout/Header2'
+import Footer from "../home_compnenet/Footer";
+function HospitalProfile() {
+ const [result, setResult] = useState([]);
+ const [location, setLocation] = useState([]);
+ const [bloodType, setBloodType] = useState([]);
+
+
+ let locationHandler = (e) => {
+ setLocation(e.target.value)
+ };
+ let bloodTypeHandler = (e) => {
+ setBloodType(e.target.value)
+ };
+ let submitHandler = async (e) => {
+ e.preventDefault();
+ await axios.get("http://127.0.0.1:8000/account/view/").then((data) => {
+ let newData = data.data
+ let filteredData = newData.filter(item =>item.blood_type == bloodType && item.location == location)
+ setResult (filteredData)
+ });
+ };
+ return (
+ <>
+
+
+

+
+ Isteqlal
+
+
+
+ >
+ );
+}
+
+export default HospitalProfile;
diff --git a/pages/Newsfeed.js b/pages/Newsfeed.js
new file mode 100644
index 0000000..def0791
--- /dev/null
+++ b/pages/Newsfeed.js
@@ -0,0 +1,33 @@
+import React from 'react'
+import axios from 'axios'
+import FormForPost from './postComponents/FormForPost'
+import PostElement from './postComponents/PostElement'
+import { useAuth } from '../contexts/auth'
+import { useState } from 'react'
+export default function Newsfeed() {
+ const { tokens } = useAuth();
+ const [result, setResult] = useState([]);
+ const handlesubmit = async (e) => {
+ e.preventDefault();
+ console.log(e.target.title.value);
+ let url = `http://127.0.0.1:8000/blood/add/`
+ let data = {
+ patient: "yahialabib",
+ title : e.target.title.value,
+ text : e.target.content.value,
+ publish: true
+ }
+ axios.post(url, data).then((res) => {
+ setResult(res.data);
+ });
+ }
+ return (
+
+ )
+}
\ No newline at end of file
diff --git a/pages/TestForm.js b/pages/TestForm.js
new file mode 100644
index 0000000..660f75e
--- /dev/null
+++ b/pages/TestForm.js
@@ -0,0 +1,29 @@
+import React from 'react'
+import axios from 'axios';
+export default function Testfrom() {
+ const adddata = async(e)=>{
+ e.preventDefault();
+ let city={city:e.target.city.value}
+ let area={area:e.target.area.value}
+ const area_id = await axios.post('http://127.0.0.1:8000/address/area/',area)
+ const city_id = await axios.post('http://127.0.0.1:8000/address/city/',city)
+
+ let address={
+ area:area_id.data.id,
+ city:city_id.data.id,
+ direction:e.target.direction.value
+ }
+ const address_id = await axios.post('http://127.0.0.1:8000/address/address/',address)
+ console.log(address_id.data);
+ }
+ return (
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/pages/_app.js b/pages/_app.js
index 5fada3a..09fdabc 100644
--- a/pages/_app.js
+++ b/pages/_app.js
@@ -4,7 +4,7 @@ import '../styles/video.css'
import '../styles/tailwind.css'
import { AuthProvider } from '../contexts/auth'
import '../styles/form.css'
-
+import '../styles/hospitalProfile.css'
function MyApp({ Component, pageProps }) {
return
diff --git a/pages/components/editForm.js b/pages/components/editForm.js
deleted file mode 100644
index 3c6870d..0000000
--- a/pages/components/editForm.js
+++ /dev/null
@@ -1,176 +0,0 @@
-import { useState } from "react";
-import axios from "axios";
-import { comment } from "postcss";
-import { Component } from "react/cjs/react.production.min";
-// import 'styles/form.css'
-// import FileUpload from "./components/FileUpload"
-function EditForm(props) {
- const [first_name, setFirstName] = useState(props.result.first_name);
- const [last_name, setLastName] = useState(props.result.last_name);
- const [image, setImage] = useState(props.result.image);
- const [username, setUsername] = useState(props.result.username);
- const [email, setEmail] = useState(props.result.email);
- const [age, setAge] = useState(props.result.age);
- const [blood_type, setBloodType] = useState(props.result.blood_type);
- const [phone_number, setPhoneNumber] = useState(props.result.phone_number);
- const [location, setLocation] = useState(props.result.location);
- const [chronic_diseases, setChronicDiseases] = useState(
- props.result.chronic_diseases
- );
- const [date, setDate] = useState(props.result.data);
- const handlesubmit = async (e) => {
- let data = new FormData();
- e.preventDefault();
- data.append("first_name", e.target.firstname.value);
- data.append("last_name", e.target.lastname.value);
- data.append("username", e.target.username.value);
- data.append("email", e.target.email.value);
- // data.append("password",e.target.password.value)
- data.append("age", e.target.age.value);
- data.append("image", e.target.img.files[0]);
- data.append("blood_type", e.target.blood_type.value);
- data.append("phone_number", e.target.phone_number.value);
- data.append("location", e.target.location.value);
- data.append("chronic_diseases", chronic_diseases);
- data.append("data", e.target.date.value);
- let url = "http://127.0.0.1:8000/account/yaseen";
- console.log(e.target.img.files[0]);
- const create = axios.put(url, data, {
- headers: {
- "content-type": "multipart/form-data",
- },
- }).then(res =>{
- props.setResult(res.data)
-
- });
- props.setEditForm(false)
- };
-
- return (
-
- );
-}
-
-export default EditForm;
diff --git a/pages/components/hospitalProfile.js b/pages/components/hospitalProfile.js
deleted file mode 100644
index 5f28f00..0000000
--- a/pages/components/hospitalProfile.js
+++ /dev/null
@@ -1,88 +0,0 @@
-import axios from "axios";
-import { useState } from "react";
-
-
-function HospitalProfile() {
- const [result, setResult] = useState([]);
- const [location, setLocation] = useState([]);
- const [bloodType, setBloodType] = useState([]);
-
- let locationHandler = (e) => {
- setLocation(e.target.value)
- };
- let bloodTypeHandler = (e) => {
- setBloodType(e.target.value)
- };
- let submitHandler = async (e) => {
- e.preventDefault();
- await axios.get("http://127.0.0.1:8000/account/view/").then((data) => {
- let newData = data.data
- let filteredData = newData.filter(item =>item.blood_type == bloodType && item.location == location)
- setResult (filteredData)
- });
- };
- return (
- <>
-
-

-
Isteqlal
-
-
-
-
-
- >
- );
-}
-
-export default HospitalProfile;
diff --git a/pages/components/userProfile.js b/pages/components/userProfile.js
deleted file mode 100644
index 3234575..0000000
--- a/pages/components/userProfile.js
+++ /dev/null
@@ -1,89 +0,0 @@
-import { useState, useEffect } from "react";
-import EditForm from "./editForm";
-import axios from "axios";
-import { useRouter } from 'next/router'
-import { PencilAltIcon } from "@heroicons/react/outline";
-function UserProfile(props) {
- // const router = useRouter();
- // let profile = JSON.parse(router.query.data)
-
-
-
- const [result, setResult] = useState([]);
- const [editForm, setEditForm] = useState(false);
- let submitHandler = async (e) => {
- e.preventDefault();
- // const config = {
- // headers:{'Authorization':`Bearer ${profile.access}`}
- // }
- // await axios.get(`http://127.0.0.1:8000/account/${profile.username}`,config).then((data) => {
- // console.log(data.data);
- setEditForm(true);
- };
- let deleteHandler = async () => {
- await axios.delete("http://127.0.0.1:8000/account/yaseen");
- };
- useEffect(async () => {
- await axios.get("http://127.0.0.1:8000/account/yaseen").then((data) => {
- setResult(data.data);
- });
- }, []);
-
- return (
- <>
-
-
-

-
-
{result.first_name}
-
- {!editForm ? (
- <>
-
-
- Personal Information
-
-
-
Location:
-
{result.location}
-
-
- Phone Number:
-
-
{result.phone_number}
-
- Email:
-
-
{result.email}
-
Blood Type:
-
{result.blood_type}
-
Age:
-
{result.age}
-
-
- >
- ) : (
-
- )}
-
-
- >
- );
-}
-
-export default UserProfile;
diff --git a/pages/home_compnenet/Footer.js b/pages/home_compnenet/Footer.js
index 439532f..0ce9d68 100644
--- a/pages/home_compnenet/Footer.js
+++ b/pages/home_compnenet/Footer.js
@@ -3,45 +3,28 @@ import React from "react";
export default function Footer() {
return (
<>
-