From 043a7d64f267a972bd12ced7a9b3eee2ca478948 Mon Sep 17 00:00:00 2001 From: seung Date: Fri, 11 Mar 2022 00:58:47 +0900 Subject: [PATCH 01/19] =?UTF-8?q?Test:=20=EA=B4=80=EB=A6=AC=EC=9E=90=20?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=20Ui=EC=88=98=EC=A0=95=EC=9D=84=20?= =?UTF-8?q?=EC=9C=84=ED=95=9C=20=EC=83=88=EB=A1=9C=EC=9A=B4=20=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.js | 6 +- src/components/navibar/NaviBar.js | 7 + src/components/screens/Admin/ButtonElement.js | 36 + src/components/screens/Admin/Operator.js | 1044 +++++++++++++++++ src/components/screens/Admin/OptionBtn.js | 21 + src/components/screens/Admin/PostMemberBar.js | 266 +++++ 6 files changed, 1379 insertions(+), 1 deletion(-) create mode 100644 src/components/screens/Admin/ButtonElement.js create mode 100644 src/components/screens/Admin/Operator.js create mode 100644 src/components/screens/Admin/OptionBtn.js create mode 100644 src/components/screens/Admin/PostMemberBar.js diff --git a/src/App.js b/src/App.js index f5569815..222d721f 100644 --- a/src/App.js +++ b/src/App.js @@ -23,6 +23,7 @@ import Board from "./components/screens/Board"; import CreatePage from "./components/screens/Page_Create.js"; import NewPage from "./components/screens/PageNew"; import NewUpdatePage from "./components/screens/Page_UpdateNew"; +import Operator2 from "./components/screens/Admin/Operator" axios.defaults.baseURL = "http://api.igrus.net:8080/"; //"http://ec2-3-35-129-82.ap-northeast-2.compute.amazonaws.com:8080/"; @@ -237,6 +238,8 @@ function App(props) { } /> )} + +} /> } /> {!authenticated ? ( @@ -248,7 +251,8 @@ function App(props) { ) : ( } /> )} - + + {/* { ADMIN ) : null} + + ({})} + > + test + {authenticated ? ( diff --git a/src/components/screens/Admin/ButtonElement.js b/src/components/screens/Admin/ButtonElement.js new file mode 100644 index 00000000..024c25c4 --- /dev/null +++ b/src/components/screens/Admin/ButtonElement.js @@ -0,0 +1,36 @@ +import styled from "styled-components"; + +export const OptionSection = styled.div` +position: relative; +` + +export const OptionBtn = styled.button` +margin-left: 30px; +width: 30px; +height: 16px; +background-color: #6CD2D7; +border: none; +border-radius: 15px; +cursor: pointer; +` + +export const ClickSection = styled.ul` +position: absolute; +top: -15px; +left: 66px; +width: 117px; + +` + +export const ClickBtn = styled.li` +cursor: pointer; +border: 1px solid black; +border-bottom: none; +list-style: none; +background-color: #FFFAFA; +font-weight: bold; +&:nth-child(4){ + border-bottom: 1px solid black; +} +` + diff --git a/src/components/screens/Admin/Operator.js b/src/components/screens/Admin/Operator.js new file mode 100644 index 00000000..1b8664a8 --- /dev/null +++ b/src/components/screens/Admin/Operator.js @@ -0,0 +1,1044 @@ +import * as React from "react"; +import PageTitle from "../../shared/PageTitle"; +import ScreenTitle from "../../shared/ScreenTitle"; +import SideBar from "../../shared/SideBar"; +import { Content } from "../../shared/Content"; +import {SearchBarSection,SearchBarForm,SearchBarSelect,SearchBar,SearchBarInput,SearchBarSubmit,InforBar,InforContents, + Grade,StudentId,Name,Role,Attendance,PostInforBar,PhoneNumber,Gender,Check,CheckBtn,PostCotent,PostRole,PostAttendance,PostGender, + InforSelection,ViewSearchBarSubmit} from "./../../shared/BoardElement.js" +import { useForm } from "react-hook-form"; +import Pagination from "../../shared/Pagination"; +import styled from "styled-components"; +import { connect } from "react-redux"; +import axios from "axios"; +import PostMemberBar from './PostMemberBar' +import { actionCreators } from "./../../../store"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { faSearch } from "@fortawesome/free-solid-svg-icons"; + + +const Number = styled.div` +width: 40px; +text-align: left; +margin-left: 44px; +position: relative; +word-spacing: -3px; +cursor: ${(props) => (props.post ? "none" : "pointer")}; +` + +const subCategory = [ + { boardName: "회원 목록 조회" }, + { boardName: "회원 가입 승인 및 거절" }, + { boardName: "회원 권한 부여" }, + { boardName: "운영진 권한 부여 및 회원 권한 해제"}, + { boardName: "운영진 권한 해제"}, + { boardName: "그룹 회장 권한 부여"}, + { boardName: "회원 강제 탈퇴"}, + { boardName: "회장 위임"}, + { boardName: "전체 동아리원 초기화"}, + { boardName: "게시판 추가 및 삭제"}, + { boardName: "그룹 회원 목록 조회"}, + { boardName: "그룹 가입 승인" }, + { boardName: "그룹 강제 탈퇴"}, + { boardName: "그룹 임원 권한 부여"}, + { boardName: "그룹 회장 위임 및 임원 권한 해제"}, +]; + + + +const getAuthority = (AllLeader,ClubLeaderGroupExecutive,ClubLeader,ClubExecutiveGroupLeader,GroupLeader,ClubExecutiveGroupExecutive,ClubExecutive,GroupExecutive) => { +if(AllLeader){ + return subCategory +} +else if(ClubLeaderGroupExecutive){ + return subCategory.filter(item => (item.boardName !== "그룹 강제 탈퇴")&&(item.boardName !== "그룹 임원 권한 부여")&&(item.boardName !== "그룹 회장 위임 및 임원 권한 해제")) +} +else if(ClubLeader){ + return subCategory.filter(item => (item.boardName !== "그룹 가입 승인")&&(item.boardName !== "그룹 강제 탈퇴")&&(item.boardName !== "그룹 임원 권한 부여")&&(item.boardName !== "그룹 회장 위임 및 임원 권한 해제")&&(item.boardName !== "그룹 회원 목록 조회")) +} +else if(ClubExecutiveGroupLeader){ + return subCategory.filter(item => (item.boardName !== "전체 동아리원 권한 초기화")&&(item.boardName !== "회장 위임")&&(item.boardName !== "회원 권한 부여")&&(item.boardName !== "그룹 회장 위임 및 임원 권한 해제")&&(item.boardName !== "회원 강제 탈퇴")&&(item.boardName !== "운영진 권한 부여 및 회원 권한 해제")) +} +else if(GroupLeader){ + return subCategory.filter(item => (item.boardName !== "회원 목록 조회")&&(item.boardName !== "회원 가입 승인 및 거절")&&(item.boardName !== "회원 권한 부여")&&(item.boardName !== "운영진 권한 부여 및 회원 권한 해제")&&(item.boardName !== "운영진 권한 해제")&&(item.boardName !== "그룹 회장 권한 부여")&&(item.boardName !== "회원 강제 탈퇴")&&(item.boardName !== "회장 위임")&&(item.boardName !== "전체 동아리원 초기화")&&(item.boardName !== "게시판 추가 및 삭제")) +} +else if(ClubExecutiveGroupExecutive){ + return subCategory.filter(item => (item.boardName !== "회원 권한 부여")&&(item.boardName !== "운영진 권한 부여 및 회원 권한 해제")&&(item.boardName !== "회원 강제 탈퇴")&&(item.boardName !== "회장 위임")&&(item.boardName !== "전체 동아리원 초기화")&&(item.boardName !== "운영진 권한 해제")&&(item.boardName !== "그룹 회장 위임 및 임원 권한 해제")&&(item.boardName !== "그룹 임원 권한 부여")&&(item.boardName !== "그룹 강제 탈퇴")) +} +else if(ClubExecutive){ + return subCategory.filter(item => (item.boardName === "회원 목록 조회")||(item.boardName === "회원 가입 승인 및 거절")||(item.boardName === "그룹 회장 권한 부여")||(item.boardName !== "게시판 추가 및 삭제")) +} +else if(GroupExecutive){ + return subCategory.filter(item => (item.boardName === "그룹 회원 목록 조회")||(item.boardName === "그룹 가입 승인")) +} +} + +const discriminationDirection = (value) => { + if(value === true){ + return "ASC" + } + else{ + return "DESC" + } +} + +let direction = true; + + +//let searchType = "" // 검색 타입 Available values : NAME, STUDENT_ID, DEPARTMENT, PHONE + +function mapDispatchToProps(dispatch){ + return{ + setAll: (boardId,page,isSearching,selected,boardCategoryName) => dispatch(actionCreators.setAll(boardId,page,isSearching,selected,boardCategoryName)), + } +} + +function mapStateToProps(state) { + return state; +} + +function Operator(props) { + + + //'ROLE_GUEST', 'ROLE_CLUB_EXECUTIVE', 'ROLE_MEMBER' + const [load, setLoad] = React.useState(true); + + const [target, setTarget] = React.useState("회원 목록 조회"); + const [page, setPage] = React.useState(0); + const [SubCategory,setSubCategory] =React.useState([{boardName: "회원 목록 조회"}]); + + + const [posts, setPosts] = React.useState([]); // API로 받은 값 + const [totalPage, settotalPage] = React.useState(0); // 총 페이지. + const [groupList, setGroupList] = React.useState(null); + const [groupId, setGroupId] = React.useState(-1) + + const [numberDirection, setNumberDirection] = React.useState(true); // 방향지정 및 이벤트. true이면 오름차순이다. false이면 내림차순 + const [gradeDirection, setGradeDirection] = React.useState(true); + const [studentIdDirection, setStudentIdDirection] = React.useState(true); + const [phoneNumberDirection, setPhoneNumberDirection] = React.useState(true); + const [nameDirection, setNameDirection] = React.useState(true); + const [roleDirection, setRoleDirection] = React.useState(true); + const [attendanceDirection, setAttendanceDirection] = React.useState(true); + const [genderDirection, setGenderDirection] = React.useState(true); + + const [subScreenTitle,setSubScrrenTitle] =React.useState(null); + + +// // 회원 목록 조회탭에 관련된 함수들. + +// const loadMemberList = (direction,page,type) => { //회원 목록 조회 +// axios.get(`/club/executives/members?direction=${direction}&page=${page}&size=19&type=${type}`,{ +// }) +// .catch(function (error) { +// console.log(error.toJSON()); +// }) +// .then(function (res) { +// console.log(res); +// settotalPage(res.data.data.totalPages) +// setPosts((current) => res.data.data.content) +// setLoad(true) +// }); +// } + +// const loadMeberSearchList = (direction,page,searchType,sortType,word) => { //회원 검색 검색어 +// axios.get(`/club/executives/members/search?direction=${direction}&page=${page}&searchType=${searchType}&size=19&sortType=${sortType}&word=${word}`,{ +// }) +// .catch(function (error) { +// console.log(error.toJSON()); +// }) +// .then(function (res) { +// console.log(res); +// settotalPage(res.data.data.totalPages) +// setPosts(res.data.data.content) +// setLoad(true) +// }); +// } + +// const loadMemberSearchAcademicStatusesList = (direction,academicStatus,page,sortType) => { // 회원 검색 (학적상태) +// axios.get(`/club/executives/members/academic-statuses?academicStatus=${academicStatus}&direction=${direction}&page=${page}&size=19&sortType=${sortType}`,{ +// }) +// .catch(function (error) { +// console.log(error.toJSON()); +// }) +// .then(function(res){ +// console.log(res); +// settotalPage(res.data.data.totalPages) +// setPosts(res.data.data.content) +// setLoad(true) +// }); +// } + +// const loadMemberSearchAuthoritiesList = (direction,authority,page,sortType) => { // 회원 검색 (권한) +// axios.get(`/club/executives/members/authorities?authority=${authority}&direction=${direction}&page=${page}&size=19&sortType=${sortType}`,{ +// }) +// .catch(function (error) { +// console.log(error.toJSON()); +// }) +// .then(function(res){ +// console.log(res); +// console.log("회원 검색 권한 로드 완료!!!!!!"); +// settotalPage(res.data.data.totalPages) +// setPosts((current) => res.data.data.content) +// setLoad(true) +// }); +// } + +// const loadMemberSearchGenderList = (direction,gender,page,sortType) => { // 회원 검색 (성별) +// axios.get(`/club/executives/members/genders?direction=${direction}&gender=${gender}&page=${page}&size=19&sortType=${sortType}`,{ +// }) +// .catch(function (error) { +// console.log(error.toJSON()); +// }) +// .then(function(res){ +// console.log(res); +// settotalPage(res.data.data.totalPages) +// setPosts(res.data.data.content) +// }); +// } + +// const loadMemberSearchGradesList = (direction,grade,page,sortType) => { // 회원 검색 (학년) +// axios.get(`/club/executives/members/grades?direction=${direction}&grade=${grade}&page=${page}&size=19&sortType=${sortType}`,{ +// }) +// .catch(function (error) { +// console.log(error.toJSON()); +// }) +// .then(function(res){ +// console.log(res); +// settotalPage(res.data.data.totalPages) +// setPosts(res.data.data.content) +// }); +// } + +// const loadMemberSearchGruopList = (direction,groupId,page,sortType) => { // 회원 검색 (그룹) +// axios.get(`/club/executives/members/groups?direction=${direction}&groupId=${groupId}&page=${page}&size=19&sortType=${sortType}`,{ +// }) +// .catch(function (error) { +// console.log(error.toJSON()); +// }) +// .then(function(res){ +// console.log(res); +// settotalPage(res.data.data.totalPages) +// setPosts(res.data.data.content) +// }); +// } + +// const handleSearchFunction = (option) => { +// const PageReducer = props.PageReducer +// //console.log(data.option.includes("검색어")); +// if(option.includes("검색어") === true){ // 검색어 요청 +// if(option === "검색어 (이름)"){ +// //loadMeberSearchList = (direction,page,searchType,sortType,word) +// console.log("검색어 (이름)"); +// console.log(discriminationDirection(direction)); +// console.log(PageReducer.page); +// console.log(PageReducer.selected); +// console.log(PageReducer.isSearching[2]); +// loadMeberSearchList(discriminationDirection(direction),PageReducer.page,'NAME',PageReducer.selected,PageReducer.isSearching[2]) +// } +// else if(option === "검색어 (학번)"){ +// loadMeberSearchList(discriminationDirection(direction),PageReducer.page,'STUDENT_ID',PageReducer.selected,PageReducer.isSearching[2]) +// } +// else if(option === "검색어 (번호)"){ +// loadMeberSearchList(discriminationDirection(direction),PageReducer.page,'PHONE',PageReducer.selected,PageReducer.isSearching[2]) +// } +// else if(option === "검색어 (학과)"){ +// loadMeberSearchList(discriminationDirection(direction),PageReducer.page,'DEPARTMENT',PageReducer.selected,PageReducer.isSearching[2]) +// } +// } +// else if(option === "그룹"){ +// // const loadMemberSearchGruopList = (direction,groupId,page,sortType) +// // groupId는 호출에 따라서 수행. +// console.log(groupList); +// console.log(PageReducer); +// const keyword = PageReducer.isSearching[2] +// const gruopId = (groupList.find(item => item.name === keyword))? groupList.find(item => item.name === keyword).id : null +// if(gruopId){ +// loadMemberSearchGruopList(discriminationDirection(direction),gruopId,PageReducer.page,PageReducer.selected) +// } +// else{ +// alert("잘못된 동아리를 입력하셨습니다. 다시 입력해주세요") +// } +// } +// else if(option === "권한"){ +// console.log(PageReducer.isSearching[2]); +// const keyword = PageReducer.isSearching[2] +// console.log(keyword); +// if(keyword === "전체" || keyword === "회원" || keyword === "운영진" || keyword === "회장"){ +// switch(keyword){ +// case "전체":{ +// loadMemberSearchAuthoritiesList(discriminationDirection(direction),"ALL",PageReducer.page,PageReducer.selected) +// break; +// } +// case "회원":{ +// loadMemberSearchAuthoritiesList(discriminationDirection(direction),"MEMBER",PageReducer.page,PageReducer.selected) +// break; +// } +// case "운영진":{ +// loadMemberSearchAuthoritiesList(discriminationDirection(direction),"EXECUTIVE",PageReducer.page,PageReducer.selected) +// break; +// } +// case "회장":{ +// loadMemberSearchAuthoritiesList(discriminationDirection(direction),"PRESIDENT",PageReducer.page,PageReducer.selected) +// break; +// } +// } + +// } +// else{ +// alert("잘못된 검색입니다. 검색어로는 전체,회원,운영진,회장 입니다.") +// } +// // loadMemberSearchAuthoritiesList = (direction,authority,page,sortType) +// // authority를 호출에 따라서 수행 + +// } +// else if(option === "학적상태"){ +// const keyword = PageReducer.isSearching[2] +// if(keyword === "재학" || keyword === "휴학" || keyword === "졸업" || keyword === "그외"){ +// switch(keyword){ +// case "재학":{ +// loadMemberSearchAcademicStatusesList(discriminationDirection(direction),"ATTENDING",PageReducer.page,PageReducer.selected) +// break; +// } +// case "휴학":{ +// loadMemberSearchAcademicStatusesList(discriminationDirection(direction),"ABSENCE",PageReducer.page,PageReducer.selected) +// break; +// } +// case "졸업":{ +// loadMemberSearchAcademicStatusesList(discriminationDirection(direction),"GRADUATED",PageReducer.page,PageReducer.selected) +// break; +// } +// case "그외":{ +// loadMemberSearchAcademicStatusesList(discriminationDirection(direction),"ETC",PageReducer.page,PageReducer.selected) +// break; +// } +// } +// } +// else{ +// alert("잘못된 검색입니다. 검색어로는 재학,휴학,졸업,그외 입니다.") +// } +// //loadMemberSearchAcademicStatusesList = (direction,academicStatus ,page,sortType) + +// } +// else if(option === "성별"){ +// //loadMemberSearchGenderList = (direction,gender,page,sortType) +// //gender는 따로 +// const keyword = PageReducer.isSearching[2] +// if(keyword === "남" || keyword === "여"){ +// switch(keyword){ +// case "남":{ +// loadMemberSearchGenderList(discriminationDirection(direction),"MAN",PageReducer.page,PageReducer.selected) +// break; +// } +// case "여":{ +// loadMemberSearchGenderList(discriminationDirection(direction),"WOMAN",PageReducer.page,PageReducer.selected) +// break; +// } +// } +// } +// else{ +// alert("잘못된 검색입니다. 검색어로는 남(여) 입니다.") +// } + +// } +// else if(option === "학년"){ +// //loadMemberSearchGradesList = (direction,grade,page,sortType) +// //grade는 따로 +// const keyword = PageReducer.isSearching[2] +// if(keyword === "1" || keyword === "2" || keyword === "3" || keyword === "4" || keyword === "그외"){ +// switch(keyword){ +// case "1":{ +// loadMemberSearchGradesList(discriminationDirection(direction),"FRESHMAN",PageReducer.page,PageReducer.selected) +// break; +// } +// case "2":{ +// loadMemberSearchGradesList(discriminationDirection(direction),"SOPHOMORE",PageReducer.page,PageReducer.selected) +// break; +// } +// case "3":{ +// loadMemberSearchGradesList(discriminationDirection(direction),"JUNIOR",PageReducer.page,PageReducer.selected) +// break; +// } +// case "4":{ +// loadMemberSearchGradesList(discriminationDirection(direction),"SENIOR",PageReducer.page,PageReducer.selected) +// break; +// } +// case "그 외":{ +// loadMemberSearchGradesList(discriminationDirection(direction),"ETC",PageReducer.page,PageReducer.selected) +// break; +// } +// } +// } +// else{ +// alert("잘못된 검색입니다. 검색어로는 1, 2, 3, 4, 그외 입니다.") +// } +// } +// } + +// // 회원 가입 승인 탭에 관련된 함수 +// const loadMemberPermissionList = (page) => { // 회원 권한 요청 목록 조회 +// axios.get(`/club/executives/requests?page=${page}&role=ROLE_MEMBER&size=${19}`,{ +// }) +// .catch(function (error) { +// console.log(error.toJSON()); +// }) +// .then(function(res){ +// console.log(res); +// settotalPage(res.data.data.totalPages) +// setPosts((current) => res.data.data.content) +// setLoad(true) +// }); +// } + +// const loadMemberPermissionSearch = (page,type,word) => {// 회원 권한 요청 목록 검색 +// axios.get(`/club/executives/requests/search?page=${page}&size=19&type=${type}&word=${word}`,{ +// }) +// .catch(function (error) { +// console.log(error.toJSON()); +// }) +// .then(function(res){ +// console.log(res); +// settotalPage(res.data.data.totalPages) +// setPosts((current) => res.data.data.content) +// setLoad(true) +// }); +// } + +// const handleMemberPermissionSearchFuntion = (option) => { +// console.log(option); +// const PageReducer = props.PageReducer +// console.log(PageReducer.isSearching[2]); +// const keyword = PageReducer.isSearching[2] +// if(option === "이름"){ +// loadMemberPermissionSearch(PageReducer.page,"NAME",keyword) +// } +// else if(option === "학번"){ +// loadMemberPermissionSearch(PageReducer.page,"STUDENT_ID",PageReducer.isSearching[2]) +// } +// } + +// //그룹 관리 API + +// const loadGroupMemberList = (direction, groupId, page, role, type) => { // 그룹원 목록 조회 +// axios.get(`/groups/executives/members?direction=${direction}&groupId=${groupId}&page=${page}&role=${role}&size=19&type=${type}`,{ +// }) +// .catch(function (error) { +// console.log(error.toJSON()); +// }) +// .then(function (res) { +// console.log(res); +// //setSubScrrenTitle(groupInfor.name) +// settotalPage(res.data.data.totalPages) +// setPosts(res.data.data.content) +// setLoad(true) +// }); +// } + +// const loadGroupSearchList = (direction,groupId,page,searchType,sortType,word ) => { //그룹원 검색(검색어 +// axios.get(`/groups/executives/members/search?direction=${direction}&groupId=${groupId}&page=${page}&size=19&searchType=${searchType}&sortType=${sortType}&word=${word}`,{ +// }) +// .catch(function (error) { +// console.log(error.toJSON()); +// }) +// .then(function (res) { +// //console.log(res); +// settotalPage(res.data.data.totalPages) +// setPosts((current) => res.data.data.content) +// setLoad(true) +// }); +// } + +// const loadGroupSearchGradesList = (direction,groupId,page,sortType,grade) => { //그룹원 검색(학년) +// axios.get(`/groups/executives/members/grades?direction=${direction}&grade=${grade}&groupId=${groupId}&page=${page}&size=19&sortType=${sortType}`,{ +// }) +// .catch(function (error) { +// console.log(error.toJSON()); +// }) +// .then(function (res) { +// //console.log(res); +// settotalPage(res.data.data.totalPages) +// setPosts((current) => res.data.data.content) +// setLoad(true) +// }); +// } + +// const loadGroupSearchGenderList = (direction,groupId,page,sortType,gender) => { //그룹원 검색(성별) +// axios.get(`/groups/executives/members/grades?direction=${direction}&groupId=${groupId}&page=${page}&size=19&gender=${gender}&sortType=${sortType}`,{ +// }) +// .catch(function (error) { +// console.log(error.toJSON()); +// }) +// .then(function (res) { +// //console.log(res); +// settotalPage(res.data.data.totalPages) +// setPosts((current) => res.data.data.content) +// setLoad(true) +// }); +// } + +// const loadGroupSearchAcademicStatusesList = (direction,groupId,page,sortType,academicStatus) => { //그룹원 검색(학적) +// axios.get(`/groups/executives/members/academic-statuses?academicStatus=${academicStatus}&direction=${direction}&groupId=${groupId}&page=${page}&size=19&sortType=${sortType}`,{ +// }) +// .catch(function (error) { +// console.log(error.toJSON()); +// }) +// .then(function (res) { +// //console.log(res); +// settotalPage(res.data.data.totalPages) +// setPosts((current) => res.data.data.content) +// setLoad(true) +// }); +// } + +// const handleGroupSearchFunction = (option) => { +// const PageReducer = props.PageReducer +// if(option.includes("검색어") === true){ // 검색어 요청 +// console.log(discriminationDirection(direction)); +// console.log(PageReducer.page); +// console.log(PageReducer.selected); +// console.log(PageReducer.isSearching[2]); +// if(option === "검색어 (이름)"){ +// //loadGroupSearchList = (direction,groupId,page,searchType,sortType,word ) +// console.log("검색어 (이름)"); +// loadGroupSearchList(discriminationDirection(direction),groupId,PageReducer.page,'NAME',PageReducer.selected,PageReducer.isSearching[2]) +// } +// else if(option === "검색어 (학번)"){ +// loadGroupSearchList(discriminationDirection(direction),groupId,PageReducer.page,'STUDENT_ID',PageReducer.selected,PageReducer.isSearching[2]) +// } +// else if(option === "검색어 (번호)"){ +// loadGroupSearchList(discriminationDirection(direction),groupId,PageReducer.page,'PHONE',PageReducer.selected,PageReducer.isSearching[2]) +// } +// else if(option === "검색어 (학과)"){ +// loadGroupSearchList(discriminationDirection(direction),groupId,PageReducer.page,'DEPARTMENT',PageReducer.selected,PageReducer.isSearching[2]) +// } +// } +// else if(option === "학적상태"){ +// const keyword = PageReducer.isSearching[2] +// if(keyword === "재학" || keyword === "휴학" || keyword === "졸업" || keyword === "그외"){ +// switch(keyword){ +// case "재학":{ +// loadGroupSearchAcademicStatusesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"ATTENDING") +// break; +// } +// case "휴학":{ +// loadGroupSearchAcademicStatusesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"ABSENCE") +// break; +// } +// case "졸업":{ +// loadGroupSearchAcademicStatusesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"GRADUATED") +// break; +// } +// case "그외":{ +// loadGroupSearchAcademicStatusesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"ETC") +// break; +// } +// } +// } +// else{ +// alert("잘못된 검색입니다. 검색어로는 재학,휴학,졸업,그외 입니다.") +// } +// //loadMemberSearchAcademicStatusesList = (direction,academicStatus ,page,sortType) + +// } +// else if(option === "성별"){ +// //loadGroupSearchGenderList = (direction,groupId,page,sortType,gender) +// //gender는 따로 +// const keyword = PageReducer.isSearching[2] +// if(keyword === "남" || keyword === "여"){ +// switch(keyword){ +// case "남":{ +// loadGroupSearchGenderList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"MAN") +// break; +// } +// case "여":{ +// loadGroupSearchGenderList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"WOMAN") +// break; +// } +// } +// } +// else{ +// alert("잘못된 검색입니다. 검색어로는 남(여) 입니다.") +// } + +// } +// else if(option === "학년"){ +// //loadGroupSearchGradesList = (direction,groupId,page,searchType,grade) +// //grade는 따로 +// const keyword = PageReducer.isSearching[2] +// if(keyword === "1" || keyword === "2" || keyword === "3" || keyword === "4" || keyword === "그외"){ +// switch(keyword){ +// case "1":{ +// loadGroupSearchGradesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"FRESHMAN") +// break; +// } +// case "2":{ +// loadGroupSearchGradesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"SOPHOMORE") +// break; +// } +// case "3":{ +// loadGroupSearchGradesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"JUNIOR") +// break; +// } +// case "4":{ +// loadGroupSearchGradesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"SENIOR") +// break; +// } +// case "그 외":{ +// loadGroupSearchGradesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"ETC") +// break; +// } +// } +// } +// else{ +// alert("잘못된 검색입니다. 검색어로는 1, 2, 3, 4, 그외 입니다.") +// } +// } +// } + + + + + + // React.useEffect(()=>{ + // const PageReducer = props.PageReducer + // console.log("props 값 변환"); + // console.log("props 작동!!!"); + // //console.log(props); + // if(SubCategory === undefined){ // 네비바에서 이동해옴.,, + // const roles = props.userReducer.roles + // const AllLeader = (roles.includes("ROLE_GROUP_PRESIDENT")&&roles.includes("ROLE_CLUB_PRESIDENT")) // 동아리 회장이자, 소모임 회장 + // const ClubLeaderGroupExecutive = (roles.includes("ROLE_CLUB_PRESIDENT")&&roles.includes("ROLE_GROUP_EXECUTIVE")) // 동아리 회장, 소모임 임원 + // const ClubLeader = props.userReducer.roles.includes("ROLE_CLUB_PRESIDENT") // 동아리 회장 + // const ClubExecutiveGroupLeader = (roles.includes("ROLE_GROUP_PRESIDENT")&&roles.includes("ROLE_CLUB_EXECUTIVE")) // 동아리 임원, 소모임 회장 + // const GroupLeader = props.userReducer.roles.includes("ROLE_GROUP_PRESIDENT") // 소모임 회장 + // const ClubExecutiveGroupExecutive = (roles.includes("ROLE_GROUP_EXECUTIVE")&&roles.includes("ROLE_CLUB_EXECUTIVE")) // 동아리 임원, 소모임 임원 + // const ClubExecutive = props.userReducer.roles.includes("ROLE_CLUB_EXECUTIVE") // 동아리 임원 + // const GroupExecutive = props.userReducer.roles.includes("ROLE_GROUP_EXECUTIVE") // 소모임 인원 + + // console.log(ClubExecutiveGroupExecutive); + // const category = getAuthority(AllLeader,ClubLeaderGroupExecutive,ClubLeader,ClubExecutiveGroupLeader,GroupLeader,ClubExecutiveGroupExecutive,ClubExecutive,GroupExecutive) + // console.log(AllLeader,ClubLeaderGroupExecutive,ClubLeader,ClubExecutiveGroupLeader,GroupLeader,ClubExecutiveGroupExecutive,ClubExecutive,GroupExecutive); + // console.log(category); + // axios.get(`/members/groups`,{ + // }) + // .catch(function (error) { + // console.log(error.toJSON()); + // }) + // .then(function (res) { + // //console.log(res.data.data); + // setGroupList(res.data.data) + // }) + + // const userReducer = props.userReducer; + + // let groupInfor = userReducer.group.find(item => (item.role === "회장")) + // let groupId = "" + // if(groupInfor){ + // console.log("회장일때!"); + // console.log(groupInfor); + // setGroupId(groupInfor.id) + // setSubScrrenTitle(groupInfor.name) + // groupId = groupInfor.id + // console.log(groupId); + // } + // else if(groupInfor = userReducer.group.find(item => (item.role === "임원"))){ + // groupId = groupInfor.id + // console.log("임원일때!"); + // console.log(groupInfor); + // setGroupId(groupInfor.id) + // setSubScrrenTitle(groupInfor.name) + // } + // else{ + // groupId = 0 + // setGroupId(-1) + // setSubScrrenTitle("error") + // } + + + + // if(category.find(item => item.boardName === "회원 목록 조회") !== undefined){ // 회원 목록 조회 즉 동아리 회장이거나 임원일때 + // axios.get(`/club/executives/members?direction=${"ASC"}&page=${0}&size=19&type=${"ID"}`,{ + // }) + // .catch(function (error) { + // console.log(error.toJSON()); + // }) + // .then(function (res) { + // console.log(res); + // settotalPage(res.data.data.totalPages) + // setPosts(res.data.data.content) + // setTarget("회원 목록 조회") + // setPage(PageReducer.page) + // //setSelected(PageReducer.selected) + // setSubCategory(category) + + // }); + // } + // else if(category.find(item => item.boardName === "그룹 회원 목록 조회")){ // 그룹원 목록 조회 즉 소모임 회장이거나 임원일때 + + // axios.get(`/groups/executives/members?direction=${"ASC"}&groupId=${groupId}&page=1&role=MEMBER&size=19&type=ID`,{ + // }) + // .catch(function (error) { + // console.log(error.toJSON()); + // }) + // .then(function (res) { + // console.log(res); + // settotalPage(res.data.data.totalPages) + // setPosts(res.data.data.content) + // setTarget("그룹 회원 목록 조회") + // setPage(PageReducer.page) + // console.log("최초시행 작동!"); + // setSubCategory(category) + // }); + // } + + // } + // else{ + // if(PageReducer.boardId === "회원 목록 조회" || PageReducer.boardId === "회원 강제 탈퇴" || (PageReducer.boardId===""&&target === "회원 목록 조회") || PageReducer.boardId === "회장 위임" || PageReducer.boardId === "그룹 회장 권한 부여"){ + // if(PageReducer.isSearching[0] === true){ + // console.log("검색로직 작동!"); + // //console.log(PageReducer); + // handleSearchFunction(PageReducer.isSearching[1]) + // //loadMeberSearchList(discriminationDirection(direction),PageReducer.page,PageReducer.isSearching[1],PageReducer.selected,PageReducer.isSearching[2]) + // } + // else{ + // console.log("hahah"); + // loadMemberList(discriminationDirection(direction),PageReducer.page,PageReducer.selected) + // } + // } + // else if(PageReducer.boardId === "회원 가입 승인 및 거절"){ + // console.log("회원 가입 승인!!!"); + // if(PageReducer.isSearching[0] === true){ + // console.log("검색로직 작동!"); + // handleMemberPermissionSearchFuntion(PageReducer.isSearching[1]) + // } + // else{ + // loadMemberPermissionList(PageReducer.page) + // } + // } + // else if(PageReducer.boardId === "회원 권한 부여"){ // 추후 load 필요 + // if(PageReducer.isSearching[0] === true){ + // console.log("회원 권한 부여 검색로직 작동!"); + // //console.log(PageReducer); + // handleSearchFunction(PageReducer.isSearching[1]) + // //loadMeberSearchList(discriminationDirection(direction),PageReducer.page,PageReducer.isSearching[1],PageReducer.selected,PageReducer.isSearching[2]) + // } + // } + // else if(PageReducer.boardId === "운영진 권한 부여 및 회원 권한 해제"){ // 추후 load 변경 + // console.log("운영진 권한 부여 및 회원 권한 해제 로직 작동!"); + // loadMemberSearchAuthoritiesList(discriminationDirection(direction),"MEMBER",PageReducer.page,PageReducer.selected) + // }//loadMemberSearchAuthoritiesList + // else if(PageReducer.boardId === "운영진 권한 해제"){ // 추후 load 변경 + // console.log("운영진 권한 해제 로직 작동!"); + // loadMemberSearchAuthoritiesList(discriminationDirection(direction),"EXECUTIVE",PageReducer.page,PageReducer.selected) + // } + // else if(PageReducer.boardId ==="그룹 회원 목록 조회" || target === "그룹 회원 목록 조회"){ + + // if(PageReducer.isSearching[0] === true){ + // console.log("그룹 회원 목록 조회의 검색로직 작동!"); + // handleGroupSearchFunction(PageReducer.isSearching[1]) + // } + // else{ + // loadGroupMemberList(discriminationDirection(direction),groupId,PageReducer.page,"MEMBER",PageReducer.selected) + // } + // } + // else if(PageReducer.boardId === "그룹 가입 승인"){ + // if(PageReducer.isSearching[0] === true){ + // console.log("그룹 가입 승인의 검색로직 작동!"); + // handleGroupSearchFunction(PageReducer.isSearching[1]) + // } + // else{ + // loadGroupMemberList(discriminationDirection(direction),groupId,PageReducer.page,"APPLICANT",PageReducer.selected) + // } + // } + // else if(PageReducer.boardId === "그룹 강제 탈퇴" || PageReducer.boardId === "그룹 임원 권한 부여"){ + + // if(PageReducer.isSearching[0] === true){ + // console.log("검색로직 작동!"); + // handleGroupSearchFunction(PageReducer.isSearching[1]) + // } + // else{ + // loadGroupMemberList(discriminationDirection(direction),groupId,PageReducer.page,"MEMBER",PageReducer.selected) + // } + // } + // else if(PageReducer.boardId === "그룹 회장 위임 및 임원 권한 해제"){ + + // if(PageReducer.isSearching[0] === true){ + // console.log("검색로직 작동!"); + // handleGroupSearchFunction(PageReducer.isSearching[1]) + // } + // else{ + // loadGroupMemberList(discriminationDirection(direction),groupId,PageReducer.page,"EXECUTIVE",PageReducer.selected) + // } + // } + // } + + // },[props]) + + // React.useEffect(()=>{ + // if(SubCategory !== undefined){ + // console.log("target작동"); + // const PageReducer = props.PageReducer + // const boardId = target + // console.log(boardId); + // //setSelected("LASTEST") + // direction = true; + // sortDirection("dafalut") + // setLoad(false) + // props.setAll(boardId,1,[false],"ID",PageReducer.boardCategoryName) + // } + // },[target]) + + // React.useEffect(()=>{ + // if(SubCategory !== undefined){ + // console.log("page작동"); + // const PageReducer = props.PageReducer + // props.setAll(PageReducer.boardId,page,PageReducer.isSearching,PageReducer.selected,PageReducer.boardCategoryName) + // } + // },[page]) + + const { register, handleSubmit, watch, formState: { errors } } = useForm(); + const onSubmit = data => console.log(data); + + const handleSearching = (data,e) => { // 사용자가 검색을 했을때 + console.log(data); + const PageReducer = props.PageReducer + //let searchType = "" // 검색 타입 Available values : NAME, STUDENT_ID, DEPARTMENT, PHONE + // let searchType + // switch(data.option){ + // case(): + // } + + //console.log(data.option.includes("검색어")); + + props.setAll(PageReducer.boardId,1,[true,data.option,data.keyword],PageReducer.selected,PageReducer.boardCategoryName) + } + + const handleNumber = () => { + const PageReducer = props.PageReducer + direction = !numberDirection + setNumberDirection((current)=> !current) + const sortType = "ID" + props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,sortType,PageReducer.boardCategoryName) + } + + const sortDirection = (type) => { // 클릭한 항목을 제외, UI적으로 변경하는 함수 + switch(type){ + case "Number":{ + setGradeDirection(true) + setStudentIdDirection(true) + setPhoneNumberDirection(true) + setNameDirection(true) + setRoleDirection(true) + setAttendanceDirection(true) + setGenderDirection(true) + break; + } + case "Grade":{ + setNumberDirection(true) + setStudentIdDirection(true) + setPhoneNumberDirection(true) + setNameDirection(true) + setRoleDirection(true) + setAttendanceDirection(true) + setGenderDirection(true) + break; + } + case "StudentId":{ + setNumberDirection(true) + setGradeDirection(true) + setPhoneNumberDirection(true) + setNameDirection(true) + setRoleDirection(true) + setAttendanceDirection(true) + setGenderDirection(true) + break; + } + case "PhoneNumber":{ + setNumberDirection(true) + setGradeDirection(true) + setStudentIdDirection(true) + setNameDirection(true) + setRoleDirection(true) + setAttendanceDirection(true) + setGenderDirection(true) + break; + } + case "Name":{ + setNumberDirection(true) + setGradeDirection(true) + setStudentIdDirection(true) + setPhoneNumberDirection(true) + setRoleDirection(true) + setAttendanceDirection(true) + setGenderDirection(true) + break; + } + case "Attendance":{ + setNumberDirection(true) + setGradeDirection(true) + setStudentIdDirection(true) + setPhoneNumberDirection(true) + setNameDirection(true) + setRoleDirection(true) + setGenderDirection(true) + break; + } + case "Gender":{ + setNumberDirection(true) + setGradeDirection(true) + setStudentIdDirection(true) + setPhoneNumberDirection(true) + setNameDirection(true) + setRoleDirection(true) + setAttendanceDirection(true) + break; + } + default:{ + setNumberDirection(true) + setGradeDirection(true) + setStudentIdDirection(true) + setPhoneNumberDirection(true) + setNameDirection(true) + setRoleDirection(true) + setAttendanceDirection(true) + setGenderDirection(true) + } + } + } + + const handleSort = (type) => { // 클릭시 새롭게 페이지를 로드를 유발하는 함수 + const PageReducer = props.PageReducer + let sortType + + switch(type){ + case "Number":{ + direction = !numberDirection + console.log(direction); + setNumberDirection((current)=> !current) + sortType = "ID" + console.log("번호 호출"); + + } + case "Grade":{ + direction = !gradeDirection + setGradeDirection((current)=> !current) + sortType = "GRADE" + console.log("학년 호출"); + break; + + } + case "StudentId":{ + direction = !studentIdDirection + setStudentIdDirection((current)=> !current) + sortType = "STUDENT_ID" + console.log("학번 호출"); + break; + } + case "PhoneNumber":{ + direction = !phoneNumberDirection + setPhoneNumberDirection((current)=> !current) + sortType = "PHONE" + console.log("번호 호출"); + break; + } + case "Name":{ + direction = !nameDirection + setNameDirection((current)=> !current) + sortType = "NAME" + console.log("이름 호출"); + break; + } + case "Attendance":{ + direction = !attendanceDirection + setAttendanceDirection((current)=> !current) + sortType = "ACADEMIC_STATUS" + console.log("학적 호출"); + break; + } + case "Gender":{ + direction = !genderDirection + setGenderDirection((current)=> !current) + sortType = "GENDER" + console.log("성별 호출"); + break; + } + default:{ + + } + } + sortDirection(type) + props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,sortType,PageReducer.boardCategoryName) + + } + + return ( + <> + + + + {((target === "그룹 가입 승인")||(target === "그룹 강제 탈퇴")||(target === "그룹 임원 권한 부여")||(target === "그룹 회장 위임"))? + {target} | {subScreenTitle} + : + {target} + } + + {((target === "회원 목록 조회")||(target === "회원 강제 탈퇴")||(target === "운영진 권한 부여")||(target === "그룹 회장 위임")||(target === "회장 위임")||(target === "그룹 회장 권한 부여")||(target === "회원 권한 부여"))? + + + + + + + + + + + + + + + + + + + + + + + : + null + } + + + + { handleNumber() }}>번호 + { handleSort("Grade") }}>학년 + { handleSort("StudentId") }}>학번 + { handleSort("PhoneNumber") }} post>연락처 + { handleSort("Name") }}>이름 + 회원직책 + { handleSort("Attendance") }}>학적 + { handleSort("Gender") }}>성별 + {((target !== "회원 목록 조회") || (target !== "그룹 회원 목록 조회")) ? 버튼 : null} + + + + + + + {((target === "전체 동아리원 초기화") || (target === "게시판 추가 및 삭제")) ? + null + : + + } + + + + ); +} +export default connect(mapStateToProps,mapDispatchToProps)(Operator); diff --git a/src/components/screens/Admin/OptionBtn.js b/src/components/screens/Admin/OptionBtn.js new file mode 100644 index 00000000..716c76be --- /dev/null +++ b/src/components/screens/Admin/OptionBtn.js @@ -0,0 +1,21 @@ +import {OptionSection,OptionBtn,ClickSection,ClickBtn} from "./ButtonElement" +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { faThumbsUp } from "@fortawesome/free-regular-svg-icons"; +import {faThumbsUp as solidFaThumbsUp} from "@fortawesome/free-solid-svg-icons" + +function OptionButton(){ + return ( + <> + + ddd + + 1 + 2 + 3 + 4 + + + + ) +} +export default (OptionButton); \ No newline at end of file diff --git a/src/components/screens/Admin/PostMemberBar.js b/src/components/screens/Admin/PostMemberBar.js new file mode 100644 index 00000000..06695edc --- /dev/null +++ b/src/components/screens/Admin/PostMemberBar.js @@ -0,0 +1,266 @@ +import styled from "styled-components"; +import * as React from "react" +import {PostInforBar,PostCotent,Grade,StudentId,PhoneNumber,Name,PostRole,PostAttendance,PostGender,PostNumber,CheckBtn,SmallCheckBtn} from "./../../shared/BoardElement" +import axios from "axios"; +import { connect } from "react-redux"; +import { actionCreators } from "../../../store"; +import OptionButton from "./OptionBtn" + +const printRole = (value) => { + if(value.includes("ROLE_CLUB_PRESIDENT")){ + return "회장" + } + else if(value.includes("ROLE_GROUP_PRESIDENT")){ + return "운영진" + } + else if(value.includes("ROLE_CLUB_EXECUTIVE")){ + return "운영진" + } + else if(value.includes("ROLE_GROUP_EXECUTIVE")){ + return "운영진" + } + else if(value.includes("ROLE_MEMBER")){ + return "일반" + } + else if(value.includes("ROLE_GUEST")){ + return "게스트" + } + else if(value.includes("ROLE_BAN")){ + return "밴" + } + else if(value.includes("ROLE_RESIGN")){ + return "사직" + } +} + + +function mapDispatchToProps(dispatch){ + return{ + setAll: (boardId,page,isSearching,selected,boardCategoryName) => dispatch(actionCreators.setAll(boardId,page,isSearching,selected,boardCategoryName)), + } + } + +function mapStateToProps(state) { + return state; + } + +function PostMemberBar(props) { // + + //console.log(props); + let postdata = ""; + if (props.groupList) { + console.log(props.groupList); + } + + + const delegateClub = (memberId) => { //회장 위임 + axios.patch(`/club/president/delegate?memberId=${memberId}`, {}, { + }) + .catch(function (error) { + console.log(error); + }) + .then(function (res) { + console.log(res); + const PageReducer = props.PageReducer + props.setAll(PageReducer.boardId, PageReducer.page, PageReducer.isSearching, PageReducer.selected, !(PageReducer.boardCategoryName)) + }); + } + const handleDelegate = (e) => { // 회장 위임 핸들러 + const name = e.target.parentNode.childNodes[4].innerText + const check = window.confirm(`${name}의 회장 위임을 승인하시겠습니까?`) + console.log(check); + if (check) { + const id = e.target.dataset.id + delegateClub(id) + } + } + + const empowerClub = (memberId,type) => { // 회원 권한 부여 + axios.post(`/club/president/empower?memberId=${memberId}&type=${type}`,{},{ + }) + .then(function(res){ + const PageReducer = props.PageReducer + console.log(res); + props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) + }) + } + + const handleEmpower = (e,type) => { //회원권한부여 핸들러 + const name = e.target.parentNode.childNodes[4].innerText + if(type === "운영진"){ + const check = window.confirm(`${name}에게 운영진 권한을 부여하시겠습니까?`) + console.log(check); + if (check) { + const id = e.target.dataset.id + const type = "ROLE_CLUB_EXECUTIVE" + empowerClub(id,type) + } + } + else{ + const check = window.confirm(`${name}에게 회원 권한을 부여하시겠습니까?`) + console.log(check); + if (check) { + const id = e.target.dataset.id + const type = "ROLE_MEMBER" + empowerClub(id,type) + } + } + + } + + const revokePermissionClub = (memberId,type) => { //회원 권한 해제 + axios.delete(`/club/president/authority?memberId=${memberId}&type=${type}`,{},{ + }) + .then(function(res){ + const PageReducer = props.PageReducer + console.log(res); + props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) + }) + } + + const handleRevoke = (e,type) => { //회원권한해제 핸들러 + const name = e.target.parentNode.childNodes[4].innerText + if(type === "운영진"){ + const check = window.confirm(`${name}의 운영진 권한을 해제하시겠습니까?`) + console.log(check); + if (check) { + const id = e.target.dataset.id + const type = "ROLE_CLUB_EXECUTIVE" + revokePermissionClub(id,type) + } + } + else{ + const check = window.confirm(`${name}에게 회원 권한을 해제하시겠습니까?`) + console.log(check); + if (check) { + const id = e.target.dataset.id + const type = "ROLE_MEMBER" + revokePermissionClub(id,type) + } + } + } + + const empowerGroupLeader = (memberId,groupId) => { // 소모임장 권한 부여 + axios.post(`/club/executives/groups?groupId=${groupId}&memberId=${memberId}`,{},{ + }) + .then(function(res){ + const PageReducer = props.PageReducer + console.log(res); + props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) + }) + } + + const printPromt = () => { + let output = "" + + return output + } + + const handleEmpowerGroupLeader = (e) => { + const name = e.target.parentNode.childNodes[4].innerText + const check = window.confirm(`${name}에게 소그룹장의 권한을 주시겠습니까?`) + let output = "" + props.groupList.map(item => output += `${item.id}번은 ${item.name}입니다.\n`) + output+='번호를 입력해주세요.' + console.log(check); + if (check) { + const groupCheck = window.prompt(output) + const lastCheck = props.groupList.find(item => item.id === Number(Number(groupCheck))) + if(lastCheck !== undefined){ + const id = e.target.dataset.id + const groupId = lastCheck.id + empowerGroupLeader(id,groupId) + } + } + } + + if(props.data[0] !== undefined && props.data[0].member === undefined){ + postdata = props.data.map((data)=> + + + {data.id} + {data.grade} + {data.studentId} + {data.phone} + {data.name} + {printRole(data.roles)} + {data.academicStatus} + {data.gender} + {(props.type === "회장 위임") ? + <> + + + : + null + } + {(props.type === "회원 권한 부여") ? + <> + {handleEmpower(e,"회원")}}> + + : + null + } + {(props.type === "운영진 권한 부여 및 회원 권한 해제") ? + <> + {handleEmpower(e,"운영진")}}> + {handleRevoke(e,"회원")}} red> + + : + null + } + {(props.type === "운영진 권한 해제") ? + <> + { handleRevoke(e, "운영진") }} red> + + : + null + } + + {(props.type === "그룹 회장 권한 부여") ? + <> + { handleEmpowerGroupLeader(e) }}> + + : + null + } + + + + + ) + } + + + return ( + <> + + + {1} + {1} + {12141595} + {"data.phone"} + {"data.name"} + {printRole(["ROLE_CLUB_PRESIDENT"])} + {"재학"} + {"남"} + + + + + + {1} + {1} + {12141595} + {"data.phone"} + {"data.name"} + {printRole(["ROLE_CLUB_PRESIDENT"])} + {"재학"} + {"남"} + + + + + ); +} + +export default React.memo(connect(mapStateToProps,mapDispatchToProps)(PostMemberBar)); \ No newline at end of file From 582b444b9dad450cd7cdef5093cefd16628e9416 Mon Sep 17 00:00:00 2001 From: seung Date: Wed, 16 Mar 2022 01:57:04 +0900 Subject: [PATCH 02/19] =?UTF-8?q?Feat:=20=EA=B4=80=EB=A6=AC=EC=9E=90=20?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=20Modal=EC=B0=BD=20UI=20=EC=9E=91?= =?UTF-8?q?=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/screens/Admin/ButtonElement.js | 2 + src/components/screens/Admin/Modal.js | 64 ++++++ src/components/screens/Admin/ModalElement.js | 103 ++++++++++ src/components/screens/Admin/OptionBtn.js | 53 +++-- src/components/screens/Admin/PostMemberBar.js | 183 +----------------- 5 files changed, 214 insertions(+), 191 deletions(-) create mode 100644 src/components/screens/Admin/Modal.js create mode 100644 src/components/screens/Admin/ModalElement.js diff --git a/src/components/screens/Admin/ButtonElement.js b/src/components/screens/Admin/ButtonElement.js index 024c25c4..345a9a93 100644 --- a/src/components/screens/Admin/ButtonElement.js +++ b/src/components/screens/Admin/ButtonElement.js @@ -12,6 +12,7 @@ background-color: #6CD2D7; border: none; border-radius: 15px; cursor: pointer; + ` export const ClickSection = styled.ul` @@ -29,6 +30,7 @@ border-bottom: none; list-style: none; background-color: #FFFAFA; font-weight: bold; +text-align: center; &:nth-child(4){ border-bottom: 1px solid black; } diff --git a/src/components/screens/Admin/Modal.js b/src/components/screens/Admin/Modal.js new file mode 100644 index 00000000..f54625d6 --- /dev/null +++ b/src/components/screens/Admin/Modal.js @@ -0,0 +1,64 @@ +import {Background,ModalContainer,Title,Infor,InforTitle,Table,Index,Value,Select,BtnSection,BtnBox,Btn,ModalCotent} from "./ModalElement" + +function Modal(props){ + const {showModal, setShowModal,setShow} = props; + console.log(props); + + const closeModal = () => { + setShowModal(false); + setShow(-1); + } + + return( + <> + {(showModal === true)? + + + + 메뉴 + + 회원 정보 + + + + 이름 + 김승태 + + + + + 학번 + 12171595 + + + 학적 + 재학 + + + 회원직책 + 운영진 + + +
+
+ + + + 확인 + 취소 + + +
+ +
+
+ : + null + } + ) +} + +export default Modal; \ No newline at end of file diff --git a/src/components/screens/Admin/ModalElement.js b/src/components/screens/Admin/ModalElement.js new file mode 100644 index 00000000..ea252453 --- /dev/null +++ b/src/components/screens/Admin/ModalElement.js @@ -0,0 +1,103 @@ +import styled from "styled-components"; + +export const Background = styled.div` + position: fixed; + top: 0; + left: 0; + bottom: 0; + right: 0; + background-color: rgba(0,0,0,0.50); + z-index: 1; +`; + +export const ModalContainer = styled.div` + position: fixed; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + max-height: 500px; + min-height: 400px; + width: 80%; + max-width: 800px; + min-width: 600px; + height: 80%; + padding: 16px; + background: #FFFFFF; + border-radius: 10px; + text-align: center; +`; + +export const ModalCotent = styled.div` + +`; + +export const Title = styled.div` +width: 200px; +text-align: center; +margin: auto; +padding-top: 50px; +font-size: 30px; +font-weight: 700; +` + +export const Infor = styled.div` +margin: auto; +margin-top: 30px; +width: 400px; +border: 1px solid black; +` + +export const InforTitle = styled.div` +text-align: center; +font-weight: bold; +margin-top: 10px; +` + +export const Table = styled.table` +margin: auto; +margin-top: 20px; +border: none; +font-weight: bold; +th{ + font-size:14px; + font-weight:normal; + overflow:hidden; + padding:10px 5px; + word-break:normal; +} +td{ + font-size:14px; + overflow:hidden; + padding:10px 5px; + word-break:normal; +} +` +export const Index = styled.td` +text-align:center; +` +export const Value = styled.td` +text-align:left; +` + +export const Select = styled.select` +display: block; +margin: auto; +margin-top: 20px; +width: 200px; +` + +export const BtnSection = styled.div` +width: 300px; +margin: auto; +margin-top: 20px; +` + +export const BtnBox = styled.div` +width: fit-content; +margin: auto; +` + +export const Btn = styled.button` +width: 100px; +margin-left: ${(props) => (props.checked ? "0" : "10px")}; +` \ No newline at end of file diff --git a/src/components/screens/Admin/OptionBtn.js b/src/components/screens/Admin/OptionBtn.js index 716c76be..7d7317eb 100644 --- a/src/components/screens/Admin/OptionBtn.js +++ b/src/components/screens/Admin/OptionBtn.js @@ -1,21 +1,52 @@ import {OptionSection,OptionBtn,ClickSection,ClickBtn} from "./ButtonElement" import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { faThumbsUp } from "@fortawesome/free-regular-svg-icons"; -import {faThumbsUp as solidFaThumbsUp} from "@fortawesome/free-solid-svg-icons" +import {faCog} from "@fortawesome/free-solid-svg-icons" +import * as React from "react" +import Modal from "./Modal.js"; + +function OptionButton(props){ + const {id, show, setShow} = props; + + const [showModal, setShowModal] = React.useState(false); + + const showSection = () => { + if(id === show){ + setShow(-1); + } + else{ + setShow(id); + } + + } + + const showSectionModal = () => { + + } -function OptionButton(){ return ( <> - - ddd + + + {(show === id) ? + <> - 1 - 2 - 3 - 4 + {setShowModal(current => !current) }}>권한 부여 + 권한 해제 + 강제 탈퇴 + 회장 위임 - + {(showModal==true)? + + : + null + } + + : + null + } + + ) } -export default (OptionButton); \ No newline at end of file +export default OptionButton; \ No newline at end of file diff --git a/src/components/screens/Admin/PostMemberBar.js b/src/components/screens/Admin/PostMemberBar.js index 06695edc..af701f50 100644 --- a/src/components/screens/Admin/PostMemberBar.js +++ b/src/components/screens/Admin/PostMemberBar.js @@ -45,6 +45,7 @@ function mapStateToProps(state) { } function PostMemberBar(props) { // + const [show, setShow] = React.useState(-1); //console.log(props); let postdata = ""; @@ -53,184 +54,6 @@ function PostMemberBar(props) { // } - const delegateClub = (memberId) => { //회장 위임 - axios.patch(`/club/president/delegate?memberId=${memberId}`, {}, { - }) - .catch(function (error) { - console.log(error); - }) - .then(function (res) { - console.log(res); - const PageReducer = props.PageReducer - props.setAll(PageReducer.boardId, PageReducer.page, PageReducer.isSearching, PageReducer.selected, !(PageReducer.boardCategoryName)) - }); - } - const handleDelegate = (e) => { // 회장 위임 핸들러 - const name = e.target.parentNode.childNodes[4].innerText - const check = window.confirm(`${name}의 회장 위임을 승인하시겠습니까?`) - console.log(check); - if (check) { - const id = e.target.dataset.id - delegateClub(id) - } - } - - const empowerClub = (memberId,type) => { // 회원 권한 부여 - axios.post(`/club/president/empower?memberId=${memberId}&type=${type}`,{},{ - }) - .then(function(res){ - const PageReducer = props.PageReducer - console.log(res); - props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) - }) - } - - const handleEmpower = (e,type) => { //회원권한부여 핸들러 - const name = e.target.parentNode.childNodes[4].innerText - if(type === "운영진"){ - const check = window.confirm(`${name}에게 운영진 권한을 부여하시겠습니까?`) - console.log(check); - if (check) { - const id = e.target.dataset.id - const type = "ROLE_CLUB_EXECUTIVE" - empowerClub(id,type) - } - } - else{ - const check = window.confirm(`${name}에게 회원 권한을 부여하시겠습니까?`) - console.log(check); - if (check) { - const id = e.target.dataset.id - const type = "ROLE_MEMBER" - empowerClub(id,type) - } - } - - } - - const revokePermissionClub = (memberId,type) => { //회원 권한 해제 - axios.delete(`/club/president/authority?memberId=${memberId}&type=${type}`,{},{ - }) - .then(function(res){ - const PageReducer = props.PageReducer - console.log(res); - props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) - }) - } - - const handleRevoke = (e,type) => { //회원권한해제 핸들러 - const name = e.target.parentNode.childNodes[4].innerText - if(type === "운영진"){ - const check = window.confirm(`${name}의 운영진 권한을 해제하시겠습니까?`) - console.log(check); - if (check) { - const id = e.target.dataset.id - const type = "ROLE_CLUB_EXECUTIVE" - revokePermissionClub(id,type) - } - } - else{ - const check = window.confirm(`${name}에게 회원 권한을 해제하시겠습니까?`) - console.log(check); - if (check) { - const id = e.target.dataset.id - const type = "ROLE_MEMBER" - revokePermissionClub(id,type) - } - } - } - - const empowerGroupLeader = (memberId,groupId) => { // 소모임장 권한 부여 - axios.post(`/club/executives/groups?groupId=${groupId}&memberId=${memberId}`,{},{ - }) - .then(function(res){ - const PageReducer = props.PageReducer - console.log(res); - props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) - }) - } - - const printPromt = () => { - let output = "" - - return output - } - - const handleEmpowerGroupLeader = (e) => { - const name = e.target.parentNode.childNodes[4].innerText - const check = window.confirm(`${name}에게 소그룹장의 권한을 주시겠습니까?`) - let output = "" - props.groupList.map(item => output += `${item.id}번은 ${item.name}입니다.\n`) - output+='번호를 입력해주세요.' - console.log(check); - if (check) { - const groupCheck = window.prompt(output) - const lastCheck = props.groupList.find(item => item.id === Number(Number(groupCheck))) - if(lastCheck !== undefined){ - const id = e.target.dataset.id - const groupId = lastCheck.id - empowerGroupLeader(id,groupId) - } - } - } - - if(props.data[0] !== undefined && props.data[0].member === undefined){ - postdata = props.data.map((data)=> - - - {data.id} - {data.grade} - {data.studentId} - {data.phone} - {data.name} - {printRole(data.roles)} - {data.academicStatus} - {data.gender} - {(props.type === "회장 위임") ? - <> - - - : - null - } - {(props.type === "회원 권한 부여") ? - <> - {handleEmpower(e,"회원")}}> - - : - null - } - {(props.type === "운영진 권한 부여 및 회원 권한 해제") ? - <> - {handleEmpower(e,"운영진")}}> - {handleRevoke(e,"회원")}} red> - - : - null - } - {(props.type === "운영진 권한 해제") ? - <> - { handleRevoke(e, "운영진") }} red> - - : - null - } - - {(props.type === "그룹 회장 권한 부여") ? - <> - { handleEmpowerGroupLeader(e) }}> - - : - null - } - - - - - ) - } - - return ( <> @@ -243,7 +66,7 @@ function PostMemberBar(props) { // {printRole(["ROLE_CLUB_PRESIDENT"])} {"재학"} {"남"} - + @@ -256,7 +79,7 @@ function PostMemberBar(props) { // {printRole(["ROLE_CLUB_PRESIDENT"])} {"재학"} {"남"} - + From 8281e2ba40f2528ff2aa62177a1195cfcf221eae Mon Sep 17 00:00:00 2001 From: seung Date: Wed, 16 Mar 2022 21:01:45 +0900 Subject: [PATCH 03/19] =?UTF-8?q?Feat:=20admin=20=EB=AA=A8=EB=8B=AC?= =?UTF-8?q?=EC=B0=BD=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.js | 2 +- src/components/navibar/NaviBar.js | 8 + src/components/screens/Admin/Modal.js | 254 ++- src/components/screens/Admin/ModalElement.js | 10 +- src/components/screens/Admin/Operator.js | 1452 +++++++++-------- src/components/screens/Admin/OptionBtn.js | 60 +- .../screens/Admin/PostGroupPermissionBar.js | 266 +++ src/components/screens/Admin/PostMemberBar.js | 19 +- .../screens/Admin/PostMemberExpulsionBar.js | 100 ++ .../screens/Admin/PostMemberPermissionBar.js | 143 ++ 10 files changed, 1594 insertions(+), 720 deletions(-) create mode 100644 src/components/screens/Admin/PostGroupPermissionBar.js create mode 100644 src/components/screens/Admin/PostMemberExpulsionBar.js create mode 100644 src/components/screens/Admin/PostMemberPermissionBar.js diff --git a/src/App.js b/src/App.js index 222d721f..b44da8eb 100644 --- a/src/App.js +++ b/src/App.js @@ -239,7 +239,7 @@ function App(props) { )} -} /> + } /> } /> {!authenticated ? ( diff --git a/src/components/navibar/NaviBar.js b/src/components/navibar/NaviBar.js index 122f221a..e2259cd2 100644 --- a/src/components/navibar/NaviBar.js +++ b/src/components/navibar/NaviBar.js @@ -88,6 +88,11 @@ const NaviBar = (props) => { props.setViewCategoryName(null); Navigate(`/operator`); } + else if (boardCategoryName === "TEST") { + props.setAll("", 1, [false], "ID", true); + props.setViewCategoryName(null); + Navigate(`/test`); + } }; let isAuthority = false; let isJoinGroup = false; @@ -154,6 +159,9 @@ const NaviBar = (props) => { { + handleLink(e, "TEST"); + }} style={({ isActive }) => ({})} > test diff --git a/src/components/screens/Admin/Modal.js b/src/components/screens/Admin/Modal.js index f54625d6..42c3e26c 100644 --- a/src/components/screens/Admin/Modal.js +++ b/src/components/screens/Admin/Modal.js @@ -1,64 +1,238 @@ -import {Background,ModalContainer,Title,Infor,InforTitle,Table,Index,Value,Select,BtnSection,BtnBox,Btn,ModalCotent} from "./ModalElement" +import {Background,ModalContainer,Title,Infor,InforTitle,Table,Index,Value,Select,BtnSection,BtnBox,Btn,ModalCotent,AlertBlock} from "./ModalElement" +import * as React from "react" +import { connect } from "react-redux"; +import { actionCreators } from "../../../store"; +import axios from "axios"; + +function mapDispatchToProps(dispatch){ + return{ + setAll: (boardId,page,isSearching,selected,boardCategoryName) => dispatch(actionCreators.setAll(boardId,page,isSearching,selected,boardCategoryName)), + } + } + + function mapStateToProps(state) { + return state; + } + +const Empower = "권한 부여" +const Revoke = "권한 해제" +const Delegate = "회장 위임" +const Expulsion = "강제 탈퇴" + + function Modal(props){ - const {showModal, setShowModal,setShow} = props; + const {showModal, setShowModal,setShow,modalOption, modalInfor} = props; + const id = modalInfor.id; console.log(props); + const [select,setSelect] = React.useState("동아리 회원"); + const [confirm,setConfirm] = React.useState(false); + const [text, setText] = React.useState(""); + + const showText = (option, name = "", select = "") => { + let text = ""; + + switch(option){ + case (Empower):{ + text = `정말 ${name}님에게 [${select}] 권한을 부여하시겠습니까?` + break; + } + case Revoke:{ + text = `정말 ${name}님의 [${select}] 권한을 해제하시겠습니까?` + break; + } + case Delegate:{ + text = `정말 ${name}님에게 회장 권한을 위임하시겠습니까?` + break; + } + case Expulsion:{ + text = `정말 ${name}님을 강제로 탈퇴시키겠습니까? + 한번 탈퇴시키면 다시 회원 활동을 하지 못합니다.` + break; + } + } + + return text; + } + const closeModal = () => { setShowModal(false); setShow(-1); } + const closeConfirm = () => { + setConfirm(false) + } + + const handleConfirm = () => { + setConfirm(true); + setText(showText(modalOption,modalInfor.name,select)); + } + + const empowerClub = (memberId,type) => { // 회원 권한 부여 + axios.post(`/club/president/empower?memberId=${memberId}&type=${type}`,{},{ + }) + .then(function(res){ + const PageReducer = props.PageReducer + console.log(res); + closeModal(); + props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) + }) + } + + const revokePermissionClub = (memberId,type) => { //회원 권한 해제 + axios.delete(`/club/president/authority?memberId=${memberId}&type=${type}`,{},{ + }) + .then(function(res){ + const PageReducer = props.PageReducer + console.log(res); + closeModal(); + props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) + }) + } + + const delegateClub = (memberId) => { //회장 위임 + axios.patch(`/club/president/delegate?memberId=${memberId}`, {}, { + }) + .catch(function (error) { + console.log(error); + }) + .then(function (res) { + console.log(res); + closeModal(); + const PageReducer = props.PageReducer + props.setAll(PageReducer.boardId, PageReducer.page, PageReducer.isSearching, PageReducer.selected, !(PageReducer.boardCategoryName)) + }); + } + + const expulsionMember = (memberId) => { + axios.patch(`/club/president/ban?memberId=${memberId}`,{},{ + }) + .catch(function (error) { + console.log(error); + }) + .then(function (res) { + console.log(res); + closeModal(); + const PageReducer = props.PageReducer + props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) + }); + } + + const submit = () => { + let type = ""; + switch(modalOption){ + case (Empower):{ + if(select === "동아리 운영진"){ + type = "ROLE_CLUB_EXECUTIVE" + } + else{ + type = "ROLE_MEMBER" + } + empowerClub(id, type) + break; + } + case Revoke:{ + + if(select === "동아리 운영진"){ + type = "ROLE_CLUB_EXECUTIVE" + } + else{ + type = "ROLE_MEMBER" + } + revokePermissionClub(id,type) + break; + } + case Delegate:{ + delegateClub(id); + break; + } + case Expulsion:{ + expulsionMember(id) + break; + } + } + } + + const handleSelect = (e) => { + console.log(e.target.value); + setSelect(e.target.value) + } + return( <> {(showModal === true)? + {(confirm === false)? + + {modalOption} + + 회원 정보 + + + + 이름 + {modalInfor.name} + + + + + 학번 + {modalInfor.studentId} + + + 학적 + {modalInfor.academicStatus} + + + 회원직책 + {modalInfor.role} + + +
+
+ {((modalOption === Empower)||(modalOption === Revoke))? + + : + null + } + + + + 확인 + 취소 + + +
+ : - 메뉴 - - 회원 정보 - - - - 이름 - 김승태 - - - - - 학번 - 12171595 - - - 학적 - 재학 - - - 회원직책 - 운영진 - - -
-
- - - - 확인 - 취소 - - + +
+ {text} +
+ +
+ + + 확인 + 취소 + +
+ } +
-
+ : null } ) } -export default Modal; \ No newline at end of file +export default (connect(mapStateToProps,mapDispatchToProps)(Modal)); \ No newline at end of file diff --git a/src/components/screens/Admin/ModalElement.js b/src/components/screens/Admin/ModalElement.js index ea252453..6aa21d55 100644 --- a/src/components/screens/Admin/ModalElement.js +++ b/src/components/screens/Admin/ModalElement.js @@ -28,7 +28,8 @@ export const ModalContainer = styled.div` `; export const ModalCotent = styled.div` - +margin: auto; +width: content; `; export const Title = styled.div` @@ -100,4 +101,11 @@ margin: auto; export const Btn = styled.button` width: 100px; margin-left: ${(props) => (props.checked ? "0" : "10px")}; +` + +export const AlertBlock = styled.div` +font-size: 18px; +font-weight: bold; +margin-top: 150px; +margin-bottom: 80px; ` \ No newline at end of file diff --git a/src/components/screens/Admin/Operator.js b/src/components/screens/Admin/Operator.js index 1b8664a8..2370c06e 100644 --- a/src/components/screens/Admin/Operator.js +++ b/src/components/screens/Admin/Operator.js @@ -15,7 +15,7 @@ import PostMemberBar from './PostMemberBar' import { actionCreators } from "./../../../store"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faSearch } from "@fortawesome/free-solid-svg-icons"; - +import img from './../../../images/Polygon.jpg' const Number = styled.div` width: 40px; @@ -125,676 +125,676 @@ function Operator(props) { const [subScreenTitle,setSubScrrenTitle] =React.useState(null); -// // 회원 목록 조회탭에 관련된 함수들. - -// const loadMemberList = (direction,page,type) => { //회원 목록 조회 -// axios.get(`/club/executives/members?direction=${direction}&page=${page}&size=19&type=${type}`,{ -// }) -// .catch(function (error) { -// console.log(error.toJSON()); -// }) -// .then(function (res) { -// console.log(res); -// settotalPage(res.data.data.totalPages) -// setPosts((current) => res.data.data.content) -// setLoad(true) -// }); -// } - -// const loadMeberSearchList = (direction,page,searchType,sortType,word) => { //회원 검색 검색어 -// axios.get(`/club/executives/members/search?direction=${direction}&page=${page}&searchType=${searchType}&size=19&sortType=${sortType}&word=${word}`,{ -// }) -// .catch(function (error) { -// console.log(error.toJSON()); -// }) -// .then(function (res) { -// console.log(res); -// settotalPage(res.data.data.totalPages) -// setPosts(res.data.data.content) -// setLoad(true) -// }); -// } - -// const loadMemberSearchAcademicStatusesList = (direction,academicStatus,page,sortType) => { // 회원 검색 (학적상태) -// axios.get(`/club/executives/members/academic-statuses?academicStatus=${academicStatus}&direction=${direction}&page=${page}&size=19&sortType=${sortType}`,{ -// }) -// .catch(function (error) { -// console.log(error.toJSON()); -// }) -// .then(function(res){ -// console.log(res); -// settotalPage(res.data.data.totalPages) -// setPosts(res.data.data.content) -// setLoad(true) -// }); -// } - -// const loadMemberSearchAuthoritiesList = (direction,authority,page,sortType) => { // 회원 검색 (권한) -// axios.get(`/club/executives/members/authorities?authority=${authority}&direction=${direction}&page=${page}&size=19&sortType=${sortType}`,{ -// }) -// .catch(function (error) { -// console.log(error.toJSON()); -// }) -// .then(function(res){ -// console.log(res); -// console.log("회원 검색 권한 로드 완료!!!!!!"); -// settotalPage(res.data.data.totalPages) -// setPosts((current) => res.data.data.content) -// setLoad(true) -// }); -// } - -// const loadMemberSearchGenderList = (direction,gender,page,sortType) => { // 회원 검색 (성별) -// axios.get(`/club/executives/members/genders?direction=${direction}&gender=${gender}&page=${page}&size=19&sortType=${sortType}`,{ -// }) -// .catch(function (error) { -// console.log(error.toJSON()); -// }) -// .then(function(res){ -// console.log(res); -// settotalPage(res.data.data.totalPages) -// setPosts(res.data.data.content) -// }); -// } - -// const loadMemberSearchGradesList = (direction,grade,page,sortType) => { // 회원 검색 (학년) -// axios.get(`/club/executives/members/grades?direction=${direction}&grade=${grade}&page=${page}&size=19&sortType=${sortType}`,{ -// }) -// .catch(function (error) { -// console.log(error.toJSON()); -// }) -// .then(function(res){ -// console.log(res); -// settotalPage(res.data.data.totalPages) -// setPosts(res.data.data.content) -// }); -// } - -// const loadMemberSearchGruopList = (direction,groupId,page,sortType) => { // 회원 검색 (그룹) -// axios.get(`/club/executives/members/groups?direction=${direction}&groupId=${groupId}&page=${page}&size=19&sortType=${sortType}`,{ -// }) -// .catch(function (error) { -// console.log(error.toJSON()); -// }) -// .then(function(res){ -// console.log(res); -// settotalPage(res.data.data.totalPages) -// setPosts(res.data.data.content) -// }); -// } - -// const handleSearchFunction = (option) => { -// const PageReducer = props.PageReducer -// //console.log(data.option.includes("검색어")); -// if(option.includes("검색어") === true){ // 검색어 요청 -// if(option === "검색어 (이름)"){ -// //loadMeberSearchList = (direction,page,searchType,sortType,word) -// console.log("검색어 (이름)"); -// console.log(discriminationDirection(direction)); -// console.log(PageReducer.page); -// console.log(PageReducer.selected); -// console.log(PageReducer.isSearching[2]); -// loadMeberSearchList(discriminationDirection(direction),PageReducer.page,'NAME',PageReducer.selected,PageReducer.isSearching[2]) -// } -// else if(option === "검색어 (학번)"){ -// loadMeberSearchList(discriminationDirection(direction),PageReducer.page,'STUDENT_ID',PageReducer.selected,PageReducer.isSearching[2]) -// } -// else if(option === "검색어 (번호)"){ -// loadMeberSearchList(discriminationDirection(direction),PageReducer.page,'PHONE',PageReducer.selected,PageReducer.isSearching[2]) -// } -// else if(option === "검색어 (학과)"){ -// loadMeberSearchList(discriminationDirection(direction),PageReducer.page,'DEPARTMENT',PageReducer.selected,PageReducer.isSearching[2]) -// } -// } -// else if(option === "그룹"){ -// // const loadMemberSearchGruopList = (direction,groupId,page,sortType) -// // groupId는 호출에 따라서 수행. -// console.log(groupList); -// console.log(PageReducer); -// const keyword = PageReducer.isSearching[2] -// const gruopId = (groupList.find(item => item.name === keyword))? groupList.find(item => item.name === keyword).id : null -// if(gruopId){ -// loadMemberSearchGruopList(discriminationDirection(direction),gruopId,PageReducer.page,PageReducer.selected) -// } -// else{ -// alert("잘못된 동아리를 입력하셨습니다. 다시 입력해주세요") -// } -// } -// else if(option === "권한"){ -// console.log(PageReducer.isSearching[2]); -// const keyword = PageReducer.isSearching[2] -// console.log(keyword); -// if(keyword === "전체" || keyword === "회원" || keyword === "운영진" || keyword === "회장"){ -// switch(keyword){ -// case "전체":{ -// loadMemberSearchAuthoritiesList(discriminationDirection(direction),"ALL",PageReducer.page,PageReducer.selected) -// break; -// } -// case "회원":{ -// loadMemberSearchAuthoritiesList(discriminationDirection(direction),"MEMBER",PageReducer.page,PageReducer.selected) -// break; -// } -// case "운영진":{ -// loadMemberSearchAuthoritiesList(discriminationDirection(direction),"EXECUTIVE",PageReducer.page,PageReducer.selected) -// break; -// } -// case "회장":{ -// loadMemberSearchAuthoritiesList(discriminationDirection(direction),"PRESIDENT",PageReducer.page,PageReducer.selected) -// break; -// } -// } +// 회원 목록 조회탭에 관련된 함수들. + + const loadMemberList = (direction,page,type) => { //회원 목록 조회 + axios.get(`/club/executives/members?direction=${direction}&page=${page}&size=19&type=${type}`,{ + }) + .catch(function (error) { + console.log(error.toJSON()); + }) + .then(function (res) { + console.log(res); + settotalPage(res.data.data.totalPages) + setPosts((current) => res.data.data.content) + setLoad(true) + }); + } + + const loadMeberSearchList = (direction,page,searchType,sortType,word) => { //회원 검색 검색어 + axios.get(`/club/executives/members/search?direction=${direction}&page=${page}&searchType=${searchType}&size=19&sortType=${sortType}&word=${word}`,{ + }) + .catch(function (error) { + console.log(error.toJSON()); + }) + .then(function (res) { + console.log(res); + settotalPage(res.data.data.totalPages) + setPosts(res.data.data.content) + setLoad(true) + }); + } + + const loadMemberSearchAcademicStatusesList = (direction,academicStatus,page,sortType) => { // 회원 검색 (학적상태) + axios.get(`/club/executives/members/academic-statuses?academicStatus=${academicStatus}&direction=${direction}&page=${page}&size=19&sortType=${sortType}`,{ + }) + .catch(function (error) { + console.log(error.toJSON()); + }) + .then(function(res){ + console.log(res); + settotalPage(res.data.data.totalPages) + setPosts(res.data.data.content) + setLoad(true) + }); + } + + const loadMemberSearchAuthoritiesList = (direction,authority,page,sortType) => { // 회원 검색 (권한) + axios.get(`/club/executives/members/authorities?authority=${authority}&direction=${direction}&page=${page}&size=19&sortType=${sortType}`,{ + }) + .catch(function (error) { + console.log(error.toJSON()); + }) + .then(function(res){ + console.log(res); + console.log("회원 검색 권한 로드 완료!!!!!!"); + settotalPage(res.data.data.totalPages) + setPosts((current) => res.data.data.content) + setLoad(true) + }); + } + + const loadMemberSearchGenderList = (direction,gender,page,sortType) => { // 회원 검색 (성별) + axios.get(`/club/executives/members/genders?direction=${direction}&gender=${gender}&page=${page}&size=19&sortType=${sortType}`,{ + }) + .catch(function (error) { + console.log(error.toJSON()); + }) + .then(function(res){ + console.log(res); + settotalPage(res.data.data.totalPages) + setPosts(res.data.data.content) + }); + } + + const loadMemberSearchGradesList = (direction,grade,page,sortType) => { // 회원 검색 (학년) + axios.get(`/club/executives/members/grades?direction=${direction}&grade=${grade}&page=${page}&size=19&sortType=${sortType}`,{ + }) + .catch(function (error) { + console.log(error.toJSON()); + }) + .then(function(res){ + console.log(res); + settotalPage(res.data.data.totalPages) + setPosts(res.data.data.content) + }); + } + + const loadMemberSearchGruopList = (direction,groupId,page,sortType) => { // 회원 검색 (그룹) + axios.get(`/club/executives/members/groups?direction=${direction}&groupId=${groupId}&page=${page}&size=19&sortType=${sortType}`,{ + }) + .catch(function (error) { + console.log(error.toJSON()); + }) + .then(function(res){ + console.log(res); + settotalPage(res.data.data.totalPages) + setPosts(res.data.data.content) + }); + } + + const handleSearchFunction = (option) => { + const PageReducer = props.PageReducer + //console.log(data.option.includes("검색어")); + if(option.includes("검색어") === true){ // 검색어 요청 + if(option === "검색어 (이름)"){ + //loadMeberSearchList = (direction,page,searchType,sortType,word) + console.log("검색어 (이름)"); + console.log(discriminationDirection(direction)); + console.log(PageReducer.page); + console.log(PageReducer.selected); + console.log(PageReducer.isSearching[2]); + loadMeberSearchList(discriminationDirection(direction),PageReducer.page,'NAME',PageReducer.selected,PageReducer.isSearching[2]) + } + else if(option === "검색어 (학번)"){ + loadMeberSearchList(discriminationDirection(direction),PageReducer.page,'STUDENT_ID',PageReducer.selected,PageReducer.isSearching[2]) + } + else if(option === "검색어 (번호)"){ + loadMeberSearchList(discriminationDirection(direction),PageReducer.page,'PHONE',PageReducer.selected,PageReducer.isSearching[2]) + } + else if(option === "검색어 (학과)"){ + loadMeberSearchList(discriminationDirection(direction),PageReducer.page,'DEPARTMENT',PageReducer.selected,PageReducer.isSearching[2]) + } + } + else if(option === "그룹"){ + // const loadMemberSearchGruopList = (direction,groupId,page,sortType) + // groupId는 호출에 따라서 수행. + console.log(groupList); + console.log(PageReducer); + const keyword = PageReducer.isSearching[2] + const gruopId = (groupList.find(item => item.name === keyword))? groupList.find(item => item.name === keyword).id : null + if(gruopId){ + loadMemberSearchGruopList(discriminationDirection(direction),gruopId,PageReducer.page,PageReducer.selected) + } + else{ + alert("잘못된 동아리를 입력하셨습니다. 다시 입력해주세요") + } + } + else if(option === "권한"){ + console.log(PageReducer.isSearching[2]); + const keyword = PageReducer.isSearching[2] + console.log(keyword); + if(keyword === "전체" || keyword === "회원" || keyword === "운영진" || keyword === "회장"){ + switch(keyword){ + case "전체":{ + loadMemberSearchAuthoritiesList(discriminationDirection(direction),"ALL",PageReducer.page,PageReducer.selected) + break; + } + case "회원":{ + loadMemberSearchAuthoritiesList(discriminationDirection(direction),"MEMBER",PageReducer.page,PageReducer.selected) + break; + } + case "운영진":{ + loadMemberSearchAuthoritiesList(discriminationDirection(direction),"EXECUTIVE",PageReducer.page,PageReducer.selected) + break; + } + case "회장":{ + loadMemberSearchAuthoritiesList(discriminationDirection(direction),"PRESIDENT",PageReducer.page,PageReducer.selected) + break; + } + } -// } -// else{ -// alert("잘못된 검색입니다. 검색어로는 전체,회원,운영진,회장 입니다.") -// } -// // loadMemberSearchAuthoritiesList = (direction,authority,page,sortType) -// // authority를 호출에 따라서 수행 + } + else{ + alert("잘못된 검색입니다. 검색어로는 전체,회원,운영진,회장 입니다.") + } + // loadMemberSearchAuthoritiesList = (direction,authority,page,sortType) + // authority를 호출에 따라서 수행 -// } -// else if(option === "학적상태"){ -// const keyword = PageReducer.isSearching[2] -// if(keyword === "재학" || keyword === "휴학" || keyword === "졸업" || keyword === "그외"){ -// switch(keyword){ -// case "재학":{ -// loadMemberSearchAcademicStatusesList(discriminationDirection(direction),"ATTENDING",PageReducer.page,PageReducer.selected) -// break; -// } -// case "휴학":{ -// loadMemberSearchAcademicStatusesList(discriminationDirection(direction),"ABSENCE",PageReducer.page,PageReducer.selected) -// break; -// } -// case "졸업":{ -// loadMemberSearchAcademicStatusesList(discriminationDirection(direction),"GRADUATED",PageReducer.page,PageReducer.selected) -// break; -// } -// case "그외":{ -// loadMemberSearchAcademicStatusesList(discriminationDirection(direction),"ETC",PageReducer.page,PageReducer.selected) -// break; -// } -// } -// } -// else{ -// alert("잘못된 검색입니다. 검색어로는 재학,휴학,졸업,그외 입니다.") -// } -// //loadMemberSearchAcademicStatusesList = (direction,academicStatus ,page,sortType) + } + else if(option === "학적상태"){ + const keyword = PageReducer.isSearching[2] + if(keyword === "재학" || keyword === "휴학" || keyword === "졸업" || keyword === "그외"){ + switch(keyword){ + case "재학":{ + loadMemberSearchAcademicStatusesList(discriminationDirection(direction),"ATTENDING",PageReducer.page,PageReducer.selected) + break; + } + case "휴학":{ + loadMemberSearchAcademicStatusesList(discriminationDirection(direction),"ABSENCE",PageReducer.page,PageReducer.selected) + break; + } + case "졸업":{ + loadMemberSearchAcademicStatusesList(discriminationDirection(direction),"GRADUATED",PageReducer.page,PageReducer.selected) + break; + } + case "그외":{ + loadMemberSearchAcademicStatusesList(discriminationDirection(direction),"ETC",PageReducer.page,PageReducer.selected) + break; + } + } + } + else{ + alert("잘못된 검색입니다. 검색어로는 재학,휴학,졸업,그외 입니다.") + } + //loadMemberSearchAcademicStatusesList = (direction,academicStatus ,page,sortType) -// } -// else if(option === "성별"){ -// //loadMemberSearchGenderList = (direction,gender,page,sortType) -// //gender는 따로 -// const keyword = PageReducer.isSearching[2] -// if(keyword === "남" || keyword === "여"){ -// switch(keyword){ -// case "남":{ -// loadMemberSearchGenderList(discriminationDirection(direction),"MAN",PageReducer.page,PageReducer.selected) -// break; -// } -// case "여":{ -// loadMemberSearchGenderList(discriminationDirection(direction),"WOMAN",PageReducer.page,PageReducer.selected) -// break; -// } -// } -// } -// else{ -// alert("잘못된 검색입니다. 검색어로는 남(여) 입니다.") -// } + } + else if(option === "성별"){ + //loadMemberSearchGenderList = (direction,gender,page,sortType) + //gender는 따로 + const keyword = PageReducer.isSearching[2] + if(keyword === "남" || keyword === "여"){ + switch(keyword){ + case "남":{ + loadMemberSearchGenderList(discriminationDirection(direction),"MAN",PageReducer.page,PageReducer.selected) + break; + } + case "여":{ + loadMemberSearchGenderList(discriminationDirection(direction),"WOMAN",PageReducer.page,PageReducer.selected) + break; + } + } + } + else{ + alert("잘못된 검색입니다. 검색어로는 남(여) 입니다.") + } -// } -// else if(option === "학년"){ -// //loadMemberSearchGradesList = (direction,grade,page,sortType) -// //grade는 따로 -// const keyword = PageReducer.isSearching[2] -// if(keyword === "1" || keyword === "2" || keyword === "3" || keyword === "4" || keyword === "그외"){ -// switch(keyword){ -// case "1":{ -// loadMemberSearchGradesList(discriminationDirection(direction),"FRESHMAN",PageReducer.page,PageReducer.selected) -// break; -// } -// case "2":{ -// loadMemberSearchGradesList(discriminationDirection(direction),"SOPHOMORE",PageReducer.page,PageReducer.selected) -// break; -// } -// case "3":{ -// loadMemberSearchGradesList(discriminationDirection(direction),"JUNIOR",PageReducer.page,PageReducer.selected) -// break; -// } -// case "4":{ -// loadMemberSearchGradesList(discriminationDirection(direction),"SENIOR",PageReducer.page,PageReducer.selected) -// break; -// } -// case "그 외":{ -// loadMemberSearchGradesList(discriminationDirection(direction),"ETC",PageReducer.page,PageReducer.selected) -// break; -// } -// } -// } -// else{ -// alert("잘못된 검색입니다. 검색어로는 1, 2, 3, 4, 그외 입니다.") -// } -// } -// } - -// // 회원 가입 승인 탭에 관련된 함수 -// const loadMemberPermissionList = (page) => { // 회원 권한 요청 목록 조회 -// axios.get(`/club/executives/requests?page=${page}&role=ROLE_MEMBER&size=${19}`,{ -// }) -// .catch(function (error) { -// console.log(error.toJSON()); -// }) -// .then(function(res){ -// console.log(res); -// settotalPage(res.data.data.totalPages) -// setPosts((current) => res.data.data.content) -// setLoad(true) -// }); -// } - -// const loadMemberPermissionSearch = (page,type,word) => {// 회원 권한 요청 목록 검색 -// axios.get(`/club/executives/requests/search?page=${page}&size=19&type=${type}&word=${word}`,{ -// }) -// .catch(function (error) { -// console.log(error.toJSON()); -// }) -// .then(function(res){ -// console.log(res); -// settotalPage(res.data.data.totalPages) -// setPosts((current) => res.data.data.content) -// setLoad(true) -// }); -// } - -// const handleMemberPermissionSearchFuntion = (option) => { -// console.log(option); -// const PageReducer = props.PageReducer -// console.log(PageReducer.isSearching[2]); -// const keyword = PageReducer.isSearching[2] -// if(option === "이름"){ -// loadMemberPermissionSearch(PageReducer.page,"NAME",keyword) -// } -// else if(option === "학번"){ -// loadMemberPermissionSearch(PageReducer.page,"STUDENT_ID",PageReducer.isSearching[2]) -// } -// } - -// //그룹 관리 API - -// const loadGroupMemberList = (direction, groupId, page, role, type) => { // 그룹원 목록 조회 -// axios.get(`/groups/executives/members?direction=${direction}&groupId=${groupId}&page=${page}&role=${role}&size=19&type=${type}`,{ -// }) -// .catch(function (error) { -// console.log(error.toJSON()); -// }) -// .then(function (res) { -// console.log(res); -// //setSubScrrenTitle(groupInfor.name) -// settotalPage(res.data.data.totalPages) -// setPosts(res.data.data.content) -// setLoad(true) -// }); -// } - -// const loadGroupSearchList = (direction,groupId,page,searchType,sortType,word ) => { //그룹원 검색(검색어 -// axios.get(`/groups/executives/members/search?direction=${direction}&groupId=${groupId}&page=${page}&size=19&searchType=${searchType}&sortType=${sortType}&word=${word}`,{ -// }) -// .catch(function (error) { -// console.log(error.toJSON()); -// }) -// .then(function (res) { -// //console.log(res); -// settotalPage(res.data.data.totalPages) -// setPosts((current) => res.data.data.content) -// setLoad(true) -// }); -// } - -// const loadGroupSearchGradesList = (direction,groupId,page,sortType,grade) => { //그룹원 검색(학년) -// axios.get(`/groups/executives/members/grades?direction=${direction}&grade=${grade}&groupId=${groupId}&page=${page}&size=19&sortType=${sortType}`,{ -// }) -// .catch(function (error) { -// console.log(error.toJSON()); -// }) -// .then(function (res) { -// //console.log(res); -// settotalPage(res.data.data.totalPages) -// setPosts((current) => res.data.data.content) -// setLoad(true) -// }); -// } - -// const loadGroupSearchGenderList = (direction,groupId,page,sortType,gender) => { //그룹원 검색(성별) -// axios.get(`/groups/executives/members/grades?direction=${direction}&groupId=${groupId}&page=${page}&size=19&gender=${gender}&sortType=${sortType}`,{ -// }) -// .catch(function (error) { -// console.log(error.toJSON()); -// }) -// .then(function (res) { -// //console.log(res); -// settotalPage(res.data.data.totalPages) -// setPosts((current) => res.data.data.content) -// setLoad(true) -// }); -// } - -// const loadGroupSearchAcademicStatusesList = (direction,groupId,page,sortType,academicStatus) => { //그룹원 검색(학적) -// axios.get(`/groups/executives/members/academic-statuses?academicStatus=${academicStatus}&direction=${direction}&groupId=${groupId}&page=${page}&size=19&sortType=${sortType}`,{ -// }) -// .catch(function (error) { -// console.log(error.toJSON()); -// }) -// .then(function (res) { -// //console.log(res); -// settotalPage(res.data.data.totalPages) -// setPosts((current) => res.data.data.content) -// setLoad(true) -// }); -// } - -// const handleGroupSearchFunction = (option) => { -// const PageReducer = props.PageReducer -// if(option.includes("검색어") === true){ // 검색어 요청 -// console.log(discriminationDirection(direction)); -// console.log(PageReducer.page); -// console.log(PageReducer.selected); -// console.log(PageReducer.isSearching[2]); -// if(option === "검색어 (이름)"){ -// //loadGroupSearchList = (direction,groupId,page,searchType,sortType,word ) -// console.log("검색어 (이름)"); -// loadGroupSearchList(discriminationDirection(direction),groupId,PageReducer.page,'NAME',PageReducer.selected,PageReducer.isSearching[2]) -// } -// else if(option === "검색어 (학번)"){ -// loadGroupSearchList(discriminationDirection(direction),groupId,PageReducer.page,'STUDENT_ID',PageReducer.selected,PageReducer.isSearching[2]) -// } -// else if(option === "검색어 (번호)"){ -// loadGroupSearchList(discriminationDirection(direction),groupId,PageReducer.page,'PHONE',PageReducer.selected,PageReducer.isSearching[2]) -// } -// else if(option === "검색어 (학과)"){ -// loadGroupSearchList(discriminationDirection(direction),groupId,PageReducer.page,'DEPARTMENT',PageReducer.selected,PageReducer.isSearching[2]) -// } -// } -// else if(option === "학적상태"){ -// const keyword = PageReducer.isSearching[2] -// if(keyword === "재학" || keyword === "휴학" || keyword === "졸업" || keyword === "그외"){ -// switch(keyword){ -// case "재학":{ -// loadGroupSearchAcademicStatusesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"ATTENDING") -// break; -// } -// case "휴학":{ -// loadGroupSearchAcademicStatusesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"ABSENCE") -// break; -// } -// case "졸업":{ -// loadGroupSearchAcademicStatusesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"GRADUATED") -// break; -// } -// case "그외":{ -// loadGroupSearchAcademicStatusesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"ETC") -// break; -// } -// } -// } -// else{ -// alert("잘못된 검색입니다. 검색어로는 재학,휴학,졸업,그외 입니다.") -// } -// //loadMemberSearchAcademicStatusesList = (direction,academicStatus ,page,sortType) + } + else if(option === "학년"){ + //loadMemberSearchGradesList = (direction,grade,page,sortType) + //grade는 따로 + const keyword = PageReducer.isSearching[2] + if(keyword === "1" || keyword === "2" || keyword === "3" || keyword === "4" || keyword === "그외"){ + switch(keyword){ + case "1":{ + loadMemberSearchGradesList(discriminationDirection(direction),"FRESHMAN",PageReducer.page,PageReducer.selected) + break; + } + case "2":{ + loadMemberSearchGradesList(discriminationDirection(direction),"SOPHOMORE",PageReducer.page,PageReducer.selected) + break; + } + case "3":{ + loadMemberSearchGradesList(discriminationDirection(direction),"JUNIOR",PageReducer.page,PageReducer.selected) + break; + } + case "4":{ + loadMemberSearchGradesList(discriminationDirection(direction),"SENIOR",PageReducer.page,PageReducer.selected) + break; + } + case "그 외":{ + loadMemberSearchGradesList(discriminationDirection(direction),"ETC",PageReducer.page,PageReducer.selected) + break; + } + } + } + else{ + alert("잘못된 검색입니다. 검색어로는 1, 2, 3, 4, 그외 입니다.") + } + } + } + + // 회원 가입 승인 탭에 관련된 함수 + const loadMemberPermissionList = (page) => { // 회원 권한 요청 목록 조회 + axios.get(`/club/executives/requests?page=${page}&role=ROLE_MEMBER&size=${19}`,{ + }) + .catch(function (error) { + console.log(error.toJSON()); + }) + .then(function(res){ + console.log(res); + settotalPage(res.data.data.totalPages) + setPosts((current) => res.data.data.content) + setLoad(true) + }); + } + + const loadMemberPermissionSearch = (page,type,word) => {// 회원 권한 요청 목록 검색 + axios.get(`/club/executives/requests/search?page=${page}&size=19&type=${type}&word=${word}`,{ + }) + .catch(function (error) { + console.log(error.toJSON()); + }) + .then(function(res){ + console.log(res); + settotalPage(res.data.data.totalPages) + setPosts((current) => res.data.data.content) + setLoad(true) + }); + } + + const handleMemberPermissionSearchFuntion = (option) => { + console.log(option); + const PageReducer = props.PageReducer + console.log(PageReducer.isSearching[2]); + const keyword = PageReducer.isSearching[2] + if(option === "이름"){ + loadMemberPermissionSearch(PageReducer.page,"NAME",keyword) + } + else if(option === "학번"){ + loadMemberPermissionSearch(PageReducer.page,"STUDENT_ID",PageReducer.isSearching[2]) + } + } + + //그룹 관리 API + + const loadGroupMemberList = (direction, groupId, page, role, type) => { // 그룹원 목록 조회 + axios.get(`/groups/executives/members?direction=${direction}&groupId=${groupId}&page=${page}&role=${role}&size=19&type=${type}`,{ + }) + .catch(function (error) { + console.log(error.toJSON()); + }) + .then(function (res) { + console.log(res); + //setSubScrrenTitle(groupInfor.name) + settotalPage(res.data.data.totalPages) + setPosts(res.data.data.content) + setLoad(true) + }); + } + + const loadGroupSearchList = (direction,groupId,page,searchType,sortType,word ) => { //그룹원 검색(검색어 + axios.get(`/groups/executives/members/search?direction=${direction}&groupId=${groupId}&page=${page}&size=19&searchType=${searchType}&sortType=${sortType}&word=${word}`,{ + }) + .catch(function (error) { + console.log(error.toJSON()); + }) + .then(function (res) { + //console.log(res); + settotalPage(res.data.data.totalPages) + setPosts((current) => res.data.data.content) + setLoad(true) + }); + } + + const loadGroupSearchGradesList = (direction,groupId,page,sortType,grade) => { //그룹원 검색(학년) + axios.get(`/groups/executives/members/grades?direction=${direction}&grade=${grade}&groupId=${groupId}&page=${page}&size=19&sortType=${sortType}`,{ + }) + .catch(function (error) { + console.log(error.toJSON()); + }) + .then(function (res) { + //console.log(res); + settotalPage(res.data.data.totalPages) + setPosts((current) => res.data.data.content) + setLoad(true) + }); + } + + const loadGroupSearchGenderList = (direction,groupId,page,sortType,gender) => { //그룹원 검색(성별) + axios.get(`/groups/executives/members/grades?direction=${direction}&groupId=${groupId}&page=${page}&size=19&gender=${gender}&sortType=${sortType}`,{ + }) + .catch(function (error) { + console.log(error.toJSON()); + }) + .then(function (res) { + //console.log(res); + settotalPage(res.data.data.totalPages) + setPosts((current) => res.data.data.content) + setLoad(true) + }); + } + + const loadGroupSearchAcademicStatusesList = (direction,groupId,page,sortType,academicStatus) => { //그룹원 검색(학적) + axios.get(`/groups/executives/members/academic-statuses?academicStatus=${academicStatus}&direction=${direction}&groupId=${groupId}&page=${page}&size=19&sortType=${sortType}`,{ + }) + .catch(function (error) { + console.log(error.toJSON()); + }) + .then(function (res) { + //console.log(res); + settotalPage(res.data.data.totalPages) + setPosts((current) => res.data.data.content) + setLoad(true) + }); + } + + const handleGroupSearchFunction = (option) => { + const PageReducer = props.PageReducer + if(option.includes("검색어") === true){ // 검색어 요청 + console.log(discriminationDirection(direction)); + console.log(PageReducer.page); + console.log(PageReducer.selected); + console.log(PageReducer.isSearching[2]); + if(option === "검색어 (이름)"){ + //loadGroupSearchList = (direction,groupId,page,searchType,sortType,word ) + console.log("검색어 (이름)"); + loadGroupSearchList(discriminationDirection(direction),groupId,PageReducer.page,'NAME',PageReducer.selected,PageReducer.isSearching[2]) + } + else if(option === "검색어 (학번)"){ + loadGroupSearchList(discriminationDirection(direction),groupId,PageReducer.page,'STUDENT_ID',PageReducer.selected,PageReducer.isSearching[2]) + } + else if(option === "검색어 (번호)"){ + loadGroupSearchList(discriminationDirection(direction),groupId,PageReducer.page,'PHONE',PageReducer.selected,PageReducer.isSearching[2]) + } + else if(option === "검색어 (학과)"){ + loadGroupSearchList(discriminationDirection(direction),groupId,PageReducer.page,'DEPARTMENT',PageReducer.selected,PageReducer.isSearching[2]) + } + } + else if(option === "학적상태"){ + const keyword = PageReducer.isSearching[2] + if(keyword === "재학" || keyword === "휴학" || keyword === "졸업" || keyword === "그외"){ + switch(keyword){ + case "재학":{ + loadGroupSearchAcademicStatusesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"ATTENDING") + break; + } + case "휴학":{ + loadGroupSearchAcademicStatusesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"ABSENCE") + break; + } + case "졸업":{ + loadGroupSearchAcademicStatusesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"GRADUATED") + break; + } + case "그외":{ + loadGroupSearchAcademicStatusesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"ETC") + break; + } + } + } + else{ + alert("잘못된 검색입니다. 검색어로는 재학,휴학,졸업,그외 입니다.") + } + //loadMemberSearchAcademicStatusesList = (direction,academicStatus ,page,sortType) -// } -// else if(option === "성별"){ -// //loadGroupSearchGenderList = (direction,groupId,page,sortType,gender) -// //gender는 따로 -// const keyword = PageReducer.isSearching[2] -// if(keyword === "남" || keyword === "여"){ -// switch(keyword){ -// case "남":{ -// loadGroupSearchGenderList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"MAN") -// break; -// } -// case "여":{ -// loadGroupSearchGenderList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"WOMAN") -// break; -// } -// } -// } -// else{ -// alert("잘못된 검색입니다. 검색어로는 남(여) 입니다.") -// } + } + else if(option === "성별"){ + //loadGroupSearchGenderList = (direction,groupId,page,sortType,gender) + //gender는 따로 + const keyword = PageReducer.isSearching[2] + if(keyword === "남" || keyword === "여"){ + switch(keyword){ + case "남":{ + loadGroupSearchGenderList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"MAN") + break; + } + case "여":{ + loadGroupSearchGenderList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"WOMAN") + break; + } + } + } + else{ + alert("잘못된 검색입니다. 검색어로는 남(여) 입니다.") + } -// } -// else if(option === "학년"){ -// //loadGroupSearchGradesList = (direction,groupId,page,searchType,grade) -// //grade는 따로 -// const keyword = PageReducer.isSearching[2] -// if(keyword === "1" || keyword === "2" || keyword === "3" || keyword === "4" || keyword === "그외"){ -// switch(keyword){ -// case "1":{ -// loadGroupSearchGradesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"FRESHMAN") -// break; -// } -// case "2":{ -// loadGroupSearchGradesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"SOPHOMORE") -// break; -// } -// case "3":{ -// loadGroupSearchGradesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"JUNIOR") -// break; -// } -// case "4":{ -// loadGroupSearchGradesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"SENIOR") -// break; -// } -// case "그 외":{ -// loadGroupSearchGradesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"ETC") -// break; -// } -// } -// } -// else{ -// alert("잘못된 검색입니다. 검색어로는 1, 2, 3, 4, 그외 입니다.") -// } -// } -// } + } + else if(option === "학년"){ + //loadGroupSearchGradesList = (direction,groupId,page,searchType,grade) + //grade는 따로 + const keyword = PageReducer.isSearching[2] + if(keyword === "1" || keyword === "2" || keyword === "3" || keyword === "4" || keyword === "그외"){ + switch(keyword){ + case "1":{ + loadGroupSearchGradesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"FRESHMAN") + break; + } + case "2":{ + loadGroupSearchGradesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"SOPHOMORE") + break; + } + case "3":{ + loadGroupSearchGradesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"JUNIOR") + break; + } + case "4":{ + loadGroupSearchGradesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"SENIOR") + break; + } + case "그 외":{ + loadGroupSearchGradesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"ETC") + break; + } + } + } + else{ + alert("잘못된 검색입니다. 검색어로는 1, 2, 3, 4, 그외 입니다.") + } + } + } - // React.useEffect(()=>{ - // const PageReducer = props.PageReducer - // console.log("props 값 변환"); - // console.log("props 작동!!!"); - // //console.log(props); - // if(SubCategory === undefined){ // 네비바에서 이동해옴.,, - // const roles = props.userReducer.roles - // const AllLeader = (roles.includes("ROLE_GROUP_PRESIDENT")&&roles.includes("ROLE_CLUB_PRESIDENT")) // 동아리 회장이자, 소모임 회장 - // const ClubLeaderGroupExecutive = (roles.includes("ROLE_CLUB_PRESIDENT")&&roles.includes("ROLE_GROUP_EXECUTIVE")) // 동아리 회장, 소모임 임원 - // const ClubLeader = props.userReducer.roles.includes("ROLE_CLUB_PRESIDENT") // 동아리 회장 - // const ClubExecutiveGroupLeader = (roles.includes("ROLE_GROUP_PRESIDENT")&&roles.includes("ROLE_CLUB_EXECUTIVE")) // 동아리 임원, 소모임 회장 - // const GroupLeader = props.userReducer.roles.includes("ROLE_GROUP_PRESIDENT") // 소모임 회장 - // const ClubExecutiveGroupExecutive = (roles.includes("ROLE_GROUP_EXECUTIVE")&&roles.includes("ROLE_CLUB_EXECUTIVE")) // 동아리 임원, 소모임 임원 - // const ClubExecutive = props.userReducer.roles.includes("ROLE_CLUB_EXECUTIVE") // 동아리 임원 - // const GroupExecutive = props.userReducer.roles.includes("ROLE_GROUP_EXECUTIVE") // 소모임 인원 - - // console.log(ClubExecutiveGroupExecutive); - // const category = getAuthority(AllLeader,ClubLeaderGroupExecutive,ClubLeader,ClubExecutiveGroupLeader,GroupLeader,ClubExecutiveGroupExecutive,ClubExecutive,GroupExecutive) - // console.log(AllLeader,ClubLeaderGroupExecutive,ClubLeader,ClubExecutiveGroupLeader,GroupLeader,ClubExecutiveGroupExecutive,ClubExecutive,GroupExecutive); - // console.log(category); - // axios.get(`/members/groups`,{ - // }) - // .catch(function (error) { - // console.log(error.toJSON()); - // }) - // .then(function (res) { - // //console.log(res.data.data); - // setGroupList(res.data.data) - // }) - - // const userReducer = props.userReducer; + React.useEffect(()=>{ + const PageReducer = props.PageReducer + console.log("props 값 변환"); + console.log("props 작동!!!"); + //console.log(props); + if(SubCategory === undefined){ // 네비바에서 이동해옴.,, + const roles = props.userReducer.roles + const AllLeader = (roles.includes("ROLE_GROUP_PRESIDENT")&&roles.includes("ROLE_CLUB_PRESIDENT")) // 동아리 회장이자, 소모임 회장 + const ClubLeaderGroupExecutive = (roles.includes("ROLE_CLUB_PRESIDENT")&&roles.includes("ROLE_GROUP_EXECUTIVE")) // 동아리 회장, 소모임 임원 + const ClubLeader = props.userReducer.roles.includes("ROLE_CLUB_PRESIDENT") // 동아리 회장 + const ClubExecutiveGroupLeader = (roles.includes("ROLE_GROUP_PRESIDENT")&&roles.includes("ROLE_CLUB_EXECUTIVE")) // 동아리 임원, 소모임 회장 + const GroupLeader = props.userReducer.roles.includes("ROLE_GROUP_PRESIDENT") // 소모임 회장 + const ClubExecutiveGroupExecutive = (roles.includes("ROLE_GROUP_EXECUTIVE")&&roles.includes("ROLE_CLUB_EXECUTIVE")) // 동아리 임원, 소모임 임원 + const ClubExecutive = props.userReducer.roles.includes("ROLE_CLUB_EXECUTIVE") // 동아리 임원 + const GroupExecutive = props.userReducer.roles.includes("ROLE_GROUP_EXECUTIVE") // 소모임 인원 + + console.log(ClubExecutiveGroupExecutive); + const category = getAuthority(AllLeader,ClubLeaderGroupExecutive,ClubLeader,ClubExecutiveGroupLeader,GroupLeader,ClubExecutiveGroupExecutive,ClubExecutive,GroupExecutive) + console.log(AllLeader,ClubLeaderGroupExecutive,ClubLeader,ClubExecutiveGroupLeader,GroupLeader,ClubExecutiveGroupExecutive,ClubExecutive,GroupExecutive); + console.log(category); + axios.get(`/members/groups`,{ + }) + .catch(function (error) { + console.log(error.toJSON()); + }) + .then(function (res) { + //console.log(res.data.data); + setGroupList(res.data.data) + }) + + const userReducer = props.userReducer; - // let groupInfor = userReducer.group.find(item => (item.role === "회장")) - // let groupId = "" - // if(groupInfor){ - // console.log("회장일때!"); - // console.log(groupInfor); - // setGroupId(groupInfor.id) - // setSubScrrenTitle(groupInfor.name) - // groupId = groupInfor.id - // console.log(groupId); - // } - // else if(groupInfor = userReducer.group.find(item => (item.role === "임원"))){ - // groupId = groupInfor.id - // console.log("임원일때!"); - // console.log(groupInfor); - // setGroupId(groupInfor.id) - // setSubScrrenTitle(groupInfor.name) - // } - // else{ - // groupId = 0 - // setGroupId(-1) - // setSubScrrenTitle("error") - // } + let groupInfor = userReducer.group.find(item => (item.role === "회장")) + let groupId = "" + if(groupInfor){ + console.log("회장일때!"); + console.log(groupInfor); + setGroupId(groupInfor.id) + setSubScrrenTitle(groupInfor.name) + groupId = groupInfor.id + console.log(groupId); + } + else if(groupInfor = userReducer.group.find(item => (item.role === "임원"))){ + groupId = groupInfor.id + console.log("임원일때!"); + console.log(groupInfor); + setGroupId(groupInfor.id) + setSubScrrenTitle(groupInfor.name) + } + else{ + groupId = 0 + setGroupId(-1) + setSubScrrenTitle("error") + } - // if(category.find(item => item.boardName === "회원 목록 조회") !== undefined){ // 회원 목록 조회 즉 동아리 회장이거나 임원일때 - // axios.get(`/club/executives/members?direction=${"ASC"}&page=${0}&size=19&type=${"ID"}`,{ - // }) - // .catch(function (error) { - // console.log(error.toJSON()); - // }) - // .then(function (res) { - // console.log(res); - // settotalPage(res.data.data.totalPages) - // setPosts(res.data.data.content) - // setTarget("회원 목록 조회") - // setPage(PageReducer.page) - // //setSelected(PageReducer.selected) - // setSubCategory(category) + if(category.find(item => item.boardName === "회원 목록 조회") !== undefined){ // 회원 목록 조회 즉 동아리 회장이거나 임원일때 + axios.get(`/club/executives/members?direction=${"ASC"}&page=${0}&size=19&type=${"ID"}`,{ + }) + .catch(function (error) { + console.log(error.toJSON()); + }) + .then(function (res) { + console.log(res); + settotalPage(res.data.data.totalPages) + setPosts(res.data.data.content) + setTarget("회원 목록 조회") + setPage(PageReducer.page) + //setSelected(PageReducer.selected) + setSubCategory(category) - // }); - // } - // else if(category.find(item => item.boardName === "그룹 회원 목록 조회")){ // 그룹원 목록 조회 즉 소모임 회장이거나 임원일때 - - // axios.get(`/groups/executives/members?direction=${"ASC"}&groupId=${groupId}&page=1&role=MEMBER&size=19&type=ID`,{ - // }) - // .catch(function (error) { - // console.log(error.toJSON()); - // }) - // .then(function (res) { - // console.log(res); - // settotalPage(res.data.data.totalPages) - // setPosts(res.data.data.content) - // setTarget("그룹 회원 목록 조회") - // setPage(PageReducer.page) - // console.log("최초시행 작동!"); - // setSubCategory(category) - // }); - // } - - // } - // else{ - // if(PageReducer.boardId === "회원 목록 조회" || PageReducer.boardId === "회원 강제 탈퇴" || (PageReducer.boardId===""&&target === "회원 목록 조회") || PageReducer.boardId === "회장 위임" || PageReducer.boardId === "그룹 회장 권한 부여"){ - // if(PageReducer.isSearching[0] === true){ - // console.log("검색로직 작동!"); - // //console.log(PageReducer); - // handleSearchFunction(PageReducer.isSearching[1]) - // //loadMeberSearchList(discriminationDirection(direction),PageReducer.page,PageReducer.isSearching[1],PageReducer.selected,PageReducer.isSearching[2]) - // } - // else{ - // console.log("hahah"); - // loadMemberList(discriminationDirection(direction),PageReducer.page,PageReducer.selected) - // } - // } - // else if(PageReducer.boardId === "회원 가입 승인 및 거절"){ - // console.log("회원 가입 승인!!!"); - // if(PageReducer.isSearching[0] === true){ - // console.log("검색로직 작동!"); - // handleMemberPermissionSearchFuntion(PageReducer.isSearching[1]) - // } - // else{ - // loadMemberPermissionList(PageReducer.page) - // } - // } - // else if(PageReducer.boardId === "회원 권한 부여"){ // 추후 load 필요 - // if(PageReducer.isSearching[0] === true){ - // console.log("회원 권한 부여 검색로직 작동!"); - // //console.log(PageReducer); - // handleSearchFunction(PageReducer.isSearching[1]) - // //loadMeberSearchList(discriminationDirection(direction),PageReducer.page,PageReducer.isSearching[1],PageReducer.selected,PageReducer.isSearching[2]) - // } - // } - // else if(PageReducer.boardId === "운영진 권한 부여 및 회원 권한 해제"){ // 추후 load 변경 - // console.log("운영진 권한 부여 및 회원 권한 해제 로직 작동!"); - // loadMemberSearchAuthoritiesList(discriminationDirection(direction),"MEMBER",PageReducer.page,PageReducer.selected) - // }//loadMemberSearchAuthoritiesList - // else if(PageReducer.boardId === "운영진 권한 해제"){ // 추후 load 변경 - // console.log("운영진 권한 해제 로직 작동!"); - // loadMemberSearchAuthoritiesList(discriminationDirection(direction),"EXECUTIVE",PageReducer.page,PageReducer.selected) - // } - // else if(PageReducer.boardId ==="그룹 회원 목록 조회" || target === "그룹 회원 목록 조회"){ - - // if(PageReducer.isSearching[0] === true){ - // console.log("그룹 회원 목록 조회의 검색로직 작동!"); - // handleGroupSearchFunction(PageReducer.isSearching[1]) - // } - // else{ - // loadGroupMemberList(discriminationDirection(direction),groupId,PageReducer.page,"MEMBER",PageReducer.selected) - // } - // } - // else if(PageReducer.boardId === "그룹 가입 승인"){ - // if(PageReducer.isSearching[0] === true){ - // console.log("그룹 가입 승인의 검색로직 작동!"); - // handleGroupSearchFunction(PageReducer.isSearching[1]) - // } - // else{ - // loadGroupMemberList(discriminationDirection(direction),groupId,PageReducer.page,"APPLICANT",PageReducer.selected) - // } - // } - // else if(PageReducer.boardId === "그룹 강제 탈퇴" || PageReducer.boardId === "그룹 임원 권한 부여"){ - - // if(PageReducer.isSearching[0] === true){ - // console.log("검색로직 작동!"); - // handleGroupSearchFunction(PageReducer.isSearching[1]) - // } - // else{ - // loadGroupMemberList(discriminationDirection(direction),groupId,PageReducer.page,"MEMBER",PageReducer.selected) - // } - // } - // else if(PageReducer.boardId === "그룹 회장 위임 및 임원 권한 해제"){ - - // if(PageReducer.isSearching[0] === true){ - // console.log("검색로직 작동!"); - // handleGroupSearchFunction(PageReducer.isSearching[1]) - // } - // else{ - // loadGroupMemberList(discriminationDirection(direction),groupId,PageReducer.page,"EXECUTIVE",PageReducer.selected) - // } - // } - // } + }); + } + else if(category.find(item => item.boardName === "그룹 회원 목록 조회")){ // 그룹원 목록 조회 즉 소모임 회장이거나 임원일때 + + axios.get(`/groups/executives/members?direction=${"ASC"}&groupId=${groupId}&page=1&role=MEMBER&size=19&type=ID`,{ + }) + .catch(function (error) { + console.log(error.toJSON()); + }) + .then(function (res) { + console.log(res); + settotalPage(res.data.data.totalPages) + setPosts(res.data.data.content) + setTarget("그룹 회원 목록 조회") + setPage(PageReducer.page) + console.log("최초시행 작동!"); + setSubCategory(category) + }); + } + + } + else{ + if(PageReducer.boardId === "회원 목록 조회" || PageReducer.boardId === "회원 강제 탈퇴" || (PageReducer.boardId===""&&target === "회원 목록 조회") || PageReducer.boardId === "회장 위임" || PageReducer.boardId === "그룹 회장 권한 부여"){ + if(PageReducer.isSearching[0] === true){ + console.log("검색로직 작동!"); + //console.log(PageReducer); + handleSearchFunction(PageReducer.isSearching[1]) + //loadMeberSearchList(discriminationDirection(direction),PageReducer.page,PageReducer.isSearching[1],PageReducer.selected,PageReducer.isSearching[2]) + } + else{ + console.log("hahah"); + loadMemberList(discriminationDirection(direction),PageReducer.page,PageReducer.selected) + } + } + else if(PageReducer.boardId === "회원 가입 승인 및 거절"){ + console.log("회원 가입 승인!!!"); + if(PageReducer.isSearching[0] === true){ + console.log("검색로직 작동!"); + handleMemberPermissionSearchFuntion(PageReducer.isSearching[1]) + } + else{ + loadMemberPermissionList(PageReducer.page) + } + } + else if(PageReducer.boardId === "회원 권한 부여"){ // 추후 load 필요 + if(PageReducer.isSearching[0] === true){ + console.log("회원 권한 부여 검색로직 작동!"); + //console.log(PageReducer); + handleSearchFunction(PageReducer.isSearching[1]) + //loadMeberSearchList(discriminationDirection(direction),PageReducer.page,PageReducer.isSearching[1],PageReducer.selected,PageReducer.isSearching[2]) + } + } + else if(PageReducer.boardId === "운영진 권한 부여 및 회원 권한 해제"){ // 추후 load 변경 + console.log("운영진 권한 부여 및 회원 권한 해제 로직 작동!"); + loadMemberSearchAuthoritiesList(discriminationDirection(direction),"MEMBER",PageReducer.page,PageReducer.selected) + }//loadMemberSearchAuthoritiesList + else if(PageReducer.boardId === "운영진 권한 해제"){ // 추후 load 변경 + console.log("운영진 권한 해제 로직 작동!"); + loadMemberSearchAuthoritiesList(discriminationDirection(direction),"EXECUTIVE",PageReducer.page,PageReducer.selected) + } + else if(PageReducer.boardId ==="그룹 회원 목록 조회" || target === "그룹 회원 목록 조회"){ + + if(PageReducer.isSearching[0] === true){ + console.log("그룹 회원 목록 조회의 검색로직 작동!"); + handleGroupSearchFunction(PageReducer.isSearching[1]) + } + else{ + loadGroupMemberList(discriminationDirection(direction),groupId,PageReducer.page,"MEMBER",PageReducer.selected) + } + } + else if(PageReducer.boardId === "그룹 가입 승인"){ + if(PageReducer.isSearching[0] === true){ + console.log("그룹 가입 승인의 검색로직 작동!"); + handleGroupSearchFunction(PageReducer.isSearching[1]) + } + else{ + loadGroupMemberList(discriminationDirection(direction),groupId,PageReducer.page,"APPLICANT",PageReducer.selected) + } + } + else if(PageReducer.boardId === "그룹 강제 탈퇴" || PageReducer.boardId === "그룹 임원 권한 부여"){ + + if(PageReducer.isSearching[0] === true){ + console.log("검색로직 작동!"); + handleGroupSearchFunction(PageReducer.isSearching[1]) + } + else{ + loadGroupMemberList(discriminationDirection(direction),groupId,PageReducer.page,"MEMBER",PageReducer.selected) + } + } + else if(PageReducer.boardId === "그룹 회장 위임 및 임원 권한 해제"){ + + if(PageReducer.isSearching[0] === true){ + console.log("검색로직 작동!"); + handleGroupSearchFunction(PageReducer.isSearching[1]) + } + else{ + loadGroupMemberList(discriminationDirection(direction),groupId,PageReducer.page,"EXECUTIVE",PageReducer.selected) + } + } + } - // },[props]) - - // React.useEffect(()=>{ - // if(SubCategory !== undefined){ - // console.log("target작동"); - // const PageReducer = props.PageReducer - // const boardId = target - // console.log(boardId); - // //setSelected("LASTEST") - // direction = true; - // sortDirection("dafalut") - // setLoad(false) - // props.setAll(boardId,1,[false],"ID",PageReducer.boardCategoryName) - // } - // },[target]) - - // React.useEffect(()=>{ - // if(SubCategory !== undefined){ - // console.log("page작동"); - // const PageReducer = props.PageReducer - // props.setAll(PageReducer.boardId,page,PageReducer.isSearching,PageReducer.selected,PageReducer.boardCategoryName) - // } - // },[page]) + },[props]) + + React.useEffect(()=>{ + if(SubCategory !== undefined){ + console.log("target작동"); + const PageReducer = props.PageReducer + const boardId = target + console.log(boardId); + //setSelected("LASTEST") + direction = true; + sortDirection("dafalut") + setLoad(false) + props.setAll(boardId,1,[false],"ID",PageReducer.boardCategoryName) + } + },[target]) + + React.useEffect(()=>{ + if(SubCategory !== undefined){ + console.log("page작동"); + const PageReducer = props.PageReducer + props.setAll(PageReducer.boardId,page,PageReducer.isSearching,PageReducer.selected,PageReducer.boardCategoryName) + } + },[page]) const { register, handleSubmit, watch, formState: { errors } } = useForm(); const onSubmit = data => console.log(data); @@ -1009,21 +1009,135 @@ function Operator(props) { null } - - - { handleNumber() }}>번호 - { handleSort("Grade") }}>학년 - { handleSort("StudentId") }}>학번 - { handleSort("PhoneNumber") }} post>연락처 - { handleSort("Name") }}>이름 - 회원직책 - { handleSort("Attendance") }}>학적 - { handleSort("Gender") }}>성별 - {((target !== "회원 목록 조회") || (target !== "그룹 회원 목록 조회")) ? 버튼 : null} - - - - + + + {(numberDirection === true) ? + {handleNumber()}}>번호 + : + {handleNumber()}}>번호 + } + {(gradeDirection === true) ? + {handleSort("Grade")}}>학년 + : + {handleSort("Grade")}}>학년 + } + {(studentIdDirection === true) ? + {handleSort("StudentId")}}>학번 + : + {handleSort("StudentId")}}>학번 + } + {(phoneNumberDirection === true) ? + {handleSort("PhoneNumber")}} post>연락처 + : + {handleSort("PhoneNumber")}} post>연락처 + } + {(nameDirection === true) ? + {handleSort("Name")}}>이름 + : + {handleSort("Name")}}>이름 + } + 회원직책 + {(attendanceDirection === true) ? + {handleSort("Attendance")}}>학적 + : + {handleSort("Attendance")}}>학적 + } + {(genderDirection === true) ? + {handleSort("Gender")}}>성별 + : + {handleSort("Gender")}}>성별 + } + {((target !== "회원 목록 조회")||(target !=="그룹 회원 목록 조회")) ? 버튼 : null} + + + + {/* */} + + + {(load)? + <> + {(target === "회원 목록 조회" && posts !== []) ? + + : + null + } + + {(props.PageReducer.boardId === "회원 가입 승인 및 거절" && posts !== []) ? + + : + null + } + + {(props.PageReducer.boardId === "회원 권한 부여" && posts !== []) ? + + : + null + } + + {(props.PageReducer.boardId === "운영진 권한 부여 및 회원 권한 해제" && posts !== []) ? + + : + null //운영진 권한 해제 + } + + {(props.PageReducer.boardId === "운영진 권한 해제" && posts !== []) ? + + : + null + } + + {(props.PageReducer.boardId === "그룹 회장 권한 부여" && posts !== []) ? + + : + null + } + + {(props.PageReducer.boardId === "회원 강제 탈퇴" && posts !== [])? + + : + null + } + + {(props.PageReducer.boardId === "회장 위임" && posts !== []) ? + + : + null + } + + {(target === "그룹 회원 목록 조회" && posts !== [] ) ? + + : + null + } + + {(target === "그룹 가입 승인" && posts !== [] ) ? + + : + null + } + + {(target === "그룹 강제 탈퇴" && posts !== [] ) ? + + : + null + } + + {(target === "그룹 임원 권한 부여" && posts !== [] ) ? + + : + null + } + + {(target === "그룹 회장 위임 및 임원 권한 해제" && posts !== [] ) ? + + : + null + } + + + : + null + } {((target === "전체 동아리원 초기화") || (target === "게시판 추가 및 삭제")) ? diff --git a/src/components/screens/Admin/OptionBtn.js b/src/components/screens/Admin/OptionBtn.js index 7d7317eb..0ef2e058 100644 --- a/src/components/screens/Admin/OptionBtn.js +++ b/src/components/screens/Admin/OptionBtn.js @@ -4,10 +4,27 @@ import {faCog} from "@fortawesome/free-solid-svg-icons" import * as React from "react" import Modal from "./Modal.js"; +const Empower = "권한 부여" +const Revoke = "권한 해제" +const Delegate = "회장 위임" +const Expulsion = "강제 탈퇴" + +const test = { + id: 1, + name: "김승태", + studentId: 12171595, + role: "ROLE_CLUB_PRESIDENT", + academicStatus: "재학" +} + + + function OptionButton(props){ - const {id, show, setShow} = props; + const {id, show, setShow, data} = props; const [showModal, setShowModal] = React.useState(false); + const [modalOption, setModalOption] = React.useState(false); // option이 무엇인지 + const [modalInfor, setModalInfor] = React.useState(data); // 회원 정보 const showSection = () => { if(id === show){ @@ -19,8 +36,35 @@ function OptionButton(props){ } - const showSectionModal = () => { - + const setModal = (option) => { + console.log(option); + + switch(option){ + case Empower:{ + console.log(Empower); + setModalOption(Empower) + setShowModal(true) + break; + } + case Revoke:{ + console.log(Revoke); + setModalOption(Revoke) + setShowModal(true) + break; + } + case Delegate:{ + console.log(Delegate); + setModalOption(Delegate) + setShowModal(true) + break; + } + case Expulsion:{ + console.log(Expulsion); + setModalOption(Expulsion) + setShowModal(true) + break; + } + } } return ( @@ -30,13 +74,13 @@ function OptionButton(props){ {(show === id) ? <> - {setShowModal(current => !current) }}>권한 부여 - 권한 해제 - 강제 탈퇴 - 회장 위임 + {setModal(Empower) }}>권한 부여 + {setModal(Revoke) }}>권한 해제 + {setModal(Expulsion) }}>강제 탈퇴 + {setModal(Delegate) }}>회장 위임 {(showModal==true)? - + : null } diff --git a/src/components/screens/Admin/PostGroupPermissionBar.js b/src/components/screens/Admin/PostGroupPermissionBar.js new file mode 100644 index 00000000..5439039b --- /dev/null +++ b/src/components/screens/Admin/PostGroupPermissionBar.js @@ -0,0 +1,266 @@ +import styled from "styled-components"; +import * as React from "react" +import {PostInforBar,PostCotent,Grade,StudentId,PhoneNumber,Name,PostRole,PostAttendance,PostGender,PostNumber,CheckBtn as Btn} from "./BoardElement" +import axios from "axios"; +import { connect } from "react-redux"; +import { actionCreators } from "../../store"; +import PostGroupPermissionBar from "../../shared/PostGroupPermissionBar"; +import PostMemberExpulsionBar from "./PostMemberExpulsionBar"; +import PostMemberPermissionBar from "./PostMemberPermissionBar"; + + +export const CheckBtn = styled.div` +margin-left: ${(props) => (props.red ? "10px" : "28px")}; +width: 15px; +height: 15px; +background-color: ${(props) => (props.red ? "red" : "#6CD2D7")}; +border: none; +border-radius: 15px; +cursor: pointer; +` + +const printRole = (value) => { + if(value.includes("ROLE_CLUB_PRESIDENT")){ + return "회장" + } + else if(value.includes("ROLE_GROUP_PRESIDENT")){ + return "소모임장" + } + else if(value.includes("ROLE_CLUB_EXECUTIVE")){ + return "운영진" + } + else if(value.includes("ROLE_GROUP_EXECUTIVE")){ + return "그룹운영진" + } + else if(value.includes("ROLE_MEMBER")){ + return "일반" + } + else if(value.includes("ROLE_GUEST")){ + return "게스트" + } + else if(value.includes("ROLE_BAN")){ + return "밴" + } + else if(value.includes("ROLE_RESIGN")){ + return "사직" + } +} + +function mapDispatchToProps(dispatch){ + return{ + setAll: (boardId,page,isSearching,selected,boardCategoryName) => dispatch(actionCreators.setAll(boardId,page,isSearching,selected,boardCategoryName)), + } + } + +function mapStateToProps(state) { + return state; + } + +function PostGroupPermissionBar(props){ + + console.log(props); + const groupId = props.groupId + console.log(groupId); + const permissionGroup = (groupId, memberId) => { + axios.patch(`/groups/executives/applicants/approve?groupId=${groupId}&memberId=${memberId}`, + { + }) + .catch(function (error) { + console.log(error); + }) + .then(function (res) { + console.log(res); + const PageReducer = props.PageReducer + props.setAll("그룹 가입 승인",PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) + }); + } + + const rejectionGroup = (groupId, memberId) => { + axios.delete(`/groups/executives/applicants/reject?groupId=${groupId}&memberId=${memberId}`,{},{ + }) + .catch(function (error) { + console.log(error); + }) + .then(function (res) { + console.log(res); + const PageReducer = props.PageReducer + props.setAll("그룹 가입 승인",PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) + }); + } + + const promoteGroup = (groupId,memberId) => { // 임원 승급 + axios.patch(`/groups/president/promote?groupId=${groupId}&memberId=${memberId}`,{ + }) + .catch(function (error) { + console.log(error); + }) + .then(function (res) { + console.log(res); + const PageReducer = props.PageReducer + props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) + }); + } + + const degradeGroup = (groupId,memberId) => { // 임원 하락 + axios.patch(`/groups/president/degrade?groupId=${groupId}&memberId=${memberId}`,{ + }) + .catch(function (error) { + console.log(error); + }) + .then(function (res) { + console.log(res); + const PageReducer = props.PageReducer + props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) + }); + } + + const delegateGroup = (groupId,memberId) => { + axios.patch(`/groups/president/delegate?groupId=${groupId}&memberId=${memberId}`,{ + }) + .catch(function (error) { + console.log(error); + }) + .then(function (res) { + console.log(res); + const PageReducer = props.PageReducer + props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) + }); + } + + const kickGroup = (groupId,memberId) => { + axios.patch(`/groups/president/kick?groupId=${groupId}&memberId=${memberId}`,{ + }) + .catch(function (error) { + console.log(error); + }) + .then(function (res) { + console.log(res); + const PageReducer = props.PageReducer + props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) + }); + } + + + + + + const handlePermission = (e) => { + console.log(e); + //console.log(e.target.dataset.id); + + const check = window.confirm("이 회원의 그룹 승인을 하시겠습니까?") + console.log(check); + if(check){ + const id = e.target.dataset.id + permissionGroup(groupId,id) + } + } + + const handleRejection = (e) => { + console.log(e); + //console.log(e.target.dataset.id); + + const check = window.confirm("이 회원의 그룹 거절을 하시겠습니까?") + console.log(check); + if(check){ + const id = e.target.dataset.id + rejectionGroup(groupId,id) + } + } + + const handlePromote = (e) => { + const check = window.confirm("이 회원에게 임원권한을 부여하시겠습니까?") + console.log(check); + if(check){ + const id = e.target.dataset.id + promoteGroup(groupId,id) + } + } + + const handleDegrade = (e) => { + const check = window.confirm("이 회원의 임원권한을 해제하시겠습니까?") + console.log(check); + if(check){ + const id = e.target.dataset.id + degradeGroup(groupId,id) + } + } + + const handleDelegate = (e) => { + const name = e.target.parentNode.childNodes[4].innerText + const check = window.confirm(`${name}에게 회장을 위임 하시겠습니까?`) + console.log(check); + if(check){ + const id = e.target.dataset.id + delegateGroup(groupId,id) + } + } + + const handleKick = (e) => { + const name = e.target.parentNode.childNodes[4].innerText + const check = window.confirm(`${name}을 탈퇴시겠습니까?`) + console.log(check); + if(check){ + const id = e.target.dataset.id + kickGroup(groupId,id) + } + } +// + const postdata = props.data.map((data)=> + + + {data.id} + {data.grade} + {data.studentId} + {data.phone} + {data.name} + {printRole(data.roles)} + {data.academicStatus} + {data.gender} + {(props.type === "그룹 가입 승인")? + <> + + + + : + null + } + {(props.type === "그룹 임원 권한 부여")? + <> + + + : + null + } + {(props.type === "그룹 회장 위임 및 임원 권한 해제")? + <> + + + + : + null + } + {(props.type === "그룹 강제 탈퇴")? + <> + + + : + null + } + + + + ) + + return ( + <> + {( props.data[0] !== undefined)? + postdata + : + null + } + + ); +} + +export default React.memo(connect(mapStateToProps,mapDispatchToProps)(PostGroupPermissionBar)); \ No newline at end of file diff --git a/src/components/screens/Admin/PostMemberBar.js b/src/components/screens/Admin/PostMemberBar.js index af701f50..a86ef604 100644 --- a/src/components/screens/Admin/PostMemberBar.js +++ b/src/components/screens/Admin/PostMemberBar.js @@ -33,7 +33,6 @@ const printRole = (value) => { } } - function mapDispatchToProps(dispatch){ return{ setAll: (boardId,page,isSearching,selected,boardCategoryName) => dispatch(actionCreators.setAll(boardId,page,isSearching,selected,boardCategoryName)), @@ -53,6 +52,24 @@ function PostMemberBar(props) { // console.log(props.groupList); } + if(props.data[0] !== undefined && props.data[0].member === undefined){ + postdata = props.data.map((data)=> + + + {data.id} + {data.grade} + {data.studentId} + {data.phone} + {data.name} + {printRole(data.roles)} + {data.academicStatus} + {data.gender} + + + + ) +} + return ( <> diff --git a/src/components/screens/Admin/PostMemberExpulsionBar.js b/src/components/screens/Admin/PostMemberExpulsionBar.js new file mode 100644 index 00000000..a0928350 --- /dev/null +++ b/src/components/screens/Admin/PostMemberExpulsionBar.js @@ -0,0 +1,100 @@ +import styled from "styled-components"; +import * as React from "react" +import {PostInforBar,PostCotent,Grade,StudentId,PhoneNumber,Name,PostRole,PostAttendance,PostGender,PostNumber,CheckBtn} from "./BoardElement" +import axios from "axios"; +import { connect } from "react-redux"; +import { actionCreators } from "../../store"; + +const printRole = (value) => { + if(value.includes("ROLE_CLUB_PRESIDENT")){ + return "회장" + } + else if(value.includes("ROLE_GROUP_PRESIDENT")){ + return "소모임장" + } + else if(value.includes("ROLE_CLUB_EXECUTIVE")){ + return "운영진" + } + else if(value.includes("ROLE_GROUP_EXECUTIVE")){ + return "운영진" + } + else if(value.includes("ROLE_MEMBER")){ + return "일반" + } + else if(value.includes("ROLE_GUEST")){ + return "게스트" + } + else if(value.includes("ROLE_BAN")){ + return "밴" + } + else if(value.includes("ROLE_RESIGN")){ + return "사직" + } +} + +function mapDispatchToProps(dispatch){ + return{ + setAll: (boardId,page,isSearching,selected,boardCategoryName) => dispatch(actionCreators.setAll(boardId,page,isSearching,selected,boardCategoryName)), + } + } + +function mapStateToProps(state) { + return state; + } + +function PostMemberExpulsionBar(props){ + //console.log(props.data); + //console.log(props); + + + const expulsionMember = (memberId) => { + axios.patch(`/club/president/ban?memberId=${memberId}`,{},{ + }) + .catch(function (error) { + console.log(error); + }) + .then(function (res) { + console.log(res); + const PageReducer = props.PageReducer + props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) + }); + } + + const handleExpulsion = (e) => { + console.log(e); + const name = e.target.parentNode.childNodes[4].innerText + console.log(e); + const check = window.confirm(`${name}을(를) 정말 강제로 탈퇴시키겠습니까?`) + console.log(check); + if(check){ + const id = e.target.dataset.id + expulsionMember(id) + } + } + + const postdata = props.data.map((data)=> + + + {data.id} + {data.grade} + {data.studentId} + {data.phone} + {data.name} + {printRole(data.roles)} + {data.academicStatus} + {data.gender} + + + + ) + + return ( + <> + { + postdata + } + + ); +} + +export default React.memo(connect(mapStateToProps,mapDispatchToProps)(PostMemberExpulsionBar)); \ No newline at end of file diff --git a/src/components/screens/Admin/PostMemberPermissionBar.js b/src/components/screens/Admin/PostMemberPermissionBar.js new file mode 100644 index 00000000..70bc6160 --- /dev/null +++ b/src/components/screens/Admin/PostMemberPermissionBar.js @@ -0,0 +1,143 @@ +import styled from "styled-components"; +import * as React from "react" +import {PostInforBar,PostCotent,Grade,StudentId,PhoneNumber,Name,PostRole,PostAttendance,PostGender,PostNumber,SmallCheckBtn} from "./BoardElement" +import axios from "axios"; +import { connect } from "react-redux"; +import { actionCreators } from "../../store"; + +const printRole = (value) => { + if(value.includes("ROLE_CLUB_PRESIDENT")){ + return "회장" + } + else if(value.includes("ROLE_GROUP_PRESIDENT")){ + return "소모임장" + } + else if(value.includes("ROLE_CLUB_EXECUTIVE")){ + return "운영진" + } + else if(value.includes("ROLE_GROUP_EXECUTIVE")){ + return "운영진" + } + else if(value.includes("ROLE_MEMBER")){ + return "일반" + } + else if(value.includes("ROLE_GUEST")){ + return "게스트" + } + else if(value.includes("ROLE_BAN")){ + return "밴" + } + else if(value.includes("ROLE_RESIGN")){ + return "사직" + } +} + +function mapDispatchToProps(dispatch){ + return{ + setAll: (boardId,page,isSearching,selected,boardCategoryName) => dispatch(actionCreators.setAll(boardId,page,isSearching,selected,boardCategoryName)), + } + } + +function mapStateToProps(state) { + return state; + } + +function PostMemberPermissionBar(props){ + // console.log(props.data); + //console.log(props); + let postdata + + const permissionMember = (requestId) => { //회원 권한 요청 승인 + axios.post(`/club/executives/authority?requestId=${requestId}`,{},{ + }) + .catch(function (error) { + console.log(error); + }) + .then(function (res) { + //console.log(res); + const PageReducer = props.PageReducer + props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) + }); + } + + const rejectMember = (requestId) => { // 회원 권한 요청 거절 + axios.delete(`/club/executives/authority?requestId=${requestId}`,{},{ + }) + .catch(function (error) { + console.log(error); + }) + .then(function (res) { + //console.log(res); + const PageReducer = props.PageReducer + props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) + }); + } + + + + const handlePermission = (e) => { + console.log(e); + //console.log(e.target.dataset.id); + + const check = window.confirm("이 인원의 회원 승인을 하시겠습니까?") + console.log(check); + if(check){ + const id = e.target.dataset.id + permissionMember(id) + } + + + } + + const handleReject = (e) => { + //console.log(e); + //console.log(e.target.dataset.id); + const check = window.confirm("이 인원의 회원 승인을 거절하시겠습니까?") + console.log(check); + if(check){ + const id = e.target.dataset.id + rejectMember(id) + } + } + + + + if(props.data[0] !== undefined && props.data[0].member){ + postdata = props.data.map((data)=> + + + {data.member.id} + {data.member.grade} + {data.member.studentId} + {data.member.phone} + {data.member.name} + {printRole(data.member.roles)} + {data.member.academicStatus} + {data.member.gender} + {(props.type === "회원 가입 승인 및 거절") ? + <> + + + + : + null + } + + + + + ) + } + + return ( + <> + {( props.data[0] !== undefined && props.data[0].member)? + postdata + : + null + } + + ); +} + +export default React.memo(connect(mapStateToProps,mapDispatchToProps)(PostMemberPermissionBar)); \ No newline at end of file From 63d9b92d69157ec195aca2e53d9c7c6b31d9fbc7 Mon Sep 17 00:00:00 2001 From: seung Date: Wed, 16 Mar 2022 21:12:44 +0900 Subject: [PATCH 04/19] =?UTF-8?q?Fix:=20=EC=9E=98=EB=AA=BB=20=EC=B0=B8?= =?UTF-8?q?=EC=A1=B0=EB=90=9C=20=EA=B2=BD=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/screens/Admin/Operator.js | 7 ++----- src/components/screens/Admin/PostGroupPermissionBar.js | 8 +++----- src/components/screens/Admin/PostMemberExpulsionBar.js | 2 +- src/components/screens/Admin/PostMemberPermissionBar.js | 4 ++-- 4 files changed, 8 insertions(+), 13 deletions(-) diff --git a/src/components/screens/Admin/Operator.js b/src/components/screens/Admin/Operator.js index 2370c06e..7df9c66c 100644 --- a/src/components/screens/Admin/Operator.js +++ b/src/components/screens/Admin/Operator.js @@ -16,6 +16,8 @@ import { actionCreators } from "./../../../store"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faSearch } from "@fortawesome/free-solid-svg-icons"; import img from './../../../images/Polygon.jpg' +import PostGroupPermissionBar from "./PostGroupPermissionBar" +import PostMemberPermissionBar from "./PostMemberPermissionBar" const Number = styled.div` width: 40px; @@ -1092,11 +1094,6 @@ function Operator(props) { null } - {(props.PageReducer.boardId === "회원 강제 탈퇴" && posts !== [])? - - : - null - } {(props.PageReducer.boardId === "회장 위임" && posts !== []) ? diff --git a/src/components/screens/Admin/PostGroupPermissionBar.js b/src/components/screens/Admin/PostGroupPermissionBar.js index 5439039b..dc2787fa 100644 --- a/src/components/screens/Admin/PostGroupPermissionBar.js +++ b/src/components/screens/Admin/PostGroupPermissionBar.js @@ -1,12 +1,10 @@ import styled from "styled-components"; import * as React from "react" -import {PostInforBar,PostCotent,Grade,StudentId,PhoneNumber,Name,PostRole,PostAttendance,PostGender,PostNumber,CheckBtn as Btn} from "./BoardElement" +import {PostInforBar,PostCotent,Grade,StudentId,PhoneNumber,Name,PostRole,PostAttendance,PostGender,PostNumber,CheckBtn as Btn} from "./../../shared/BoardElement" import axios from "axios"; import { connect } from "react-redux"; -import { actionCreators } from "../../store"; -import PostGroupPermissionBar from "../../shared/PostGroupPermissionBar"; -import PostMemberExpulsionBar from "./PostMemberExpulsionBar"; -import PostMemberPermissionBar from "./PostMemberPermissionBar"; +import { actionCreators } from "../../../store"; + export const CheckBtn = styled.div` diff --git a/src/components/screens/Admin/PostMemberExpulsionBar.js b/src/components/screens/Admin/PostMemberExpulsionBar.js index a0928350..274fdd1e 100644 --- a/src/components/screens/Admin/PostMemberExpulsionBar.js +++ b/src/components/screens/Admin/PostMemberExpulsionBar.js @@ -3,7 +3,7 @@ import * as React from "react" import {PostInforBar,PostCotent,Grade,StudentId,PhoneNumber,Name,PostRole,PostAttendance,PostGender,PostNumber,CheckBtn} from "./BoardElement" import axios from "axios"; import { connect } from "react-redux"; -import { actionCreators } from "../../store"; +import { actionCreators } from "../../../store"; const printRole = (value) => { if(value.includes("ROLE_CLUB_PRESIDENT")){ diff --git a/src/components/screens/Admin/PostMemberPermissionBar.js b/src/components/screens/Admin/PostMemberPermissionBar.js index 70bc6160..5fdc4115 100644 --- a/src/components/screens/Admin/PostMemberPermissionBar.js +++ b/src/components/screens/Admin/PostMemberPermissionBar.js @@ -1,9 +1,9 @@ import styled from "styled-components"; import * as React from "react" -import {PostInforBar,PostCotent,Grade,StudentId,PhoneNumber,Name,PostRole,PostAttendance,PostGender,PostNumber,SmallCheckBtn} from "./BoardElement" +import {PostInforBar,PostCotent,Grade,StudentId,PhoneNumber,Name,PostRole,PostAttendance,PostGender,PostNumber,SmallCheckBtn} from "./../../shared/BoardElement" import axios from "axios"; import { connect } from "react-redux"; -import { actionCreators } from "../../store"; +import { actionCreators } from "../../../store"; const printRole = (value) => { if(value.includes("ROLE_CLUB_PRESIDENT")){ From d7ce4e1a237b622ff68153ab762e3fa2adbbb24d Mon Sep 17 00:00:00 2001 From: seung Date: Wed, 16 Mar 2022 21:21:04 +0900 Subject: [PATCH 05/19] =?UTF-8?q?fix:=20=EC=82=AC=EC=9D=B4=EB=93=9C?= =?UTF-8?q?=EB=B0=94=20=EC=A1=B0=ED=9A=8C=20=EC=97=90=EB=9F=AC=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/screens/Admin/Operator.js | 338 +++++++++--------- src/components/screens/Admin/PostMemberBar.js | 5 +- 2 files changed, 172 insertions(+), 171 deletions(-) diff --git a/src/components/screens/Admin/Operator.js b/src/components/screens/Admin/Operator.js index 7df9c66c..d84fa111 100644 --- a/src/components/screens/Admin/Operator.js +++ b/src/components/screens/Admin/Operator.js @@ -602,179 +602,179 @@ function Operator(props) { React.useEffect(()=>{ - const PageReducer = props.PageReducer - console.log("props 값 변환"); - console.log("props 작동!!!"); - //console.log(props); - if(SubCategory === undefined){ // 네비바에서 이동해옴.,, - const roles = props.userReducer.roles - const AllLeader = (roles.includes("ROLE_GROUP_PRESIDENT")&&roles.includes("ROLE_CLUB_PRESIDENT")) // 동아리 회장이자, 소모임 회장 - const ClubLeaderGroupExecutive = (roles.includes("ROLE_CLUB_PRESIDENT")&&roles.includes("ROLE_GROUP_EXECUTIVE")) // 동아리 회장, 소모임 임원 - const ClubLeader = props.userReducer.roles.includes("ROLE_CLUB_PRESIDENT") // 동아리 회장 - const ClubExecutiveGroupLeader = (roles.includes("ROLE_GROUP_PRESIDENT")&&roles.includes("ROLE_CLUB_EXECUTIVE")) // 동아리 임원, 소모임 회장 - const GroupLeader = props.userReducer.roles.includes("ROLE_GROUP_PRESIDENT") // 소모임 회장 - const ClubExecutiveGroupExecutive = (roles.includes("ROLE_GROUP_EXECUTIVE")&&roles.includes("ROLE_CLUB_EXECUTIVE")) // 동아리 임원, 소모임 임원 - const ClubExecutive = props.userReducer.roles.includes("ROLE_CLUB_EXECUTIVE") // 동아리 임원 - const GroupExecutive = props.userReducer.roles.includes("ROLE_GROUP_EXECUTIVE") // 소모임 인원 - - console.log(ClubExecutiveGroupExecutive); - const category = getAuthority(AllLeader,ClubLeaderGroupExecutive,ClubLeader,ClubExecutiveGroupLeader,GroupLeader,ClubExecutiveGroupExecutive,ClubExecutive,GroupExecutive) - console.log(AllLeader,ClubLeaderGroupExecutive,ClubLeader,ClubExecutiveGroupLeader,GroupLeader,ClubExecutiveGroupExecutive,ClubExecutive,GroupExecutive); - console.log(category); - axios.get(`/members/groups`,{ - }) - .catch(function (error) { - console.log(error.toJSON()); - }) - .then(function (res) { - //console.log(res.data.data); - setGroupList(res.data.data) - }) - - const userReducer = props.userReducer; - - let groupInfor = userReducer.group.find(item => (item.role === "회장")) - let groupId = "" - if(groupInfor){ - console.log("회장일때!"); - console.log(groupInfor); - setGroupId(groupInfor.id) - setSubScrrenTitle(groupInfor.name) - groupId = groupInfor.id - console.log(groupId); - } - else if(groupInfor = userReducer.group.find(item => (item.role === "임원"))){ - groupId = groupInfor.id - console.log("임원일때!"); - console.log(groupInfor); - setGroupId(groupInfor.id) - setSubScrrenTitle(groupInfor.name) - } - else{ - groupId = 0 - setGroupId(-1) - setSubScrrenTitle("error") - } - - + const PageReducer = props.PageReducer + console.log("props 값 변환"); + console.log("props 작동!!!"); + //console.log(props); + if(SubCategory === undefined){ // 네비바에서 이동해옴.,, + const roles = props.userReducer.roles + const AllLeader = (roles.includes("ROLE_GROUP_PRESIDENT")&&roles.includes("ROLE_CLUB_PRESIDENT")) // 동아리 회장이자, 소모임 회장 + const ClubLeaderGroupExecutive = (roles.includes("ROLE_CLUB_PRESIDENT")&&roles.includes("ROLE_GROUP_EXECUTIVE")) // 동아리 회장, 소모임 임원 + const ClubLeader = props.userReducer.roles.includes("ROLE_CLUB_PRESIDENT") // 동아리 회장 + const ClubExecutiveGroupLeader = (roles.includes("ROLE_GROUP_PRESIDENT")&&roles.includes("ROLE_CLUB_EXECUTIVE")) // 동아리 임원, 소모임 회장 + const GroupLeader = props.userReducer.roles.includes("ROLE_GROUP_PRESIDENT") // 소모임 회장 + const ClubExecutiveGroupExecutive = (roles.includes("ROLE_GROUP_EXECUTIVE")&&roles.includes("ROLE_CLUB_EXECUTIVE")) // 동아리 임원, 소모임 임원 + const ClubExecutive = props.userReducer.roles.includes("ROLE_CLUB_EXECUTIVE") // 동아리 임원 + const GroupExecutive = props.userReducer.roles.includes("ROLE_GROUP_EXECUTIVE") // 소모임 인원 + + console.log(ClubExecutiveGroupExecutive); + const category = getAuthority(AllLeader,ClubLeaderGroupExecutive,ClubLeader,ClubExecutiveGroupLeader,GroupLeader,ClubExecutiveGroupExecutive,ClubExecutive,GroupExecutive) + console.log(AllLeader,ClubLeaderGroupExecutive,ClubLeader,ClubExecutiveGroupLeader,GroupLeader,ClubExecutiveGroupExecutive,ClubExecutive,GroupExecutive); + console.log(category); + axios.get(`/members/groups`,{ + }) + .catch(function (error) { + console.log(error.toJSON()); + }) + .then(function (res) { + //console.log(res.data.data); + setGroupList(res.data.data) + }) + + const userReducer = props.userReducer; - if(category.find(item => item.boardName === "회원 목록 조회") !== undefined){ // 회원 목록 조회 즉 동아리 회장이거나 임원일때 - axios.get(`/club/executives/members?direction=${"ASC"}&page=${0}&size=19&type=${"ID"}`,{ - }) - .catch(function (error) { - console.log(error.toJSON()); - }) - .then(function (res) { - console.log(res); - settotalPage(res.data.data.totalPages) - setPosts(res.data.data.content) - setTarget("회원 목록 조회") - setPage(PageReducer.page) - //setSelected(PageReducer.selected) - setSubCategory(category) - - }); - } - else if(category.find(item => item.boardName === "그룹 회원 목록 조회")){ // 그룹원 목록 조회 즉 소모임 회장이거나 임원일때 - - axios.get(`/groups/executives/members?direction=${"ASC"}&groupId=${groupId}&page=1&role=MEMBER&size=19&type=ID`,{ - }) - .catch(function (error) { - console.log(error.toJSON()); - }) - .then(function (res) { - console.log(res); + let groupInfor = userReducer.group.find(item => (item.role === "회장")) + let groupId = "" + if(groupInfor){ + console.log("회장일때!"); + console.log(groupInfor); + setGroupId(groupInfor.id) + setSubScrrenTitle(groupInfor.name) + groupId = groupInfor.id + console.log(groupId); + } + else if(groupInfor = userReducer.group.find(item => (item.role === "임원"))){ + groupId = groupInfor.id + console.log("임원일때!"); + console.log(groupInfor); + setGroupId(groupInfor.id) + setSubScrrenTitle(groupInfor.name) + } + else{ + groupId = 0 + setGroupId(-1) + setSubScrrenTitle("error") + } + + + + if(category.find(item => item.boardName === "회원 목록 조회") !== undefined){ // 회원 목록 조회 즉 동아리 회장이거나 임원일때 + axios.get(`/club/executives/members?direction=${"ASC"}&page=${0}&size=19&type=${"ID"}`,{ + }) + .catch(function (error) { + console.log(error.toJSON()); + }) + .then(function (res) { + console.log(res); settotalPage(res.data.data.totalPages) setPosts(res.data.data.content) - setTarget("그룹 회원 목록 조회") + setTarget("회원 목록 조회") setPage(PageReducer.page) - console.log("최초시행 작동!"); - setSubCategory(category) - }); - } - - } - else{ - if(PageReducer.boardId === "회원 목록 조회" || PageReducer.boardId === "회원 강제 탈퇴" || (PageReducer.boardId===""&&target === "회원 목록 조회") || PageReducer.boardId === "회장 위임" || PageReducer.boardId === "그룹 회장 권한 부여"){ - if(PageReducer.isSearching[0] === true){ - console.log("검색로직 작동!"); - //console.log(PageReducer); - handleSearchFunction(PageReducer.isSearching[1]) - //loadMeberSearchList(discriminationDirection(direction),PageReducer.page,PageReducer.isSearching[1],PageReducer.selected,PageReducer.isSearching[2]) - } - else{ - console.log("hahah"); - loadMemberList(discriminationDirection(direction),PageReducer.page,PageReducer.selected) - } - } - else if(PageReducer.boardId === "회원 가입 승인 및 거절"){ - console.log("회원 가입 승인!!!"); - if(PageReducer.isSearching[0] === true){ - console.log("검색로직 작동!"); - handleMemberPermissionSearchFuntion(PageReducer.isSearching[1]) - } - else{ - loadMemberPermissionList(PageReducer.page) - } - } - else if(PageReducer.boardId === "회원 권한 부여"){ // 추후 load 필요 - if(PageReducer.isSearching[0] === true){ - console.log("회원 권한 부여 검색로직 작동!"); - //console.log(PageReducer); - handleSearchFunction(PageReducer.isSearching[1]) - //loadMeberSearchList(discriminationDirection(direction),PageReducer.page,PageReducer.isSearching[1],PageReducer.selected,PageReducer.isSearching[2]) - } - } - else if(PageReducer.boardId === "운영진 권한 부여 및 회원 권한 해제"){ // 추후 load 변경 - console.log("운영진 권한 부여 및 회원 권한 해제 로직 작동!"); - loadMemberSearchAuthoritiesList(discriminationDirection(direction),"MEMBER",PageReducer.page,PageReducer.selected) - }//loadMemberSearchAuthoritiesList - else if(PageReducer.boardId === "운영진 권한 해제"){ // 추후 load 변경 - console.log("운영진 권한 해제 로직 작동!"); - loadMemberSearchAuthoritiesList(discriminationDirection(direction),"EXECUTIVE",PageReducer.page,PageReducer.selected) - } - else if(PageReducer.boardId ==="그룹 회원 목록 조회" || target === "그룹 회원 목록 조회"){ - - if(PageReducer.isSearching[0] === true){ - console.log("그룹 회원 목록 조회의 검색로직 작동!"); - handleGroupSearchFunction(PageReducer.isSearching[1]) - } - else{ - loadGroupMemberList(discriminationDirection(direction),groupId,PageReducer.page,"MEMBER",PageReducer.selected) - } - } - else if(PageReducer.boardId === "그룹 가입 승인"){ - if(PageReducer.isSearching[0] === true){ - console.log("그룹 가입 승인의 검색로직 작동!"); - handleGroupSearchFunction(PageReducer.isSearching[1]) - } - else{ - loadGroupMemberList(discriminationDirection(direction),groupId,PageReducer.page,"APPLICANT",PageReducer.selected) - } - } - else if(PageReducer.boardId === "그룹 강제 탈퇴" || PageReducer.boardId === "그룹 임원 권한 부여"){ - - if(PageReducer.isSearching[0] === true){ - console.log("검색로직 작동!"); - handleGroupSearchFunction(PageReducer.isSearching[1]) - } - else{ - loadGroupMemberList(discriminationDirection(direction),groupId,PageReducer.page,"MEMBER",PageReducer.selected) - } - } - else if(PageReducer.boardId === "그룹 회장 위임 및 임원 권한 해제"){ - - if(PageReducer.isSearching[0] === true){ - console.log("검색로직 작동!"); - handleGroupSearchFunction(PageReducer.isSearching[1]) - } - else{ - loadGroupMemberList(discriminationDirection(direction),groupId,PageReducer.page,"EXECUTIVE",PageReducer.selected) - } - } - } - - },[props]) + //setSelected(PageReducer.selected) + setSubCategory(category) + + }); + } + else if(category.find(item => item.boardName === "그룹 회원 목록 조회")){ // 그룹원 목록 조회 즉 소모임 회장이거나 임원일때 + + axios.get(`/groups/executives/members?direction=${"ASC"}&groupId=${groupId}&page=1&role=MEMBER&size=19&type=ID`,{ + }) + .catch(function (error) { + console.log(error.toJSON()); + }) + .then(function (res) { + console.log(res); + settotalPage(res.data.data.totalPages) + setPosts(res.data.data.content) + setTarget("그룹 회원 목록 조회") + setPage(PageReducer.page) + console.log("최초시행 작동!"); + setSubCategory(category) + }); + } + + } + else{ + if(PageReducer.boardId === "회원 목록 조회" || PageReducer.boardId === "회원 강제 탈퇴" || (PageReducer.boardId===""&&target === "회원 목록 조회") || PageReducer.boardId === "회장 위임" || PageReducer.boardId === "그룹 회장 권한 부여"){ + if(PageReducer.isSearching[0] === true){ + console.log("검색로직 작동!"); + //console.log(PageReducer); + handleSearchFunction(PageReducer.isSearching[1]) + //loadMeberSearchList(discriminationDirection(direction),PageReducer.page,PageReducer.isSearching[1],PageReducer.selected,PageReducer.isSearching[2]) + } + else{ + console.log("hahah"); + loadMemberList(discriminationDirection(direction),PageReducer.page,PageReducer.selected) + } + } + else if(PageReducer.boardId === "회원 가입 승인 및 거절"){ + console.log("회원 가입 승인!!!"); + if(PageReducer.isSearching[0] === true){ + console.log("검색로직 작동!"); + handleMemberPermissionSearchFuntion(PageReducer.isSearching[1]) + } + else{ + loadMemberPermissionList(PageReducer.page) + } + } + else if(PageReducer.boardId === "회원 권한 부여"){ // 추후 load 필요 + if(PageReducer.isSearching[0] === true){ + console.log("회원 권한 부여 검색로직 작동!"); + //console.log(PageReducer); + handleSearchFunction(PageReducer.isSearching[1]) + //loadMeberSearchList(discriminationDirection(direction),PageReducer.page,PageReducer.isSearching[1],PageReducer.selected,PageReducer.isSearching[2]) + } + } + else if(PageReducer.boardId === "운영진 권한 부여 및 회원 권한 해제"){ // 추후 load 변경 + console.log("운영진 권한 부여 및 회원 권한 해제 로직 작동!"); + loadMemberSearchAuthoritiesList(discriminationDirection(direction),"MEMBER",PageReducer.page,PageReducer.selected) + }//loadMemberSearchAuthoritiesList + else if(PageReducer.boardId === "운영진 권한 해제"){ // 추후 load 변경 + console.log("운영진 권한 해제 로직 작동!"); + loadMemberSearchAuthoritiesList(discriminationDirection(direction),"EXECUTIVE",PageReducer.page,PageReducer.selected) + } + else if(PageReducer.boardId ==="그룹 회원 목록 조회" || target === "그룹 회원 목록 조회"){ + + if(PageReducer.isSearching[0] === true){ + console.log("그룹 회원 목록 조회의 검색로직 작동!"); + handleGroupSearchFunction(PageReducer.isSearching[1]) + } + else{ + loadGroupMemberList(discriminationDirection(direction),groupId,PageReducer.page,"MEMBER",PageReducer.selected) + } + } + else if(PageReducer.boardId === "그룹 가입 승인"){ + if(PageReducer.isSearching[0] === true){ + console.log("그룹 가입 승인의 검색로직 작동!"); + handleGroupSearchFunction(PageReducer.isSearching[1]) + } + else{ + loadGroupMemberList(discriminationDirection(direction),groupId,PageReducer.page,"APPLICANT",PageReducer.selected) + } + } + else if(PageReducer.boardId === "그룹 강제 탈퇴" || PageReducer.boardId === "그룹 임원 권한 부여"){ + + if(PageReducer.isSearching[0] === true){ + console.log("검색로직 작동!"); + handleGroupSearchFunction(PageReducer.isSearching[1]) + } + else{ + loadGroupMemberList(discriminationDirection(direction),groupId,PageReducer.page,"MEMBER",PageReducer.selected) + } + } + else if(PageReducer.boardId === "그룹 회장 위임 및 임원 권한 해제"){ + + if(PageReducer.isSearching[0] === true){ + console.log("검색로직 작동!"); + handleGroupSearchFunction(PageReducer.isSearching[1]) + } + else{ + loadGroupMemberList(discriminationDirection(direction),groupId,PageReducer.page,"EXECUTIVE",PageReducer.selected) + } + } + } + + },[props]) React.useEffect(()=>{ if(SubCategory !== undefined){ diff --git a/src/components/screens/Admin/PostMemberBar.js b/src/components/screens/Admin/PostMemberBar.js index a86ef604..33f9c41a 100644 --- a/src/components/screens/Admin/PostMemberBar.js +++ b/src/components/screens/Admin/PostMemberBar.js @@ -73,7 +73,8 @@ function PostMemberBar(props) { // return ( <> - + {postdata} + {/* {1} {1} @@ -98,7 +99,7 @@ function PostMemberBar(props) { // {"남"} - + */} ); } From ea84177195b9b9c9529a72c3314f1972343806e6 Mon Sep 17 00:00:00 2001 From: seung Date: Wed, 16 Mar 2022 21:48:01 +0900 Subject: [PATCH 06/19] =?UTF-8?q?Feat:=20operator.js=20=EC=A4=91=EB=B3=B5?= =?UTF-8?q?=EB=90=98=EB=8A=94=20=EA=B8=B0=EB=8A=A5=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/screens/Admin/Operator.js | 16 +++++----------- src/components/screens/Admin/PostMemberBar.js | 8 +++++++- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/components/screens/Admin/Operator.js b/src/components/screens/Admin/Operator.js index d84fa111..3953ed77 100644 --- a/src/components/screens/Admin/Operator.js +++ b/src/components/screens/Admin/Operator.js @@ -31,12 +31,7 @@ cursor: ${(props) => (props.post ? "none" : "pointer")}; const subCategory = [ { boardName: "회원 목록 조회" }, { boardName: "회원 가입 승인 및 거절" }, - { boardName: "회원 권한 부여" }, - { boardName: "운영진 권한 부여 및 회원 권한 해제"}, - { boardName: "운영진 권한 해제"}, { boardName: "그룹 회장 권한 부여"}, - { boardName: "회원 강제 탈퇴"}, - { boardName: "회장 위임"}, { boardName: "전체 동아리원 초기화"}, { boardName: "게시판 추가 및 삭제"}, { boardName: "그룹 회원 목록 조회"}, @@ -46,8 +41,6 @@ const subCategory = [ { boardName: "그룹 회장 위임 및 임원 권한 해제"}, ]; - - const getAuthority = (AllLeader,ClubLeaderGroupExecutive,ClubLeader,ClubExecutiveGroupLeader,GroupLeader,ClubExecutiveGroupExecutive,ClubExecutive,GroupExecutive) => { if(AllLeader){ return subCategory @@ -59,13 +52,13 @@ else if(ClubLeader){ return subCategory.filter(item => (item.boardName !== "그룹 가입 승인")&&(item.boardName !== "그룹 강제 탈퇴")&&(item.boardName !== "그룹 임원 권한 부여")&&(item.boardName !== "그룹 회장 위임 및 임원 권한 해제")&&(item.boardName !== "그룹 회원 목록 조회")) } else if(ClubExecutiveGroupLeader){ - return subCategory.filter(item => (item.boardName !== "전체 동아리원 권한 초기화")&&(item.boardName !== "회장 위임")&&(item.boardName !== "회원 권한 부여")&&(item.boardName !== "그룹 회장 위임 및 임원 권한 해제")&&(item.boardName !== "회원 강제 탈퇴")&&(item.boardName !== "운영진 권한 부여 및 회원 권한 해제")) + return subCategory.filter(item => (item.boardName !== "전체 동아리원 권한 초기화")&&(item.boardName !== "그룹 회장 위임 및 임원 권한 해제")) } else if(GroupLeader){ - return subCategory.filter(item => (item.boardName !== "회원 목록 조회")&&(item.boardName !== "회원 가입 승인 및 거절")&&(item.boardName !== "회원 권한 부여")&&(item.boardName !== "운영진 권한 부여 및 회원 권한 해제")&&(item.boardName !== "운영진 권한 해제")&&(item.boardName !== "그룹 회장 권한 부여")&&(item.boardName !== "회원 강제 탈퇴")&&(item.boardName !== "회장 위임")&&(item.boardName !== "전체 동아리원 초기화")&&(item.boardName !== "게시판 추가 및 삭제")) + return subCategory.filter(item => (item.boardName !== "회원 목록 조회")&&(item.boardName !== "회원 가입 승인 및 거절")&&(item.boardName !== "그룹 회장 권한 부여")&&(item.boardName !== "전체 동아리원 초기화")&&(item.boardName !== "게시판 추가 및 삭제")) } else if(ClubExecutiveGroupExecutive){ - return subCategory.filter(item => (item.boardName !== "회원 권한 부여")&&(item.boardName !== "운영진 권한 부여 및 회원 권한 해제")&&(item.boardName !== "회원 강제 탈퇴")&&(item.boardName !== "회장 위임")&&(item.boardName !== "전체 동아리원 초기화")&&(item.boardName !== "운영진 권한 해제")&&(item.boardName !== "그룹 회장 위임 및 임원 권한 해제")&&(item.boardName !== "그룹 임원 권한 부여")&&(item.boardName !== "그룹 강제 탈퇴")) + return subCategory.filter(item => (item.boardName !== "전체 동아리원 초기화")&&(item.boardName !== "그룹 회장 위임 및 임원 권한 해제")&&(item.boardName !== "그룹 임원 권한 부여")&&(item.boardName !== "그룹 강제 탈퇴")) } else if(ClubExecutive){ return subCategory.filter(item => (item.boardName === "회원 목록 조회")||(item.boardName === "회원 가입 승인 및 거절")||(item.boardName === "그룹 회장 권한 부여")||(item.boardName !== "게시판 추가 및 삭제")) @@ -107,7 +100,7 @@ function Operator(props) { const [target, setTarget] = React.useState("회원 목록 조회"); const [page, setPage] = React.useState(0); - const [SubCategory,setSubCategory] =React.useState([{boardName: "회원 목록 조회"}]); + const [SubCategory,setSubCategory] =React.useState(undefined); const [posts, setPosts] = React.useState([]); // API로 받은 값 @@ -608,6 +601,7 @@ function Operator(props) { //console.log(props); if(SubCategory === undefined){ // 네비바에서 이동해옴.,, const roles = props.userReducer.roles + const AllLeader = (roles.includes("ROLE_GROUP_PRESIDENT")&&roles.includes("ROLE_CLUB_PRESIDENT")) // 동아리 회장이자, 소모임 회장 const ClubLeaderGroupExecutive = (roles.includes("ROLE_CLUB_PRESIDENT")&&roles.includes("ROLE_GROUP_EXECUTIVE")) // 동아리 회장, 소모임 임원 const ClubLeader = props.userReducer.roles.includes("ROLE_CLUB_PRESIDENT") // 동아리 회장 diff --git a/src/components/screens/Admin/PostMemberBar.js b/src/components/screens/Admin/PostMemberBar.js index 33f9c41a..dae8ad5e 100644 --- a/src/components/screens/Admin/PostMemberBar.js +++ b/src/components/screens/Admin/PostMemberBar.js @@ -45,7 +45,8 @@ function mapStateToProps(state) { function PostMemberBar(props) { // const [show, setShow] = React.useState(-1); - + const roles = props.userReducer.roles + const ClubLeader =roles.includes("ROLE_CLUB_PRESIDENT") // 동아리 회장 //console.log(props); let postdata = ""; if (props.groupList) { @@ -64,7 +65,12 @@ function PostMemberBar(props) { // {printRole(data.roles)} {data.academicStatus} {data.gender} + {(ClubLeader === true)? + : + null + } + ) From 7fc66653eb95c4ae3b68359571d124c6888dcfce Mon Sep 17 00:00:00 2001 From: seung Date: Wed, 16 Mar 2022 21:51:10 +0900 Subject: [PATCH 07/19] =?UTF-8?q?Feat:=20=EB=AA=A8=EB=8B=AC=EC=B0=BD=20?= =?UTF-8?q?=ED=9A=8C=EC=9B=90=EC=A7=81=EC=B1=85=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/screens/Admin/Modal.js | 29 ++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/components/screens/Admin/Modal.js b/src/components/screens/Admin/Modal.js index 42c3e26c..03682754 100644 --- a/src/components/screens/Admin/Modal.js +++ b/src/components/screens/Admin/Modal.js @@ -4,6 +4,33 @@ import { connect } from "react-redux"; import { actionCreators } from "../../../store"; import axios from "axios"; +const printRole = (value) => { + if(value.includes("ROLE_CLUB_PRESIDENT")){ + return "회장" + } + else if(value.includes("ROLE_GROUP_PRESIDENT")){ + return "소모임장" + } + else if(value.includes("ROLE_CLUB_EXECUTIVE")){ + return "동아리 운영진" + } + else if(value.includes("ROLE_GROUP_EXECUTIVE")){ + return "소모임 운영진" + } + else if(value.includes("ROLE_MEMBER")){ + return "일반" + } + else if(value.includes("ROLE_GUEST")){ + return "게스트" + } + else if(value.includes("ROLE_BAN")){ + return "밴" + } + else if(value.includes("ROLE_RESIGN")){ + return "사직" + } +} + function mapDispatchToProps(dispatch){ return{ setAll: (boardId,page,isSearching,selected,boardCategoryName) => dispatch(actionCreators.setAll(boardId,page,isSearching,selected,boardCategoryName)), @@ -188,7 +215,7 @@ function Modal(props){ 회원직책 - {modalInfor.role} + {printRole(modalInfor.roles)} From ff0cacab74f2b451cc430b383a04032a7efa29c5 Mon Sep 17 00:00:00 2001 From: seung Date: Thu, 17 Mar 2022 01:29:29 +0900 Subject: [PATCH 08/19] =?UTF-8?q?Feat:=20=EC=86=8C=EB=AA=A8=EC=9E=84=20?= =?UTF-8?q?=ED=9A=8C=EC=9E=A5=20=EA=B6=8C=ED=95=9C=20=EB=B6=80=EC=97=AC=20?= =?UTF-8?q?=EB=AA=A8=EB=8B=AC=EC=B0=BD=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../screens/Admin/ModalSelectionLeader.js | 145 ++++++++++++++++++ src/components/screens/Admin/Operator.js | 94 ++++-------- src/components/screens/Admin/OptionBtn.js | 10 -- .../screens/Admin/OptionSelectionLeaderBtn.js | 59 +++++++ src/components/screens/Admin/PostMemberBar.js | 34 +--- .../screens/Admin/PostMemberPermissionBar.js | 4 +- 6 files changed, 242 insertions(+), 104 deletions(-) create mode 100644 src/components/screens/Admin/ModalSelectionLeader.js create mode 100644 src/components/screens/Admin/OptionSelectionLeaderBtn.js diff --git a/src/components/screens/Admin/ModalSelectionLeader.js b/src/components/screens/Admin/ModalSelectionLeader.js new file mode 100644 index 00000000..bd94b8e0 --- /dev/null +++ b/src/components/screens/Admin/ModalSelectionLeader.js @@ -0,0 +1,145 @@ +import {Background,ModalContainer,Title,Infor,InforTitle,Table,Index,Value,Select,BtnSection,BtnBox,Btn,ModalCotent,AlertBlock} from "./ModalElement" +import * as React from "react" +import { connect } from "react-redux"; +import { actionCreators } from "../../../store"; +import axios from "axios"; + +const printRole = (value) => { + if(value.includes("ROLE_CLUB_PRESIDENT")){ + return "회장" + } + else if(value.includes("ROLE_GROUP_PRESIDENT")){ + return "소모임장" + } + else if(value.includes("ROLE_CLUB_EXECUTIVE")){ + return "동아리 운영진" + } + else if(value.includes("ROLE_GROUP_EXECUTIVE")){ + return "소모임 운영진" + } + else if(value.includes("ROLE_MEMBER")){ + return "일반" + } + else if(value.includes("ROLE_GUEST")){ + return "게스트" + } + else if(value.includes("ROLE_BAN")){ + return "밴" + } + else if(value.includes("ROLE_RESIGN")){ + return "사직" + } +} + +function mapDispatchToProps(dispatch){ + return{ + setAll: (boardId,page,isSearching,selected,boardCategoryName) => dispatch(actionCreators.setAll(boardId,page,isSearching,selected,boardCategoryName)), + } + } + + function mapStateToProps(state) { + return state; + } + +function Modal(props){ + const {showModal, setShowModal,setShow, modalInfor, groupInfor} = props; + + console.log(props); + + const [select,setSelect] = React.useState(groupInfor[0].id); + const [confirm,setConfirm] = React.useState(false); + const [text, setText] = React.useState(""); + + const showText = ( name = "", select = "") => { + const groupName = groupInfor.find((item) => Number(item.id) === Number(select)).name; + console.log(groupName); + const text = `정말 ${name}님에게 [${groupName}] 소모임장 권한을 부여하시겠습니까?` + return text; + } + + const closeModal = () => { + setShowModal(false); + setShow(-1); + } + + const closeConfirm = () => { + setConfirm(false) + } + + const handleConfirm = () => { + setConfirm(true); + setText(showText(modalInfor.name,select)); + } + + const empowerGroupLeader = (memberId,groupId) => { // 소모임장 권한 부여 + axios.post(`/club/executives/groups?groupId=${groupId}&memberId=${memberId}`,{},{ + }) + .then(function(res){ + const PageReducer = props.PageReducer + console.log(res); + closeModal(); + props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) + }) + } + + const submit = () => { + empowerGroupLeader(modalInfor.id, select) + } + + const handleSelect = (e) => { + console.log(e.target.value); + setSelect(e.target.value) + } + + return( + <> + {(showModal === true)? + + + {(confirm === false)? + + 소모임 회장 권한 부여 + + + + + + + 확인 + 취소 + + + + : + + +
+ {text} +
+ +
+ + + 확인 + 취소 + + +
+ } + + +
+
+ : + null + } + ) +} + +export default (connect(mapStateToProps,mapDispatchToProps)(Modal)); \ No newline at end of file diff --git a/src/components/screens/Admin/Operator.js b/src/components/screens/Admin/Operator.js index 3953ed77..28965eb8 100644 --- a/src/components/screens/Admin/Operator.js +++ b/src/components/screens/Admin/Operator.js @@ -28,12 +28,19 @@ word-spacing: -3px; cursor: ${(props) => (props.post ? "none" : "pointer")}; ` +const MemberList = "회원 목록 조회"; +const MemberApproval = "회원 가입 승인 및 거절" +const GroupPresident = "소모임 회장 권한 부여" +const MemberClear = "전체 동아리원 초기화" +const EditBoard = "게시판 추가 및 삭제"; + + const subCategory = [ - { boardName: "회원 목록 조회" }, - { boardName: "회원 가입 승인 및 거절" }, - { boardName: "그룹 회장 권한 부여"}, - { boardName: "전체 동아리원 초기화"}, - { boardName: "게시판 추가 및 삭제"}, + { boardName: MemberList }, + { boardName: MemberApproval }, + { boardName: GroupPresident}, + { boardName: MemberClear}, + { boardName: EditBoard}, { boardName: "그룹 회원 목록 조회"}, { boardName: "그룹 가입 승인" }, { boardName: "그룹 강제 탈퇴"}, @@ -52,16 +59,16 @@ else if(ClubLeader){ return subCategory.filter(item => (item.boardName !== "그룹 가입 승인")&&(item.boardName !== "그룹 강제 탈퇴")&&(item.boardName !== "그룹 임원 권한 부여")&&(item.boardName !== "그룹 회장 위임 및 임원 권한 해제")&&(item.boardName !== "그룹 회원 목록 조회")) } else if(ClubExecutiveGroupLeader){ - return subCategory.filter(item => (item.boardName !== "전체 동아리원 권한 초기화")&&(item.boardName !== "그룹 회장 위임 및 임원 권한 해제")) + return subCategory.filter(item => (item.boardName !== MemberClear)&&(item.boardName !== "그룹 회장 위임 및 임원 권한 해제")) } else if(GroupLeader){ - return subCategory.filter(item => (item.boardName !== "회원 목록 조회")&&(item.boardName !== "회원 가입 승인 및 거절")&&(item.boardName !== "그룹 회장 권한 부여")&&(item.boardName !== "전체 동아리원 초기화")&&(item.boardName !== "게시판 추가 및 삭제")) + return subCategory.filter(item => (item.boardName !== MemberList)&&(item.boardName !== MemberApproval)&&(item.boardName !== GroupPresident)&&(item.boardName !== MemberClear)&&(item.boardName !== EditBoard)) } else if(ClubExecutiveGroupExecutive){ - return subCategory.filter(item => (item.boardName !== "전체 동아리원 초기화")&&(item.boardName !== "그룹 회장 위임 및 임원 권한 해제")&&(item.boardName !== "그룹 임원 권한 부여")&&(item.boardName !== "그룹 강제 탈퇴")) + return subCategory.filter(item => (item.boardName !== MemberClear)&&(item.boardName !== "그룹 회장 위임 및 임원 권한 해제")&&(item.boardName !== "그룹 임원 권한 부여")&&(item.boardName !== "그룹 강제 탈퇴")) } else if(ClubExecutive){ - return subCategory.filter(item => (item.boardName === "회원 목록 조회")||(item.boardName === "회원 가입 승인 및 거절")||(item.boardName === "그룹 회장 권한 부여")||(item.boardName !== "게시판 추가 및 삭제")) + return subCategory.filter(item => (item.boardName === MemberList)||(item.boardName === MemberApproval)||(item.boardName === GroupPresident)||(item.boardName !== EditBoard)) } else if(GroupExecutive){ return subCategory.filter(item => (item.boardName === "그룹 회원 목록 조회")||(item.boardName === "그룹 가입 승인")) @@ -98,7 +105,7 @@ function Operator(props) { //'ROLE_GUEST', 'ROLE_CLUB_EXECUTIVE', 'ROLE_MEMBER' const [load, setLoad] = React.useState(true); - const [target, setTarget] = React.useState("회원 목록 조회"); + const [target, setTarget] = React.useState(MemberList); const [page, setPage] = React.useState(0); const [SubCategory,setSubCategory] =React.useState(undefined); @@ -652,7 +659,7 @@ function Operator(props) { - if(category.find(item => item.boardName === "회원 목록 조회") !== undefined){ // 회원 목록 조회 즉 동아리 회장이거나 임원일때 + if(category.find(item => item.boardName === MemberList) !== undefined){ // 회원 목록 조회 즉 동아리 회장이거나 임원일때 axios.get(`/club/executives/members?direction=${"ASC"}&page=${0}&size=19&type=${"ID"}`,{ }) .catch(function (error) { @@ -662,7 +669,7 @@ function Operator(props) { console.log(res); settotalPage(res.data.data.totalPages) setPosts(res.data.data.content) - setTarget("회원 목록 조회") + setTarget(MemberList) setPage(PageReducer.page) //setSelected(PageReducer.selected) setSubCategory(category) @@ -686,10 +693,10 @@ function Operator(props) { setSubCategory(category) }); } - + } else{ - if(PageReducer.boardId === "회원 목록 조회" || PageReducer.boardId === "회원 강제 탈퇴" || (PageReducer.boardId===""&&target === "회원 목록 조회") || PageReducer.boardId === "회장 위임" || PageReducer.boardId === "그룹 회장 권한 부여"){ + if(PageReducer.boardId === MemberList || (PageReducer.boardId===""&&target === MemberList) || PageReducer.boardId === GroupPresident){ if(PageReducer.isSearching[0] === true){ console.log("검색로직 작동!"); //console.log(PageReducer); @@ -701,7 +708,7 @@ function Operator(props) { loadMemberList(discriminationDirection(direction),PageReducer.page,PageReducer.selected) } } - else if(PageReducer.boardId === "회원 가입 승인 및 거절"){ + else if(PageReducer.boardId === MemberApproval){ console.log("회원 가입 승인!!!"); if(PageReducer.isSearching[0] === true){ console.log("검색로직 작동!"); @@ -711,22 +718,6 @@ function Operator(props) { loadMemberPermissionList(PageReducer.page) } } - else if(PageReducer.boardId === "회원 권한 부여"){ // 추후 load 필요 - if(PageReducer.isSearching[0] === true){ - console.log("회원 권한 부여 검색로직 작동!"); - //console.log(PageReducer); - handleSearchFunction(PageReducer.isSearching[1]) - //loadMeberSearchList(discriminationDirection(direction),PageReducer.page,PageReducer.isSearching[1],PageReducer.selected,PageReducer.isSearching[2]) - } - } - else if(PageReducer.boardId === "운영진 권한 부여 및 회원 권한 해제"){ // 추후 load 변경 - console.log("운영진 권한 부여 및 회원 권한 해제 로직 작동!"); - loadMemberSearchAuthoritiesList(discriminationDirection(direction),"MEMBER",PageReducer.page,PageReducer.selected) - }//loadMemberSearchAuthoritiesList - else if(PageReducer.boardId === "운영진 권한 해제"){ // 추후 load 변경 - console.log("운영진 권한 해제 로직 작동!"); - loadMemberSearchAuthoritiesList(discriminationDirection(direction),"EXECUTIVE",PageReducer.page,PageReducer.selected) - } else if(PageReducer.boardId ==="그룹 회원 목록 조회" || target === "그룹 회원 목록 조회"){ if(PageReducer.isSearching[0] === true){ @@ -978,7 +969,7 @@ function Operator(props) { {target} } - {((target === "회원 목록 조회")||(target === "회원 강제 탈퇴")||(target === "운영진 권한 부여")||(target === "그룹 회장 위임")||(target === "회장 위임")||(target === "그룹 회장 권한 부여")||(target === "회원 권한 부여"))? + {((target === MemberList)||(target === "그룹 회장 위임")||(target === GroupPresident))? @@ -1043,57 +1034,32 @@ function Operator(props) { : {handleSort("Gender")}}>성별 } - {((target !== "회원 목록 조회")||(target !=="그룹 회원 목록 조회")) ? 버튼 : null} + {((target !== MemberList)||(target !=="그룹 회원 목록 조회")) ? 버튼 : null} - {/* */} {(load)? <> - {(target === "회원 목록 조회" && posts !== []) ? + {(target === MemberList && posts !== []) ? : null } - {(props.PageReducer.boardId === "회원 가입 승인 및 거절" && posts !== []) ? - + {(props.PageReducer.boardId === MemberApproval && posts !== []) ? + : null } - {(props.PageReducer.boardId === "회원 권한 부여" && posts !== []) ? - - : - null - } - - {(props.PageReducer.boardId === "운영진 권한 부여 및 회원 권한 해제" && posts !== []) ? - - : - null //운영진 권한 해제 - } - - {(props.PageReducer.boardId === "운영진 권한 해제" && posts !== []) ? - + {(props.PageReducer.boardId === GroupPresident && posts !== []) ? + : null } - {(props.PageReducer.boardId === "그룹 회장 권한 부여" && posts !== []) ? - - : - null - } - - - {(props.PageReducer.boardId === "회장 위임" && posts !== []) ? - - : - null - } {(target === "그룹 회원 목록 조회" && posts !== [] ) ? @@ -1131,7 +1097,7 @@ function Operator(props) { } - {((target === "전체 동아리원 초기화") || (target === "게시판 추가 및 삭제")) ? + {((target === MemberClear) || (target === EditBoard)) ? null : { + if(id === show){ + setShow(-1); + showModal(false) + } + else{ + setShow(id); + showModal(true) + } + + } + + const getGroupList = () => { + axios + .get(`/members/groups`) + .catch(function (error) { + console.log(error); + }) + .then(function (res) { + console.log(res); + setGroupInfor(res.data.data) + }); + } + + React.useEffect(()=>{ + getGroupList(); + },[]) + + + return ( + <> + + + {((show === id) && (showModal==true))? + + : + null} + + + ) +} +export default OptionButton; \ No newline at end of file diff --git a/src/components/screens/Admin/PostMemberBar.js b/src/components/screens/Admin/PostMemberBar.js index dae8ad5e..4c42771b 100644 --- a/src/components/screens/Admin/PostMemberBar.js +++ b/src/components/screens/Admin/PostMemberBar.js @@ -44,6 +44,7 @@ function mapStateToProps(state) { } function PostMemberBar(props) { // + const {type} = props const [show, setShow] = React.useState(-1); const roles = props.userReducer.roles const ClubLeader =roles.includes("ROLE_CLUB_PRESIDENT") // 동아리 회장 @@ -65,11 +66,16 @@ function PostMemberBar(props) { // {printRole(data.roles)} {data.academicStatus} {data.gender} - {(ClubLeader === true)? + + {((ClubLeader === true)&&(type===""))? : null } + {(type === "소모임 회장 권한 부여")? + + : + null} @@ -80,32 +86,6 @@ function PostMemberBar(props) { // return ( <> {postdata} - {/* - - {1} - {1} - {12141595} - {"data.phone"} - {"data.name"} - {printRole(["ROLE_CLUB_PRESIDENT"])} - {"재학"} - {"남"} - - - - - - {1} - {1} - {12141595} - {"data.phone"} - {"data.name"} - {printRole(["ROLE_CLUB_PRESIDENT"])} - {"재학"} - {"남"} - - - */} ); } diff --git a/src/components/screens/Admin/PostMemberPermissionBar.js b/src/components/screens/Admin/PostMemberPermissionBar.js index 5fdc4115..1292435b 100644 --- a/src/components/screens/Admin/PostMemberPermissionBar.js +++ b/src/components/screens/Admin/PostMemberPermissionBar.js @@ -40,7 +40,7 @@ function mapDispatchToProps(dispatch){ function mapStateToProps(state) { return state; - } +} function PostMemberPermissionBar(props){ // console.log(props.data); @@ -73,8 +73,6 @@ function PostMemberPermissionBar(props){ }); } - - const handlePermission = (e) => { console.log(e); //console.log(e.target.dataset.id); From 579f4f9cd27638131e6e5eb55ee00c317b69b371 Mon Sep 17 00:00:00 2001 From: seung Date: Thu, 17 Mar 2022 01:34:56 +0900 Subject: [PATCH 09/19] =?UTF-8?q?Feat:=20import=20=EC=88=98=EC=A0=95=20?= =?UTF-8?q?=EB=B0=8F=20UI=20=EC=86=8C=EB=AA=A8=EC=9E=84=20=ED=9A=8C?= =?UTF-8?q?=EC=9E=A5=20=EA=B6=8C=ED=95=9C=20=EB=B6=80=EC=97=AC=20UI=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../screens/Admin/ModalSelectionLeader.js | 26 ++++++++++++++++++- src/components/screens/Admin/PostMemberBar.js | 3 ++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/components/screens/Admin/ModalSelectionLeader.js b/src/components/screens/Admin/ModalSelectionLeader.js index bd94b8e0..118c63dc 100644 --- a/src/components/screens/Admin/ModalSelectionLeader.js +++ b/src/components/screens/Admin/ModalSelectionLeader.js @@ -99,7 +99,31 @@ function Modal(props){ {(confirm === false)? 소모임 회장 권한 부여 - + + 회원 정보 + + + + 이름 + {modalInfor.name} + + + + + 학번 + {modalInfor.studentId} + + + 학적 + {modalInfor.academicStatus} + + + 회원직책 + {printRole(modalInfor.roles)} + + +
+
+ + + : + null + } + + + + 확인 + 취소 + + +
+ : + + +
+ {text} +
+ +
+ + + 확인 + 취소 + + +
+ } + + + + + : + null + } + ) +} + +export default (connect(mapStateToProps,mapDispatchToProps)(Modal)); \ No newline at end of file diff --git a/src/components/screens/Admin/OptionGroupBtn.js b/src/components/screens/Admin/OptionGroupBtn.js new file mode 100644 index 00000000..02ef008b --- /dev/null +++ b/src/components/screens/Admin/OptionGroupBtn.js @@ -0,0 +1,86 @@ +import {OptionSection,OptionBtn,ClickSection,ClickBtn} from "./ButtonElement" +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import {faCog} from "@fortawesome/free-solid-svg-icons" +import * as React from "react" +import Modal from "./ModalGroup.js"; + +const Empower = "권한 부여" +const Revoke = "권한 해제" +const Expulsion = "강제 탈퇴" +const Delegate = "회장 위임" + +function OptionButton(props){ + const {id, show, setShow, data, groupId} = props; + + const [showModal, setShowModal] = React.useState(false); + const [modalOption, setModalOption] = React.useState(false); // option이 무엇인지 + const [modalInfor, setModalInfor] = React.useState(data); // 회원 정보 + + const showSection = () => { + if(id === show){ + setShow(-1); + } + else{ + setShow(id); + } + + } + + const setModal = (option) => { + console.log(option); + + switch(option){ + case Empower:{ + console.log(Empower); + setModalOption(Empower) + setShowModal(true) + break; + } + case Revoke:{ + console.log(Revoke); + setModalOption(Revoke) + setShowModal(true) + break; + } + case Delegate:{ + console.log(Delegate); + setModalOption(Delegate) + setShowModal(true) + break; + } + case Expulsion:{ + console.log(Expulsion); + setModalOption(Expulsion) + setShowModal(true) + break; + } + } + } + + return ( + <> + + + {(show === id) ? + <> + + {setModal(Empower) }}>권한 부여 + {setModal(Revoke) }}>권한 해제 + {setModal(Expulsion) }}>강제 탈퇴 + {setModal(Delegate) }}>소모임장 위임 + + {(showModal==true)? + + : + null + } + + : + null + } + + + + ) +} +export default OptionButton; \ No newline at end of file diff --git a/src/components/screens/Admin/PostGroupPermissionBar.js b/src/components/screens/Admin/PostGroupPermissionBar.js index dc2787fa..f9c4eae9 100644 --- a/src/components/screens/Admin/PostGroupPermissionBar.js +++ b/src/components/screens/Admin/PostGroupPermissionBar.js @@ -4,6 +4,7 @@ import {PostInforBar,PostCotent,Grade,StudentId,PhoneNumber,Name,PostRole,PostAt import axios from "axios"; import { connect } from "react-redux"; import { actionCreators } from "../../../store"; +import OptionButton from "./OptionGroupBtn"; @@ -59,6 +60,13 @@ function PostGroupPermissionBar(props){ console.log(props); const groupId = props.groupId console.log(groupId); + + const roles = props.userReducer.roles + const GroupLeader =roles.includes("ROLE_GROUP_PRESIDENT") // 동아리 회장 + + const [show, setShow] = React.useState(-1); + + const permissionGroup = (groupId, memberId) => { axios.patch(`/groups/executives/applicants/approve?groupId=${groupId}&memberId=${memberId}`, { @@ -86,60 +94,6 @@ function PostGroupPermissionBar(props){ }); } - const promoteGroup = (groupId,memberId) => { // 임원 승급 - axios.patch(`/groups/president/promote?groupId=${groupId}&memberId=${memberId}`,{ - }) - .catch(function (error) { - console.log(error); - }) - .then(function (res) { - console.log(res); - const PageReducer = props.PageReducer - props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) - }); - } - - const degradeGroup = (groupId,memberId) => { // 임원 하락 - axios.patch(`/groups/president/degrade?groupId=${groupId}&memberId=${memberId}`,{ - }) - .catch(function (error) { - console.log(error); - }) - .then(function (res) { - console.log(res); - const PageReducer = props.PageReducer - props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) - }); - } - - const delegateGroup = (groupId,memberId) => { - axios.patch(`/groups/president/delegate?groupId=${groupId}&memberId=${memberId}`,{ - }) - .catch(function (error) { - console.log(error); - }) - .then(function (res) { - console.log(res); - const PageReducer = props.PageReducer - props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) - }); - } - - const kickGroup = (groupId,memberId) => { - axios.patch(`/groups/president/kick?groupId=${groupId}&memberId=${memberId}`,{ - }) - .catch(function (error) { - console.log(error); - }) - .then(function (res) { - console.log(res); - const PageReducer = props.PageReducer - props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) - }); - } - - - const handlePermission = (e) => { @@ -166,44 +120,7 @@ function PostGroupPermissionBar(props){ } } - const handlePromote = (e) => { - const check = window.confirm("이 회원에게 임원권한을 부여하시겠습니까?") - console.log(check); - if(check){ - const id = e.target.dataset.id - promoteGroup(groupId,id) - } - } - - const handleDegrade = (e) => { - const check = window.confirm("이 회원의 임원권한을 해제하시겠습니까?") - console.log(check); - if(check){ - const id = e.target.dataset.id - degradeGroup(groupId,id) - } - } - - const handleDelegate = (e) => { - const name = e.target.parentNode.childNodes[4].innerText - const check = window.confirm(`${name}에게 회장을 위임 하시겠습니까?`) - console.log(check); - if(check){ - const id = e.target.dataset.id - delegateGroup(groupId,id) - } - } - const handleKick = (e) => { - const name = e.target.parentNode.childNodes[4].innerText - const check = window.confirm(`${name}을 탈퇴시겠습니까?`) - console.log(check); - if(check){ - const id = e.target.dataset.id - kickGroup(groupId,id) - } - } -// const postdata = props.data.map((data)=> @@ -215,37 +132,11 @@ function PostGroupPermissionBar(props){ {printRole(data.roles)} {data.academicStatus} {data.gender} - {(props.type === "그룹 가입 승인")? - <> - - - - : - null - } - {(props.type === "그룹 임원 권한 부여")? - <> - - - : - null - } - {(props.type === "그룹 회장 위임 및 임원 권한 해제")? - <> - - - - : - null - } - {(props.type === "그룹 강제 탈퇴")? - <> - - - : - null + {(GroupLeader === true)? + + : + null } - ) From 363f6d15b21eb67e0ba4667977a25747f538edd9 Mon Sep 17 00:00:00 2001 From: seung Date: Thu, 17 Mar 2022 12:35:58 +0900 Subject: [PATCH 13/19] =?UTF-8?q?Feat:=20=EB=AA=A8=EB=8B=AC=EC=B0=BD=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1=EC=9C=BC=EB=A1=9C=20subCategory=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/screens/Admin/Operator.js | 79 ++++++------------------ 1 file changed, 20 insertions(+), 59 deletions(-) diff --git a/src/components/screens/Admin/Operator.js b/src/components/screens/Admin/Operator.js index 28965eb8..32fd03f8 100644 --- a/src/components/screens/Admin/Operator.js +++ b/src/components/screens/Admin/Operator.js @@ -33,6 +33,8 @@ const MemberApproval = "회원 가입 승인 및 거절" const GroupPresident = "소모임 회장 권한 부여" const MemberClear = "전체 동아리원 초기화" const EditBoard = "게시판 추가 및 삭제"; +const GroupMemberList = "그룹 회원 목록 조회"; +const GroupMemberApproval = "그룹 가입 승인" const subCategory = [ @@ -41,11 +43,8 @@ const subCategory = [ { boardName: GroupPresident}, { boardName: MemberClear}, { boardName: EditBoard}, - { boardName: "그룹 회원 목록 조회"}, - { boardName: "그룹 가입 승인" }, - { boardName: "그룹 강제 탈퇴"}, - { boardName: "그룹 임원 권한 부여"}, - { boardName: "그룹 회장 위임 및 임원 권한 해제"}, + { boardName: GroupMemberList}, + { boardName: GroupMemberApproval }, ]; const getAuthority = (AllLeader,ClubLeaderGroupExecutive,ClubLeader,ClubExecutiveGroupLeader,GroupLeader,ClubExecutiveGroupExecutive,ClubExecutive,GroupExecutive) => { @@ -53,25 +52,25 @@ if(AllLeader){ return subCategory } else if(ClubLeaderGroupExecutive){ - return subCategory.filter(item => (item.boardName !== "그룹 강제 탈퇴")&&(item.boardName !== "그룹 임원 권한 부여")&&(item.boardName !== "그룹 회장 위임 및 임원 권한 해제")) + return subCategory } else if(ClubLeader){ - return subCategory.filter(item => (item.boardName !== "그룹 가입 승인")&&(item.boardName !== "그룹 강제 탈퇴")&&(item.boardName !== "그룹 임원 권한 부여")&&(item.boardName !== "그룹 회장 위임 및 임원 권한 해제")&&(item.boardName !== "그룹 회원 목록 조회")) + return subCategory.filter(item => (item.boardName !== GroupMemberApproval)&&(item.boardName !== GroupMemberList)) } else if(ClubExecutiveGroupLeader){ - return subCategory.filter(item => (item.boardName !== MemberClear)&&(item.boardName !== "그룹 회장 위임 및 임원 권한 해제")) + return subCategory.filter(item => (item.boardName !== MemberClear)) } else if(GroupLeader){ return subCategory.filter(item => (item.boardName !== MemberList)&&(item.boardName !== MemberApproval)&&(item.boardName !== GroupPresident)&&(item.boardName !== MemberClear)&&(item.boardName !== EditBoard)) } else if(ClubExecutiveGroupExecutive){ - return subCategory.filter(item => (item.boardName !== MemberClear)&&(item.boardName !== "그룹 회장 위임 및 임원 권한 해제")&&(item.boardName !== "그룹 임원 권한 부여")&&(item.boardName !== "그룹 강제 탈퇴")) + return subCategory.filter(item => (item.boardName !== MemberClear)) } else if(ClubExecutive){ return subCategory.filter(item => (item.boardName === MemberList)||(item.boardName === MemberApproval)||(item.boardName === GroupPresident)||(item.boardName !== EditBoard)) } else if(GroupExecutive){ - return subCategory.filter(item => (item.boardName === "그룹 회원 목록 조회")||(item.boardName === "그룹 가입 승인")) + return subCategory.filter(item => (item.boardName === GroupMemberList)||(item.boardName === GroupMemberApproval)) } } @@ -676,7 +675,7 @@ function Operator(props) { }); } - else if(category.find(item => item.boardName === "그룹 회원 목록 조회")){ // 그룹원 목록 조회 즉 소모임 회장이거나 임원일때 + else if(category.find(item => item.boardName === GroupMemberList)){ // 그룹원 목록 조회 즉 소모임 회장이거나 임원일때 axios.get(`/groups/executives/members?direction=${"ASC"}&groupId=${groupId}&page=1&role=MEMBER&size=19&type=ID`,{ }) @@ -687,7 +686,7 @@ function Operator(props) { console.log(res); settotalPage(res.data.data.totalPages) setPosts(res.data.data.content) - setTarget("그룹 회원 목록 조회") + setTarget(GroupMemberList) setPage(PageReducer.page) console.log("최초시행 작동!"); setSubCategory(category) @@ -718,7 +717,7 @@ function Operator(props) { loadMemberPermissionList(PageReducer.page) } } - else if(PageReducer.boardId ==="그룹 회원 목록 조회" || target === "그룹 회원 목록 조회"){ + else if(PageReducer.boardId ===GroupMemberList || target === GroupMemberList){ if(PageReducer.isSearching[0] === true){ console.log("그룹 회원 목록 조회의 검색로직 작동!"); @@ -728,7 +727,7 @@ function Operator(props) { loadGroupMemberList(discriminationDirection(direction),groupId,PageReducer.page,"MEMBER",PageReducer.selected) } } - else if(PageReducer.boardId === "그룹 가입 승인"){ + else if(PageReducer.boardId === GroupMemberApproval){ if(PageReducer.isSearching[0] === true){ console.log("그룹 가입 승인의 검색로직 작동!"); handleGroupSearchFunction(PageReducer.isSearching[1]) @@ -737,26 +736,6 @@ function Operator(props) { loadGroupMemberList(discriminationDirection(direction),groupId,PageReducer.page,"APPLICANT",PageReducer.selected) } } - else if(PageReducer.boardId === "그룹 강제 탈퇴" || PageReducer.boardId === "그룹 임원 권한 부여"){ - - if(PageReducer.isSearching[0] === true){ - console.log("검색로직 작동!"); - handleGroupSearchFunction(PageReducer.isSearching[1]) - } - else{ - loadGroupMemberList(discriminationDirection(direction),groupId,PageReducer.page,"MEMBER",PageReducer.selected) - } - } - else if(PageReducer.boardId === "그룹 회장 위임 및 임원 권한 해제"){ - - if(PageReducer.isSearching[0] === true){ - console.log("검색로직 작동!"); - handleGroupSearchFunction(PageReducer.isSearching[1]) - } - else{ - loadGroupMemberList(discriminationDirection(direction),groupId,PageReducer.page,"EXECUTIVE",PageReducer.selected) - } - } } },[props]) @@ -963,13 +942,13 @@ function Operator(props) { - {((target === "그룹 가입 승인")||(target === "그룹 강제 탈퇴")||(target === "그룹 임원 권한 부여")||(target === "그룹 회장 위임"))? + {((target === GroupMemberApproval))? {target} | {subScreenTitle} : {target} } - {((target === MemberList)||(target === "그룹 회장 위임")||(target === GroupPresident))? + {((target === MemberList)||(target === GroupPresident))? @@ -1034,7 +1013,7 @@ function Operator(props) { : {handleSort("Gender")}}>성별 } - {((target !== MemberList)||(target !=="그룹 회원 목록 조회")) ? 버튼 : null} + {((target !== MemberList)||(target !==GroupMemberList)) ? 버튼 : null} @@ -1061,32 +1040,14 @@ function Operator(props) { } - {(target === "그룹 회원 목록 조회" && posts !== [] ) ? - - : - null - } - - {(target === "그룹 가입 승인" && posts !== [] ) ? - - : - null - } - - {(target === "그룹 강제 탈퇴" && posts !== [] ) ? - - : - null - } - - {(target === "그룹 임원 권한 부여" && posts !== [] ) ? - + {(target === GroupMemberList && posts !== [] ) ? + : null } - {(target === "그룹 회장 위임 및 임원 권한 해제" && posts !== [] ) ? - + {(target === GroupMemberApproval && posts !== [] ) ? + : null } From 7ae11c0fcc19c5ade0a17f7afeeecb3aca9602d7 Mon Sep 17 00:00:00 2001 From: seung Date: Thu, 17 Mar 2022 12:51:32 +0900 Subject: [PATCH 14/19] =?UTF-8?q?Feat:=20=EA=B7=B8=EB=A3=B9=20=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=EC=8A=B9=EC=9D=B8=20=EB=B3=B5=EA=B5=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../screens/Admin/PostGroupPermissionBar.js | 19 +++- .../screens/Admin/PostMemberExpulsionBar.js | 100 ------------------ 2 files changed, 14 insertions(+), 105 deletions(-) delete mode 100644 src/components/screens/Admin/PostMemberExpulsionBar.js diff --git a/src/components/screens/Admin/PostGroupPermissionBar.js b/src/components/screens/Admin/PostGroupPermissionBar.js index f9c4eae9..b058ab22 100644 --- a/src/components/screens/Admin/PostGroupPermissionBar.js +++ b/src/components/screens/Admin/PostGroupPermissionBar.js @@ -1,6 +1,6 @@ import styled from "styled-components"; import * as React from "react" -import {PostInforBar,PostCotent,Grade,StudentId,PhoneNumber,Name,PostRole,PostAttendance,PostGender,PostNumber,CheckBtn as Btn} from "./../../shared/BoardElement" +import {PostInforBar,PostCotent,Grade,StudentId,PhoneNumber,Name,PostRole,PostAttendance,PostGender,PostNumber,CheckBtn as Btn, SmallCheckBtn} from "./../../shared/BoardElement" import axios from "axios"; import { connect } from "react-redux"; import { actionCreators } from "../../../store"; @@ -18,6 +18,9 @@ border-radius: 15px; cursor: pointer; ` +const GroupMemberList = "그룹 회원 목록 조회" +const GroupMemberApproval = "그룹 가입 승인" + const printRole = (value) => { if(value.includes("ROLE_CLUB_PRESIDENT")){ return "회장" @@ -58,7 +61,7 @@ function mapStateToProps(state) { function PostGroupPermissionBar(props){ console.log(props); - const groupId = props.groupId + const {groupId, type} = props console.log(groupId); const roles = props.userReducer.roles @@ -94,8 +97,6 @@ function PostGroupPermissionBar(props){ }); } - - const handlePermission = (e) => { console.log(e); //console.log(e.target.dataset.id); @@ -132,11 +133,19 @@ function PostGroupPermissionBar(props){ {printRole(data.roles)} {data.academicStatus} {data.gender} - {(GroupLeader === true)? + {((GroupLeader === true) && type === GroupMemberList)? : null } + {(type === GroupMemberApproval)? + <> + + + + : + null + } ) diff --git a/src/components/screens/Admin/PostMemberExpulsionBar.js b/src/components/screens/Admin/PostMemberExpulsionBar.js deleted file mode 100644 index 274fdd1e..00000000 --- a/src/components/screens/Admin/PostMemberExpulsionBar.js +++ /dev/null @@ -1,100 +0,0 @@ -import styled from "styled-components"; -import * as React from "react" -import {PostInforBar,PostCotent,Grade,StudentId,PhoneNumber,Name,PostRole,PostAttendance,PostGender,PostNumber,CheckBtn} from "./BoardElement" -import axios from "axios"; -import { connect } from "react-redux"; -import { actionCreators } from "../../../store"; - -const printRole = (value) => { - if(value.includes("ROLE_CLUB_PRESIDENT")){ - return "회장" - } - else if(value.includes("ROLE_GROUP_PRESIDENT")){ - return "소모임장" - } - else if(value.includes("ROLE_CLUB_EXECUTIVE")){ - return "운영진" - } - else if(value.includes("ROLE_GROUP_EXECUTIVE")){ - return "운영진" - } - else if(value.includes("ROLE_MEMBER")){ - return "일반" - } - else if(value.includes("ROLE_GUEST")){ - return "게스트" - } - else if(value.includes("ROLE_BAN")){ - return "밴" - } - else if(value.includes("ROLE_RESIGN")){ - return "사직" - } -} - -function mapDispatchToProps(dispatch){ - return{ - setAll: (boardId,page,isSearching,selected,boardCategoryName) => dispatch(actionCreators.setAll(boardId,page,isSearching,selected,boardCategoryName)), - } - } - -function mapStateToProps(state) { - return state; - } - -function PostMemberExpulsionBar(props){ - //console.log(props.data); - //console.log(props); - - - const expulsionMember = (memberId) => { - axios.patch(`/club/president/ban?memberId=${memberId}`,{},{ - }) - .catch(function (error) { - console.log(error); - }) - .then(function (res) { - console.log(res); - const PageReducer = props.PageReducer - props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) - }); - } - - const handleExpulsion = (e) => { - console.log(e); - const name = e.target.parentNode.childNodes[4].innerText - console.log(e); - const check = window.confirm(`${name}을(를) 정말 강제로 탈퇴시키겠습니까?`) - console.log(check); - if(check){ - const id = e.target.dataset.id - expulsionMember(id) - } - } - - const postdata = props.data.map((data)=> - - - {data.id} - {data.grade} - {data.studentId} - {data.phone} - {data.name} - {printRole(data.roles)} - {data.academicStatus} - {data.gender} - - - - ) - - return ( - <> - { - postdata - } - - ); -} - -export default React.memo(connect(mapStateToProps,mapDispatchToProps)(PostMemberExpulsionBar)); \ No newline at end of file From 2196540383d28c0d545b5cad8cc15316439e9f20 Mon Sep 17 00:00:00 2001 From: seung Date: Thu, 17 Mar 2022 13:06:29 +0900 Subject: [PATCH 15/19] =?UTF-8?q?Feat:=20=EA=B7=B8=EB=A3=B9=20=ED=9A=8C?= =?UTF-8?q?=EC=9B=90=20=EB=AA=A9=EB=A1=9D=20=EC=A1=B0=ED=9A=8C=20=EC=8B=9C?= =?UTF-8?q?,=20=EA=B2=80=EC=83=89=20=EA=B8=B0=EB=8A=A5=20=EB=B3=B5?= =?UTF-8?q?=EA=B5=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/screens/Admin/Operator.js | 102 +++++++++++++---------- 1 file changed, 58 insertions(+), 44 deletions(-) diff --git a/src/components/screens/Admin/Operator.js b/src/components/screens/Admin/Operator.js index 32fd03f8..7754d6be 100644 --- a/src/components/screens/Admin/Operator.js +++ b/src/components/screens/Admin/Operator.js @@ -942,13 +942,13 @@ function Operator(props) { - {((target === GroupMemberApproval))? + {((target === GroupMemberApproval)||(target === GroupMemberList))? {target} | {subScreenTitle} : {target} } - {((target === MemberList)||(target === GroupPresident))? + {((target === MemberList)||(target === GroupPresident)||(target === GroupMemberList))? @@ -956,11 +956,19 @@ function Operator(props) { + {((target === GroupMemberList))? + null + : + <> - + + } + + + @@ -975,47 +983,53 @@ function Operator(props) { null } - - - {(numberDirection === true) ? - {handleNumber()}}>번호 - : - {handleNumber()}}>번호 - } - {(gradeDirection === true) ? - {handleSort("Grade")}}>학년 - : - {handleSort("Grade")}}>학년 - } - {(studentIdDirection === true) ? - {handleSort("StudentId")}}>학번 - : - {handleSort("StudentId")}}>학번 - } - {(phoneNumberDirection === true) ? - {handleSort("PhoneNumber")}} post>연락처 - : - {handleSort("PhoneNumber")}} post>연락처 - } - {(nameDirection === true) ? - {handleSort("Name")}}>이름 - : - {handleSort("Name")}}>이름 - } - 회원직책 - {(attendanceDirection === true) ? - {handleSort("Attendance")}}>학적 - : - {handleSort("Attendance")}}>학적 - } - {(genderDirection === true) ? - {handleSort("Gender")}}>성별 - : - {handleSort("Gender")}}>성별 - } - {((target !== MemberList)||(target !==GroupMemberList)) ? 버튼 : null} - - + + {((target === MemberClear) || (target === EditBoard)) ? + null + : + + + {(numberDirection === true) ? + { handleNumber() }}>번호 + : + { handleNumber() }}>번호 + } + {(gradeDirection === true) ? + { handleSort("Grade") }}>학년 + : + { handleSort("Grade") }}>학년 + } + {(studentIdDirection === true) ? + { handleSort("StudentId") }}>학번 + : + { handleSort("StudentId") }}>학번 + } + {(phoneNumberDirection === true) ? + { handleSort("PhoneNumber") }} post>연락처 + : + { handleSort("PhoneNumber") }} post>연락처 + } + {(nameDirection === true) ? + { handleSort("Name") }}>이름 + : + { handleSort("Name") }}>이름 + } + 회원직책 + {(attendanceDirection === true) ? + { handleSort("Attendance") }}>학적 + : + { handleSort("Attendance") }}>학적 + } + {(genderDirection === true) ? + { handleSort("Gender") }}>성별 + : + { handleSort("Gender") }}>성별 + } + {((target !== MemberList) || (target !== GroupMemberList)) ? 버튼 : null} + + + } + From bdf355845d452a1401b3ce44d60fcdccf60f75af Mon Sep 17 00:00:00 2001 From: seung Date: Thu, 17 Mar 2022 16:57:18 +0900 Subject: [PATCH 16/19] =?UTF-8?q?Feat:=20=EC=A0=84=EC=B2=B4=20=EB=8F=99?= =?UTF-8?q?=EC=95=84=EB=A6=AC=EC=9B=90=20=EC=B4=88=EA=B8=B0=ED=99=94,=20?= =?UTF-8?q?=EA=B2=8C=EC=8B=9C=ED=8C=90=20=EC=B6=94=EA=B0=80=20=EB=B0=8F=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C=20=EB=B3=B5=EA=B5=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/screens/Admin/BoardEdit.js | 270 ++++++++++++++++++ src/components/screens/Admin/Operator.js | 14 + .../screens/Admin/ResetAllMember.js | 63 ++++ 3 files changed, 347 insertions(+) create mode 100644 src/components/screens/Admin/BoardEdit.js create mode 100644 src/components/screens/Admin/ResetAllMember.js diff --git a/src/components/screens/Admin/BoardEdit.js b/src/components/screens/Admin/BoardEdit.js new file mode 100644 index 00000000..5adbf38a --- /dev/null +++ b/src/components/screens/Admin/BoardEdit.js @@ -0,0 +1,270 @@ +import { useForm } from "react-hook-form"; +import * as React from "react"; +import { connect } from "react-redux"; +import axios from "axios"; +import { actionCreators } from "../../../store"; +import styled from "styled-components"; +import img from "./../../../images/Polygon.jpg"; + +const Btn = styled.button` +width: 200px; +background-color: ${(props) => (props.red ? "red" : "#6CD2D7")}; +border: none; +border-radius: 20px; +height: 50px; +background-color: ${(props) => (props.red ? "red" : "#6CD2D7")}; +margin-right: ${(props) => (props.red ? "0px" : "350px")}; +font-size: 30px; +color: white; +cursor: pointer; +` +const BtnSection = styled.div` + margin-top: 20px; + margin-bottom: 20px; +` +export const Category = styled.div` + font-size: 15px; + font-weight: 700; + color: #0b665c; + margin-top: 38px; + margin-bottom: 16px; + margin-left: 15px; + width: 910.07px; +`; +export const SearchBarSection = styled.div` + width: 910.07px; + margin: 0 auto; + min-height: 64px; + + font-size: 14px; + display: flex; + flex-direction: row; +`; +export const SearchBarForm = styled.form` + display: flex; + flex-direction: row; + margin: 0px auto; + margin-top: 16px; +`; +export const SearchBarSelect = styled.select` + width: 117px; + height: 32px; + padding-left: 8px; + border-radius: 50px; + line-height: 16.41px; + border: 1px solid #c4c4c4; + + -moz-appearance: none; + -webkit-appearance: none; + appearance: none; + background: url(${img}); + background-repeat: no-repeat; + background-size: 17px 17px; + background-position: bottom 8px right 11px; +`; +export const SearchBar = styled.div` + margin-left: 9px; + position: relative; +`; +export const SearchBarInput = styled.input` + min-width: 331.48px; + height: 31.59px; + border: 1px solid #c4c4c4; + border-radius: 50px; + padding-left: 19.87px; +`; +export const SearchBarSubmit = styled.input` + position: absolute; + right: 3.71px; + top: 4.25px; + width: 28.9px; + height: 25.27px; + border: none; + border-radius: 50px; + border-color: #c4c4c4; + background-color: #c4c4c4; + cursor: pointer; +`; +export const SearchBarFilter = styled.select` +min-width:479.328px; +height: 31.59px; +border: 1px solid #c4c4c4; +border-radius: 50px; +padding-left: 19.87px; +`; + + + +function mapStateToProps(state) { + return state; + } + + function mapDispatchToProps(dispatch) { + return { + setAll: (boardId, page, isSearching, selected, boardCategoryName) => + dispatch( + actionCreators.setAll( + boardId, + page, + isSearching, + selected, + boardCategoryName + ) + ), + }; + } + +function BoardEdit(props){ + // const [addBoard,setAddBoard] = React.useState(false); + // const [delBoard,setDelBoard] = React.useState(false); + const [category,setCategory] = React.useState(false); + const [load,setLoad] = React.useState(false); + const [trigger,setTrigger] = React.useState(false); + const groupList = props.groupList + console.log(groupList); + console.log(category); + const { register, handleSubmit } = useForm(); + const useForm2 = useForm(); + + const addBoard = (boardCategoryId,boardName) => { + axios.post(`/club/executives/boards`, { + "boardCategoryId": boardCategoryId, + "boardName": boardName + }, { + headers: { Authorization: `Bearer ${props.userReducer.token}` }, + }) + .catch(function (error) { + console.log(error.toJSON()); + }) + .then(function (res) { + console.log(res); + setTrigger((current) => !current) + setLoad(false) + }); + } + + const delBoard = (boardId) => { + axios.delete(`/club/executives/boards/${boardId}`,{ + headers: { Authorization: `Bearer ${props.userReducer.token}` }, + }) + .catch(function (error) { + console.log(error.toJSON()); + }) + .then(function (res) { + console.log(res); + setTrigger((current) => !current) + setLoad(false) + }); + } + + + const handleAddBoard = (data) => { + console.log(data); + let value = window.confirm(`${data.option}에 ${data.keyword}를 추가하시겠습니까?`) + if(value){ + if(data.option === "공지사항"){ + addBoard(1,data.keyword) + } + else if(data.option === "소모임"){ + addBoard(2,data.keyword) + } + else if(data.option === "스터디"){ + addBoard(3,data.keyword) + } + else if(data.option === "커뮤니티"){ + addBoard(4,data.keyword) + } + } + + } + const handleDelBoard = (data) => { + console.log(data); + let value = window.confirm(`정말 삭제하시겠습니까?`) + if(value){ + delBoard(data.target) + } + + } + + const OnError = (error, e) => { + console.log(error); + console.log("error"); + }; + + + React.useEffect(()=>{ + axios + .get(`/boards/categories`, { + headers: { Authorization: `Bearer ${props.userReducer.token}` }, + }) + .catch(function (error) { + console.log(error.toJSON()); + }) + .then(function (res) { + const category = [ + ...res.data.data.boards]; + setCategory((previous) => category); + setLoad(true) + }); + },[trigger]) + + return ( + <> + {load === true? + <> + <> + 게시판 추가 + + + + + + + + + + + + + + + + + + + + <> + 게시판 삭제 + + + + + {category.map((value) => ( + + ))} + + + + + + + + + : + null + } + + + + + + + + + + ) +} + +export default connect(mapStateToProps, mapDispatchToProps)(BoardEdit); \ No newline at end of file diff --git a/src/components/screens/Admin/Operator.js b/src/components/screens/Admin/Operator.js index 7754d6be..7d0496e5 100644 --- a/src/components/screens/Admin/Operator.js +++ b/src/components/screens/Admin/Operator.js @@ -1071,6 +1071,20 @@ function Operator(props) { null } + {(target === EditBoard) ? + <> + + + : + null + } + + {(target === MemberClear) ? + + : + null + } + {((target === MemberClear) || (target === EditBoard)) ? null diff --git a/src/components/screens/Admin/ResetAllMember.js b/src/components/screens/Admin/ResetAllMember.js new file mode 100644 index 00000000..daa2ad33 --- /dev/null +++ b/src/components/screens/Admin/ResetAllMember.js @@ -0,0 +1,63 @@ +import styled from "styled-components"; +import * as React from "react" +import axios from "axios"; +import { connect } from "react-redux"; +import { actionCreators } from "../../../store"; + +const ResetBtn = styled.button` +margin-top: 30px; +width: 800px; +height: 300px; +background-color:#AB2C49; +font-size: 100px; +color:white; +cursor: pointer; + +&:hover{ + font-weight: 700 +} +` + +function mapDispatchToProps(dispatch){ + return{ + setAll: (boardId,page,isSearching,selected,boardCategoryName) => dispatch(actionCreators.setAll(boardId,page,isSearching,selected,boardCategoryName)), + } + } + +function mapStateToProps(state) { + return state; + } + +function ResetAllMember(props){ + + const resetMember = () => { + axios.patch(`/club/president/reset`,{ + }) + .catch(function (error) { + console.log(error.toJSON()); + }) + .then(function (res) { + console.log(res); + }); + } + + const handleReset = () => { + + const check = window.confirm(`정말 모든 동아리원의 권한을 초기화하시겠습니까?`) + if (check) { + const lastcheck = window.confirm(`이제는 다시 되돌릴 수 없습니다. 정말 모든 동아리원의 권한을 초기화하시겠습니까?`) + if(lastcheck){ + resetMember() + } + } + } + + + return ( + <> + 초기화 + + ); +} + +export default connect(mapStateToProps,mapDispatchToProps)(ResetAllMember); \ No newline at end of file From cb667a0fbd000f081e8c3ac58c592c33672903e4 Mon Sep 17 00:00:00 2001 From: seung Date: Thu, 17 Mar 2022 16:58:37 +0900 Subject: [PATCH 17/19] =?UTF-8?q?Feat:=20Operator=EC=97=90=20=EB=B3=B5?= =?UTF-8?q?=EA=B5=AC=ED=95=9C=20=ED=8C=8C=EC=9D=BC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/screens/Admin/Operator.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/components/screens/Admin/Operator.js b/src/components/screens/Admin/Operator.js index 7d0496e5..c0674eb2 100644 --- a/src/components/screens/Admin/Operator.js +++ b/src/components/screens/Admin/Operator.js @@ -18,6 +18,8 @@ import { faSearch } from "@fortawesome/free-solid-svg-icons"; import img from './../../../images/Polygon.jpg' import PostGroupPermissionBar from "./PostGroupPermissionBar" import PostMemberPermissionBar from "./PostMemberPermissionBar" +import BoardEdit from "./BoardEdit"; +import ResetAllMember from "./ResetAllMember"; const Number = styled.div` width: 40px; From 36de95b6758c038bae9fc0c9369111a8642af67e Mon Sep 17 00:00:00 2001 From: seung Date: Thu, 17 Mar 2022 17:05:05 +0900 Subject: [PATCH 18/19] =?UTF-8?q?Feat:=20api=20=EC=9A=94=EC=B2=AD=20header?= =?UTF-8?q?=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/screens/Admin/BoardEdit.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/components/screens/Admin/BoardEdit.js b/src/components/screens/Admin/BoardEdit.js index 5adbf38a..1c0eca70 100644 --- a/src/components/screens/Admin/BoardEdit.js +++ b/src/components/screens/Admin/BoardEdit.js @@ -130,9 +130,7 @@ function BoardEdit(props){ axios.post(`/club/executives/boards`, { "boardCategoryId": boardCategoryId, "boardName": boardName - }, { - headers: { Authorization: `Bearer ${props.userReducer.token}` }, - }) + }, {}) .catch(function (error) { console.log(error.toJSON()); }) @@ -145,7 +143,6 @@ function BoardEdit(props){ const delBoard = (boardId) => { axios.delete(`/club/executives/boards/${boardId}`,{ - headers: { Authorization: `Bearer ${props.userReducer.token}` }, }) .catch(function (error) { console.log(error.toJSON()); @@ -195,7 +192,6 @@ function BoardEdit(props){ React.useEffect(()=>{ axios .get(`/boards/categories`, { - headers: { Authorization: `Bearer ${props.userReducer.token}` }, }) .catch(function (error) { console.log(error.toJSON()); From fa8686b1c92a590f80dc38a5d7d7e87601af9cbd Mon Sep 17 00:00:00 2001 From: seung Date: Thu, 17 Mar 2022 17:14:40 +0900 Subject: [PATCH 19/19] =?UTF-8?q?Feat:=20test=20=EB=A9=94=EB=89=B4=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.js | 4 +- src/components/navibar/NaviBar.js | 15 - src/components/screens/Operator.js | 1222 ----------------- src/components/screens/Page_Update.js | 2 +- src/components/shared/BoardEdit.js | 270 ---- .../shared/PostGroupPermissionBar.js | 263 ---- src/components/shared/PostMemberBar.js | 241 ---- .../shared/PostMemberExpulsionBar.js | 100 -- .../shared/PostMemberPermissionBar.js | 143 -- src/components/shared/ResetAllMember.js | 63 - 10 files changed, 2 insertions(+), 2321 deletions(-) delete mode 100644 src/components/screens/Operator.js delete mode 100644 src/components/shared/BoardEdit.js delete mode 100644 src/components/shared/PostGroupPermissionBar.js delete mode 100644 src/components/shared/PostMemberBar.js delete mode 100644 src/components/shared/PostMemberExpulsionBar.js delete mode 100644 src/components/shared/PostMemberPermissionBar.js delete mode 100644 src/components/shared/ResetAllMember.js diff --git a/src/App.js b/src/App.js index b44da8eb..13a205d2 100644 --- a/src/App.js +++ b/src/App.js @@ -2,7 +2,6 @@ import { BrowserRouter, Routes, Route, Navigate } from "react-router-dom"; import Login from "./components/screens/Login"; import Profile from "./components/screens/Profile/Profile"; import { GlobalStyles } from "./styles"; -import Operator from "./components/screens/Operator"; import Layout from "./components/Layout"; import { Helmet, HelmetProvider } from "react-helmet-async"; import EmailAuth from "./components/auth/EmailAuth"; @@ -23,7 +22,7 @@ import Board from "./components/screens/Board"; import CreatePage from "./components/screens/Page_Create.js"; import NewPage from "./components/screens/PageNew"; import NewUpdatePage from "./components/screens/Page_UpdateNew"; -import Operator2 from "./components/screens/Admin/Operator" +import Operator from "./components/screens/Admin/Operator" axios.defaults.baseURL = "http://api.igrus.net:8080/"; //"http://ec2-3-35-129-82.ap-northeast-2.compute.amazonaws.com:8080/"; @@ -239,7 +238,6 @@ function App(props) { )} - } /> } /> {!authenticated ? ( diff --git a/src/components/navibar/NaviBar.js b/src/components/navibar/NaviBar.js index e2259cd2..8c0c6bc1 100644 --- a/src/components/navibar/NaviBar.js +++ b/src/components/navibar/NaviBar.js @@ -88,11 +88,6 @@ const NaviBar = (props) => { props.setViewCategoryName(null); Navigate(`/operator`); } - else if (boardCategoryName === "TEST") { - props.setAll("", 1, [false], "ID", true); - props.setViewCategoryName(null); - Navigate(`/test`); - } }; let isAuthority = false; let isJoinGroup = false; @@ -156,16 +151,6 @@ const NaviBar = (props) => { ADMIN
) : null} - - { - handleLink(e, "TEST"); - }} - style={({ isActive }) => ({})} - > - test - {authenticated ? ( diff --git a/src/components/screens/Operator.js b/src/components/screens/Operator.js deleted file mode 100644 index f0883166..00000000 --- a/src/components/screens/Operator.js +++ /dev/null @@ -1,1222 +0,0 @@ -import * as React from "react"; -import PageTitle from "../shared/PageTitle"; -import ScreenTitle from "../shared/ScreenTitle"; -import SideBar from "../shared/SideBar"; -import { Content } from "../shared/Content"; -import {SearchBarSection,SearchBarForm,SearchBarSelect,SearchBar,SearchBarInput,SearchBarSubmit,InforBar,InforContents, - Grade,StudentId,Name,Role,Attendance,PostInforBar,PhoneNumber,Gender,Check,CheckBtn,PostCotent,PostRole,PostAttendance,PostGender, - InforSelection,ViewSearchBarSubmit} from "./../shared/BoardElement.js" -import { useForm } from "react-hook-form"; -import Pagination from "../shared/Pagination"; -import styled from "styled-components"; -import img from './../../images/Polygon.jpg' -import { connect } from "react-redux"; -import axios from "axios"; -import PostMemberBar from './../shared/PostMemberBar' -import PostMemberPermissionBar from './../shared/PostMemberPermissionBar' -import PostMemberExpulsionBar from './../shared/PostMemberExpulsionBar' -import PostGroupPermissionBar from './../shared/PostGroupPermissionBar' -import { actionCreators } from "./../../store"; -import ResetAllMember from "./../shared/ResetAllMember" -import BoardEdit from "../shared/BoardEdit"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { faSearch } from "@fortawesome/free-solid-svg-icons"; - - -const Number = styled.div` -width: 40px; -text-align: left; -margin-left: 44px; -position: relative; -word-spacing: -3px; -cursor: ${(props) => (props.post ? "none" : "pointer")}; -` - -const subCategory = [ - { boardName: "회원 목록 조회" }, - { boardName: "회원 가입 승인 및 거절" }, - { boardName: "회원 권한 부여" }, - { boardName: "운영진 권한 부여 및 회원 권한 해제"}, - { boardName: "운영진 권한 해제"}, - { boardName: "그룹 회장 권한 부여"}, - { boardName: "회원 강제 탈퇴"}, - { boardName: "회장 위임"}, - { boardName: "전체 동아리원 초기화"}, - { boardName: "게시판 추가 및 삭제"}, - { boardName: "그룹 회원 목록 조회"}, - { boardName: "그룹 가입 승인" }, - { boardName: "그룹 강제 탈퇴"}, - { boardName: "그룹 임원 권한 부여"}, - { boardName: "그룹 회장 위임 및 임원 권한 해제"}, -]; - - - -const getAuthority = (AllLeader,ClubLeaderGroupExecutive,ClubLeader,ClubExecutiveGroupLeader,GroupLeader,ClubExecutiveGroupExecutive,ClubExecutive,GroupExecutive) => { -if(AllLeader){ - return subCategory -} -else if(ClubLeaderGroupExecutive){ - return subCategory.filter(item => (item.boardName !== "그룹 강제 탈퇴")&&(item.boardName !== "그룹 임원 권한 부여")&&(item.boardName !== "그룹 회장 위임 및 임원 권한 해제")) -} -else if(ClubLeader){ - return subCategory.filter(item => (item.boardName !== "그룹 가입 승인")&&(item.boardName !== "그룹 강제 탈퇴")&&(item.boardName !== "그룹 임원 권한 부여")&&(item.boardName !== "그룹 회장 위임 및 임원 권한 해제")&&(item.boardName !== "그룹 회원 목록 조회")) -} -else if(ClubExecutiveGroupLeader){ - return subCategory.filter(item => (item.boardName !== "전체 동아리원 권한 초기화")&&(item.boardName !== "회장 위임")&&(item.boardName !== "회원 권한 부여")&&(item.boardName !== "그룹 회장 위임 및 임원 권한 해제")&&(item.boardName !== "회원 강제 탈퇴")&&(item.boardName !== "운영진 권한 부여 및 회원 권한 해제")) -} -else if(GroupLeader){ - return subCategory.filter(item => (item.boardName !== "회원 목록 조회")&&(item.boardName !== "회원 가입 승인 및 거절")&&(item.boardName !== "회원 권한 부여")&&(item.boardName !== "운영진 권한 부여 및 회원 권한 해제")&&(item.boardName !== "운영진 권한 해제")&&(item.boardName !== "그룹 회장 권한 부여")&&(item.boardName !== "회원 강제 탈퇴")&&(item.boardName !== "회장 위임")&&(item.boardName !== "전체 동아리원 초기화")&&(item.boardName !== "게시판 추가 및 삭제")) -} -else if(ClubExecutiveGroupExecutive){ - return subCategory.filter(item => (item.boardName !== "회원 권한 부여")&&(item.boardName !== "운영진 권한 부여 및 회원 권한 해제")&&(item.boardName !== "회원 강제 탈퇴")&&(item.boardName !== "회장 위임")&&(item.boardName !== "전체 동아리원 초기화")&&(item.boardName !== "운영진 권한 해제")&&(item.boardName !== "그룹 회장 위임 및 임원 권한 해제")&&(item.boardName !== "그룹 임원 권한 부여")&&(item.boardName !== "그룹 강제 탈퇴")) -} -else if(ClubExecutive){ - return subCategory.filter(item => (item.boardName === "회원 목록 조회")||(item.boardName === "회원 가입 승인 및 거절")||(item.boardName === "그룹 회장 권한 부여")||(item.boardName !== "게시판 추가 및 삭제")) -} -else if(GroupExecutive){ - return subCategory.filter(item => (item.boardName === "그룹 회원 목록 조회")||(item.boardName === "그룹 가입 승인")) -} -} - -const discriminationDirection = (value) => { - if(value === true){ - return "ASC" - } - else{ - return "DESC" - } -} - -let direction = true; - - -//let searchType = "" // 검색 타입 Available values : NAME, STUDENT_ID, DEPARTMENT, PHONE - -function mapDispatchToProps(dispatch){ - return{ - setAll: (boardId,page,isSearching,selected,boardCategoryName) => dispatch(actionCreators.setAll(boardId,page,isSearching,selected,boardCategoryName)), - } -} - -function mapStateToProps(state) { - return state; -} - -function Operator(props) { - - - //'ROLE_GUEST', 'ROLE_CLUB_EXECUTIVE', 'ROLE_MEMBER' - const [load, setLoad] = React.useState(true); - - const [target, setTarget] = React.useState(null); - const [page, setPage] = React.useState(0); - const [SubCategory,setSubCategory] =React.useState(undefined); - - - const [posts, setPosts] = React.useState([]); // API로 받은 값 - const [totalPage, settotalPage] = React.useState(0); // 총 페이지. - const [groupList, setGroupList] = React.useState(null); - const [groupId, setGroupId] = React.useState(-1) - - const [numberDirection, setNumberDirection] = React.useState(true); // 방향지정 및 이벤트. true이면 오름차순이다. false이면 내림차순 - const [gradeDirection, setGradeDirection] = React.useState(true); - const [studentIdDirection, setStudentIdDirection] = React.useState(true); - const [phoneNumberDirection, setPhoneNumberDirection] = React.useState(true); - const [nameDirection, setNameDirection] = React.useState(true); - const [roleDirection, setRoleDirection] = React.useState(true); - const [attendanceDirection, setAttendanceDirection] = React.useState(true); - const [genderDirection, setGenderDirection] = React.useState(true); - - const [subScreenTitle,setSubScrrenTitle] =React.useState(null); - - -// 회원 목록 조회탭에 관련된 함수들. - - const loadMemberList = (direction,page,type) => { //회원 목록 조회 - axios.get(`/club/executives/members?direction=${direction}&page=${page}&size=19&type=${type}`,{ - }) - .catch(function (error) { - console.log(error.toJSON()); - }) - .then(function (res) { - console.log(res); - settotalPage(res.data.data.totalPages) - setPosts((current) => res.data.data.content) - setLoad(true) - }); - } - - const loadMeberSearchList = (direction,page,searchType,sortType,word) => { //회원 검색 검색어 - axios.get(`/club/executives/members/search?direction=${direction}&page=${page}&searchType=${searchType}&size=19&sortType=${sortType}&word=${word}`,{ - }) - .catch(function (error) { - console.log(error.toJSON()); - }) - .then(function (res) { - console.log(res); - settotalPage(res.data.data.totalPages) - setPosts(res.data.data.content) - setLoad(true) - }); - } - - const loadMemberSearchAcademicStatusesList = (direction,academicStatus,page,sortType) => { // 회원 검색 (학적상태) - axios.get(`/club/executives/members/academic-statuses?academicStatus=${academicStatus}&direction=${direction}&page=${page}&size=19&sortType=${sortType}`,{ - }) - .catch(function (error) { - console.log(error.toJSON()); - }) - .then(function(res){ - console.log(res); - settotalPage(res.data.data.totalPages) - setPosts(res.data.data.content) - setLoad(true) - }); - } - - const loadMemberSearchAuthoritiesList = (direction,authority,page,sortType) => { // 회원 검색 (권한) - axios.get(`/club/executives/members/authorities?authority=${authority}&direction=${direction}&page=${page}&size=19&sortType=${sortType}`,{ - }) - .catch(function (error) { - console.log(error.toJSON()); - }) - .then(function(res){ - console.log(res); - console.log("회원 검색 권한 로드 완료!!!!!!"); - settotalPage(res.data.data.totalPages) - setPosts((current) => res.data.data.content) - setLoad(true) - }); - } - - const loadMemberSearchGenderList = (direction,gender,page,sortType) => { // 회원 검색 (성별) - axios.get(`/club/executives/members/genders?direction=${direction}&gender=${gender}&page=${page}&size=19&sortType=${sortType}`,{ - }) - .catch(function (error) { - console.log(error.toJSON()); - }) - .then(function(res){ - console.log(res); - settotalPage(res.data.data.totalPages) - setPosts(res.data.data.content) - }); - } - - const loadMemberSearchGradesList = (direction,grade,page,sortType) => { // 회원 검색 (학년) - axios.get(`/club/executives/members/grades?direction=${direction}&grade=${grade}&page=${page}&size=19&sortType=${sortType}`,{ - }) - .catch(function (error) { - console.log(error.toJSON()); - }) - .then(function(res){ - console.log(res); - settotalPage(res.data.data.totalPages) - setPosts(res.data.data.content) - }); - } - - const loadMemberSearchGruopList = (direction,groupId,page,sortType) => { // 회원 검색 (그룹) - axios.get(`/club/executives/members/groups?direction=${direction}&groupId=${groupId}&page=${page}&size=19&sortType=${sortType}`,{ - }) - .catch(function (error) { - console.log(error.toJSON()); - }) - .then(function(res){ - console.log(res); - settotalPage(res.data.data.totalPages) - setPosts(res.data.data.content) - }); - } - - const handleSearchFunction = (option) => { - const PageReducer = props.PageReducer - //console.log(data.option.includes("검색어")); - if(option.includes("검색어") === true){ // 검색어 요청 - if(option === "검색어 (이름)"){ - //loadMeberSearchList = (direction,page,searchType,sortType,word) - console.log("검색어 (이름)"); - console.log(discriminationDirection(direction)); - console.log(PageReducer.page); - console.log(PageReducer.selected); - console.log(PageReducer.isSearching[2]); - loadMeberSearchList(discriminationDirection(direction),PageReducer.page,'NAME',PageReducer.selected,PageReducer.isSearching[2]) - } - else if(option === "검색어 (학번)"){ - loadMeberSearchList(discriminationDirection(direction),PageReducer.page,'STUDENT_ID',PageReducer.selected,PageReducer.isSearching[2]) - } - else if(option === "검색어 (번호)"){ - loadMeberSearchList(discriminationDirection(direction),PageReducer.page,'PHONE',PageReducer.selected,PageReducer.isSearching[2]) - } - else if(option === "검색어 (학과)"){ - loadMeberSearchList(discriminationDirection(direction),PageReducer.page,'DEPARTMENT',PageReducer.selected,PageReducer.isSearching[2]) - } - } - else if(option === "그룹"){ - // const loadMemberSearchGruopList = (direction,groupId,page,sortType) - // groupId는 호출에 따라서 수행. - console.log(groupList); - console.log(PageReducer); - const keyword = PageReducer.isSearching[2] - const gruopId = (groupList.find(item => item.name === keyword))? groupList.find(item => item.name === keyword).id : null - if(gruopId){ - loadMemberSearchGruopList(discriminationDirection(direction),gruopId,PageReducer.page,PageReducer.selected) - } - else{ - alert("잘못된 동아리를 입력하셨습니다. 다시 입력해주세요") - } - } - else if(option === "권한"){ - console.log(PageReducer.isSearching[2]); - const keyword = PageReducer.isSearching[2] - console.log(keyword); - if(keyword === "전체" || keyword === "회원" || keyword === "운영진" || keyword === "회장"){ - switch(keyword){ - case "전체":{ - loadMemberSearchAuthoritiesList(discriminationDirection(direction),"ALL",PageReducer.page,PageReducer.selected) - break; - } - case "회원":{ - loadMemberSearchAuthoritiesList(discriminationDirection(direction),"MEMBER",PageReducer.page,PageReducer.selected) - break; - } - case "운영진":{ - loadMemberSearchAuthoritiesList(discriminationDirection(direction),"EXECUTIVE",PageReducer.page,PageReducer.selected) - break; - } - case "회장":{ - loadMemberSearchAuthoritiesList(discriminationDirection(direction),"PRESIDENT",PageReducer.page,PageReducer.selected) - break; - } - } - - } - else{ - alert("잘못된 검색입니다. 검색어로는 전체,회원,운영진,회장 입니다.") - } - // loadMemberSearchAuthoritiesList = (direction,authority,page,sortType) - // authority를 호출에 따라서 수행 - - } - else if(option === "학적상태"){ - const keyword = PageReducer.isSearching[2] - if(keyword === "재학" || keyword === "휴학" || keyword === "졸업" || keyword === "그외"){ - switch(keyword){ - case "재학":{ - loadMemberSearchAcademicStatusesList(discriminationDirection(direction),"ATTENDING",PageReducer.page,PageReducer.selected) - break; - } - case "휴학":{ - loadMemberSearchAcademicStatusesList(discriminationDirection(direction),"ABSENCE",PageReducer.page,PageReducer.selected) - break; - } - case "졸업":{ - loadMemberSearchAcademicStatusesList(discriminationDirection(direction),"GRADUATED",PageReducer.page,PageReducer.selected) - break; - } - case "그외":{ - loadMemberSearchAcademicStatusesList(discriminationDirection(direction),"ETC",PageReducer.page,PageReducer.selected) - break; - } - } - } - else{ - alert("잘못된 검색입니다. 검색어로는 재학,휴학,졸업,그외 입니다.") - } - //loadMemberSearchAcademicStatusesList = (direction,academicStatus ,page,sortType) - - } - else if(option === "성별"){ - //loadMemberSearchGenderList = (direction,gender,page,sortType) - //gender는 따로 - const keyword = PageReducer.isSearching[2] - if(keyword === "남" || keyword === "여"){ - switch(keyword){ - case "남":{ - loadMemberSearchGenderList(discriminationDirection(direction),"MAN",PageReducer.page,PageReducer.selected) - break; - } - case "여":{ - loadMemberSearchGenderList(discriminationDirection(direction),"WOMAN",PageReducer.page,PageReducer.selected) - break; - } - } - } - else{ - alert("잘못된 검색입니다. 검색어로는 남(여) 입니다.") - } - - } - else if(option === "학년"){ - //loadMemberSearchGradesList = (direction,grade,page,sortType) - //grade는 따로 - const keyword = PageReducer.isSearching[2] - if(keyword === "1" || keyword === "2" || keyword === "3" || keyword === "4" || keyword === "그외"){ - switch(keyword){ - case "1":{ - loadMemberSearchGradesList(discriminationDirection(direction),"FRESHMAN",PageReducer.page,PageReducer.selected) - break; - } - case "2":{ - loadMemberSearchGradesList(discriminationDirection(direction),"SOPHOMORE",PageReducer.page,PageReducer.selected) - break; - } - case "3":{ - loadMemberSearchGradesList(discriminationDirection(direction),"JUNIOR",PageReducer.page,PageReducer.selected) - break; - } - case "4":{ - loadMemberSearchGradesList(discriminationDirection(direction),"SENIOR",PageReducer.page,PageReducer.selected) - break; - } - case "그 외":{ - loadMemberSearchGradesList(discriminationDirection(direction),"ETC",PageReducer.page,PageReducer.selected) - break; - } - } - } - else{ - alert("잘못된 검색입니다. 검색어로는 1, 2, 3, 4, 그외 입니다.") - } - } - } - - // 회원 가입 승인 탭에 관련된 함수 - const loadMemberPermissionList = (page) => { // 회원 권한 요청 목록 조회 - axios.get(`/club/executives/requests?page=${page}&role=ROLE_MEMBER&size=${19}`,{ - }) - .catch(function (error) { - console.log(error.toJSON()); - }) - .then(function(res){ - console.log(res); - settotalPage(res.data.data.totalPages) - setPosts((current) => res.data.data.content) - setLoad(true) - }); - } - - const loadMemberPermissionSearch = (page,type,word) => {// 회원 권한 요청 목록 검색 - axios.get(`/club/executives/requests/search?page=${page}&size=19&type=${type}&word=${word}`,{ - }) - .catch(function (error) { - console.log(error.toJSON()); - }) - .then(function(res){ - console.log(res); - settotalPage(res.data.data.totalPages) - setPosts((current) => res.data.data.content) - setLoad(true) - }); - } - - const handleMemberPermissionSearchFuntion = (option) => { - console.log(option); - const PageReducer = props.PageReducer - console.log(PageReducer.isSearching[2]); - const keyword = PageReducer.isSearching[2] - if(option === "이름"){ - loadMemberPermissionSearch(PageReducer.page,"NAME",keyword) - } - else if(option === "학번"){ - loadMemberPermissionSearch(PageReducer.page,"STUDENT_ID",PageReducer.isSearching[2]) - } - } - - //그룹 관리 API - - const loadGroupMemberList = (direction, groupId, page, role, type) => { // 그룹원 목록 조회 - axios.get(`/groups/executives/members?direction=${direction}&groupId=${groupId}&page=${page}&role=${role}&size=19&type=${type}`,{ - }) - .catch(function (error) { - console.log(error.toJSON()); - }) - .then(function (res) { - console.log(res); - //setSubScrrenTitle(groupInfor.name) - settotalPage(res.data.data.totalPages) - setPosts(res.data.data.content) - setLoad(true) - }); - } - - const loadGroupSearchList = (direction,groupId,page,searchType,sortType,word ) => { //그룹원 검색(검색어 - axios.get(`/groups/executives/members/search?direction=${direction}&groupId=${groupId}&page=${page}&size=19&searchType=${searchType}&sortType=${sortType}&word=${word}`,{ - }) - .catch(function (error) { - console.log(error.toJSON()); - }) - .then(function (res) { - //console.log(res); - settotalPage(res.data.data.totalPages) - setPosts((current) => res.data.data.content) - setLoad(true) - }); - } - - const loadGroupSearchGradesList = (direction,groupId,page,sortType,grade) => { //그룹원 검색(학년) - axios.get(`/groups/executives/members/grades?direction=${direction}&grade=${grade}&groupId=${groupId}&page=${page}&size=19&sortType=${sortType}`,{ - }) - .catch(function (error) { - console.log(error.toJSON()); - }) - .then(function (res) { - //console.log(res); - settotalPage(res.data.data.totalPages) - setPosts((current) => res.data.data.content) - setLoad(true) - }); - } - - const loadGroupSearchGenderList = (direction,groupId,page,sortType,gender) => { //그룹원 검색(성별) - axios.get(`/groups/executives/members/grades?direction=${direction}&groupId=${groupId}&page=${page}&size=19&gender=${gender}&sortType=${sortType}`,{ - }) - .catch(function (error) { - console.log(error.toJSON()); - }) - .then(function (res) { - //console.log(res); - settotalPage(res.data.data.totalPages) - setPosts((current) => res.data.data.content) - setLoad(true) - }); - } - - const loadGroupSearchAcademicStatusesList = (direction,groupId,page,sortType,academicStatus) => { //그룹원 검색(학적) - axios.get(`/groups/executives/members/academic-statuses?academicStatus=${academicStatus}&direction=${direction}&groupId=${groupId}&page=${page}&size=19&sortType=${sortType}`,{ - }) - .catch(function (error) { - console.log(error.toJSON()); - }) - .then(function (res) { - //console.log(res); - settotalPage(res.data.data.totalPages) - setPosts((current) => res.data.data.content) - setLoad(true) - }); - } - - const handleGroupSearchFunction = (option) => { - const PageReducer = props.PageReducer - if(option.includes("검색어") === true){ // 검색어 요청 - console.log(discriminationDirection(direction)); - console.log(PageReducer.page); - console.log(PageReducer.selected); - console.log(PageReducer.isSearching[2]); - if(option === "검색어 (이름)"){ - //loadGroupSearchList = (direction,groupId,page,searchType,sortType,word ) - console.log("검색어 (이름)"); - loadGroupSearchList(discriminationDirection(direction),groupId,PageReducer.page,'NAME',PageReducer.selected,PageReducer.isSearching[2]) - } - else if(option === "검색어 (학번)"){ - loadGroupSearchList(discriminationDirection(direction),groupId,PageReducer.page,'STUDENT_ID',PageReducer.selected,PageReducer.isSearching[2]) - } - else if(option === "검색어 (번호)"){ - loadGroupSearchList(discriminationDirection(direction),groupId,PageReducer.page,'PHONE',PageReducer.selected,PageReducer.isSearching[2]) - } - else if(option === "검색어 (학과)"){ - loadGroupSearchList(discriminationDirection(direction),groupId,PageReducer.page,'DEPARTMENT',PageReducer.selected,PageReducer.isSearching[2]) - } - } - else if(option === "학적상태"){ - const keyword = PageReducer.isSearching[2] - if(keyword === "재학" || keyword === "휴학" || keyword === "졸업" || keyword === "그외"){ - switch(keyword){ - case "재학":{ - loadGroupSearchAcademicStatusesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"ATTENDING") - break; - } - case "휴학":{ - loadGroupSearchAcademicStatusesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"ABSENCE") - break; - } - case "졸업":{ - loadGroupSearchAcademicStatusesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"GRADUATED") - break; - } - case "그외":{ - loadGroupSearchAcademicStatusesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"ETC") - break; - } - } - } - else{ - alert("잘못된 검색입니다. 검색어로는 재학,휴학,졸업,그외 입니다.") - } - //loadMemberSearchAcademicStatusesList = (direction,academicStatus ,page,sortType) - - } - else if(option === "성별"){ - //loadGroupSearchGenderList = (direction,groupId,page,sortType,gender) - //gender는 따로 - const keyword = PageReducer.isSearching[2] - if(keyword === "남" || keyword === "여"){ - switch(keyword){ - case "남":{ - loadGroupSearchGenderList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"MAN") - break; - } - case "여":{ - loadGroupSearchGenderList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"WOMAN") - break; - } - } - } - else{ - alert("잘못된 검색입니다. 검색어로는 남(여) 입니다.") - } - - } - else if(option === "학년"){ - //loadGroupSearchGradesList = (direction,groupId,page,searchType,grade) - //grade는 따로 - const keyword = PageReducer.isSearching[2] - if(keyword === "1" || keyword === "2" || keyword === "3" || keyword === "4" || keyword === "그외"){ - switch(keyword){ - case "1":{ - loadGroupSearchGradesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"FRESHMAN") - break; - } - case "2":{ - loadGroupSearchGradesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"SOPHOMORE") - break; - } - case "3":{ - loadGroupSearchGradesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"JUNIOR") - break; - } - case "4":{ - loadGroupSearchGradesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"SENIOR") - break; - } - case "그 외":{ - loadGroupSearchGradesList(discriminationDirection(direction),groupId,PageReducer.page,PageReducer.selected,"ETC") - break; - } - } - } - else{ - alert("잘못된 검색입니다. 검색어로는 1, 2, 3, 4, 그외 입니다.") - } - } - } - - - - - - React.useEffect(()=>{ - const PageReducer = props.PageReducer - console.log("props 값 변환"); - console.log("props 작동!!!"); - //console.log(props); - if(SubCategory === undefined){ // 네비바에서 이동해옴.,, - const roles = props.userReducer.roles - const AllLeader = (roles.includes("ROLE_GROUP_PRESIDENT")&&roles.includes("ROLE_CLUB_PRESIDENT")) // 동아리 회장이자, 소모임 회장 - const ClubLeaderGroupExecutive = (roles.includes("ROLE_CLUB_PRESIDENT")&&roles.includes("ROLE_GROUP_EXECUTIVE")) // 동아리 회장, 소모임 임원 - const ClubLeader = props.userReducer.roles.includes("ROLE_CLUB_PRESIDENT") // 동아리 회장 - const ClubExecutiveGroupLeader = (roles.includes("ROLE_GROUP_PRESIDENT")&&roles.includes("ROLE_CLUB_EXECUTIVE")) // 동아리 임원, 소모임 회장 - const GroupLeader = props.userReducer.roles.includes("ROLE_GROUP_PRESIDENT") // 소모임 회장 - const ClubExecutiveGroupExecutive = (roles.includes("ROLE_GROUP_EXECUTIVE")&&roles.includes("ROLE_CLUB_EXECUTIVE")) // 동아리 임원, 소모임 임원 - const ClubExecutive = props.userReducer.roles.includes("ROLE_CLUB_EXECUTIVE") // 동아리 임원 - const GroupExecutive = props.userReducer.roles.includes("ROLE_GROUP_EXECUTIVE") // 소모임 인원 - - console.log(ClubExecutiveGroupExecutive); - const category = getAuthority(AllLeader,ClubLeaderGroupExecutive,ClubLeader,ClubExecutiveGroupLeader,GroupLeader,ClubExecutiveGroupExecutive,ClubExecutive,GroupExecutive) - console.log(AllLeader,ClubLeaderGroupExecutive,ClubLeader,ClubExecutiveGroupLeader,GroupLeader,ClubExecutiveGroupExecutive,ClubExecutive,GroupExecutive); - console.log(category); - axios.get(`/members/groups`,{ - }) - .catch(function (error) { - console.log(error.toJSON()); - }) - .then(function (res) { - //console.log(res.data.data); - setGroupList(res.data.data) - }) - - const userReducer = props.userReducer; - - let groupInfor = userReducer.group.find(item => (item.role === "회장")) - let groupId = "" - if(groupInfor){ - console.log("회장일때!"); - console.log(groupInfor); - setGroupId(groupInfor.id) - setSubScrrenTitle(groupInfor.name) - groupId = groupInfor.id - console.log(groupId); - } - else if(groupInfor = userReducer.group.find(item => (item.role === "임원"))){ - groupId = groupInfor.id - console.log("임원일때!"); - console.log(groupInfor); - setGroupId(groupInfor.id) - setSubScrrenTitle(groupInfor.name) - } - else{ - groupId = 0 - setGroupId(-1) - setSubScrrenTitle("error") - } - - - - if(category.find(item => item.boardName === "회원 목록 조회") !== undefined){ // 회원 목록 조회 즉 동아리 회장이거나 임원일때 - axios.get(`/club/executives/members?direction=${"ASC"}&page=${0}&size=19&type=${"ID"}`,{ - }) - .catch(function (error) { - console.log(error.toJSON()); - }) - .then(function (res) { - console.log(res); - settotalPage(res.data.data.totalPages) - setPosts(res.data.data.content) - setTarget("회원 목록 조회") - setPage(PageReducer.page) - //setSelected(PageReducer.selected) - setSubCategory(category) - - }); - } - else if(category.find(item => item.boardName === "그룹 회원 목록 조회")){ // 그룹원 목록 조회 즉 소모임 회장이거나 임원일때 - - axios.get(`/groups/executives/members?direction=${"ASC"}&groupId=${groupId}&page=1&role=MEMBER&size=19&type=ID`,{ - }) - .catch(function (error) { - console.log(error.toJSON()); - }) - .then(function (res) { - console.log(res); - settotalPage(res.data.data.totalPages) - setPosts(res.data.data.content) - setTarget("그룹 회원 목록 조회") - setPage(PageReducer.page) - console.log("최초시행 작동!"); - setSubCategory(category) - }); - } - - } - else{ - if(PageReducer.boardId === "회원 목록 조회" || PageReducer.boardId === "회원 강제 탈퇴" || (PageReducer.boardId===""&&target === "회원 목록 조회") || PageReducer.boardId === "회장 위임" || PageReducer.boardId === "그룹 회장 권한 부여"){ - if(PageReducer.isSearching[0] === true){ - console.log("검색로직 작동!"); - //console.log(PageReducer); - handleSearchFunction(PageReducer.isSearching[1]) - //loadMeberSearchList(discriminationDirection(direction),PageReducer.page,PageReducer.isSearching[1],PageReducer.selected,PageReducer.isSearching[2]) - } - else{ - console.log("hahah"); - loadMemberList(discriminationDirection(direction),PageReducer.page,PageReducer.selected) - } - } - else if(PageReducer.boardId === "회원 가입 승인 및 거절"){ - console.log("회원 가입 승인!!!"); - if(PageReducer.isSearching[0] === true){ - console.log("검색로직 작동!"); - handleMemberPermissionSearchFuntion(PageReducer.isSearching[1]) - } - else{ - loadMemberPermissionList(PageReducer.page) - } - } - else if(PageReducer.boardId === "회원 권한 부여"){ // 추후 load 필요 - if(PageReducer.isSearching[0] === true){ - console.log("회원 권한 부여 검색로직 작동!"); - //console.log(PageReducer); - handleSearchFunction(PageReducer.isSearching[1]) - //loadMeberSearchList(discriminationDirection(direction),PageReducer.page,PageReducer.isSearching[1],PageReducer.selected,PageReducer.isSearching[2]) - } - } - else if(PageReducer.boardId === "운영진 권한 부여 및 회원 권한 해제"){ // 추후 load 변경 - console.log("운영진 권한 부여 및 회원 권한 해제 로직 작동!"); - loadMemberSearchAuthoritiesList(discriminationDirection(direction),"MEMBER",PageReducer.page,PageReducer.selected) - }//loadMemberSearchAuthoritiesList - else if(PageReducer.boardId === "운영진 권한 해제"){ // 추후 load 변경 - console.log("운영진 권한 해제 로직 작동!"); - loadMemberSearchAuthoritiesList(discriminationDirection(direction),"EXECUTIVE",PageReducer.page,PageReducer.selected) - } - else if(PageReducer.boardId ==="그룹 회원 목록 조회" || target === "그룹 회원 목록 조회"){ - - if(PageReducer.isSearching[0] === true){ - console.log("그룹 회원 목록 조회의 검색로직 작동!"); - handleGroupSearchFunction(PageReducer.isSearching[1]) - } - else{ - loadGroupMemberList(discriminationDirection(direction),groupId,PageReducer.page,"MEMBER",PageReducer.selected) - } - } - else if(PageReducer.boardId === "그룹 가입 승인"){ - if(PageReducer.isSearching[0] === true){ - console.log("그룹 가입 승인의 검색로직 작동!"); - handleGroupSearchFunction(PageReducer.isSearching[1]) - } - else{ - loadGroupMemberList(discriminationDirection(direction),groupId,PageReducer.page,"APPLICANT",PageReducer.selected) - } - } - else if(PageReducer.boardId === "그룹 강제 탈퇴" || PageReducer.boardId === "그룹 임원 권한 부여"){ - - if(PageReducer.isSearching[0] === true){ - console.log("검색로직 작동!"); - handleGroupSearchFunction(PageReducer.isSearching[1]) - } - else{ - loadGroupMemberList(discriminationDirection(direction),groupId,PageReducer.page,"MEMBER",PageReducer.selected) - } - } - else if(PageReducer.boardId === "그룹 회장 위임 및 임원 권한 해제"){ - - if(PageReducer.isSearching[0] === true){ - console.log("검색로직 작동!"); - handleGroupSearchFunction(PageReducer.isSearching[1]) - } - else{ - loadGroupMemberList(discriminationDirection(direction),groupId,PageReducer.page,"EXECUTIVE",PageReducer.selected) - } - } - } - - },[props]) - - React.useEffect(()=>{ - if(SubCategory !== undefined){ - console.log("target작동"); - const PageReducer = props.PageReducer - const boardId = target - console.log(boardId); - //setSelected("LASTEST") - direction = true; - sortDirection("dafalut") - setLoad(false) - props.setAll(boardId,1,[false],"ID",PageReducer.boardCategoryName) - } - },[target]) - - React.useEffect(()=>{ - if(SubCategory !== undefined){ - console.log("page작동"); - const PageReducer = props.PageReducer - props.setAll(PageReducer.boardId,page,PageReducer.isSearching,PageReducer.selected,PageReducer.boardCategoryName) - } - },[page]) - - const { register, handleSubmit, watch, formState: { errors } } = useForm(); - const onSubmit = data => console.log(data); - - const handleSearching = (data,e) => { // 사용자가 검색을 했을때 - console.log(data); - const PageReducer = props.PageReducer - //let searchType = "" // 검색 타입 Available values : NAME, STUDENT_ID, DEPARTMENT, PHONE - // let searchType - // switch(data.option){ - // case(): - // } - - //console.log(data.option.includes("검색어")); - - props.setAll(PageReducer.boardId,1,[true,data.option,data.keyword],PageReducer.selected,PageReducer.boardCategoryName) - } - - const handleNumber = () => { - const PageReducer = props.PageReducer - direction = !numberDirection - setNumberDirection((current)=> !current) - const sortType = "ID" - props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,sortType,PageReducer.boardCategoryName) - } - - const sortDirection = (type) => { // 클릭한 항목을 제외, UI적으로 변경하는 함수 - switch(type){ - case "Number":{ - setGradeDirection(true) - setStudentIdDirection(true) - setPhoneNumberDirection(true) - setNameDirection(true) - setRoleDirection(true) - setAttendanceDirection(true) - setGenderDirection(true) - break; - } - case "Grade":{ - setNumberDirection(true) - setStudentIdDirection(true) - setPhoneNumberDirection(true) - setNameDirection(true) - setRoleDirection(true) - setAttendanceDirection(true) - setGenderDirection(true) - break; - } - case "StudentId":{ - setNumberDirection(true) - setGradeDirection(true) - setPhoneNumberDirection(true) - setNameDirection(true) - setRoleDirection(true) - setAttendanceDirection(true) - setGenderDirection(true) - break; - } - case "PhoneNumber":{ - setNumberDirection(true) - setGradeDirection(true) - setStudentIdDirection(true) - setNameDirection(true) - setRoleDirection(true) - setAttendanceDirection(true) - setGenderDirection(true) - break; - } - case "Name":{ - setNumberDirection(true) - setGradeDirection(true) - setStudentIdDirection(true) - setPhoneNumberDirection(true) - setRoleDirection(true) - setAttendanceDirection(true) - setGenderDirection(true) - break; - } - case "Attendance":{ - setNumberDirection(true) - setGradeDirection(true) - setStudentIdDirection(true) - setPhoneNumberDirection(true) - setNameDirection(true) - setRoleDirection(true) - setGenderDirection(true) - break; - } - case "Gender":{ - setNumberDirection(true) - setGradeDirection(true) - setStudentIdDirection(true) - setPhoneNumberDirection(true) - setNameDirection(true) - setRoleDirection(true) - setAttendanceDirection(true) - break; - } - default:{ - setNumberDirection(true) - setGradeDirection(true) - setStudentIdDirection(true) - setPhoneNumberDirection(true) - setNameDirection(true) - setRoleDirection(true) - setAttendanceDirection(true) - setGenderDirection(true) - } - } - } - - const handleSort = (type) => { // 클릭시 새롭게 페이지를 로드를 유발하는 함수 - const PageReducer = props.PageReducer - let sortType - - switch(type){ - case "Number":{ - direction = !numberDirection - console.log(direction); - setNumberDirection((current)=> !current) - sortType = "ID" - console.log("번호 호출"); - - } - case "Grade":{ - direction = !gradeDirection - setGradeDirection((current)=> !current) - sortType = "GRADE" - console.log("학년 호출"); - break; - - } - case "StudentId":{ - direction = !studentIdDirection - setStudentIdDirection((current)=> !current) - sortType = "STUDENT_ID" - console.log("학번 호출"); - break; - } - case "PhoneNumber":{ - direction = !phoneNumberDirection - setPhoneNumberDirection((current)=> !current) - sortType = "PHONE" - console.log("번호 호출"); - break; - } - case "Name":{ - direction = !nameDirection - setNameDirection((current)=> !current) - sortType = "NAME" - console.log("이름 호출"); - break; - } - case "Attendance":{ - direction = !attendanceDirection - setAttendanceDirection((current)=> !current) - sortType = "ACADEMIC_STATUS" - console.log("학적 호출"); - break; - } - case "Gender":{ - direction = !genderDirection - setGenderDirection((current)=> !current) - sortType = "GENDER" - console.log("성별 호출"); - break; - } - default:{ - - } - } - sortDirection(type) - props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,sortType,PageReducer.boardCategoryName) - - } - - return ( - <> - - - - {((target === "그룹 가입 승인")||(target === "그룹 강제 탈퇴")||(target === "그룹 임원 권한 부여")||(target === "그룹 회장 위임"))? - {target} | {subScreenTitle} - : - {target} - } - - {((target === "회원 목록 조회")||(target === "회원 강제 탈퇴")||(target === "운영진 권한 부여")||(target === "그룹 회장 위임")||(target === "회장 위임")||(target === "그룹 회장 권한 부여")||(target === "회원 권한 부여"))? - - - - - - - - - - - - - - - - - - - - - - - : - null - } - - - {(props.PageReducer.boardId === "회원 가입 승인 및 거절")? - - - - - - - - - - - - - - : - null - } - - {((target === "그룹 회원 목록 조회"))? - - - - - - - - - - - - - - - - - - - : - null - } - {((target === "전체 동아리원 초기화")||(target ==="게시판 추가 및 삭제")) - ? - null - : - - - {(numberDirection === true) ? - {handleNumber()}}>번호 - : - {handleNumber()}}>번호 - } - {(gradeDirection === true) ? - {handleSort("Grade")}}>학년 - : - {handleSort("Grade")}}>학년 - } - {(studentIdDirection === true) ? - {handleSort("StudentId")}}>학번 - : - {handleSort("StudentId")}}>학번 - } - {(phoneNumberDirection === true) ? - {handleSort("PhoneNumber")}} post>연락처 - : - {handleSort("PhoneNumber")}} post>연락처 - } - {(nameDirection === true) ? - {handleSort("Name")}}>이름 - : - {handleSort("Name")}}>이름 - } - 회원직책 - {(attendanceDirection === true) ? - {handleSort("Attendance")}}>학적 - : - {handleSort("Attendance")}}>학적 - } - {(genderDirection === true) ? - {handleSort("Gender")}}>성별 - : - {handleSort("Gender")}}>성별 - } - {((target !== "회원 목록 조회")||(target !=="그룹 회원 목록 조회")) ? 버튼 : null} - - - } - - - - {(load)? - <> - {(target === "회원 목록 조회" && posts !== []) ? - - : - null - } - - {(props.PageReducer.boardId === "회원 가입 승인 및 거절" && posts !== []) ? - - : - null - } - - {(props.PageReducer.boardId === "회원 권한 부여" && posts !== []) ? - - : - null - } - - {(props.PageReducer.boardId === "운영진 권한 부여 및 회원 권한 해제" && posts !== []) ? - - : - null //운영진 권한 해제 - } - - {(props.PageReducer.boardId === "운영진 권한 해제" && posts !== []) ? - - : - null - } - - {(props.PageReducer.boardId === "그룹 회장 권한 부여" && posts !== []) ? - - : - null - } - - {(props.PageReducer.boardId === "회원 강제 탈퇴" && posts !== [])? - - : - null - } - - {(props.PageReducer.boardId === "회장 위임" && posts !== []) ? - - : - null - } - - {(target === "그룹 회원 목록 조회" && posts !== [] ) ? - - : - null - } - - {(target === "그룹 가입 승인" && posts !== [] ) ? - - : - null - } - - {(target === "그룹 강제 탈퇴" && posts !== [] ) ? - - : - null - } - - {(target === "그룹 임원 권한 부여" && posts !== [] ) ? - - : - null - } - - {(target === "그룹 회장 위임 및 임원 권한 해제" && posts !== [] ) ? - - : - null - } - - - : - null - } - - {(target === "게시판 추가 및 삭제") ? - <> - - - : - null - } - - {(target === "전체 동아리원 초기화" ) ? - - : - null - } - -{((target === "전체 동아리원 초기화")||(target ==="게시판 추가 및 삭제"))? - null -: - -} - - - - ); -} -export default connect(mapStateToProps,mapDispatchToProps)(Operator); diff --git a/src/components/screens/Page_Update.js b/src/components/screens/Page_Update.js index 72145167..3e2d6e9c 100644 --- a/src/components/screens/Page_Update.js +++ b/src/components/screens/Page_Update.js @@ -35,7 +35,7 @@ const checkNotice = (type) => { function Page(props) { - const t = useParams(); + const location = useLocation().state; const pageData = location.pageData const data = useLocation().state; diff --git a/src/components/shared/BoardEdit.js b/src/components/shared/BoardEdit.js deleted file mode 100644 index ae05b7e8..00000000 --- a/src/components/shared/BoardEdit.js +++ /dev/null @@ -1,270 +0,0 @@ -import { useForm } from "react-hook-form"; -import * as React from "react"; -import { connect } from "react-redux"; -import axios from "axios"; -import { actionCreators } from "../../store"; -import styled from "styled-components"; -import img from "./../../images/Polygon.jpg"; - -const Btn = styled.button` -width: 200px; -background-color: ${(props) => (props.red ? "red" : "#6CD2D7")}; -border: none; -border-radius: 20px; -height: 50px; -background-color: ${(props) => (props.red ? "red" : "#6CD2D7")}; -margin-right: ${(props) => (props.red ? "0px" : "350px")}; -font-size: 30px; -color: white; -cursor: pointer; -` -const BtnSection = styled.div` - margin-top: 20px; - margin-bottom: 20px; -` -export const Category = styled.div` - font-size: 15px; - font-weight: 700; - color: #0b665c; - margin-top: 38px; - margin-bottom: 16px; - margin-left: 15px; - width: 910.07px; -`; -export const SearchBarSection = styled.div` - width: 910.07px; - margin: 0 auto; - min-height: 64px; - - font-size: 14px; - display: flex; - flex-direction: row; -`; -export const SearchBarForm = styled.form` - display: flex; - flex-direction: row; - margin: 0px auto; - margin-top: 16px; -`; -export const SearchBarSelect = styled.select` - width: 117px; - height: 32px; - padding-left: 8px; - border-radius: 50px; - line-height: 16.41px; - border: 1px solid #c4c4c4; - - -moz-appearance: none; - -webkit-appearance: none; - appearance: none; - background: url(${img}); - background-repeat: no-repeat; - background-size: 17px 17px; - background-position: bottom 8px right 11px; -`; -export const SearchBar = styled.div` - margin-left: 9px; - position: relative; -`; -export const SearchBarInput = styled.input` - min-width: 331.48px; - height: 31.59px; - border: 1px solid #c4c4c4; - border-radius: 50px; - padding-left: 19.87px; -`; -export const SearchBarSubmit = styled.input` - position: absolute; - right: 3.71px; - top: 4.25px; - width: 28.9px; - height: 25.27px; - border: none; - border-radius: 50px; - border-color: #c4c4c4; - background-color: #c4c4c4; - cursor: pointer; -`; -export const SearchBarFilter = styled.select` -min-width:479.328px; -height: 31.59px; -border: 1px solid #c4c4c4; -border-radius: 50px; -padding-left: 19.87px; -`; - - - -function mapStateToProps(state) { - return state; - } - - function mapDispatchToProps(dispatch) { - return { - setAll: (boardId, page, isSearching, selected, boardCategoryName) => - dispatch( - actionCreators.setAll( - boardId, - page, - isSearching, - selected, - boardCategoryName - ) - ), - }; - } - -function BoardEdit(props){ - // const [addBoard,setAddBoard] = React.useState(false); - // const [delBoard,setDelBoard] = React.useState(false); - const [category,setCategory] = React.useState(false); - const [load,setLoad] = React.useState(false); - const [trigger,setTrigger] = React.useState(false); - const groupList = props.groupList - console.log(groupList); - console.log(category); - const { register, handleSubmit } = useForm(); - const useForm2 = useForm(); - - const addBoard = (boardCategoryId,boardName) => { - axios.post(`/club/executives/boards`, { - "boardCategoryId": boardCategoryId, - "boardName": boardName - }, { - headers: { Authorization: `Bearer ${props.userReducer.token}` }, - }) - .catch(function (error) { - console.log(error.toJSON()); - }) - .then(function (res) { - console.log(res); - setTrigger((current) => !current) - setLoad(false) - }); - } - - const delBoard = (boardId) => { - axios.delete(`/club/executives/boards/${boardId}`,{ - headers: { Authorization: `Bearer ${props.userReducer.token}` }, - }) - .catch(function (error) { - console.log(error.toJSON()); - }) - .then(function (res) { - console.log(res); - setTrigger((current) => !current) - setLoad(false) - }); - } - - - const handleAddBoard = (data) => { - console.log(data); - let value = window.confirm(`${data.option}에 ${data.keyword}를 추가하시겠습니까?`) - if(value){ - if(data.option === "공지사항"){ - addBoard(1,data.keyword) - } - else if(data.option === "소모임"){ - addBoard(2,data.keyword) - } - else if(data.option === "스터디"){ - addBoard(3,data.keyword) - } - else if(data.option === "커뮤니티"){ - addBoard(4,data.keyword) - } - } - - } - const handleDelBoard = (data) => { - console.log(data); - let value = window.confirm(`정말 삭제하시겠습니까?`) - if(value){ - delBoard(data.target) - } - - } - - const OnError = (error, e) => { - console.log(error); - console.log("error"); - }; - - - React.useEffect(()=>{ - axios - .get(`/boards/categories`, { - headers: { Authorization: `Bearer ${props.userReducer.token}` }, - }) - .catch(function (error) { - console.log(error.toJSON()); - }) - .then(function (res) { - const category = [ - ...res.data.data.boards]; - setCategory((previous) => category); - setLoad(true) - }); - },[trigger]) - - return ( - <> - {load === true? - <> - <> - 게시판 추가 - - - - - - - - - - - - - - - - - - - - <> - 게시판 삭제 - - - - - {category.map((value) => ( - - ))} - - - - - - - - - : - null - } - - - - - - - - - - ) -} - -export default connect(mapStateToProps, mapDispatchToProps)(BoardEdit); \ No newline at end of file diff --git a/src/components/shared/PostGroupPermissionBar.js b/src/components/shared/PostGroupPermissionBar.js deleted file mode 100644 index 7a0f5b27..00000000 --- a/src/components/shared/PostGroupPermissionBar.js +++ /dev/null @@ -1,263 +0,0 @@ -import styled from "styled-components"; -import * as React from "react" -import {PostInforBar,PostCotent,Grade,StudentId,PhoneNumber,Name,PostRole,PostAttendance,PostGender,PostNumber,CheckBtn as Btn} from "./BoardElement" -import axios from "axios"; -import { connect } from "react-redux"; -import { actionCreators } from "../../store"; - - -export const CheckBtn = styled.div` -margin-left: ${(props) => (props.red ? "10px" : "28px")}; -width: 15px; -height: 15px; -background-color: ${(props) => (props.red ? "red" : "#6CD2D7")}; -border: none; -border-radius: 15px; -cursor: pointer; -` - -const printRole = (value) => { - if(value.includes("ROLE_CLUB_PRESIDENT")){ - return "회장" - } - else if(value.includes("ROLE_GROUP_PRESIDENT")){ - return "소모임장" - } - else if(value.includes("ROLE_CLUB_EXECUTIVE")){ - return "운영진" - } - else if(value.includes("ROLE_GROUP_EXECUTIVE")){ - return "그룹운영진" - } - else if(value.includes("ROLE_MEMBER")){ - return "일반" - } - else if(value.includes("ROLE_GUEST")){ - return "게스트" - } - else if(value.includes("ROLE_BAN")){ - return "밴" - } - else if(value.includes("ROLE_RESIGN")){ - return "사직" - } -} - -function mapDispatchToProps(dispatch){ - return{ - setAll: (boardId,page,isSearching,selected,boardCategoryName) => dispatch(actionCreators.setAll(boardId,page,isSearching,selected,boardCategoryName)), - } - } - -function mapStateToProps(state) { - return state; - } - -function PostGroupPermissionBar(props){ - - console.log(props); - const groupId = props.groupId - console.log(groupId); - const permissionGroup = (groupId, memberId) => { - axios.patch(`/groups/executives/applicants/approve?groupId=${groupId}&memberId=${memberId}`, - { - }) - .catch(function (error) { - console.log(error); - }) - .then(function (res) { - console.log(res); - const PageReducer = props.PageReducer - props.setAll("그룹 가입 승인",PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) - }); - } - - const rejectionGroup = (groupId, memberId) => { - axios.delete(`/groups/executives/applicants/reject?groupId=${groupId}&memberId=${memberId}`,{},{ - }) - .catch(function (error) { - console.log(error); - }) - .then(function (res) { - console.log(res); - const PageReducer = props.PageReducer - props.setAll("그룹 가입 승인",PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) - }); - } - - const promoteGroup = (groupId,memberId) => { // 임원 승급 - axios.patch(`/groups/president/promote?groupId=${groupId}&memberId=${memberId}`,{ - }) - .catch(function (error) { - console.log(error); - }) - .then(function (res) { - console.log(res); - const PageReducer = props.PageReducer - props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) - }); - } - - const degradeGroup = (groupId,memberId) => { // 임원 하락 - axios.patch(`/groups/president/degrade?groupId=${groupId}&memberId=${memberId}`,{ - }) - .catch(function (error) { - console.log(error); - }) - .then(function (res) { - console.log(res); - const PageReducer = props.PageReducer - props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) - }); - } - - const delegateGroup = (groupId,memberId) => { - axios.patch(`/groups/president/delegate?groupId=${groupId}&memberId=${memberId}`,{ - }) - .catch(function (error) { - console.log(error); - }) - .then(function (res) { - console.log(res); - const PageReducer = props.PageReducer - props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) - }); - } - - const kickGroup = (groupId,memberId) => { - axios.patch(`/groups/president/kick?groupId=${groupId}&memberId=${memberId}`,{ - }) - .catch(function (error) { - console.log(error); - }) - .then(function (res) { - console.log(res); - const PageReducer = props.PageReducer - props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) - }); - } - - - - - - const handlePermission = (e) => { - console.log(e); - //console.log(e.target.dataset.id); - - const check = window.confirm("이 회원의 그룹 승인을 하시겠습니까?") - console.log(check); - if(check){ - const id = e.target.dataset.id - permissionGroup(groupId,id) - } - } - - const handleRejection = (e) => { - console.log(e); - //console.log(e.target.dataset.id); - - const check = window.confirm("이 회원의 그룹 거절을 하시겠습니까?") - console.log(check); - if(check){ - const id = e.target.dataset.id - rejectionGroup(groupId,id) - } - } - - const handlePromote = (e) => { - const check = window.confirm("이 회원에게 임원권한을 부여하시겠습니까?") - console.log(check); - if(check){ - const id = e.target.dataset.id - promoteGroup(groupId,id) - } - } - - const handleDegrade = (e) => { - const check = window.confirm("이 회원의 임원권한을 해제하시겠습니까?") - console.log(check); - if(check){ - const id = e.target.dataset.id - degradeGroup(groupId,id) - } - } - - const handleDelegate = (e) => { - const name = e.target.parentNode.childNodes[4].innerText - const check = window.confirm(`${name}에게 회장을 위임 하시겠습니까?`) - console.log(check); - if(check){ - const id = e.target.dataset.id - delegateGroup(groupId,id) - } - } - - const handleKick = (e) => { - const name = e.target.parentNode.childNodes[4].innerText - const check = window.confirm(`${name}을 탈퇴시겠습니까?`) - console.log(check); - if(check){ - const id = e.target.dataset.id - kickGroup(groupId,id) - } - } -// - const postdata = props.data.map((data)=> - - - {data.id} - {data.grade} - {data.studentId} - {data.phone} - {data.name} - {printRole(data.roles)} - {data.academicStatus} - {data.gender} - {(props.type === "그룹 가입 승인")? - <> - - - - : - null - } - {(props.type === "그룹 임원 권한 부여")? - <> - - - : - null - } - {(props.type === "그룹 회장 위임 및 임원 권한 해제")? - <> - - - - : - null - } - {(props.type === "그룹 강제 탈퇴")? - <> - - - : - null - } - - - - ) - - return ( - <> - {( props.data[0] !== undefined)? - postdata - : - null - } - - ); -} - -export default React.memo(connect(mapStateToProps,mapDispatchToProps)(PostGroupPermissionBar)); \ No newline at end of file diff --git a/src/components/shared/PostMemberBar.js b/src/components/shared/PostMemberBar.js deleted file mode 100644 index b01314cc..00000000 --- a/src/components/shared/PostMemberBar.js +++ /dev/null @@ -1,241 +0,0 @@ -import styled from "styled-components"; -import * as React from "react" -import {PostInforBar,PostCotent,Grade,StudentId,PhoneNumber,Name,PostRole,PostAttendance,PostGender,PostNumber,CheckBtn,SmallCheckBtn} from "./BoardElement" -import axios from "axios"; -import { connect } from "react-redux"; -import { actionCreators } from "../../store"; - -const printRole = (value) => { - if(value.includes("ROLE_CLUB_PRESIDENT")){ - return "회장" - } - else if(value.includes("ROLE_GROUP_PRESIDENT")){ - return "운영진" - } - else if(value.includes("ROLE_CLUB_EXECUTIVE")){ - return "운영진" - } - else if(value.includes("ROLE_GROUP_EXECUTIVE")){ - return "운영진" - } - else if(value.includes("ROLE_MEMBER")){ - return "일반" - } - else if(value.includes("ROLE_GUEST")){ - return "게스트" - } - else if(value.includes("ROLE_BAN")){ - return "밴" - } - else if(value.includes("ROLE_RESIGN")){ - return "사직" - } -} - - -function mapDispatchToProps(dispatch){ - return{ - setAll: (boardId,page,isSearching,selected,boardCategoryName) => dispatch(actionCreators.setAll(boardId,page,isSearching,selected,boardCategoryName)), - } - } - -function mapStateToProps(state) { - return state; - } - -function PostMemberBar(props) { // - - //console.log(props); - let postdata = ""; - if (props.groupList) { - console.log(props.groupList); - } - - - const delegateClub = (memberId) => { //회장 위임 - axios.patch(`/club/president/delegate?memberId=${memberId}`, {}, { - }) - .catch(function (error) { - console.log(error); - }) - .then(function (res) { - console.log(res); - const PageReducer = props.PageReducer - props.setAll(PageReducer.boardId, PageReducer.page, PageReducer.isSearching, PageReducer.selected, !(PageReducer.boardCategoryName)) - }); - } - const handleDelegate = (e) => { // 회장 위임 핸들러 - const name = e.target.parentNode.childNodes[4].innerText - const check = window.confirm(`${name}의 회장 위임을 승인하시겠습니까?`) - console.log(check); - if (check) { - const id = e.target.dataset.id - delegateClub(id) - } - } - - const empowerClub = (memberId,type) => { // 회원 권한 부여 - axios.post(`/club/president/empower?memberId=${memberId}&type=${type}`,{},{ - }) - .then(function(res){ - const PageReducer = props.PageReducer - console.log(res); - props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) - }) - } - - const handleEmpower = (e,type) => { //회원권한부여 핸들러 - const name = e.target.parentNode.childNodes[4].innerText - if(type === "운영진"){ - const check = window.confirm(`${name}에게 운영진 권한을 부여하시겠습니까?`) - console.log(check); - if (check) { - const id = e.target.dataset.id - const type = "ROLE_CLUB_EXECUTIVE" - empowerClub(id,type) - } - } - else{ - const check = window.confirm(`${name}에게 회원 권한을 부여하시겠습니까?`) - console.log(check); - if (check) { - const id = e.target.dataset.id - const type = "ROLE_MEMBER" - empowerClub(id,type) - } - } - - } - - const revokePermissionClub = (memberId,type) => { //회원 권한 해제 - axios.delete(`/club/president/authority?memberId=${memberId}&type=${type}`,{},{ - }) - .then(function(res){ - const PageReducer = props.PageReducer - console.log(res); - props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) - }) - } - - const handleRevoke = (e,type) => { //회원권한해제 핸들러 - const name = e.target.parentNode.childNodes[4].innerText - if(type === "운영진"){ - const check = window.confirm(`${name}의 운영진 권한을 해제하시겠습니까?`) - console.log(check); - if (check) { - const id = e.target.dataset.id - const type = "ROLE_CLUB_EXECUTIVE" - revokePermissionClub(id,type) - } - } - else{ - const check = window.confirm(`${name}에게 회원 권한을 해제하시겠습니까?`) - console.log(check); - if (check) { - const id = e.target.dataset.id - const type = "ROLE_MEMBER" - revokePermissionClub(id,type) - } - } - } - - const empowerGroupLeader = (memberId,groupId) => { // 소모임장 권한 부여 - axios.post(`/club/executives/groups?groupId=${groupId}&memberId=${memberId}`,{},{ - }) - .then(function(res){ - const PageReducer = props.PageReducer - console.log(res); - props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) - }) - } - - const printPromt = () => { - let output = "" - - return output - } - - const handleEmpowerGroupLeader = (e) => { - const name = e.target.parentNode.childNodes[4].innerText - const check = window.confirm(`${name}에게 소그룹장의 권한을 주시겠습니까?`) - let output = "" - props.groupList.map(item => output += `${item.id}번은 ${item.name}입니다.\n`) - output+='번호를 입력해주세요.' - console.log(check); - if (check) { - const groupCheck = window.prompt(output) - const lastCheck = props.groupList.find(item => item.id === Number(Number(groupCheck))) - if(lastCheck !== undefined){ - const id = e.target.dataset.id - const groupId = lastCheck.id - empowerGroupLeader(id,groupId) - } - } - } - - if(props.data[0] !== undefined && props.data[0].member === undefined){ - postdata = props.data.map((data)=> - - - {data.id} - {data.grade} - {data.studentId} - {data.phone} - {data.name} - {printRole(data.roles)} - {data.academicStatus} - {data.gender} - {(props.type === "회장 위임") ? - <> - - - : - null - } - {(props.type === "회원 권한 부여") ? - <> - {handleEmpower(e,"회원")}}> - - : - null - } - {(props.type === "운영진 권한 부여 및 회원 권한 해제") ? - <> - {handleEmpower(e,"운영진")}}> - {handleRevoke(e,"회원")}} red> - - : - null - } - {(props.type === "운영진 권한 해제") ? - <> - { handleRevoke(e, "운영진") }} red> - - : - null - } - - {(props.type === "그룹 회장 권한 부여") ? - <> - { handleEmpowerGroupLeader(e) }}> - - : - null - } - - - - - ) - } - - - return ( - <> - {postdata} - - ); -} - -export default React.memo(connect(mapStateToProps,mapDispatchToProps)(PostMemberBar)); - diff --git a/src/components/shared/PostMemberExpulsionBar.js b/src/components/shared/PostMemberExpulsionBar.js deleted file mode 100644 index a0928350..00000000 --- a/src/components/shared/PostMemberExpulsionBar.js +++ /dev/null @@ -1,100 +0,0 @@ -import styled from "styled-components"; -import * as React from "react" -import {PostInforBar,PostCotent,Grade,StudentId,PhoneNumber,Name,PostRole,PostAttendance,PostGender,PostNumber,CheckBtn} from "./BoardElement" -import axios from "axios"; -import { connect } from "react-redux"; -import { actionCreators } from "../../store"; - -const printRole = (value) => { - if(value.includes("ROLE_CLUB_PRESIDENT")){ - return "회장" - } - else if(value.includes("ROLE_GROUP_PRESIDENT")){ - return "소모임장" - } - else if(value.includes("ROLE_CLUB_EXECUTIVE")){ - return "운영진" - } - else if(value.includes("ROLE_GROUP_EXECUTIVE")){ - return "운영진" - } - else if(value.includes("ROLE_MEMBER")){ - return "일반" - } - else if(value.includes("ROLE_GUEST")){ - return "게스트" - } - else if(value.includes("ROLE_BAN")){ - return "밴" - } - else if(value.includes("ROLE_RESIGN")){ - return "사직" - } -} - -function mapDispatchToProps(dispatch){ - return{ - setAll: (boardId,page,isSearching,selected,boardCategoryName) => dispatch(actionCreators.setAll(boardId,page,isSearching,selected,boardCategoryName)), - } - } - -function mapStateToProps(state) { - return state; - } - -function PostMemberExpulsionBar(props){ - //console.log(props.data); - //console.log(props); - - - const expulsionMember = (memberId) => { - axios.patch(`/club/president/ban?memberId=${memberId}`,{},{ - }) - .catch(function (error) { - console.log(error); - }) - .then(function (res) { - console.log(res); - const PageReducer = props.PageReducer - props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) - }); - } - - const handleExpulsion = (e) => { - console.log(e); - const name = e.target.parentNode.childNodes[4].innerText - console.log(e); - const check = window.confirm(`${name}을(를) 정말 강제로 탈퇴시키겠습니까?`) - console.log(check); - if(check){ - const id = e.target.dataset.id - expulsionMember(id) - } - } - - const postdata = props.data.map((data)=> - - - {data.id} - {data.grade} - {data.studentId} - {data.phone} - {data.name} - {printRole(data.roles)} - {data.academicStatus} - {data.gender} - - - - ) - - return ( - <> - { - postdata - } - - ); -} - -export default React.memo(connect(mapStateToProps,mapDispatchToProps)(PostMemberExpulsionBar)); \ No newline at end of file diff --git a/src/components/shared/PostMemberPermissionBar.js b/src/components/shared/PostMemberPermissionBar.js deleted file mode 100644 index 70bc6160..00000000 --- a/src/components/shared/PostMemberPermissionBar.js +++ /dev/null @@ -1,143 +0,0 @@ -import styled from "styled-components"; -import * as React from "react" -import {PostInforBar,PostCotent,Grade,StudentId,PhoneNumber,Name,PostRole,PostAttendance,PostGender,PostNumber,SmallCheckBtn} from "./BoardElement" -import axios from "axios"; -import { connect } from "react-redux"; -import { actionCreators } from "../../store"; - -const printRole = (value) => { - if(value.includes("ROLE_CLUB_PRESIDENT")){ - return "회장" - } - else if(value.includes("ROLE_GROUP_PRESIDENT")){ - return "소모임장" - } - else if(value.includes("ROLE_CLUB_EXECUTIVE")){ - return "운영진" - } - else if(value.includes("ROLE_GROUP_EXECUTIVE")){ - return "운영진" - } - else if(value.includes("ROLE_MEMBER")){ - return "일반" - } - else if(value.includes("ROLE_GUEST")){ - return "게스트" - } - else if(value.includes("ROLE_BAN")){ - return "밴" - } - else if(value.includes("ROLE_RESIGN")){ - return "사직" - } -} - -function mapDispatchToProps(dispatch){ - return{ - setAll: (boardId,page,isSearching,selected,boardCategoryName) => dispatch(actionCreators.setAll(boardId,page,isSearching,selected,boardCategoryName)), - } - } - -function mapStateToProps(state) { - return state; - } - -function PostMemberPermissionBar(props){ - // console.log(props.data); - //console.log(props); - let postdata - - const permissionMember = (requestId) => { //회원 권한 요청 승인 - axios.post(`/club/executives/authority?requestId=${requestId}`,{},{ - }) - .catch(function (error) { - console.log(error); - }) - .then(function (res) { - //console.log(res); - const PageReducer = props.PageReducer - props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) - }); - } - - const rejectMember = (requestId) => { // 회원 권한 요청 거절 - axios.delete(`/club/executives/authority?requestId=${requestId}`,{},{ - }) - .catch(function (error) { - console.log(error); - }) - .then(function (res) { - //console.log(res); - const PageReducer = props.PageReducer - props.setAll(PageReducer.boardId,PageReducer.page,PageReducer.isSearching,PageReducer.selected,!(PageReducer.boardCategoryName)) - }); - } - - - - const handlePermission = (e) => { - console.log(e); - //console.log(e.target.dataset.id); - - const check = window.confirm("이 인원의 회원 승인을 하시겠습니까?") - console.log(check); - if(check){ - const id = e.target.dataset.id - permissionMember(id) - } - - - } - - const handleReject = (e) => { - //console.log(e); - //console.log(e.target.dataset.id); - const check = window.confirm("이 인원의 회원 승인을 거절하시겠습니까?") - console.log(check); - if(check){ - const id = e.target.dataset.id - rejectMember(id) - } - } - - - - if(props.data[0] !== undefined && props.data[0].member){ - postdata = props.data.map((data)=> - - - {data.member.id} - {data.member.grade} - {data.member.studentId} - {data.member.phone} - {data.member.name} - {printRole(data.member.roles)} - {data.member.academicStatus} - {data.member.gender} - {(props.type === "회원 가입 승인 및 거절") ? - <> - - - - : - null - } - - - - - ) - } - - return ( - <> - {( props.data[0] !== undefined && props.data[0].member)? - postdata - : - null - } - - ); -} - -export default React.memo(connect(mapStateToProps,mapDispatchToProps)(PostMemberPermissionBar)); \ No newline at end of file diff --git a/src/components/shared/ResetAllMember.js b/src/components/shared/ResetAllMember.js deleted file mode 100644 index fd185de3..00000000 --- a/src/components/shared/ResetAllMember.js +++ /dev/null @@ -1,63 +0,0 @@ -import styled from "styled-components"; -import * as React from "react" -import axios from "axios"; -import { connect } from "react-redux"; -import { actionCreators } from "../../store"; - -const ResetBtn = styled.button` -margin-top: 30px; -width: 800px; -height: 300px; -background-color:#AB2C49; -font-size: 100px; -color:white; -cursor: pointer; - -&:hover{ - font-weight: 700 -} -` - -function mapDispatchToProps(dispatch){ - return{ - setAll: (boardId,page,isSearching,selected,boardCategoryName) => dispatch(actionCreators.setAll(boardId,page,isSearching,selected,boardCategoryName)), - } - } - -function mapStateToProps(state) { - return state; - } - -function ResetAllMember(props){ - - const resetMember = () => { - axios.patch(`/club/president/reset`,{ - }) - .catch(function (error) { - console.log(error.toJSON()); - }) - .then(function (res) { - console.log(res); - }); - } - - const handleReset = () => { - - const check = window.confirm(`정말 모든 동아리원의 권한을 초기화하시겠습니까?`) - if (check) { - const lastcheck = window.confirm(`이제는 다시 되돌릴 수 없습니다. 정말 모든 동아리원의 권한을 초기화하시겠습니까?`) - if(lastcheck){ - resetMember() - } - } - } - - - return ( - <> - 초기화 - - ); -} - -export default connect(mapStateToProps,mapDispatchToProps)(ResetAllMember); \ No newline at end of file