Store_detail.js 17.1 KB
import React, { Component } from 'react';
import {Image, View, Text, StyleSheet,ScrollView,TouchableOpacity } from 'react-native';
import CouponeItem from '../CouponItem'
import StampItem from '../StampItem'
import Birthday from '../../assets/birthday.svg'
import Star from '../Star'
import AsyncStorage from '@react-native-community/async-storage';
import {get,put,all,post} from 'axios'
import { SERVER } from '../../common/servername';
import Modal from 'react-native-modal'
import moment from 'moment'
import { TextInput } from 'react-native-gesture-handler';
export default class AddTab extends Component {
    static navigationOptions = {
        
        headerShown: false
        
    }
    state = {
        current:1,
        Coupon:[
            {
                title:"네네치킨 송도신도시점",
                left:130,
                use:"공용",
                discount:1000,
                datetime:new Date(),
                condition:["네네 송도신도시점 한정","10,000원이상 결제시 사용가능","중복사용 가능"],

            },
            {
                title:"네네치킨 송도신도시점",
                left:130,
                use:"공용",
                discount:1000,
                datetime:new Date(),
                condition:["네네 송도신도시점 한정","10,000원이상 결제시 사용가능","중복사용 가능"],

            },
            {
                title:"네네치킨 송도신도시점",
                left:130,
                use:"공용",
                discount:1000,
                datetime:new Date(),
                condition:["네네 송도신도시점 한정","10,000원이상 결제시 사용가능","중복사용 가능"],

            }
        ],
        Stamp:[
            {
                title:"네네치킨 송도신도시점",
                contents:"스탬프 10개를 모으면 아메리카노 (hot,ice) 1잔 무료제공!",
                stamp:[
                    {
                        contents:"1",
                        datetime:new Date()
                },
                {
                    contents:"1",
                    datetime:new Date()
            },
            {
                contents:"1",
                datetime:new Date()
        },
        {
            contents:"1",
            datetime:new Date()
    },
    {
        contents:"1",
        datetime:new Date()
},
{
    contents:"1",
    datetime:new Date()
},
{
    contents:"1",
    datetime:new Date()
},
{
    contents:"1",
    datetime:new Date()
},
{
    contents:"1",
    datetime:new Date()
},
{
    contents:"1",
    datetime:new Date()
}
                ],

            },
        ],
        user:{},
        likes:[],
        reviews:[],
        menuModal:false,
        comment:""
    }
    constructor(props) {
        super(props)
    }
    componentDidMount() {
        
        if(this.props.navigation.state.params ) {
            this.setState({
                current:this.props.navigation.state.params.current
            })
        }

        AsyncStorage.getItem("user",(err,res) => {
            if(res) {
                this.setState({
                    user:JSON.parse(res)
                })
                
                get(`http://${SERVER}/stores/managerRead/${JSON.parse(res).id}`).then(res => {
                    this.setState({
                        store:res.data.data
                    })
                    all(res.data.data.map((e,i) => get(`http://${SERVER}/reviews/${e.id}`))).then(ress => {
                        ress.forEach((e,i) => {
                            this.setState(prev => ({
                                reviews:prev.reviews.concat(e.data.data.map((e,i) => e)),
                                loading:false
                            }),() => {
                                console.log(this.state.reviews)
                            })
                        })
                    })
                    all(res.data.data.map((e,i) => get(`http://${SERVER}/likes/${e.id}`))).then(ress => {
                        ress.forEach((e,i) => {
                            this.setState(prev => ({
                                likes:prev.likes.concat(e.data.data.map((e,i) => e)),
                                loading:false
                            }),() => {
                                console.log(this.state.likes)
                            })
                        })
                    })
                })
            }
        })
    }
    onComment = (id) => {
        if(!this.state.comment) return alert("내용을 입력해주세요.")
        put(`http://${SERVER}/reviews/comment`,{review_id:id,comment:this.state.comment}).then(res => {
            if(res.data.success) {
                alert("답글이 등록되었습니다.")
            }
            this.setState({
                menuModal:false
            })
        })
    }
    render() {
        return (
            <View style={{width:"100%",height:"100%"}}>
                <View style={{width:"100%",flexDirection:"row",paddingTop:16,paddingBottom:16,paddingLeft:16,backgroundColor:"#615F5F"}}>
                    <TouchableOpacity onPress={() => this.props.navigation.goBack(null)}>
                        <Image source={require('../../assets/back.png')}/>
                    </TouchableOpacity>
                    <Text style={{color:"white",fontSize:16,marginLeft:16}}>
                        스토어
                    </Text>
                </View>
                <ScrollView style={{backgroundColor:"white"}}>
                    <View style={{
                        width:"100%",
                    shadowColor: "#000",
                    shadowOffset: {
                        width: 0,
                        height: 2,
                    },
                    backgroundColor:"white",
                    shadowOpacity: 0.25,
                    shadowRadius: 3.84,
                    elevation: 5,}}>
                    <View style={{flex:1,flexDirection:"row", }}>
                        <TouchableOpacity onPress={() => this.setState({current:1})} style={{width:"50%",paddingTop:8.9, paddingBottom:11.1,}}>
                            <Text style={[{textAlign:"center",borderRightColor:"#615F5F",borderRightWidth:1},this.state.current==1?{color:"#615F5F"}:{color:"#BDBCBC"}]}>
                                찜한 고객 리스트({this.state.likes.length})
                            </Text>
                        </TouchableOpacity>
                        <TouchableOpacity  onPress={() => this.setState({current:2})}  style={{width:"50%",paddingTop:8.9, paddingBottom:11.1}}>
                            <Text style={[{textAlign:"center"},this.state.current==2?{color:"#615F5F"}:{color:"#BDBCBC"}]}>
                                리뷰 고객 리스트({this.state.reviews.length})
                            </Text>
                        </TouchableOpacity>
                    </View>
                    </View>
                    {this.state.current==1? 
                    this.state.likes.map((e,i) => {
                        return (
                            
                            <View style={{flexDirection:"row",justifyContent:"space-between",paddingTop:16,paddingLeft:16,paddingRight:16,paddingBottom:16}}>
                                <View style={{flexDirection:"row"}}>
                                <Birthday style={{alignSelf:"center"}}/>
                                <View style={{marginLeft:9}}>
                                    <Text style={{color:"#615F5F",fontSize:12,fontWeight:"bold"}}>
                                        {e.nickname}
                                    </Text>
                                    <Text style={{color:"#615F5F",fontSize:11,fontWeight:"bold"}}>
                                        010-1234-1234
                                    </Text>
                                </View>
                                </View>
                                <View>
                                    <Text style={{color:"#615F5F",fontSize:12}}>
                                        찜한  : {moment(e.createdAt).format("YYYY.MM.DD")}
                                    </Text>
                                    <Text style={{color:"#615F5F",fontSize:12}}>
                                        채팅 : 2020.13
                                    </Text>
                            
                                </View>
                                <View>
                                    <Text style={{fontSize:12,color:"#615F5F"}}>
                                        {`[쿠폰${e.Coupons}] [스탬프${e.Stamps}]`}   
                                    </Text>
                                    <Text style={{fontSize:12,color:"#615F5F"}}>
                                        {`[리뷰3] [구매자0]`}   
                                    </Text>
                                </View>
                            </View>
                        )
                    }):
                    
                    <View style={{paddingLeft:16,paddingRight:16,paddingTop:16,paddingBottom:16}}>
                        <View style={{flexDirection:"row"}}>
                            <View style={{justifyContent:"center",width:"18%",borderRightColor:"#BDBCBC",borderRightWidth:1,borderBottomColor:"#BDBCBC",borderBottomWidth:1,height:45.6}}>
                                <Text style={{textAlign:"center",alignSelf:"center",textAlignVertical:"center",color:"#615F5F",fontSize:14,fontWeight:"bold"}}>
                                    이름
                                </Text>
                            </View>
                            <View style={{justifyContent:"center",width:"50%",borderRightColor:"#BDBCBC",borderRightWidth:1,borderBottomColor:"#BDBCBC",borderBottomWidth:1,height:45.6}}>
                                <Text style={{textAlign:"center",alignSelf:"center",textAlignVertical:"center",color:"#615F5F",fontSize:14,fontWeight:"bold"}}>
                                    내용
                                </Text>
                            </View>
                            <View style={{justifyContent:"center",width:"16%",borderRightColor:"#BDBCBC",borderRightWidth:1,borderBottomColor:"#BDBCBC",borderBottomWidth:1,height:45.6}}>
                                <Text style={{textAlign:"center",alignSelf:"center",textAlignVertical:"center",color:"#615F5F",fontSize:14,fontWeight:"bold"}}>
                                    평점
                                </Text>
                            </View>
                            <View style={{justifyContent:"center",width:"16%",borderBottomColor:"#BDBCBC",borderBottomWidth:1,height:45.6}}>
                                <Text style={{textAlign:"center",alignSelf:"center",textAlignVertical:"center",color:"#615F5F",fontSize:14,fontWeight:"bold"}}>
                                    등록일
                                </Text>
                                <Text style={{textAlign:"center",alignSelf:"center",textAlignVertical:"center",color:"#615F5F",fontSize:14,fontWeight:"bold"}}>
                                    수정일
                                </Text>
                            </View>
                        </View>
                        {
                    this.state.reviews.map((e,i) => {
                        return (
                            <View style={{flexDirection:"row"}}>
                            
                        <Modal isVisible={this.state.menuModal}  onBackButtonPress={() => this.setState({menuModal:false})} >
                            <View style={{backgroundColor:"white",alignSelf:"center",width:"90%",paddingLeft:16,paddingTop:16,paddingRight:16,paddingBottom:16}}>
                                <TextInput value={this.state.comment} onChangeText={e => this.setState({comment:e})} style={{fontSize:15,fontWeight:"bold",}} multiline={true} placeholder="답글을 입력해주세요."/>
                            </View>
                            <TouchableOpacity onPress={() => this.onComment(e.id)} style={{backgroundColor:"#FFD63A",fontSize:15,fontWeight:"bold",alignSelf:"center",width:"90%",paddingLeft:16,paddingTop:16,paddingRight:16,paddingBottom:16}}>
                                <Text style={{textAlign:"center",fontSize:15,fontWeight:"bold",}}>
                                등록

                                </Text>
                            </TouchableOpacity>
                        </Modal>
        
                                <View style={{justifyContent:"center",width:"18%",borderRightColor:"#BDBCBC",borderRightWidth:1,borderBottomColor:"#BDBCBC",borderBottomWidth:1}}>
                                    <Text style={{marginTop:8.4,textAlign:"center",alignSelf:"center",textAlignVertical:"center",color:"#615F5F",fontSize:12}}>
                                        {e.reviewWriter}
                                    </Text>
                                    <TouchableOpacity style={{alignSelf:"center",borderWidth:1,borderColor:"#FFD63A",paddingLeft:9,paddingRight:9,marginTop:9,marginBottom:7.5}}>
                                        <Text style={{fontSize:13,lineHeight:19,color:"#FFD63A"}}>
                                            쿠폰
                                        </Text>
                                        <Text  style={{fontSize:13,lineHeight:19,color:"#FFD63A"}}>
                                            발송
                                        </Text>
                                    </TouchableOpacity>
                                </View>
                                <View style={{justifyContent:"center",width:"50%",borderRightColor:"#BDBCBC",borderRightWidth:1,borderBottomColor:"#BDBCBC",borderBottomWidth:1}}>
                                    <Text style={{textAlign:"center",alignSelf:"center",textAlignVertical:"center",color:"#615F5F",fontSize:12}}>
                                        {e.reviewContent}
                                    </Text>
                                    
                                    <TouchableOpacity onPress={() => this.setState({menuModal:true})} style={{alignSelf:"center",borderWidth:1,borderColor:"#FFD63A",paddingLeft:9,paddingRight:9,marginTop:9,marginBottom:7.5}}>
                                        <Text style={{fontSize:13,lineHeight:19,color:"#FFD63A"}}>
                                            댓글쓰기
                                        </Text>
                                    </TouchableOpacity>
                                </View>
                                <View style={{justifyContent:"center",width:"16%",borderRightColor:"#BDBCBC",borderRightWidth:1,borderBottomColor:"#BDBCBC",borderBottomWidth:1}}>
                                    <Text style={{textAlign:"center",alignSelf:"center",textAlignVertical:"center",color:"#615F5F",fontSize:12}}>
                                        {e.reviewGrade}
                                    </Text>
                                    <Star width={7} height={7} margin={2.5} style={{flexDirection:"row",justifyContent:"center",marginTop:5,marginBottom:4.3}} navigation={this.props.navigation} 
                                    item={e.reviewGrade} />
                                </View>
                                <View style={{justifyContent:"center",width:"16%",borderBottomColor:"#BDBCBC",borderBottomWidth:1}}>
                                    <Text style={{textAlign:"center",alignSelf:"center",textAlignVertical:"center",color:"#615F5F",fontSize:10}}>
                                        {moment(e.createdAt).format("YYYY.M.D")}
                                    </Text>
                                    <Text style={{textAlign:"center",alignSelf:"center",textAlignVertical:"center",color:"#615F5F",fontSize:10}}>
                                        {moment(e.updatedAt).format("YYYY.M.D")}
                                    </Text>
                                    <TouchableOpacity style={{alignSelf:"center",borderWidth:1,borderColor:"#FFD63A",paddingLeft:7.5,paddingRight:7.5,marginTop:9,marginBottom:7.5}}>
                                        <Text style={{fontSize:13,lineHeight:19,color:"#FFD63A"}}>
                                            숨기기
                                        </Text>
                                    </TouchableOpacity>
                                </View>
                            </View>
                        )
                    })}
                    </View>
                    }
                    
                </ScrollView>
                        
        
                
            <View style={{zIndex:10,position:"absolute",bottom:0,width:"100%"}}>
                <TouchableOpacity onPress={() => this.props.navigation.navigate("Add_Store")} style={{backgroundColor:"#f4cd37",padding:20}}>
                    <Text style={{textAlign:"center",fontSize:15,fontWeight:"bold",color:"black"}}>
                        스토어(상점) 추가 등록 +
                    </Text>
                </TouchableOpacity>
            </View>
            </View>
        );
    }
}
 
const style = StyleSheet.create({
    container: {
        flex: 1,
        alignItems: 'center',
        justifyContent: 'center',
    }
});