package userpin

import (
	"rijig/utils"
	"strings"
)

type RequestPinDTO struct {
	DeviceId string `json:"device_id"`
	Pin      string `json:"userpin"`
}

func (r *RequestPinDTO) ValidateRequestPinDTO() (map[string][]string, bool) {
	errors := make(map[string][]string)

	if err := utils.ValidatePin(r.Pin); err != nil {
		errors["pin"] = append(errors["pin"], err.Error())
	}

	if len(errors) > 0 {
		return errors, false
	}

	return nil, true
}

type UpdatePinDTO struct {
	OldPin string `json:"old_pin"`
	NewPin string `json:"new_pin"`
}

func (u *UpdatePinDTO) ValidateUpdatePinDTO() (map[string][]string, bool) {
	errors := make(map[string][]string)

	if strings.TrimSpace(u.OldPin) == "" {
		errors["old_pin"] = append(errors["old_pin"], "Old pin is required")
	}

	if err := utils.ValidatePin(u.NewPin); err != nil {
		errors["new_pin"] = append(errors["new_pin"], err.Error())
	}

	if len(errors) > 0 {
		return errors, false
	}

	return nil, true
}
