Delete responses for unsubscribed participants
This commit is contained in:
parent
a5cc757ddd
commit
ada7a9a28b
3 changed files with 31 additions and 2 deletions
|
@ -129,7 +129,7 @@ func (model *Participant) BeforeSave(tx *gorm.DB) error {
|
||||||
func (model *Participant) AfterSave(tx *gorm.DB) error {
|
func (model *Participant) AfterSave(tx *gorm.DB) error {
|
||||||
for _, contest := range model.Contests {
|
for _, contest := range model.Contests {
|
||||||
var response Response
|
var response Response
|
||||||
if err := tx.Debug().FirstOrCreate(
|
if err := tx.FirstOrCreate(
|
||||||
&response,
|
&response,
|
||||||
&Response{
|
&Response{
|
||||||
Name: fmt.Sprintf("%s (%s)", contest.Name, model.String()),
|
Name: fmt.Sprintf("%s (%s)", contest.Name, model.String()),
|
||||||
|
@ -449,6 +449,31 @@ func (model *Participant) Update(db *Database, args map[string]string, w http.Re
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Delete responses for unsubscribed participants
|
||||||
|
|
||||||
|
var found bool
|
||||||
|
toBeDeletedResponses := make([]*Response, 0)
|
||||||
|
for _, response := range participant.(*Participant).Responses {
|
||||||
|
for _, contest := range participant.(*Participant).Contests {
|
||||||
|
if response.ContestID == contest.ID {
|
||||||
|
found = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !found {
|
||||||
|
toBeDeletedResponses = append(toBeDeletedResponses, response)
|
||||||
|
}
|
||||||
|
found = false
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(toBeDeletedResponses) > 0 {
|
||||||
|
for _, response := range toBeDeletedResponses {
|
||||||
|
if err := db._db.Unscoped().Delete(response).Error; err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return participant.(*Participant), nil
|
return participant.(*Participant), nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,7 +59,7 @@
|
||||||
{{$options := ` { name: "school_id", id: "school_id", label: "Scuola del partecipante", title: "Seleziona la scuola"}`}}
|
{{$options := ` { name: "school_id", id: "school_id", label: "Scuola del partecipante", title: "Seleziona la scuola"}`}}
|
||||||
{{template "select" dict "options" ($options|yaml) "data" (.Data|field "AllSchools") "selected" (.Data|field "SelectedSchool") "update" $update "form" $form}}
|
{{template "select" dict "options" ($options|yaml) "data" (.Data|field "AllSchools") "selected" (.Data|field "SelectedSchool") "update" $update "form" $form}}
|
||||||
|
|
||||||
{{$options := `
|
{{$options := `
|
||||||
name: "contest_ids"
|
name: "contest_ids"
|
||||||
id: "contest_ids"
|
id: "contest_ids"
|
||||||
label: "Gare a cui il partecipante è iscritto"
|
label: "Gare a cui il partecipante è iscritto"
|
||||||
|
|
|
@ -91,6 +91,7 @@
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<h2 class="karmen-relation-header">Gare a cui il partecipante è iscritto</h2>
|
<h2 class="karmen-relation-header">Gare a cui il partecipante è iscritto</h2>
|
||||||
|
{{if .Data.Responses}}
|
||||||
{{range $response := .Data.Responses}}
|
{{range $response := .Data.Responses}}
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
|
@ -102,6 +103,9 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
{{else}}
|
||||||
|
Il partecipante non è iscritto ad alcuna gara.
|
||||||
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
Loading…
Reference in a new issue