source: RebuMKReact/src/Components/Drivers/driverProfile.js@ 364f27d

Last change on this file since 364f27d was 364f27d, checked in by MetodiMladenovski <meto.18@…>, 14 months ago

added projects and db scripts

  • Property mode set to 100644
File size: 3.7 KB
Line 
1import React, { useState } from "react";
2import { useNavigate, Link } from 'react-router-dom'
3import CenteredContainer from "../UtilComponents/CenteredContainer";
4import axios from "../../custom-axios/axios";
5import '../UtilComponents/App.css'
6
7const DriverProfile = (props) => {
8
9 const navigate = useNavigate();
10
11 const [profilePicture, setProfilePicture] = useState(null)
12
13 const uploadProfilePicture = async (driverId) => {
14 await props.onChangeProfilePicture(driverId, profilePicture);
15 navigate("/home");
16 }
17
18 const onFileChange = (e) => {
19 e.preventDefault();
20 const fileData = new FormData();
21 fileData.append('picture', e.target.files[0]);
22 setProfilePicture(fileData);
23 }
24 const checkDriversCar = async () => {
25 const driverId = localStorage.getItem("driverId")
26 const carResponse = await axios.get(`/car/driver/${driverId}`).catch(function (error) {
27 if (error.response) {
28 alert("You haven't registered a car yet. Click on Add Car to do so.")
29 }
30 })
31 navigate("/car", {state: {car: carResponse.data}})
32 }
33
34 const IMAGE_SRC = `http://localhost:8080/driver/${props.driver.id}/profile/picture`;
35
36 return(
37 <CenteredContainer>
38 <h3 style={{textAlign: "center", color: "darkcyan"}}>Welcome to your profile</h3>
39 <div class="col">
40 <div class="card" >
41 <img src={IMAGE_SRC} class="card-img-top" alt="NOT AVAILABLE" style={{height: '285px', padding: '15px'}}/>
42 <div class="card-body">
43 <h5 class="card-title">{props.driver.name} {props.driver.surname}</h5>
44 <p style={props.driver.status !== 'AVAILABLE' ? { color: 'red' } : {color: 'green'}}>
45 Status: {props.driver.status}</p>
46 <p class="card-text">
47 Price per kilometer: {props.driver.pricePerKm} MKD
48 <br></br>
49 Level: {props.driver.level}
50 <br></br>
51 Number of grades: {props.driver.numGrades}
52 <br></br>
53 Grade: {(Math.round(props.driver.grade * 100) / 100).toFixed(2)}
54 </p>
55 <hr></hr>
56 Upload or change your profile picture:
57 <br></br>
58 <span style={{fontSize: '12px'}}>Supported files .png and .jpeg</span>
59 <input
60 style={{backgroundColor: 'cyan'}}
61 type="file"
62 name="myImage"
63 onChange={onFileChange}
64 />
65 <a
66 style={{backgroundColor: "cyan", borderColor: "black", color: "black", marginTop: "10px"}}
67 className="myButton btn btn-primary"
68 onClick={() => uploadProfilePicture(props.driver.id)}>
69 Change picture
70 </a>
71 <hr></hr>
72 <Link style={{backgroundColor: "#00CED1", borderColor: "black", color: "black", width: "45%"}}
73 className="myButton btn btn-primary" to={"/add-car"}>Add car</Link>
74 <a style={{backgroundColor: "#00CED1", borderColor: "black", color: "black", width: "45%", float: 'right'}}
75 className="btn btn-primary" onClick={() => checkDriversCar()}>Check car</a>
76 </div>
77 </div>
78 </div>
79 </CenteredContainer>
80 )
81}
82
83export default DriverProfile;
Note: See TracBrowser for help on using the repository browser.