Showing
4 changed files
with
97 additions
and
27 deletions
... | @@ -86,21 +86,38 @@ router.get("/login", checkAuthenticated, (req, res) => { | ... | @@ -86,21 +86,38 @@ router.get("/login", checkAuthenticated, (req, res) => { |
86 | }); | 86 | }); |
87 | 87 | ||
88 | router.post("/login", (req, res) => { | 88 | router.post("/login", (req, res) => { |
89 | - console.log("구글로그인 성공"); | 89 | + //입력을 다하였는지 |
90 | + if(!req.body.nickname || !req.body.age || !req.body.gender || !req.body.price || !req.body.kindness || !req.body.accessibility ){ | ||
91 | + console.log("입력받지 않은 데이터 존재"); | ||
92 | + return res.render("login", { | ||
93 | + user: req.session.user, | ||
94 | + message: "need data", | ||
95 | + }); | ||
96 | + } | ||
97 | + var set = new Set([req.body.price, req.body.accessibility, req.body.kindness, req.body.noise]); | ||
98 | + //db에 동일 닉네임있는지 검사(닉네임은 유일해야함) | ||
90 | var sql = " SELECT * FROM USER WHERE NICKNAME=?"; | 99 | var sql = " SELECT * FROM USER WHERE NICKNAME=?"; |
91 | var parameter = [req.body.nickname]; | 100 | var parameter = [req.body.nickname]; |
92 | connection.query(sql, parameter, function (err, row) { | 101 | connection.query(sql, parameter, function (err, row) { |
93 | if (err) { | 102 | if (err) { |
94 | console.log(err); | 103 | console.log(err); |
95 | } | 104 | } |
96 | - if (row.length > 0) { | 105 | + else if (row.length > 0) { |
97 | console.log("동일 닉네임있음"); | 106 | console.log("동일 닉네임있음"); |
98 | - | ||
99 | return res.render("login", { | 107 | return res.render("login", { |
100 | user: req.session.user, | 108 | user: req.session.user, |
101 | message: "same nickname", | 109 | message: "same nickname", |
102 | }); | 110 | }); |
103 | - } else { | 111 | + } |
112 | + //중복순위제 | ||
113 | + else if (set.size!=4){ | ||
114 | + console.log("중복된 순위 존재"); | ||
115 | + return res.render("login", { | ||
116 | + user: req.session.user, | ||
117 | + message: "wrong preference", | ||
118 | + }); | ||
119 | + } | ||
120 | + else { | ||
104 | req.session.user.nickname = req.body.nickname; | 121 | req.session.user.nickname = req.body.nickname; |
105 | req.session.user.age = req.body.age; | 122 | req.session.user.age = req.body.age; |
106 | req.session.user.gender = req.body.gender; | 123 | req.session.user.gender = req.body.gender; |
... | @@ -109,24 +126,40 @@ router.post("/login", (req, res) => { | ... | @@ -109,24 +126,40 @@ router.post("/login", (req, res) => { |
109 | req.session.user.noise=req.body.noise; | 126 | req.session.user.noise=req.body.noise; |
110 | req.session.user.accessibility=req.body.accessibility; | 127 | req.session.user.accessibility=req.body.accessibility; |
111 | var sql = | 128 | var sql = |
112 | - "INSERT INTO USER(EMAIL,NICKNAME, AGE, GENDER, PICTURE, KINDNESS, NOISE, ACCESSIBILITY) VALUES(?,?,?,?,?,?,?,?)"; | 129 | + "INSERT INTO USER(EMAIL,NICKNAME, AGE, GENDER) VALUES(?,?,?,?)"; |
113 | var parameter = [ | 130 | var parameter = [ |
114 | req.session.user.email, | 131 | req.session.user.email, |
115 | req.session.user.nickname, | 132 | req.session.user.nickname, |
116 | req.session.user.age, | 133 | req.session.user.age, |
117 | req.session.user.gender, | 134 | req.session.user.gender, |
135 | + ]; | ||
136 | + connection.query(sql, parameter, function (err) { | ||
137 | + if (err) { | ||
138 | + console.log(err); | ||
139 | + return res.render("/"); | ||
140 | + } else { | ||
141 | + console.log("새로운 user데이터 입력"); | ||
142 | + } | ||
143 | + }); | ||
144 | + var sql2 = | ||
145 | + "INSERT INTO PREFERENCE(NICKNAME, PRICE, KINDNESS, NOISE, ACCESSIBILITY) VALUES(?,?,?,?,?)"; | ||
146 | + var parameter2 = [ | ||
147 | + req.session.user.nickname, | ||
118 | req.session.user.price, | 148 | req.session.user.price, |
119 | req.session.user.kindness, | 149 | req.session.user.kindness, |
120 | req.session.user.noise, | 150 | req.session.user.noise, |
121 | req.session.user.accessibility | 151 | req.session.user.accessibility |
122 | ]; | 152 | ]; |
123 | - connection.query(sql, parameter, function (err) { | 153 | + connection.query(sql2, parameter2, function (err) { |
124 | if (err) { | 154 | if (err) { |
125 | console.log(err); | 155 | console.log(err); |
156 | + return res.render("/"); | ||
126 | } else { | 157 | } else { |
127 | - console.log("새로운 user데이터 입력"); | 158 | + console.log("새로운 PREFERENCE데이터 입력"); |
159 | + | ||
128 | } | 160 | } |
129 | }); | 161 | }); |
162 | + | ||
130 | return res.render("map", { user: req.session.user }); | 163 | return res.render("map", { user: req.session.user }); |
131 | } | 164 | } |
132 | }); | 165 | }); |
... | @@ -159,6 +192,15 @@ router.get("/logout", function (req, res) { | ... | @@ -159,6 +192,15 @@ router.get("/logout", function (req, res) { |
159 | res.redirect("/"); | 192 | res.redirect("/"); |
160 | }); | 193 | }); |
161 | 194 | ||
195 | +router.get("/map", function(req, res, next){ | ||
196 | + if (req.session.user) { | ||
197 | + res.render("map", {user: req.session.user}); | ||
198 | + } | ||
199 | + else{ | ||
200 | + res.render("/") | ||
201 | + } | ||
202 | +}) | ||
203 | + | ||
162 | router.get("/review/:cafeId", function (req, res) { | 204 | router.get("/review/:cafeId", function (req, res) { |
163 | const cafeId = req.params.cafeId; | 205 | const cafeId = req.params.cafeId; |
164 | res.render("review", { cafeId: cafeId }); | 206 | res.render("review", { cafeId: cafeId }); |
... | @@ -200,4 +242,5 @@ router.post("/review", function (req, res) { | ... | @@ -200,4 +242,5 @@ router.post("/review", function (req, res) { |
200 | ); | 242 | ); |
201 | }); | 243 | }); |
202 | 244 | ||
245 | + | ||
203 | module.exports = router; | 246 | module.exports = router; | ... | ... |
1 | -{"cookie":{"originalMaxAge":null,"expires":null,"httpOnly":true,"path":"/"},"__lastAccess":1622135361726,"user":{"email":"cjm104174@gmail.com","picture":"https://lh3.googleusercontent.com/a-/AOh14Gh3nytGsPbviGhkznR8HIwrL6o7xBIoFL08nIeU=s96-c","nickname":"cjm","age":"19","gender":"male","price":"1","kindness":"2","noise":"3","accessibility":"4"}} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +{"cookie":{"originalMaxAge":null,"expires":null,"httpOnly":true,"path":"/"},"__lastAccess":1622139888672,"user":{"email":"cjm104174@gmail.com","picture":"https://lh3.googleusercontent.com/a-/AOh14Gh3nytGsPbviGhkznR8HIwrL6o7xBIoFL08nIeU=s96-c","nickname":"Mayf","age":25,"gender":"male"}} | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
... | @@ -89,13 +89,14 @@ | ... | @@ -89,13 +89,14 @@ |
89 | <hr class="my-2" style="background-color: white"> | 89 | <hr class="my-2" style="background-color: white"> |
90 | <div class="pricing-header px-3 py-1 pt-md-3 pb-md-1 mx-auto text-center"> | 90 | <div class="pricing-header px-3 py-1 pt-md-3 pb-md-1 mx-auto text-center"> |
91 | <h5 class="display- ">PREFERENCE</h5> | 91 | <h5 class="display- ">PREFERENCE</h5> |
92 | + <hr class="my-1" style="background-color: white"> | ||
92 | <p>카페를 선택할 떄 중요하게 여기는 요소들의 순위를 매겨주세요.</p> | 93 | <p>카페를 선택할 떄 중요하게 여기는 요소들의 순위를 매겨주세요.</p> |
93 | - <p>(순위가 중복되면 안됩니다. ex) 가격 1순위, 친절 1순위(X)</p> | 94 | + <p>[ 순위가 중복되면 안됩니다. ex) 가격 1순위, 친절 1순위(X) ]</p> |
94 | </div> | 95 | </div> |
95 | <div class="text-center"> | 96 | <div class="text-center"> |
96 | <label for="price_form" class="form-label font-weight-bold" style="margin-right: 15px">가격</label> | 97 | <label for="price_form" class="form-label font-weight-bold" style="margin-right: 15px">가격</label> |
97 | <div class="form-check form-check-inline" id="price_form"> | 98 | <div class="form-check form-check-inline" id="price_form"> |
98 | - <input class="form-check-input" type="radio" name="price" id="price1" value="1"> | 99 | + <input class="form-check-input" type="radio" name="price" id="price1" value="1" checked> |
99 | <label class="form-check-label" for="price1">1순위</label> | 100 | <label class="form-check-label" for="price1">1순위</label> |
100 | </div> | 101 | </div> |
101 | <div class="form-check form-check-inline"> | 102 | <div class="form-check form-check-inline"> |
... | @@ -118,7 +119,7 @@ | ... | @@ -118,7 +119,7 @@ |
118 | <label class="form-check-label" for="kindness">1순위</label> | 119 | <label class="form-check-label" for="kindness">1순위</label> |
119 | </div> | 120 | </div> |
120 | <div class="form-check form-check-inline"> | 121 | <div class="form-check form-check-inline"> |
121 | - <input class="form-check-input" type="radio" name="kindness" id="kindness2" value="2"> | 122 | + <input class="form-check-input" type="radio" name="kindness" id="kindness2" value="2" checked> |
122 | <label class="form-check-label" for="kindness2">2순위</label> | 123 | <label class="form-check-label" for="kindness2">2순위</label> |
123 | </div> | 124 | </div> |
124 | <div class="form-check form-check-inline"> | 125 | <div class="form-check form-check-inline"> |
... | @@ -132,7 +133,7 @@ | ... | @@ -132,7 +133,7 @@ |
132 | 133 | ||
133 | <hr class="my-1" style="background-color: white" /> | 134 | <hr class="my-1" style="background-color: white" /> |
134 | 135 | ||
135 | - <label for="noise_form" class="form-label font-weight-bold" style="margin-right: 15px">소</label> | 136 | + <label for="noise_form" class="form-label font-weight-bold" style="margin-right: 15px">소음</label> |
136 | <div class="form-check form-check-inline" id="noise_form"> | 137 | <div class="form-check form-check-inline" id="noise_form"> |
137 | <input class="form-check-input" type="radio" name="noise" id="noise1" value="1"> | 138 | <input class="form-check-input" type="radio" name="noise" id="noise1" value="1"> |
138 | <label class="form-check-label" for="noise">1순위</label> | 139 | <label class="form-check-label" for="noise">1순위</label> |
... | @@ -142,7 +143,7 @@ | ... | @@ -142,7 +143,7 @@ |
142 | <label class="form-check-label" for="kindness2">2순위</label> | 143 | <label class="form-check-label" for="kindness2">2순위</label> |
143 | </div> | 144 | </div> |
144 | <div class="form-check form-check-inline"> | 145 | <div class="form-check form-check-inline"> |
145 | - <input class="form-check-input" type="radio" name="noise" id="noise3" value="3" > | 146 | + <input class="form-check-input" type="radio" name="noise" id="noise3" value="3" checked> |
146 | <label class="form-check-label" for="noise3">3순위</label> | 147 | <label class="form-check-label" for="noise3">3순위</label> |
147 | </div> | 148 | </div> |
148 | <div class="form-check form-check-inline"> | 149 | <div class="form-check form-check-inline"> |
... | @@ -166,7 +167,7 @@ | ... | @@ -166,7 +167,7 @@ |
166 | <label class="form-check-label" for="accessibility3">3순위</label> | 167 | <label class="form-check-label" for="accessibility3">3순위</label> |
167 | </div> | 168 | </div> |
168 | <div class="form-check form-check-inline"> | 169 | <div class="form-check form-check-inline"> |
169 | - <input class="form-check-input" type="radio" name="accessibility" id="accessibility4" value="4" > | 170 | + <input class="form-check-input" type="radio" name="accessibility" id="accessibility4" value="4" checked> |
170 | <label class="form-check-label" for="accessibility4">4순위</label> | 171 | <label class="form-check-label" for="accessibility4">4순위</label> |
171 | </div> | 172 | </div> |
172 | </div> | 173 | </div> |
... | @@ -186,6 +187,24 @@ | ... | @@ -186,6 +187,24 @@ |
186 | ); | 187 | ); |
187 | </script> | 188 | </script> |
188 | <%}%> | 189 | <%}%> |
190 | + | ||
191 | + <%if (message=='need data'){%> | ||
192 | + <script type="text/javascript"> | ||
193 | + alert( | ||
194 | + "입력하시지 않은 정보가 있습니다." + | ||
195 | + "모든 정보를 입력해주시길 바라겠습니다." | ||
196 | + ); | ||
197 | + </script> | ||
198 | + <%}%> | ||
199 | + | ||
200 | + <%if (message=='wrong preference'){%> | ||
201 | + <script type="text/javascript"> | ||
202 | + alert( | ||
203 | + "중복된 선호도 순위가 있습니다." + | ||
204 | + "순위를 겹치지 않게해주세요(ex 1 3 2 4)" | ||
205 | + ); | ||
206 | + </script> | ||
207 | + <%}%> | ||
189 | </body> | 208 | </body> |
190 | <script> | 209 | <script> |
191 | function signOut() { | 210 | function signOut() { | ... | ... |
... | @@ -35,19 +35,25 @@ | ... | @@ -35,19 +35,25 @@ |
35 | </style> | 35 | </style> |
36 | </head> | 36 | </head> |
37 | <body> | 37 | <body> |
38 | - <nav class="navbar navbar-expand-lg navbar-dark bg-dark"> | 38 | +<nav class="navbar navbar-expand-lg navbar-dark bg-dark"> |
39 | - <button | 39 | + <a class="navbar-brand" href="/" |
40 | - class="navbar-toggler" | 40 | + ><img src="/images/home.png" width="40" height="40" alt="" /> |
41 | - type="button" | 41 | + </a> |
42 | - data-toggle="collapse" | 42 | + <button |
43 | - data-target="#navbarSupportedContent" | 43 | + class="navbar-toggler" |
44 | - aria-controls="navbarSupportedContent" | 44 | + type="button" |
45 | - aria-expanded="false" | 45 | + data-toggle="collapse" |
46 | - aria-label="Toggle navigation" | 46 | + data-target="#navbarSupportedContent" |
47 | - > | 47 | + aria-controls="navbarSupportedContent" |
48 | - <span class="navbar-toggler-icon"></span> | 48 | + aria-expanded="false" |
49 | - </button> | 49 | + aria-label="Toggle navigation" |
50 | - </nav> | 50 | + > |
51 | + <span class="navbar-toggler-icon"></span> | ||
52 | + </button> | ||
53 | + <div class="collapse navbar-collapse" id="navbarSupportedContent"> | ||
54 | + <a class="navbar-brand" href="/"><strong>Home</strong></a> | ||
55 | + </div> | ||
56 | +</nav> | ||
51 | 57 | ||
52 | <div class="pricing-header px-3 py-1 pt-md-3 pb-md-1 mx-auto text-center"> | 58 | <div class="pricing-header px-3 py-1 pt-md-3 pb-md-1 mx-auto text-center"> |
53 | <h3 class="display-6 font-weight-bold">후기 등록</h3> | 59 | <h3 class="display-6 font-weight-bold">후기 등록</h3> |
... | @@ -117,4 +123,6 @@ | ... | @@ -117,4 +123,6 @@ |
117 | </div> | 123 | </div> |
118 | </section> | 124 | </section> |
119 | </body> | 125 | </body> |
126 | +<script src="/javascripts/bootstrap.js"></script> | ||
127 | +<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script> | ||
120 | </html> | 128 | </html> |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
-
Please register or login to post a comment