1 | import React, {useEffect, useState} from 'react'
|
---|
2 | import {Button, Card, Input, List, notification, Pagination, Rate, Spin, Tooltip} from "antd";
|
---|
3 | import axios from "axios";
|
---|
4 | import env from "../env";
|
---|
5 | import moment from "moment";
|
---|
6 |
|
---|
7 | const Review = props => {
|
---|
8 | const [reviews, setReviews] = useState([]);
|
---|
9 | const [restaurant, setRestaurant] = useState({})
|
---|
10 | const [loading, setLoading] = useState(true);
|
---|
11 | const [reviewSize, setReviewSize] = useState(0)
|
---|
12 |
|
---|
13 |
|
---|
14 | useEffect(()=> {
|
---|
15 | setLoading(true);
|
---|
16 | getRestaurant()
|
---|
17 | console.log(props.user)
|
---|
18 | },[])
|
---|
19 | useEffect(()=> {
|
---|
20 | getRestaurant()
|
---|
21 | },[props.refresh])
|
---|
22 |
|
---|
23 |
|
---|
24 | const getRestaurant = (pg = 1, size = 5) => {
|
---|
25 | axios.get(env.api + 'Reviews/count',).then(res=>{
|
---|
26 | setReviewSize(res.data);
|
---|
27 | });
|
---|
28 | axios.get(env.api + 'Restaurants').then(res=>{
|
---|
29 | setRestaurant(res.data);
|
---|
30 | console.log(pg, size)
|
---|
31 | axios.get(env.api + 'Reviews',{params:{page:pg-1, pageSize: size}}).then(res=>{
|
---|
32 | setReviews(res.data);
|
---|
33 | setLoading(false);
|
---|
34 | });
|
---|
35 | });
|
---|
36 | }
|
---|
37 |
|
---|
38 | return(
|
---|
39 | <div style={{padding: props.front ? 0 : '20px',textAlign:'start'}}>
|
---|
40 | <div style={{
|
---|
41 | width: '100%',
|
---|
42 | backgroundColor: 'white',
|
---|
43 | padding: '20px',
|
---|
44 | height:'75px',
|
---|
45 | border: '1px solid lightgray'
|
---|
46 | }} id={'expandMain'}>
|
---|
47 | <h2 style={{float: 'left'}}>Оценки</h2>
|
---|
48 | {props.front ?
|
---|
49 | (props.user?
|
---|
50 | <Button style={{float:'right'}} type={'primary'} onClick={()=>props.user.isConfirmed ? props.setVisible(true) : notification['error']({message: <p>Мора да го потврдите вашиот мејл за да оставите оценка. <a href={'/confirm-email'}>Потврдете го тука</a></p>})}>Внеси оценка</Button>
|
---|
51 | : <Tooltip title={'Мора да се најавите за да оставите оценка'}><Button style={{float:'right'}} disabled type={'primary'} onClick={()=>props.setVisible(true)}>Внеси оценка</Button></Tooltip>)
|
---|
52 | : ''
|
---|
53 | }
|
---|
54 | </div>
|
---|
55 | {loading ? <Spin style={{margin: '20px'}}/> :
|
---|
56 | <div>
|
---|
57 | <div style={{backgroundColor: 'white',padding:'10px', border:'1px solid lightgray', borderTop: 'none'}}>
|
---|
58 | <h3>Средна оценка: <Rate disabled allowHalf value={restaurant.averageReview}/> од вкупно {reviewSize} оценки</h3>
|
---|
59 | </div>
|
---|
60 | <List dataSource={reviews} itemLayout={'horizontal'} locale={{emptyText:'Нема оставени оценки за овој ресторан'}}
|
---|
61 | renderItem={item => (
|
---|
62 | <Card title={item.title} style={{width:'98%',backgroundColor:'white',margin:'1%'}}>
|
---|
63 | <p>{item.description}</p>
|
---|
64 | <Rate disabled value={item.stars}/>
|
---|
65 | <p style={{color:'gray'}}>{item.username} / {moment(item.createdAt).format("DD.MM.yyyy")}</p>
|
---|
66 | </Card>
|
---|
67 | )}/>
|
---|
68 | <div style={{paddingBottom:'20px', textAlign:'center'}}>
|
---|
69 | <Pagination defaultPageSize={5} total={reviewSize} onChange={(pg,size)=>getRestaurant(pg,size)} showSizeChanger pageSizeOptions={[5,10,20,50]}/>
|
---|
70 | </div>
|
---|
71 | </div>
|
---|
72 | }
|
---|
73 | </div>
|
---|
74 | )
|
---|
75 | }
|
---|
76 |
|
---|
77 | export default Review; |
---|