최은석

add waiting, menuList

...@@ -11,7 +11,8 @@ ...@@ -11,7 +11,8 @@
11 "express": "^4.18.1", 11 "express": "^4.18.1",
12 "http-proxy-middleware": "^2.0.6", 12 "http-proxy-middleware": "^2.0.6",
13 "mongoose": "^6.3.4", 13 "mongoose": "^6.3.4",
14 - "nodemon": "^2.0.16" 14 + "nodemon": "^2.0.16",
15 + "xhr2": "^0.2.1"
15 } 16 }
16 }, 17 },
17 "node_modules/@sindresorhus/is": { 18 "node_modules/@sindresorhus/is": {
...@@ -2305,6 +2306,14 @@ ...@@ -2305,6 +2306,14 @@
2305 "node": ">=8" 2306 "node": ">=8"
2306 } 2307 }
2307 }, 2308 },
2309 + "node_modules/xhr2": {
2310 + "version": "0.2.1",
2311 + "resolved": "https://registry.npmjs.org/xhr2/-/xhr2-0.2.1.tgz",
2312 + "integrity": "sha512-sID0rrVCqkVNUn8t6xuv9+6FViXjUVXq8H5rWOH2rz9fDNQEd4g0EA2XlcEdJXRz5BMEn4O1pJFdT+z4YHhoWw==",
2313 + "engines": {
2314 + "node": ">= 6"
2315 + }
2316 + },
2308 "node_modules/y18n": { 2317 "node_modules/y18n": {
2309 "version": "5.0.8", 2318 "version": "5.0.8",
2310 "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 2319 "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
...@@ -4006,6 +4015,11 @@ ...@@ -4006,6 +4015,11 @@
4006 "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", 4015 "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
4007 "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" 4016 "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q=="
4008 }, 4017 },
4018 + "xhr2": {
4019 + "version": "0.2.1",
4020 + "resolved": "https://registry.npmjs.org/xhr2/-/xhr2-0.2.1.tgz",
4021 + "integrity": "sha512-sID0rrVCqkVNUn8t6xuv9+6FViXjUVXq8H5rWOH2rz9fDNQEd4g0EA2XlcEdJXRz5BMEn4O1pJFdT+z4YHhoWw=="
4022 + },
4009 "y18n": { 4023 "y18n": {
4010 "version": "5.0.8", 4024 "version": "5.0.8",
4011 "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 4025 "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
11 "express": "^4.18.1", 11 "express": "^4.18.1",
12 "http-proxy-middleware": "^2.0.6", 12 "http-proxy-middleware": "^2.0.6",
13 "mongoose": "^6.3.4", 13 "mongoose": "^6.3.4",
14 - "nodemon": "^2.0.16" 14 + "nodemon": "^2.0.16",
15 + "xhr2": "^0.2.1"
15 } 16 }
16 } 17 }
......
1 const express = require('express'); 1 const express = require('express');
2 const router = express.Router(); 2 const router = express.Router();
3 -const mongoose = require('mongoose') 3 +const mongoose = require('mongoose');
4 +const XMLHttpRequest = require('xhr2');
4 5
5 mongoose.connect('mongodb+srv://choieunseok:uA3mhjPcB3DwsuuD@cluster0.2gsua4u.mongodb.net/?retryWrites=true&w=majority'); 6 mongoose.connect('mongodb+srv://choieunseok:uA3mhjPcB3DwsuuD@cluster0.2gsua4u.mongodb.net/?retryWrites=true&w=majority');
6 7
...@@ -23,6 +24,12 @@ const post = mongoose.Schema({ ...@@ -23,6 +24,12 @@ const post = mongoose.Schema({
23 }); 24 });
24 const postModel = mongoose.model('post', post); 25 const postModel = mongoose.model('post', post);
25 26
27 +const waiting = mongoose.Schema({
28 + date: 'string',
29 + waiting: []
30 +});
31 +const waitingModel = mongoose.model('waiting', waiting);
32 +
26 // router.get('/api', (req, res) => { 33 // router.get('/api', (req, res) => {
27 // res.send({ test: "hi" }); 34 // res.send({ test: "hi" });
28 // }); 35 // });
...@@ -172,8 +179,102 @@ router.delete('/api/delete/:id', async (req, res) => { ...@@ -172,8 +179,102 @@ router.delete('/api/delete/:id', async (req, res) => {
172 } 179 }
173 }); 180 });
174 181
175 -// 대기시간 관련 디비 수정 부분 추가 ---------------------------------------------------------------------------------------------------------------------------------------------------------------- 182 +
176 -// 학식 일주일치 불러오는 부분 추가 ----------------------------------------------------------------------------------------------------------------------------------------------------------------- 183 +router.get('/api/waiting', async (req, res) => { // 오늘의 대기시간 목록 가져오기
184 + try {
185 + const today = getCurrentDate();
186 + var waitingList = await waitingModel.findOne({ date: today });
187 + if (waitingList == null) waitingList = []
188 + else waitingList = waitingList. waiting;
189 + res.send(waitingList);
190 + }
191 + catch (err) {
192 + res.send(err.message);
193 + }
194 +});
195 +
196 +router.post('/api/waiting', async (req, res) => { // 오늘의 대기시간 목록 추가
197 + try {
198 + const today = getCurrentDate();
199 + var waitingList = await waitingModel.findOne({ date: today });
200 +
201 + const date = new Date();
202 + const time = date.getHours() + ":" + date.getMinutes();
203 + const newWaiting = {value: req.body.value, time: time};
204 +
205 + if (waitingList == null) await waitingModel({date: today, waiting: [newWaiting]}).save();
206 + else{
207 + waitingList.waiting.push(newWaiting);
208 + await waitingModel.findOneAndUpdate({ date: today }, {waiting: waitingList.waiting});
209 + }
210 +
211 + var waitingListResult = await waitingModel.findOne({ date: today });
212 + res.send(waitingListResult);
213 + }
214 + catch (err) {
215 + res.send(err.message);
216 + }
217 +});
218 +
219 +
220 +function setting(resultJson){
221 + var result = {}
222 + result.fo_date = [resultJson.fo_date1, resultJson.fo_date2, resultJson.fo_date3, resultJson.fo_date4, resultJson.fo_date5];
223 + result.fo_menu_lun = [resultJson.fo_menu_lun1, resultJson.fo_menu_lun2, resultJson.fo_menu_lun3, resultJson.fo_menu_lun4, resultJson.fo_menu_lun5];
224 + result.fo_menu_eve = [resultJson.fo_menu_eve1, resultJson.fo_menu_eve2, resultJson.fo_menu_eve3, resultJson.fo_menu_eve4, resultJson.fo_menu_eve5];
225 + return result;
226 +}
227 +
228 +router.get('/api/menuList', async (req, res) => { // 제2기숙사 학식 메뉴 일주일치 불러오기
229 + try {
230 +
231 + let newRequest = new XMLHttpRequest();
232 + newRequest.onreadystatechange = () => {
233 + if (newRequest.status == 200 && newRequest.readyState == 4) {
234 + var dt = new Date();
235 + if (dt.getDay() == 0 || dt.getDay() == 6) {
236 + resJSON0 = JSON.parse(newRequest.responseText).root[0].LASTNEXT[0]
237 + resJSON1 = JSON.parse(newRequest.responseText).root[0].LASTNEXT[1]
238 + if (resJSON0.go === "next_mon") {
239 + let nextRequest = new XMLHttpRequest();
240 + nextRequest.onreadystatechange = () => {
241 + if (nextRequest.status == 200 && nextRequest.readyState == 4) {
242 + newResJSON = JSON.parse(nextRequest.responseText).root[0].WEEKLYMENU[0]
243 + res.send(setting(newResJSON));
244 + }
245 + }
246 + nextRequest.open('POST', 'https://dorm2.khu.ac.kr/food/getWeeklyMenu.kmc')
247 + nextRequest.setRequestHeader('Content-type', 'application/x-www-form-urlencoded')
248 + nextRequest.send("locgbn=K1&sch_date=" + resJSON0.mon_date + "&fo_gbn=stu")
249 + } else if (resJSON1.go === "next_mon") {
250 + let nextRequest = new XMLHttpRequest();
251 + nextRequest.onreadystatechange = () => {
252 + if (nextRequest.status == 200 && nextRequest.readyState == 4) {
253 + newResJSON = JSON.parse(nextRequest.responseText).root[0].WEEKLYMENU[0]
254 + res.send(setting(newResJSON));
255 + }
256 + }
257 + nextRequest.open('POST', 'https://dorm2.khu.ac.kr/food/getWeeklyMenu.kmc')
258 + nextRequest.setRequestHeader('Content-type', 'application/x-www-form-urlencoded')
259 + nextRequest.send("locgbn=K1&sch_date=" + resJSON1.mon_date + "&fo_gbn=stu")
260 + }
261 + }
262 + else {
263 + resJSON = JSON.parse(newRequest.responseText).root[0].WEEKLYMENU[0]
264 + res.send(setting(resJSON));
265 + }
266 + }
267 + }
268 + newRequest.open('POST', 'https://dorm2.khu.ac.kr/food/getWeeklyMenu.kmc')
269 + newRequest.setRequestHeader('Content-type', 'application/x-www-form-urlencoded')
270 + newRequest.send("locgbn=K1&sch_date=&fo_gbn=stu")
271 +
272 +
273 + }
274 + catch (err) {
275 + res.send(err.message);
276 + }
277 +});
177 278
178 // router.get('/api/testSave', async (req, res) => { 279 // router.get('/api/testSave', async (req, res) => {
179 // var isFirst = false; 280 // var isFirst = false;
......