78 lines
2.2 KiB
Go
78 lines
2.2 KiB
Go
package models
|
|
|
|
import (
|
|
"apskel-pos-be/internal/constants"
|
|
"time"
|
|
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
type PaymentMethod struct {
|
|
ID uuid.UUID
|
|
OrganizationID uuid.UUID
|
|
Name string
|
|
Type constants.PaymentMethodType
|
|
Processor *string
|
|
Configuration map[string]interface{}
|
|
IsActive bool
|
|
CreatedAt time.Time
|
|
UpdatedAt time.Time
|
|
}
|
|
|
|
type CreatePaymentMethodRequest struct {
|
|
OrganizationID uuid.UUID `validate:"required"`
|
|
Name string `validate:"required,min=1,max=100"`
|
|
Type constants.PaymentMethodType `validate:"required"`
|
|
Processor *string `validate:"omitempty,max=100"`
|
|
Configuration map[string]interface{} `validate:"omitempty"`
|
|
IsActive *bool `validate:"omitempty"`
|
|
}
|
|
|
|
type UpdatePaymentMethodRequest struct {
|
|
Name *string `validate:"omitempty,min=1,max=100"`
|
|
Type *constants.PaymentMethodType `validate:"omitempty"`
|
|
Processor *string `validate:"omitempty,max=100"`
|
|
Configuration map[string]interface{} `validate:"omitempty"`
|
|
IsActive *bool `validate:"omitempty"`
|
|
}
|
|
|
|
type PaymentMethodResponse struct {
|
|
ID uuid.UUID
|
|
OrganizationID uuid.UUID
|
|
Name string
|
|
Type constants.PaymentMethodType
|
|
Processor *string
|
|
Configuration map[string]interface{}
|
|
IsActive bool
|
|
CreatedAt time.Time
|
|
UpdatedAt time.Time
|
|
}
|
|
|
|
type ListPaymentMethodsRequest struct {
|
|
OrganizationID *uuid.UUID
|
|
Type *constants.PaymentMethodType
|
|
IsActive *bool
|
|
Search string
|
|
Page int `validate:"min=1"`
|
|
Limit int `validate:"min=1,max=100"`
|
|
}
|
|
|
|
type ListPaymentMethodsResponse struct {
|
|
PaymentMethods []PaymentMethodResponse
|
|
TotalCount int
|
|
Page int
|
|
Limit int
|
|
TotalPages int
|
|
}
|
|
|
|
func (pm *PaymentMethod) IsDigital() bool {
|
|
return pm.Type == constants.PaymentMethodTypeCard ||
|
|
pm.Type == constants.PaymentMethodTypeDigitalWallet ||
|
|
pm.Type == constants.PaymentMethodTypeEDC ||
|
|
pm.Type == constants.PaymentMethodTypeQR
|
|
}
|
|
|
|
func (pm *PaymentMethod) RequiresProcessor() bool {
|
|
return pm.IsDigital() && pm.Processor != nil
|
|
}
|