최정우 최정우 2023-04-04
230404 최정우 사용자 관리 커밋3
@44584585ebe7c797d30b9362d9e84c5ffbb92962
client/views/component/Modal_Guardian.jsx
--- client/views/component/Modal_Guardian.jsx
+++ client/views/component/Modal_Guardian.jsx
@@ -2,26 +2,28 @@
 import SubTitle from "./SubTitle.jsx";
 import CommonUtil from "../../resources/js/CommonUtil.js";
 
-export default function Modal_Guardian({ open, close, guardianManagementCallback, seniorId, guardianListBySenior }) {
+export default function Modal_Guardian({ open, close, guardianManagementCallback, seniorId, guardianBySenior }) {
 
-  //시니어 정보
-  const [guardian, setGuardian] = React.useState({
-    'user_id': null,
-    'user_name': null,
-    'user_password': null,
-    'user_phonenumber': null,
-    'user_birth': null,
-    'user_gender': null,
-    'user_address': null,
-    'user_email': null,
+  const guardianInit = {
+    'user_id': '',
+    'user_name': '',
+    'user_password': '',
+    'user_phonenumber': '',
+    'user_birth': '',
+    'user_gender': '',
+    'user_address': '',
+    'user_email': '',
     'authority': 'ROLE_GUARDIAN',
-    'agency_id': null,
-    'government_id': null,
+    'agency_id': '',
+    'government_id': '',
 
     'senior_id': seniorId,
     'senior_relationship': '자녀',
     'senior_relationship_etc': '',
-  });
+  };
+
+  //시니어 정보
+  const [guardian, setGuardian] = React.useState(JSON.parse(JSON.stringify(guardianInit)));
 
   //각 데이터별로 Dom 정보 담을 Ref 생성
   const guardianRefInit = JSON.parse(JSON.stringify(guardian));
@@ -76,7 +78,7 @@
 
     return true;
   }
-  //시니어 등록
+  //보호자 등록
   const guardianInsert = () => {
     if (guardianInsertValidation() == false) {
       return;
@@ -92,9 +94,62 @@
       console.log("시니어 등록 결과(건수) : ", data);
       if (data > 0) {
         alert("등록완료");
-        guardianInsertCallback();
+        guardianManagementCallback();
       } else {
         alert("등록에 실패하였습니다. 관리자에게 문의바랍니다.");
+      }
+    }).catch((error) => {
+      console.log('guardianInsert() /user/guardianInsert.json error : ', error);
+    });
+  }
+
+  //시니어 수정
+  const guardianUpdate = () => {
+    if (guardianInsertValidation() == false) {
+      return;
+    }
+
+    fetch("/user/guardianUpdate.json", {
+      method: "POST",
+      headers: {
+        'Content-Type': 'application/json; charset=UTF-8'
+      },
+      body: JSON.stringify(guardian),
+    }).then((response) => response.json()).then((data) => {
+      console.log("시니어 수정 결과(건수) : ", data);
+      if (data > 0) {
+        alert("수정완료");
+        guardianManagementCallback();
+      } else {
+        alert("수정에 실패하였습니다. 관리자에게 문의바랍니다.");
+      }
+    }).catch((error) => {
+      console.log('guardianInsert() /user/guardianInsert.json error : ', error);
+    });
+  }
+
+  //보호자 삭제
+  const guardianDelete = () => {
+    if (confirm("보호자를 삭제하시겠습니까?") == false) {
+      return;
+    }
+    if (guardianInsertValidation() == false) {
+      return;
+    }
+
+    fetch("/user/guardianDelete.json", {
+      method: "POST",
+      headers: {
+        'Content-Type': 'application/json; charset=UTF-8'
+      },
+      body: JSON.stringify(guardian),
+    }).then((response) => response.json()).then((data) => {
+      console.log("시니어 삭제 결과(건수) : ", data);
+      if (data > 0) {
+        alert("삭제완료");
+        guardianManagementCallback();
+      } else {
+        alert("삭제에 실패하였습니다. 관리자에게 문의바랍니다.");
       }
     }).catch((error) => {
       console.log('guardianInsert() /user/guardianInsert.json error : ', error);
@@ -105,14 +160,14 @@
 
   //Mounted
   React.useEffect(() => {
-    const government_id = !defaultGovernmentId ? state.loginUser['government_id'] : defaultGovernmentId;
-    const agency_id = !defaultAgencyId ? state.loginUser['agency_id'] : defaultAgencyId;
-
-    let newSenior = JSON.parse(JSON.stringify(senior));
-    newSenior['government_id'] = government_id;
-    newSenior['agency_id'] = agency_id;
-    setSenior(newSenior);
-  }, [defaultGovernmentId, defaultAgencyId]);
+    console.log('guardianBySenior : ', guardianBySenior);
+    if (CommonUtil.isEmpty(guardianBySenior) == false) {
+      setGuardian(guardianBySenior);
+    } else {
+      console.log('guardianBySenior : ', guardianBySenior);
+      setGuardian(JSON.parse(JSON.stringify(guardianInit)));
+    }
+  }, [guardianBySenior]);
 
   return (
     <div class={open ? "openModal modal" : "modal"}>
@@ -213,7 +268,12 @@
                 </tr>
               </table>
               <div className="btn-wrap flex-center margin-bottom5">
-                <button className={"btn-small green-btn"} onClick={guardianInsert}>추가</button>
+                {CommonUtil.isEmpty(guardian['guardian_id'])
+                  ? <button className={"btn-small gray-btn"} onClick={guardianInsert}>추가</button>
+                  : <>
+                      <button className={"btn-small gray-btn"} onClick={guardianUpdate}>수정</button>
+                      <button className={"btn-small red-btn"} onClick={guardianDelete}>삭제</button>
+                    </>}
               </div>
 
             </div>
client/views/component/Modal_SeniorInsert.jsx
--- client/views/component/Modal_SeniorInsert.jsx
+++ client/views/component/Modal_SeniorInsert.jsx
@@ -262,14 +262,14 @@
                   <th><span style={{color : "red"}}>*</span>성별</th>
                   <td className=" gender">
                     <div className="flex-start">
-                      <input type="radio" id="user_gender_m" name="user_gender" value="남"
+                      <input type="radio" id="user_gender_m" name="user_gender" value="남" checked={senior['user_gender'] == '남'}
                         onChange={(e) => {e.target.checked ? seniorValueChange('user_gender', e.target.value) : null}}
                         ref={el => seniorRef.current['user_gender']['m'] = el}
                         />
                       <label for="user_gender_m">남</label>
                     </div>
                     <div className="flex-start">
-                      <input type="radio" id="user_gender_f" name="user_gender" value="여"
+                      <input type="radio" id="user_gender_f" name="user_gender" value="여" checked={senior['user_gender'] == '여'}
                         onChange={(e) => {e.target.checked ? seniorValueChange('user_gender', e.target.value) : null}}
                         ref={el => seniorRef.current['user_gender']['f'] = el}
                         />
client/views/pages/senior_management/SeniorSelectOne.jsx
--- client/views/pages/senior_management/SeniorSelectOne.jsx
+++ client/views/pages/senior_management/SeniorSelectOne.jsx
@@ -34,7 +34,6 @@
     }).then((response) => response.json()).then((data) => {
       console.log("복약 시간 코드 목록 조회 : ", data);
       setMedicationTimeCodeList(data);
-      setSenior(newSenior);
     }).catch((error) => {
       console.log('medicationTimeCodeSelectList() /common/medicationTimeCodeSelectList.json error : ', error);
     });
@@ -95,6 +94,7 @@
       console.log('guardianSelectListBySenior() /user/guardianSelectListBySenior.json error : ', error);
     });
   };
+
   //선택한 보호자 정보
   const [guardianBySenior, setGuardianBySenior] = React.useState({});
 
@@ -102,6 +102,30 @@
   const guardianBySeniorManagement = (item) => {
     setGuardianBySenior(item);
     modalGuardianOpen();
+  }
+
+
+  //가입승인
+  const userUpdate = (user, callback) => {
+    user['is_accept'] = true;
+
+    fetch("/user/userUpdate.json", {
+      method: "POST",
+      headers: {
+        'Content-Type': 'application/json; charset=UTF-8'
+      },
+      body: JSON.stringify(user),
+    }).then((response) => response.json()).then((data) => {
+      console.log("시니어 등록 결과(건수) : ", data);
+      if (data > 0) {
+        alert("승인완료");
+        callback();
+      } else {
+        alert("승인에 실패하였습니다. 관리자에게 문의바랍니다.");
+      }
+    }).catch((error) => {
+      console.log('userUpdate() /user/userUpdate.json error : ', error);
+    });
   }
 
   React.useEffect(() => {
@@ -115,7 +139,7 @@
     <main>
     <Modal_Guardian open={modalGuardianIsOpen} close={modalGuardianClose} seniorId={location.state['senior_id']}
       guardianBySenior={guardianBySenior}
-      guardianManagementCallback={() => {guardianSelectListBySenior(); modalGuardianClose()}}/>
+      guardianManagementCallback={() => {guardianSelectListBySenior(); modalGuardianClose(); setGuardianBySenior({})}}/>
     <div className="content-wrap row">
       <SubTitle explanation={"대상자 상세 프로필"} className="margin-bottom" />
       <div>
@@ -177,9 +201,9 @@
           </tbody>
         </table>
         <div className="btn-wrap flex-center">
-          <button className={"btn-large green-btn"} onClick={() => modalGuardianOpen()}>보호자 추가</button>
           <button className={"btn-large gray-btn"} onClick={() => modalGuardianOpen()}>수정</button>
-          <button className={"btn-large red-btn"} onClick={() => modalGuardianOpen()}>삭제</button>
+          <button className={"btn-large green-btn"} onClick={() => {setGuardianBySenior({}); modalGuardianOpen()}}>보호자 추가</button>
+          <button className={"btn-large red-btn"} onClick={() => alert("삭제할 수 없습니다.")}>삭제</button>
         </div>
       </div>
 
@@ -194,6 +218,7 @@
               <th>연락처</th>
               <th>주소</th>
               <th>관리</th>
+              <th>가입승인</th>
             </tr>
           </thead>
           <tbody>
@@ -205,6 +230,11 @@
                 <td>{item['user_phonenumber']}</td>
                 <td>{item['user_address']}</td>
                 <td>
+                  {item['is_accept'] ? "승인완료" : 
+                    <button className={"btn-small red-btn"} onClick={() => {userUpdate(item, guardianSelectListBySenior)}}>가입승인</button>
+                  }
+                </td>
+                <td>
                   <button className={"btn-small lightgray-btn"} onClick={() => guardianBySeniorManagement(item)}>관리</button>
                 </td>
               </tr>
client/views/pages/user_management/UserAuthoriySelect.jsx
--- client/views/pages/user_management/UserAuthoriySelect.jsx
+++ client/views/pages/user_management/UserAuthoriySelect.jsx
@@ -283,6 +283,29 @@
     }});
   }
 
+  //가입승인
+  const userUpdate = (user, callback) => {
+    user['is_accept'] = true;
+
+    fetch("/user/userUpdate.json", {
+      method: "POST",
+      headers: {
+        'Content-Type': 'application/json; charset=UTF-8'
+      },
+      body: JSON.stringify(user),
+    }).then((response) => response.json()).then((data) => {
+      console.log("시니어 등록 결과(건수) : ", data);
+      if (data > 0) {
+        alert("승인완료");
+        callback();
+      } else {
+        alert("승인에 실패하였습니다. 관리자에게 문의바랍니다.");
+      }
+    }).catch((error) => {
+      console.log('userUpdate() /user/userUpdate.json error : ', error);
+    });
+  }
+
 
   //Mounted
   React.useEffect(() => {
@@ -485,7 +508,7 @@
                                   <td>{item['user_email']}</td>
                                   <td>
                                     {item['is_accept'] ? "승인완료" : 
-                                      <button className={"btn-small red-btn"} onClick={() => {}}>가입승인</button>
+                                      <button className={"btn-small red-btn"} onClick={() => {userUpdate(item, agentSelectList)}}>가입승인</button>
                                     }
                                   </td>
                                   <td>
@@ -558,7 +581,7 @@
                                   <td>{item['user_email']}</td>
                                   <td>
                                     {item['is_accept'] ? "승인완료" : 
-                                      <button className={"btn-small red-btn"} onClick={() => {}}>가입승인</button>
+                                      <button className={"btn-small red-btn"} onClick={() => {userUpdate(item, governmentSelectList)}}>가입승인</button>
                                     }
                                   </td>
                                   <td>
@@ -623,7 +646,7 @@
                                   <td>{item['user_email']}</td>
                                   <td>
                                     {item['is_accept'] ? "승인완료" : 
-                                      <button className={"btn-small red-btn"} onClick={() => {}}>가입승인</button>
+                                      <button className={"btn-small red-btn"} onClick={() => {userUpdate(item, adminSelectList)}}>가입승인</button>
                                     }
                                   </td>
                                   <td>
Add a comment
List