show trainers in training list
This commit is contained in:
parent
1742f65fcd
commit
097ecd6dfc
2 changed files with 81 additions and 20 deletions
66
main.go
66
main.go
|
|
@ -241,29 +241,75 @@ func addTrainingAreaHandler(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
|
||||
func fetchTrainings() ([]Training, error) {
|
||||
log.Println("Fetching trainings from the database")
|
||||
rows, err := db.Query("SELECT id, title, training_type, mode, strftime('%Y-%m-%d %H:%M:%S', start), strftime('%Y-%m-%d %H:%M:%S', end), status FROM trainings")
|
||||
log.Println("Fetching trainings with assigned trainers from the database")
|
||||
|
||||
query := `
|
||||
SELECT
|
||||
t.id, t.title, t.training_type, t.mode,
|
||||
strftime('%Y-%m-%d %H:%M:%S', t.start), strftime('%Y-%m-%d %H:%M:%S', t.end), t.status,
|
||||
tr.id, tr.name, tr.email
|
||||
FROM trainings t
|
||||
LEFT JOIN training_trainers tt ON t.id = tt.training_id
|
||||
LEFT JOIN trainers tr ON tt.trainer_id = tr.id
|
||||
ORDER BY t.id, tr.name
|
||||
`
|
||||
|
||||
rows, err := db.Query(query)
|
||||
if err != nil {
|
||||
log.Printf("Error fetching trainings: %v", err)
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
var trainings []Training
|
||||
trainingMap := make(map[int]*Training)
|
||||
|
||||
for rows.Next() {
|
||||
var t Training
|
||||
var start, end string
|
||||
err := rows.Scan(&t.ID, &t.Title, &t.TrainingType, &t.Mode, &start, &end, &t.Status)
|
||||
var trainingID int
|
||||
var title, trainingType, mode, status, startStr, endStr string
|
||||
var trainerID sql.NullInt64
|
||||
var trainerName sql.NullString
|
||||
var trainerEmail sql.NullString
|
||||
|
||||
err := rows.Scan(&trainingID, &title, &trainingType, &mode, &startStr, &endStr, &status,
|
||||
&trainerID, &trainerName, &trainerEmail)
|
||||
if err != nil {
|
||||
log.Printf("Error scanning row for training: %v", err)
|
||||
return nil, err
|
||||
}
|
||||
t.Start, _ = time.Parse(time.DateTime, start)
|
||||
t.End, _ = time.Parse(time.DateTime, end)
|
||||
trainings = append(trainings, t)
|
||||
|
||||
start, _ := time.Parse(time.DateTime, startStr)
|
||||
end, _ := time.Parse(time.DateTime, endStr)
|
||||
|
||||
training, exists := trainingMap[trainingID]
|
||||
if !exists {
|
||||
training = &Training{
|
||||
ID: trainingID,
|
||||
Title: title,
|
||||
TrainingType: trainingType,
|
||||
Mode: mode,
|
||||
Start: start,
|
||||
End: end,
|
||||
Status: status,
|
||||
Trainers: []Trainer{},
|
||||
}
|
||||
trainingMap[trainingID] = training
|
||||
}
|
||||
|
||||
if trainerID.Valid {
|
||||
training.Trainers = append(training.Trainers, Trainer{
|
||||
ID: int(trainerID.Int64),
|
||||
Name: trainerName.String,
|
||||
Email: trainerEmail.String,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
log.Printf("Found %d trainings", len(trainings))
|
||||
var trainings []Training
|
||||
for _, training := range trainingMap {
|
||||
trainings = append(trainings, *training)
|
||||
}
|
||||
|
||||
log.Printf("Found %d trainings with trainers", len(trainings))
|
||||
return trainings, nil
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,8 @@
|
|||
<p><a href="/trainings/add"><button>Add New Training</button></a></p>
|
||||
|
||||
<h1>Trainings</h1>
|
||||
<table border="1">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Title</th>
|
||||
<th>Type</th>
|
||||
|
|
@ -10,17 +11,31 @@
|
|||
<th>Start</th>
|
||||
<th>End</th>
|
||||
<th>Status</th>
|
||||
<th>Trainers</th>
|
||||
</tr>
|
||||
{{ range . }}
|
||||
</thead>
|
||||
<tbody>
|
||||
{{range .}}
|
||||
<tr>
|
||||
<td>{{ .Title }}</td>
|
||||
<td>{{ .TrainingType }}</td>
|
||||
<td>{{ .Mode }}</td>
|
||||
<td>{{ .Start }}</td>
|
||||
<td>{{ .End }}</td>
|
||||
<td>{{ .Status }}</td>
|
||||
<td>{{.Title}}</td>
|
||||
<td>{{.TrainingType}}</td>
|
||||
<td>{{.Mode}}</td>
|
||||
<td>{{.Start.Format "2006-01-02 15:04"}}</td>
|
||||
<td>{{.End.Format "2006-01-02 15:04"}}</td>
|
||||
<td>{{.Status}}</td>
|
||||
<td>
|
||||
{{if .Trainers}}
|
||||
{{range .Trainers}}
|
||||
{{.Name}} ({{.Email}})<br>
|
||||
{{end}}
|
||||
{{else}}
|
||||
No trainers assigned
|
||||
{{end}}
|
||||
</td>
|
||||
</tr>
|
||||
{{ end }}
|
||||
</table>
|
||||
{{end}}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
{{template "epilogue.html" }}
|
||||
Loading…
Add table
Reference in a new issue