Skip to content

Instantly share code, notes, and snippets.

@kocodude
Last active October 7, 2023 14:37
Show Gist options
  • Save kocodude/efa2548b975d52070105f7a93d139c7f to your computer and use it in GitHub Desktop.
Save kocodude/efa2548b975d52070105f7a93d139c7f to your computer and use it in GitHub Desktop.
// Domain
type ExerciseRequestSubmission struct {
ExerciseRequestID int32,
PaymentType string,
Signature null.Val[domain.Signature],
}
// Use Case
import (
"github.com/ProlificLabs/snowball/domain"
)
type SubmitExerciseUseCase struct {
dateFactory DateFactoryInterface
companyGateway CompanyGatewayInterface
exerciseRequestGateway ExerciseRequestGatewayInterface
signatureGateway SignatureGatewayInterface
documentService DocumentServiceInterface
}
func (uc SubmitExerciseUseCase) execute(submission domain.ExerciseRequestSubmission) error {
exerciseRequest, err := uc.exerciseRequestGateway.GetForSubmission(submission)
if err != nil {
return err
}
company, err := uc.companyGateway.GetForExerciseRequest(exerciseRequest)
if err != nil {
return err
}
err = company.ConfirmExerciseRequestsEnabled()
if err != nil {
return err
}
signature, err := exerciseRequest.SignWithSubmission(submission)
if err != nil {
return err
}
err = uc.signatureGateway.Save(signature)
if err != nil {
return err
}
submission.SetExerciseDate = uc.dateFactory.DateFromNow()
err = exerciseRequest.SetAsPaidWithSubmission(submission)
if err != nil {
return err
}
err = uc.exerciseRequestGateway.Update(exerciseRequest)
if err != nil {
return err
}
err = uc.documentService.GenerateNoticeOfExercise(exerciseRequest)
if err != nil {
return err
}
return nil
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment