clean up of bank-service

This commit is contained in:
Alex
2024-09-29 21:08:59 +02:00
parent 36bd75bbeb
commit 31cfe21695

View File

@@ -1,49 +1,12 @@
package services package services
import ( import (
"GoMembership/internal/models"
"GoMembership/internal/repositories" "GoMembership/internal/repositories"
"crypto/rand"
"encoding/hex"
"fmt"
"strconv"
"time"
) )
type BankAccountServiceInterface interface { type BankAccountServiceInterface interface {
RegisterBankAccount(bankAccount *models.BankAccount) (int64, error)
} }
type BankAccountService struct { type BankAccountService struct {
Repo repositories.BankAccountRepositoryInterface 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
}