Skip to content

Commit

Permalink
a je to, ještě asi najdu nějaké chybičky
Browse files Browse the repository at this point in the history
  • Loading branch information
Firu115 committed Jan 25, 2025
1 parent 5592659 commit f614f1f
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 17 deletions.
16 changes: 8 additions & 8 deletions backend/databaze/prikazy.go
Original file line number Diff line number Diff line change
Expand Up @@ -395,7 +395,7 @@ func GetCviceniVLekciByPismena(uzivID uint, pismena string) ([]Cviceni, error) {

func GetUzivByID(uzivID uint) (Uzivatel, error) {
var uziv Uzivatel
row, err := DB.Query(`SELECT uz.*, COALESCE(u.skola_id, 0) AS skola_id FROM uzivatel uz FULL OUTER JOIN ucitel u ON u.uziv_id = uz.id WHERE uz.id = $1 AND NOT uz.smazany;`, uzivID)
row, err := DB.Query(`SELECT uz.*, CASE WHEN u.smazany THEN 0 ELSE COALESCE(u.skola_id, 0) END AS skola_id FROM uzivatel uz INNER JOIN ucitel u ON u.uziv_id = uz.id WHERE uz.id = $1 AND NOT uz.smazany;`, uzivID)
if err != nil {
return uziv, err
}
Expand All @@ -405,7 +405,7 @@ func GetUzivByID(uzivID uint) (Uzivatel, error) {

func GetUzivByEmail(email string) (Uzivatel, error) {
var uziv Uzivatel
row, err := DB.Query(`SELECT uz.*, COALESCE(u.skola_id, 0) AS skola_id FROM uzivatel uz FULL OUTER JOIN ucitel u ON u.uziv_id = uz.id WHERE uz.email = $1 AND NOT uz.smazany;`, email)
row, err := DB.Query(`SELECT uz.*, CASE WHEN u.smazany THEN 0 ELSE COALESCE(u.skola_id, 0) END AS skola_id FROM uzivatel uz INNER JOIN ucitel u ON u.uziv_id = uz.id WHERE uz.email = $1 AND NOT uz.smazany;`, email)
if err != nil {
return uziv, err
}
Expand All @@ -415,7 +415,7 @@ func GetUzivByEmail(email string) (Uzivatel, error) {

func GetUzivByJmeno(jmeno string) (Uzivatel, error) {
var uziv Uzivatel
row, err := DB.Query(`SELECT uz.*, COALESCE(u.skola_id, 0) AS skola_id FROM uzivatel uz FULL OUTER JOIN ucitel u ON u.uziv_id = uz.id WHERE uz.jmeno = $1 AND NOT uz.smazany;`, jmeno)
row, err := DB.Query(`SELECT uz.*, CASE WHEN u.smazany THEN 0 ELSE COALESCE(u.skola_id, 0) END AS skola_id FROM uzivatel uz INNER JOIN ucitel u ON u.uziv_id = uz.id WHERE uz.jmeno = $1 AND NOT uz.smazany;`, jmeno)
if err != nil {
return uziv, err
}
Expand Down Expand Up @@ -824,7 +824,7 @@ type TridaInfo struct {
func GetTridy(ucitelID uint) ([]TridaInfo, error) {
var tridy []TridaInfo = []TridaInfo{}

rows, err := DB.Query(`SELECT t.id, t.jmeno, t.kod, t.zamknuta, ( SELECT COUNT(*) FROM uzivatel uz INNER JOIN student_a_trida s ON s.student_id = uz.id WHERE s.trida_id = t.id AND NOT uz.smazany ) as pocet_studentu, ( SELECT COUNT(*) FROM prace p WHERE p.trida_id = t.id AND NOT p.smazana ) as pocet_praci FROM trida t INNER JOIN ucitel u ON u.id = t.ucitel_id WHERE NOT t.smazana AND u.uziv_id = $1;`, ucitelID)
rows, err := DB.Query(`SELECT t.id, t.jmeno, t.kod, t.zamknuta, ( SELECT COUNT(*) FROM uzivatel uz INNER JOIN student_a_trida s ON s.student_id = uz.id WHERE s.trida_id = t.id AND NOT uz.smazany ) as pocet_studentu, ( SELECT COUNT(*) FROM prace p WHERE p.trida_id = t.id AND NOT p.smazana ) as pocet_praci FROM trida t INNER JOIN ucitel u ON u.id = t.ucitel_id WHERE NOT t.smazana AND NOT u.smazany AND u.uziv_id = $1;`, ucitelID)
if err != nil {
return tridy, err
}
Expand Down Expand Up @@ -1062,7 +1062,7 @@ func GetSkolaByUcitel(uzivID uint) (Skola, error) {

func GetUcitele(skolaID uint) ([]Ucitel, error) {
var ucitele []Ucitel
rows, err := DB.Query(`WITH studenti AS ( SELECT * FROM student_a_trida sat INNER JOIN uzivatel uz ON sat.student_id = uz.id WHERE NOT uz.smazany ), studenti_ucitele AS ( SELECT u.id, COUNT(s.student_id) AS pocet_studentu FROM trida t LEFT JOIN studenti s ON s.trida_id = t.id INNER JOIN ucitel u ON u.id = t.ucitel_id WHERE NOT t.smazana GROUP BY u.id ), staty AS ( SELECT ucitel_id, COUNT(*) AS pocet_trid FROM trida WHERE NOT smazana GROUP BY ucitel_id ) SELECT uz.email, pocet_trid, u.id, uz.id AS uziv_id, u.skola_id, SUM(stu.pocet_studentu) AS pocet_zaku FROM ucitel u INNER JOIN uzivatel uz ON uz.id = u.uziv_id LEFT JOIN staty s ON s.ucitel_id = u.id LEFT JOIN studenti_ucitele stu ON stu.id = u.id WHERE u.skola_id = $1 GROUP BY uz.email, pocet_trid, u.id, uz.id, u.skola_id;`, skolaID)
rows, err := DB.Query(`WITH studenti AS ( SELECT * FROM student_a_trida sat INNER JOIN uzivatel uz ON sat.student_id = uz.id WHERE NOT uz.smazany ), studenti_ucitele AS ( SELECT u.id, COUNT(s.student_id) AS pocet_studentu FROM trida t LEFT JOIN studenti s ON s.trida_id = t.id INNER JOIN ucitel u ON u.id = t.ucitel_id WHERE NOT t.smazana GROUP BY u.id ), staty AS ( SELECT ucitel_id, COUNT(*) AS pocet_trid FROM trida WHERE NOT smazana GROUP BY ucitel_id ) SELECT uz.email, COALESCE(pocet_trid, 0), u.id, uz.id AS uziv_id, COALESCE(SUM(stu.pocet_studentu), 0) AS pocet_zaku FROM ucitel u INNER JOIN uzivatel uz ON uz.id = u.uziv_id LEFT JOIN staty s ON s.ucitel_id = u.id LEFT JOIN studenti_ucitele stu ON stu.id = u.id WHERE u.skola_id = $1 AND NOT u.smazany GROUP BY uz.email, pocet_trid, u.id, uz.id ORDER BY u.id;`, skolaID)
if err != nil {
return ucitele, err
}
Expand All @@ -1071,11 +1071,11 @@ func GetUcitele(skolaID uint) ([]Ucitel, error) {
}

func CreateUcitel(skolaID, uzivID uint) error {
_, err := DB.Exec(`INSERT INTO ucitel (uziv_id, skola_id) VALUES ($1, $2);`, uzivID, skolaID)
_, err := DB.Exec(`INSERT INTO ucitel (uziv_id, skola_id) VALUES ($1, $2) ON CONFLICT DO UPDATE SET smazany = false;`, uzivID, skolaID)
return err
}

func RemoveUcitelByID(ucitelID uint) error {
_, err := DB.Exec(`DELETE FROM ucitel WHERE id = $1;`, ucitelID)
func RemoveUcitelByEmail(email string) error {
_, err := DB.Exec(`UPDATE ucitel SET smazany = true WHERE uziv_id = ( SELECT id FROM uzivatel WHERE email = $1 );`, email)
return err
}
13 changes: 10 additions & 3 deletions backend/skola.go
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,11 @@ func upravaUcitele(c echo.Context) error {
}

if body.Akce == "smazat" {
//databaze.RemoveUcitelByID()
if err := databaze.RemoveUcitelByEmail(body.Email); err != nil {
return c.JSON(http.StatusInternalServerError, chyba(err.Error()))
}

return c.NoContent(http.StatusOK)
} else if body.Akce == "pridat" {
uziv, err := databaze.GetUzivByEmail(body.Email)
if err != nil {
Expand All @@ -219,9 +223,12 @@ func upravaUcitele(c echo.Context) error {
if err = databaze.CreateUcitel(skola.ID, uziv.ID); err != nil {
return c.JSON(http.StatusInternalServerError, chyba(""))
}
}

return c.JSON(http.StatusInternalServerError, chyba(""))
return c.NoContent(http.StatusOK)

} else {
return c.JSON(http.StatusInternalServerError, chyba(""))
}
}

func createTrida(c echo.Context) error {
Expand Down
32 changes: 27 additions & 5 deletions frontend/src/components/SeznamUcitelu.vue
Original file line number Diff line number Diff line change
Expand Up @@ -77,9 +77,9 @@ function smazatUcitele(e: Event) {
<dialog ref="dialog1">
<div id="dialog-kontejner">
<h2>Opravdu chcete odstranit tohoto učitele?</h2>
<h3></h3>
<h3>{{ email }}</h3>
<div>
<button class="cervene-tlacitko" @click="smazatUcitele">Smazat</button>
<button class="cervene-tlacitko" @click="smazatUcitele">Odstranit</button>
<button class="tlacitko" @click="zavritDialog">Zrušit</button>
</div>
</div>
Expand All @@ -89,14 +89,14 @@ function smazatUcitele(e: Event) {
#seznam {
display: flex;
flex-direction: column;
gap: 5px;
gap: 14px;
width: 500px;
}
#seznam>div {
display: flex;
align-items: center;
gap: 5px;
gap: 8px;
}
#seznam>div>button {
Expand All @@ -111,6 +111,12 @@ function smazatUcitele(e: Event) {
display: flex;
justify-content: center;
align-items: center;
transition: 0.2s;
}
#seznam>div>button:hover {
background-color: var(--fialova);
}
.blok {
Expand All @@ -126,7 +132,7 @@ function smazatUcitele(e: Event) {
}
.blok>h3 {
width: 312px;
width: 306px;
text-align: left;
font-weight: 500;
overflow: hidden;
Expand All @@ -138,4 +144,20 @@ function smazatUcitele(e: Event) {
flex-direction: column;
text-align: left;
}
dialog {
padding-top: 1em;
}
#dialog-kontejner>div {
display: flex;
justify-content: center;
gap: 1em;
}
#dialog-kontejner>h3 {
font-weight: 500;
font-size: 1.4em;
margin: 0.6em;
}
</style>
3 changes: 2 additions & 1 deletion frontend/src/views/ucitel/SeznamTrid.vue
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,8 @@ function vytvorit(e: Event) {
const prepinacTabu = useTemplateRef("prepinac-tabu")
const pridatEmail = ref("")
function pridatUcitele() {
function pridatUcitele(e: Event) {
e.preventDefault()
axios.post("/skola/upravit-ucitele", { email: pridatEmail.value, akce: "pridat" }, {
headers: {
Authorization: `Bearer ${getToken()}`
Expand Down

0 comments on commit f614f1f

Please sign in to comment.