diff --git a/anwendung/src/components/InputForm.jsx b/anwendung/src/components/InputForm.jsx index 0eacbeb..ad7f0ce 100644 --- a/anwendung/src/components/InputForm.jsx +++ b/anwendung/src/components/InputForm.jsx @@ -22,26 +22,87 @@ export default function InputForm(p) { const [endDate, setEndDate] = useState(endDateParam); const [courseName, setCourseName] = useState(courseNameParam); const [users, setUsers] = useState([]); + const [checkedSelected, setCheckedSelected] = useState(new Array(100).fill(false)) + const [activatedSelected, setActivatedSelected] = useState(new Array(100).fill(false)) + const [modulesNames, setModulesNames] = useState(new Array(100).fill("Please Select")) async function getAllUsers() { + console.log("update") let sessionid = localStorage.getItem("sessionid"); let url = "http://localhost:8080/users/all?sessionid=" + sessionid; - try { - await fetch(url).then(response => response.json()).then(user => setUsers(user)); - } - catch(e) - { - router.push("/") - } + await fetch(url).then(response => response.json()).then(async user => { + setUsers(user) + let mURL = "http://localhost:8080/module/suid?sessionid=" + localStorage.getItem("sessionid") + "&semesterid=" + localStorage.getItem("currentsid") + "&userid="; + for(let i = 0; i < user.length; i++) + { + mURL += user[i].id; + if(i < user.length - 1) + { + mURL += "a"; + } + } + + fetch(mURL).then(result => result.json()).then(m => { + let temp = [] + + for(let i = 0; i < user.length; i++) + { + temp.push(m[i] != null); + } + + setCheckedSelected(temp); + + temp = [] + + for(let i = 0; i < user.length; i++) + { + temp.push(m[i] != null && m[i].activated === 1); + + if(m[i] != null) { + let tempModuleInfo = new UserModuleInfo(); + tempModuleInfo.setModuleName(m[i].name); + tempModuleInfo.setActivated(m[i].activated); + tempModuleInfo.setChecked(true); + tempModuleInfo.setUserid(user[i].id) + userModuleMapping.set(user[i].id, tempModuleInfo) + } + } + + setActivatedSelected(temp); + + temp = [] + + for(let i = 0; i < user.length; i++) + { + temp.push(m[i] == null ? "Please Select" : m[i].name); + } + + setModulesNames(temp); + + }); + + for(let i = 0; i < user.length; i++) + { + if(!userModuleMapping.has(user[i].id)) { + let tempModuleInfo = new UserModuleInfo(); + tempModuleInfo.setModuleName("Please Select"); + tempModuleInfo.setActivated(0); + tempModuleInfo.setChecked(false); + tempModuleInfo.setUserid(user[i].id) + userModuleMapping.set(user[i].id, tempModuleInfo) + } + } + }); } useEffect(() => { - userModuleMapping.clear() - getAllUsers(); + getAllUsers() + userModuleMapping.clear(); }, []) + async function onCreateClicked() { let startSplit = startDate.split("-"); let endSplit = endDate.split("-"); @@ -76,16 +137,17 @@ export default function InputForm(p) { method: method, headers: {"Content-Type": "application/json"}, body: JSON.stringify(json) - }).then(response => response.json()).then(semester => {tempsid = semester.id}); + }).then(response => response.json()).then(semester => { + tempsid = semester.id + }); - if(method === "POST") - { + if (method === "POST") { semesterid = tempsid; } - for(let [key, value] of userModuleMapping) - { + for (let [key, value] of userModuleMapping) { + let json1 = { "id": 0, "userid": value.getUserid(), @@ -93,90 +155,129 @@ export default function InputForm(p) { "name": value.getModuleName(), "activated": value.getActivated() } - - if(value.getChecked()) - { - await fetch("http://localhost:8080/module?sessionid=" + localStorage.getItem("sessionid"), { + if (value.getChecked()) { + let updateURL = "http://localhost:8080/module?sessionid=" + localStorage.getItem("sessionid"); + await fetch(updateURL, { method: method, headers: {"Content-Type": "application/json"}, body: JSON.stringify(json1) }) } + else + { + let deleteURL = "http://localhost:8080/module?sessionid=" + localStorage.getItem("sessionid") + + "&semesterid=" + semesterid + + "&userid=" + value.getUserid(); + await fetch(deleteURL, { + method: "DELETE" + }) + } } router.back(); } - class UserModuleInfo - { - constructor() - { + class UserModuleInfo { + constructor() { this.moduleName = ""; this.userid = 0; this.activated = 0 this.checked = false } - getModuleName() {return this.moduleName} - getUserid() {return this.userid} - getActivated() {return this.activated} - getChecked() {return this.checked} + getModuleName() { + return this.moduleName + } - setModuleName(name) {this.moduleName = name} - setUserid(id) {this.userid = id} - setActivated(a) {this.activated = a} - setChecked(b) {this.checked = b} + getUserid() { + return this.userid + } + + getActivated() { + return this.activated + } + + getChecked() { + return this.checked + } + + setModuleName(name) { + this.moduleName = name + } + + setUserid(id) { + this.userid = id + } + + setActivated(a) { + this.activated = a + } + + setChecked(b) { + this.checked = b + } } - function onModuleClicked(user, module) { + function onModuleClicked(user, module, index) { - if(userModuleMapping.has(user.id)) - { + if (userModuleMapping.has(user.id)) { let temp = userModuleMapping.get(user.id) temp.setModuleName(module) temp.setUserid(user.id) - console.log("test") } - else + + let temp = []; + + for(let i = 0; i < modulesNames.length; i++) { - let temp = new UserModuleInfo() - temp.setModuleName(module) - temp.setUserid(user.id) - userModuleMapping.set(user.id, temp) - console.log("test1") + temp.push(modulesNames[i]); } + + temp[index] = module; + + setModulesNames(temp); } - function onSelectedCheckBox(user, state) - { - if(userModuleMapping.has(user.id)) - { + function onSelectedCheckBox(user, state, index) { + if (userModuleMapping.has(user.id)) { userModuleMapping.get(user.id).setChecked(state.target.checked); - } - else - { + } else { let temp = new UserModuleInfo() temp.setChecked(state.target.checked) temp.setUserid(user.id) userModuleMapping.set(user.id, temp) } + let temp = [] + + for(let i = 0; i < checkedSelected.length; i++) + { + temp.push(checkedSelected[i]); + } + + temp[index] = state.target.checked; + + setCheckedSelected(temp); + } - function onActivatedCheckBox(user, state) - { - if(userModuleMapping.has(user.id)) - { + function onActivatedCheckBox(user, state, index) { + if (userModuleMapping.has(user.id)) { let t = state.target.checked ? 1 : 0; userModuleMapping.get(user.id).setActivated(t); + console.log(userModuleMapping.get(user.id).getActivated()) } - else + + let temp = [] + + for(let i = 0; i < checkedSelected.length; i++) { - let temp = new UserModuleInfo() - let t = state.target.checked ? 1 : 0; - temp.setActivated(t) - temp.setUserid(user.id) - userModuleMapping.set(user.id, temp) + temp.push(activatedSelected[i]); } + + temp[index] = state.target.checked; + + setActivatedSelected(temp); + } return ( @@ -247,24 +348,28 @@ export default function InputForm(p) { }}>Modul - {users.map(user => ( + {users.map((user, i) => ( -
{ - onSelectedCheckBox(user, e) - }}/>
+ +
{ + onSelectedCheckBox(user, e, i) + }} checked={checkedSelected[i]}/>
+ -
{ - onActivatedCheckBox(user, e); - }}/>
+ +
{ + onActivatedCheckBox(user, e, i); + }} checked={activatedSelected[i]}/>
+ {user.firstName + " " + user.lastName}