diff --git a/internal/services/bank_account_service.go b/internal/services/bank_account_service.go index 462bd05..52acc0e 100644 --- a/internal/services/bank_account_service.go +++ b/internal/services/bank_account_service.go @@ -1,49 +1,12 @@ package services import ( - "GoMembership/internal/models" "GoMembership/internal/repositories" - "crypto/rand" - "encoding/hex" - "fmt" - "strconv" - "time" ) type BankAccountServiceInterface interface { - RegisterBankAccount(bankAccount *models.BankAccount) (int64, error) } type BankAccountService struct { Repo repositories.BankAccountRepositoryInterface } - -func (service *BankAccountService) RegisterBankAccount(bankAccount *models.BankAccount) (int64, error) { - bankAccount.MandateDateSigned = time.Now() - ref, err := generateSEPAMandateReference(strconv.FormatInt(bankAccount.UserID, 10)) - if err != nil { - return -1, err - } - bankAccount.MandateReference = ref - - return service.Repo.CreateBankAccount(bankAccount) -} - -func generateUniqueID(length int) (string, error) { - bytes := make([]byte, length) - _, err := rand.Read(bytes) - if err != nil { - return "", err - } - return hex.EncodeToString(bytes), nil -} - -func generateSEPAMandateReference(userID string) (string, error) { - today := time.Now().Format("20060102") // Format YYYYMMDD - uniqueID, err := generateUniqueID(4) // 4 Bytes = 8 Hex-Zeichen - if err != nil { - return "", err - } - mandateReference := fmt.Sprintf("%s-%s-%s", userID, today, uniqueID) - return mandateReference, nil -}