New Calender View Logic Concept

This commit is contained in:
brausjonas
2023-05-26 00:46:50 +02:00
parent 0c42a5820a
commit f52d4275ba
11 changed files with 587 additions and 490 deletions
@@ -173,58 +173,92 @@ public class DataBaseHandler
/**
ENTRIES
*/
//method that returns all entries of a day based on the given parameters
public Entry[] getEntries(int dayinweek, int weeknumber, int semesterid, User user)
public void addEntry(Entry entry)
{
try
{
//search the correct data in the database
ResultSet rs = st.executeQuery("select distinct e.id, e.dayid, e.usercreatedbyid, e.timestart, e.timeend, e.info " +
"from entries e, days d, weeks w, semester s " +
"where e.dayid = d.id and " +
"d.weekid = w.id and " +
"w.semesterid = s.id and " +
"d.dayinweek = " + dayinweek + " and " +
"w.weeknumber = " + weeknumber + " and " +
"s.id = " + semesterid);
int editable = 0;
//a temporary list to save entry objects in
List<Entry> temp = new ArrayList<>();
//while there a still entries for the day
while(rs.next())
{
editable = 0;
//if entry has been created by the requesting user set the entry to editable (or the user is admin)
if(rs.getInt("usercreatedbyid") == user.getId() || user.getPermissions() == 1)
{
editable = 1;
}
temp.add(
new Entry(
rs.getInt("id"),
rs.getInt("dayid"),
rs.getInt("usercreatedbyid"),
rs.getInt("timestart"),
rs.getInt("timeend"),
rs.getString("info"),
editable
)
);
}
//return the temporary list as an array
return temp.toArray(new Entry[0]);
} catch (SQLException e)
st.executeUpdate("insert into entries (daynumber, yearnumber, semesterid, usercreatedbyid, timestart, timeend, info) values (" +
entry.getDaynumber() + ", " + entry.getYearnumber() + ", " + entry.getSemesterid() + ", " +
entry.getUsercreatedbyid() + ", " + entry.getTimestart() + ", " + entry.getTimeend() + ", '" + entry.getInfo() + "')"
);
}
catch(Exception e)
{
throw new RuntimeException(e);
e.printStackTrace();
}
}
public Entry[][] getEntries(int semesterid, int daynumber, int yearnumber)
{
try
{
ResultSet rs = st.executeQuery("select * from entries where " +
"semesterid=" + semesterid +
" and yearnumber=" + yearnumber +
" and daynumber between " + daynumber + " and " + daynumber + 6);
List<Entry> entryList = new ArrayList<>();
Entry current = null;
while((current = resultSetToEntry(rs)) != null)
{
entryList.add(current);
}
Entry[][] entries = new Entry[6][20];
for(int i = 0; i < 6; i++)
{
for(int j = 0; j < entryList.size(); j++)
{
if(entryList.get(j).getDaynumber() == i + daynumber)
{
entries[i][j] = entryList.get(j);
}
}
}
return entries;
}
catch(Exception e)
{
return null;
}
}
public void deleteEntry(int id)
{
try
{
st.executeUpdate("delete from entries where id=" + id);
}
catch (Exception e)
{
}
}
public Entry resultSetToEntry(ResultSet rs)
{
try
{
rs.next();
return new Entry(
rs.getInt("id"),
rs.getInt("daynumber"),
rs.getInt("yearnumber"),
rs.getInt("usercreatedbyid"),
rs.getInt("timestart"),
rs.getInt("timeend"),
rs.getInt("semesterid"),
rs.getString("info")
);
}
catch(Exception e)
{
return null;
}
}
/**
SEMESTER
*/
@@ -4,22 +4,24 @@ package com.example.backend.anwprj.Entries;
public class Entry
{
private int id;
private int dayid;
private int daynumber;
private int yearnumber;
private int usercreatedbyid;
private int timestart;
private int timeend;
private int semesterid;
private String info;
private int editable;
public Entry(int id, int dayid, int usercreatedbyid, int timestart, int timeend, String info, int editable)
public Entry(int id, int daynumber, int yearnumber, int usercreatedbyid, int timestart, int timeend, int semesterid, String info)
{
this.id = id;
this.dayid = dayid;
this.daynumber = daynumber;
this.yearnumber = yearnumber;
this.usercreatedbyid = usercreatedbyid;
this.timestart = timestart;
this.timeend = timeend;
this.semesterid = semesterid;
this.info = info;
this.editable = editable;
}
public int getId()
@@ -27,9 +29,14 @@ public class Entry
return id;
}
public int getDayid()
public int getDaynumber()
{
return dayid;
return daynumber;
}
public int getYearnumber()
{
return yearnumber;
}
public int getUsercreatedbyid()
@@ -47,33 +54,13 @@ public class Entry
return timeend;
}
public int getSemesterid()
{
return semesterid;
}
public String getInfo()
{
return info;
}
public void setDayid(int dayid)
{
this.dayid = dayid;
}
public void setTimestart(int timestart)
{
this.timestart = timestart;
}
public void setTimeend(int timeend)
{
this.timeend = timeend;
}
public void setInfo(String info)
{
this.info = info;
}
public int getEditable()
{
return editable;
}
}
@@ -18,28 +18,28 @@ public class EntriesController
}
@CrossOrigin
@GetMapping("/entries")
public ResponseEntity<Entry[]> getEntries(
@RequestParam(name = "sessionid") String sessionID,
@RequestParam(name = "dayinweek") int dayinweek,
@RequestParam(name = "weeknumber") int weeknumber,
@RequestParam(name = "semesterid") int semesterid)
@PostMapping("/entries")
public ResponseEntity<Boolean> postEntry(@RequestBody Entry entry)
{
User user = UserSessionIDHandler.getUserBySessionID(sessionID);
if(user == null)
{
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
Entry[] entries = db.getEntries(dayinweek, weeknumber, semesterid, user);
return new ResponseEntity<>(entries, HttpStatus.OK);
db.addEntry(entry);
return new ResponseEntity<>(true, HttpStatus.OK);
}
@CrossOrigin
@PostMapping("/entries")
public ResponseEntity<Entry[]> postEntries(@RequestBody Entry[] entries, @RequestParam(name="sessionid") String sessionID)
@GetMapping("/entries")
public ResponseEntity<Entry[][]> getEntries(@RequestParam(name="semesterid") int semesterid,
@RequestParam(name="daynumber") int daynumber,
@RequestParam(name="yearnumber") int yearnumber)
{
return null;
return new ResponseEntity<>(db.getEntries(semesterid, daynumber, yearnumber), HttpStatus.OK);
}
@CrossOrigin
@DeleteMapping("/entries")
public ResponseEntity<Boolean> deleteEntry(@RequestParam(name="id") int id)
{
db.deleteEntry(id);
return new ResponseEntity<>(true, HttpStatus.OK);
}
}