package entities import ( "time" "github.com/google/uuid" ) type LetterDispositionStatus string const ( DispositionPending LetterDispositionStatus = "pending" DispositionRead LetterDispositionStatus = "read" DispositionRejected LetterDispositionStatus = "rejected" DispositionCompleted LetterDispositionStatus = "completed" ) type LetterDisposition struct { ID uuid.UUID `gorm:"type:uuid;primary_key;default:gen_random_uuid()" json:"id"` LetterID uuid.UUID `gorm:"type:uuid;not null" json:"letter_id"` FromUserID *uuid.UUID `json:"from_user_id,omitempty"` FromDepartmentID *uuid.UUID `json:"from_department_id,omitempty"` ToUserID *uuid.UUID `json:"to_user_id,omitempty"` ToDepartmentID *uuid.UUID `json:"to_department_id,omitempty"` Notes *string `json:"notes,omitempty"` Status LetterDispositionStatus `gorm:"not null;default:'pending'" json:"status"` CreatedBy uuid.UUID `gorm:"not null" json:"created_by"` CreatedAt time.Time `gorm:"autoCreateTime" json:"created_at"` ReadAt *time.Time `json:"read_at,omitempty"` CompletedAt *time.Time `json:"completed_at,omitempty"` UpdatedAt time.Time `gorm:"autoUpdateTime" json:"updated_at"` } func (LetterDisposition) TableName() string { return "letter_dispositions" } type DispositionNote struct { ID uuid.UUID `gorm:"type:uuid;primary_key;default:gen_random_uuid()" json:"id"` DispositionID uuid.UUID `gorm:"type:uuid;not null" json:"disposition_id"` UserID *uuid.UUID `json:"user_id,omitempty"` Note string `gorm:"not null" json:"note"` CreatedAt time.Time `gorm:"autoCreateTime" json:"created_at"` } func (DispositionNote) TableName() string { return "disposition_notes" } type LetterDispositionActionSelection struct { ID uuid.UUID `gorm:"type:uuid;primary_key;default:gen_random_uuid()" json:"id"` DispositionID uuid.UUID `gorm:"type:uuid;not null" json:"disposition_id"` ActionID uuid.UUID `gorm:"type:uuid;not null" json:"action_id"` Note *string `json:"note,omitempty"` CreatedBy uuid.UUID `gorm:"not null" json:"created_by"` CreatedAt time.Time `gorm:"autoCreateTime" json:"created_at"` } func (LetterDispositionActionSelection) TableName() string { return "letter_disposition_actions" }