added parentmembershipvalidation
This commit is contained in:
@@ -4,15 +4,15 @@ package utils
|
||||
|
||||
import (
|
||||
// "reflect"
|
||||
"time"
|
||||
|
||||
"GoMembership/internal/database"
|
||||
"GoMembership/internal/models"
|
||||
"GoMembership/pkg/logger"
|
||||
"github.com/go-playground/validator/v10"
|
||||
"github.com/jbub/banking/iban"
|
||||
"github.com/jbub/banking/swift"
|
||||
"reflect"
|
||||
"slices"
|
||||
"time"
|
||||
)
|
||||
|
||||
//
|
||||
@@ -55,6 +55,37 @@ func IBANValidator(fl validator.FieldLevel) bool {
|
||||
return iban.Validate(fieldValue) == nil
|
||||
}
|
||||
|
||||
func ValidateRequiredMembershipField(fl validator.FieldLevel) bool {
|
||||
user := fl.Top().Interface().(*models.User)
|
||||
membership := user.Membership
|
||||
subModel := membership.SubscriptionModel
|
||||
|
||||
// Get the field name specified in RequiredMembershipField
|
||||
fieldName := subModel.RequiredMembershipField
|
||||
if fieldName == "" {
|
||||
return true
|
||||
}
|
||||
|
||||
// Get the value of the field specified by RequiredMembershipField
|
||||
fieldValue := reflect.ValueOf(membership).FieldByName(fieldName)
|
||||
// Ensure that the fieldValue is an int64
|
||||
var fieldInt64 int64
|
||||
if fieldValue.Kind() == reflect.Int64 {
|
||||
fieldInt64 = fieldValue.Int()
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
var membershipIDs []int64
|
||||
if err := database.DB.Model(&models.Membership{}).Pluck("id", &membershipIDs).Error; err != nil {
|
||||
logger.Error.Fatalf("Couldn't get SubscriptionModel names: %#v", err)
|
||||
return false
|
||||
}
|
||||
|
||||
// logger.Info.Printf("FIELD_NAME: %#v\nVALUE: %#v", fieldName, fieldValue)
|
||||
// Check if the field value is zero (empty)
|
||||
return slices.Contains(membershipIDs, fieldInt64)
|
||||
}
|
||||
|
||||
func BICValidator(fl validator.FieldLevel) bool {
|
||||
fieldValue := fl.Field().String()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user