clean up of bank-service
This commit is contained in:
@@ -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
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user