Remove debug statements and improve contest's timing information

This commit is contained in:
Andrea Fazzi 2021-01-02 17:30:39 +01:00
parent c67608dc6d
commit 919fda3637
3 changed files with 31 additions and 11 deletions

View file

@ -94,10 +94,10 @@ func (c *Contest) Read(db *Database, args map[string]string, w http.ResponseWrit
Preload("Participants").
Preload("Responses").
Preload("StartedResponses", func(tx *gorm.DB) *gorm.DB {
return db.DB().Debug().Where("start_time <> ?", time.Time{})
return db.DB().Where("start_time <> ?", time.Time{})
}).
Preload("SavedResponses", func(tx *gorm.DB) *gorm.DB {
return db.DB().Debug().Where("end_time <> ?", time.Time{})
return db.DB().Where("end_time <> ?", time.Time{})
}).
Preload("Questions").
First(&contest, id).Error; err != nil {
@ -182,7 +182,7 @@ func (c *Contest) Update(db *Database, args map[string]string, w http.ResponseWr
// Optionally reset participant start time
if contest.(*Contest).ResetStartTime {
err := db._db.Debug().Model(&Response{}).Where("contest_id=?", contest.(*Contest).ID).Update("start_time", time.Time{}).Error
err := db._db.Model(&Response{}).Where("contest_id=?", contest.(*Contest).ID).Update("start_time", time.Time{}).Error
if err != nil {
return nil, err
}
@ -218,7 +218,7 @@ func SaveContest(db *Database, contest interface{}) (interface{}, error) {
return contest, nil
}
func (c *Contest) isAlwaysActive() bool {
func (c *Contest) IsAlwaysActive() bool {
return c.StartTime.IsZero() || c.EndTime.IsZero() || c.Duration == 0
}

View file

@ -60,7 +60,10 @@ func (model *Response) String() string {
}
func (model *Response) IsActive() bool {
return (!time.Now().Before(model.Contest.StartTime) && !time.Now().After(model.Contest.EndTime)) || model.Contest.isAlwaysActive()
if !model.StartTime.IsZero() {
return !time.Now().After(model.EndTime) || model.Contest.IsAlwaysActive()
}
return (!time.Now().Before(model.Contest.StartTime) && !time.Now().After(model.Contest.EndTime)) || model.Contest.IsAlwaysActive()
}
func (model *Response) SetCreatorID(id uint) {
@ -216,7 +219,7 @@ func (model *Response) Update(db *Database, args map[string]string, w http.Respo
// Write StartTime for the first time if user is a participant
if isParticipant(r) && !response.Contest.isAlwaysActive() {
if isParticipant(r) && !response.Contest.IsAlwaysActive() {
if !response.IsActive() {
return nil, errors.OutOfTime
}

View file

@ -19,24 +19,41 @@
<h2 class="karmen-relation-header">Informazioni generali</h2>
<dl class="row">
<dt class="col-sm-3">Periodo di attività</dt>
<dt class="col-sm-3">Finestra di prima visualizzazione</dt>
<dd class="col-sm-9">
{{if not (.Data.Contest.Date|zeroTime)}}
Giorno {{.Data.Contest.Date|prettyDate}} dalle ore {{.Data.Contest.StartTime|convertTime}} alle ore {{.Data.Contest.EndTime|convertTime}}
{{- if not .Data.IsActive -}}<strong> [Scaduta o non ancora attiva]</strong>{{- end -}}
E' possibile visualizzare la prova di gara per la prima volta il giorno {{.Data.Contest.Date|prettyDate}} dalle ore {{.Data.Contest.StartTime|convertTime}} alle ore {{.Data.Contest.EndTime|convertTime}}
{{- if not .Data.IsActive -}}<strong> [La gara è scaduta o non ancora attiva]</strong>{{- end -}}
{{else}}
La gara è sempre attiva.
{{end}}
</dd>
{{if not (.Data.Contest.Date|zeroTime)}}
<dt class="col-sm-3">Prima visualizzazione</dt>
<dt class="col-sm-3">Data e ora della prima visualizzazione</dt>
<dd class="col-sm-9">
{{if not (.Data.StartTime|zeroTime)}}
Giorno {{.Data.StartTime|prettyDate}} alle ore {{.Data.StartTime|convertTime}}
La prova di gara è stata visualizzata per la prima volta il giorno {{.Data.StartTime|prettyDate}} alle ore {{.Data.StartTime|convertTime}}
{{else}}
Il partecipante non ha ancora visualizzato la prova.
{{end}}
</dd>
<dt class="col-sm-3">Durata della gara</dt>
<dd class="col-sm-9">
{{if not .Data.Contest.IsAlwaysActive}}
{{.Data.Contest.Duration}} min
{{else}}
La gara ha una durata illimitata.
{{end}}
</dd>
<dt class="col-sm-3">Finestra di consegna</dt>
<dd class="col-sm-9">
{{if not (.Data.Contest.Date|zeroTime)}}
E' possibile consegnare la prova entro il giorno {{.Data.Contest.Date|prettyDate}} fino alle ore {{.Data.EndTime|convertTime}}
{{- if not .Data.IsActive -}}<strong> [Termini per la consegna scaduti]</strong>{{- end -}}
{{else}}
La gara è sempre attiva.
{{end}}
</dd>
{{end}}
{{if $isAdmin}}
<dt class="col-sm-3">Ordine delle domande</dt>