47 lines
1.3 KiB
Go
47 lines
1.3 KiB
Go
package entities
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/google/uuid"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type TAssignmentEntity struct {
|
|
ID uuid.UUID `gorm:"primaryKey;type:uuid;default:uuid_generate_v4()" json:"id"`
|
|
DocumentType string `gorm:"type:varchar(100);" json:"document_type"`
|
|
|
|
DocumentID uuid.UUID `gorm:"type:uuid;index;" json:"document_id"`
|
|
ClientID uuid.UUID `gorm:"type:uuid;index;" json:"client_id"`
|
|
|
|
AssignmentUsers []TAssignmentUserEntity `gorm:"foreignKey:AssignmentID;references:ID"`
|
|
Client M_Client `gorm:"foreignKey:ClientID;references:ID"`
|
|
|
|
FullAuditTrail
|
|
}
|
|
|
|
func (TAssignmentEntity) TableName() string {
|
|
return "t_assignments"
|
|
}
|
|
|
|
// Contoh fungsi switch-case untuk ambil dokumen
|
|
func GetDocumentByAssignment(db *gorm.DB, assignment TAssignmentEntity) (interface{}, error) {
|
|
switch assignment.DocumentType {
|
|
// case "SOHeader":
|
|
// var so SOHeader
|
|
// if err := db.First(&so, "id = ?", assignment.DocumentID).Error; err != nil {
|
|
// return nil, err
|
|
// }
|
|
// return so, nil
|
|
// case "GRHeader":
|
|
// var gr GRHeader
|
|
// if err := db.First(&gr, "id = ?", assignment.DocumentID).Error; err != nil {
|
|
// return nil, err
|
|
// }
|
|
// return gr, nil
|
|
// Tambahkan case lain sesuai kebutuhan
|
|
default:
|
|
return nil, fmt.Errorf("unknown document type: %s", assignment.DocumentType)
|
|
}
|
|
}
|