Showing
2 changed files
with
281 additions
and
0 deletions
1 | const Router = require('koa-router'); | 1 | const Router = require('koa-router'); |
2 | +const manageCtrl = require('./manage.ctrl'); | ||
2 | 3 | ||
3 | const manage = new Router(); | 4 | const manage = new Router(); |
4 | 5 | ||
6 | +/** | ||
7 | + * 의사 회원가입 요청을 한 회원들의 목록을 리턴 | ||
8 | + * request parameter : null | ||
9 | + * url : http://localhost:4000/api/manage/doctor | ||
10 | + * return : doctor request List | ||
11 | + */ | ||
12 | +manage.get('/doctor', manageCtrl.getDoctorRegReqList); | ||
13 | + | ||
14 | +/** | ||
15 | + * 의사 회원가입 요청을 한 특정 회원의 상세정보 확인 | ||
16 | + * request parameter : doctor Id | ||
17 | + * url : http://localhost:4000/api/manage/doctor/:doctorId | ||
18 | + * return : doctor Info | ||
19 | + */ | ||
20 | +manage.get('/doctor/:doctorId', manageCtrl.getDoctorRegReqDetail); | ||
21 | + | ||
22 | +/** | ||
23 | + * 의사 요청을 한 회원을 수락한다 | ||
24 | + * request parameter : doctor Id | ||
25 | + * url : http://localhost:4000/api/manage/doctor/accept | ||
26 | + * return : null | ||
27 | + */ | ||
28 | +manage.post('/doctor/accept', manageCtrl.acceptDoctorRegReq); | ||
29 | + | ||
30 | +/** | ||
31 | + * 의사 요청을 한 회원을 거절한다. | ||
32 | + * request parameter : doctor Id | ||
33 | + * url : http://localhost:4000/api/manange/doctor/reject | ||
34 | + * return : null | ||
35 | + */ | ||
36 | +manage.post('/doctor/reject', manageCtrl.rejectDoctorRegReq); | ||
37 | + | ||
5 | 38 | ||
6 | module.exports = manage; | 39 | module.exports = manage; |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
server/src/api/manage/manage.ctrl.js
0 → 100644
1 | +const User = require('../../models/user'); | ||
2 | +const DoctorInfo = require('../../models/doctorInfo'); | ||
3 | +const Profile = require('../../models/profile'); | ||
4 | + | ||
5 | +/** | ||
6 | + * 의사 회원가입을 요청한 회원 리스트를 확인한다. | ||
7 | + * http methods : get | ||
8 | + * @param {*} ctx | ||
9 | + * @returns | ||
10 | + */ | ||
11 | +exports.getDoctorRegReqList = async ctx => { | ||
12 | + const token = ctx.req.headers.authorization; | ||
13 | + if (!token || !token.length) { | ||
14 | + ctx.status = 401; | ||
15 | + return; | ||
16 | + } | ||
17 | + | ||
18 | + // eslint-disable-next-line no-undef | ||
19 | + const { userId } = jwt.verify(token, process.env.JWT_SECRET); | ||
20 | + const user = await User.findByUserId(userId); | ||
21 | + if(!user || user.userTypeCd !== 'MANAGER' || user.useYn !== 'Y') { | ||
22 | + ctx.status = 403; | ||
23 | + return; | ||
24 | + } | ||
25 | + | ||
26 | + try { | ||
27 | + const doctorRegReqList = await User.find({ | ||
28 | + userTypeCd : 'DOCTOR', | ||
29 | + useYn : 'W', | ||
30 | + }); | ||
31 | + | ||
32 | + ctx.status = 200; | ||
33 | + ctx.body = doctorRegReqList; | ||
34 | + | ||
35 | + } catch(e) { | ||
36 | + ctx.status = 500; | ||
37 | + ctx.body = { | ||
38 | + error : '알 수 없는 에러가 발생했습니다.', | ||
39 | + }; | ||
40 | + console.log(e); | ||
41 | + } | ||
42 | +}; | ||
43 | + | ||
44 | +/** | ||
45 | + * 의사 신청을 한 회원을 상세 조회한다. | ||
46 | + * http methods : get | ||
47 | + * @param {*} ctx | ||
48 | + * @returns | ||
49 | + */ | ||
50 | +exports.getDoctorRegReqDetail = async ctx => { | ||
51 | + const token = ctx.req.headers.authorization; | ||
52 | + if (!token || !token.length) { | ||
53 | + ctx.status = 401; | ||
54 | + return; | ||
55 | + } | ||
56 | + | ||
57 | + // eslint-disable-next-line no-undef | ||
58 | + const { userId } = jwt.verify(token, process.env.JWT_SECRET); | ||
59 | + const user = await User.findByUserId(userId); | ||
60 | + if(!user || user.userTypeCd !== 'MANAGER' || user.useYn !== 'Y') { | ||
61 | + ctx.status = 403; | ||
62 | + return; | ||
63 | + } | ||
64 | + | ||
65 | + try { | ||
66 | + const { doctorId } = ctx.params; | ||
67 | + const doctor = await User.findOne({ userId : doctorId }); | ||
68 | + if(!doctor) { | ||
69 | + ctx.status = 404; | ||
70 | + ctx.body = { | ||
71 | + error : '존재하지 않는 회원입니다.', | ||
72 | + }; | ||
73 | + return; | ||
74 | + } else if(doctor.userTypeCd !== 'DOCTOR') { | ||
75 | + ctx.status = 400; | ||
76 | + ctx.body = { | ||
77 | + error : '의사로 가입된 회원이 아닙니다.', | ||
78 | + }; | ||
79 | + return; | ||
80 | + } else if (doctor.useYn !== 'W') { | ||
81 | + ctx.status = 400; | ||
82 | + ctx.body = { | ||
83 | + error : '이미 의사로 가입된 회원입니다.', | ||
84 | + }; | ||
85 | + return; | ||
86 | + } | ||
87 | + | ||
88 | + const doctorInfo = await DoctorInfo.findOne({ doctorId }); | ||
89 | + if(!doctorInfo) { | ||
90 | + ctx.status = 404; | ||
91 | + ctx.body = { | ||
92 | + error : '의사 자격이 증명되지 않은 회원입니다.', | ||
93 | + }; | ||
94 | + return; | ||
95 | + } else if(doctorInfo.useYn === 'Y') { | ||
96 | + ctx.status = 400; | ||
97 | + ctx.body = { | ||
98 | + error : '이미 의사 인증이 완료된 회원입니다.' | ||
99 | + };1 | ||
100 | + return; | ||
101 | + } else if(doctorInfo.useYn === 'N') { | ||
102 | + ctx.status = 400; | ||
103 | + ctx.body = { | ||
104 | + error : '의사 인증이 거절된 회원입니다.', | ||
105 | + }; | ||
106 | + return; | ||
107 | + } | ||
108 | + | ||
109 | + ctx.status = 200; | ||
110 | + ctx.body = doctorInfo; | ||
111 | + | ||
112 | + } catch (e) { | ||
113 | + ctx.status = 500; | ||
114 | + ctx.body = { | ||
115 | + error : '알 수 없는 에러가 발생했습니다.', | ||
116 | + }; | ||
117 | + console.log(e); | ||
118 | + } | ||
119 | +}; | ||
120 | + | ||
121 | +/** | ||
122 | + * 의사 요청이 온 회원을 수락한다. | ||
123 | + * http methods : post | ||
124 | + * @param {*} ctx | ||
125 | + * @returns | ||
126 | + */ | ||
127 | +exports.acceptDoctorRegReq = async ctx => { | ||
128 | + const token = ctx.req.headers.authorization; | ||
129 | + if (!token || !token.length) { | ||
130 | + ctx.status = 401; | ||
131 | + return; | ||
132 | + } | ||
133 | + | ||
134 | + // eslint-disable-next-line no-undef | ||
135 | + const { userId } = jwt.verify(token, process.env.JWT_SECRET); | ||
136 | + const user = await User.findByUserId(userId); | ||
137 | + if(!user || user.userTypeCd !== 'MANAGER' || user.useYn !== 'Y') { | ||
138 | + ctx.status = 403; | ||
139 | + return; | ||
140 | + } | ||
141 | + | ||
142 | + try { | ||
143 | + const { doctorId } = ctx.request.body; | ||
144 | + const doctor = await User.findOne({ userId : doctorId }); | ||
145 | + if(!doctor) { | ||
146 | + ctx.status = 404; | ||
147 | + ctx.body = { | ||
148 | + error : '존재하지 않는 회원입니다.', | ||
149 | + }; | ||
150 | + return; | ||
151 | + } else if(doctor.useYn === 'N') { | ||
152 | + ctx.status = 400; | ||
153 | + ctx.body = { | ||
154 | + error : '탈퇴된 회원입니다.', | ||
155 | + }; | ||
156 | + return; | ||
157 | + } else if(doctor.useYn === 'Y') { | ||
158 | + ctx.status = 400; | ||
159 | + ctx.body = { | ||
160 | + error : '이미 가입이 완료된 의사입니다.', | ||
161 | + }; | ||
162 | + return; | ||
163 | + } else if(doctor.userTypeCd !== 'DOCTOR') { | ||
164 | + ctx.status = 400; | ||
165 | + ctx.body = { | ||
166 | + error : '의사로 가입된 회원이 아닙니다.', | ||
167 | + }; | ||
168 | + return; | ||
169 | + } | ||
170 | + | ||
171 | + doctor.setUseYn('Y'); | ||
172 | + doctor.save(); | ||
173 | + | ||
174 | + ctx.status = 200; | ||
175 | + | ||
176 | + } catch(e) { | ||
177 | + ctx.status = 500; | ||
178 | + ctx.body = { | ||
179 | + error : '알 수 없는 에러가 발생했습니다.', | ||
180 | + }; | ||
181 | + console.log(e); | ||
182 | + } | ||
183 | +}; | ||
184 | + | ||
185 | +/** | ||
186 | + * 의사 요청이 온 회원을 거절한다. | ||
187 | + * http methods : post | ||
188 | + * @param {*} ctx | ||
189 | + * @returns | ||
190 | + */ | ||
191 | + exports.rejectDoctorRegReq = async ctx => { | ||
192 | + const token = ctx.req.headers.authorization; | ||
193 | + if (!token || !token.length) { | ||
194 | + ctx.status = 401; | ||
195 | + return; | ||
196 | + } | ||
197 | + | ||
198 | + // eslint-disable-next-line no-undef | ||
199 | + const { userId } = jwt.verify(token, process.env.JWT_SECRET); | ||
200 | + const user = await User.findByUserId(userId); | ||
201 | + if(!user || user.userTypeCd !== 'MANAGER' || user.useYn !== 'Y') { | ||
202 | + ctx.status = 403; | ||
203 | + return; | ||
204 | + } | ||
205 | + | ||
206 | + try { | ||
207 | + const { doctorId } = ctx.request.body; | ||
208 | + const doctor = await User.findOne({ userId : doctorId }); | ||
209 | + if(!doctor) { | ||
210 | + ctx.status = 404; | ||
211 | + ctx.body = { | ||
212 | + error : '존재하지 않는 회원입니다.', | ||
213 | + }; | ||
214 | + return; | ||
215 | + } else if(doctor.useYn === 'N') { | ||
216 | + ctx.status = 400; | ||
217 | + ctx.body = { | ||
218 | + error : '탈퇴된 회원입니다.', | ||
219 | + }; | ||
220 | + return; | ||
221 | + } else if(doctor.useYn === 'Y') { | ||
222 | + ctx.status = 400; | ||
223 | + ctx.body = { | ||
224 | + error : '이미 가입이 완료된 의사입니다.', | ||
225 | + }; | ||
226 | + return; | ||
227 | + } else if(doctor.userTypeCd !== 'DOCTOR') { | ||
228 | + ctx.status = 400; | ||
229 | + ctx.body = { | ||
230 | + error : '의사로 가입된 회원이 아닙니다.', | ||
231 | + }; | ||
232 | + return; | ||
233 | + } | ||
234 | + | ||
235 | + doctor.setUseYn('N'); | ||
236 | + doctor.save(); | ||
237 | + | ||
238 | + ctx.status = 200; | ||
239 | + | ||
240 | + } catch(e) { | ||
241 | + ctx.status = 500; | ||
242 | + ctx.body = { | ||
243 | + error : '알 수 없는 에러가 발생했습니다.', | ||
244 | + }; | ||
245 | + console.log(e); | ||
246 | + } | ||
247 | +}; | ||
248 | + |
-
Please register or login to post a comment