LocCodeChange.js 7.49 KB
Newer Older
Spark's avatar
Spark committed
1
import React, { useEffect, useState } from 'react'
Spark's avatar
Spark committed
2
import '../App.css'
Spark's avatar
Spark committed
3
import { Form, Button, Row, Col, Card } from 'react-bootstrap';
Spark's avatar
Spark committed
4
import axios from 'axios';
Spark's avatar
Spark committed
5
import Swal from 'sweetalert2'
6
import { callUserInfo } from '../utils/CheckDB';
Spark's avatar
Spark committed
7

Spark's avatar
Spark committed
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

function LocCodeChange() {

    const cardstyled = {
        margin: 'auto',
        padding: '1em',
        display: 'flex',
        justifyContent: 'center',
        width: '100%',
        borderWidth: '3px',
        borderRadius: '20px',
        borderColor: 'rgb(110, 189, 142)',
        color: '#04AB70'
    }

    const inboxstyled = {
        display: 'flex',
        flexDirection: 'column',
26
        maxWidth: '90%',
Spark's avatar
Spark committed
27
28
        justifyContent: 'center',
        margin: 'auto',
Spark's avatar
Spark committed
29
30
        padding: '0.5em',
        color: 'black'
Spark's avatar
Spark committed
31
32
33
34
    }

    const btnstyled2 = {
        background: 'white',
Spark's avatar
Spark committed
35
        width: '50%',
Spark's avatar
Spark committed
36
37
38
39
40
        borderWidth: '2px',
        color: 'rgb(110, 189, 142)',
        borderColor: 'rgba(195, 195, 195, 0.753)',
    }

41
42
43
44
45
    const [does, setDoes] = useState([]) // DOE
    const [sggs, setSggs] = useState([]) // SGG
    const [emds, setEmds] = useState([]) // EMD
    const [sggsArray, setSggsArray] = useState([]) // DOE 와 SGG 내의 code_doe 같을 때 => sgg 값
    const [emdsArray, setEmdsArray] = useState([]) // SGG 과 EMD 내의 code_sgg && DOE 와 EMD 내의 code_doe => emd 값
Spark's avatar
Spark committed
46
47
48
49
50

    const doeSelect = document.getElementById('select-doe')
    const sggSelect = document.getElementById('select-sgg')
    const emdSelect = document.getElementById('select-emd')

51
52
53
54
55
    // Local code 받아오기
    useEffect(() => {
        async function getLocCode() {
            const res = await axios.get("/api/data/loccode")
            const local_codes = res.data.contents.loc_code
56

57
58
59
            setDoes(local_codes.DOE)
            setSggs(local_codes.SGG)
            setEmds(local_codes.EMD)
Spark's avatar
Spark committed
60
        }
61

Spark's avatar
Spark committed
62
63
        getLocCode()
    }, [])
Spark's avatar
Spark committed
64

Spark's avatar
Spark committed
65
66
    function selectLocal() {
        sggs.map(function (sggvalue) {
67
            if (Number(doeSelect.value) === sggvalue['code_doe']) {
Spark's avatar
Spark committed
68
69
70
71
                setSggsArray(sggvalue['sgg'])
            }
        })
        emds.map(function (emdvalue) {
72
73
            if ((Number(sggSelect.value) === emdvalue['code_sgg'])
                && (Number(doeSelect.value) === emdvalue['code_doe'])) {
Spark's avatar
Spark committed
74
75
76
77
78
79
                setEmdsArray(emdvalue['emd'])
            }
        })
    }


80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
    async function handleSubmit(event) {
        event.preventDefault()
        if (doeSelect.options[doeSelect.selectedIndex].text !== ''
            && sggSelect.options[sggSelect.selectedIndex].text !== '시군구'
            && emdSelect.options[emdSelect.selectedIndex].text !== '읍면동') {

            const saveCodeEmd = emdSelect.value

            await axios.post('/api/edit-profile', { loc_code: saveCodeEmd }) // loccal code 수정

            callUserInfo().then((res) => {
                console.log('loc_code', res[0].loc_code)
                if (res[0].loc_code) {
                    Swal.fire({
                        title: '변경되었습니다.',
                        text: '축하드립니다!👏',
                        icon: 'success',
                        customClass: 'swal-wide',
                        confirmButtonText: '확인',
                    }).then((res) => {
                        if (res.isConfirmed) {
101
                            window.location.replace('/')
102
103
                        }
                        else {
104
                            window.location.replace('/')
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
                        }
                    })
                }
            })


        }
        else {
            Swal.fire({
                title: '실패',
                text: '전부 선택해주세요',
                icon: 'error',
                customClass: 'swal-wide',
                confirmButtonText: '확인'
            })
        }

    }




Spark's avatar
Spark committed
127

Spark's avatar
Spark committed
128
129
130
131
    return (
        <Row className='text-center w-100 my-2'>
            <Card style={cardstyled}>
                <Card.Title id='impactTitle'>
Spark's avatar
Spark committed
132
                    지역 코드
Spark's avatar
Spark committed
133
134
                </Card.Title>
                <Card.Subtitle style={{ fontWeight: 'lighter' }}>
Spark's avatar
Spark committed
135
                    본인의 지역을 선택해주세요
Spark's avatar
Spark committed
136
137
                </Card.Subtitle>
                <hr />
Spark's avatar
Spark committed
138
                <Card.Text className='m-0'>
139
                    <Form style={inboxstyled} onSubmit={handleSubmit}>
Spark's avatar
Spark committed
140
                        <Row md={12} xs={12} className='m-auto w-100 d-flex justify-content-center' style={{ padding: '0', display: 'flex', justifyContent: 'center', width: '100%' }}>
141
                            <Form.Group className='m-auto w-100' style={btnstyled2} onChange={selectLocal}>
142
                                <Row className='m-auto pb-3'>
Spark's avatar
Spark committed
143
144
                                    <Col md={4} xs={4} style={{ padding: '2px' }}>

145
                                        <Form.Control as='select' size="sm" id='select-doe' required>
Spark's avatar
Spark committed
146
147
148
149
150
151
152
153
154
155
156
157
                                            <option selected disabled></option>
                                            {
                                                does.map((doevalue) => (
                                                    <option value={`${doevalue["code_doe"]}`}>
                                                        {`${doevalue["name_doe"]}`}
                                                    </option>
                                                ))
                                            }
                                        </Form.Control>
                                    </Col>

                                    <Col md={4} xs={4} style={{ padding: '2px' }}>
158
                                        <Form.Control as='select' size="sm" id='select-sgg' required>
Spark's avatar
Spark committed
159
160
161
162
163
164
165
166
167
168
169
170
                                            <option selected disabled>시군구</option>
                                            {
                                                sggsArray.map((sggvalue) => (
                                                    <option value={`${sggvalue["code_sgg"]}`}>
                                                        {`${sggvalue["name_sgg"]}`}
                                                    </option>
                                                ))
                                            }
                                        </Form.Control>
                                    </Col>

                                    <Col md={4} xs={4} style={{ padding: '2px' }}>
171
                                        <Form.Control as='select' size="sm" id='select-emd' required>
Spark's avatar
Spark committed
172
173
174
175
176
177
178
179
180
181
182
183
                                            <option selected disabled>읍면동</option>
                                            {
                                                emdsArray.map((emdvalue) => (
                                                    <option value={`${emdvalue["code_emd"]}`}>
                                                        {`${emdvalue["name_emd"]}`}
                                                    </option>
                                                ))
                                            }
                                        </Form.Control>
                                    </Col>
                                </Row>
                            </Form.Group>
184
185
186
187
                            <Button
                                variant='light' style={btnstyled2} type='submit'>
                                확인
                            </Button>
Spark's avatar
Spark committed
188
189
190
191
192
193
194
195
196
                        </Row>
                    </Form>
                </Card.Text>
            </Card>
        </Row>
    )
}

export default LocCodeChange;