diff --git a/internal/use-case/main-use-case/patient/case.go b/internal/use-case/main-use-case/patient/case.go index 6fca5ab1..2d874b8b 100644 --- a/internal/use-case/main-use-case/patient/case.go +++ b/internal/use-case/main-use-case/patient/case.go @@ -397,19 +397,39 @@ func Upload(input e.UploadDto) (*d.Data, error) { if err != nil { event.Action = "" } + + fileUrl := "" switch input.Code { case ere.UCPRN: + if person.ResidentIdentityFileUrl != nil { + fileUrl = *person.ResidentIdentityFileUrl + } person.ResidentIdentityFileUrl = &pubUrl case ere.UCPDL: + if person.DrivingLicenseFileUrl != nil { + fileUrl = *person.DrivingLicenseFileUrl + } person.DrivingLicenseFileUrl = &pubUrl case ere.UCPP: + if person.PassportFileUrl != nil { + fileUrl = *person.PassportFileUrl + } person.PassportFileUrl = &pubUrl case ere.UCPFC: + if person.FamilyIdentityFileUrl != nil { + fileUrl = *person.FamilyIdentityFileUrl + } person.FamilyIdentityFileUrl = &pubUrl default: return errors.New("invalid upload code") } + if fileUrl != "" { + if err := removeUploadedFile(string(input.Code), fileUrl, &event); err != nil { + return err + } + } + if err := tx.Save(&person).Error; err != nil { return err } diff --git a/internal/use-case/main-use-case/patient/helper.go b/internal/use-case/main-use-case/patient/helper.go index be1a4355..82154b47 100644 --- a/internal/use-case/main-use-case/patient/helper.go +++ b/internal/use-case/main-use-case/patient/helper.go @@ -119,3 +119,18 @@ func uploadAndGenerateFileUrl(input e.UploadDto, event *pl.Event) (string, error pl.SetLogInfo(event, nil, "complete") return publicUrl, nil } + +func removeUploadedFile(bucket, fileUrl string, event *pl.Event) error { + pl.SetLogInfo(event, nil, "started", "removeUploadedFile") + filename, err := pmh.GetFilename(fileUrl) + if err != nil { + return err + } + + err = pmh.I.RemoveObject(bucket, filename) + if err != nil { + return err + } + pl.SetLogInfo(event, nil, "complete") + return nil +} diff --git a/pkg/minio-helper/minio-helper.go b/pkg/minio-helper/minio-helper.go index 4c5c3952..15c52ca5 100644 --- a/pkg/minio-helper/minio-helper.go +++ b/pkg/minio-helper/minio-helper.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "net/url" + "path" m "simrs-vx/internal/infra/minio" @@ -165,3 +166,11 @@ func GetEndpointUrl(bucket string) string { } return fmt.Sprintf("%s://%s/%s", mode, m.O.GetEndpoint(), bucket) } + +func GetFilename(rawUrl string) (string, error) { + parsed, err := url.Parse(rawUrl) + if err != nil { + return "", err + } + return path.Base(parsed.Path), nil +}