letter incoming
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
package entities
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
type DispositionAction struct {
|
||||
ID uuid.UUID `gorm:"type:uuid;primary_key;default:gen_random_uuid()" json:"id"`
|
||||
Code string `gorm:"uniqueIndex;not null" json:"code"`
|
||||
Label string `gorm:"not null" json:"label"`
|
||||
Description *string `json:"description,omitempty"`
|
||||
RequiresNote bool `gorm:"not null;default:false" json:"requires_note"`
|
||||
GroupName *string `json:"group_name,omitempty"`
|
||||
SortOrder *int `json:"sort_order,omitempty"`
|
||||
IsActive bool `gorm:"not null;default:true" json:"is_active"`
|
||||
CreatedAt time.Time `gorm:"autoCreateTime" json:"created_at"`
|
||||
UpdatedAt time.Time `gorm:"autoUpdateTime" json:"updated_at"`
|
||||
}
|
||||
|
||||
func (DispositionAction) TableName() string { return "disposition_actions" }
|
||||
@@ -0,0 +1,19 @@
|
||||
package entities
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
type DispositionRoute struct {
|
||||
ID uuid.UUID `gorm:"type:uuid;primary_key;default:gen_random_uuid()" json:"id"`
|
||||
FromDepartmentID uuid.UUID `gorm:"type:uuid;not null" json:"from_department_id"`
|
||||
ToDepartmentID uuid.UUID `gorm:"type:uuid;not null" json:"to_department_id"`
|
||||
IsActive bool `gorm:"not null;default:true" json:"is_active"`
|
||||
AllowedActions JSONB `gorm:"type:jsonb" json:"allowed_actions,omitempty"`
|
||||
CreatedAt time.Time `gorm:"autoCreateTime" json:"created_at"`
|
||||
UpdatedAt time.Time `gorm:"autoUpdateTime" json:"updated_at"`
|
||||
}
|
||||
|
||||
func (DispositionRoute) TableName() string { return "disposition_routes" }
|
||||
@@ -0,0 +1,30 @@
|
||||
package entities
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
type InstitutionType string
|
||||
|
||||
const (
|
||||
InstGovernment InstitutionType = "government"
|
||||
InstPrivate InstitutionType = "private"
|
||||
InstNGO InstitutionType = "ngo"
|
||||
InstIndividual InstitutionType = "individual"
|
||||
)
|
||||
|
||||
type Institution struct {
|
||||
ID uuid.UUID `gorm:"type:uuid;primary_key;default:gen_random_uuid()" json:"id"`
|
||||
Name string `gorm:"not null;size:255" json:"name"`
|
||||
Type InstitutionType `gorm:"not null;size:32" json:"type"`
|
||||
Address *string `json:"address,omitempty"`
|
||||
ContactPerson *string `gorm:"size:255" json:"contact_person,omitempty"`
|
||||
Phone *string `gorm:"size:50" json:"phone,omitempty"`
|
||||
Email *string `gorm:"size:255" json:"email,omitempty"`
|
||||
CreatedAt time.Time `gorm:"autoCreateTime" json:"created_at"`
|
||||
UpdatedAt time.Time `gorm:"autoUpdateTime" json:"updated_at"`
|
||||
}
|
||||
|
||||
func (Institution) TableName() string { return "institutions" }
|
||||
@@ -0,0 +1,17 @@
|
||||
package entities
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
type Label struct {
|
||||
ID uuid.UUID `gorm:"type:uuid;primary_key;default:gen_random_uuid()" json:"id"`
|
||||
Name string `gorm:"not null;size:255" json:"name"`
|
||||
Color *string `gorm:"size:16" json:"color,omitempty"`
|
||||
CreatedAt time.Time `gorm:"autoCreateTime" json:"created_at"`
|
||||
UpdatedAt time.Time `gorm:"autoUpdateTime" json:"updated_at"`
|
||||
}
|
||||
|
||||
func (Label) TableName() string { return "labels" }
|
||||
@@ -0,0 +1,21 @@
|
||||
package entities
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
type LetterDiscussion 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"`
|
||||
ParentID *uuid.UUID `json:"parent_id,omitempty"`
|
||||
UserID uuid.UUID `gorm:"type:uuid;not null" json:"user_id"`
|
||||
Message string `gorm:"not null" json:"message"`
|
||||
Mentions JSONB `gorm:"type:jsonb" json:"mentions,omitempty"`
|
||||
CreatedAt time.Time `gorm:"autoCreateTime" json:"created_at"`
|
||||
UpdatedAt time.Time `gorm:"autoUpdateTime" json:"updated_at"`
|
||||
EditedAt *time.Time `json:"edited_at,omitempty"`
|
||||
}
|
||||
|
||||
func (LetterDiscussion) TableName() string { return "letter_incoming_discussions" }
|
||||
@@ -0,0 +1,55 @@
|
||||
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" }
|
||||
@@ -0,0 +1,45 @@
|
||||
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" }
|
||||
@@ -0,0 +1,23 @@
|
||||
package entities
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
type LetterIncomingActivityLog 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"`
|
||||
ActionType string `gorm:"not null" json:"action_type"`
|
||||
ActorUserID *uuid.UUID `json:"actor_user_id,omitempty"`
|
||||
ActorDepartmentID *uuid.UUID `json:"actor_department_id,omitempty"`
|
||||
TargetType *string `json:"target_type,omitempty"`
|
||||
TargetID *uuid.UUID `json:"target_id,omitempty"`
|
||||
FromStatus *string `json:"from_status,omitempty"`
|
||||
ToStatus *string `json:"to_status,omitempty"`
|
||||
Context JSONB `gorm:"type:jsonb" json:"context,omitempty"`
|
||||
OccurredAt time.Time `gorm:"autoCreateTime" json:"occurred_at"`
|
||||
}
|
||||
|
||||
func (LetterIncomingActivityLog) TableName() string { return "letter_incoming_activity_logs" }
|
||||
@@ -0,0 +1,17 @@
|
||||
package entities
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
type Priority struct {
|
||||
ID uuid.UUID `gorm:"type:uuid;primary_key;default:gen_random_uuid()" json:"id"`
|
||||
Name string `gorm:"not null;size:255" json:"name"`
|
||||
Level int `gorm:"not null" json:"level"`
|
||||
CreatedAt time.Time `gorm:"autoCreateTime" json:"created_at"`
|
||||
UpdatedAt time.Time `gorm:"autoUpdateTime" json:"updated_at"`
|
||||
}
|
||||
|
||||
func (Priority) TableName() string { return "priorities" }
|
||||
Reference in New Issue
Block a user