package domain import "time" type TransferType string const ( DEPOSIT TransferType = "deposit" WITHDRAW TransferType = "withdraw" WALLET TransferType = "wallet" ) type PaymentMethod string // Info on why the wallet was modified // If its internal system modification then, its always direct const ( TRANSFER_DIRECT PaymentMethod = "direct" TRANSFER_CASH PaymentMethod = "cash" TRANSFER_BANK PaymentMethod = "bank" TRANSFER_CHAPA PaymentMethod = "chapa" TRANSFER_ARIFPAY PaymentMethod = "arifpay" TRANSFER_SANTIMPAY PaymentMethod = "santimpay" TRANSFER_ADDISPAY PaymentMethod = "addispay" TRANSFER_OTHER PaymentMethod = "other" ) // Info for the payment providers type PaymentDetails struct { ReferenceNumber ValidString BankNumber ValidString } // A Transfer is logged for every modification of ALL wallets and wallet types type Transfer struct { ID int64 `json:"id"` Amount Currency `json:"amount"` Verified bool `json:"verified"` Type TransferType `json:"type"` PaymentMethod PaymentMethod `json:"payment_method"` ReceiverWalletID ValidInt64 `json:"receiver_wallet_id"` SenderWalletID ValidInt64 `json:"sender_wallet_id"` ReferenceNumber string `json:"reference_number"` // <-- needed Status string `json:"status"` CashierID ValidInt64 `json:"cashier_id"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } type CreateTransfer struct { Amount Currency `json:"amount"` Verified bool `json:"verified"` Type TransferType `json:"type"` PaymentMethod PaymentMethod `json:"payment_method"` ReceiverWalletID ValidInt64 `json:"receiver_wallet_id"` SenderWalletID ValidInt64 `json:"sender_wallet_id"` ReferenceNumber string `json:"reference_number"` // <-- needed Status string `json:"status"` CashierID ValidInt64 `json:"cashier_id"` }