118 lines
3.5 KiB
Go
118 lines
3.5 KiB
Go
package model
|
|
|
|
import (
|
|
"strings"
|
|
|
|
accountrolev1 "github.com/tech/sendico/pkg/proto/common/account_role/v1"
|
|
)
|
|
|
|
type AccountRole string
|
|
|
|
const (
|
|
AccountRoleOperating AccountRole = "operating"
|
|
AccountRoleHold AccountRole = "hold"
|
|
AccountRoleTransit AccountRole = "transit"
|
|
AccountRoleSettlement AccountRole = "settlement"
|
|
AccountRoleClearing AccountRole = "clearing"
|
|
AccountRolePending AccountRole = "pending"
|
|
AccountRoleReserve AccountRole = "reserve"
|
|
AccountRoleLiquidity AccountRole = "liquidity"
|
|
AccountRoleFee AccountRole = "fee"
|
|
AccountRoleChargeback AccountRole = "chargeback"
|
|
AccountRoleAdjustment AccountRole = "adjustment"
|
|
)
|
|
|
|
const (
|
|
MetadataKeyFromRole = "from_role"
|
|
MetadataKeyToRole = "to_role"
|
|
)
|
|
|
|
func Parse(value string) (AccountRole, bool) {
|
|
switch strings.ToUpper(strings.TrimSpace(value)) {
|
|
case "ACCOUNT_ROLE_OPERATING", "OPERATING":
|
|
return AccountRoleOperating, true
|
|
case "ACCOUNT_ROLE_HOLD", "HOLD":
|
|
return AccountRoleHold, true
|
|
case "ACCOUNT_ROLE_TRANSIT", "TRANSIT":
|
|
return AccountRoleTransit, true
|
|
case "ACCOUNT_ROLE_SETTLEMENT", "SETTLEMENT":
|
|
return AccountRoleSettlement, true
|
|
case "ACCOUNT_ROLE_CLEARING", "CLEARING":
|
|
return AccountRoleClearing, true
|
|
case "ACCOUNT_ROLE_PENDING", "PENDING":
|
|
return AccountRolePending, true
|
|
case "ACCOUNT_ROLE_RESERVE", "RESERVE":
|
|
return AccountRoleReserve, true
|
|
case "ACCOUNT_ROLE_LIQUIDITY", "LIQUIDITY":
|
|
return AccountRoleLiquidity, true
|
|
case "ACCOUNT_ROLE_FEE", "FEE":
|
|
return AccountRoleFee, true
|
|
case "ACCOUNT_ROLE_CHARGEBACK", "CHARGEBACK":
|
|
return AccountRoleChargeback, true
|
|
case "ACCOUNT_ROLE_ADJUSTMENT", "ADJUSTMENT":
|
|
return AccountRoleAdjustment, true
|
|
case "ACCOUNT_ROLE_UNSPECIFIED", "UNSPECIFIED", "":
|
|
return "", true
|
|
default:
|
|
return "", false
|
|
}
|
|
}
|
|
|
|
func ToProto(role AccountRole) accountrolev1.AccountRole {
|
|
switch role {
|
|
case AccountRoleOperating:
|
|
return accountrolev1.AccountRole_OPERATING
|
|
case AccountRoleHold:
|
|
return accountrolev1.AccountRole_HOLD
|
|
case AccountRoleTransit:
|
|
return accountrolev1.AccountRole_TRANSIT
|
|
case AccountRoleSettlement:
|
|
return accountrolev1.AccountRole_SETTLEMENT
|
|
case AccountRoleClearing:
|
|
return accountrolev1.AccountRole_CLEARING
|
|
case AccountRolePending:
|
|
return accountrolev1.AccountRole_PENDING
|
|
case AccountRoleReserve:
|
|
return accountrolev1.AccountRole_RESERVE
|
|
case AccountRoleLiquidity:
|
|
return accountrolev1.AccountRole_LIQUIDITY
|
|
case AccountRoleFee:
|
|
return accountrolev1.AccountRole_FEE
|
|
case AccountRoleChargeback:
|
|
return accountrolev1.AccountRole_CHARGEBACK
|
|
case AccountRoleAdjustment:
|
|
return accountrolev1.AccountRole_ADJUSTMENT
|
|
default:
|
|
return accountrolev1.AccountRole_ACCOUNT_ROLE_UNSPECIFIED
|
|
}
|
|
}
|
|
|
|
func FromProto(role accountrolev1.AccountRole) AccountRole {
|
|
switch role {
|
|
case accountrolev1.AccountRole_OPERATING:
|
|
return AccountRoleOperating
|
|
case accountrolev1.AccountRole_HOLD:
|
|
return AccountRoleHold
|
|
case accountrolev1.AccountRole_TRANSIT:
|
|
return AccountRoleTransit
|
|
case accountrolev1.AccountRole_SETTLEMENT:
|
|
return AccountRoleSettlement
|
|
case accountrolev1.AccountRole_CLEARING:
|
|
return AccountRoleClearing
|
|
case accountrolev1.AccountRole_PENDING:
|
|
return AccountRolePending
|
|
case accountrolev1.AccountRole_RESERVE:
|
|
return AccountRoleReserve
|
|
case accountrolev1.AccountRole_LIQUIDITY:
|
|
return AccountRoleLiquidity
|
|
case accountrolev1.AccountRole_FEE:
|
|
return AccountRoleFee
|
|
case accountrolev1.AccountRole_CHARGEBACK:
|
|
return AccountRoleChargeback
|
|
case accountrolev1.AccountRole_ADJUSTMENT:
|
|
return AccountRoleAdjustment
|
|
default:
|
|
return ""
|
|
}
|
|
}
|