package validation

import (
	"GoMembership/internal/models"
	"time"

	"github.com/go-playground/validator/v10"
)

func validateDriverslicence(sl validator.StructLevel) {
	dl := sl.Current().Interface().(models.User).Licence
	// if !vValidateLicence(dl.Number) {
	if dl.Number == "" {
		sl.ReportError(dl.Number, "licence_number", "", "invalid", "")
	}
	if dl.IssuedDate.After(time.Now()) {
		sl.ReportError(dl.IssuedDate, "issued_date", "", "invalid", "")
	}
	if dl.ExpirationDate.Before(time.Now().AddDate(0, 0, 3)) {
		sl.ReportError(dl.ExpirationDate, "expiration_date", "", "too_soon", "")
	}
}

// seems like not every country has to have an licence id and it seems that germany changed their id generation type..
// func validateLicence(fieldValue string) bool {
// 	if len(fieldValue) != 11 {
// 		return false
// 	}

// 	id, tenthChar := string(fieldValue[:9]), string(fieldValue[9])

// 	if tenthChar == "X" {
// 		tenthChar = "10"
// 	}
// 	tenthValue, _ := strconv.ParseInt(tenthChar, 10, 8)

// 	// for readability
// 	weights := []int{9, 8, 7, 6, 5, 4, 3, 2, 1}
// 	sum := 0

// 	for i := 0; i < 9; i++ {
// 		char := string(id[i])
// 		value, _ := strconv.ParseInt(char, 36, 64)
// 		sum += int(value) * weights[i]
// 	}

// 	calcCheckDigit := sum % 11
// 	if calcCheckDigit != int(tenthValue) {
// 		return false
// 	}

// 	return true
// }
