package model

import "time"

type SubmissionStatus int32

const (
	// Phase: Final SubmissionStatus
	SubmissionStatusReleased  SubmissionStatus = 9
	SubmissionStatusRejected  SubmissionStatus = 8

	// Phase: Testing
	SubmissionStatusUploaded   SubmissionStatus = 7 // uploaded to the group, but pending release
	SubmissionStatusUploading  SubmissionStatus = 6
	SubmissionStatusValidated  SubmissionStatus = 5
	SubmissionStatusValidating SubmissionStatus = 4
	SubmissionStatusAccepted   SubmissionStatus = 3 // pending script review, can re-trigger validation

	// Phase: Creation
	SubmissionStatusChangesRequested  SubmissionStatus = 2
	SubmissionStatusSubmitted         SubmissionStatus = 1
	SubmissionStatusUnderConstruction SubmissionStatus = 0
)

type Submission struct {
	ID            int64 `gorm:"primaryKey"`
	DisplayName   string
	Creator       string
	GameID        int32
	CreatedAt     time.Time
	UpdatedAt     time.Time
	Submitter     int64 // UserID
	AssetID       int64
	AssetVersion  int64
	ValidatedAssetID       int64
	ValidatedAssetVersion  int64
	Completed     bool   // Has this version of the map been completed at least once on maptest
	UploadedAssetID        int64 // where to upload map fix.  if the TargetAssetID is 0, it's a new map.
	StatusID      SubmissionStatus
	StatusMessage string
}