la-flowerita 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- package/package.json +4 -2
- package/server.js +8 -7
- package/src/Controllers/order.controller.js +68 -0
- package/src/Controllers/shoppinglist.controller.js +15 -0
- package/src/Controllers/user.controller.js +79 -22
- package/src/Models/orders.js +12 -0
- package/src/Routes/indexRouter.js +14 -1
- package/src/Services/OrderService.js +46 -0
- package/src/Services/ShoppinglistService.js +2 -2
- package/src/Services/UserService.js +11 -5
- package/src/components/ManageOrders.js +109 -0
- package/src/components/ManageUsers.js +127 -0
- package/src/components/MyOrder.js +62 -0
- package/src/components/MyOrders.js +99 -0
- package/src/components/Order.js +78 -0
- package/src/components/UpdateUserModal.js +304 -0
- package/src/components/User.js +117 -0
- package/src/css/users.css +176 -0
- package/src/index.js +37 -1
@@ -0,0 +1,127 @@
|
|
1
|
+
//components/ProductList.js
|
2
|
+
|
3
|
+
import React, { Component } from "react";
|
4
|
+
import User from "./User";
|
5
|
+
import "../css/users.css";
|
6
|
+
import LoadingIndicator from "./Spinner";
|
7
|
+
//import NewProductModal from "./NewProductModal";
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
class UserList extends Component {
|
12
|
+
constructor(props) {
|
13
|
+
super(props);
|
14
|
+
|
15
|
+
this.state = {
|
16
|
+
users: [],
|
17
|
+
type: false
|
18
|
+
};
|
19
|
+
}
|
20
|
+
|
21
|
+
componentDidMount = async() => {
|
22
|
+
var type = this.state.type ? this.state.type : "All";
|
23
|
+
var options = {
|
24
|
+
method: "POST",
|
25
|
+
headers: { "Content-Type": "application/json" },
|
26
|
+
body:JSON.stringify({type: type})
|
27
|
+
};
|
28
|
+
console.log(type);
|
29
|
+
await fetch("/getUsers", options).then(res => res.json())
|
30
|
+
.then((result) => {
|
31
|
+
console.log(result);
|
32
|
+
this.setState({ users: result.users });
|
33
|
+
console.log(this.state.users);
|
34
|
+
});
|
35
|
+
}
|
36
|
+
|
37
|
+
componentDidUpdate = async(prevProps,prevState) => {
|
38
|
+
if (this.state.type !== prevState.type) {
|
39
|
+
console.log('type changed');
|
40
|
+
var type = this.state.type ? this.state.type : "All";
|
41
|
+
var options = {
|
42
|
+
method: "POST",
|
43
|
+
headers: { "Content-Type": "application/json" },
|
44
|
+
body:JSON.stringify({type: type})
|
45
|
+
};
|
46
|
+
console.log(type);
|
47
|
+
await fetch("/getUsers", options).then(res => res.json())
|
48
|
+
.then((result) => {
|
49
|
+
console.log("hi");
|
50
|
+
this.setState({ users: result.users });
|
51
|
+
console.log(this.state.users);
|
52
|
+
});
|
53
|
+
}
|
54
|
+
}
|
55
|
+
refreshPage() {
|
56
|
+
window.location.reload(false);
|
57
|
+
}
|
58
|
+
|
59
|
+
async changeType(e){
|
60
|
+
var type = e.target.value;
|
61
|
+
this.setState({type:type});
|
62
|
+
}
|
63
|
+
|
64
|
+
render() {
|
65
|
+
return (
|
66
|
+
<div className="container main-content">
|
67
|
+
<div style={{"marginTop":"inherit"}} class="btn-group" role="group" aria-label="Basic example">
|
68
|
+
<button type="button" onClick={(e) => this.changeType(e)} value="Seller" className="button-17">Sellers</button>
|
69
|
+
<button type="button" onClick={(e) => this.changeType(e)} value="Customer" className="button-17">Customers</button>
|
70
|
+
<button type="button" onClick={(e) => this.changeType(e)} value="All" className="button-17">All</button>
|
71
|
+
<button type="button" onClick={() => this.refreshPage()} style={{"width":"10%","height":"5%",margin:"20px"}}>
|
72
|
+
<span><img src="images/refresh.png" style={{"height":"auto",width:"20%"}}/></span> Refresh
|
73
|
+
</button>
|
74
|
+
</div>
|
75
|
+
<div>
|
76
|
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.1/css/all.min.css" integrity="sha256-2XFplPlrFClt0bIdPgpz8H7ojnk10H69xRqd9+uTShA=" crossorigin="anonymous" />
|
77
|
+
<div class="container mt-3 mb-4">
|
78
|
+
<div class="col-lg-9 mt-4 mt-lg-0">
|
79
|
+
<div class="row">
|
80
|
+
<div class="col-md-12">
|
81
|
+
<div class="user-dashboard-info-box table-responsive mb-0 bg-white p-4 shadow-sm">
|
82
|
+
<table class="table manage-candidates-top mb-0">
|
83
|
+
<thead>
|
84
|
+
<tr>
|
85
|
+
<th>Candidate Name</th>
|
86
|
+
<th class="text-center">Status</th>
|
87
|
+
<th class="action text-right">Action</th>
|
88
|
+
</tr>
|
89
|
+
</thead>
|
90
|
+
<tbody>
|
91
|
+
{ !this.state.users || this.state.users.length > 0 ?
|
92
|
+
this.state.users.map((user) => {
|
93
|
+
return (
|
94
|
+
<User
|
95
|
+
key = {user.id}
|
96
|
+
user = {user}
|
97
|
+
name={user.name}
|
98
|
+
degree={user.degree}
|
99
|
+
phone = {user.phone}
|
100
|
+
address = {user.address}
|
101
|
+
email={user.email}
|
102
|
+
profileImage = {user.profileImage}
|
103
|
+
/>
|
104
|
+
|
105
|
+
);
|
106
|
+
}) :""}{ this.state.users && this.state.users.length == 0 ?
|
107
|
+
<h1> There are no users for this category</h1>
|
108
|
+
:""}
|
109
|
+
</tbody>
|
110
|
+
</table>
|
111
|
+
</div>
|
112
|
+
</div>
|
113
|
+
</div>
|
114
|
+
</div>
|
115
|
+
</div>
|
116
|
+
</div>
|
117
|
+
<br />
|
118
|
+
<br />
|
119
|
+
<br />
|
120
|
+
<br />
|
121
|
+
</div>
|
122
|
+
);
|
123
|
+
}
|
124
|
+
}
|
125
|
+
|
126
|
+
export default UserList;
|
127
|
+
|
@@ -0,0 +1,62 @@
|
|
1
|
+
import { React, Component } from "react";
|
2
|
+
import sampleImage from "../logo.svg";
|
3
|
+
import "../css/catalog.css";
|
4
|
+
import "../css/orderedProduct.css";
|
5
|
+
import swal from "sweetalert";
|
6
|
+
import { FaHeart, FaRegHeart, FaShoppingCart, FaEye } from "react-icons/fa";
|
7
|
+
|
8
|
+
import Card from "react-bootstrap/Card";
|
9
|
+
import Button from "react-bootstrap/Button";
|
10
|
+
import { ButtonGroup, Container } from "react-bootstrap";
|
11
|
+
import * as Icon from "react-bootstrap-icons";
|
12
|
+
import ReactStars from "react-rating-stars-component";
|
13
|
+
|
14
|
+
class Order extends Component {
|
15
|
+
constructor(props) {
|
16
|
+
super(props);
|
17
|
+
this.state = {
|
18
|
+
_id : props._id,
|
19
|
+
userId : props.userId,
|
20
|
+
products : props.products,
|
21
|
+
totalPrice : props.totalPrice,
|
22
|
+
date: props.date,
|
23
|
+
status : props.status,
|
24
|
+
};
|
25
|
+
}
|
26
|
+
|
27
|
+
componentDidUpdate(prevProps, prevState) {
|
28
|
+
if (this.state.status !== prevState.status) {
|
29
|
+
console.log(this.state.status);
|
30
|
+
var options = {
|
31
|
+
method: "POST",
|
32
|
+
headers: { "Content-Type": "application/json" },
|
33
|
+
};
|
34
|
+
fetch("/updateOrderStatus", options).then((res) => {
|
35
|
+
if(res.status == 200){
|
36
|
+
swal("Updated","order is successfuly update","success");
|
37
|
+
}
|
38
|
+
else{
|
39
|
+
swal("Error","There was an error","error");
|
40
|
+
}
|
41
|
+
});
|
42
|
+
}
|
43
|
+
}
|
44
|
+
|
45
|
+
|
46
|
+
render() {
|
47
|
+
|
48
|
+
return (
|
49
|
+
|
50
|
+
<tr key={this.props._id}>
|
51
|
+
<td>{this.props._id}
|
52
|
+
</td>
|
53
|
+
<td>{this.props.date}</td>
|
54
|
+
{/* <td>{this.props.products}</td> */}
|
55
|
+
<td className="price-new">{this.props.totalPrice}$</td>
|
56
|
+
<td>{this.props.status}</td>
|
57
|
+
</tr>
|
58
|
+
);
|
59
|
+
}
|
60
|
+
}
|
61
|
+
|
62
|
+
export default Order;
|
@@ -0,0 +1,99 @@
|
|
1
|
+
import {React, Component} from 'react';
|
2
|
+
import sampleImage from '../logo.svg';
|
3
|
+
import '../css/shoppingCart.css';
|
4
|
+
import { FaHeart, FaRegHeart, FaShoppingCart, FaEye } from "react-icons/fa";
|
5
|
+
import MyOrder from "./MyOrder.js"
|
6
|
+
import swal from "sweetalert";
|
7
|
+
import { Container, Table, Row, Button } from "react-bootstrap";
|
8
|
+
|
9
|
+
class MyOrders extends Component {
|
10
|
+
constructor(props) {
|
11
|
+
super(props);
|
12
|
+
this.state = {
|
13
|
+
orders: [],
|
14
|
+
status: false,
|
15
|
+
};
|
16
|
+
}
|
17
|
+
componentDidMount = async () => {
|
18
|
+
var options = {
|
19
|
+
method: "POST",
|
20
|
+
headers: { "Content-Type": "application/json" },
|
21
|
+
};
|
22
|
+
|
23
|
+
await fetch("/getClientOrders", options).then(res => res.json())
|
24
|
+
.then((result) => {
|
25
|
+
console.log(result);
|
26
|
+
this.setState({ orders: result.orders });
|
27
|
+
console.log(this.state.orders);
|
28
|
+
});
|
29
|
+
}
|
30
|
+
|
31
|
+
componentDidUpdate = async(prevProps,prevState) => {
|
32
|
+
if (this.state.status !== prevState.status) {
|
33
|
+
console.log('type changed');
|
34
|
+
var status = this.state.status ? this.state.status : "All";
|
35
|
+
var options = {
|
36
|
+
method: "POST",
|
37
|
+
headers: { "Content-Type": "application/json" },
|
38
|
+
body:JSON.stringify({status: status})
|
39
|
+
};
|
40
|
+
console.log(status);
|
41
|
+
await fetch("/getOrders", options).then(res => res.json())
|
42
|
+
.then((result) => {
|
43
|
+
console.log("hi");
|
44
|
+
this.setState({ orders: result.orders });
|
45
|
+
console.log(this.state.orders);
|
46
|
+
});
|
47
|
+
}
|
48
|
+
}
|
49
|
+
refreshPage() {
|
50
|
+
window.location.reload(false);
|
51
|
+
}
|
52
|
+
|
53
|
+
async changeType(e){
|
54
|
+
var status = e.target.value;
|
55
|
+
this.setState({status:status});
|
56
|
+
}
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
render() {
|
61
|
+
return (
|
62
|
+
<div className="productSlider mb-5 mt-5">
|
63
|
+
<Container>
|
64
|
+
<h5 className="text-left mb-4 ps-2">Order List</h5>
|
65
|
+
<Row>
|
66
|
+
<div className="col-9 cartShow">
|
67
|
+
<Table bordered hover responsive="sm">
|
68
|
+
<thead>
|
69
|
+
<tr>
|
70
|
+
<th>Order </th>
|
71
|
+
<th>Date </th>
|
72
|
+
<th>Products </th>
|
73
|
+
<th>Sub Total</th>
|
74
|
+
<th>Status</th>
|
75
|
+
</tr>
|
76
|
+
</thead>
|
77
|
+
<tbody>
|
78
|
+
{this.state.orders.map((order, idx) => (
|
79
|
+
<MyOrder
|
80
|
+
key={order._id}
|
81
|
+
_id = {order._id}
|
82
|
+
userId = {order.userId}
|
83
|
+
products = {order.products}
|
84
|
+
totalPrice = {order.totalPrice}
|
85
|
+
date = {order.date}
|
86
|
+
status = {order.status}
|
87
|
+
/>
|
88
|
+
))}
|
89
|
+
</tbody>
|
90
|
+
</Table>
|
91
|
+
</div>
|
92
|
+
</Row>
|
93
|
+
</Container>
|
94
|
+
</div>
|
95
|
+
);
|
96
|
+
}
|
97
|
+
}
|
98
|
+
|
99
|
+
export default MyOrders;
|
@@ -0,0 +1,78 @@
|
|
1
|
+
import { React, Component } from "react";
|
2
|
+
import sampleImage from "../logo.svg";
|
3
|
+
import "../css/catalog.css";
|
4
|
+
import "../css/orderedProduct.css";
|
5
|
+
import swal from "sweetalert";
|
6
|
+
import { FaHeart, FaRegHeart, FaShoppingCart, FaEye } from "react-icons/fa";
|
7
|
+
|
8
|
+
import Card from "react-bootstrap/Card";
|
9
|
+
import Button from "react-bootstrap/Button";
|
10
|
+
import { ButtonGroup, Container } from "react-bootstrap";
|
11
|
+
import * as Icon from "react-bootstrap-icons";
|
12
|
+
import ReactStars from "react-rating-stars-component";
|
13
|
+
|
14
|
+
class Order extends Component {
|
15
|
+
constructor(props) {
|
16
|
+
super(props);
|
17
|
+
this.state = {
|
18
|
+
_id : props._id,
|
19
|
+
userId : props.userId,
|
20
|
+
products : props.products,
|
21
|
+
totalPrice : props.totalPrice,
|
22
|
+
date: props.date,
|
23
|
+
status : props.status,
|
24
|
+
};
|
25
|
+
}
|
26
|
+
|
27
|
+
componentDidUpdate(prevProps, prevState) {
|
28
|
+
if (this.state.status !== prevState.status) {
|
29
|
+
console.log(this.state.status);
|
30
|
+
var options = {
|
31
|
+
method: "POST",
|
32
|
+
headers: { "Content-Type": "application/json" },
|
33
|
+
body: JSON.stringify({_id: this.state._id, status: this.state.status})
|
34
|
+
};
|
35
|
+
fetch("/updateOrderStatus", options).then((res) => {
|
36
|
+
if(res.status == 200){
|
37
|
+
swal("Updated","order is successfuly update","success");
|
38
|
+
}
|
39
|
+
else{
|
40
|
+
swal("Error","There was an error","error");
|
41
|
+
}
|
42
|
+
});
|
43
|
+
}
|
44
|
+
}
|
45
|
+
|
46
|
+
|
47
|
+
render() {
|
48
|
+
|
49
|
+
return (
|
50
|
+
|
51
|
+
<tr key={this.props._id}>
|
52
|
+
<td>{this.props._id}
|
53
|
+
</td>
|
54
|
+
<td>{this.props.date}</td>
|
55
|
+
{/* <td>{this.props.products}</td> */}
|
56
|
+
<td className="price-new">{this.props.totalPrice}$</td>
|
57
|
+
|
58
|
+
<td>
|
59
|
+
<select
|
60
|
+
name="status"
|
61
|
+
id="status"
|
62
|
+
defaultValue={this.props.status}
|
63
|
+
onChange={(e) => {
|
64
|
+
this.setState({ status: String(e.target.value) });
|
65
|
+
this.props.onUpdate(e, this.props._id);
|
66
|
+
}}>
|
67
|
+
<option value ="Pending" >Pending</option>
|
68
|
+
<option value ="InProcess" >In process</option>
|
69
|
+
<option value ="Completed" >Completed</option>
|
70
|
+
|
71
|
+
</select>
|
72
|
+
</td>
|
73
|
+
</tr>
|
74
|
+
);
|
75
|
+
}
|
76
|
+
}
|
77
|
+
|
78
|
+
export default Order;
|
@@ -0,0 +1,304 @@
|
|
1
|
+
import React, { Component } from "react";
|
2
|
+
import { confirmAlert } from 'react-confirm-alert'; // Import
|
3
|
+
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
|
4
|
+
import Button from "react-bootstrap/Button";
|
5
|
+
import Modal from "react-bootstrap/Modal";
|
6
|
+
import { NavLink } from "react-router-dom";
|
7
|
+
import { FaPlus } from "react-icons/fa";
|
8
|
+
import '../css/newProductModal.css';
|
9
|
+
import withAuth from "./Auth.js";
|
10
|
+
import {FaEye, FaPen, FaTrash } from "react-icons/fa";
|
11
|
+
import swal from 'sweetalert';
|
12
|
+
|
13
|
+
class UpdateUserModal extends Component {
|
14
|
+
constructor(props) {
|
15
|
+
super(props);
|
16
|
+
this.state = {
|
17
|
+
showModal: false,
|
18
|
+
isUpdate: false,
|
19
|
+
_id: props._id,
|
20
|
+
name: props.name,
|
21
|
+
phone: props.phone,
|
22
|
+
degree: props.degree,
|
23
|
+
address: props.address,
|
24
|
+
isActivate: props.isActivate,
|
25
|
+
email: props.email,
|
26
|
+
ERROR: "",
|
27
|
+
};
|
28
|
+
}
|
29
|
+
|
30
|
+
handleClose = () => {
|
31
|
+
this.setState({ showModal: false });
|
32
|
+
};
|
33
|
+
handleShow = () => {
|
34
|
+
this.setState({ showModal: true });
|
35
|
+
};
|
36
|
+
changeUpdate = () => {
|
37
|
+
this.setState({ isUpdate: !this.state.isUpdate });
|
38
|
+
};
|
39
|
+
|
40
|
+
showConfirmDialog = () => {
|
41
|
+
this.handleClose();
|
42
|
+
confirmAlert({
|
43
|
+
title: 'Confirm to submit',
|
44
|
+
message: 'Are you sure to do this.',
|
45
|
+
buttons: [
|
46
|
+
{
|
47
|
+
label: 'Yes',
|
48
|
+
onClick: () => this.deleteProduct()
|
49
|
+
},
|
50
|
+
{
|
51
|
+
label: 'No',
|
52
|
+
}
|
53
|
+
]
|
54
|
+
});
|
55
|
+
};
|
56
|
+
async deleteUser(){
|
57
|
+
var options = {
|
58
|
+
method: "POST",
|
59
|
+
headers: { "Content-Type": "application/json" },
|
60
|
+
body: JSON.stringify({id: this.state.id}),
|
61
|
+
};
|
62
|
+
await fetch("/deleteUser", options).then(
|
63
|
+
(res) => {
|
64
|
+
console.log(res);
|
65
|
+
if (res.status == 200) {
|
66
|
+
console.log("deleting user was successful");
|
67
|
+
} else if (res.status == 404) {
|
68
|
+
this.setState({ ERROR: "User does not exist already" });
|
69
|
+
} else if (res.status == 400) {
|
70
|
+
this.setState({ ERROR: "There was an error. Please try again" });
|
71
|
+
} else if (res.status == 500) {
|
72
|
+
this.setState({ ERROR: "There was an error on our side" });
|
73
|
+
}
|
74
|
+
},
|
75
|
+
(error) => {
|
76
|
+
this.setState({
|
77
|
+
ERROR: error,
|
78
|
+
});
|
79
|
+
}
|
80
|
+
);
|
81
|
+
swal("Deleted!", "User deleted successfully!", "success");
|
82
|
+
}
|
83
|
+
async updateUser() {
|
84
|
+
var name = this.state.name;
|
85
|
+
var phone = this.state.phone;
|
86
|
+
var degree = this.state.degree;
|
87
|
+
var address = this.state.address;
|
88
|
+
var email = this.state.email;
|
89
|
+
if (
|
90
|
+
name == "" ||
|
91
|
+
phone == "" ||
|
92
|
+
degree == "" ||
|
93
|
+
address == "" ||
|
94
|
+
email == ""
|
95
|
+
) {
|
96
|
+
this.setState({ ERROR: "Please fill all the fields." });
|
97
|
+
return;
|
98
|
+
}
|
99
|
+
var user = {
|
100
|
+
name: name,
|
101
|
+
phone: phone,
|
102
|
+
degree: degree,
|
103
|
+
address: address,
|
104
|
+
email: email,
|
105
|
+
_id: this.state._id
|
106
|
+
};
|
107
|
+
console.log(user)
|
108
|
+
var options = {
|
109
|
+
method: "POST",
|
110
|
+
headers: { "Content-Type": "application/json" },
|
111
|
+
body: JSON.stringify({user: user}),
|
112
|
+
};
|
113
|
+
await fetch("/updateUser", options).then(
|
114
|
+
(res) => {
|
115
|
+
console.log(res);
|
116
|
+
if (res.status == 200) {
|
117
|
+
console.log("updating user was successful");
|
118
|
+
swal("Updated!", "User updated successfully!", "success");
|
119
|
+
} else if (res.status == 400) {
|
120
|
+
this.setState({ ERROR: "This email already exists" });
|
121
|
+
} else if (res.status == 500) {
|
122
|
+
this.setState({ ERROR: "There was an error on our side" });
|
123
|
+
}
|
124
|
+
},
|
125
|
+
(error) => {
|
126
|
+
this.setState({
|
127
|
+
ERROR: error,
|
128
|
+
});
|
129
|
+
}
|
130
|
+
);
|
131
|
+
}
|
132
|
+
renderPreview() {
|
133
|
+
if(this.state.src) {
|
134
|
+
return (
|
135
|
+
<img src={this.state.src} style={{"maxWidth": "inherit", "maxHeight": "inherit"}}/>
|
136
|
+
);
|
137
|
+
} else {
|
138
|
+
return (
|
139
|
+
<p>
|
140
|
+
No Preview
|
141
|
+
</p>
|
142
|
+
);
|
143
|
+
}
|
144
|
+
}
|
145
|
+
|
146
|
+
|
147
|
+
inputsHandler = (e) => {
|
148
|
+
this.setState({ [e.target.name]: e.target.value });
|
149
|
+
};
|
150
|
+
radioHandler = (e) => {
|
151
|
+
this.setState({
|
152
|
+
[e.target.name]: document.querySelector(
|
153
|
+
`input[name=${e.target.name}]:checked`
|
154
|
+
).id,
|
155
|
+
});
|
156
|
+
};
|
157
|
+
colorSelected = (e) => {
|
158
|
+
this.setState({
|
159
|
+
color : e.target.value});
|
160
|
+
};
|
161
|
+
render() {
|
162
|
+
|
163
|
+
return (
|
164
|
+
<div>
|
165
|
+
<a
|
166
|
+
role="button"
|
167
|
+
style={{ display: this.state.showButton }}
|
168
|
+
onClick={() => this.handleShow()}
|
169
|
+
>
|
170
|
+
<FaEye/>
|
171
|
+
</a>
|
172
|
+
<a
|
173
|
+
role="button"
|
174
|
+
style={{display: !this.state.isUpdate? "block" : "none"}}
|
175
|
+
onClick={() => this.showConfirmDialog()}
|
176
|
+
>
|
177
|
+
<FaTrash/>
|
178
|
+
</a>
|
179
|
+
<Modal
|
180
|
+
style={{ opacity: 1 }}
|
181
|
+
show={this.state.showModal}
|
182
|
+
onHide={() => this.handleClose()}
|
183
|
+
>
|
184
|
+
|
185
|
+
<Modal.Header>
|
186
|
+
<Modal.Title>
|
187
|
+
<div className="modal-header">
|
188
|
+
|
189
|
+
<img style={{"maxWidth": "inherit", "maxHeight": "50%","borderRadius":"50%"}} src ="https://cdn-icons-png.flaticon.com/512/149/149071.png"
|
190
|
+
onError={( e ) => {
|
191
|
+
e.target.src="https://cdn-icons-png.flaticon.com/512/149/149071.png";
|
192
|
+
e.target.onerror = null; // prevents looping
|
193
|
+
}}
|
194
|
+
alt={this.state.name} height="150" />
|
195
|
+
</div>
|
196
|
+
</Modal.Title>
|
197
|
+
</Modal.Header>
|
198
|
+
<Modal.Body>
|
199
|
+
<form key={this.state.id}>
|
200
|
+
<div className="mb-3">
|
201
|
+
<h1>full name:</h1>
|
202
|
+
<input
|
203
|
+
type="text"
|
204
|
+
name="name"
|
205
|
+
id="name"
|
206
|
+
className="form-control"
|
207
|
+
placeholder="Name"
|
208
|
+
onChange={this.inputsHandler}
|
209
|
+
defaultValue={this.state.name}
|
210
|
+
required
|
211
|
+
autoFocus
|
212
|
+
disabled = {this.state.isUpdate? "" : "disabled"}
|
213
|
+
/>
|
214
|
+
</div>
|
215
|
+
<div className="mb-3">
|
216
|
+
<h1>phone number:</h1>
|
217
|
+
<input
|
218
|
+
type="text"
|
219
|
+
name="phone"
|
220
|
+
id="phone"
|
221
|
+
className="form-control"
|
222
|
+
placeholder="phone number"
|
223
|
+
defaultValue={this.state.phone}
|
224
|
+
onChange={this.inputsHandler}
|
225
|
+
required
|
226
|
+
disabled = {this.state.isUpdate? "" :"disabled"}
|
227
|
+
/>
|
228
|
+
</div>
|
229
|
+
<div className="mb-3">
|
230
|
+
<h1>address:</h1>
|
231
|
+
<input
|
232
|
+
type="text"
|
233
|
+
name="address"
|
234
|
+
id="address"
|
235
|
+
className="form-control"
|
236
|
+
placeholder="Address"
|
237
|
+
onChange={this.inputsHandler}
|
238
|
+
defaultValue={this.state.address}
|
239
|
+
required
|
240
|
+
disabled = {this.state.isUpdate? "" :"disabled"}
|
241
|
+
/>
|
242
|
+
</div>
|
243
|
+
<div className="mb-3" style={{display: this.state.isUpdate? "none" : "block"}}>
|
244
|
+
<h1>email:</h1>
|
245
|
+
<input
|
246
|
+
type="text"
|
247
|
+
name="email"
|
248
|
+
id="email"
|
249
|
+
className="form-control"
|
250
|
+
placeholder="Email"
|
251
|
+
defaultValue={this.state.email}
|
252
|
+
onChange={this.inputsHandler}
|
253
|
+
required
|
254
|
+
disabled = "disabled"
|
255
|
+
/>
|
256
|
+
</div>
|
257
|
+
<div className="mb-3" style={{display:this.state.isUpdate? "block" : "none"}}>
|
258
|
+
<input
|
259
|
+
type="radio"
|
260
|
+
name="degree"
|
261
|
+
id="Worker"
|
262
|
+
onChange={this.radioHandler}
|
263
|
+
checked = {this.state.degree == "Seller" ? "checked" : null}
|
264
|
+
/>
|
265
|
+
<label for="rd1">Worker</label>
|
266
|
+
<input
|
267
|
+
type="radio"
|
268
|
+
name="degree"
|
269
|
+
id="Client"
|
270
|
+
onChange={this.radioHandler}
|
271
|
+
checked = {this.state.degree == "Customer" ? "checked" : null}
|
272
|
+
/>
|
273
|
+
<label for="rd2">Client</label>
|
274
|
+
</div>
|
275
|
+
|
276
|
+
</form>
|
277
|
+
</Modal.Body>
|
278
|
+
<Modal.Footer>
|
279
|
+
<h5>{this.state.ERROR}</h5>
|
280
|
+
<div className="modal-footer">
|
281
|
+
<a
|
282
|
+
role="button"
|
283
|
+
style={{display: this.state.isUpdate? "block" : "none"}}
|
284
|
+
onClick={() => this.changeUpdate()}
|
285
|
+
>
|
286
|
+
<FaEye/>
|
287
|
+
</a>
|
288
|
+
<a
|
289
|
+
role="button"
|
290
|
+
style={{display: !this.state.isUpdate? "block" : "none"}}
|
291
|
+
onClick={() => this.changeUpdate()}
|
292
|
+
>
|
293
|
+
<FaPen/>
|
294
|
+
</a>
|
295
|
+
<button onClick={() => this.updateUser()} className="button-17" style={{display: this.state.isUpdate? "block" : "none"}}>Update</button>
|
296
|
+
</div>
|
297
|
+
</Modal.Footer>
|
298
|
+
</Modal>
|
299
|
+
</div>
|
300
|
+
);
|
301
|
+
}
|
302
|
+
}
|
303
|
+
|
304
|
+
export default UpdateUserModal;
|