Skip to content

Commit

Permalink
Add scheduled events to remind certificate provider
Browse files Browse the repository at this point in the history
  • Loading branch information
hawx committed Dec 13, 2024
1 parent 1b701aa commit 41356b7
Show file tree
Hide file tree
Showing 35 changed files with 1,023 additions and 211 deletions.
24 changes: 18 additions & 6 deletions cmd/event-received/sirius_event_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import (
"github.com/ministryofjustice/opg-modernising-lpa/internal/lpastore"
"github.com/ministryofjustice/opg-modernising-lpa/internal/notify"
"github.com/ministryofjustice/opg-modernising-lpa/internal/pay"
"github.com/ministryofjustice/opg-modernising-lpa/internal/scheduled"
"github.com/ministryofjustice/opg-modernising-lpa/internal/sharecode"
"github.com/ministryofjustice/opg-modernising-lpa/internal/task"
)
Expand Down Expand Up @@ -231,16 +232,27 @@ func handleDonorSubmissionCompleted(ctx context.Context, client dynamodbClient,
lpaID := uuidString()

donor := &donordata.Provided{
PK: dynamo.LpaKey(lpaID),
SK: dynamo.LpaOwnerKey(dynamo.DonorKey("PAPER")),
LpaID: lpaID,
LpaUID: v.UID,
CreatedAt: now(),
Version: 1,
PK: dynamo.LpaKey(lpaID),
SK: dynamo.LpaOwnerKey(dynamo.DonorKey("PAPER")),
LpaID: lpaID,
LpaUID: v.UID,
CreatedAt: now(),
Version: 1,
CertificateProviderInvitedAt: now(),
}

transaction := dynamo.NewTransaction().
Create(donor).
Create(scheduled.Event{
PK: dynamo.ScheduledDayKey(donor.CertificateProviderInvitedAt.AddDate(0, 3, 0)),
SK: dynamo.ScheduledKey(donor.CertificateProviderInvitedAt.AddDate(0, 3, 0), int(scheduled.ActionRemindCertificateProviderToComplete)),
CreatedAt: now(),
At: donor.CertificateProviderInvitedAt.AddDate(0, 3, 0),
Action: scheduled.ActionRemindCertificateProviderToComplete,
TargetLpaKey: donor.PK,
TargetLpaOwnerKey: donor.SK,
LpaUID: donor.LpaUID,
}).
Create(dynamo.Keys{PK: dynamo.UIDKey(v.UID), SK: dynamo.MetadataKey("")}).
Create(dynamo.Keys{PK: donor.PK, SK: dynamo.ReservedKey(dynamo.DonorKey)})

Expand Down
24 changes: 18 additions & 6 deletions cmd/event-received/sirius_event_handler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
"github.com/ministryofjustice/opg-modernising-lpa/internal/lpastore/lpadata"
"github.com/ministryofjustice/opg-modernising-lpa/internal/notify"
"github.com/ministryofjustice/opg-modernising-lpa/internal/pay"
"github.com/ministryofjustice/opg-modernising-lpa/internal/scheduled"
"github.com/ministryofjustice/opg-modernising-lpa/internal/sharecode"
"github.com/ministryofjustice/opg-modernising-lpa/internal/task"
"github.com/stretchr/testify/assert"
Expand Down Expand Up @@ -756,12 +757,23 @@ func TestHandleDonorSubmissionCompleted(t *testing.T) {
WriteTransaction(ctx, &dynamo.Transaction{
Creates: []any{
&donordata.Provided{
PK: dynamo.LpaKey(testUuidString),
SK: dynamo.LpaOwnerKey(dynamo.DonorKey("PAPER")),
LpaID: testUuidString,
LpaUID: "M-1111-2222-3333",
CreatedAt: testNow,
Version: 1,
PK: dynamo.LpaKey(testUuidString),
SK: dynamo.LpaOwnerKey(dynamo.DonorKey("PAPER")),
LpaID: testUuidString,
LpaUID: "M-1111-2222-3333",
CreatedAt: testNow,
Version: 1,
CertificateProviderInvitedAt: testNow,
},
scheduled.Event{
PK: dynamo.ScheduledDayKey(testNow.AddDate(0, 3, 0)),
SK: dynamo.ScheduledKey(testNow.AddDate(0, 3, 0), int(scheduled.ActionRemindCertificateProviderToComplete)),
CreatedAt: testNow,
At: testNow.AddDate(0, 3, 0),
Action: scheduled.ActionRemindCertificateProviderToComplete,
TargetLpaKey: dynamo.LpaKey(testUuidString),
TargetLpaOwnerKey: dynamo.LpaOwnerKey(dynamo.DonorKey("PAPER")),
LpaUID: "M-1111-2222-3333",
},
dynamo.Keys{PK: dynamo.UIDKey("M-1111-2222-3333"), SK: dynamo.MetadataKey("")},
dynamo.Keys{PK: dynamo.LpaKey(testUuidString), SK: dynamo.ReservedKey(dynamo.DonorKey)},
Expand Down
6 changes: 4 additions & 2 deletions cmd/schedule-runner/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/service/cloudwatch"
"github.com/ministryofjustice/opg-modernising-lpa/internal/certificateprovider"
"github.com/ministryofjustice/opg-modernising-lpa/internal/donor"
"github.com/ministryofjustice/opg-modernising-lpa/internal/dynamo"
"github.com/ministryofjustice/opg-modernising-lpa/internal/event"
Expand Down Expand Up @@ -81,8 +82,9 @@ func handleRunSchedule(ctx context.Context) error {
return err
}

donorStore := donor.NewStore(dynamoClient, eventClient, logger, searchClient)
scheduledStore := scheduled.NewStore(dynamoClient)
donorStore := donor.NewStore(dynamoClient, eventClient, logger, searchClient)
certificateProviderStore := certificateprovider.NewStore(dynamoClient)

if Tag == "" {
Tag = os.Getenv("TAG")
Expand All @@ -91,7 +93,7 @@ func handleRunSchedule(ctx context.Context) error {
client := cloudwatch.NewFromConfig(cfg)
metricsClient := telemetry.NewMetricsClient(client, Tag)

runner := scheduled.NewRunner(logger, scheduledStore, donorStore, notifyClient, metricsClient, metricsEnabled)
runner := scheduled.NewRunner(logger, scheduledStore, donorStore, certificateProviderStore, notifyClient, bundle, metricsClient, metricsEnabled)

if err = runner.Run(ctx); err != nil {
logger.Error("runner error", slog.Any("err", err))
Expand Down
1 change: 1 addition & 0 deletions internal/actor/type.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,5 @@ const (
TypeTrustCorporation // trustCorporation
TypeReplacementTrustCorporation // replacementTrustCorporation
TypeVoucher // voucher
TypeCorrespondent // correspondent
)
1 change: 1 addition & 0 deletions internal/app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,7 @@ func App(
lpaStoreResolvingService,
donorStore,
eventClient,
scheduledStore,
appPublicURL,
)

Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package certificateproviderpage

import (
"errors"
"time"

"github.com/ministryofjustice/opg-modernising-lpa/internal/appcontext"
"github.com/ministryofjustice/opg-modernising-lpa/internal/localize"
Expand All @@ -22,4 +23,6 @@ var (
LpaID: "lpa-id",
Lang: localize.En,
}
testNow = time.Now()
testNowFn = func() time.Time { return testNow }
)
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
"github.com/ministryofjustice/opg-modernising-lpa/internal/lpastore/lpadata"
"github.com/ministryofjustice/opg-modernising-lpa/internal/notify"
"github.com/ministryofjustice/opg-modernising-lpa/internal/page"
"github.com/ministryofjustice/opg-modernising-lpa/internal/scheduled"
"github.com/ministryofjustice/opg-modernising-lpa/internal/task"
"github.com/ministryofjustice/opg-modernising-lpa/internal/validation"
)
Expand All @@ -31,13 +32,10 @@ func ProvideCertificate(
notifyClient NotifyClient,
shareCodeSender ShareCodeSender,
lpaStoreClient LpaStoreClient,
scheduledStore ScheduledStore,
now func() time.Time,
) Handler {
return func(appData appcontext.Data, w http.ResponseWriter, r *http.Request, certificateProvider *certificateproviderdata.Provided, lpa *lpadata.Lpa) error {
if !lpa.SignedForDonor() {
return certificateprovider.PathTaskList.Redirect(w, r, appData, lpa.LpaID)
}

if !certificateProvider.SignedAt.IsZero() {
return certificateprovider.PathCertificateProvided.Redirect(w, r, appData, lpa.LpaID)
}
Expand Down Expand Up @@ -65,7 +63,7 @@ func ProvideCertificate(

if lpa.CertificateProvider.SignedAt == nil || lpa.CertificateProvider.SignedAt.IsZero() {
if err := lpaStoreClient.SendCertificateProvider(r.Context(), certificateProvider, lpa); err != nil {
return err
return fmt.Errorf("error sending certificate provider to lpa-store: %w", err)
}
} else {
certificateProvider.SignedAt = *lpa.CertificateProvider.SignedAt
Expand All @@ -82,11 +80,27 @@ func ProvideCertificate(
}

if err := shareCodeSender.SendAttorneys(r.Context(), appData, lpa); err != nil {
return err
return fmt.Errorf("error sending sharecode to attorneys: %w", err)
}

if !certificateProvider.Tasks.ConfirmYourDetails.IsCompleted() {
if err := scheduledStore.Create(r.Context(), scheduled.Event{
At: certificateProvider.SignedAt.AddDate(0, 3, 0),
Action: scheduled.ActionRemindCertificateProviderToConfirmIdentity,
TargetLpaKey: certificateProvider.PK,
LpaUID: lpa.LpaUID,
}, scheduled.Event{
At: lpa.SignedAt.AddDate(0, 21, 0),
Action: scheduled.ActionRemindCertificateProviderToConfirmIdentity,
TargetLpaKey: certificateProvider.PK,
LpaUID: lpa.LpaUID,
}); err != nil {
return fmt.Errorf("error scheduling certificate provider prompt: %w", err)
}

Check warning on line 99 in internal/certificateprovider/certificateproviderpage/provide_certificate.go

View check run for this annotation

Codecov / codecov/patch

internal/certificateprovider/certificateproviderpage/provide_certificate.go#L98-L99

Added lines #L98 - L99 were not covered by tests
}

if err := certificateProviderStore.Put(r.Context(), certificateProvider); err != nil {
return err
return fmt.Errorf("error updating certificate provider: %w", err)
}

return certificateprovider.PathCertificateProvided.Redirect(w, r, appData, certificateProvider.LpaID)
Expand Down
Loading

0 comments on commit 41356b7

Please sign in to comment.