46 lines
2.0 KiB
Go
46 lines
2.0 KiB
Go
package entities
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
type LetterIncomingStatus string
|
|
|
|
const (
|
|
LetterIncomingStatusNew LetterIncomingStatus = "new"
|
|
LetterIncomingStatusInProgress LetterIncomingStatus = "in_progress"
|
|
LetterIncomingStatusCompleted LetterIncomingStatus = "completed"
|
|
)
|
|
|
|
type LetterIncoming struct {
|
|
ID uuid.UUID `gorm:"type:uuid;primary_key;default:gen_random_uuid()" json:"id"`
|
|
LetterNumber string `gorm:"uniqueIndex;not null" json:"letter_number"`
|
|
ReferenceNumber *string `json:"reference_number,omitempty"`
|
|
Subject string `gorm:"not null" json:"subject"`
|
|
Description *string `json:"description,omitempty"`
|
|
PriorityID *uuid.UUID `json:"priority_id,omitempty"`
|
|
SenderInstitutionID *uuid.UUID `json:"sender_institution_id,omitempty"`
|
|
ReceivedDate time.Time `json:"received_date"`
|
|
DueDate *time.Time `json:"due_date,omitempty"`
|
|
Status LetterIncomingStatus `gorm:"not null;default:'new'" json:"status"`
|
|
CreatedBy uuid.UUID `gorm:"not null" json:"created_by"`
|
|
CreatedAt time.Time `gorm:"autoCreateTime" json:"created_at"`
|
|
UpdatedAt time.Time `gorm:"autoUpdateTime" json:"updated_at"`
|
|
}
|
|
|
|
func (LetterIncoming) TableName() string { return "letters_incoming" }
|
|
|
|
type LetterIncomingAttachment 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"`
|
|
FileURL string `gorm:"not null" json:"file_url"`
|
|
FileName string `gorm:"not null" json:"file_name"`
|
|
FileType string `gorm:"not null" json:"file_type"`
|
|
UploadedBy *uuid.UUID `json:"uploaded_by,omitempty"`
|
|
UploadedAt time.Time `gorm:"autoCreateTime" json:"uploaded_at"`
|
|
}
|
|
|
|
func (LetterIncomingAttachment) TableName() string { return "letter_incoming_attachments" }
|