[899b19d] | 1 | import React, {useEffect, useState} from 'react'
|
---|
[63f5ced] | 2 | import {Button, Card, Input, List, notification, Pagination, Rate, Spin, Tooltip} from "antd";
|
---|
[899b19d] | 3 | import axios from "axios";
|
---|
| 4 | import env from "../env";
|
---|
| 5 | import moment from "moment";
|
---|
| 6 |
|
---|
| 7 | const Review = props => {
|
---|
[63f5ced] | 8 | const [reviews, setReviews] = useState([]);
|
---|
| 9 | const [restaurant, setRestaurant] = useState({})
|
---|
[899b19d] | 10 | const [loading, setLoading] = useState(true);
|
---|
[63f5ced] | 11 | const [reviewSize, setReviewSize] = useState(0)
|
---|
| 12 |
|
---|
[899b19d] | 13 |
|
---|
| 14 | useEffect(()=> {
|
---|
| 15 | setLoading(true);
|
---|
| 16 | getRestaurant()
|
---|
[a26f6a1] | 17 | console.log(props.user)
|
---|
[899b19d] | 18 | },[])
|
---|
| 19 | useEffect(()=> {
|
---|
| 20 | getRestaurant()
|
---|
| 21 | },[props.refresh])
|
---|
| 22 |
|
---|
[63f5ced] | 23 |
|
---|
| 24 | const getRestaurant = (pg = 1, size = 5) => {
|
---|
| 25 | axios.get(env.api + 'Reviews/count',).then(res=>{
|
---|
| 26 | setReviewSize(res.data);
|
---|
| 27 | });
|
---|
[899b19d] | 28 | axios.get(env.api + 'Restaurants').then(res=>{
|
---|
| 29 | setRestaurant(res.data);
|
---|
[63f5ced] | 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 | });
|
---|
[899b19d] | 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?
|
---|
[a26f6a1] | 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>
|
---|
[899b19d] | 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'}}>
|
---|
[63f5ced] | 58 | <h3>Средна оценка: <Rate disabled allowHalf value={restaurant.averageReview}/> од вкупно {reviewSize} оценки</h3>
|
---|
[899b19d] | 59 | </div>
|
---|
[63f5ced] | 60 | <List dataSource={reviews} itemLayout={'horizontal'} locale={{emptyText:'Нема оставени оценки за овој ресторан'}}
|
---|
[899b19d] | 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 | )}/>
|
---|
[63f5ced] | 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>
|
---|
[899b19d] | 71 | </div>
|
---|
| 72 | }
|
---|
| 73 | </div>
|
---|
| 74 | )
|
---|
| 75 | }
|
---|
| 76 |
|
---|
| 77 | export default Review; |
---|