models

package
v0.0.0-...-b3f093e Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 19, 2024 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// BusinessCaseStatusOPEN captures enum value "OPEN"
	BusinessCaseStatusOPEN BusinessCaseStatus = "OPEN"
	// BusinessCaseStatusCLOSED captures enum value "CLOSED"
	BusinessCaseStatusCLOSED BusinessCaseStatus = "CLOSED"

	// LifecycleCostPhaseDEVELOPMENT captures enum value "Development"
	LifecycleCostPhaseDEVELOPMENT LifecycleCostPhase = "Development"
	// LifecycleCostPhaseOPERATIONMAINTENANCE captures enum value "Operations and Maintenance"
	LifecycleCostPhaseOPERATIONMAINTENANCE LifecycleCostPhase = "Operations and Maintenance"
	// LifecycleCostPhaseHELPDESK captures enum value "Help desk/call center"
	LifecycleCostPhaseHELPDESK LifecycleCostPhase = "Help desk/call center"
	// LifecycleCostPhaseSOFTWARE captures enum value "Software licenses"
	LifecycleCostPhaseSOFTWARE LifecycleCostPhase = "Software licenses"
	// LifecycleCostPhasePLANNING captures enum value "Planning, support, and professional services"
	LifecycleCostPhasePLANNING LifecycleCostPhase = "Planning, support, and professional services"
	// LifecycleCostPhaseINFRASTRUCTURE captures enum value "Infrastructure"
	LifecycleCostPhaseINFRASTRUCTURE LifecycleCostPhase = "Infrastructure"
	// LifecycleCostPhaseOIT captures enum value "OIT Services, tools, and pilots"
	LifecycleCostPhaseOIT LifecycleCostPhase = "OIT Services, tools, and pilots"
	// LifecycleCostPhaseOTHER captures enum value "Other"
	LifecycleCostPhaseOTHER LifecycleCostPhase = "Other"

	// LifecycleCostSolutionPREFERRED captures enum value "Preferred"
	LifecycleCostSolutionPREFERRED LifecycleCostSolution = "Preferred"
	// LifecycleCostSolutionA captures enum value "A"
	LifecycleCostSolutionA LifecycleCostSolution = "A"
	// LifecycleCostSolutionB captures enum value "B"
	LifecycleCostSolutionB LifecycleCostSolution = "B"

	// LifecycleCostYear1 captures enum value "1"
	LifecycleCostYear1 LifecycleCostYear = "1"
	// LifecycleCostYear2 captures enum value "2"
	LifecycleCostYear2 LifecycleCostYear = "2"
	// LifecycleCostYear3 captures enum value "3"
	LifecycleCostYear3 LifecycleCostYear = "3"
	// LifecycleCostYear4 captures enum value "4"
	LifecycleCostYear4 LifecycleCostYear = "4"
	// LifecycleCostYear5 captures enum value "5"
	LifecycleCostYear5 LifecycleCostYear = "5"
)
View Source
const (
	// SystemIntakeDocumentStatusAvailable means that the document passed the virus scanning
	SystemIntakeDocumentStatusAvailable SystemIntakeDocumentStatus = "AVAILABLE"
	// SystemIntakeDocumentStatusPending means that the document was just uploaded and hasn't yet been scanned for viruses
	SystemIntakeDocumentStatusPending SystemIntakeDocumentStatus = "PENDING"
	// SystemIntakeDocumentStatusUnavailable means that the document failed virus scanning
	SystemIntakeDocumentStatusUnavailable SystemIntakeDocumentStatus = "UNAVAILABLE"

	// SystemIntakeDocumentCommonTypeSOOSOW means the document is an SOO or SOW
	SystemIntakeDocumentCommonTypeSOOSOW SystemIntakeDocumentCommonType = "SOO_SOW"
	// SystemIntakeDocumentCommonTypeDraftICGE means the document is a draft ICGE
	SystemIntakeDocumentCommonTypeDraftICGE SystemIntakeDocumentCommonType = "DRAFT_ICGE"
	// SystemIntakeDocumentCommonTypeDraftOther means the document is some type other than the common document types
	SystemIntakeDocumentCommonTypeDraftOther SystemIntakeDocumentCommonType = "OTHER"
)
View Source
const (
	TRBRequestStatusNew                  = "NEW"
	TRBRequestStatusDraftRequestForm     = "DRAFT_REQUEST_FORM"
	TRBRequestStatusRequestFormComplete  = "REQUEST_FORM_COMPLETE"
	TRBRequestStatusReadyForConsult      = "READY_FOR_CONSULT"
	TRBRequestStatusConsultScheduled     = "CONSULT_SCHEDULED"
	TRBRequestStatusConsultComplete      = "CONSULT_COMPLETE"
	TRBRequestStatusDraftAdviceLetter    = "DRAFT_ADVICE_LETTER"
	TRBRequestStatusAdviceLetterInReview = "ADVICE_LETTER_IN_REVIEW"
	TRBRequestStatusAdviceLetterSent     = "ADVICE_LETTER_SENT"
	TRBRequestStatusFollowUpRequested    = "FOLLOW_UP_REQUESTED"
)

These are the possible values for TRBRequestStatus

View Source
const (
	// TRBRequestDocumentStatusAvailable means that the document passed the virus scanning
	TRBRequestDocumentStatusAvailable TRBRequestDocumentStatus = "AVAILABLE"
	// TRBRequestDocumentStatusPending means that the document was just uploaded and hasn't yet been scanned for viruses
	TRBRequestDocumentStatusPending TRBRequestDocumentStatus = "PENDING"
	// TRBRequestDocumentStatusUnavailable means that the document failed virus scanning
	TRBRequestDocumentStatusUnavailable TRBRequestDocumentStatus = "UNAVAILABLE"

	// TRBRequestDocumentCommonTypeArchitectureDiagram means the document is an architecture diagram
	TRBRequestDocumentCommonTypeArchitectureDiagram TRBDocumentCommonType = "ARCHITECTURE_DIAGRAM"
	// TRBRequestDocumentCommonTypePresentationSlideDeck means the document is a presentation slide deck
	TRBRequestDocumentCommonTypePresentationSlideDeck TRBDocumentCommonType = "PRESENTATION_SLIDE_DECK"
	// TRBRequestDocumentCommonTypeBusinessCase means the document is a business case
	TRBRequestDocumentCommonTypeBusinessCase TRBDocumentCommonType = "BUSINESS_CASE"
	// TRBRequestDocumentCommonTypeOther means the document is some type other than the common document types
	TRBRequestDocumentCommonTypeOther TRBDocumentCommonType = "OTHER"
)

Variables

This section is empty.

Functions

func ContainsAllIDs

func ContainsAllIDs[BS IBaseStruct](models []BS, ids []uuid.UUID) bool

ContainsAllIDs checks if the IDs from a slice of BaseStructs contain all the given IDs

func ConvertEnums

func ConvertEnums[EnumType ~string](pqGroups pq.StringArray) []EnumType

ConvertEnums converts a pq.StringArray to specific, castable type

func EmailAddressesToStringPtrs

func EmailAddressesToStringPtrs(addresses []EmailAddress) []*string

EmailAddressesToStringPtrs converts a slice of EmailAddresses to a slice of string pointers

func EmailAddressesToStrings

func EmailAddressesToStrings(addresses []EmailAddress) []string

EmailAddressesToStrings converts a slice of EmailAddresses to a slice of string values

func MarshalNullBool

func MarshalNullBool(nb null.Bool) graphql.Marshaler

func MarshalNullFloat

func MarshalNullFloat(zf null.Float) graphql.Marshaler

func MarshalNullInt

func MarshalNullInt(ni null.Int) graphql.Marshaler

func MarshalNullString

func MarshalNullString(ns null.String) graphql.Marshaler

func MarshalUUID

func MarshalUUID(id uuid.UUID) graphql.Marshaler

MarshalUUID allows uuid to be marshalled by graphql

func MarshalZeroBool

func MarshalZeroBool(zb zero.Bool) graphql.Marshaler

func MarshalZeroFloat

func MarshalZeroFloat(zf zero.Float) graphql.Marshaler

func MarshalZeroInt

func MarshalZeroInt(zi zero.Int) graphql.Marshaler

func MarshalZeroString

func MarshalZeroString(zs zero.String) graphql.Marshaler

func MarshalZeroTime

func MarshalZeroTime(zt zero.Time) graphql.Marshaler

func StringsFromZeroStrs

func StringsFromZeroStrs(zs []zero.String) []string

func UnmarshalNullBool

func UnmarshalNullBool(v interface{}) (null.Bool, error)

func UnmarshalNullFloat

func UnmarshalNullFloat(v interface{}) (null.Float, error)

func UnmarshalNullInt

func UnmarshalNullInt(v interface{}) (null.Int, error)

func UnmarshalNullString

func UnmarshalNullString(v interface{}) (null.String, error)

func UnmarshalUUID

func UnmarshalUUID(v interface{}) (uuid.UUID, error)

UnmarshalUUID allows uuid to be unmarshalled by graphql

func UnmarshalZeroBool

func UnmarshalZeroBool(v interface{}) (zero.Bool, error)

func UnmarshalZeroFloat

func UnmarshalZeroFloat(v interface{}) (zero.Float, error)

func UnmarshalZeroInt

func UnmarshalZeroInt(v interface{}) (zero.Int, error)

func UnmarshalZeroString

func UnmarshalZeroString(v interface{}) (zero.String, error)

func UnmarshalZeroTime

func UnmarshalZeroTime(v interface{}) (zero.Time, error)

func ZeroStringsFrom

func ZeroStringsFrom(strs []string) []zero.String

Types

type Action

type Action struct {
	ID                                       uuid.UUID         `json:"id"`
	IntakeID                                 *uuid.UUID        `db:"intake_id"`
	BusinessCaseID                           *uuid.UUID        `db:"business_case_id"`
	ActionType                               ActionType        `json:"actionType" db:"action_type"`
	ActorName                                string            `json:"actorName" db:"actor_name"`
	ActorEmail                               EmailAddress      `json:"actorEmail" db:"actor_email"`
	ActorEUAUserID                           string            `json:"actorEuaUserId" db:"actor_eua_user_id"`
	Feedback                                 *HTML             `json:"feedback"`       // Feedback to requestor sent via email
	Step                                     *SystemIntakeStep `json:"step" db:"step"` // optional to account for previous actions that didn't save Step information
	CreatedAt                                *time.Time        `json:"createdAt" db:"created_at"`
	LCIDExpirationChangeNewDate              *time.Time        `db:"lcid_expiration_change_new_date"`
	LCIDExpirationChangePreviousDate         *time.Time        `db:"lcid_expiration_change_previous_date"`
	LCIDExpirationChangeNewScope             *HTML             `db:"lcid_expiration_change_new_scope"`
	LCIDExpirationChangePreviousScope        *HTML             `db:"lcid_expiration_change_previous_scope"`
	LCIDExpirationChangeNewNextSteps         *HTML             `db:"lcid_expiration_change_new_next_steps"`
	LCIDExpirationChangePreviousNextSteps    *HTML             `db:"lcid_expiration_change_previous_next_steps"`
	LCIDExpirationChangeNewCostBaseline      null.String       `db:"lcid_expiration_change_new_cost_baseline"`
	LCIDExpirationChangePreviousCostBaseline null.String       `db:"lcid_expiration_change_previous_cost_baseline"`
	LCIDRetirementChangeNewDate              *time.Time        `json:"newRetirementDate" db:"lcid_retirement_change_new_date"`
	LCIDRetirementChangePreviousDate         *time.Time        `json:"previousRetirementDate" db:"lcid_retirement_change_previous_date"`
}

Action is the model for an action on a system intake

type ActionType

type ActionType string

ActionType represents type of action

const (
	ActionTypePROGRESSTONEWSTEP        ActionType = "PROGRESS_TO_NEW_STEP"
	ActionTypeEXPIRELCID               ActionType = "EXPIRE_LCID"
	ActionTypeUPDATELCID               ActionType = "UPDATE_LCID"
	ActionTypeCONFIRMLCID              ActionType = "CONFIRM_LCID"
	ActionTypeREQUESTEDITS             ActionType = "REQUEST_EDITS"
	ActionTypeCLOSEREQUEST             ActionType = "CLOSE_REQUEST"
	ActionTypeREOPENREQUEST            ActionType = "REOPEN_REQUEST"
	ActionTypeNOTITGOVREQUEST          ActionType = "NOT_GOVERNANCE"
	ActionTypeRETIRELCID               ActionType = "RETIRE_LCID"
	ActionTypeCHANGELCIDRETIREMENTDATE ActionType = "CHANGE_LCID_RETIREMENT_DATE"
)

IT Gov v2 actions

const (
	ActionTypeISSUELCID    ActionType = "ISSUE_LCID"
	ActionTypeREJECT       ActionType = "REJECT"
	ActionTypeSUBMITINTAKE ActionType = "SUBMIT_INTAKE"
)

v1/v2 actions - originally from v1, still used in IT Gov v2

const (
	// ActionTypeNOTITREQUEST captures enum value NOT_IT_REQUEST
	ActionTypeNOTITREQUEST ActionType = "NOT_IT_REQUEST"
	// ActionTypeNEEDBIZCASE captures enum value NEED_BIZ_CASE
	ActionTypeNEEDBIZCASE ActionType = "NEED_BIZ_CASE"
	// ActionTypeREADYFORGRT captures enum value READY_FOR_GRT
	ActionTypeREADYFORGRT ActionType = "READY_FOR_GRT"
	// ActionTypeREADYFORGRB captures enum value READY_FOR_GRB
	ActionTypeREADYFORGRB ActionType = "READY_FOR_GRB"
	// ActionTypePROVIDEFEEDBACKNEEDBIZCASE captures enum value PROVIDE_FEEDBACK_NEED_BIZ_CASE
	ActionTypePROVIDEFEEDBACKNEEDBIZCASE ActionType = "PROVIDE_FEEDBACK_NEED_BIZ_CASE"
	// ActionTypeEXTENDLCID captures enum value EXTEND_LCID
	ActionTypeEXTENDLCID ActionType = "EXTEND_LCID"
	// ActionTypeCREATEBIZCASE captures enum value CREATE_BIZ_CASE
	ActionTypeCREATEBIZCASE ActionType = "CREATE_BIZ_CASE"
	// ActionTypeSUBMITBIZCASE captures enum value SUBMIT_BIZ_CASE
	ActionTypeSUBMITBIZCASE ActionType = "SUBMIT_BIZ_CASE"
	// ActionTypeSUBMITFINALBIZCASE captures enum value SUBMIT_FINAL_BIZ_CASE
	ActionTypeSUBMITFINALBIZCASE ActionType = "SUBMIT_FINAL_BIZ_CASE"
	// ActionTypeBIZCASENEEDSCHANGES captures enum value BIZ_CASE_NEEDS_CHANGES
	ActionTypeBIZCASENEEDSCHANGES ActionType = "BIZ_CASE_NEEDS_CHANGES"
	// ActionTypePROVIDEFEEDBACKBIZCASENEEDSCHANGES captures enum value PROVIDE_GRT_FEEDBACK_BIZ_CASE_DRAFT
	ActionTypePROVIDEFEEDBACKBIZCASENEEDSCHANGES ActionType = "PROVIDE_GRT_FEEDBACK_BIZ_CASE_DRAFT"
	// ActionTypePROVIDEFEEDBACKBIZCASEFINAL captures enum value PROVIDE_GRT_FEEDBACK_BIZ_CASE_FINAL
	ActionTypePROVIDEFEEDBACKBIZCASEFINAL ActionType = "PROVIDE_GRT_FEEDBACK_BIZ_CASE_FINAL"
	// ActionTypeNOGOVERNANCENEEDED captures enum value NO_GOVERNANCE_NEEDED
	ActionTypeNOGOVERNANCENEEDED ActionType = "NO_GOVERNANCE_NEEDED"
	// ActionTypeSENDEMAIL captures enum value SEND_EMAIL
	ActionTypeSENDEMAIL ActionType = "SEND_EMAIL"
	// ActionTypeGUIDERECEIVEDCLOSE captures enum value GUIDE_RECEIVED_CLOSE
	ActionTypeGUIDERECEIVEDCLOSE ActionType = "GUIDE_RECEIVED_CLOSE"
	// ActionTypeNOTRESPONDINGCLOSE captures enum value NOT_RESPONDING_CLOSE
	ActionTypeNOTRESPONDINGCLOSE ActionType = "NOT_RESPONDING_CLOSE"
)

v1 actions - no longer used in IT Gov v2 workflow

type AugmentedSystemIntakeContact

type AugmentedSystemIntakeContact struct {
	SystemIntakeContact
	CommonName string       `json:"commonName"`
	Email      EmailAddress `json:"email"`
}

AugmentedSystemIntakeContact enhances SystemIntakeContact with user info fetched from CEDAR

type BaseStruct

type BaseStruct struct {
	ID         uuid.UUID  `json:"id" db:"id"`
	CreatedBy  string     `json:"createdBy" db:"created_by"`
	CreatedAt  time.Time  `json:"createdAt" db:"created_at"`
	ModifiedBy *string    `json:"modifiedBy" db:"modified_by"`
	ModifiedAt *time.Time `json:"modifiedAt" db:"modified_at"`
}

BaseStruct represents the shared data in common betwen all models

func NewBaseStruct

func NewBaseStruct(createdBy string) BaseStruct

NewBaseStruct returns a base struct object

func (*BaseStruct) GetBaseStruct

func (b *BaseStruct) GetBaseStruct() *BaseStruct

GetBaseStruct returns the Base Struct

func (BaseStruct) GetCreatedBy

func (b BaseStruct) GetCreatedBy() string

GetCreatedBy implements the CreatedBy property

func (BaseStruct) GetID

func (b BaseStruct) GetID() uuid.UUID

GetID returns the ID property for a PlanBasics struct

func (BaseStruct) GetModifiedBy

func (b BaseStruct) GetModifiedBy() *string

GetModifiedBy returns the ModifiedBy property for a PlanBasics struct

func (*BaseStruct) SetModifiedBy

func (b *BaseStruct) SetModifiedBy(principal authentication.Principal) error

SetModifiedBy sets the modifiedBy information based off a Principal object

type BaseStructUser

type BaseStructUser struct {
	ID uuid.UUID `json:"id" db:"id"`
	// contains filtered or unexported fields
}

BaseStructUser represents the shared data in common betwen all models

func NewBaseStructUser

func NewBaseStructUser(createdBy uuid.UUID) BaseStructUser

NewBaseStructUser returns a base struct object

func (*BaseStructUser) CreatedByUserAccount

func (cbr *BaseStructUser) CreatedByUserAccount(ctx context.Context) *authentication.UserAccount

CreatedByUserAccount returns the user account of the user who created the struct from the DB using the UserAccount service

func (*BaseStructUser) GetBaseStruct

func (b *BaseStructUser) GetBaseStruct() *BaseStructUser

GetBaseStruct returns the Base Struct User Object

func (BaseStructUser) GetCreatedBy

func (b BaseStructUser) GetCreatedBy() string

GetCreatedBy implements the CreatedBy property

func (BaseStructUser) GetID

func (b BaseStructUser) GetID() uuid.UUID

GetID returns the ID property for a PlanBasics struct

func (BaseStructUser) GetModifiedBy

func (b BaseStructUser) GetModifiedBy() *string

GetModifiedBy returns the ModifiedBy property for a PlanBasics struct

func (*BaseStructUser) ModifiedByUserAccount

func (mbr *BaseStructUser) ModifiedByUserAccount(ctx context.Context) *authentication.UserAccount

ModifiedByUserAccount returns the user account of the user who modified the struct from the DB using the UserAccount service

type BudgetActualCost

type BudgetActualCost struct {
	ActualSystemCost zero.String `json:"actualSystemCost,omitempty"`
	FiscalYear       zero.String `json:"fiscalYear,omitempty"`
	SystemID         zero.String `json:"systemId,omitempty"`
}

type BusinessCase

type BusinessCase struct {
	ID                                  uuid.UUID               `json:"id"`
	EUAUserID                           string                  `json:"euaUserId" db:"eua_user_id"`
	SystemIntakeID                      uuid.UUID               `json:"systemIntakeId" db:"system_intake"`
	Status                              BusinessCaseStatus      `json:"status"`
	ProjectName                         null.String             `json:"projectName" db:"project_name"`
	Requester                           null.String             `json:"requester"`
	RequesterPhoneNumber                null.String             `json:"requesterPhoneNumber" db:"requester_phone_number"`
	BusinessOwner                       null.String             `json:"businessOwner" db:"business_owner"`
	BusinessNeed                        null.String             `json:"businessNeed" db:"business_need"`
	CurrentSolutionSummary              null.String             `json:"currentSolutionSummary" db:"current_solution_summary"`
	CMSBenefit                          null.String             `json:"cmsBenefit" db:"cms_benefit"`
	PriorityAlignment                   null.String             `json:"priorityAlignment" db:"priority_alignment"`
	SuccessIndicators                   null.String             `json:"successIndicators" db:"success_indicators"`
	PreferredTitle                      null.String             `json:"preferredTitle" db:"preferred_title"`
	PreferredSummary                    null.String             `json:"preferredSummary" db:"preferred_summary"`
	PreferredAcquisitionApproach        null.String             `json:"preferredAcquisitionApproach" db:"preferred_acquisition_approach"`
	PreferredSecurityIsApproved         null.Bool               `json:"preferredSecurityIsApproved" db:"preferred_security_is_approved"`
	PreferredSecurityIsBeingReviewed    null.String             `json:"preferredSecurityIsBeingReviewed" db:"preferred_security_is_being_reviewed"`
	PreferredHostingType                null.String             `json:"preferredHostingType" db:"preferred_hosting_type"`
	PreferredHostingLocation            null.String             `json:"preferredHostingLocation" db:"preferred_hosting_location"`
	PreferredHostingCloudServiceType    null.String             `json:"preferredHostingCloudServiceType" db:"preferred_hosting_cloud_service_type"`
	PreferredHasUI                      null.String             `json:"preferredHasUI" db:"preferred_has_ui"`
	PreferredPros                       null.String             `json:"preferredPros" db:"preferred_pros"`
	PreferredCons                       null.String             `json:"preferredCons" db:"preferred_cons"`
	PreferredCostSavings                null.String             `json:"preferredCostSavings" db:"preferred_cost_savings"`
	AlternativeATitle                   null.String             `json:"alternativeATitle" db:"alternative_a_title"`
	AlternativeASummary                 null.String             `json:"alternativeASummary" db:"alternative_a_summary"`
	AlternativeAAcquisitionApproach     null.String             `json:"alternativeAAcquisitionApproach" db:"alternative_a_acquisition_approach"`
	AlternativeASecurityIsApproved      null.Bool               `json:"alternativeASecurityIsApproved" db:"alternative_a_security_is_approved"`
	AlternativeASecurityIsBeingReviewed null.String             `json:"alternativeASecurityIsBeingReviewed" db:"alternative_a_security_is_being_reviewed"`
	AlternativeAHostingType             null.String             `json:"alternativeAHostingType" db:"alternative_a_hosting_type"`
	AlternativeAHostingLocation         null.String             `json:"alternativeAHostingLocation" db:"alternative_a_hosting_location"`
	AlternativeAHostingCloudServiceType null.String             `json:"alternativeAHostingCloudServiceType" db:"alternative_a_hosting_cloud_service_type"`
	AlternativeAHasUI                   null.String             `json:"alternativeAHasUI" db:"alternative_a_has_ui"`
	AlternativeAPros                    null.String             `json:"alternativeAPros" db:"alternative_a_pros"`
	AlternativeACons                    null.String             `json:"alternativeACons" db:"alternative_a_cons"`
	AlternativeACostSavings             null.String             `json:"alternativeACostSavings" db:"alternative_a_cost_savings"`
	AlternativeBTitle                   null.String             `json:"alternativeBTitle" db:"alternative_b_title"`
	AlternativeBSummary                 null.String             `json:"alternativeBSummary" db:"alternative_b_summary"`
	AlternativeBAcquisitionApproach     null.String             `json:"alternativeBAcquisitionApproach" db:"alternative_b_acquisition_approach"`
	AlternativeBSecurityIsApproved      null.Bool               `json:"alternativeBSecurityIsApproved" db:"alternative_b_security_is_approved"`
	AlternativeBSecurityIsBeingReviewed null.String             `json:"alternativeBSecurityIsBeingReviewed" db:"alternative_b_security_is_being_reviewed"`
	AlternativeBHostingType             null.String             `json:"alternativeBHostingType" db:"alternative_b_hosting_type"`
	AlternativeBHostingLocation         null.String             `json:"alternativeBHostingLocation" db:"alternative_b_hosting_location"`
	AlternativeBHostingCloudServiceType null.String             `json:"alternativeBHostingCloudServiceType" db:"alternative_b_hosting_cloud_service_type"`
	AlternativeBHasUI                   null.String             `json:"alternativeBHasUI" db:"alternative_b_has_ui"`
	AlternativeBPros                    null.String             `json:"alternativeBPros" db:"alternative_b_pros"`
	AlternativeBCons                    null.String             `json:"alternativeBCons" db:"alternative_b_cons"`
	AlternativeBCostSavings             null.String             `json:"alternativeBCostSavings" db:"alternative_b_cost_savings"`
	LifecycleCostLines                  EstimatedLifecycleCosts `json:"lifecycleCostLines" db:"lifecycle_cost_lines"`
	CreatedAt                           *time.Time              `json:"createdAt" db:"created_at"`
	UpdatedAt                           *time.Time              `json:"updatedAt" db:"updated_at"`
	ArchivedAt                          *time.Time              `db:"archived_at"`
}

BusinessCase is the model for the business case form.

type BusinessCaseStatus

type BusinessCaseStatus string

BusinessCaseStatus represents the status of a system intake

type BusinessCases

type BusinessCases []BusinessCase

BusinessCases is the model for a list of business cases

type BusinessOwnerInformation

type BusinessOwnerInformation struct {
	BeneficiaryAddressPurpose      []zero.String `json:"beneficiaryAddressPurpose"`
	BeneficiaryAddressPurposeOther zero.String   `json:"beneficiaryAddressPurposeOther"`
	BeneficiaryAddressSource       []zero.String `json:"beneficiaryAddressSource"`
	BeneficiaryAddressSourceOther  zero.String   `json:"beneficiaryAddressSourceOther"`
	CostPerYear                    zero.String   `json:"costPerYear"`
	IsCmsOwned                     bool          `json:"isCmsOwned"`
	NumberOfContractorFte          zero.String   `json:"numberOfContractorFte"`
	NumberOfFederalFte             zero.String   `json:"numberOfFederalFte"`
	NumberOfSupportedUsersPerMonth zero.String   `json:"numberOfSupportedUsersPerMonth"`
	StoresBankingData              bool          `json:"storesBankingData"`
	StoresBeneficiaryAddress       bool          `json:"storesBeneficiaryAddress"`
}

BusinessOwnerInformation contains information about the business owner for a CEDAR system

type CedarAssigneeType

type CedarAssigneeType string

CedarAssigneeType represents the possible types of assignees that can receive roles

const (
	// PersonAssignee represents a person that's been assigned a role
	PersonAssignee CedarAssigneeType = "PERSON"
	// OrganizationAssignee represents an organization that's been assigned a role
	OrganizationAssignee CedarAssigneeType = "ORGANIZATION"
)

these values need to be in all-caps so that they match the GraphQL enum and match the frontend types generated from the GQL schema

type CedarAuthorityToOperate

type CedarAuthorityToOperate struct {
	// always-present fields
	CedarID               zero.String   `json:"cedarId"`
	UUID                  zero.String   `json:"uuid"`
	SystemOfRecordsNotice []zero.String `json:"systemOfRecordsNotice"`

	// possibly-null fields
	ActualDispositionDate                     zero.Time   `json:"actualDispositionDate"`
	ContainsPersonallyIdentifiableInformation bool        `json:"containsPersonallyIdentifiableInformation"`
	CountOfTotalNonPrivilegedUserPopulation   int         `json:"countOfTotalNonPrivilegedUserPopulation"`
	CountOfOpenPoams                          int         `json:"countOfOpenPoams"`
	CountOfTotalPrivilegedUserPopulation      int         `json:"countOfTotalPrivilegedUserPopulation"`
	DateAuthorizationMemoExpires              zero.Time   `json:"dateAuthorizationMemoExpires"`
	DateAuthorizationMemoSigned               zero.Time   `json:"dateAuthorizationMemoSigned"`
	EAuthenticationLevel                      zero.String `json:"eAuthenticationLevel"`
	Fips199OverallImpactRating                int         `json:"fips199OverallImpactRating"`
	FismaSystemAcronym                        zero.String `json:"fismaSystemAcronym"`
	FismaSystemName                           zero.String `json:"fismaSystemName"`
	IsAccessedByNonOrganizationalUsers        bool        `json:"isAccessedByNonOrganizationalUsers"`
	IsPiiLimitedToUserNameAndPass             bool        `json:"isPiiLimitedToUserNameAndPass"`
	IsProtectedHealthInformation              bool        `json:"isProtectedHealthInformation"`
	LastActScaDate                            zero.Time   `json:"lastActScaDate"`
	LastAssessmentDate                        zero.Time   `json:"lastAssessmentDate"`
	LastContingencyPlanCompletionDate         zero.Time   `json:"lastContingencyPlanCompletionDate"`
	LastPenTestDate                           zero.Time   `json:"lastPenTestDate"`
	PiaCompletionDate                         zero.Time   `json:"piaCompletionDate"`
	PrimaryCyberRiskAdvisor                   zero.String `json:"primaryCyberRiskAdvisor"`
	PrivacySubjectMatterExpert                zero.String `json:"privacySubjectMatterExpert"`
	RecoveryPointObjective                    float64     `json:"recoveryPointObjective"`
	RecoveryTimeObjective                     float64     `json:"recoveryTimeObjective"`
	TLCPhase                                  zero.String `json:"tlcPhase"`
	XLCPhase                                  zero.String `json:"xlcPhase"`
}

CedarAuthorityToOperate is the model for ATO information that comes back from the CEDAR Core API

type CedarBudget

type CedarBudget struct {
	FiscalYear    zero.String `json:"fiscalYear,omitempty"`
	Funding       zero.String `json:"funding,omitempty"`
	FundingID     zero.String `json:"fundingId,omitempty"`
	FundingSource zero.String `json:"fundingSource,omitempty"`
	ID            zero.String `json:"id,omitempty"`
	Name          zero.String `json:"name,omitempty"`
	ProjectID     zero.String `json:"projectId"`
	ProjectTitle  zero.String `json:"projectTitle,omitempty"`
	SystemID      zero.String `json:"systemId,omitempty"`
}

type CedarBudgetSystemCost

type CedarBudgetSystemCost struct {
	// Always present fields
	BudgetActualCosts []*BudgetActualCost `json:"budgetActualCosts"`
}

type CedarContract

type CedarContract struct {
	EndDate         zero.Time   `json:"endDate,omitempty"`
	StartDate       zero.Time   `json:"startDate,omitempty"`
	ContractNumber  zero.String `json:"contractNumber"`
	ContractName    zero.String `json:"contractName,omitempty"`
	Description     zero.String `json:"description,omitempty"`
	OrderNumber     zero.String `json:"orderNumber,omitempty"`
	ServiceProvided zero.String `json:"serviceProvided,omitempty"`
	IsDeliveryOrg   bool        `json:"isDeliveryOrg"`
	SystemID        zero.String `json:"systemId,omitempty"`
}

type CedarDataCenter

type CedarDataCenter struct {
	ID          zero.String
	Name        zero.String
	Version     zero.String
	Description zero.String
	State       zero.String // example: "Active" - NOT geographical state
	Status      zero.String
	StartDate   zero.Time
	EndDate     zero.Time

	// address components
	Address1     zero.String
	Address2     zero.String
	City         zero.String
	AddressState zero.String
	Zip          zero.String
}

CedarDataCenter represents a single DataCenter object returned from the CEDAR API

type CedarDataCenter2

type CedarDataCenter2 struct {
	Address1     zero.String `json:"address1,omitempty"`
	Address2     zero.String `json:"address2,omitempty"`
	AddressState zero.String `json:"addressState,omitempty"`
	City         zero.String `json:"city,omitempty"`
	Description  zero.String `json:"description,omitempty"`
	EndDate      zero.Time   `json:"endDate,omitempty"`
	ID           zero.String `json:"id,omitempty"`
	Name         zero.String `json:"name,omitempty"`
	StartDate    zero.Time   `json:"startDate,omitempty"`
	State        zero.String `json:"state,omitempty"`
	Status       zero.String `json:"status,omitempty"`
	Version      zero.String `json:"version,omitempty"`
	Zip          zero.String `json:"zip,omitempty"`
}

type CedarDeployment

type CedarDeployment struct {
	// always-present fields
	ID       zero.String
	Name     zero.String
	SystemID zero.String

	// possibly-null fields
	StartDate                zero.Time
	EndDate                  zero.Time
	IsHotSite                zero.String // currently echoes CEDAR data exactly. in the future, this could potentially be nullable Bool; sample values from CEDAR seem to be "Yes" or null
	Description              zero.String
	ContractorName           zero.String
	SystemVersion            zero.String
	HasProductionData        zero.String // currently echoes CEDAR data exactly. in the future, this could potentially be nullable Bool; sample values from CEDAR seem to be "Yes" or null
	ReplicatedSystemElements []string
	DeploymentType           zero.String
	SystemName               zero.String
	DeploymentElementID      zero.String
	State                    zero.String
	Status                   zero.String
	WanType                  zero.String
	DataCenter               *CedarDataCenter
}

CedarDeployment represents a single Deployment object returned from the CEDAR API

type CedarExchange

type CedarExchange struct {
	ConnectionFrequency        []zero.String                  `json:"connectionFrequency"`
	ContainsBankingData        bool                           `json:"containsBankingData,omitempty"`
	ContainsBeneficiaryAddress bool                           `json:"containsBeneficiaryAddress,omitempty"`
	ContainsPhi                bool                           `json:"containsPhi,omitempty"`
	ContainsPii                bool                           `json:"containsPii,omitempty"`
	DataExchangeAgreement      zero.String                    `json:"dataExchangeAgreement,omitempty"`
	DataFormat                 zero.String                    `json:"dataFormat,omitempty"`
	DataFormatOther            zero.String                    `json:"dataFormatOther,omitempty"`
	ExchangeDescription        zero.String                    `json:"exchangeDescription,omitempty"`
	ExchangeEndDate            zero.Time                      `json:"exchangeEndDate,omitempty"`
	ExchangeID                 zero.String                    `json:"exchangeId,omitempty"`
	ExchangeName               zero.String                    `json:"exchangeName,omitempty"`
	ExchangeRetiredDate        zero.Time                      `json:"exchangeRetiredDate,omitempty"`
	ExchangeStartDate          zero.Time                      `json:"exchangeStartDate,omitempty"`
	ExchangeState              zero.String                    `json:"exchangeState,omitempty"`
	ExchangeVersion            zero.String                    `json:"exchangeVersion,omitempty"`
	ExchangeDirection          ExchangeDirection              `json:"exchangeDirection,omitempty"`
	FromOwnerID                zero.String                    `json:"fromOwnerId,omitempty"`
	FromOwnerName              zero.String                    `json:"fromOwnerName,omitempty"`
	FromOwnerType              zero.String                    `json:"fromOwnerType,omitempty"`
	IsBeneficiaryMailingFile   bool                           `json:"isBeneficiaryMailingFile,omitempty"`
	NumOfRecords               zero.String                    `json:"numOfRecords,omitempty"`
	SharedViaAPI               bool                           `json:"sharedViaApi,omitempty"`
	ToOwnerID                  zero.String                    `json:"toOwnerId,omitempty"`
	ToOwnerName                zero.String                    `json:"toOwnerName,omitempty"`
	ToOwnerType                zero.String                    `json:"toOwnerType,omitempty"`
	TypeOfData                 []*CedarExchangeTypeOfDataItem `json:"typeOfData"`
}

CedarExchange contains information about how data is exchanged between a CEDAR system and another system

type CedarExchangeTypeOfDataItem

type CedarExchangeTypeOfDataItem struct {
	ID   zero.String `json:"id,omitempty"`
	Name zero.String `json:"name,omitempty"`
}

CedarExchangeTypeOfDataItem is one item of the TypeofData slice in a CedarExchange

type CedarRole

type CedarRole struct {
	// always-present fields
	Application zero.String // should always be "alfabet"
	ObjectID    zero.String // ID of the system that the role is assigned to
	RoleTypeID  zero.String

	// possibly-null fields
	AssigneeType      *CedarAssigneeType
	AssigneeUsername  zero.String
	AssigneeEmail     zero.String
	AssigneeOrgID     zero.String
	AssigneeOrgName   zero.String
	AssigneeFirstName zero.String
	AssigneeLastName  zero.String
	AssigneePhone     zero.String
	AssigneeDesc      zero.String

	RoleTypeName zero.String
	RoleTypeDesc zero.String
	RoleID       zero.String
	ObjectType   zero.String
}

CedarRole is the model for the role that a user holds for some system

type CedarRoleType

type CedarRoleType struct {
	// always-present fields
	ID          zero.String
	Application zero.String // should always be "alfabet"
	Name        zero.String

	// possibly-null fields
	Description zero.String
}

CedarRoleType is the model for a type of role that a user or organization can hold for some system, i.e. "Business Owner" or "Project Lead"

type CedarSoftwareProducts

type CedarSoftwareProducts struct {
	// Always present fields
	AiSolnCatg       []zero.String          `json:"aiSolnCatg"`
	ApiDataArea      []zero.String          `json:"apiDataArea"`
	SoftwareProducts []*SoftwareProductItem `json:"softwareProducts"`

	// Possibly null fields
	AISolnCatgOther     zero.String `json:"aiSolnCatgOther,omitempty"`
	APIDescPubLocation  zero.String `json:"apiDescPubLocation,omitempty"`
	APIDescPublished    zero.String `json:"apiDescPublished,omitempty"`
	APIFHIRUse          zero.String `json:"apiFHIRUse,omitempty"`
	APIFHIRUseOther     zero.String `json:"apiFHIRUseOther,omitempty"`
	APIHasPortal        bool        `json:"apiHasPortal,omitempty"`
	ApisAccessibility   zero.String `json:"apisAccessibility,omitempty"`
	ApisDeveloped       zero.String `json:"apisDeveloped,omitempty"`
	DevelopmentStage    zero.String `json:"developmentStage,omitempty"`
	SystemHasAPIGateway bool        `json:"systemHasApiGateway,omitempty"`
	UsesAiTech          zero.String `json:"usesAiTech,omitempty"`
}

CedarSoftwareProduct represents a single SoftwareProduct object returned from the CEDAR API

type CedarSubSystem

type CedarSubSystem struct {
	ID          zero.String `json:"id"`
	Name        zero.String `json:"name"`
	Description zero.String `json:"description"`
	Acronym     zero.String `json:"acronym"`
}

CedarSubSystem is the model for a sub system that comes back from the CEDAR Core API

type CedarSystem

type CedarSystem struct {
	ID                      zero.String `json:"id"`
	Name                    zero.String `json:"name"`
	Description             zero.String `json:"description"`
	Acronym                 zero.String `json:"acronym"`
	Status                  zero.String `json:"status"`
	BusinessOwnerOrg        zero.String `json:"businessOwnerOrg"`
	BusinessOwnerOrgComp    zero.String `json:"businessOwnerOrgComp"`
	SystemMaintainerOrg     zero.String `json:"systemMaintainerOrg"`
	SystemMaintainerOrgComp zero.String `json:"systemMaintainerOrgComp"`
	VersionID               zero.String `json:"versionId"`
}

CedarSystem is the model for a single system that comes back from the CEDAR Core API

type CedarSystemBookmark

type CedarSystemBookmark struct {
	EUAUserID     string     `json:"euaUserId" db:"eua_user_id"`
	CedarSystemID string     `json:"cedarSystemId" db:"cedar_system_id"`
	CreatedAt     *time.Time `db:"created_at"`
}

CedarSystemBookmark represents a cedar system that a user has bookmarked in the system repository

type CedarSystemDetails

type CedarSystemDetails struct {
	CedarSystem                 *CedarSystem
	BusinessOwnerInformation    *BusinessOwnerInformation
	SystemMaintainerInformation *SystemMaintainerInformation
	Roles                       []*CedarRole       `json:"roles"`
	Deployments                 []*CedarDeployment `json:"deployments"`
	Threats                     []*CedarThreat     `json:"threats"`
	URLs                        []*CedarURL        `json:"urls"`
}

CedarSystemDetails contains more detailed information related to a CEDAR system

type CedarThreat

type CedarThreat struct {
	// possibly-null fields
	AlternativeID     zero.String `json:"alternativeId"`
	ControlFamily     zero.String `json:"controlFamily"`
	DaysOpen          int         `json:"daysOpen"`
	ID                zero.String `json:"id"`
	ParentID          zero.String `json:"parentId"`
	Type              zero.String `json:"type"`
	WeaknessRiskLevel zero.String `json:"weaknessRiskLevel"`
}

CedarThreat is the model for threat information that comes back from the CEDAR Core API

type CedarURL

type CedarURL struct {
	// always-present field
	ID zero.String

	Address                        zero.String // The actual URL.
	IsBehindWebApplicationFirewall bool
	IsAPIEndpoint                  bool
	IsVersionCodeRepository        bool        // Represents whether this URL provides access to a versioned code repository.
	URLHostingEnv                  zero.String // This should correspond with .DeploymentType on a CedarDeployment object.
}

CedarURL represents a single URL object returned from the CEDAR API

type EmailAddress

type EmailAddress string

EmailAddress represents an email address

func NewEmailAddress

func NewEmailAddress(address string) EmailAddress

NewEmailAddress creates a new email address

func (EmailAddress) String

func (e EmailAddress) String() string

String returns the email address as a string

type EmailNotificationRecipients

type EmailNotificationRecipients struct {
	RegularRecipientEmails   []EmailAddress
	ShouldNotifyITGovernance bool
	ShouldNotifyITInvestment bool
}

EmailNotificationRecipients contains info about who to notify when an action is taken on an intake request

type EstimatedLifecycleCost

type EstimatedLifecycleCost struct {
	ID             uuid.UUID             `json:"id"`
	BusinessCaseID uuid.UUID             `json:"business_case" db:"business_case"`
	Solution       LifecycleCostSolution `json:"solution"`
	Phase          *LifecycleCostPhase   `json:"phase"`
	Year           LifecycleCostYear     `json:"year"`
	Cost           *int                  `json:"cost"`
}

EstimatedLifecycleCost is the model for the cost of an estimated lifecycle line in the business case.

type EstimatedLifecycleCosts

type EstimatedLifecycleCosts []EstimatedLifecycleCost

EstimatedLifecycleCosts models a list of EstimatedLifecycleCost line items

func (*EstimatedLifecycleCosts) Scan

func (e *EstimatedLifecycleCosts) Scan(src interface{}) error

Scan implements the sql.Scanner interface

type ExchangeDirection

type ExchangeDirection string

ExchangeDirection indicates the direction of data flow in a CEDAR exchange

const (
	// ExchangeDirectionSender indicates that the system is the sender of data in the data exchange
	ExchangeDirectionSender ExchangeDirection = "sender"
	// ExchangeDirectionReceiver indicates that the system is the receiver of data in the data exchange
	ExchangeDirectionReceiver = "receiver"
)

type GovernanceRequestFeedback

type GovernanceRequestFeedback struct {
	// Can't use BaseStruct here since CreatedBy is nullable in the DB
	ID         uuid.UUID  `json:"id" db:"id"`
	CreatedBy  *string    `json:"createdBy" db:"created_by"`
	CreatedAt  time.Time  `json:"createdAt" db:"created_at"`
	ModifiedBy *string    `json:"modifiedBy" db:"modified_by"`
	ModifiedAt *time.Time `json:"modifiedAt" db:"modified_at"`

	IntakeID     uuid.UUID                             `json:"intakeId" db:"intake_id"`
	Feedback     HTML                                  `json:"feedback" db:"feedback"`
	SourceAction GovernanceRequestFeedbackSourceAction `json:"sourceAction" db:"source_action"`
	TargetForm   GovernanceRequestFeedbackTargetForm   `json:"targetForm" db:"target_form"`
	Type         GovernanceRequestFeedbackType         `json:"type" db:"type"`
}

GovernanceRequestFeedback represents feedback given to the requester on a governance request

type GovernanceRequestFeedbackSourceAction

type GovernanceRequestFeedbackSourceAction string

GovernanceRequestFeedbackSourceAction is an eumeration of the possible actions that can provide feedback on a governance request

const (
	GRFSARequestEdits      GovernanceRequestFeedbackSourceAction = "REQUEST_EDITS"
	GRFSAProgressToNewStep GovernanceRequestFeedbackSourceAction = "PROGRESS_TO_NEW_STEP"
)

These are the possible forms that can provide feedback

type GovernanceRequestFeedbackTargetForm

type GovernanceRequestFeedbackTargetForm string

GovernanceRequestFeedbackTargetForm is an enumeration of the possible forms on a governance intake request that can receive feedback

const (
	GRFTFNoTargetProvided  GovernanceRequestFeedbackTargetForm = "NO_TARGET_PROVIDED"
	GRFTFIntakeRequest     GovernanceRequestFeedbackTargetForm = "INTAKE_REQUEST"
	GRFTFDraftBusinessCase GovernanceRequestFeedbackTargetForm = "DRAFT_BUSINESS_CASE"
	GRFTFinalBusinessCase  GovernanceRequestFeedbackTargetForm = "FINAL_BUSINESS_CASE"
)

These are the possible forms that can have governance request feedback

func (GovernanceRequestFeedbackTargetForm) Humanize

Humanize translates a GovernanceRequestFeedbackTargetForm to human readable text

type GovernanceRequestFeedbackType

type GovernanceRequestFeedbackType string

GovernanceRequestFeedbackType is an enumeration of the possible types of feedback on governance requests, based on who it's directed to

const (
	GRFTRequester GovernanceRequestFeedbackType = "REQUESTER"
	GRFTGRB       GovernanceRequestFeedbackType = "GRB"
)

These are the possible types of recipients of feedback on governanance requests

type HTML

type HTML string

HTML represents html code. It is sanitized when unmarshaled from graphQL or when converted to HTML to only allow specific tags

func HTMLPointer

func HTMLPointer(input string) *HTML

HTMLPointer returns a pointer to an HTML type from a string input

func (HTML) MarshalGQLContext

func (h HTML) MarshalGQLContext(ctx context.Context, w io.Writer) error

MarshalGQLContext marshals the HTML type to JSON to return to graphQL

func (*HTML) StringPointer

func (h *HTML) StringPointer() *string

StringPointer casts an HTML pointer to a string pointer

func (*HTML) ToTemplate

func (h *HTML) ToTemplate() template.HTML

ToTemplate converts and sanitizes the HTML type to a template.HTML struct

func (*HTML) UnmarshalGQLContext

func (h *HTML) UnmarshalGQLContext(ctx context.Context, v interface{}) error

UnmarshalGQLContext unmarshals the data from graphql to the HTML type

func (*HTML) ValueOrEmptyHTML

func (h *HTML) ValueOrEmptyHTML() HTML

ValueOrEmptyHTML returns either the value of the html or an empty HTML type if nil

func (*HTML) ValueOrEmptyString

func (h *HTML) ValueOrEmptyString() string

ValueOrEmptyString returns either the value of the html or an empty string if nil

type IBaseStruct

type IBaseStruct interface {
	// GetBaseStruct() *BaseStruct
	GetID() uuid.UUID
	GetCreatedBy() string
	GetModifiedBy() *string
	// This method sets the modified properties of a BaseStruct using the information provided by a principal object
	SetModifiedBy(principal authentication.Principal) error
}

IBaseStruct is an interface that all models must implement

type ITGovDecisionStatus

type ITGovDecisionStatus string

ITGovDecisionStatus represents the types of ITGovDecisionStatus types. This is what the requestor sees for the third task.

const (
	ITGDSCantStart ITGovDecisionStatus = "CANT_START"
	ITGDSInReview  ITGovDecisionStatus = "IN_REVIEW"
	ITGDSCompleted ITGovDecisionStatus = "COMPLETED"
)

These are the options for ITGovDecisionStatus

type ITGovDraftBusinessCaseStatus

type ITGovDraftBusinessCaseStatus string

ITGovDraftBusinessCaseStatus represents the types of ITGovDraftBusinessCaseStatus types. This is what the requestor sees for the optional fourth task.

const (
	ITGDBCSCantStart      ITGovDraftBusinessCaseStatus = "CANT_START"
	ITGDBCSNotNeeded      ITGovDraftBusinessCaseStatus = "NOT_NEEDED"
	ITGDBCSReady          ITGovDraftBusinessCaseStatus = "READY"
	ITGDBCSInProgress     ITGovDraftBusinessCaseStatus = "IN_PROGRESS"
	ITGDBCSEditsRequested ITGovDraftBusinessCaseStatus = "EDITS_REQUESTED"
	ITGDBCSSubmitted      ITGovDraftBusinessCaseStatus = "SUBMITTED"
	ITGDBCSDone           ITGovDraftBusinessCaseStatus = "DONE"
)

These are the options for ITGovDraftBusinessCaseStatus

type ITGovFeedbackStatus

type ITGovFeedbackStatus string

ITGovFeedbackStatus represents the types of ITGovFeedbackStatus types. This is what the requestor sees for the second task.

const (
	ITGFBSCantStart ITGovFeedbackStatus = "CANT_START"
	ITGFBSInReview  ITGovFeedbackStatus = "IN_REVIEW"
	ITGFBSCompleted ITGovFeedbackStatus = "COMPLETED"
)

These are the options for ITGovFeedbackStatus

type ITGovFinalBusinessCaseStatus

type ITGovFinalBusinessCaseStatus string

ITGovFinalBusinessCaseStatus represents the types of ITGovFinalBusinessCaseStatus types. This is what the requestor sees for the optional sixth task.

const (
	ITGFBCSCantStart      ITGovFinalBusinessCaseStatus = "CANT_START"
	ITGFBCSNotNeeded      ITGovFinalBusinessCaseStatus = "NOT_NEEDED"
	ITGFBCSReady          ITGovFinalBusinessCaseStatus = "READY"
	ITGFBCSInProgress     ITGovFinalBusinessCaseStatus = "IN_PROGRESS"
	ITGFBCSEditsRequested ITGovFinalBusinessCaseStatus = "EDITS_REQUESTED"
	ITGFBCSSubmitted      ITGovFinalBusinessCaseStatus = "SUBMITTED"
	ITGFBCSDone           ITGovFinalBusinessCaseStatus = "DONE"
)

These are the options for ITGovFinalBusinessCaseStatus

type ITGovGRBStatus

type ITGovGRBStatus string

ITGovGRBStatus represents the types of ITGovGRBStatus types. This is what the requestor sees for the optional seventh task.

const (
	ITGGRBSCantStart        ITGovGRBStatus = "CANT_START"
	ITGGRBSNotNeeded        ITGovGRBStatus = "NOT_NEEDED"
	ITGGRBSReadyToSchedule  ITGovGRBStatus = "READY_TO_SCHEDULE"
	ITGGRBSScheduled        ITGovGRBStatus = "SCHEDULED"
	ITGGRBSAwaitingDecision ITGovGRBStatus = "AWAITING_DECISION"
	ITGGRBSCompleted        ITGovGRBStatus = "COMPLETED"
)

These are the options for ITGovGRBStatus

type ITGovGRTStatus

type ITGovGRTStatus string

ITGovGRTStatus represents the types of ITGovGRTStatus types. This is what the requestor sees for the optional fifth task.

const (
	ITGGRTSCantStart        ITGovGRTStatus = "CANT_START"
	ITGGRTSNotNeeded        ITGovGRTStatus = "NOT_NEEDED"
	ITGGRTSReadyToSchedule  ITGovGRTStatus = "READY_TO_SCHEDULE"
	ITGGRTSScheduled        ITGovGRTStatus = "SCHEDULED"
	ITGGRTSAwaitingDecision ITGovGRTStatus = "AWAITING_DECISION"
	ITGGRTSCompleted        ITGovGRTStatus = "COMPLETED"
)

These are the options for ITGovGRTStatus

type ITGovIntakeFormStatus

type ITGovIntakeFormStatus string

ITGovIntakeFormStatus represents the types of ITGovIntakeFormStatus types. This is what the requester sees for the first task

const (
	ITGISReady          ITGovIntakeFormStatus = "READY"
	ITGISInProgress     ITGovIntakeFormStatus = "IN_PROGRESS"
	ITGISEditsRequested ITGovIntakeFormStatus = "EDITS_REQUESTED"
	ITGISCompleted      ITGovIntakeFormStatus = "COMPLETED"
)

These are the options for ITGovIntakeStatus

type ITGovTaskStatuses

type ITGovTaskStatuses struct {
	ParentSystemIntake *SystemIntake
}

ITGovTaskStatuses is a helper struct used by GQL to wrap a returned System Intake, so section statuses can be calculated only when requested

type IntakeReview

type IntakeReview struct {
	IntakeID  uuid.UUID
	Decision  IntakeReviewDecision
	EmailText string
}

IntakeReview models the GRT review form for a system intake

type IntakeReviewDecision

type IntakeReviewDecision string

IntakeReviewDecision represents the decision on an intake review

const (
	// IntakeReviewDecisionISSUEID captures enum value "ISSUE_ID"
	IntakeReviewDecisionISSUEID IntakeReviewDecision = "ISSUE_ID"
	// IntakeReviewDecisionREVIEWNEEDED captures enum value "REVIEW_PROCESS_NEEDED"
	IntakeReviewDecisionREVIEWNEEDED IntakeReviewDecision = "REVIEW_PROCESS_NEEDED"
	// IntakeReviewDecisionGOVERNANCENOTNEEDED captures enum value "GOVERNANCE_NOT_NEEDED"
	IntakeReviewDecisionGOVERNANCENOTNEEDED IntakeReviewDecision = "GOVERNANCE_NOT_NEEDED"
)

type LifecycleCostPhase

type LifecycleCostPhase string

LifecycleCostPhase represents the phase of a lifecycle cost line

type LifecycleCostSolution

type LifecycleCostSolution string

LifecycleCostSolution represents the solution associated with the line

type LifecycleCostYear

type LifecycleCostYear string

LifecycleCostYear represents the year associated with the line

type MetricsDigest

type MetricsDigest struct {
	SystemIntakeMetrics SystemIntakeMetrics `json:"system_intake"`
}

MetricsDigest contains a set of metrics

type PersonRole

type PersonRole string

PersonRole is an enumeration of values representing the role of a person (currently in use for TRBRequestAttendee and potentially SystemIntakeContact in the future)

const (
	// PersonRoleBusinessOwner is a person with the "Business Owner" role
	PersonRoleBusinessOwner PersonRole = "BUSINESS_OWNER"
	// PersonRoleProductOwner is a person with the "Product Owner" role
	PersonRoleProductOwner PersonRole = "PRODUCT_OWNER"
	// PersonRoleSystemOwner is a person with the "System Owner" role
	PersonRoleSystemOwner PersonRole = "SYSTEM_OWNER"
	// PersonRoleSystemMaintainer is a person with the "System Maintainer" role
	PersonRoleSystemMaintainer PersonRole = "SYSTEM_MAINTAINER"
	// PersonRoleContractOfficersRepresentative is a person with the "ContractOfficersRepresentative" role
	PersonRoleContractOfficersRepresentative PersonRole = "CONTRACT_OFFICE_RSREPRESENTATIVE"
	// PersonRoleCloudNavigator is a person with the "Cloud Navigator" role
	PersonRoleCloudNavigator PersonRole = "CLOUD_NAVIGATOR"
	// PersonRoleInformationSystemSecurityAdvisor is a person with the "Information System Security Advisor" role
	PersonRoleInformationSystemSecurityAdvisor PersonRole = "INFORMATION_SYSTEM_SECURITY_ADVISOR"
	// PersonRolePrivacyAdvisor is a person with the "Privacy Advisor" role
	PersonRolePrivacyAdvisor PersonRole = "PRIVACY_ADVISOR"
	// PersonRoleCRA is a person with the "Cyber Risk Advisor (CRA)" role
	PersonRoleCRA PersonRole = "CRA"
	// PersonRoleOther is a person with the "Other" role
	PersonRoleOther PersonRole = "OTHER"
)

type RequestRelationType

type RequestRelationType string

RequestRelationType represents an enum for different relation types of intakes

const (
	RelationTypeNewSystem       RequestRelationType = "NEW_SYSTEM"
	RelationTypeExistingSystem  RequestRelationType = "EXISTING_SYSTEM"
	RelationTypeExistingService RequestRelationType = "EXISTING_SERVICE"
)

Possible values of SystemIntakeRelationType

type SoftwareProductItem

type SoftwareProductItem struct {
	APIGatewayUse                  bool        `json:"api_gateway_use,omitempty"`
	ElaPurchase                    zero.String `json:"ela_purchase,omitempty"`
	ElaVendorID                    zero.String `json:"ela_vendor_id,omitempty"`
	ProvidesAiCapability           bool        `json:"provides_ai_capability,omitempty"`
	Refstr                         zero.String `json:"refstr,omitempty"`
	SoftwareCatagoryConnectionGUID zero.String `json:"softwareCatagoryConnectionGuid,omitempty"`
	SoftwareVendorConnectionGUID   zero.String `json:"softwareVendorConnectionGuid,omitempty"`
	SoftwareCost                   zero.String `json:"software_cost,omitempty"`
	SoftwareElaOrganization        zero.String `json:"software_ela_organization,omitempty"`
	SoftwareName                   zero.String `json:"software_name,omitempty"`
	SystemSoftwareConnectionGUID   zero.String `json:"systemSoftwareConnectionGuid,omitempty"`
	TechnopediaCategory            zero.String `json:"technopedia_category,omitempty"`
	TechnopediaID                  zero.String `json:"technopedia_id,omitempty"`
	VendorName                     zero.String `json:"vendor_name,omitempty"`
}

SoftwareProductItem represents a single SoftwareProductSearchItem object which is an internal struct used in SoftwareProduct

type SystemIntake

type SystemIntake struct {
	ID                              uuid.UUID                    `json:"id"`
	EUAUserID                       null.String                  `json:"euaUserId" db:"eua_user_id"`
	State                           SystemIntakeState            `json:"state" db:"state"`
	Step                            SystemIntakeStep             `json:"step" db:"step"`
	RequestType                     SystemIntakeRequestType      `json:"requestType" db:"request_type"`
	Requester                       string                       `json:"requester"`
	Component                       null.String                  `json:"component"`
	BusinessOwner                   null.String                  `json:"businessOwner" db:"business_owner"`
	BusinessOwnerComponent          null.String                  `json:"businessOwnerComponent" db:"business_owner_component"`
	ProductManager                  null.String                  `json:"productManager" db:"product_manager"`
	ProductManagerComponent         null.String                  `json:"productManagerComponent" db:"product_manager_component"`
	ISSO                            null.String                  `json:"isso"`
	ISSOName                        null.String                  `json:"issoName" db:"isso_name"`
	TRBCollaborator                 null.String                  `json:"trbCollaborator" db:"trb_collaborator"`
	TRBCollaboratorName             null.String                  `json:"trbCollaboratorName" db:"trb_collaborator_name"`
	OITSecurityCollaborator         null.String                  `json:"oitSecurityCollaborator" db:"oit_security_collaborator"`
	OITSecurityCollaboratorName     null.String                  `json:"oitSecurityCollaboratorName" db:"oit_security_collaborator_name"`
	EACollaborator                  null.String                  `json:"eaCollaborator" db:"ea_collaborator"`
	EACollaboratorName              null.String                  `json:"eaCollaboratorName" db:"ea_collaborator_name"`
	ProjectName                     null.String                  `json:"projectName" db:"project_name"`
	ProjectAcronym                  null.String                  `json:"projectAcronym" db:"project_acronym"`
	BusinessNeed                    null.String                  `json:"businessNeed" db:"business_need"`
	Solution                        null.String                  `json:"solution"`
	ProcessStatus                   null.String                  `json:"processStatus" db:"process_status"`
	EASupportRequest                null.Bool                    `json:"eaSupportRequest" db:"ea_support_request"`
	ExistingContract                null.String                  `json:"existingContract" db:"existing_contract"`
	CostIncrease                    null.String                  `json:"costIncrease" db:"cost_increase"`
	CostIncreaseAmount              null.String                  `json:"costIncreaseAmount" db:"cost_increase_amount"`
	CurrentAnnualSpending           null.String                  `json:"currentAnnualSpending" db:"current_annual_spending"`
	CurrentAnnualSpendingITPortion  null.String                  `json:"currentAnnualSpendingITPortion" db:"current_annual_spending_it_portion"`
	PlannedYearOneSpending          null.String                  `json:"plannedYearOneSpending" db:"planned_year_one_spending"`
	PlannedYearOneSpendingITPortion null.String                  `json:"plannedYearOneSpendingITPortion" db:"planned_year_one_spending_it_portion"`
	Contractor                      null.String                  `json:"contractor" db:"contractor"`
	ContractVehicle                 null.String                  `json:"contractVehicle" db:"contract_vehicle"`
	ContractStartDate               *time.Time                   `json:"contractStartDate" db:"contract_start_date"`
	ContractStartMonth              null.String                  `json:"contractStartMonth" db:"contract_start_month"`
	ContractStartYear               null.String                  `json:"contractStartYear" db:"contract_start_year"`
	ContractEndDate                 *time.Time                   `json:"contractEndDate" db:"contract_end_date"`
	ContractEndMonth                null.String                  `json:"contractEndMonth" db:"contract_end_month"`
	ContractEndYear                 null.String                  `json:"contractEndYear" db:"contract_end_year"`
	CreatedAt                       *time.Time                   `json:"createdAt" db:"created_at"`
	UpdatedAt                       *time.Time                   `json:"updatedAt" db:"updated_at"`
	SubmittedAt                     *time.Time                   `json:"submittedAt" db:"submitted_at"`
	DecidedAt                       *time.Time                   `json:"decidedAt" db:"decided_at"`
	ArchivedAt                      *time.Time                   `json:"archivedAt" db:"archived_at"`
	GRTDate                         *time.Time                   `json:"grtDate" db:"grt_date"`
	GRBDate                         *time.Time                   `json:"grbDate" db:"grb_date"`
	AlfabetID                       null.String                  `json:"alfabetID" db:"alfabet_id"`
	GrtReviewEmailBody              null.String                  `json:"grtReviewEmailBody" db:"grt_review_email_body"`
	RequesterEmailAddress           null.String                  `json:"requesterEmailAddress" db:"requester_email_address"`
	BusinessCaseID                  *uuid.UUID                   `json:"businessCase" db:"business_case_id"`
	LifecycleID                     null.String                  `json:"lcid" db:"lcid"`
	LifecycleExpiresAt              *time.Time                   `json:"lcidExpiresAt" db:"lcid_expires_at" gqlgen:"lcidExpiresAt"`
	LifecycleScope                  *HTML                        `json:"lcidScope" db:"lcid_scope"`
	LifecycleCostBaseline           null.String                  `json:"lcidCostBaseline" db:"lcid_cost_baseline"`
	LifecycleExpirationAlertTS      *time.Time                   `json:"lcidExpirationAlertTS" db:"lcid_expiration_alert_ts"`
	LifecycleRetiresAt              *time.Time                   `json:"lcidRetiresAt" db:"lcid_retires_at" gqlgen:"lcidRetiresAt"`
	LifecycleIssuedAt               *time.Time                   `json:"lcidIssuedAt" db:"lcid_issued_at" gqlgen:"lcidIssuedAt"`
	DecisionNextSteps               *HTML                        `json:"decisionNextSteps" db:"decision_next_steps"`
	RejectionReason                 *HTML                        `json:"rejectionReason" db:"rejection_reason"`
	AdminLead                       null.String                  `json:"adminLead" db:"admin_lead"`
	CedarSystemID                   null.String                  `json:"cedarSystemId" db:"cedar_system_id"`
	ExistingFunding                 null.Bool                    `json:"existingFunding" db:"existing_funding"`
	FundingSource                   null.String                  `json:"fundingSource" db:"funding_source"`
	FundingNumber                   null.String                  `json:"fundingNumber" db:"funding_number"`
	FundingSources                  []*SystemIntakeFundingSource `json:"fundingSources"`
	HasUIChanges                    null.Bool                    `json:"hasUiChanges" db:"has_ui_changes"`
	RequestFormState                SystemIntakeFormState        `json:"requestFormState" db:"request_form_state"`
	DraftBusinessCaseState          SystemIntakeFormState        `json:"draftBusinessCaseState" db:"draft_business_case_state"`
	FinalBusinessCaseState          SystemIntakeFormState        `json:"finalBusinessCaseState" db:"final_business_case_state"`
	DecisionState                   SystemIntakeDecisionState    `json:"decisionState" db:"decision_state"`
	TRBFollowUpRecommendation       *SystemIntakeTRBFollowUp     `json:"trbFollowUpRecommendation" db:"trb_follow_up_recommendation"`
	ContractName                    zero.String                  `json:"contractName" db:"contract_name"`
	SystemRelationType              *RequestRelationType         `json:"relationType" db:"system_relation_type"`
}

SystemIntake is the model for the system intake form

func (*SystemIntake) GRBMeetingState

func (si *SystemIntake) GRBMeetingState() SystemIntakeMeetingState

GRBMeetingState returns if a GRBMeeting has been scheduled or not

func (*SystemIntake) GRTMeetingState

func (si *SystemIntake) GRTMeetingState() SystemIntakeMeetingState

GRTMeetingState returns if a GRTMeeting has been scheduled or not

func (*SystemIntake) LCIDStatus

func (si *SystemIntake) LCIDStatus(currentTime time.Time) *SystemIntakeLCIDStatus

LCIDStatus returns the status of this intake's LCID, if present

type SystemIntakeContact

type SystemIntakeContact struct {
	ID             uuid.UUID  `json:"id"`
	EUAUserID      string     `json:"euaUserId" db:"eua_user_id"`
	SystemIntakeID uuid.UUID  `json:"systemIntakeId" db:"system_intake_id"`
	Component      string     `json:"component" db:"component"`
	Role           string     `json:"role" db:"role"`
	UpdatedAt      *time.Time `db:"updated_at"`
	CreatedAt      *time.Time `db:"created_at"`
}

SystemIntakeContact represents an EUA user's association with a system intake

type SystemIntakeContractNumber

type SystemIntakeContractNumber struct {
	BaseStructUser
	SystemIntakeID uuid.UUID `db:"system_intake_id"`
	ContractNumber string    `db:"contract_number"`
}

SystemIntakeContractNumber is the insertion type for linking a system intake to contract number(s)

func NewSystemIntakeContractNumber

func NewSystemIntakeContractNumber(createdBy uuid.UUID) SystemIntakeContractNumber

NewSystemIntakeContractNumber creates a SystemIntakeContractNumberLink

func (*SystemIntakeContractNumber) CreatedByUserAccount

func (cbr *SystemIntakeContractNumber) CreatedByUserAccount(ctx context.Context) *authentication.UserAccount

CreatedByUserAccount returns the user account of the user who created the struct from the DB using the UserAccount service

func (*SystemIntakeContractNumber) ModifiedByUserAccount

func (mbr *SystemIntakeContractNumber) ModifiedByUserAccount(ctx context.Context) *authentication.UserAccount

ModifiedByUserAccount returns the user account of the user who modified the struct from the DB using the UserAccount service

type SystemIntakeDecisionState

type SystemIntakeDecisionState string

SystemIntakeDecisionState represents the types of SystemIntakeDecisionState types.

const (
	SIDSNoDecision    SystemIntakeDecisionState = "NO_DECISION"
	SIDSLcidIssued    SystemIntakeDecisionState = "LCID_ISSUED"
	SIDSNotApproved   SystemIntakeDecisionState = "NOT_APPROVED"
	SIDSNotGovernance SystemIntakeDecisionState = "NOT_GOVERNANCE"
)

These are the options for SystemIntakeDecisionState

type SystemIntakeDocument

type SystemIntakeDocument struct {
	BaseStruct
	SystemIntakeRequestID uuid.UUID                      `json:"systemIntakeId" db:"system_intake_id"`
	CommonDocumentType    SystemIntakeDocumentCommonType `db:"document_type"`
	OtherType             string                         `db:"other_type"`
	FileName              string                         `json:"fileName" db:"file_name"`
	Bucket                string                         `json:"bucket" db:"bucket"`
	S3Key                 string                         `json:"s3Key" db:"s3_key"` // The document's key inside an S3 bucket; does *not* include the bucket name.
}

SystemIntakeDocument represents a document attached to a system intake that has been uploaded to S3

type SystemIntakeDocumentCommonType

type SystemIntakeDocumentCommonType string

SystemIntakeDocumentCommonType represents the document type, including an "OTHER" option for user-specified types

type SystemIntakeDocumentStatus

type SystemIntakeDocumentStatus string

SystemIntakeDocumentStatus represents the availability of a document in regards to virus scanning

type SystemIntakeFormState

type SystemIntakeFormState string

SystemIntakeFormState represents the possible states of of any System Intake form types.

const (
	SIRFSNotStarted     SystemIntakeFormState = "NOT_STARTED"
	SIRFSInProgress     SystemIntakeFormState = "IN_PROGRESS"
	SIRFSEditsRequested SystemIntakeFormState = "EDITS_REQUESTED"
	SIRFSSubmitted      SystemIntakeFormState = "SUBMITTED"
)

These are the options for SystemIntakeRequestFormState

type SystemIntakeFundingSource

type SystemIntakeFundingSource struct {
	ID             uuid.UUID   `json:"id"`
	SystemIntakeID uuid.UUID   `json:"systemIntakeId" db:"system_intake_id"`
	Source         null.String `json:"source" db:"source"`
	FundingNumber  null.String `json:"fundingNumber" db:"funding_number"`
	CreatedAt      *time.Time  `db:"created_at"`
}

SystemIntakeFundingSource represents one of multiple funding selections that can be added to a SystemIntake

type SystemIntakeLCIDStatus

type SystemIntakeLCIDStatus string

SystemIntakeLCIDStatus represents the possible statuses that an issued LCID can be in

const (
	SystemIntakeLCIDStatusIssued  SystemIntakeLCIDStatus = "ISSUED"
	SystemIntakeLCIDStatusExpired SystemIntakeLCIDStatus = "EXPIRED"
	SystemIntakeLCIDStatusRetired SystemIntakeLCIDStatus = "RETIRED"
)

possible values of SystemIntakeLCIDStatus - corresponds to SystemIntakeLCIDStatus enum in GraphQL schema

type SystemIntakeMeetingState

type SystemIntakeMeetingState string

SystemIntakeMeetingState is the state for any meeting for a system intake

const (
	SIMSScheduled    SystemIntakeMeetingState = "SCHEDULED"
	SIMSNotScheduled SystemIntakeMeetingState = "NOT_SCHEDULED"
)

These are the options for SystemIntakeMeetingState

type SystemIntakeMetrics

type SystemIntakeMetrics struct {
	StartTime          time.Time `json:"startTime"`
	EndTime            time.Time `json:"endTime"`
	Started            int       `json:"started"`
	CompletedOfStarted int       `json:"completedOfStarted"`
	Completed          int       `json:"completed"`
	Funded             int       `json:"funded"`
}

SystemIntakeMetrics is a model for storing metrics related to system intake

type SystemIntakeNote

type SystemIntakeNote struct {
	ID             uuid.UUID   `json:"id"`
	SystemIntakeID uuid.UUID   `json:"systemIntakeId" db:"system_intake"`
	CreatedAt      *time.Time  `json:"createdAt" db:"created_at"`
	AuthorEUAID    string      `json:"authorId" db:"eua_user_id"`
	AuthorName     null.String `json:"authorName" db:"author_name"`
	Content        *HTML       `json:"content" db:"content"`
	ModifiedAt     *time.Time  `json:"modifiedAt" db:"modified_at"`
	ModifiedBy     *string     `json:"modifiedBy" db:"modified_by"`
	IsArchived     bool        `json:"isArchived" db:"is_archived"`
}

SystemIntakeNote holds commentary information submitted by the review team about a SystemIntake

type SystemIntakeRequestType

type SystemIntakeRequestType string

SystemIntakeRequestType represents the type of a system intake

const (
	// SystemIntakeRequestTypeNEW captures enum value of "NEW"
	SystemIntakeRequestTypeNEW SystemIntakeRequestType = "NEW"
	// SystemIntakeRequestTypeMAJORCHANGES captures enum value of "MAJOR_CHANGES"
	SystemIntakeRequestTypeMAJORCHANGES SystemIntakeRequestType = "MAJOR_CHANGES"
	// SystemIntakeRequestTypeRECOMPETE captures enum value of "RECOMPETE"
	SystemIntakeRequestTypeRECOMPETE SystemIntakeRequestType = "RECOMPETE"
	// SystemIntakeRequestTypeSHUTDOWN captures enum value of "SHUTDOWN"
	SystemIntakeRequestTypeSHUTDOWN SystemIntakeRequestType = "SHUTDOWN"
)

type SystemIntakeState

type SystemIntakeState string

SystemIntakeState represents whether the intake is open or closed

const (
	// SystemIntakeStateOPEN captures enum value "OPEN"
	SystemIntakeStateOPEN SystemIntakeState = "OPEN"
	// SystemIntakeStateCLOSED captures enum value "CLOSED"
	SystemIntakeStateCLOSED SystemIntakeState = "CLOSED"
)

type SystemIntakeStatusAdmin

type SystemIntakeStatusAdmin string

SystemIntakeStatusAdmin represents the types of statuses that a user can see in the admin view of a system intake request.

const (
	SISAInitialRequestFormInProgress SystemIntakeStatusAdmin = "INITIAL_REQUEST_FORM_IN_PROGRESS"
	SISAInitialRequestFormSubmitted  SystemIntakeStatusAdmin = "INITIAL_REQUEST_FORM_SUBMITTED"
	SISADraftBusinessCaseInProgress  SystemIntakeStatusAdmin = "DRAFT_BUSINESS_CASE_IN_PROGRESS"
	SISADraftBusinessCaseSubmitted   SystemIntakeStatusAdmin = "DRAFT_BUSINESS_CASE_SUBMITTED"
	SISAGrtMeetingReady              SystemIntakeStatusAdmin = "GRT_MEETING_READY"
	SISAGrtMeetingComplete           SystemIntakeStatusAdmin = "GRT_MEETING_COMPLETE"
	SISAGrbMeetingReady              SystemIntakeStatusAdmin = "GRB_MEETING_READY"
	SISAGrbMeetingComplete           SystemIntakeStatusAdmin = "GRB_MEETING_COMPLETE"
	SISAFinalBusinessCaseInProgress  SystemIntakeStatusAdmin = "FINAL_BUSINESS_CASE_IN_PROGRESS"
	SISAFinalBusinessCaseSubmitted   SystemIntakeStatusAdmin = "FINAL_BUSINESS_CASE_SUBMITTED"
	SISALcidIssued                   SystemIntakeStatusAdmin = "LCID_ISSUED"
	SISALcidExpired                  SystemIntakeStatusAdmin = "LCID_EXPIRED"
	SISALcidRetired                  SystemIntakeStatusAdmin = "LCID_RETIRED"
	SISANotGovernance                SystemIntakeStatusAdmin = "NOT_GOVERNANCE"
	SISANotApproved                  SystemIntakeStatusAdmin = "NOT_APPROVED"
	SISAClosed                       SystemIntakeStatusAdmin = "CLOSED"
)

These are the options for SystemIntakeStatusAdmin

type SystemIntakeStatusRequester

type SystemIntakeStatusRequester string

SystemIntakeStatusRequester represents the (calculated) statuses that a requester view of a system intake request can show

const (
	SISRInitialRequestFormNew            SystemIntakeStatusRequester = "INITIAL_REQUEST_FORM_NEW"
	SISRInitialRequestFormInProgress     SystemIntakeStatusRequester = "INITIAL_REQUEST_FORM_IN_PROGRESS"
	SISRInitialRequestFormSubmitted      SystemIntakeStatusRequester = "INITIAL_REQUEST_FORM_SUBMITTED"
	SISRInitialRequestFormEditsRequested SystemIntakeStatusRequester = "INITIAL_REQUEST_FORM_EDITS_REQUESTED"
	SISRDraftBusinessCaseInProgress      SystemIntakeStatusRequester = "DRAFT_BUSINESS_CASE_IN_PROGRESS"
	SISRDraftBusinessCaseSubmitted       SystemIntakeStatusRequester = "DRAFT_BUSINESS_CASE_SUBMITTED"
	SISRDraftBusinessCaseEditsRequested  SystemIntakeStatusRequester = "DRAFT_BUSINESS_CASE_EDITS_REQUESTED"
	SISRGrtMeetingReady                  SystemIntakeStatusRequester = "GRT_MEETING_READY"
	SISRGrtMeetingAwaitingDecision       SystemIntakeStatusRequester = "GRT_MEETING_AWAITING_DECISION"
	SISRFinalBusinessCaseInProgress      SystemIntakeStatusRequester = "FINAL_BUSINESS_CASE_IN_PROGRESS"
	SISRFinalBusinessCaseSubmitted       SystemIntakeStatusRequester = "FINAL_BUSINESS_CASE_SUBMITTED"
	SISRFinalBusinessCaseEditsRequested  SystemIntakeStatusRequester = "FINAL_BUSINESS_CASE_EDITS_REQUESTED"
	SISRGrbMeetingReady                  SystemIntakeStatusRequester = "GRB_MEETING_READY"
	SISRGrbMeetingAwaitingDecision       SystemIntakeStatusRequester = "GRB_MEETING_AWAITING_DECISION"
	SISRLcidIssued                       SystemIntakeStatusRequester = "LCID_ISSUED"
	SISRLcidExpired                      SystemIntakeStatusRequester = "LCID_EXPIRED"
	SISRLcidRetired                      SystemIntakeStatusRequester = "LCID_RETIRED"
	SISRNotGovernance                    SystemIntakeStatusRequester = "NOT_GOVERNANCE"
	SISRNotApproved                      SystemIntakeStatusRequester = "NOT_APPROVED"
	SISRClosed                           SystemIntakeStatusRequester = "CLOSED"
)

These are the options for SystemIntakeStatusRequester

type SystemIntakeStep

type SystemIntakeStep string

SystemIntakeStep represents the current step in the intake process

const (
	// SystemIntakeStepINITIALFORM captures enum value "INITIAL_REQUEST_FORM"
	SystemIntakeStepINITIALFORM SystemIntakeStep = "INITIAL_REQUEST_FORM"
	// SystemIntakeStepDRAFTBIZCASE captures enum value "DRAFT_BUSINESS_CASE"
	SystemIntakeStepDRAFTBIZCASE SystemIntakeStep = "DRAFT_BUSINESS_CASE"
	// SystemIntakeStepGRTMEETING captures enum value "GRT_MEETING"
	SystemIntakeStepGRTMEETING SystemIntakeStep = "GRT_MEETING"
	// SystemIntakeStepFINALBIZCASE captures enum value "FINAL_BUSINESS_CASE"
	SystemIntakeStepFINALBIZCASE SystemIntakeStep = "FINAL_BUSINESS_CASE"
	// SystemIntakeStepGRBMEETING captures enum value "GRB_MEETING"
	SystemIntakeStepGRBMEETING SystemIntakeStep = "GRB_MEETING"
	// SystemIntakeStepDECISION captures enum value "DECISION_AND_NEXT_STEPS"
	SystemIntakeStepDECISION SystemIntakeStep = "DECISION_AND_NEXT_STEPS"
)

type SystemIntakeSystem

type SystemIntakeSystem struct {
	BaseStructUser
	SystemIntakeID uuid.UUID `db:"system_intake_id"`
	SystemID       string    `db:"system_id"`
}

SystemIntakeSystem is the insertion type for linking a system intake to system(s)

func NewSystemIntakeSystem

func NewSystemIntakeSystem(createdBy uuid.UUID) SystemIntakeSystem

NewSystemIntakeSystem creates a SystemIntakeSystemLink

func (*SystemIntakeSystem) CreatedByUserAccount

func (cbr *SystemIntakeSystem) CreatedByUserAccount(ctx context.Context) *authentication.UserAccount

CreatedByUserAccount returns the user account of the user who created the struct from the DB using the UserAccount service

func (*SystemIntakeSystem) ModifiedByUserAccount

func (mbr *SystemIntakeSystem) ModifiedByUserAccount(ctx context.Context) *authentication.UserAccount

ModifiedByUserAccount returns the user account of the user who modified the struct from the DB using the UserAccount service

type SystemIntakeTRBFollowUp

type SystemIntakeTRBFollowUp string

SystemIntakeTRBFollowUp represents whether a requester is recommended to follow up by consulting the TRB

const (
	TRBFRStronglyRecommended       SystemIntakeTRBFollowUp = "STRONGLY_RECOMMENDED"
	TRBFRRecommendedButNotCritical SystemIntakeTRBFollowUp = "RECOMMENDED_BUT_NOT_CRITICAL"
	TRBFRNotRecommended            SystemIntakeTRBFollowUp = "NOT_RECOMMENDED"
)

These are the options for SystemIntakeTRBFollowUp

type SystemIntakes

type SystemIntakes []SystemIntake

SystemIntakes is a list of System Intakes

type SystemMaintainerInformation

type SystemMaintainerInformation struct {
	AgileUsed                  bool          `json:"agileUsed"`
	BusinessArtifactsOnDemand  bool          `json:"businessArtifactsOnDemand"`
	DeploymentFrequency        zero.String   `json:"deploymentFrequency"`
	DevCompletionPercent       zero.String   `json:"devCompletionPercent"`
	DevWorkDescription         zero.String   `json:"devWorkDescription"`
	EcapParticipation          bool          `json:"ecapParticipation"`
	FrontendAccessType         zero.String   `json:"frontendAccessType"`
	HardCodedIPAddress         bool          `json:"hardCodedIpAddress"`
	IP6EnabledAssetPercent     zero.String   `json:"ip6EnabledAssetPercent"`
	IP6TransitionPlan          zero.String   `json:"ip6TransitionPlan"`
	IPEnabledAssetCount        int           `json:"ipEnabledAssetCount"`
	MajorRefreshDate           zero.Time     `json:"majorRefreshDate"`
	NetAccessibility           zero.String   `json:"netAccessibility"`
	OmDocumentationOnDemand    bool          `json:"omDocumentationOnDemand"`
	PlansToRetireReplace       zero.String   `json:"plansToRetireReplace"`
	QuarterToRetireReplace     zero.String   `json:"quarterToRetireReplace"`
	RecordsManagementBucket    []zero.String `json:"recordsManagementBucket"`
	SourceCodeOnDemand         bool          `json:"sourceCodeOnDemand"`
	SystemCustomization        zero.String   `json:"systemCustomization"`
	SystemDesignOnDemand       bool          `json:"systemDesignOnDemand"`
	SystemProductionDate       zero.Time     `json:"systemProductionDate"`
	SystemRequirementsOnDemand bool          `json:"systemRequirementsOnDemand"`
	TestPlanOnDemand           bool          `json:"testPlanOnDemand"`
	TestReportsOnDemand        bool          `json:"testReportsOnDemand"`
	TestScriptsOnDemand        bool          `json:"testScriptsOnDemand"`
	YearToRetireReplace        zero.String   `json:"yearToRetireReplace"`
}

SystemMaintainerInformation contains information about the system maintainer of a CEDAR system

type TRBAdminNote

type TRBAdminNote struct {
	BaseStruct
	TRBRequestID uuid.UUID            `json:"trbRequestId" db:"trb_request_id"`
	Category     TRBAdminNoteCategory `json:"category" db:"category"`
	NoteText     HTML                 `json:"noteText" db:"note_text"`
	IsArchived   bool                 `json:"isArchived" db:"is_archived"`

	// Initial Request Form
	AppliesToBasicRequestDetails null.Bool `json:"appliesToBasicRequestDetails" db:"applies_to_basic_request_details"`
	AppliesToSubjectAreas        null.Bool `json:"appliesToSubjectAreas" db:"applies_to_subject_areas"`
	AppliesToAttendees           null.Bool `json:"appliesToAttendees" db:"applies_to_attendees"`

	// Advice Letter
	AppliesToMeetingSummary null.Bool `json:"appliesToMeetingSummary" db:"applies_to_meeting_summary"`
	AppliesToNextSteps      null.Bool `json:"appliesToNextSteps" db:"applies_to_next_steps"`
}

TRBAdminNote represents the data for a note attached to a TRB request by an admin

type TRBAdminNoteCategory

type TRBAdminNoteCategory string

TRBAdminNoteCategory is an enumeration of the possible categories of a TRBAdminNote

const (
	TRBAdminNoteCategoryGeneralRequest      TRBAdminNoteCategory = "GENERAL_REQUEST"
	TRBAdminNoteCategoryInitialRequestForm  TRBAdminNoteCategory = "INITIAL_REQUEST_FORM"
	TRBAdminNoteCategorySupportingDocuments TRBAdminNoteCategory = "SUPPORTING_DOCUMENTS"
	TRBAdminNoteCategoryConsultSession      TRBAdminNoteCategory = "CONSULT_SESSION"
	TRBAdminNoteCategoryAdviceLetter        TRBAdminNoteCategory = "ADVICE_LETTER"
)

These are the possible categories for a TRB admin note

type TRBAdminNoteTRBAdviceLetterRecommendationLink struct {
	BaseStruct
	TRBRequestID                    uuid.UUID `json:"trbRequestId" db:"trb_request_id"`
	TRBAdminNoteID                  uuid.UUID `json:"trbAdminNoteId" db:"trb_admin_note_id"`
	TRBAdviceLetterRecommendationID uuid.UUID `json:"trbAdviceLetterRecommendationId" db:"trb_advice_letter_recommendation_id"`
}

TRBAdminNoteTRBAdviceLetterRecommendationLink represents an association between a TRB admin note (in the Advice Letter category) and a TRB advice letter recommendation

type TRBAdminNoteTRBRequestDocumentLink struct {
	BaseStruct
	TRBRequestID         uuid.UUID `json:"trbRequestId" db:"trb_request_id"`
	TRBAdminNoteID       uuid.UUID `json:"trbAdminNoteId" db:"trb_admin_note_id"`
	TRBRequestDocumentID uuid.UUID `json:"trbRequestDocumentId" db:"trb_request_document_id"`
}

TRBAdminNoteTRBRequestDocumentLink represents an association between a TRB admin note (in the Supporting Documents category) and a TRB document

type TRBAdviceLetter

type TRBAdviceLetter struct {
	BaseStruct
	TRBRequestID          uuid.UUID             `json:"trbRequestId" db:"trb_request_id"`
	Status                TRBAdviceLetterStatus `json:"status" db:"status"`
	MeetingSummary        *HTML                 `json:"meetingSummary" db:"meeting_summary"`
	NextSteps             *HTML                 `json:"nextSteps" db:"next_steps"`
	IsFollowupRecommended *bool                 `json:"isFollowupRecommended" db:"is_followup_recommended"`
	DateSent              *time.Time            `json:"dateSent" db:"date_sent"`

	// not necessarily a firm date; can be something like "In 6 months or when development is complete"
	FollowupPoint *string `json:"followupPoint" db:"followup_point"`
}

TRBAdviceLetter represents the data for a TRB advice letter

type TRBAdviceLetterRecommendation

type TRBAdviceLetterRecommendation struct {
	BaseStruct
	TRBRequestID     uuid.UUID      `json:"trbRequestId" db:"trb_request_id"`
	Title            string         `json:"title" db:"title"`
	Recommendation   HTML           `json:"recommendation" db:"recommendation"`
	Links            pq.StringArray `json:"links" db:"links"`
	PositionInLetter null.Int       `json:"positionInLetter" db:"position_in_letter"` // 0-based indexing
	DeletedAt        *time.Time     `json:"deletedAt" db:"deleted_at"`
}

TRBAdviceLetterRecommendation represents the data for a TRB advice letter recommendation

type TRBAdviceLetterStatus

type TRBAdviceLetterStatus string

TRBAdviceLetterStatus is an enumeration of the possible statuses of a TRBAdviceLetter

const (
	TRBAdviceLetterStatusCannotStartYet TRBAdviceLetterStatus = "CANNOT_START_YET"
	TRBAdviceLetterStatusReadyToStart   TRBAdviceLetterStatus = "READY_TO_START"
	TRBAdviceLetterStatusInProgress     TRBAdviceLetterStatus = "IN_PROGRESS"
	TRBAdviceLetterStatusReadyForReview TRBAdviceLetterStatus = "READY_FOR_REVIEW"
	TRBAdviceLetterStatusCompleted      TRBAdviceLetterStatus = "COMPLETED"
)

These are the possible statuses for a TRB advice letter

type TRBAdviceLetterStatusTaskList

type TRBAdviceLetterStatusTaskList string

TRBAdviceLetterStatusTaskList is an enum of statuses for the task list page.

const (
	TRBAdviceLetterStatusTaskListCannotStartYet TRBAdviceLetterStatusTaskList = "CANNOT_START_YET"
	TRBAdviceLetterStatusTaskListInReview       TRBAdviceLetterStatusTaskList = "IN_REVIEW"
	TRBAdviceLetterStatusTaskListCompleted      TRBAdviceLetterStatusTaskList = "COMPLETED"
)

These statuses are a simplified version of the regular TRBAdviceLetterStatus enum above that are computed in the resolver.

type TRBAttendConsultStatus

type TRBAttendConsultStatus string

TRBAttendConsultStatus represents the types of TRBAttendConsultStatus types

const (
	TRBAttendConsultStatusCannotStartYet  TRBAttendConsultStatus = "CANNOT_START_YET"
	TRBAttendConsultStatusReadyToSchedule TRBAttendConsultStatus = "READY_TO_SCHEDULE"
	TRBAttendConsultStatusScheduled       TRBAttendConsultStatus = "SCHEDULED"
	TRBAttendConsultStatusCompleted       TRBAttendConsultStatus = "COMPLETED"
)

These are the options for TRBAttendConsultStatus

type TRBCollabGroupOption

type TRBCollabGroupOption string

TRBCollabGroupOption is an enumeration of the possible OIT collaboration groups that can be selected for a TRB request form

const (
	TRBCollabGroupOptionSecurity               TRBCollabGroupOption = "SECURITY"
	TRBCollabGroupOptionEnterpriseArchitecture TRBCollabGroupOption = "ENTERPRISE_ARCHITECTURE"
	TRBCollabGroupOptionCloud                  TRBCollabGroupOption = "CLOUD"
	TRBCollabGroupOptionPrivacyAdvisor         TRBCollabGroupOption = "PRIVACY_ADVISOR"
	TRBCollabGroupOptionGovernanceReviewBoard  TRBCollabGroupOption = "GOVERNANCE_REVIEW_BOARD"
	TRBCollabGroupOptionOther                  TRBCollabGroupOption = "OTHER"
)

These are the individual options for responses to the "Select any other OIT groups that you have met with or collaborated with" on the TRB request form

type TRBConsultPrepStatus

type TRBConsultPrepStatus string

TRBConsultPrepStatus represents the types of TRBConsultPrepStatus types

const (
	TRBConsultPrepStatusCannotStartYet TRBConsultPrepStatus = "CANNOT_START_YET"
	TRBConsultPrepStatusReadyToStart   TRBConsultPrepStatus = "READY_TO_START"
	TRBConsultPrepStatusCompleted      TRBConsultPrepStatus = "COMPLETED"
)

These are the options for TRBConsultPrepStatus

type TRBDocumentCommonType

type TRBDocumentCommonType string

TRBDocumentCommonType represents the document type, including an "OTHER" option for user-specified types

type TRBFeedbackAction

type TRBFeedbackAction string

TRBFeedbackAction is an enumertion of actions that can be taken by a TRB admin during the feedback step

const (
	TRBFeedbackActionRequestEdits    TRBFeedbackAction = "REQUEST_EDITS"
	TRBFeedbackActionReadyForConsult TRBFeedbackAction = "READY_FOR_CONSULT"
)

These are the options for TRBFeedbackAction

type TRBFeedbackStatus

type TRBFeedbackStatus string

TRBFeedbackStatus represents the types of TRBFeedbackStatus types

const (
	TRBFeedbackStatusCannotStartYet TRBFeedbackStatus = "CANNOT_START_YET"
	TRBFeedbackStatusInReview       TRBFeedbackStatus = "IN_REVIEW"
	TRBFeedbackStatusEditsRequested TRBFeedbackStatus = "EDITS_REQUESTED"
	TRBFeedbackStatusCompleted      TRBFeedbackStatus = "COMPLETED"
)

These are the options for TRBFeedbackStatus

type TRBFormStatus

type TRBFormStatus string

TRBFormStatus is an enumeration of the possible statuses of a TRBRequestForm

const (
	TRBFormStatusReadyToStart TRBFormStatus = "READY_TO_START"
	TRBFormStatusInProgress   TRBFormStatus = "IN_PROGRESS"
	TRBFormStatusCompleted    TRBFormStatus = "COMPLETED"
)

These are the possible statuses for a TRB request form

type TRBFundingSource

type TRBFundingSource struct {
	BaseStruct
	TRBRequestID  uuid.UUID `json:"trbRequestId" db:"trb_request_id"`
	Source        string    `json:"source" db:"source"`
	FundingNumber string    `json:"fundingNumber" db:"funding_number"`
}

TRBFundingSource represents one of multiple funding selections that can be added to a TRBRequestForm

type TRBLeadOption

type TRBLeadOption struct {
	BaseStruct
	EUAUserID string `json:"euaUserId" db:"eua_user_id"`
}

TRBLeadOption represents an EUA user who can be assigned as a TRB lead for a TRB request

type TRBRequest

type TRBRequest struct {
	BaseStruct
	Name               *string              `json:"name" db:"name"`
	Archived           bool                 `json:"archived" db:"archived"`
	Type               TRBRequestType       `json:"type" db:"type"`
	State              TRBRequestState      `json:"state" db:"state"`
	ConsultMeetingTime *time.Time           `json:"consultMeetingTime" db:"consult_meeting_time"`
	TRBLead            *string              `json:"trbLead" db:"trb_lead"`
	ContractName       zero.String          `json:"contractName" db:"contract_name"`
	SystemRelationType *RequestRelationType `json:"relationType" db:"system_relation_type"`
}

TRBRequest represents a TRB request object

func NewTRBRequest

func NewTRBRequest(createdBy string) *TRBRequest

NewTRBRequest returns a new trb request object

func (*TRBRequest) GetName

func (t *TRBRequest) GetName() string

GetName returns the name of the TRB request as a string. If the "Name" property is nil, it returns "Draft"

type TRBRequestAttendee

type TRBRequestAttendee struct {
	BaseStruct
	EUAUserID    string      `json:"euaUserId" db:"eua_user_id"`
	TRBRequestID uuid.UUID   `json:"trbRequestId" db:"trb_request_id"`
	Component    *string     `json:"component" db:"component"`
	Role         *PersonRole `json:"role" db:"role"`
}

TRBRequestAttendee represents an EUA user who is included as an attendee for a TRB request

type TRBRequestContractNumber

type TRBRequestContractNumber struct {
	BaseStructUser
	TRBRequestID   uuid.UUID `db:"trb_request_id"`
	ContractNumber string    `db:"contract_number"`
}

TRBRequestContractNumber is the insertion type for linking a TRB request to contract nunber(s)

func NewTRBRequestContractNumber

func NewTRBRequestContractNumber(createdBy uuid.UUID) TRBRequestContractNumber

NewTRBRequestContractNumber creates a TRBRequestContractNumber

func (*TRBRequestContractNumber) CreatedByUserAccount

func (cbr *TRBRequestContractNumber) CreatedByUserAccount(ctx context.Context) *authentication.UserAccount

CreatedByUserAccount returns the user account of the user who created the struct from the DB using the UserAccount service

func (*TRBRequestContractNumber) ModifiedByUserAccount

func (mbr *TRBRequestContractNumber) ModifiedByUserAccount(ctx context.Context) *authentication.UserAccount

ModifiedByUserAccount returns the user account of the user who modified the struct from the DB using the UserAccount service

type TRBRequestDocument

type TRBRequestDocument struct {
	BaseStruct
	TRBRequestID       uuid.UUID             `json:"trbRequestId" db:"trb_request_id"`
	CommonDocumentType TRBDocumentCommonType `db:"document_type"`
	OtherType          string                `db:"other_type"`
	FileName           string                `json:"fileName" db:"file_name"`
	Bucket             string                `json:"bucket" db:"bucket"`
	S3Key              string                `json:"s3Key" db:"s3_key"` // The document's key inside an S3 bucket; does *not* include the bucket name.
	DeletedAt          *time.Time            `json:"deletedAt" db:"deleted_at"`
}

TRBRequestDocument represents a document attached to a TRB request that has been uploaded to S3

type TRBRequestDocumentStatus

type TRBRequestDocumentStatus string

TRBRequestDocumentStatus represents the availability of a document in regards to virus scanning

type TRBRequestFeedback

type TRBRequestFeedback struct {
	BaseStruct
	TRBRequestID    uuid.UUID         `json:"trbRequestId" db:"trb_request_id"`
	FeedbackMessage HTML              `json:"feedbackMessage" db:"feedback_message"`
	CopyTRBMailbox  bool              `json:"copyTrbMailbox" db:"copy_trb_mailbox"`
	NotifyEUAIDs    pq.StringArray    `json:"notifyEuaIds" db:"notify_eua_ids"`
	Action          TRBFeedbackAction `json:"action" db:"action"`
}

TRBRequestFeedback represents an individual feedback item given on a TRB request

type TRBRequestForm

type TRBRequestForm struct {
	BaseStruct
	TRBRequestID             uuid.UUID                `json:"trbRequestId" db:"trb_request_id"`
	Status                   TRBFormStatus            `json:"status" db:"status"`
	Component                *string                  `json:"component" db:"component"`
	NeedsAssistanceWith      *string                  `json:"needsAssistanceWith" db:"needs_assistance_with"`
	HasSolutionInMind        *bool                    `json:"hasSolutionInMind" db:"has_solution_in_mind"`
	ProposedSolution         *string                  `json:"proposedSolution" db:"proposed_solution"`
	WhereInProcess           *TRBWhereInProcessOption `json:"whereInProcess" db:"where_in_process"`
	WhereInProcessOther      *string                  `json:"whereInProcessOther" db:"where_in_process_other"`
	HasExpectedStartEndDates *bool                    `json:"hasExpectedStartEndDates" db:"has_expected_start_end_dates"`
	ExpectedStartDate        *time.Time               `json:"expectedStartDate" db:"expected_start_date"`
	ExpectedEndDate          *time.Time               `json:"expectedEndDate" db:"expected_end_date"`
	// FundingSources                   []*TRBFundingSource      `json:"fundingSources"`
	CollabGroups                     pq.StringArray `json:"collabGroups" db:"collab_groups"`
	CollabDateSecurity               *string        `json:"collabDateSecurity" db:"collab_date_security"`
	CollabDateEnterpriseArchitecture *string        `json:"collabDateEnterpriseArchitecture" db:"collab_date_enterprise_architecture"`
	CollabDateCloud                  *string        `json:"collabDateCloud" db:"collab_date_cloud"`
	CollabDatePrivacyAdvisor         *string        `json:"collabDatePrivacyAdvisor" db:"collab_date_privacy_advisor"`
	CollabDateGovernanceReviewBoard  *string        `json:"collabDateGovernanceReviewBoard" db:"collab_date_governance_review_board"`
	CollabDateOther                  *string        `json:"collabDateOther" db:"collab_date_other"`
	CollabGroupOther                 *string        `json:"collabGroupOther" db:"collab_group_other"`
	CollabGRBConsultRequested        *bool          `json:"collabGRBConsultRequested" db:"collab_grb_consult_requested"`
	SubjectAreaOptions               pq.StringArray `json:"subjectAreaOptions" db:"subject_area_options"`
	SubjectAreaOptionOther           *string        `json:"subjectAreaOptionOther" db:"subject_area_option_other"`
	SubmittedAt                      *time.Time     `json:"submittedAt" db:"submitted_at"`
}

TRBRequestForm represents the data entered into the TRB request form

func NewTRBRequestForm

func NewTRBRequestForm(createdBy string) *TRBRequestForm

NewTRBRequestForm instantiates a TRB request form with default field values

type TRBRequestState

type TRBRequestState string

TRBRequestState represents the types of TRBRequestState types

const (
	TRBRequestStateOpen   TRBRequestState = "OPEN"
	TRBRequestStateClosed TRBRequestState = "CLOSED"
)

These are the options for TRBRequestStatus

type TRBRequestStatus

type TRBRequestStatus string

TRBRequestStatus is an enumeration of the possible values for the overall status of a TRB request

type TRBRequestSystem

type TRBRequestSystem struct {
	BaseStructUser
	TRBRequestID uuid.UUID `db:"trb_request_id"`
	SystemID     string    `db:"system_id"`
}

TRBRequestSystem is the insertion type for linking a trb request to system(s)

func NewTRBRequestSystem

func NewTRBRequestSystem(createdBy uuid.UUID) TRBRequestSystem

NewTRBRequestSystem creates a TRBRequestSystemLink

func (*TRBRequestSystem) CreatedByUserAccount

func (cbr *TRBRequestSystem) CreatedByUserAccount(ctx context.Context) *authentication.UserAccount

CreatedByUserAccount returns the user account of the user who created the struct from the DB using the UserAccount service

func (*TRBRequestSystem) ModifiedByUserAccount

func (mbr *TRBRequestSystem) ModifiedByUserAccount(ctx context.Context) *authentication.UserAccount

ModifiedByUserAccount returns the user account of the user who modified the struct from the DB using the UserAccount service

type TRBRequestSystemIntake

type TRBRequestSystemIntake struct {
	BaseStruct
	TRBRequestID   uuid.UUID `json:"trbRequestId" db:"trb_request_id"`
	SystemIntakeID uuid.UUID `json:"systemIntakeId" db:"system_intake_id"`
}

TRBRequestSystemIntake represents a system intake that has been associated with a TRB request

type TRBRequestType

type TRBRequestType string

TRBRequestType represents the types of TRBRequestType types

const (
	TRBTNeedHelp     TRBRequestType = "NEED_HELP"
	TRBTBrainstorm   TRBRequestType = "BRAINSTORM"
	TRBTFollowup     TRBRequestType = "FOLLOWUP"
	TRBTFormalReview TRBRequestType = "FORMAL_REVIEW"
	TRBTOther        TRBRequestType = "OTHER"
)

These are the options for TRBRequestType

type TRBSubjectAreaOption

type TRBSubjectAreaOption string

TRBSubjectAreaOption is an enum of the possible answers to the input on the TRB "Subject Areas" page

const (
	TRBSubjectAreaOptionAccessControlAndIdentityMgmt   TRBSubjectAreaOption = "ACCESS_CONTROL_AND_IDENTITY_MANAGEMENT"
	TRBSubjectAreaOptionAccessibilityCompliance        TRBSubjectAreaOption = "ACCESSIBILITY_COMPLIANCE"
	TRBSubjectAreaOptionAssistanceWithSystemConceptDev TRBSubjectAreaOption = "ASSISTANCE_WITH_SYSTEM_CONCEPT_DEVELOPMENT"
	TRBSubjectAreaOptionBusinessIntelligence           TRBSubjectAreaOption = "BUSINESS_INTELLIGENCE"
	TRBSubjectAreaOptionCloudMigration                 TRBSubjectAreaOption = "CLOUD_MIGRATION"
	TRBSubjectAreaOptionContainersAndMicroservices     TRBSubjectAreaOption = "CONTAINERS_AND_MICROSERVICES"
	TRBSubjectAreaOptionDisasterRecovery               TRBSubjectAreaOption = "DISASTER_RECOVERY"
	TRBSubjectAreaOptionEmailIntegration               TRBSubjectAreaOption = "EMAIL_INTEGRATION"
	TRBSubjectAreaOptionEnterpriseDataLakeIntegration  TRBSubjectAreaOption = "ENTERPRISE_DATA_LAKE_INTEGRATION"
	TRBSubjectAreaOptionFrameworkOrToolAlternatives    TRBSubjectAreaOption = "FRAMEWORK_OR_TOOL_ALTERNATIVES"
	TRBSubjectAreaOptionOpenSourceSoftware             TRBSubjectAreaOption = "OPEN_SOURCE_SOFTWARE"
	TRBSubjectAreaOptionPortalIntegration              TRBSubjectAreaOption = "PORTAL_INTEGRATION"
	TRBSubjectAreaOptionTechnicalReferenceArchitecture TRBSubjectAreaOption = "TECHNICAL_REFERENCE_ARCHITECTURE"
	TRBSubjectAreaOptionSystemArchitectureReview       TRBSubjectAreaOption = "SYSTEM_ARCHITECTURE_REVIEW"
	TRBSubjectAreaOptionSystemDispositionPlanning      TRBSubjectAreaOption = "SYSTEM_DISPOSITION_PLANNING"
	TRBSubjectAreaOptionWebServicesAndAPIs             TRBSubjectAreaOption = "WEB_SERVICES_AND_APIS"
	TRBSubjectAreaOptionWebBasedUIService              TRBSubjectAreaOption = "WEB_BASED_UI_SERVICE"
)

These are the individual options for the "technical reference architecture" input

type TRBTaskStatuses

type TRBTaskStatuses struct {
	FormStatus                 TRBFormStatus                 `json:"formStatus"`
	FeedbackStatus             TRBFeedbackStatus             `json:"feedbackStatus"`
	ConsultPrepStatus          TRBConsultPrepStatus          `json:"consultPrepStatus"`
	AttendConsultStatus        TRBAttendConsultStatus        `json:"attendConsultStatus"`
	AdviceLetterStatus         TRBAdviceLetterStatus         `json:"adviceLetterStatus"`
	AdviceLetterStatusTaskList TRBAdviceLetterStatusTaskList `json:"adviceLetterStatusTaskList"`
}

TRBTaskStatuses contains the individual statuses for the steps of the TRB task list

type TRBWhereInProcessOption

type TRBWhereInProcessOption string

TRBWhereInProcessOption is an enumeration of possible responses to the "Where are you in your process?" question on the TRB request form

const (
	TRBWhereInProcessOptionIHaveAnIdeaAndWantToBrainstorm       TRBWhereInProcessOption = "I_HAVE_AN_IDEA_AND_WANT_TO_BRAINSTORM"
	TRBWhereInProcessOptionContractingWorkHasStarted            TRBWhereInProcessOption = "CONTRACTING_WORK_HAS_STARTED"
	TRBWhereInProcessOptionDevelopmentHasRecentlyStarted        TRBWhereInProcessOption = "DEVELOPMENT_HAS_RECENTLY_STARTED"
	TRBWhereInProcessOptionDevelopmentIsSignificantlyUnderway   TRBWhereInProcessOption = "DEVELOPMENT_IS_SIGNIFICANTLY_UNDERWAY"
	TRBWhereInProcessOptionTheSystemIsInOperationAndMaintenance TRBWhereInProcessOption = "THE_SYSTEM_IS_IN_OPERATION_AND_MAINTENANCE"
	TRBWhereInProcessOptionOther                                TRBWhereInProcessOption = "OTHER"
	TRBWhereInProcessOptionUnknown                              TRBWhereInProcessOption = "UNKNOWN"
)

These are the individual options for the response to the "Where are you in your process?" question on the TRB request form

type UserInfo

type UserInfo struct {
	FirstName   string
	LastName    string
	DisplayName string
	Email       EmailAddress
	Username    string
}

UserInfo is the model for personal details of a user

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL