package model import ( "time" "github.com/tech/sendico/pkg/db/storable" ) type TreasuryOperationType string const ( TreasuryOperationFund TreasuryOperationType = "fund" TreasuryOperationWithdraw TreasuryOperationType = "withdraw" ) type TreasuryRequestStatus string const ( TreasuryRequestStatusCreated TreasuryRequestStatus = "created" TreasuryRequestStatusConfirmed TreasuryRequestStatus = "confirmed" TreasuryRequestStatusScheduled TreasuryRequestStatus = "scheduled" TreasuryRequestStatusExecuted TreasuryRequestStatus = "executed" TreasuryRequestStatusCancelled TreasuryRequestStatus = "cancelled" TreasuryRequestStatusFailed TreasuryRequestStatus = "failed" ) type TreasuryRequest struct { storable.Base `bson:",inline" json:",inline"` RequestID string `bson:"requestId,omitempty" json:"request_id,omitempty"` OperationType TreasuryOperationType `bson:"operationType,omitempty" json:"operation_type,omitempty"` TelegramUserID string `bson:"telegramUserId,omitempty" json:"telegram_user_id,omitempty"` LedgerAccountID string `bson:"ledgerAccountId,omitempty" json:"ledger_account_id,omitempty"` LedgerAccountCode string `bson:"ledgerAccountCode,omitempty" json:"ledger_account_code,omitempty"` OrganizationRef string `bson:"organizationRef,omitempty" json:"organization_ref,omitempty"` ChatID string `bson:"chatId,omitempty" json:"chat_id,omitempty"` Amount string `bson:"amount,omitempty" json:"amount,omitempty"` Currency string `bson:"currency,omitempty" json:"currency,omitempty"` Status TreasuryRequestStatus `bson:"status,omitempty" json:"status,omitempty"` ConfirmedAt time.Time `bson:"confirmedAt,omitempty" json:"confirmed_at,omitempty"` ScheduledAt time.Time `bson:"scheduledAt,omitempty" json:"scheduled_at,omitempty"` ExecutedAt time.Time `bson:"executedAt,omitempty" json:"executed_at,omitempty"` CancelledAt time.Time `bson:"cancelledAt,omitempty" json:"cancelled_at,omitempty"` IdempotencyKey string `bson:"idempotencyKey,omitempty" json:"idempotency_key,omitempty"` LedgerReference string `bson:"ledgerReference,omitempty" json:"ledger_reference,omitempty"` ErrorMessage string `bson:"errorMessage,omitempty" json:"error_message,omitempty"` Active bool `bson:"active,omitempty" json:"active,omitempty"` } type TreasuryTelegramUser struct { storable.Base `bson:",inline" json:",inline"` TelegramUserID string `bson:"telegramUserId,omitempty" json:"telegram_user_id,omitempty"` LedgerAccountID string `bson:"ledgerAccountId,omitempty" json:"ledger_account_id,omitempty"` AllowedChatIDs []string `bson:"allowedChatIds,omitempty" json:"allowed_chat_ids,omitempty"` }