package model

import (
	"time"

	"github.com/tech/sendico/pkg/db/storable"
)

// CardPayout is a Mongo/JSON representation of proto CardPayout
type CardPayout struct {
	storable.Base     `bson:",inline" json:",inline"`
	PaymentRef        string       `bson:"paymentRef" json:"payment_ref"`
	OperationRef      string       `bson:"operationRef" json:"operation_ref"`
	IdempotencyKey    string       `bson:"idempotencyKey" json:"idempotency_key"`
	IntentRef         string       `bson:"intentRef" json:"intentRef"`
	Comment           string       `bson:"comment,omitempty" json:"comment,omitempty"`
	ProjectID         int64        `bson:"projectId" json:"project_id"`
	CustomerID        string       `bson:"customerId" json:"customer_id"`
	AmountMinor       int64        `bson:"amountMinor" json:"amount_minor"`
	Currency          string       `bson:"currency" json:"currency"`
	Status            PayoutStatus `bson:"status" json:"status"`
	ProviderCode      string       `bson:"providerCode,omitempty" json:"provider_code,omitempty"`
	ProviderMessage   string       `bson:"providerMessage,omitempty" json:"provider_message,omitempty"`
	ProviderPaymentID string       `bson:"providerPaymentId,omitempty" json:"provider_payment_id,omitempty"`
	FailureReason     string       `bson:"failureReason,omitempty" json:"failure_reason,omitempty"`

	CreatedAt time.Time `bson:"createdAt" json:"created_at"`
	UpdatedAt time.Time `bson:"updatedAt" json:"updated_at"`
}
