56 lines
2.5 KiB
Go
56 lines
2.5 KiB
Go
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" }
|