diff --git a/pages/Donar_component/userProfile.js b/pages/Donar_component/UserProfile.js similarity index 97% rename from pages/Donar_component/userProfile.js rename to pages/Donar_component/UserProfile.js index f78e03a..8221406 100644 --- a/pages/Donar_component/userProfile.js +++ b/pages/Donar_component/UserProfile.js @@ -51,7 +51,7 @@ function UserProfile() { Remove Account diff --git a/pages/Newsfeed.js b/pages/Newsfeed.js index def0791..5de78ab 100644 --- a/pages/Newsfeed.js +++ b/pages/Newsfeed.js @@ -3,31 +3,90 @@ import axios from 'axios' import FormForPost from './postComponents/FormForPost' import PostElement from './postComponents/PostElement' import { useAuth } from '../contexts/auth' -import { useState } from 'react' +import { useState, useEffect } from "react"; +import Editpost from "./postComponents/Editpost"; export default function Newsfeed() { + const { tokens } = useAuth(); + const [showform, setshowform] = useState(false); + const [itemupdate, setItemupdate] = useState(""); const [result, setResult] = useState([]); + useEffect(async () => { + axios.get('http://127.0.0.1:8000/blood/show/').then((res) => { + setResult(res.data) + console.log(res.data); + } + ) + }, []); 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, + patient: tokens.username, + title: e.target.title.value, + text: e.target.content.value, publish: true } axios.post(url, data).then((res) => { - setResult(res.data); + setResult(result => [res.data, ...result]); + }); + console.log(result); + } + + const handledelete = async (item) => { + let url = `http://127.0.0.1:8000/blood/update-delete/${item.id}/` + axios.delete(url).then(()=>{ + axios.get('http://127.0.0.1:8000/blood/show/').then((res) => { + setResult(res.data) + }); + console.log(result); + }) + } + const handleform = (item)=>{ + // e.preventDefault() + setshowform(true) + setItemupdate(item) + // console.log(itemupdate); + } + const handleupdate = async (e) => { + e.preventDefault() + let url = `http://127.0.0.1:8000/blood/update-delete/${itemupdate.id}/` + let data = { + patient: itemupdate.patient, + title: e.target.bloodtype.value, + text: e.target.Content.value, + publish: true + } + axios.put(url, data).then(() => { + axios.get('http://127.0.0.1:8000/blood/show/').then((res) => { + setResult(res.data) }); + console.log(result); + }) + setshowform(false) } - return ( - - - - - ) -} \ No newline at end of file + + return ( + + {showform ? + + : + <> + + + > + } + + ) + } \ No newline at end of file diff --git a/pages/Profile.js b/pages/Profile.js new file mode 100644 index 0000000..5594375 --- /dev/null +++ b/pages/Profile.js @@ -0,0 +1,18 @@ +import React from 'react' +import axios from 'axios' +import UserProfile from './Donar_component/UserProfile' +import HospitalProfile from './Hospital_component/hospitalProfile' +import { useAuth } from '../contexts/auth' +import { useState } from 'react' +export default function Newsfeed() { + const { tokens } = useAuth() + return ( + <> + {tokens && + + {tokens.Role == 'Hospital' ? : } + + } + > + ) +} \ No newline at end of file diff --git a/pages/home_compnenet/LoginForm.js b/pages/home_compnenet/LoginForm.js index 0764188..c82e62e 100644 --- a/pages/home_compnenet/LoginForm.js +++ b/pages/home_compnenet/LoginForm.js @@ -12,17 +12,8 @@ export default function LoginForm() { try{ await login(username, password) - if (tokens.Role == 'Doner' || tokens.Role == 'Patient'){ - router.push({ - pathname: '/Donar_component/userProfile', - }); - } - if (tokens.Role == 'Hospital'){ - router.push({ - pathname: '/Hospital_component/hospitalProfile', - }); - } + } catch(error){ diff --git a/pages/home_compnenet/Signupform.js b/pages/home_compnenet/Signupform.js index ff2e703..ec456f2 100644 --- a/pages/home_compnenet/Signupform.js +++ b/pages/home_compnenet/Signupform.js @@ -2,42 +2,57 @@ import React from "react"; import axios from "axios"; import { useState, useEffect } from "react"; import { TweenMax, Power3, TimelineLite, Expo, gsap } from "gsap"; - +import { useAuth } from "../../contexts/auth"; import Navbar from "./Navbar"; +import { useRouter } from 'next/router'; export default function Signupform() { + const { login } = useAuth() + const router = useRouter() const showsignhospital = () => { gsap.to("#sectionsignuphospital", 1.5, { top: 0, ease: Power3.easeInOut }); }; const handlesubmitsignup = async (e) => { + let role = { + Doner: "donater", + Patient: "patient", + }; let data = new FormData(); e.preventDefault(); - const url =' http://127.0.0.1:8000/' + const url = ' http://127.0.0.1:8000/' let blood = { - blood_type:e.target.blood_type.value, - description : e.target.description.value + blood_type: e.target.blood_type.value, + description: e.target.description.value } - const create_blood =await axios.post(`${url}blood/add/`, blood) - + // console.log(e.target.role.value); + const bloodtt = await axios.post(`${url}blood/addtype/`, blood) + data.append("first_name", e.target.firstname.value); data.append("username", e.target.username.value); data.append("email", e.target.email.value); data.append("password", e.target.password.value); - data.append("blood_type", create_blood.data.id); - data.append("roles", "Doner"); - let urls = `${url}accounts/donater/signup/`; - const create = axios.post(urls, data, { + data.append("blood_type",bloodtt.data.id); + data.append("roles", e.target.role.value); + + let urls = `${url}accounts/${role[e.target.role.value]}/signup/`; + const user = await axios.post(urls, data, { headers: { "content-type": "multipart/form-data", }, }); - console.log(create.data); + router.push({ + pathname: '/Profile', + }); + console.log(user); + await login(user.data.username, e.target.password.value) + + }; return ( <> - + @@ -83,19 +98,36 @@ export default function Signupform() { /> - - - Email - - + + + + Email + + + + + + Role + + + Doner + Patient + + + @@ -128,39 +160,39 @@ export default function Signupform() { - - - blood_type - - - A+ - A- - B+ - B- - AB+ - AB- - O+ - O- - - - - - blood_type - - - No Comment - - + + + blood_type + + + A+ + A- + B+ + B- + AB+ + AB- + O+ + O- + + + + + blood_type + + + No Comment + + + {tokens ? : } + - - {/* {} */} {/* */} > ) diff --git a/pages/postComponents/Editpost.js b/pages/postComponents/Editpost.js new file mode 100644 index 0000000..d9b79f0 --- /dev/null +++ b/pages/postComponents/Editpost.js @@ -0,0 +1,59 @@ +export default function Editpost(props){ + + return( + + + + + + + + + + + Blood Type + + + + + + + + Content + + + + + Save + + + + + + + + ) +} \ No newline at end of file diff --git a/pages/postComponents/PostElement.js b/pages/postComponents/PostElement.js index f0b2ab4..327a52a 100644 --- a/pages/postComponents/PostElement.js +++ b/pages/postComponents/PostElement.js @@ -1,60 +1,62 @@ -import { Result } from "postcss"; + import React from "react"; -import axios from "axios"; -import { useState, useEffect } from "react"; - - -export default function PostElement() { - - const [result, setResult] = useState([]); - useEffect(async () => { - axios.get('http://127.0.0.1:8000/blood/show/').then((res) => { - setResult(res.data) - console.log(res.data); - } - ) - }, []); - - return( - - - result.map((item, idx) => { - - - return ( - - - +import { useAuth } from '../../contexts/auth' + +export default function PostElement(props) { + const { tokens } = useAuth(); + + + return ( + <> + { + // props.showform ? : + props.result.map((item, idx) => { - - - - - {item.patient} - {item.time} - - - - {item.title} - - {item.text} - - - - AB+ + return ( + + + + + + + + + + {item.patient} + {item.time} - + + {item.title} + + {item.text} + + {item.patient == tokens.username && + + props.handleform(item)} + className="inline-flex justify-center px-4 py-2 m-2 text-sm font-medium text-white bg-red-600 border border-transparent rounded-md shadow-sm hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500" + >update + props.handledelete(item)} + className="inline-flex justify-center px-4 py-2 m-2 text-sm font-medium text-white bg-red-600 border border-transparent rounded-md shadow-sm hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500" + >delete + + } + + + - - ); - }) -) + ); + })} + > + ) } \ No newline at end of file
- {item.text} -
AB+
+ {item.text} +