package model import ( "time" ) // Now returns the current Unix timestamp func Now() int64 { return time.Now().Unix() } // TimeFromUnix converts Unix timestamp to time.Time func TimeFromUnix(unix int64) time.Time { return time.Unix(unix, 0) } type Organization struct { ID string Name string Slug string OrgType string // bank, pe_vc, company CreatedAt time.Time } type Profile struct { ID string Email string FullName string AvatarURL string OrganizationID string Role string // owner, admin, member, viewer PasswordHash string CreatedAt time.Time LastLogin *time.Time ViewAsBuyer bool // Not persisted, set per-request from cookie } type Deal struct { ID string OrganizationID string Name string Description string TargetCompany string Stage string // pipeline, loi, initial_review, due_diligence, final_negotiation, closed, dead DealSize float64 Currency string IOIDate string LOIDate string ExclusivityEnd string ExpectedCloseDate string CloseProbability int IsArchived bool CreatedBy string CreatedAt time.Time UpdatedAt time.Time // Computed FileCount int } type Folder struct { ID string DealID string ParentID string Name string Description string CreatedBy string CreatedAt time.Time } type File struct { ID string DealID string FolderID string Name string FileSize int64 MimeType string Status string // uploaded, processing, reviewed, flagged, archived UploadedBy string CreatedAt time.Time } type DiligenceRequest struct { ID string DealID string ItemNumber string Section string Description string Priority string // high, medium, low AtlasStatus string // fulfilled, partial, missing, not_applicable AtlasNote string Confidence int BuyerComment string SellerComment string BuyerGroup string LinkedFileIDs string CreatedBy string CreatedAt time.Time UpdatedAt time.Time } type Contact struct { ID string OrganizationID string FullName string Email string Phone string Company string Title string ContactType string // buyer, internal, advisor Tags string Notes string LastActivityAt *time.Time CreatedAt time.Time } type DealActivity struct { ID string OrganizationID string DealID string UserID string ActivityType string ResourceType string ResourceName string ResourceID string Details string CreatedAt time.Time // Computed UserName string DealName string } type Session struct { Token string UserID string ExpiresAt time.Time CreatedAt time.Time } // StageName returns human-readable stage name func StageName(stage string) string { switch stage { case "pipeline": return "Pipeline" case "loi": return "LOI Stage" case "initial_review": return "Initial Review" case "due_diligence": return "Due Diligence" case "final_negotiation": return "Final Negotiation" case "closed": return "Closed" case "dead": return "Dead" default: return stage } }