Datepickers on native time.Time / lagoon.Date fields, file uploads on materials, readings and class sessions managed from the course form (course_id made nullable).
53 lines
1.6 KiB
Go
53 lines
1.6 KiB
Go
// Code generated by summer make. DO NOT EDIT.
|
|
|
|
package models
|
|
|
|
import (
|
|
"time"
|
|
|
|
"git.golem15.com/golem15/summercms/modules/lagoon"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
// Meeting is one zjazd: a weekend of classes of the part-time programme.
|
|
type Meeting struct {
|
|
ID uint `gorm:"column:id;primaryKey"`
|
|
Number int `gorm:"column:number"`
|
|
StartsOn lagoon.Date `gorm:"column:starts_on"`
|
|
EndsOn lagoon.Date `gorm:"column:ends_on"`
|
|
Notes *string `gorm:"column:notes"`
|
|
CreatedAt time.Time `gorm:"column:created_at"`
|
|
UpdatedAt time.Time `gorm:"column:updated_at"`
|
|
}
|
|
|
|
// TableName is the plugin table.
|
|
func (Meeting) TableName() string { return "jz_bm_meetings" }
|
|
|
|
// Fillable lists the columns mass assignment may set.
|
|
func (Meeting) Fillable() []string { return []string{"number", "starts_on", "ends_on", "notes"} }
|
|
|
|
// Rules are checked by the admin API on every save.
|
|
func (Meeting) Rules() map[string]string {
|
|
return map[string]string{
|
|
"number": "required|integer|min:1|unique:jz_bm_meetings",
|
|
"starts_on": "required",
|
|
"ends_on": "required",
|
|
}
|
|
}
|
|
|
|
// TemporalErrors checks the order of the dates, which lagoon.Validate
|
|
// cannot. The required rules cover missing dates.
|
|
func (m *Meeting) TemporalErrors() map[string][]string {
|
|
e := temporalErrors{}
|
|
if !m.StartsOn.IsZero() && !m.EndsOn.IsZero() && m.EndsOn.Time(nil).Before(m.StartsOn.Time(nil)) {
|
|
e.add("ends_on", "The ends on must be a date after or equal to starts on.")
|
|
}
|
|
return e.result()
|
|
}
|
|
|
|
// BeforeSave stores NULL for empty optional text.
|
|
func (m *Meeting) BeforeSave(*gorm.DB) error {
|
|
blank(&m.Notes)
|
|
return nil
|
|
}
|