donordata

package
v0.1508.0-MLPAB2607add... Latest Latest
Warning

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

Go to latest
Published: Oct 29, 2024 License: MIT Imports: 20 Imported by: 0

Documentation

Overview

Package donordata provides types that describe the data entered by a donor.

Index

Constants

This section is empty.

Variables

View Source
var CertificateProviderRelationshipLengthValues = CertificateProviderRelationshipLengthOptions{
	RelationshipLengthUnknown:  RelationshipLengthUnknown,
	LessThanTwoYears:           LessThanTwoYears,
	GreaterThanEqualToTwoYears: GreaterThanEqualToTwoYears,
}
View Source
var NoVoucherDecisionValues = NoVoucherDecisionOptions{
	ProveOwnID:       ProveOwnID,
	SelectNewVoucher: SelectNewVoucher,
	WithdrawLPA:      WithdrawLPA,
	ApplyToCOP:       ApplyToCOP,
}
View Source
var YesNoMaybeValues = YesNoMaybeOptions{
	Yes:   Yes,
	No:    No,
	Maybe: Maybe,
}

Functions

func ChooseAttorneysState added in v0.1354.0

func ChooseAttorneysState(attorneys Attorneys, decisions AttorneyDecisions) task.State

func ChooseReplacementAttorneysState added in v0.1354.0

func ChooseReplacementAttorneysState(donor *Provided) task.State

Types

type Attorney

type Attorney struct {
	// UID for the actor
	UID actoruid.UID
	// First names of the attorney
	FirstNames string
	// Last name of the attorney
	LastName string
	// Email of the attorney
	Email string
	// Date of birth of the attorney
	DateOfBirth date.Date
	// Address of the attorney
	Address place.Address
}

Attorney contains details about an attorney or replacement attorney, provided by the applicant

func (Attorney) Channel

func (a Attorney) Channel() lpadata.Channel

func (Attorney) FullName

func (a Attorney) FullName() string

type AttorneyDecisions

type AttorneyDecisions struct {
	// How attorneys should make decisions
	How lpadata.AttorneysAct
	// Details on how attorneys should make decisions if acting jointly for some decisions, and jointly and severally for other decisions
	Details string
}

AttorneyDecisions contains details about how an attorney or replacement attorney should act, provided by the applicant

func MakeAttorneyDecisions

func MakeAttorneyDecisions(existing AttorneyDecisions, how lpadata.AttorneysAct, details string) AttorneyDecisions

func (AttorneyDecisions) IsComplete

func (d AttorneyDecisions) IsComplete() bool

type Attorneys

type Attorneys struct {
	TrustCorporation TrustCorporation
	Attorneys        []Attorney
}

func (Attorneys) Addresses

func (as Attorneys) Addresses() []place.Address

func (Attorneys) Complete

func (as Attorneys) Complete() bool

func (*Attorneys) Delete

func (as *Attorneys) Delete(attorney Attorney) bool

func (Attorneys) FirstNames

func (as Attorneys) FirstNames() []string

func (Attorneys) FullNames

func (as Attorneys) FullNames() []string

func (Attorneys) Get

func (as Attorneys) Get(uid actoruid.UID) (Attorney, bool)

func (*Attorneys) Index

func (as *Attorneys) Index(uid actoruid.UID) int

func (Attorneys) Len

func (as Attorneys) Len() int

func (*Attorneys) Put

func (as *Attorneys) Put(attorney Attorney)

type AuthorisedSignatory

type AuthorisedSignatory struct {
	UID        actoruid.UID
	FirstNames string
	LastName   string
}

AuthorisedSignatory contains details of the person who will sign the LPA on the donor's behalf

func (AuthorisedSignatory) FullName

func (s AuthorisedSignatory) FullName() string

type CertificateProvider

type CertificateProvider struct {
	// UID for the actor
	UID actoruid.UID
	// First names of the certificate provider
	FirstNames string
	// Last name of the certificate provider
	LastName string
	// Address of the certificate provider
	Address place.Address
	// Mobile number of the certificate provider, used to send witness codes
	Mobile string
	// HasNonUKMobile indicates whether the value of Mobile is a non-UK mobile number
	HasNonUKMobile bool
	// Email of the certificate provider
	Email string
	// How the certificate provider wants to perform their role (paper or online)
	CarryOutBy lpadata.Channel
	// The certificate provider's relationship to the applicant
	Relationship lpadata.CertificateProviderRelationship
	// Amount of time Relationship has been in place if Personally
	RelationshipLength CertificateProviderRelationshipLength
}

CertificateProvider contains details about the certificate provider, provided by the applicant

func (CertificateProvider) FullName

func (c CertificateProvider) FullName() string

type CertificateProviderRelationshipLength

type CertificateProviderRelationshipLength uint8
const (
	RelationshipLengthUnknown  CertificateProviderRelationshipLength = iota // unknown
	LessThanTwoYears                                                        // lt-2-years
	GreaterThanEqualToTwoYears                                              // gte-2-years
)

func ParseCertificateProviderRelationshipLength

func ParseCertificateProviderRelationshipLength(s string) (CertificateProviderRelationshipLength, error)

func (CertificateProviderRelationshipLength) IsGreaterThanEqualToTwoYears

func (i CertificateProviderRelationshipLength) IsGreaterThanEqualToTwoYears() bool

func (CertificateProviderRelationshipLength) IsLessThanTwoYears

func (i CertificateProviderRelationshipLength) IsLessThanTwoYears() bool

func (CertificateProviderRelationshipLength) IsRelationshipLengthUnknown

func (i CertificateProviderRelationshipLength) IsRelationshipLengthUnknown() bool

func (CertificateProviderRelationshipLength) MarshalText

func (i CertificateProviderRelationshipLength) MarshalText() ([]byte, error)

func (CertificateProviderRelationshipLength) String

func (*CertificateProviderRelationshipLength) UnmarshalText

func (i *CertificateProviderRelationshipLength) UnmarshalText(text []byte) error

type CertificateProviderRelationshipLengthOptions

type CertificateProviderRelationshipLengthOptions struct {
	RelationshipLengthUnknown  CertificateProviderRelationshipLength
	LessThanTwoYears           CertificateProviderRelationshipLength
	GreaterThanEqualToTwoYears CertificateProviderRelationshipLength
}

type Correspondent

type Correspondent struct {
	FirstNames   string
	LastName     string
	Email        string
	Organisation string
	Phone        string
	WantAddress  form.YesNo
	Address      place.Address
}

func (Correspondent) FullName

func (c Correspondent) FullName() string

type Donor

type Donor struct {
	// UID for the actor
	UID actoruid.UID
	// First names of the donor
	FirstNames string
	// Last name of the donor
	LastName string
	// Email of the donor
	Email string
	// Other names the donor is known by
	OtherNames string
	// Date of birth of the donor
	DateOfBirth date.Date
	// Address of the donor
	Address place.Address
	// Mobile phone number to contact the donor
	Mobile string
	// ThinksCanSign is what the donor thinks about their ability to sign online
	ThinksCanSign YesNoMaybe
	// CanSign is Yes if the donor has said they will sign online
	CanSign form.YesNo
	// Channel is how the Donor is applying for their LPA (paper or online)
	Channel lpadata.Channel
	// ContactLanguagePreference is the language the donor prefers to receive notifications in
	ContactLanguagePreference localize.Lang
	// LpaLanguagePreference is the language the donor prefers to receive the registered LPA in
	LpaLanguagePreference localize.Lang
}

Donor contains details about the donor, provided by the applicant

func (Donor) FullName

func (d Donor) FullName() string

type IndependentWitness

type IndependentWitness struct {
	UID            actoruid.UID
	FirstNames     string
	LastName       string
	HasNonUKMobile bool
	Mobile         string
	Address        place.Address
}

IndependentWitness contains details of the person who will also witness the signing of the LPA

func (IndependentWitness) FullName

func (w IndependentWitness) FullName() string

type Limiter

type Limiter struct {
	TokenPer  time.Duration
	MaxTokens float64

	Tokens   float64
	TokensAt time.Time
	// contains filtered or unexported fields
}

Limiter is a basic rate limiter that can be serialised.

func NewLimiter

func NewLimiter(tokenPer time.Duration, initialTokens, maxTokens float64) *Limiter

func (*Limiter) Allow

func (l *Limiter) Allow(now time.Time) bool

type NoVoucherDecision added in v0.1344.0

type NoVoucherDecision uint8
const (
	ProveOwnID       NoVoucherDecision = iota + 1 // prove-own-id
	SelectNewVoucher                              // select-new-voucher
	WithdrawLPA                                   // withdraw-lpa
	ApplyToCOP                                    // apply-to-cop
)

func ParseNoVoucherDecision added in v0.1344.0

func ParseNoVoucherDecision(s string) (NoVoucherDecision, error)

func (NoVoucherDecision) Empty added in v0.1344.0

func (i NoVoucherDecision) Empty() bool

func (NoVoucherDecision) IsApplyToCOP added in v0.1344.0

func (i NoVoucherDecision) IsApplyToCOP() bool

func (NoVoucherDecision) IsProveOwnID added in v0.1344.0

func (i NoVoucherDecision) IsProveOwnID() bool

func (NoVoucherDecision) IsSelectNewVoucher added in v0.1344.0

func (i NoVoucherDecision) IsSelectNewVoucher() bool

func (NoVoucherDecision) IsWithdrawLPA added in v0.1344.0

func (i NoVoucherDecision) IsWithdrawLPA() bool

func (NoVoucherDecision) MarshalText added in v0.1344.0

func (i NoVoucherDecision) MarshalText() ([]byte, error)

func (NoVoucherDecision) String added in v0.1344.0

func (i NoVoucherDecision) String() string

func (*NoVoucherDecision) UnmarshalText added in v0.1344.0

func (i *NoVoucherDecision) UnmarshalText(text []byte) error

type NoVoucherDecisionOptions added in v0.1344.0

type NoVoucherDecisionOptions struct {
	ProveOwnID       NoVoucherDecision
	SelectNewVoucher NoVoucherDecision
	WithdrawLPA      NoVoucherDecision
	ApplyToCOP       NoVoucherDecision
}

type Payment

type Payment struct {
	// Reference generated for the payment
	PaymentReference string
	// ID returned from GOV.UK Pay
	PaymentId string
	// Amount is the amount paid in pence
	Amount int
}

type PeopleToNotify

type PeopleToNotify []PersonToNotify

func (*PeopleToNotify) Delete

func (ps *PeopleToNotify) Delete(personToNotify PersonToNotify) bool

func (PeopleToNotify) Get

func (PeopleToNotify) Put

func (ps PeopleToNotify) Put(person PersonToNotify) bool

type PersonToNotify

type PersonToNotify struct {
	UID actoruid.UID
	// First names of the person to notify
	FirstNames string
	// Last name of the person to notify
	LastName string
	// Address of the person to notify
	Address place.Address
}

PersonToNotify contains details about a person to notify, provided by the applicant

func (PersonToNotify) FullName

func (p PersonToNotify) FullName() string

type Provided added in v0.1338.0

type Provided struct {
	PK dynamo.LpaKeyType      `hash:"-"`
	SK dynamo.LpaOwnerKeyType `hash:"-"`
	// Hash is used to determine whether the Lpa has been changed since last read
	Hash uint64 `hash:"-"`
	// HashVersion is used to determine the fields used to calculate Hash
	HashVersion uint8 `hash:"-"`
	// LpaID identifies the LPA being drafted
	LpaID string
	// LpaUID is a unique identifier created after sending basic LPA details to the UID service
	LpaUID string `dynamodbav:",omitempty"`
	// CreatedAt is when the LPA was created
	CreatedAt time.Time
	// UpdatedAt is when the LPA was last updated
	UpdatedAt time.Time `hash:"-"`
	// The donor the LPA relates to
	Donor Donor
	// Attorneys named in the LPA
	Attorneys Attorneys
	// Information on how the applicant wishes their attorneys to act
	AttorneyDecisions AttorneyDecisions
	// The certificate provider named in the LPA
	CertificateProvider CertificateProvider
	// Type of LPA being drafted
	Type lpadata.LpaType
	// Whether the applicant wants to add replacement attorneys
	WantReplacementAttorneys form.YesNo
	// When the LPA can be used
	WhenCanTheLpaBeUsed lpadata.CanBeUsedWhen
	// Preferences on life sustaining treatment (applicable to personal welfare LPAs only)
	LifeSustainingTreatmentOption lpadata.LifeSustainingTreatment
	// Restrictions on attorneys actions
	Restrictions string
	// Used to show the task list
	Tasks Tasks
	// PaymentDetails are records of payments made for the LPA via GOV.UK Pay
	PaymentDetails []Payment
	// Information returned by the identity service related to the Donor or Voucher
	IdentityUserData identity.UserData
	// Replacement attorneys named in the LPA
	ReplacementAttorneys Attorneys
	// Information on how the applicant wishes their replacement attorneys to act
	ReplacementAttorneyDecisions AttorneyDecisions
	// How to bring in replacement attorneys, if set
	HowShouldReplacementAttorneysStepIn lpadata.ReplacementAttorneysStepIn
	// Details on how replacement attorneys must step in if HowShouldReplacementAttorneysStepIn is set to "other"
	HowShouldReplacementAttorneysStepInDetails string
	// Whether the applicant wants to add a correspondent
	AddCorrespondent form.YesNo
	// Correspondent is sent updates on an application in place of a (supporter) donor
	Correspondent Correspondent
	// Whether the applicant wants to notify people about the application
	DoYouWantToNotifyPeople form.YesNo
	// People to notify about the application
	PeopleToNotify PeopleToNotify
	// The AuthorisedSignatory signs on the donor's behalf if they are unable to sign
	AuthorisedSignatory AuthorisedSignatory
	// The IndependentWitness acts as an additional witness when the LPA is signed
	IndependentWitness IndependentWitness
	// Confirmation that the applicant wants to apply to register the LPA
	WantToApplyForLpa bool
	// Confirmation that the applicant wants to sign the LPA
	WantToSignLpa bool
	// CertificateProviderNotRelatedConfirmedAt is when the donor confirmed the
	// certificate provider is not related to another similar actor
	CertificateProviderNotRelatedConfirmedAt time.Time
	// CheckedAt is when the donor checked their LPA
	CheckedAt time.Time
	// CheckedHash is the Hash value of the LPA when last checked
	CheckedHash uint64 `hash:"-"`
	// CheckedHashVersion is used to determine the fields used to calculate CheckedHash
	CheckedHashVersion uint8 `hash:"-"`
	// SignedAt is when the donor submitted their signature
	SignedAt time.Time
	// SubmittedAt is when the Lpa was sent to the OPG
	SubmittedAt time.Time
	// WithdrawnAt is when the Lpa was withdrawn by the donor
	WithdrawnAt time.Time
	// PerfectAt is when the Lpa transitioned to the PERFECT status in the lpa-store
	PerfectAt time.Time
	// RegisteringWithCourtOfProtection is set when the donor wishes to take the
	// Lpa to the Court of Protection for registration.
	RegisteringWithCourtOfProtection bool
	// Version is the number of times the LPA has been updated (auto-incremented
	// on PUT)
	Version int `hash:"-"`

	// WantVoucher indicates if the donor knows someone who can vouch for them and wants
	// then to do so
	WantVoucher form.YesNo
	// Voucher is a person the donor has nominated to vouch for their identity
	Voucher Voucher
	// FailedVouchAttempts are the number of unsuccessful attempts a voucher has made to confirm the Donors ID
	FailedVouchAttempts int

	// Codes used for the certificate provider to witness signing
	CertificateProviderCodes WitnessCodes
	// When the signing was witnessed by the certificate provider
	WitnessedByCertificateProviderAt time.Time
	// Codes used for the independent witness to witness signing
	IndependentWitnessCodes WitnessCodes
	// When the signing was witnessed by the independent witness
	WitnessedByIndependentWitnessAt time.Time
	// Used to rate limit witness code attempts
	WitnessCodeLimiter *Limiter

	// FeeType is the type of fee the user is applying for
	FeeType pay.FeeType
	// EvidenceDelivery is the method by which the user wants to send evidence
	EvidenceDelivery pay.EvidenceDelivery
	// PreviousApplicationNumber if the application is related to an existing application
	PreviousApplicationNumber string
	// PreviousFee is the fee previously paid for an LPA
	PreviousFee pay.PreviousFee

	HasSentApplicationUpdatedEvent bool `hash:"-"`
}

Provided contains all the data related to the LPA application

func (*Provided) ActorAddresses added in v0.1338.0

func (p *Provided) ActorAddresses() []place.Address

func (*Provided) Actors added in v0.1386.0

func (p *Provided) Actors() iter.Seq[actor.Actor]

Actors returns an iterator over all human actors named on the LPA (i.e. this excludes trust corporations, the correspondent, and the voucher).

func (*Provided) AllLayAttorneysFirstNames added in v0.1338.0

func (p *Provided) AllLayAttorneysFirstNames() []string

func (*Provided) AllLayAttorneysFullNames added in v0.1338.0

func (p *Provided) AllLayAttorneysFullNames() []string

func (*Provided) CanChange added in v0.1489.0

func (p *Provided) CanChange() bool

CanChange returns true if the donor can make changes to their LPA.

func (*Provided) CanHaveVoucher added in v0.1400.0

func (p *Provided) CanHaveVoucher() bool

func (*Provided) CertificateProviderSharesDetails added in v0.1338.0

func (p *Provided) CertificateProviderSharesDetails() bool

CertificateProviderSharesDetails will return true if the last name or address of the certificate provider matches that of the donor or one of the attorneys. For a match of the last name we break on '-' to account for double-barrelled names.

func (*Provided) CheckedHashChanged added in v0.1338.0

func (p *Provided) CheckedHashChanged() bool

func (*Provided) CorrespondentEmail added in v0.1393.0

func (p *Provided) CorrespondentEmail() string

func (*Provided) Cost added in v0.1338.0

func (p *Provided) Cost() int

func (*Provided) CourtOfProtectionSubmissionDeadline added in v0.1486.0

func (p *Provided) CourtOfProtectionSubmissionDeadline() time.Time

CourtOfProtectionSubmissionDeadline gives the date at which the signed LPA must be submitted to the Court of Protection, if registering through this route.

func (*Provided) DonorIdentityConfirmed added in v0.1338.0

func (p *Provided) DonorIdentityConfirmed() bool

func (*Provided) FeeAmount added in v0.1338.0

func (p *Provided) FeeAmount() pay.AmountPence

func (*Provided) HashChanged added in v0.1338.0

func (p *Provided) HashChanged() bool

func (*Provided) HashInclude added in v0.1338.0

func (p *Provided) HashInclude(field string, _ any) (bool, error)

func (*Provided) NamesChanged added in v0.1338.0

func (p *Provided) NamesChanged(firstNames, lastName, otherNames string) bool

func (*Provided) SigningDeadline added in v0.1486.0

func (p *Provided) SigningDeadline() time.Time

SigningDeadline gives the date at which the LPA should be signed by the certificate provider and attorneys.

func (*Provided) TrustCorporationsNames added in v0.1338.0

func (p *Provided) TrustCorporationsNames() []string

func (*Provided) Under18ActorDetails added in v0.1338.0

func (p *Provided) Under18ActorDetails() []Under18ActorDetails

func (*Provided) UpdateCheckedHash added in v0.1338.0

func (p *Provided) UpdateCheckedHash() (err error)

func (*Provided) UpdateHash added in v0.1338.0

func (p *Provided) UpdateHash() (err error)

type Tasks added in v0.1338.0

type Tasks struct {
	YourDetails                task.State
	ChooseAttorneys            task.State
	ChooseReplacementAttorneys task.State
	WhenCanTheLpaBeUsed        task.State // property and affairs only
	LifeSustainingTreatment    task.State // personal welfare only
	Restrictions               task.State
	CertificateProvider        task.State
	PeopleToNotify             task.State
	AddCorrespondent           task.State
	ChooseYourSignatory        task.State // if .Donor.CanSign.IsNo only
	CheckYourLpa               task.State
	PayForLpa                  task.PaymentState
	ConfirmYourIdentity        task.IdentityState
	SignTheLpa                 task.State
}

type TrustCorporation

type TrustCorporation struct {
	// UID for the actor
	UID actoruid.UID
	// Name of the company
	Name string
	// CompanyNumber as registered by Companies House
	CompanyNumber string
	// Email to contact the company
	Email string
	// Address of the company
	Address place.Address
}

TrustCorporation contains details about a trust corporation, provided by the applicant

func (TrustCorporation) Channel

func (tc TrustCorporation) Channel() lpadata.Channel

type Under18ActorDetails

type Under18ActorDetails struct {
	FullName    string
	DateOfBirth date.Date
	UID         actoruid.UID
	Type        actor.Type
}

type Voucher

type Voucher struct {
	UID        actoruid.UID
	FirstNames string
	LastName   string
	Email      string
	Allowed    bool
}

func (Voucher) FullName

func (v Voucher) FullName() string

func (Voucher) Matches

func (v Voucher) Matches(donor *Provided) (match []actor.Type)

type WitnessCode

type WitnessCode struct {
	Code    string
	Created time.Time
}

func (WitnessCode) HasExpired

func (w WitnessCode) HasExpired(now time.Time) bool

type WitnessCodes

type WitnessCodes []WitnessCode

func (WitnessCodes) CanRequest

func (ws WitnessCodes) CanRequest(now time.Time) bool

func (WitnessCodes) Find

func (ws WitnessCodes) Find(code string, now time.Time) (WitnessCode, bool)

type YesNoMaybe

type YesNoMaybe uint8
const (
	Yes YesNoMaybe = iota + 1
	No
	Maybe
)

func ParseYesNoMaybe

func ParseYesNoMaybe(s string) (YesNoMaybe, error)

func (YesNoMaybe) Empty

func (i YesNoMaybe) Empty() bool

func (YesNoMaybe) IsMaybe

func (i YesNoMaybe) IsMaybe() bool

func (YesNoMaybe) IsNo

func (i YesNoMaybe) IsNo() bool

func (YesNoMaybe) IsYes

func (i YesNoMaybe) IsYes() bool

func (YesNoMaybe) MarshalText

func (i YesNoMaybe) MarshalText() ([]byte, error)

func (YesNoMaybe) String

func (i YesNoMaybe) String() string

func (*YesNoMaybe) UnmarshalText

func (i *YesNoMaybe) UnmarshalText(text []byte) error

type YesNoMaybeOptions

type YesNoMaybeOptions struct {
	Yes   YesNoMaybe
	No    YesNoMaybe
	Maybe YesNoMaybe
}

Jump to

Keyboard shortcuts

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