marketplace

package
v0.0.0-...-724d5a7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 8, 2019 License: MIT Imports: 51 Imported by: 0

Documentation

Index

Constants

View Source
const (
	RED_WARNING_EXPIRATION    = "2190h"
	YELLOW_WARNING_EXPIRATION = "1460h"
	GREEN_WARNING_EXPIRATION  = "730h"
)

Variables

View Source
var (
	CRYPTO_CURRENCIES = []string{"ETH", "BTC"}
	FIAT_CURRENCIES   = []string{"USD", "EUR", "AUD", "GBP", "RUB"}
	CURRENCY_RATES    = map[string]map[string]float64{}
)
View Source
var (
	RED_WARNING_DURATION, _    = time.ParseDuration(RED_WARNING_EXPIRATION)
	YELLOW_WARNING_DURATION, _ = time.ParseDuration(YELLOW_WARNING_EXPIRATION)
	GREEN_WARNING_DURATION, _  = time.ParseDuration(GREEN_WARNING_EXPIRATION)
)
View Source
var (
	BleveIndex bleve.Index
)
View Source
var (
	MARKETPLACE_SETTINGS = settings.GetSettings()
)

Functions

func CacheClearPrivateThreads

func CacheClearPrivateThreads(userUuid string)

func CacheCountMessageboardThreads

func CacheCountMessageboardThreads(sectionId int) int

func CacheGetUserUuid

func CacheGetUserUuid(username string) string

func CacheShippingToList

func CacheShippingToList() []string

func CalculateStaffLevel

func CalculateStaffLevel(stats StaffStats) int

func CalculateStoreLevel

func CalculateStoreLevel(stats StoreStats, registrationDate time.Time) int

func CanUserReportStore

func CanUserReportStore(user User, store Store) bool

func CommandUpdateDeposits

func CommandUpdateDeposits()

func ConfigureRouter

func ConfigureRouter(router *web.Router) *web.Router

func CountActiveWarningsForStore

func CountActiveWarningsForStore(storeUuid string) int

func CountAvailableItems

func CountAvailableItems() int

func CountAvailableVendors

func CountAvailableVendors() int

func CountBronzeVendors

func CountBronzeVendors(dt *time.Time) int

func CountCityMetroStationsByCity

func CountCityMetroStationsByCity(cityId int) int

func CountCurrentTransactionStatusesForBuyer

func CountCurrentTransactionStatusesForBuyer(userUuid, status, shippingStatus string, filterFailed bool) int

func CountCurrentTransactionStatusesForStore

func CountCurrentTransactionStatusesForStore(storeUuid, status, shippingStatus string, filterFailed bool) int

func CountDisputedTransactions

func CountDisputedTransactions(resolverUuid, status string) int

func CountDisputesForStoreUuid

func CountDisputesForStoreUuid(storeUuid, status string) int

func CountDisputesForUserUuid

func CountDisputesForUserUuid(userUuid, status string) int

func CountExpiredWarningsForStore

func CountExpiredWarningsForStore(storeUuid string) int

func CountFreeVendors

func CountFreeVendors(dt *time.Time) int

func CountGoldVendors

func CountGoldVendors(dt *time.Time) int

func CountGreenWarningsForStore

func CountGreenWarningsForStore(storeUuid string, expired bool) int

func CountItems

func CountItems() int

func CountMessageboardThreads

func CountMessageboardThreads(sectionId int) int

func CountNegativeRatingReviewsForStore

func CountNegativeRatingReviewsForStore(storeUuid string) int

func CountNeutralRatingReviewsForStore

func CountNeutralRatingReviewsForStore(storeUuid string) int

func CountNumberOfApprovedItems

func CountNumberOfApprovedItems(userUuid string) int

func CountNumberOfApprovedVendors

func CountNumberOfApprovedVendors(userUuid string) int

func CountNumberOfDisputesResolved

func CountNumberOfDisputesResolved(userUuid string) int

func CountNumberOfReleasedTransactionsForStore

func CountNumberOfReleasedTransactionsForStore(userUuid string) int

func CountNumberOfTicketsResolved

func CountNumberOfTicketsResolved(userUuid string) int

func CountPayedTransactionsForBuyerAndSeller

func CountPayedTransactionsForBuyerAndSeller(buyerUuid, sellerUuid string) int

func CountPositiveRatingReviewsForStore

func CountPositiveRatingReviewsForStore(storeUuid string) int

func CountPrivateMessages

func CountPrivateMessages(user User) int

func CountRatingReviewsForStore

func CountRatingReviewsForStore(storeUuid string) int

func CountRedWarningsForStore

func CountRedWarningsForStore(storeUuid string, expired bool) int

func CountSilverVendors

func CountSilverVendors(dt *time.Time) int

func CountSupportTicketsByStatus

func CountSupportTicketsByStatus(status string) int

func CountSupportTicketsForUser

func CountSupportTicketsForUser(user User) int

func CountTransactions

func CountTransactions(status string) int

func CountTransactionsInitiatedInPeriod

func CountTransactionsInitiatedInPeriod(table string, from, to time.Time) int

func CountTransactionsLastUpdatedWithStatusInPeriod

func CountTransactionsLastUpdatedWithStatusInPeriod(table string, from, to time.Time, status string) int

func CountUndreadPrivateMessages

func CountUndreadPrivateMessages(user User) int

func CountUsers

func CountUsers(dt *time.Time) int

func CountUsersActiveAfter

func CountUsersActiveAfter(dt time.Time) int

func CountUsersRegistredAfter

func CountUsersRegistredAfter(dt time.Time) int

func CountVendors

func CountVendors(dt *time.Time) int

func CountYellowWarningsForStore

func CountYellowWarningsForStore(storeUuid string, expired bool) int

func CreateAdvertising

func CreateAdvertising(comment string, count int, itemUuid string) error

func CronStaffSupportTicketStats

func CronStaffSupportTicketStats(interval string)

func CronTransactionsStats

func CronTransactionsStats(interval string)

func CronUsersStats

func CronUsersStats(interval string)

func EventDisputeNewMessage

func EventDisputeNewMessage(dispute Dispute, message Message)

func EventNewDispute

func EventNewDispute(dispute Dispute)

func EventNewItem

func EventNewItem(item Item)

func EventNewShoutboxPost

func EventNewShoutboxPost(user User, message Message)

func EventNewStaffToUserAction

func EventNewStaffToUserAction(staff, user User, action string)

func EventNewSupportTicket

func EventNewSupportTicket(supportTicket SupportTicket)

func EventNewSupportTicketMessage

func EventNewSupportTicketMessage(supportTicket SupportTicket, message Message)

func EventNewTrustedStoreRequest

func EventNewTrustedStoreRequest(store Store)

func EventNewTrustedStoreVerificationThreadPost

func EventNewTrustedStoreVerificationThreadPost(user User, store Store, message Message)

func EventNewVendorMessageboardPost

func EventNewVendorMessageboardPost(user User, vendor User, message Message)

func EventNewWarning

func EventNewWarning(warning StoreWarning)

func EventStaffSupportTicketsResolutionStats

func EventStaffSupportTicketsResolutionStats(interval string, sItems []StaffSupportTicketsStatsItem)

func EventTransactionUpdate

func EventTransactionUpdate(transaction Transaction)

func EventTransactionsStats

func EventTransactionsStats(
	interval string,
	numberOfNewTransactions,
	numberOfCompletedTransactions,
	numberOfReleasedTransactions,
	numberOfFailedTransactions,
	numberOfCancelledTransactions,
	numberOfFrozenTransactions int,
)

func EventUserLoggedIn

func EventUserLoggedIn(user User)

func EventUserRegistred

func EventUserRegistred(user User)

func EventUserSubscription

func EventUserSubscription(user User, plan, currency, address string)

func EventUsersStats

func EventUsersStats(interval string, newUsers, activeUsers int)

func EventWarningStatsUpdate

func EventWarningStatsUpdate(warning StoreWarning, staff User)

func GetCountItems

func GetCountItems() int

func GetCountVendors

func GetCountVendors() int

func GetCurrencyRate

func GetCurrencyRate(baseCurrency, targetCurrency string) float64

func GetNextUserBitcoinCashWalletActionID

func GetNextUserBitcoinCashWalletActionID() int

func GetNextUserBitcoinCashWalletbalanceID

func GetNextUserBitcoinCashWalletbalanceID() int

func GetNextUserBitcoinWalletActionID

func GetNextUserBitcoinWalletActionID() int

func GetNextUserBitcoinWalletbalanceID

func GetNextUserBitcoinWalletbalanceID() int

func GetVendorshipAgreement

func GetVendorshipAgreement(lang string, user User, dt time.Time) string

func ImportCityMetroStations

func ImportCityMetroStations(cityID int, filename string) error

func InvalidateStoreCache

func InvalidateStoreCache(storeUuid string)

func NumberOfActiveUsersStats

func NumberOfActiveUsersStats(interval string) int

func NumberOfCancelledTransactionsStats

func NumberOfCancelledTransactionsStats(interval string) int

func NumberOfCompletedTransactionsStats

func NumberOfCompletedTransactionsStats(interval string) int

func NumberOfFailedTransactionsStats

func NumberOfFailedTransactionsStats(interval string) int

func NumberOfFrozenTransactionsStats

func NumberOfFrozenTransactionsStats(interval string) int

func NumberOfNewTransactionsStats

func NumberOfNewTransactionsStats(interval string) int

func NumberOfNewUsersStats

func NumberOfNewUsersStats(interval string) int

func NumberOfReleasedTransactionsStats

func NumberOfReleasedTransactionsStats(interval string) int

func PriceInCurrencies

func PriceInCurrencies(items []SerpItem)

func ReadVendorshipAgreement

func ReadVendorshipAgreement(language string) string

func RefreshFrontPageItemsMaterializedViews

func RefreshFrontPageItemsMaterializedViews()

func RefreshSerpItemsMaterializedView

func RefreshSerpItemsMaterializedView()

func RefreshSupportTicketsMaterializedView

func RefreshSupportTicketsMaterializedView()

func RefreshTransactionsMaterializedView

func RefreshTransactionsMaterializedView()

func RemoveAllStores

func RemoveAllStores()

func SearchItems

func SearchItems(text string) []string

func SetStoreValues

func SetStoreValues(items []SerpItem)

func StartCurrencyCron

func StartCurrencyCron()

func StartFrontPageCron

func StartFrontPageCron()

func StartSERPCron

func StartSERPCron()

func StartStatsCron

func StartStatsCron()

func StartTransactionsCron

func StartTransactionsCron()

func StartWalletsCron

func StartWalletsCron()

func SumAmountTransactionsInitiatedInPeriod

func SumAmountTransactionsInitiatedInPeriod(table string, from, to time.Time) float64

func SyncDatabaseViews

func SyncDatabaseViews()

func SyncModels

func SyncModels()

func TaskCleanInactiveReservations

func TaskCleanInactiveReservations()

TaskCleanInactiveReservations is a cron job that runs every 5 minutes. Deletes inactive reservations.

func TaskFailOldPendingTransactions

func TaskFailOldPendingTransactions()

TaskFailOldPendingTransactions is a cron job that runs every 5 minutes. Updates status of old pending payments

func TaskFinalizeReleasedAndCancelledTransactionsWithNonZeroAmount

func TaskFinalizeReleasedAndCancelledTransactionsWithNonZeroAmount()

func TaskFreezeStalledCompletedTransactions

func TaskFreezeStalledCompletedTransactions()

FindStalledCompletedTransactions is a cron job that runs every 5 minutes. Updates status of old pending payments

func TaskReleaseOldCompletedTransactions

func TaskReleaseOldCompletedTransactions()

TaskReleaseConfirmedTransactions is a cron job that runs every 5 minutes. Releases funds to seller of confirmed transaction.

func TaskUpdateAllBitcoinCashWallets

func TaskUpdateAllBitcoinCashWallets()

func TaskUpdateAllBitcoinWallets

func TaskUpdateAllBitcoinWallets()

func TaskUpdateAllEthereumWallets

func TaskUpdateAllEthereumWallets()

func TaskUpdateBalancesOrRecentlyReleasedAndCancelledTransactions

func TaskUpdateBalancesOrRecentlyReleasedAndCancelledTransactions()

func TaskUpdatePendingTransactions

func TaskUpdatePendingTransactions()

TaskUpdatePendingTransactions is a cron job that runs every 5 minutes. Checks for balance and updates transaction status.

func TaskUpdateRecentBitcoinCashWallets

func TaskUpdateRecentBitcoinCashWallets()

func TaskUpdateRecentBitcoinWallets

func TaskUpdateRecentBitcoinWallets()

func TaskUpdateRecentEthereumWallets

func TaskUpdateRecentEthereumWallets()

func TranslateFeedActions

func TranslateFeedActions(str, lang string) string

func UpdateCurrencyRates

func UpdateCurrencyRates()

func UpdateThreadPerusalStatus

func UpdateThreadPerusalStatus(threadUuid, userUuid string) error

Types

type APISession

type APISession struct {
	Token                   string    `json:"token" gorm:"index"`
	UserUuid                string    `json:"-"`
	ExpiryDate              time.Time `json:"end_date"`
	IsTwoFactorSession      bool      `json:"is_2fa_session"`
	IsSecondFactorCompleted bool      `json:"is_2fa_completed"`
	SecondFactorSecretText  string    `json:"-"`

	User User `json:"-"`
}

func CreateAPISession

func CreateAPISession(user User) (*APISession, error)

func FindAPISessionByToken

func FindAPISessionByToken(sessionToken string) (*APISession, error)

func FindAPISessionByUserUuid

func FindAPISessionByUserUuid(userUuid string) (*APISession, error)

func (APISession) Complete2FA

func (as APISession) Complete2FA() error

func (APISession) IsActive

func (as APISession) IsActive() bool

func (APISession) Remove

func (as APISession) Remove() error

func (APISession) Save

func (as APISession) Save() error

func (APISession) Validate

func (as APISession) Validate() error

type Advertising

type Advertising struct {
	Uuid    string `json:"uuid" gorm:"primary_key"`
	Status  bool   `json:"status"`
	Comment string `gorm:"type:varchar(50);unique" json:"comment"`

	DateStart   time.Time `json:"date_start"`
	DateEnd     time.Time `json:"date_end"`
	DateCreated time.Time `json:"created_at"`

	CountImpressions        int `json:"count_impressions"`
	CurrentCountImpressions int `json:"current_count_impressions"`

	ItemUuid string `json:"item_uuid" sql:"index"`
	Item     Item   `json:"-"`
}

func FindAdvertisingByItem

func FindAdvertisingByItem(uuid string) (*Advertising, error)

func FindAdvertisingByUuid

func FindAdvertisingByUuid(uuid string) (*Advertising, error)

func (*Advertising) AddImpressions

func (ad *Advertising) AddImpressions() error

func (Advertising) Save

func (ad Advertising) Save() error

func (*Advertising) SaveToDatabase

func (ad *Advertising) SaveToDatabase() error

func (Advertising) Validate

func (ad Advertising) Validate() error

type Advertisings

type Advertisings []Advertising

func FindAdvertisingByStore

func FindAdvertisingByStore(uuid string) Advertisings

func FindAllActiveAdvertisings

func FindAllActiveAdvertisings() Advertisings

func FindAllAdvertising

func FindAllAdvertising() (Advertisings, error)

func FindRandomActiveAdvertisings

func FindRandomActiveAdvertisings(limit int) Advertisings

func GetAdvertisings

func GetAdvertisings(limit int) Advertisings

type BitcoinCashTransaction

type BitcoinCashTransaction struct {
	Uuid             string  `json:"uuid" gorm:"primary_key"`
	Amount           float64 `json:"amount"`
	IsMultisig       bool    `json:"is_multisig"`
	BuyerPublicKey   string  `json:"buyer_public_key"`
	SellerPublicKey  string  `json:"seller_public_key"`
	MarketPublicKey  string  `json:"market_public_key"`
	MarketPrivateKey string  `json:"market_private_key"`
}

func CreateBitcoinCashTransaction

func CreateBitcoinCashTransaction(
	itemPackage Package,
	buyer User,
	tp string,
	quantity int,
	shippingPrice float64,
) (BitcoinCashTransaction, error)

func FindBitcoinCashTransactionByUuid

func FindBitcoinCashTransactionByUuid(uuid string) (*BitcoinCashTransaction, error)

func (BitcoinCashTransaction) Cancel

func (bt BitcoinCashTransaction) Cancel(t Transaction, comment, userUuid string) error

func (BitcoinCashTransaction) Release

func (bt BitcoinCashTransaction) Release(t Transaction, comment, userUuid string) error

func (BitcoinCashTransaction) Save

func (t BitcoinCashTransaction) Save() error

func (BitcoinCashTransaction) UpdateTransactionStatus

func (bt BitcoinCashTransaction) UpdateTransactionStatus(t Transaction) error

type BitcoinTransaction

type BitcoinTransaction struct {
	Uuid             string  `json:"uuid" gorm:"primary_key"`
	Amount           float64 `json:"amount"`
	IsMultisig       bool    `json:"is_multisig"`
	BuyerPublicKey   string  `json:"buyer_public_key"`
	SellerPublicKey  string  `json:"seller_public_key"`
	MarketPublicKey  string  `json:"market_public_key"`
	MarketPrivateKey string  `json:"market_private_key"`
}

func CreateBitcoinTransaction

func CreateBitcoinTransaction(itemPackage Package, buyer User, tp string, quantity int, shippingPrice float64) (BitcoinTransaction, error)

func FindBitcoinTransactionByUuid

func FindBitcoinTransactionByUuid(uuid string) (*BitcoinTransaction, error)

func (BitcoinTransaction) Cancel

func (bt BitcoinTransaction) Cancel(t Transaction, comment, userUuid string) error

func (BitcoinTransaction) Release

func (bt BitcoinTransaction) Release(t Transaction, comment, userUuid string) error

func (BitcoinTransaction) Save

func (t BitcoinTransaction) Save() error

func (BitcoinTransaction) UpdateTransactionStatus

func (bt BitcoinTransaction) UpdateTransactionStatus(t Transaction) error

type Category

type Category struct {
	Name          string
	NameEncoded   string
	Count         int
	ID            string
	Subcategories []Category
}

func GetAllCategories

func GetAllCategories() []Category

type CaterogiesByCount

type CaterogiesByCount []Category

func (CaterogiesByCount) Len

func (s CaterogiesByCount) Len() int

func (CaterogiesByCount) Less

func (s CaterogiesByCount) Less(i, j int) bool

func (CaterogiesByCount) Swap

func (s CaterogiesByCount) Swap(i, j int)

type City

type City struct {
	ID           int    `json:"geonameid" gorm:"primary_key"`
	NameEn       string `json:"name" sql:"index"`
	CountryEn    string `json:"country" sql:"index"`
	SubCountryEn string `json:"subcountry" sql:"index"`

	Country Country `gorm:"AssociationForeignKey:NameEn" json:"-"`
}

func FindCitiesByCountryNameEn

func FindCitiesByCountryNameEn(name string) []City

func FindCityByID

func FindCityByID(id int) (*City, error)

func GetAllCities

func GetAllCities() []City

func (City) Remove

func (i City) Remove() error

func (City) Save

func (itm City) Save() error

func (City) SaveToDatabase

func (itm City) SaveToDatabase() error

func (City) Validate

func (r City) Validate() error

type CityMetroStation

type CityMetroStation struct {
	Uuid   string `json:"uuid" gorm:"primary_key"`
	CityID int    `json:"city_id" sql:"index"`

	NameEn string `json:"name_en"`
	NameRu string `json:"name_ru"`

	City City `json:"-"`
}

func FindCityMetroStationByUuid

func FindCityMetroStationByUuid(uuid string) (*CityMetroStation, error)

func FindCityMetroStationsByCity

func FindCityMetroStationsByCity(cityId int) []CityMetroStation

func (CityMetroStation) Remove

func (i CityMetroStation) Remove() error

func (CityMetroStation) Save

func (itm CityMetroStation) Save() error

func (CityMetroStation) SaveToDatabase

func (itm CityMetroStation) SaveToDatabase() error

func (CityMetroStation) Validate

func (r CityMetroStation) Validate() error

type Context

type Context struct {
	*util.Context
	// Localization
	Localization Localization `json:"-"`

	// General
	CaptchaId string `json:"captcha_id,omitempty"`
	Error     string `json:"error,omitempty"`

	// User Permissions
	CanEdit            bool `json:"can_edit,omitempty"`
	EnableStoreStaffUI bool `json:"enable_store_staff_ui,omitempty"`
	CanPostWarnings    bool `json:"-"`

	// Misc
	Pgp                 string                `json:"pgp,omitempty"`
	UserSettingsHistory []UserSettingsHistory `json:"user_settings_history,omitempty"`
	Language            string                `json:"language,omitempty"`

	// Paging & sorting
	SelectedPage  int    `json:"selected_page,omitempty"`
	Pages         []int  `json:"-,omitempty"`
	Page          int    `json:"page,omitempty"`
	NumberOfPages int    `json:"number_of_pages,omitempty"`
	Query         string `json:"query,omitempty"`
	SortBy        string `json:"sort_by,omitempty"`
	Domestic      bool   `json:"domestic,omitempty"`

	// Static Pages
	StaticPage  StaticPage   `json:"-,omitempty"`
	StaticPages []StaticPage `json:"-,omitempty"`

	// Menu
	Categories             []Category         `json:"-,omitempty"`
	Cities                 map[string]int     `json:"-,omitempty"`
	City                   string             `json:"city,omitempty"`
	GeoCities              []City             `json:"geo_cities,omitempty"`
	CityMetroStations      []CityMetroStation `json:"metro_stations,omitempty"`
	CityID                 int                `json:"city_id,omitempty"`
	Countries              []Country          `json:"countries,omitempty"`
	Quantity               int                `json:"quantity,omitempty"`
	SelectedPackageType    string             `json:"selected_package_type,omitempty"`
	SelectedSection        string             `json:"-,omitempty"`
	SelectedSectionID      int                `json:"-,omitempty"`
	SelectedStatus         string             `json:"selected_status,omitempty"`
	SelectedShippingStatus string             `json:"selected_shipping_status,omitempty"`
	ShippingFrom           string             `json:"shipping_from,omitempty"`
	ShippingFromList       []string           `json:"shipping_from_list,omitempty"`
	ShippingTo             string             `json:"shipping_to,omitempty"`
	ShippingToList         []string           `json:"shipping_to_list,omitempty"`
	Account                string             `json:"account,omitempty"`
	Currency               string             `json:"currency,omitempty"`

	// Categories
	Category       string `json:"category,omitempty"`
	SubCategory    string `json:"sub_category,omitempty"`
	SubSubCategory string `json:"sub_sub_category,omitempty"`
	CategoryID     int    `json:"category_id,omitempty"`

	// Items page
	GroupPackages                        []GroupPackage                       `json:"-,omitempty"`
	GroupPackagesByTypeOriginDestination map[GroupedPackageKey][]GroupPackage `json:"-,omitempty"`
	GroupAvailability                    *GroupPackage                        `json:"group_package,omitempty"`
	NumberOfItems                        int                                  `json:"number_of_items,omitempty"`
	PackageCurrency                      string                               `json:"package_currency,omitempty"`
	PackagePrice                         string                               `json:"package_price,omitempty"`

	// Models
	ExtendedUsers []ExtendedUser `json:"-,omitempty"`
	Thread        Thread         `json:"-,omitempty"`
	Threads       []Thread       `json:"-,omitempty"`
	RatingReview  RatingReview   `json:"-,omitempty"`

	// View Models
	ViewCurrentTransactionStatuses []ViewCurrentTransactionStatus `json:"transaction_statuses,omitempty"`
	ViewExtendedUsers              []ViewExtendedUser             `json:"users,omitempty"`
	ViewFeedItems                  []ViewFeedItem                 `json:"feed_items,omitempty"`
	ViewItem                       *ViewItem                      `json:"item,omitempty,omitempty"`
	ViewItemCategories             []ViewItemCategory             `json:"item_categories,omitempty"`
	ViewItemCategory               *ViewItemCategory              `json:"item_category,omitempty"`
	ViewItems                      []ViewItem                     `json:"items,omitempty"`
	ViewMarketplaceUser            *ViewUser                      `json:"marketplace_user,omitempty"`
	ViewMessage                    ViewMessage                    `json:"-"`
	// ViewMessageboardSection        ViewMessageboardSection        `json:"-,omitempty"`
	// ViewMessageboardSections       []ViewMessageboardSection      `json:"-,omitempty"`
	ViewMessages       []ViewMessage       `json:"-"`
	ViewPackage        ViewPackage         `json:"-"`
	ViewPackages       []ViewPackage       `json:"-"`
	ViewPrivateThreads []ViewPrivateThread `json:"-"`
	ViewStore          *ViewStore          `json:"store,omitempty"`
	ViewStores         []ViewStore         `json:"stores,omitempty"`
	ViewStoreWarnings  []ViewStoreWarning  `json:"-"`
	ViewThread         *ViewThread         `json:"thread,omitempty"`
	ViewThreads        []ViewThread        `json:"-"`
	ViewTransaction    *ViewTransaction    `json:"transaction,omitempty"`
	ViewTransactions   []ViewTransaction   `json:"transactions,omitempty"`
	ViewUser           *ViewUser           `json:"user,omitempty"`
	ViewUsers          []ViewUser          `json:"-"`
	ViewUserStore      *ViewStore          `json:"user_store,omitempty"`

	// Stats
	NumberOfDailyTransactions     int `json:"-"`
	NumberOfMonthlyTransactions   int `json:"-"`
	NumberOfPrivateMessages       int `json:"-"`
	NumberOfSupportMessages       int `json:"-"`
	NumberOfTransactions          int `json:"-"`
	NumberOfUnreadPrivateMessages int `json:"-"`
	NumberOfUnreadSupportMessages int `json:"-"`
	NumberOfWeeklyTransactions    int `json:"-"`
	NumberOfDisputes              int `json:"-"`

	// Admin Stats
	NumberOfUsers int `json:"-"`

	// --- Vendor Statistics ---
	NumberOfVendors       int `json:"-"`
	NumberOfFreeVendors   int `json:"-"`
	NumberOfGoldVendors   int `json:"-"`
	NumberOfSilverVendors int `json:"-"`
	NumberOfBronzeVendors int `json:"-"`

	// --- User Statistics ---
	NumberOfNewUsers           int         `json:"-"`
	NumberOfActiveUsers        int         `json:"-"`
	NumberOfWeeklyActiveUsers  int         `json:"-"`
	NumberOfOnlineUsers        int         `json:"-"`
	NumberOfMonthlyActiveUsers int         `json:"-"`
	NumberOfInvitedUsers       int         `json:"-"`
	StatsItems                 []StatsItem `json:"-"`

	// --- Staff Statistics ---
	StaffStats StaffStats `json:"-"`

	// Auth
	SecretText string `json:"secret_text,omitempty"`
	InviteCode string `json:"invite_code,omitempty"`

	// Bitcoin Wallets
	UserBitcoinBalance       *apis.BTCWalletBalance    `json:"btc_balance,omitempty"`
	UserBitcoinWallets       UserBitcoinWallets        `json:"-"`
	UserBitcoinWallet        *UserBitcoinWallet        `json:"btc_wallet,omitempty"`
	UserBitcoinWalletActions []UserBitcoinWalletAction `json:"-"`

	// Ethereum Wallets
	UserEthereumBalance       *apis.ETHWalletBalance     `json:"eth_balance,omitempty"`
	UserEthereumWallets       UserEthereumWallets        `json:"-"`
	UserEthereumWallet        *UserEthereumWallet        `json:"eth_wallet,omitempty"`
	UserEthereumWalletActions []UserEthereumWalletAction `json:"-"`

	// Bitcoin Cash Wallets
	UserBitcoinCashBalance       *apis.BCHWalletBalance        `json:"bch_balance,omitempty"`
	UserBitcoinCashWallets       UserBitcoinCashWallets        `json:"-"`
	UserBitcoinCashWallet        *UserBitcoinCashWallet        `json:"bch_wallet,omitempty"`
	UserBitcoinCashWalletActions []UserBitcoinCashWalletAction `json:"-"`

	// Referrals
	ReferralPayments []ReferralPayment `json:"-"`

	//Dispute
	Dispute      Dispute      `json:"-"`
	Disputes     []Dispute    `json:"-"`
	DisputeClaim DisputeClaim `json:"-"`

	// Deposit
	Deposit         *Deposit        `json:"-"`
	Deposits        Deposits        `json:"-"`
	DepositsSummary DepositsSummary `json:"-"`

	// Support
	ViewMessageboardThreads []ViewMessageboardThread `json:"-"`
	ViewSupportTicket       ViewSupportTicket        `json:"-"`
	ViewSupportTickets      []ViewSupportTicket      `json:"-"`

	// New Items List page
	ViewSerpItems  []ViewSerpItem  `json:"serp_items,omitempty"`
	ViewSerpStores []ViewSerpStore `json:"serp_stores,omitempty"`

	// Front Page Items Lists
	OfferItemsFold1 []ViewSerpItem  `json:"-"`
	OfferItemsFold2 []ViewSerpItem  `json:"-"`
	OfferItemsFold4 []ViewSerpItem  `json:"-"`
	OfferItemsFold5 []ViewSerpItem  `json:"-"`
	OfferTopVendors []ViewSerpStore `json:"-"`
	OfferNewVendors []ViewSerpStore `json:"-"`
	CountVendors    int             `json:"-,omitempty"`
	CountItems      int             `json:"-,omitempty"`

	// Currency Rates
	CurrencyRates map[string]map[string]float64 `json:"currency_rates"`
	USDBTCRate    float64                       `json:"-"`

	// Wallet page
	BTCFee           float64                `json:"btc_fee,omitempty"`
	BCHFee           float64                `json:"bch_fee,omitempty"`
	Amount           float64                `json:"amount,omitempty"`
	Address          string                 `json:"address,omitempty"`
	Description      string                 `json:"description,omitempty"`
	BTCPaymentResult *apis.BTCPaymentResult `json:"btc_payment_result,omitempty"`
	BCHPaymentResult *apis.BCHPaymentResult `json:"bch_payment_result,omitempty""`
	ETHPaymentResult *apis.ETHPaymentResult `json:"eth_payment_results,omitempty""`

	// Membership Plans
	PriceBTC float64 `json:"-"`
	PriceETH float64 `json:"-"`
	PriceBCH float64 `json:"-"`
	PriceUSD float64 `json:"-"`

	// Advertising
	Advertisings     []Advertising `json:"-"`
	AdvertisingCost  float64       `json:"-"`
	HideAdvertisings bool          `json:"-"`

	// ApiSession
	APISession *APISession `json:"api_session,omitempty"`

	// CSRF Token
	CSRFToken string `json:"-"`
	SiteName  string `json:"-"`
	SiteURL   string `json:"-"`

	// Messageboard Stats
	MessageboardSummaryStats MessageboardStats `json:"-"`
	MessageboardDailyStats   MessageboardStats `json:"-"`

	// Page Statistics
	PageRenderStart time.Time `json:"-"`
	NumberOfQueries int       `json:"-"`
	PageRenderTime  uint64    `json:"-"`
}

func (*Context) ActiveReservation

func (c *Context) ActiveReservation(w web.ResponseWriter, r *web.Request)

func (*Context) AddAdvertisingsPOST

func (c *Context) AddAdvertisingsPOST(w web.ResponseWriter, r *web.Request)

func (*Context) AdminDisputeList

func (c *Context) AdminDisputeList(w web.ResponseWriter, r *web.Request)

func (*Context) AdminListTransactions

func (c *Context) AdminListTransactions(w web.ResponseWriter, r *web.Request)

func (*Context) AdminMessagesShow

func (c *Context) AdminMessagesShow(w web.ResponseWriter, r *web.Request)

func (*Context) AdminMiddleware

func (c *Context) AdminMiddleware(w web.ResponseWriter, r *web.Request, next web.NextMiddlewareFunc)

func (*Context) AdminReviews

func (c *Context) AdminReviews(w web.ResponseWriter, r *web.Request)

func (*Context) AdminTransactionCancel

func (c *Context) AdminTransactionCancel(w web.ResponseWriter, r *web.Request)

func (*Context) AdminTransactionComplete

func (c *Context) AdminTransactionComplete(w web.ResponseWriter, r *web.Request)

func (*Context) AdminTransactionFail

func (c *Context) AdminTransactionFail(w web.ResponseWriter, r *web.Request)

func (*Context) AdminTransactionFreeze

func (c *Context) AdminTransactionFreeze(w web.ResponseWriter, r *web.Request)

func (*Context) AdminTransactionMakePending

func (c *Context) AdminTransactionMakePending(w web.ResponseWriter, r *web.Request)

func (*Context) AdminTransactionRelease

func (c *Context) AdminTransactionRelease(w web.ResponseWriter, r *web.Request)

func (*Context) AdminTransactionUpdateStatus

func (c *Context) AdminTransactionUpdateStatus(w web.ResponseWriter, r *web.Request)

func (*Context) AdminTransactionsRelease

func (c *Context) AdminTransactionsRelease(w web.ResponseWriter, r *web.Request)

func (*Context) AdminUpdateFailedTransactions

func (c *Context) AdminUpdateFailedTransactions(w web.ResponseWriter, r *web.Request)

func (*Context) AdminUsers

func (c *Context) AdminUsers(w web.ResponseWriter, r *web.Request)

func (*Context) AdvertisingMiddleware

func (c *Context) AdvertisingMiddleware(w web.ResponseWriter, r *web.Request, next web.NextMiddlewareFunc)

func (*Context) AuthMiddleware

func (c *Context) AuthMiddleware(w web.ResponseWriter, r *web.Request, next web.NextMiddlewareFunc)

AuthMiddleware is responsible for authenicating user and setting appropriate values to a context

func (*Context) BanUser

func (c *Context) BanUser(w web.ResponseWriter, r *web.Request)

func (*Context) Banned

func (c *Context) Banned(w web.ResponseWriter, r *web.Request)

func (*Context) BitcoinCashWalletActions

func (c *Context) BitcoinCashWalletActions(w web.ResponseWriter, r *web.Request)

func (*Context) BitcoinCashWalletImage

func (c *Context) BitcoinCashWalletImage(w web.ResponseWriter, r *web.Request)

func (*Context) BitcoinCashWalletMiddleware

func (c *Context) BitcoinCashWalletMiddleware(w web.ResponseWriter, r *web.Request, next web.NextMiddlewareFunc)

func (*Context) BitcoinCashWalletRecieve

func (c *Context) BitcoinCashWalletRecieve(w web.ResponseWriter, r *web.Request)

func (*Context) BitcoinCashWalletSendPOST

func (c *Context) BitcoinCashWalletSendPOST(w web.ResponseWriter, r *web.Request)

func (*Context) BitcoinCashWalletSendStep1GET

func (c *Context) BitcoinCashWalletSendStep1GET(w web.ResponseWriter, r *web.Request)

func (*Context) BitcoinCashWalletSendStep1POST

func (c *Context) BitcoinCashWalletSendStep1POST(w web.ResponseWriter, r *web.Request)

func (*Context) BitcoinCashWalletSendStep2GET

func (c *Context) BitcoinCashWalletSendStep2GET(w web.ResponseWriter, r *web.Request)

func (*Context) BitcoinCashWalletSendStep2POST

func (c *Context) BitcoinCashWalletSendStep2POST(w web.ResponseWriter, r *web.Request)

func (*Context) BitcoinCashWalletSendToBitcoinPOST

func (c *Context) BitcoinCashWalletSendToBitcoinPOST(w web.ResponseWriter, r *web.Request)

func (*Context) BitcoinWalletActions

func (c *Context) BitcoinWalletActions(w web.ResponseWriter, r *web.Request)

func (*Context) BitcoinWalletImage

func (c *Context) BitcoinWalletImage(w web.ResponseWriter, r *web.Request)

func (*Context) BitcoinWalletMiddleware

func (c *Context) BitcoinWalletMiddleware(w web.ResponseWriter, r *web.Request, next web.NextMiddlewareFunc)

func (*Context) BitcoinWalletRecieve

func (c *Context) BitcoinWalletRecieve(w web.ResponseWriter, r *web.Request)

func (*Context) BitcoinWalletSendPOST

func (c *Context) BitcoinWalletSendPOST(w web.ResponseWriter, r *web.Request)

func (*Context) BitcoinWalletSendStep1GET

func (c *Context) BitcoinWalletSendStep1GET(w web.ResponseWriter, r *web.Request)

func (*Context) BitcoinWalletSendStep1POST

func (c *Context) BitcoinWalletSendStep1POST(w web.ResponseWriter, r *web.Request)

func (*Context) BitcoinWalletSendStep2GET

func (c *Context) BitcoinWalletSendStep2GET(w web.ResponseWriter, r *web.Request)

func (*Context) BitcoinWalletSendStep2POST

func (c *Context) BitcoinWalletSendStep2POST(w web.ResponseWriter, r *web.Request)

func (*Context) BookPackage

func (c *Context) BookPackage(w web.ResponseWriter, r *web.Request)

func (*Context) BotCheckGET

func (c *Context) BotCheckGET(w web.ResponseWriter, r *web.Request)

func (*Context) BotCheckMiddleware

func (c *Context) BotCheckMiddleware(w web.ResponseWriter, r *web.Request, next web.NextMiddlewareFunc)

func (*Context) BotCheckPOST

func (c *Context) BotCheckPOST(w web.ResponseWriter, r *web.Request)

func (*Context) CancelTransaction

func (c *Context) CancelTransaction(w web.ResponseWriter, r *web.Request)

func (*Context) CompleteTransactionPOST

func (c *Context) CompleteTransactionPOST(w web.ResponseWriter, r *web.Request)

func (*Context) CurrencyMiddleware

func (c *Context) CurrencyMiddleware(w web.ResponseWriter, r *web.Request, next web.NextMiddlewareFunc)

func (*Context) DeleteItem

func (c *Context) DeleteItem(w web.ResponseWriter, r *web.Request)

func (*Context) DeletePackage

func (c *Context) DeletePackage(w web.ResponseWriter, r *web.Request)

func (*Context) DeleteShippingOption

func (c *Context) DeleteShippingOption(w web.ResponseWriter, r *web.Request)

func (*Context) DeleteThread

func (c *Context) DeleteThread(w web.ResponseWriter, r *web.Request)

func (*Context) DisputeClaimMiddleware

func (c *Context) DisputeClaimMiddleware(w web.ResponseWriter, r *web.Request, next web.NextMiddlewareFunc)

func (*Context) DisputeMiddleware

func (c *Context) DisputeMiddleware(w web.ResponseWriter, r *web.Request, next web.NextMiddlewareFunc)

func (*Context) DisputeStatsMiddleware

func (c *Context) DisputeStatsMiddleware(w web.ResponseWriter, r *web.Request, next web.NextMiddlewareFunc)

func (*Context) DownloadApk

func (c *Context) DownloadApk(w web.ResponseWriter, r *web.Request)

func (*Context) DuplicatePackage

func (c *Context) DuplicatePackage(w web.ResponseWriter, r *web.Request)

func (*Context) EditItem

func (c *Context) EditItem(w web.ResponseWriter, r *web.Request)

func (*Context) EditPackageStep1

func (c *Context) EditPackageStep1(w web.ResponseWriter, r *web.Request)

func (*Context) EditPackageStep2

func (c *Context) EditPackageStep2(w web.ResponseWriter, r *web.Request, pkg Package)

func (*Context) EditPackageStep3

func (c *Context) EditPackageStep3(w web.ResponseWriter, r *web.Request, pkg Package)

func (*Context) EditPackageStep4

func (c *Context) EditPackageStep4(w web.ResponseWriter, r *web.Request, pkg Package)

func (*Context) EditPackagesStep2DropAndDropPreorder

func (c *Context) EditPackagesStep2DropAndDropPreorder(w web.ResponseWriter, r *web.Request, pkg Package)

func (*Context) EditThread

func (c *Context) EditThread(w web.ResponseWriter, r *web.Request)

func (*Context) EditThreadPOST

func (c *Context) EditThreadPOST(w web.ResponseWriter, r *web.Request)

func (*Context) EthereumWalletActions

func (c *Context) EthereumWalletActions(w web.ResponseWriter, r *web.Request)

func (*Context) EthereumWalletImage

func (c *Context) EthereumWalletImage(w web.ResponseWriter, r *web.Request)

func (*Context) EthereumWalletMiddleware

func (c *Context) EthereumWalletMiddleware(w web.ResponseWriter, r *web.Request, next web.NextMiddlewareFunc)

func (*Context) EthereumWalletRecieve

func (c *Context) EthereumWalletRecieve(w web.ResponseWriter, r *web.Request)

func (*Context) EthereumWalletSendGET

func (c *Context) EthereumWalletSendGET(w web.ResponseWriter, r *web.Request)

func (*Context) EthereumWalletSendPOST

func (c *Context) EthereumWalletSendPOST(w web.ResponseWriter, r *web.Request)

func (*Context) FreeRestrictions

func (c *Context) FreeRestrictions(w web.ResponseWriter, r *web.Request)

func (*Context) FrontPageItems

func (c *Context) FrontPageItems(w web.ResponseWriter, r *web.Request)

Controllers

func (*Context) GlobalsMiddleware

func (c *Context) GlobalsMiddleware(w web.ResponseWriter, r *web.Request, next web.NextMiddlewareFunc)

GlobalsMiddleware sets global variables to a context

func (*Context) GrantSeller

func (c *Context) GrantSeller(w web.ResponseWriter, r *web.Request)

func (*Context) GrantStaff

func (c *Context) GrantStaff(w web.ResponseWriter, r *web.Request)

func (*Context) Help

func (c *Context) Help(w web.ResponseWriter, r *web.Request)

func (*Context) HelpItem

func (c *Context) HelpItem(w web.ResponseWriter, r *web.Request)

func (*Context) Index

func (c *Context) Index(w web.ResponseWriter, r *web.Request)

func (*Context) ListCurrentTransactionStatuses

func (c *Context) ListCurrentTransactionStatuses(w web.ResponseWriter, r *web.Request)

func (*Context) ListPackages

func (c *Context) ListPackages(w web.ResponseWriter, r *web.Request)

func (*Context) ListSerpItems

func (c *Context) ListSerpItems(w web.ResponseWriter, r *web.Request)

func (*Context) ListSerpVendors

func (c *Context) ListSerpVendors(w web.ResponseWriter, r *web.Request)

func (*Context) LoggerMiddleware

func (c *Context) LoggerMiddleware(rw web.ResponseWriter, req *web.Request, next web.NextMiddlewareFunc)

func (*Context) Login

func (c *Context) Login(user User, w web.ResponseWriter, r *web.Request)

func (*Context) Login1FactorPOST

func (c *Context) Login1FactorPOST(w web.ResponseWriter, r *web.Request)

func (*Context) Login2FactorPOST

func (c *Context) Login2FactorPOST(w web.ResponseWriter, r *web.Request)

func (*Context) LoginAsUser

func (c *Context) LoginAsUser(w web.ResponseWriter, r *web.Request)

func (*Context) LoginGET

func (c *Context) LoginGET(w web.ResponseWriter, r *web.Request)

func (*Context) LoginPGPGet

func (c *Context) LoginPGPGet(w web.ResponseWriter, r *web.Request, userUuid string)

func (*Context) LoginPOST

func (c *Context) LoginPOST(w web.ResponseWriter, r *web.Request)

func (*Context) Logout

func (c *Context) Logout(w web.ResponseWriter, r *web.Request)

func (*Context) MessageImage

func (c *Context) MessageImage(w web.ResponseWriter, r *web.Request)

func (*Context) MessageStatsMiddleware

func (c *Context) MessageStatsMiddleware(w web.ResponseWriter, r *web.Request, next web.NextMiddlewareFunc)

func (*Context) MessagesMiddleware

func (c *Context) MessagesMiddleware(w web.ResponseWriter, r *web.Request, next web.NextMiddlewareFunc)

func (*Context) PackageImage

func (c *Context) PackageImage(w web.ResponseWriter, r *web.Request)

func (*Context) PackageMiddleware

func (c *Context) PackageMiddleware(w web.ResponseWriter, r *web.Request, next web.NextMiddlewareFunc)

PackageMiddleware controls display permissions for package and populates views

func (*Context) PerformanceMeasureMiddleware

func (c *Context) PerformanceMeasureMiddleware(w web.ResponseWriter, r *web.Request, next web.NextMiddlewareFunc)

func (*Context) PreBookPackage

func (c *Context) PreBookPackage(w web.ResponseWriter, r *web.Request)

func (*Context) PrivateStoreItemMiddleware

func (c *Context) PrivateStoreItemMiddleware(w web.ResponseWriter, r *web.Request, next web.NextMiddlewareFunc)

PrivateStoreItemMiddleware controls access rights to item editing

func (*Context) PrivateStoreItemPackageMiddleware

func (c *Context) PrivateStoreItemPackageMiddleware(w web.ResponseWriter, r *web.Request, next web.NextMiddlewareFunc)

SellerItemPackageMiddleware controls access rights to item package editing

func (*Context) PrivateStoreMiddleware

func (c *Context) PrivateStoreMiddleware(w web.ResponseWriter, r *web.Request, next web.NextMiddlewareFunc)

PrivateStoreMiddleware controls access rights to store

func (*Context) PublicStoreItemMiddleware

func (c *Context) PublicStoreItemMiddleware(w web.ResponseWriter, r *web.Request, next web.NextMiddlewareFunc)

VendorItemMiddleware populates all views and relations to display an item

func (*Context) PublicStoreMiddleware

func (c *Context) PublicStoreMiddleware(w web.ResponseWriter, r *web.Request, next web.NextMiddlewareFunc)

PublicStoreMiddleware populates all views and relations to display a store

func (*Context) Referrals

func (c *Context) Referrals(w web.ResponseWriter, r *web.Request)

func (*Context) RegisterGET

func (c *Context) RegisterGET(w web.ResponseWriter, r *web.Request)

func (*Context) RegisterPOST

func (c *Context) RegisterPOST(w web.ResponseWriter, r *web.Request)

func (*Context) ReleaseTransaction

func (c *Context) ReleaseTransaction(w web.ResponseWriter, r *web.Request)

func (*Context) ReplyToThread

func (c *Context) ReplyToThread(w web.ResponseWriter, r *web.Request)

func (*Context) SaveItem

func (c *Context) SaveItem(w web.ResponseWriter, r *web.Request)

func (*Context) SavePackage

func (c *Context) SavePackage(w web.ResponseWriter, r *web.Request)

Save Package Wizard

func (*Context) SavePackageComplete

func (c *Context) SavePackageComplete(w web.ResponseWriter, r *web.Request, pkg Package)

func (*Context) SavePackageStep1

func (c *Context) SavePackageStep1(w web.ResponseWriter, r *web.Request, pkg Package)

func (*Context) SavePackageStep2

func (c *Context) SavePackageStep2(w web.ResponseWriter, r *web.Request, pkg Package)

func (*Context) SavePackageStep2DropAndDropPreorder

func (c *Context) SavePackageStep2DropAndDropPreorder(w web.ResponseWriter, r *web.Request, pkg Package)

func (*Context) SavePackageStep3

func (c *Context) SavePackageStep3(w web.ResponseWriter, r *web.Request, pkg Package)

func (*Context) SavePackageStep4

func (c *Context) SavePackageStep4(w web.ResponseWriter, r *web.Request, pkg Package)

func (*Context) SaveShippingOption

func (c *Context) SaveShippingOption(w web.ResponseWriter, r *web.Request)

func (*Context) SecurityHeadersMiddleware

func (c *Context) SecurityHeadersMiddleware(w web.ResponseWriter, r *web.Request, next web.NextMiddlewareFunc)

func (*Context) SetCurrency

func (c *Context) SetCurrency(w web.ResponseWriter, r *web.Request)

func (*Context) SetLanguage

func (c *Context) SetLanguage(w web.ResponseWriter, r *web.Request)

func (*Context) SetTransactionShippingStatus

func (c *Context) SetTransactionShippingStatus(w web.ResponseWriter, r *web.Request)

func (*Context) SetupPGPViaDecryptionStep1GET

func (c *Context) SetupPGPViaDecryptionStep1GET(w web.ResponseWriter, r *web.Request)

func (*Context) SetupPGPViaDecryptionStep1POST

func (c *Context) SetupPGPViaDecryptionStep1POST(w web.ResponseWriter, r *web.Request)

func (*Context) SetupPGPViaDecryptionStep2POST

func (c *Context) SetupPGPViaDecryptionStep2POST(w web.ResponseWriter, r *web.Request)

func (*Context) ShowFeed

func (c *Context) ShowFeed(w web.ResponseWriter, r *web.Request)

func (*Context) ShowSupportTicketGET

func (c *Context) ShowSupportTicketGET(w web.ResponseWriter, r *web.Request)

func (*Context) ShowSupportTicketPOST

func (c *Context) ShowSupportTicketPOST(w web.ResponseWriter, r *web.Request)

func (*Context) ShowThread

func (c *Context) ShowThread(w web.ResponseWriter, r *web.Request)

func (*Context) ShowTransaction

func (c *Context) ShowTransaction(w web.ResponseWriter, r *web.Request)

func (*Context) ShowTransactionPOST

func (c *Context) ShowTransactionPOST(w web.ResponseWriter, r *web.Request)

func (*Context) StaffMiddleware

func (c *Context) StaffMiddleware(w web.ResponseWriter, r *web.Request, next web.NextMiddlewareFunc)

func (*Context) TargetWebUserPage

func (c *Context) TargetWebUserPage(w web.ResponseWriter, r *web.Request)

func (*Context) TransactionImage

func (c *Context) TransactionImage(w web.ResponseWriter, r *web.Request)

func (*Context) TransactionMiddleware

func (c *Context) TransactionMiddleware(w web.ResponseWriter, r *web.Request, next web.NextMiddlewareFunc)

func (*Context) TransactionStatsMiddleware

func (c *Context) TransactionStatsMiddleware(w web.ResponseWriter, r *web.Request, next web.NextMiddlewareFunc)

func (*Context) UpdateTransaction

func (c *Context) UpdateTransaction(w web.ResponseWriter, r *web.Request)

func (*Context) UserAvatar

func (c *Context) UserAvatar(w web.ResponseWriter, r *web.Request)

func (*Context) UserMiddleware

func (c *Context) UserMiddleware(w web.ResponseWriter, r *web.Request, next web.NextMiddlewareFunc)

PublicStoreMiddleware populates all views and relations to display a store

func (*Context) ViewAPIBitcoinWalletPOST

func (c *Context) ViewAPIBitcoinWalletPOST(w web.ResponseWriter, r *web.Request)

func (*Context) ViewAPIBookPackage

func (c *Context) ViewAPIBookPackage(w web.ResponseWriter, r *web.Request)

func (*Context) ViewAPICategories

func (c *Context) ViewAPICategories(w web.ResponseWriter, r *web.Request)

func (*Context) ViewAPIEthereumWalletPOST

func (c *Context) ViewAPIEthereumWalletPOST(w web.ResponseWriter, r *web.Request)

func (*Context) ViewAPIHotDeals

func (c *Context) ViewAPIHotDeals(w web.ResponseWriter, r *web.Request)

func (*Context) ViewAPIListCountries

func (c *Context) ViewAPIListCountries(w web.ResponseWriter, r *web.Request)

func (*Context) ViewAPIListCurrentTransactionStatuses

func (c *Context) ViewAPIListCurrentTransactionStatuses(w web.ResponseWriter, r *web.Request)

func (*Context) ViewAPIListStores

func (c *Context) ViewAPIListStores(w web.ResponseWriter, r *web.Request)

func (*Context) ViewAPILogin

func (c *Context) ViewAPILogin(user User, w web.ResponseWriter, r *web.Request)

func (*Context) ViewAPILoginPOST

func (c *Context) ViewAPILoginPOST(w web.ResponseWriter, r *web.Request)

func (*Context) ViewAPILoginRegisterGET

func (c *Context) ViewAPILoginRegisterGET(w web.ResponseWriter, r *web.Request)

func (*Context) ViewAPIRegisterPOST

func (c *Context) ViewAPIRegisterPOST(w web.ResponseWriter, r *web.Request)

func (*Context) ViewAPISERP

func (c *Context) ViewAPISERP(w web.ResponseWriter, r *web.Request)

func (*Context) ViewAPISetupPGPViaDecryptionStep1POST

func (c *Context) ViewAPISetupPGPViaDecryptionStep1POST(w web.ResponseWriter, r *web.Request)

func (*Context) ViewAPISetupPGPViaDecryptionStep2POST

func (c *Context) ViewAPISetupPGPViaDecryptionStep2POST(w web.ResponseWriter, r *web.Request)

func (*Context) ViewAPIShowItem

func (c *Context) ViewAPIShowItem(w web.ResponseWriter, r *web.Request)

func (*Context) ViewAPIShowStore

func (c *Context) ViewAPIShowStore(w web.ResponseWriter, r *web.Request)

func (*Context) ViewAPIShowTransactionCancelPOST

func (c *Context) ViewAPIShowTransactionCancelPOST(w web.ResponseWriter, r *web.Request)

func (*Context) ViewAPIShowTransactionGET

func (c *Context) ViewAPIShowTransactionGET(w web.ResponseWriter, r *web.Request)

func (*Context) ViewAPIShowTransactionPOST

func (c *Context) ViewAPIShowTransactionPOST(w web.ResponseWriter, r *web.Request)

func (*Context) ViewAPIShowTransactionReleasePOST

func (c *Context) ViewAPIShowTransactionReleasePOST(w web.ResponseWriter, r *web.Request)

func (*Context) ViewAPIShowTransactionShippedPOST

func (c *Context) ViewAPIShowTransactionShippedPOST(w web.ResponseWriter, r *web.Request)

func (*Context) ViewAPIUserByToken

func (c *Context) ViewAPIUserByToken(w web.ResponseWriter, r *web.Request)

func (*Context) ViewAPIWallet

func (c *Context) ViewAPIWallet(w web.ResponseWriter, r *web.Request)

func (*Context) ViewAboutStore

func (c *Context) ViewAboutStore(w web.ResponseWriter, r *web.Request)

func (*Context) ViewAboutUser

func (c *Context) ViewAboutUser(w web.ResponseWriter, r *web.Request)

func (*Context) ViewAdminListReferralPayments

func (c *Context) ViewAdminListReferralPayments(w web.ResponseWriter, r *web.Request)

func (*Context) ViewCaptchaImage

func (c *Context) ViewCaptchaImage(w web.ResponseWriter, r *web.Request)

func (*Context) ViewCaptchaImageV2

func (c *Context) ViewCaptchaImageV2(w web.ResponseWriter, r *web.Request)

func (*Context) ViewDispute

func (c *Context) ViewDispute(w web.ResponseWriter, r *web.Request)

func (*Context) ViewDisputeClaimAdd

func (c *Context) ViewDisputeClaimAdd(w web.ResponseWriter, r *web.Request)

func (*Context) ViewDisputeClaimGET

func (c *Context) ViewDisputeClaimGET(w web.ResponseWriter, r *web.Request)

func (*Context) ViewDisputeClaimPOST

func (c *Context) ViewDisputeClaimPOST(w web.ResponseWriter, r *web.Request)

func (*Context) ViewDisputeList

func (c *Context) ViewDisputeList(w web.ResponseWriter, r *web.Request)

func (*Context) ViewDisputeSetStatus

func (c *Context) ViewDisputeSetStatus(w web.ResponseWriter, r *web.Request)

func (*Context) ViewDisputeStart

func (c *Context) ViewDisputeStart(w web.ResponseWriter, r *web.Request)

func (*Context) ViewItemCategoryImage

func (c *Context) ViewItemCategoryImage(w web.ResponseWriter, r *web.Request)

func (*Context) ViewItemImage

func (c *Context) ViewItemImage(w web.ResponseWriter, r *web.Request)

func (*Context) ViewListAdvertisings

func (c *Context) ViewListAdvertisings(w web.ResponseWriter, r *web.Request)

func (*Context) ViewListPrivateMessages

func (c *Context) ViewListPrivateMessages(w web.ResponseWriter, r *web.Request)

func (*Context) ViewListStoreItems

func (c *Context) ViewListStoreItems(w web.ResponseWriter, r *web.Request)

func (*Context) ViewListSupportTickets

func (c *Context) ViewListSupportTickets(w web.ResponseWriter, r *web.Request)

func (*Context) ViewMessageReportPOST

func (c *Context) ViewMessageReportPOST(w web.ResponseWriter, r *web.Request)

func (*Context) ViewRecoverGET

func (c *Context) ViewRecoverGET(w web.ResponseWriter, r *web.Request)

func (*Context) ViewRecoverPOST

func (c *Context) ViewRecoverPOST(w web.ResponseWriter, r *web.Request)

func (*Context) ViewShowDeposit

func (c *Context) ViewShowDeposit(w web.ResponseWriter, r *web.Request)

func (*Context) ViewShowDepositAddGET

func (c *Context) ViewShowDepositAddGET(w web.ResponseWriter, r *web.Request)

func (*Context) ViewShowDepositAddPOST

func (c *Context) ViewShowDepositAddPOST(w web.ResponseWriter, r *web.Request)

func (*Context) ViewShowItem

func (c *Context) ViewShowItem(w web.ResponseWriter, r *web.Request)

func (*Context) ViewShowMessageboardImage

func (c *Context) ViewShowMessageboardImage(w web.ResponseWriter, r *web.Request)

func (*Context) ViewShowPrivateMessageGET

func (c *Context) ViewShowPrivateMessageGET(w web.ResponseWriter, r *web.Request)

func (*Context) ViewShowPrivateMessagePOST

func (c *Context) ViewShowPrivateMessagePOST(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStaff

func (c *Context) ViewStaff(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStaffAdvertisings

func (c *Context) ViewStaffAdvertisings(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStaffCategories

func (c *Context) ViewStaffCategories(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStaffCategoriesDelete

func (c *Context) ViewStaffCategoriesDelete(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStaffCategoriesEditGET

func (c *Context) ViewStaffCategoriesEditGET(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStaffCategoriesEditPOST

func (c *Context) ViewStaffCategoriesEditPOST(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStaffEditNewsGET

func (c *Context) ViewStaffEditNewsGET(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStaffEditNewsPOST

func (c *Context) ViewStaffEditNewsPOST(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStaffListDeposits

func (c *Context) ViewStaffListDeposits(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStaffListDisputes

func (c *Context) ViewStaffListDisputes(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStaffListItems

func (c *Context) ViewStaffListItems(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStaffListReportedMessages

func (c *Context) ViewStaffListReportedMessages(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStaffListStaff

func (c *Context) ViewStaffListStaff(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStaffListSupportTickets

func (c *Context) ViewStaffListSupportTickets(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStaffListVendors

func (c *Context) ViewStaffListVendors(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStaffListWarnings

func (c *Context) ViewStaffListWarnings(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStaffShowReportedMessage

func (c *Context) ViewStaffShowReportedMessage(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStaffStats

func (c *Context) ViewStaffStats(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStaffStoreAdminActions

func (c *Context) ViewStaffStoreAdminActions(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStaffStorePayments

func (c *Context) ViewStaffStorePayments(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStaffStoreToggleAllowToSell

func (c *Context) ViewStaffStoreToggleAllowToSell(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStaffStoreToggleBronzeAccount

func (c *Context) ViewStaffStoreToggleBronzeAccount(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStaffStoreToggleFreeAccount

func (c *Context) ViewStaffStoreToggleFreeAccount(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStaffStoreToggleGoldAccount

func (c *Context) ViewStaffStoreToggleGoldAccount(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStaffStoreToggleSilverAccount

func (c *Context) ViewStaffStoreToggleSilverAccount(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStaffStoreToggleSuspend

func (c *Context) ViewStaffStoreToggleSuspend(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStaffStoreToggleTrusted

func (c *Context) ViewStaffStoreToggleTrusted(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStaffUserAdminActions

func (c *Context) ViewStaffUserAdminActions(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStaffUserFinance

func (c *Context) ViewStaffUserFinance(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStaffUserPayments

func (c *Context) ViewStaffUserPayments(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStaffUserTickets

func (c *Context) ViewStaffUserTickets(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStaffVendorVerificationThreadGET

func (c *Context) ViewStaffVendorVerificationThreadGET(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStaffVendorVerificationThreadPOST

func (c *Context) ViewStaffVendorVerificationThreadPOST(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStatsBCHTradeAmountGraph

func (c *Context) ViewStatsBCHTradeAmountGraph(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStatsBTCTradeAmountGraph

func (c *Context) ViewStatsBTCTradeAmountGraph(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStatsETHTradeAmountGraph

func (c *Context) ViewStatsETHTradeAmountGraph(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStatsNumberOfTransactionsGraph

func (c *Context) ViewStatsNumberOfTransactionsGraph(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStatsNumberOfUsersGraph

func (c *Context) ViewStatsNumberOfUsersGraph(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStatsNumberOfVendorsGraph

func (c *Context) ViewStatsNumberOfVendorsGraph(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStoreReviews

func (c *Context) ViewStoreReviews(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStoreSettingsGET

func (c *Context) ViewStoreSettingsGET(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStoreSettingsPOST

func (c *Context) ViewStoreSettingsPOST(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStoreWarningUpdateStatusPOST

func (c *Context) ViewStoreWarningUpdateStatusPOST(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStoreWarningsGET

func (c *Context) ViewStoreWarningsGET(w web.ResponseWriter, r *web.Request)

func (*Context) ViewStoreWarningsPOST

func (c *Context) ViewStoreWarningsPOST(w web.ResponseWriter, r *web.Request)

func (*Context) ViewUpdateTicketStatusPOST

func (c *Context) ViewUpdateTicketStatusPOST(w web.ResponseWriter, r *web.Request)

func (*Context) ViewUserSettingsGET

func (c *Context) ViewUserSettingsGET(w web.ResponseWriter, r *web.Request)

func (*Context) ViewUserSettingsPOST

func (c *Context) ViewUserSettingsPOST(w web.ResponseWriter, r *web.Request)

func (*Context) ViewVerificationAgreementGET

func (c *Context) ViewVerificationAgreementGET(w web.ResponseWriter, r *web.Request)

func (*Context) ViewVerificationAgreementPOST

func (c *Context) ViewVerificationAgreementPOST(w web.ResponseWriter, r *web.Request)

TODO: reimplement for Store model

func (*Context) ViewVerificationEncryptionGET

func (c *Context) ViewVerificationEncryptionGET(w web.ResponseWriter, r *web.Request)

func (*Context) ViewVerificationPlanGET

func (c *Context) ViewVerificationPlanGET(w web.ResponseWriter, r *web.Request)

func (*Context) ViewVerificationPlanPurchaseGET

func (c *Context) ViewVerificationPlanPurchaseGET(w web.ResponseWriter, r *web.Request)

func (*Context) ViewVerificationPlanPurchasePOST

func (c *Context) ViewVerificationPlanPurchasePOST(w web.ResponseWriter, r *web.Request)

func (*Context) ViewVerificationThreadGET

func (c *Context) ViewVerificationThreadGET(w web.ResponseWriter, r *web.Request)

func (*Context) ViewVerificationThreadPOST

func (c *Context) ViewVerificationThreadPOST(w web.ResponseWriter, r *web.Request)

TODO: reimplement for a Store model

func (*Context) ViewWithdrawDepositGET

func (c *Context) ViewWithdrawDepositGET(w web.ResponseWriter, r *web.Request)

func (*Context) ViewWithdrawDepositPOST

func (c *Context) ViewWithdrawDepositPOST(w web.ResponseWriter, r *web.Request)

func (*Context) ViewsAuthMobileAuthImage

func (c *Context) ViewsAuthMobileAuthImage(w web.ResponseWriter, r *web.Request)

func (*Context) WalletsMiddleware

func (c *Context) WalletsMiddleware(w web.ResponseWriter, r *web.Request, next web.NextMiddlewareFunc)

type CountStatsItem

type CountStatsItem struct {
	Count int
}

type Country

type Country struct {
	NameEn string `json:"name_en" gorm:"primary_key"`
}

func FindCountryByNameEn

func FindCountryByNameEn(name string) (*Country, error)

func GetAllCountries

func GetAllCountries() []Country

func GetAllEnglishCountryNamesFromCities

func GetAllEnglishCountryNamesFromCities() []Country

func (Country) Remove

func (i Country) Remove() error

func (Country) Save

func (itm Country) Save() error

func (Country) SaveToDatabase

func (itm Country) SaveToDatabase() error

func (Country) Validate

func (r Country) Validate() error

type CurrentTransactionStatus

type CurrentTransactionStatus struct {
	Amount                float64   `json:"amount,omitempty"`
	BuyerUsername         string    `json:"buyer_username,omitempty"`
	CreatedAt             time.Time `json:"created_at,omitempty"`
	CurrentAmount         float64   `json:"current_amount,omitempty"`
	CurrentShippingStatus string    `json:"current_shipping_status,omitempty"`
	CurrentStatus         string    `json:"current_status,omitempty"`
	Description           string    `json:"description,omitempty"`
	DisputeUuid           string    `json:"dispute_uuid,omitempty"`
	NumberOfMessages      int       `json:"number_of_messages,omitempty"`
	Type                  string    `json:"type,omitempty"`
	UpdatedAt             time.Time `json:"updated_at,omitempty"`
	Uuid                  string    `json:"uuid,omitempty"`
	Storename             string    `json:"storename,omitempty"`
}

func (CurrentTransactionStatus) ViewCurrentTransactionStatus

func (ts CurrentTransactionStatus) ViewCurrentTransactionStatus(lang string) ViewCurrentTransactionStatus

type CurrentTransactionStatuses

type CurrentTransactionStatuses []CurrentTransactionStatus

func FindCurrentTransactionStatusesForBuyer

func FindCurrentTransactionStatusesForBuyer(userUuid, status string, filterFailed bool, page, pageSize int,
) CurrentTransactionStatuses

func FindCurrentTransactionStatusesForStore

func FindCurrentTransactionStatusesForStore(storeUuid, status, shippingStatus string, filterFailed bool, page, pageSize int,
) CurrentTransactionStatuses

func (CurrentTransactionStatuses) ViewCurrentTransactionStatuses

func (ctss CurrentTransactionStatuses) ViewCurrentTransactionStatuses(lang string) []ViewCurrentTransactionStatus

type Deposit

type Deposit struct {
	Uuid      string `json:"uuid" gorm:"primary_key"`
	StoreUuid string `json:"store_uuid,omitempty"`

	Currency     string  `json:"currency,omitempty"`
	CurrencyRate float64 `json:"currency_rate,omitempty"`
	FiatValue    float64 `json:"value,omitempty"`

	Crypto      string  `json:"crypto,omitempty"`
	Address     string  `json:"address,omitempty"`
	CryptoValue float64 `json:"crypto_value,omitempty"`

	CreatedAt *time.Time `json:"created_at,omitempty"`
	UpdatedAt *time.Time `json:"updated_at,omitempty"`
	DeletedAt *time.Time `json:"deleted_at,omitempty"`

	History []DepositHistory `json:"-"`
	Store   Store            `json:"-"`
}

func CreateDeposit

func CreateDeposit(storeUuid string,
	currency string, value float64,
	crypto string, cryptoValue float64, currencyRate float64, address string,
) (Deposit, error)

func FindDepositByAddress

func FindDepositByAddress(address string) (*Deposit, error)

func FindDepositByUuid

func FindDepositByUuid(uuid string) (*Deposit, error)

func (Deposit) CurrentCryptoValue

func (d Deposit) CurrentCryptoValue() float64

func (Deposit) Remove

func (d Deposit) Remove() error

func (Deposit) Save

func (d Deposit) Save() error

func (Deposit) SaveToDatabase

func (d Deposit) SaveToDatabase() error

func (Deposit) Update

func (d Deposit) Update() error

func (Deposit) Validate

func (d Deposit) Validate() error

func (Deposit) Withdraw

func (d Deposit) Withdraw() error

type DepositHistory

type DepositHistory struct {
	Uuid        string `json:"uuid" gorm:"primary_key"`
	DepositUuid string `json:"deposit_uuid,omitempty"`

	Action string  `json:"currency,omitempty"`
	Value  float64 `json:"amount,omitempty"`

	CreatedAt *time.Time `json:"created_at,omitempty"`
	UpdatedAt *time.Time `json:"updated_at,omitempty"`
	DeletedAt *time.Time `json:"deleted_at,omitempty"`
}

func CreateDepositHistoryRecord

func CreateDepositHistoryRecord(depositUuid string, value float64, action string) (DepositHistory, error)

func (DepositHistory) Remove

func (d DepositHistory) Remove() error

func (DepositHistory) Save

func (d DepositHistory) Save() error

func (DepositHistory) SaveToDatabase

func (d DepositHistory) SaveToDatabase() error

func (DepositHistory) Validate

func (d DepositHistory) Validate() error

type Deposits

type Deposits []Deposit

func FindAllDeposits

func FindAllDeposits() Deposits

func FindDepositsByStoreUuid

func FindDepositsByStoreUuid(uuid string) Deposits

func (Deposits) DepositsSummary

func (deposits Deposits) DepositsSummary() DepositsSummary

type DepositsSummary

type DepositsSummary map[string]float64

type Dispute

type Dispute struct {
	Uuid string `json:"uuid" gorm:"primary_key"`

	Status string `json:"status" sql:"index"`

	ResolverUserUuid string `json:"resolver_user_uuid" sql:"index"`
	ResolverUser     User   `json:"-"`

	DisputeClaims []DisputeClaim `json:"dispute_claims"`

	// ORM timestamps
	CreatedAt *time.Time `json:"created_at"`
	UpdatedAt *time.Time `json:"updated_at"`
	DeletedAt *time.Time `json:"deleted_at"`
}

func FindDisputeByID

func FindDisputeByID(disputeUuid string) (*Dispute, error)

func FindDisputesForUserUuid

func FindDisputesForUserUuid(userUuid string) []Dispute

func (Dispute) Close

func (dispute Dispute) Close(userUuid string) error

func (Dispute) Open

func (dispute Dispute) Open(userUuid string) error

func (Dispute) Remove

func (i Dispute) Remove() error

func (Dispute) ResolveToBuyer

func (dispute Dispute) ResolveToBuyer(userUuid string) error

func (Dispute) ResolveToVendor

func (dispute Dispute) ResolveToVendor(userUuid string) error

func (Dispute) Save

func (itm Dispute) Save() error

func (Dispute) SaveToDatabase

func (itm Dispute) SaveToDatabase() error

func (Dispute) Transaction

func (d Dispute) Transaction() (*Transaction, error)

func (Dispute) Validate

func (r Dispute) Validate() error

type DisputeClaim

type DisputeClaim struct {
	gorm.Model

	Claim  string `json:"claim"`
	Status string `json:"status" sql:"index"`

	DisputeUuid string  `json:"dispute_uuid" sql:"index"`
	Dispute     Dispute `json:"-"`
}

func CreateDisputeClaim

func CreateDisputeClaim(dispute Dispute, claim string) (*DisputeClaim, error)

func FindDisputeClaimByID

func FindDisputeClaimByID(disputeId uint) (*DisputeClaim, error)

func (DisputeClaim) Close

func (itm DisputeClaim) Close() error

func (DisputeClaim) Open

func (itm DisputeClaim) Open() error

func (DisputeClaim) Remove

func (i DisputeClaim) Remove() error

func (DisputeClaim) ResolveToBuyer

func (itm DisputeClaim) ResolveToBuyer() error

func (DisputeClaim) ResolveToVendor

func (itm DisputeClaim) ResolveToVendor() error

func (DisputeClaim) Save

func (itm DisputeClaim) Save() error

func (DisputeClaim) SaveToDatabase

func (itm DisputeClaim) SaveToDatabase() error

func (DisputeClaim) String

func (itm DisputeClaim) String() string

func (DisputeClaim) Validate

func (r DisputeClaim) Validate() error

type EthereumTransaction

type EthereumTransaction struct {
	Uuid   string  `json:"uuid" gorm:"primary_key"`
	Amount float64 `json:"amount"`
}

func CreateEthereumTransaction

func CreateEthereumTransaction(
	itemPackage Package,
	buyer User,
	tp string,
	quantity int,
	shippingPrice float64,
) (EthereumTransaction, error)

func FindEthereumTransactionByUuid

func FindEthereumTransactionByUuid(uuid string) (*EthereumTransaction, error)

func (EthereumTransaction) Cancel

func (bt EthereumTransaction) Cancel(t Transaction, comment, userUuid string) error

func (EthereumTransaction) Release

func (bt EthereumTransaction) Release(t Transaction, comment, userUuid string) error

func (EthereumTransaction) Save

func (t EthereumTransaction) Save() error

func (EthereumTransaction) UpdateTransactionStatus

func (bt EthereumTransaction) UpdateTransactionStatus(t Transaction) error

type ExtendedUser

type ExtendedUser struct {
	User

	InviterUsername string
	InviterCount    string

	BitcoinBalance                float64
	BitcoinUnconfirmedBalance     float64
	BitcoinCashBalance            float64
	BitcoinCashUnconfirmedBalance float64
	EthereumBalance               float64
}

ExtendedUser is an optimization to retrieve User and associated information from db without extra requests

func FindStaffMemebers

func FindStaffMemebers() ([]ExtendedUser, error)

func GetExtendedUsersPage

func GetExtendedUsersPage(page, pageSize int, orderBy, query string) []ExtendedUser

func GetInvitedUserPage

func GetInvitedUserPage(inviterUuid string, page, pageSize int) []ExtendedUser

func (ExtendedUser) ViewExtendedUser

func (u ExtendedUser) ViewExtendedUser(lang string) ViewExtendedUser

type ExtendedUsers

type ExtendedUsers []ExtendedUser

func (ExtendedUsers) ViewExtendedUsers

func (users ExtendedUsers) ViewExtendedUsers(lang string) []ViewExtendedUser

type FeedItem

type FeedItem struct {
	Uuid        string `json:"uuid" gorm:"primary_key"`
	UserUuid    string `json:"user_uuid" sql:"index"`
	Type        string `json:"type" sql:"index"`
	ForeignUuid string `json:"foreign_uuid" sql:"index"`
	Action      string `json:"action"`

	User         User         `json:"-"`
	RatingReview RatingReview `json:"-"`
	Thread       Thread       `json:"-"`
	Transaction  Transaction  `json:"-"`
	Message      Message      `json:"-"`
	Item         Item         `json:"-"`
	OtherUser    User

	CreatedAt *time.Time `json:"created_at" sql:"index"`
	UpdatedAt *time.Time `json:"updated_at" sql:"index"`
	DeletedAt *time.Time `json:"deleted_at" sql:"index"`
}

func CreateFeedItem

func CreateFeedItem(
	userUuid string,
	actionType string,
	action string,
	foreignUuid string,
) (*FeedItem, error)

func FindAllFeedItems

func FindAllFeedItems() []FeedItem

func FindFeedItemByUuid

func FindFeedItemByUuid(uuid string) (*FeedItem, error)

func (*FeedItem) Remove

func (itm *FeedItem) Remove() error

func (FeedItem) Save

func (itm FeedItem) Save() error

func (FeedItem) SaveToDatabase

func (itm FeedItem) SaveToDatabase() error

func (FeedItem) Validate

func (itm FeedItem) Validate() error

func (FeedItem) ViewFeedItem

func (m FeedItem) ViewFeedItem(lang string) ViewFeedItem

type FeedItems

type FeedItems []FeedItem

func CacheFillPublicFeedItems

func CacheFillPublicFeedItems() FeedItems

func CacheFillStaffFeedItems

func CacheFillStaffFeedItems() FeedItems

func CacheGetPublicFeedItems

func CacheGetPublicFeedItems() FeedItems

func CacheGetStaffFeedItems

func CacheGetStaffFeedItems() FeedItems

func FindRecentPublicFeedItems

func FindRecentPublicFeedItems() FeedItems

func FindRecentStaffFeedItems

func FindRecentStaffFeedItems() FeedItems

func (FeedItems) PopulateRelations

func (itms FeedItems) PopulateRelations() FeedItems

func (FeedItems) ViewFeedItems

func (itms FeedItems) ViewFeedItems(lang, section string) []ViewFeedItem

type GroupPackage

type GroupPackage struct {
	PackageName string `json:"package_name"`

	CountryNameEnShippingFrom string           `json:"country_shipping_from"`
	CountryNameEnShippingTo   string           `json:"country_shipping_to"`
	DropCityId                int              `json:"drop_city_id"`
	GeoCity                   City             `json:"drop_city"`
	CityMetroStation          CityMetroStation `json:"metro_station"`

	PriceAUDStr string  `json:"price_aud"`
	PriceBTCStr string  `json:"price_btc"`
	PriceBCHStr string  `json:"price_bch"`
	PriceETHStr string  `json:"price_eth"`
	PriceEURStr string  `json:"price_eur"`
	PriceGBPStr string  `json:"price_gbp"`
	PriceRUBStr string  `json:"price_rub"`
	PriceUSDStr string  `json:"price_usd"`
	PriceBTC    float64 `json:"-"`
	Category    string  `json:"-"`
	Hash        string  `json:"hash"`
	ItemName    string  `json:"item_name"`
	ItemUuid    string  `json:"item_uuid"`
	Score       float64 `json:"score"`
	Type        string  `json:"type"`
	Storename   string  `json:"-"`
}

func (GroupPackage) Sha256

func (gas GroupPackage) Sha256() string

type GroupPackagesByPrice

type GroupPackagesByPrice []GroupPackage

func (GroupPackagesByPrice) Len

func (a GroupPackagesByPrice) Len() int

func (GroupPackagesByPrice) Less

func (a GroupPackagesByPrice) Less(i, j int) bool

func (GroupPackagesByPrice) Swap

func (a GroupPackagesByPrice) Swap(i, j int)

type GroupedPackageKey

type GroupedPackageKey struct {
	Type                      string
	CountryNameEnShippingFrom string
	CountryNameEnShippingTo   string
	City                      string
	CityMetroStation          string
}

type GroupedPackages

type GroupedPackages map[GroupPackage]Packages

func (GroupedPackages) GetGroupPackagesByTypeOriginDestination

func (pcks GroupedPackages) GetGroupPackagesByTypeOriginDestination() map[GroupedPackageKey][]GroupPackage

func (GroupedPackages) GetPackageByHash

func (groups GroupedPackages) GetPackageByHash(hash string) (*Package, error)

func (GroupedPackages) GetPackagesPage

func (pcks GroupedPackages) GetPackagesPage(pagenumber, pagesize int) ([]GroupPackage, int)

type Item

type Item struct {
	Uuid           string `json:"uuid" gorm:"primary_key"`
	Name           string `json:"name"`
	Description    string `json:"description" sql:"size:4096"`
	ItemCategoryID int    `json:"category_id" gorm:"index"`
	NumberOfSales  int    `json:"number_of_sales" gorm:"index"`
	NumberOfViews  int    `json:"number_of_views" gorm:"index"`

	ReviewerUser  User           `json:"-" gorm:"ForeignKey:ReviewedByUserUuid"`
	ItemCategory  ItemCategory   `json:"-"`
	Packages      []Package      `json:"-"`
	RatingReviews []RatingReview `json:"-"`

	ReviewedByUserUuid string     `json:"-"`
	ReviewedAt         *time.Time `json:"-"`

	// Converted to Stores
	StoreUuid string `json:"-"`
	Store     Store  `json:"-"`

	CreatedAt *time.Time `json:"-" gorm:"index"`
	UpdatedAt *time.Time `json:"-" gorm:"index"`
	DeletedAt *time.Time `json:"-" gorm:"index"`
}

func FindItemByUuid

func FindItemByUuid(uuid string) (*Item, error)

func (Item) CalculateScore

func (i Item) CalculateScore() float64

func (Item) ImageBase32

func (item Item) ImageBase32() string

func (Item) Index

func (i Item) Index() error

func (Item) PackagesWithoutReservation

func (item Item) PackagesWithoutReservation() Packages

func (Item) Remove

func (i Item) Remove() error

func (Item) Save

func (itm Item) Save() error

func (Item) SaveToDatabase

func (itm Item) SaveToDatabase() error

func (Item) Url

func (i Item) Url() string

func (*Item) Validate

func (i *Item) Validate() error

func (Item) ViewItem

func (item Item) ViewItem(lang string) ViewItem

type ItemCategories

type ItemCategories []ItemCategory

func CacheFillCategories

func CacheFillCategories(packageType, countryNameEnTo, countryNameEnFrom string, cityId int) ItemCategories

func CacheGetCategories

func CacheGetCategories(packageType, countryNameEnTo, countryNameEnFrom string, cityId int) ItemCategories

func FindAllCategories

func FindAllCategories() ItemCategories

func FindCategoriesByParentID

func FindCategoriesByParentID(id int) (ItemCategories, error)

func FindNonEmptyCategories

func FindNonEmptyCategories(packageType, countryNameEnTo, countryNameEnFrom string, cityId int) ItemCategories

func (ItemCategories) ViewCategories

func (cc ItemCategories) ViewCategories(lang string) []ViewItemCategory

type ItemCategory

type ItemCategory struct {
	ID            int            `json:"id" gorm:"primary_key"`
	ParentID      int            `json:"parent_id"`
	Icon          string         `json:"icon"`
	NameEn        string         `json:"price_en"`
	NameRu        string         `json:"name_ru"`
	NameDe        string         `json:"name_de"`
	NameEs        string         `json:"name_es"`
	NameFr        string         `json:"name_fr"`
	NameRs        string         `json:"name_rs"`
	NameTr        string         `json:"name_tr"`
	ItemCount     int            `gorm:"-" sql:"-" json:"item_count"`
	UserCount     int            `gorm:"-" sql:"-" json:"user_count"`
	Hidden        bool           `json:"hidden"`
	Subcategories ItemCategories `json:"-"`
}

func FindCategoryByID

func FindCategoryByID(id int) (*ItemCategory, error)

func FindCategoryByNameEn

func FindCategoryByNameEn(name string) (*ItemCategory, error)

func (ItemCategory) FindSubcategories

func (ic ItemCategory) FindSubcategories() ItemCategories

func (ItemCategory) ParentCategory

func (ic ItemCategory) ParentCategory() *ItemCategory

func (ItemCategory) Remove

func (cat ItemCategory) Remove() error

func (ItemCategory) Save

func (cat ItemCategory) Save() error

func (*ItemCategory) SaveToDatabase

func (cat *ItemCategory) SaveToDatabase() error

func (ItemCategory) String

func (ic ItemCategory) String() string

func (ItemCategory) Validate

func (cat ItemCategory) Validate() error

func (ItemCategory) ViewItemCategory

func (c ItemCategory) ViewItemCategory(lang string) ViewItemCategory

type ItemCaterogiesByCount

type ItemCaterogiesByCount ItemCategories

func (ItemCaterogiesByCount) Len

func (s ItemCaterogiesByCount) Len() int

func (ItemCaterogiesByCount) Less

func (s ItemCaterogiesByCount) Less(i, j int) bool

func (ItemCaterogiesByCount) Swap

func (s ItemCaterogiesByCount) Swap(i, j int)

type ItemWithCategory

type ItemWithCategory struct {
	Item
	ParentCategoryEn string `json:"parent_category_en"`
	CategoryEn       string `json:"category_en"`
}

type Items

type Items []Item

func FindItemsForStore

func FindItemsForStore(uuid string) Items

func FindUnreviewedItems

func FindUnreviewedItems(page, pageSize int) Items

func GetItemsForIndexing

func GetItemsForIndexing() Items

func (Items) ViewItems

func (items Items) ViewItems(lang string) []ViewItem

func (Items) Where

func (itms Items) Where(fnc func(Item) bool) Items

type Localization

type Localization struct {
	AboutStore    LocalizationAboutStore   `json:"aboutstore"`
	AboutUser     LocalizationAboutUser    `json:"aboutuser"`
	Auth          LocalizationAuth         `json:"auth"`
	Feed          LocalizationFeed         `json:"feed"`
	Items         LocalizationItems        `json:"items"`
	Layout        LocalizationLayout       `json:"layout"`
	LeftMenu      LocalizationLeftMenu     `json:"leftmenu"`
	Messageboard  LocalizationMessageboard `json:"messageboard"`
	Orders        LocalizationOrders       `json:"orders"`
	Rating        LocalizationRating       `json:"rating"`
	Referrals     LocalizationReferrals    `json:"referrals"`
	Settings      LocalizationSettings     `json:"settings"`
	UserCard      LocaliztionUserCard      `json:"usercard"`
	Wallet        LocalizationWallet       `json:"wallet"`
	Index         LocalizationIndex        `json:"index"`
	Dispute       LocalizationDispute      `json:"dispute"`
	Staff         LocalizationStaff        `json:"staff"`
	Verification  LocalizationVerification `json:"verification"`
	Greeting      string                   `json:"greeting"`
	TrustedVendor string                   `json:"trustedvendor"`
}

func GetLocalization

func GetLocalization(lang string) Localization

func ReadLocalizationFile

func ReadLocalizationFile(file string) Localization

type LocalizationAboutStore

type LocalizationAboutStore struct {
	Staff                 string `json:"staff"`
	About                 string `json:"about"`
	Statistics            string `json:"statistics"`
	Agreement             string `json:"agreement"`
	ContactInformation    string `json:"contactinformation"`
	AboutEmpty            string `json:"aboutempty"`
	AboutEmptyDescription string `json:"aboutemptydescription"`
	ShippingOptions       string `json:"shippingoptions"`
	Name                  string `json:"name"`
	PriceUSD              string `json:"priceusd"`
}

type LocalizationAboutUser

type LocalizationAboutUser struct {
	About                 string `json:"about"`
	Statistics            string `json:"statistics"`
	ContactInformation    string `json:"contactinformation"`
	AboutEmpty            string `json:"aboutempty"`
	AboutEmptyDescription string `json:"aboutemptydescription"`
}

type LocalizationAuth

type LocalizationAuth struct {
	Username                    string `json:"username"`
	Passphrase                  string `json:"passphrase"`
	RepeatPassphrase            string `json:"repeatpassphrase"`
	InviteCode                  string `json:"invitecode"`
	InviteCodeDescription       string `json:"invitecodedescription"`
	Buyer                       string `json:"buyer"`
	Vendor                      string `json:"vendor"`
	Captcha                     string `json:"captcha"`
	Login                       string `json:"login"`
	Register                    string `json:"register"`
	LoginWithPGP                string `json:"loginwithpgp"`
	Error                       string `json:"error"`
	EncryptedMessage            string `json:"encryptedmessage"`
	EncryptedMessageDescription string `json:"encryptedmessagedescription"`
	DecryptedMessage            string `json:"decryptedmessage"`
	UsernameDescription         string `json:"usernamedescription"`
	PassphraseDescription       string `json:"passphrasedescription"`
	VerifyAccount               string `json:"verifyaccount"`
	MyAccount                   string `json:"myaccount"`
}

type LocalizationDispute

type LocalizationDispute struct {
	AddClaim              string `json:"addclaim"`
	Claim                 string `json:"claim"`
	Claims                string `json:"claims"`
	Dispute               string `json:"dispute"`
	Disputes              string `json:"disputes"`
	NoDisputes            string `json:"nodisputes"`
	NoDisputesDescription string `json:"nodisputesdescription"`
}

type LocalizationFeed

type LocalizationFeed struct {
	FullDiscussion string `json:"fulldiscussion"`
	All            string `json:"all"`
}

type LocalizationIndex

type LocalizationIndex struct {
	WelcomeToTochka              string `json:"welcometotochka"`
	WelcomeToTochkaDescription   string `json:"welcometotochkadescription"`
	EscrowAndMultisig            string `json:"escrowandmultisig"`
	EscrowAndMultisigDescription string `json:"escrowandmultisigdescription"`
	ActiveCommunity              string `json:"activecommunity"`
	ActiveCommunityDescription   string `json:"activecommunitydescription"`
	Support                      string `json:"support"`
	SupportDescription           string `json:"supportdescription"`
	Vendors                      string `json:"vendors"`
	VendorsDescription           string `json:"vendorsdescription"`
	Referrals                    string `json:"referrals"`
	ReferralsDescription         string `json:"referralsdescription"`
}

type LocalizationItems

type LocalizationItems struct {
	About        string `json:"about"`
	AddItem      string `json:"additem"`
	AddPackage   string `json:"addpackage"`
	AllCountries string `json:"allcountries"`
	AllTypes     string `json:"alltypes"`
	Categories   string `json:"categories"`
	Category     string `json:"category"`
	City         string `json:"city"`
	Currency     string `json:"currency"`
	DateAdded    string `json:"dateadded"`
	Delete       string `json:"delete"`
	DeleteItem   string `json:"deleteitem"`
	DeliveryType string `json:"deliverytype"`
	Description  string `json:"description"`
	Digital      string `json:"digital"`
	Drop         string `json:"drop"`
	DropPreorder string `json:"droppreorder"`
	Duplicate    string `json:"duplicate"`
	Edit         string `json:"edit"`
	EditItem     string `json:"edititem"`
	EditPackages string `json:"editpackages"`
	Error        string `json:"error"`
	Filters      string `json:"filters"`
	ResetFilters string `json:"ResetFilters"`
	Image        string `json:"image"`
	LookingFor   string `json:"lookingfor"`
	Mail         string `json:"mail"`
	Name         string `json:"name"`
	Next         string `json:"next"`
	NoItems      string `json:"noitems"`
	NoReviews    string `json:"noreviews"`
	OutOfStock   string `json:"outofstock"`
	PackageName  string `json:"packagename"`
	Popularity   string `json:"popularity"`
	Price        string `json:"price"`
	PriceBTC     string `json:"pricebtc"`
	Purchase     string `json:"purchase"`
	Rating       string `json:"rating"`
	Reviews      string `json:"reviews"`
	Save         string `json:"save"`
	Search       string `json:"search"`
	ShippingFrom string `json:"shippingfrom"`
	ShippingTo   string `json:"shippingto"`
	SortBy       string `json:"sortby"`
	Subcategory  string `json:"subcategory"`
	Type         string `json:"type"`
	SalesAmount  string `json:"salesamount"`
	SalesVolume  string `json:"salesvolume"`
}

type LocalizationLayout

type LocalizationLayout struct {
	BTCRates     string `json:"btcrates"`
	BuyerGuide   string `json:"buyerguide"`
	Help         string `json:"help"`
	Language     string `json:"language"`
	Login        string `json:"login"`
	Marketplace  string `json:"marketplace"`
	Messageboard string `json:"messageboard"`
	MyProfile    string `json:"myprofile"`
	PremiumAd    string `json:"premiumad"`
	Register     string `json:"register"`
	Rules        string `json:"rules"`
	Sections     string `json:"sections"`
	Settings     string `json:"settings"`
	Support      string `json:"support"`
	Tochka       string `json:"tochka"`
	VendorGuide  string `json:"vendorguide"`
	Vendors      string `json:"vendors"`
	Wallet       string `json:"wallet"`
}

type LocalizationLeftMenu

type LocalizationLeftMenu struct {
	About       string `json:"about"`
	Account     string `json:"account"`
	Board       string `json:"board"`
	Feed        string `json:"feed"`
	News        string `json:"news"`
	Invitations string `json:"invitations"`
	Items       string `json:"items"`
	Orders      string `json:"orders"`
	PM          string `json:"pm"`
	PMs         string `json:"pms"`
	Referrals   string `json:"referrals"`
	Reviews     string `json:"reviews"`
	Support     string `json:"support"`
	VendorInfo  string `json:"vendorinfo"`
	SignOut     string `json:"signout"`
	Shoutbox    string `json:"shoutbox"`
	Disputes    string `json:"disputes"`
	Warnings    string `json:"warnings"`
}

type LocalizationMessageboard

type LocalizationMessageboard struct {
	BackToAll             string `json:"backtoall"`
	Captcha               string `json:"captcha"`
	Chat                  string `json:"chat"`
	CreatedBy             string `json:"createdby"`
	CreateNewThread       string `json:"createnewthread"`
	Error                 string `json:"error"`
	General               string `json:"general"`
	Image                 string `json:"image"`
	LastUpdated           string `json:"lastupdated"`
	Message               string `json:"message"`
	NoMessages            string `json:"nomessages"`
	NoMessagesDescription string `json:"nomessagesdescription"`
	NumberOfMessages      string `json:"numberofmessages"`
	Reply                 string `json:"reply"`
	Sections              string `json:"sections"`
	Support               string `json:"support"`
	Vendors               string `json:"vendors"`
	Section               string `json:"section"`
	Title                 string `json:"title"`
	Text                  string `json:"text"`
	Save                  string `json:"save"`
	NewThread             string `json:"newthread"`
	EditThread            string `json:"editthread"`
	FixProblem            string `json:"fixproblem"`
}

type LocalizationOrders

type LocalizationOrders struct {
	Amount                 string `json:"amount"`
	BTCAddress             string `json:"btcaddress"`
	Buyer                  string `json:"buyer"`
	BuyerPublicKey         string `json:"buyerpublickey"`
	Cancel                 string `json:"cancel"`
	CancelDescription      string `json:"canceldescription"`
	Comment                string `json:"comment"`
	CreatedAt              string `json:"createdat"`
	Currency               string `json:"currency"`
	CurrentAmount          string `json:"currentamount"`
	CurrentStatus          string `json:"currentstatus"`
	Date                   string `json:"date"`
	Description            string `json:"description"`
	Dispute                string `json:"dispute"`
	DisputeReason          string `json:"disputereason"`
	DropCoordinates        string `json:"dropcoordinates"`
	FEDescription          string `json:"fedescription"`
	Finalize               string `json:"finalize"`
	FundsWillBeReleased    string `json:"fundswillbereleased"`
	Image                  string `json:"image"`
	IsReviewed             string `json:"isreviewed"`
	Item                   string `json:"item"`
	MarkDispatched         string `json:"markdispatched"`
	MarketPrivateKey       string `json:"marketprivatekey"`
	MarketPublicKey        string `json:"marketpublickey"`
	MarkShipped            string `json:"markshipped"`
	Next                   string `json:"next"`
	NoOrders               string `json:"noorders"`
	NoOrdersDescription    string `json:"noordersdescription"`
	NumberOfMessages       string `json:"numberofmessages"`
	Package                string `json:"package"`
	PaymentDetails         string `json:"paymentdetails"`
	PayViaEscrow           string `json:"payviaescrow"`
	PayViaMultisig         string `json:"payviamultisig"`
	PurchaseDetails        string `json:"purchasedetails"`
	QRCode                 string `json:"qrcode"`
	SellerPublicKey        string `json:"sellerpublickey"`
	ShippingDetails        string `json:"shippingdetails"`
	StartDispute           string `json:"startdispute"`
	Status                 string `json:"status"`
	StatusHistory          string `json:"statushistory"`
	TransactionIsCancelled string `json:"transactioniscancelled"`
	Vendor                 string `json:"vendor"`
}

type LocalizationRating

type LocalizationRating struct {
	Error             string `json:"error"`
	Review            string `json:"review"`
	Header            string `json:"header"`
	ItemRating        string `json:"itemrating"`
	ItemReview        string `json:"itemreview"`
	MarketplaceRating string `json:"marketplacerating"`
	MarketplaceReview string `json:"marketplacereview"`
	SellerRating      string `json:"sellerrating"`
	SellerReview      string `json:"sellerreview"`
	Save              string `json:"save"`
}

type LocalizationReferrals

type LocalizationReferrals struct {
	ReferralLink         string `json:"referrallink"`
	NumberOfInvitedUsers string `json:"numberofinvitedusers"`
}

type LocalizationSettings

type LocalizationSettings struct {
	About                              string `json:"about"`
	Account                            string `json:"account"`
	AboutDescription                   string `json:"aboutdescription"`
	Avatar                             string `json:"avatar"`
	AvatarDescription                  string `json:"avatardescription"`
	BTCAddressChangeHistory            string `json:"btcaddresschangehistory"`
	BTCWallet                          string `json:"btcwallet"`
	BTCWalletDescription               string `json:"btcwalletdescription"`
	BTCMultisigPublicKey               string `json:"btcmultisigpublickey"`
	BTCMultisigPublicKeyDescription    string `json:"btcmultisigpublickeydescription"`
	Contacts                           string `json:"contacts"`
	DecriptedText                      string `json:"decriptedtext"`
	DecriptText                        string `json:"decripttext"`
	Enable2FA                          string `json:"enable2fa"`
	Encryption                         string `json:"encryption"`
	Error                              string `json:"error"`
	Off                                string `json:"off"`
	On                                 string `json:"on"`
	Payments                           string `json:"payments"`
	PGPPublicKey                       string `json:"pgppublickey"`
	Profile                            string `json:"profile"`
	Save                               string `json:"save"`
	SetupPGPKey                        string `json:"setuppgpkey"`
	ShortDescription                   string `json:"shortdescription"`
	ShortDescriptionDescription        string `json:"shortdescriptiondescription"`
	TwoFactorAuthentication            string `json:"twofactorauthentication"`
	TwoFactorAuthenticationDescription string `json:"twofactorauthenticationdescription"`
	Username                           string `json:"username"`
	VendorSettings                     string `json:"vendorsettings"`
	ShippingSettings                   string `json:"shippingsettings"`
	Name                               string `json:"name"`
	Price                              string `json:"price"`
	Add                                string `json:"add"`
	VacationMode                       string `json:"vacationmode"`
	VacationModeDescription            string `json:"vacationmodedescription"`
	Password                           string `json:"password"`
	ChangePassword                     string `json:"changepassword"`
	OldPassword                        string `json:"oldpassword"`
	NewPassword                        string `json:"newpassword"`
	RepeatNewPassword                  string `json:"repeatnewpassword"`
}

type LocalizationStaff

type LocalizationStaff struct {
	Staff        string `json:"staff"`
	Support      string `json:"support"`
	Items        string `json:"items"`
	Disputes     string `json:"disputes"`
	Messageboard string `json:"messageboard"`
	Actions      string `json:"actions"`
	Statistics   string `json:"statistics"`
}

type LocalizationVerification

type LocalizationVerification struct {
	Encryption                      string
	EncryptionDescription           string
	VendorshipAgreement             string
	VendorshipAgreementDescription  string
	VendorshipAgreementInstructions string
	MembershipPlans                 string
	MembershipPlansDescription      string
	Verification                    string
	VerificationDescription         string
	VerificationInstructions        string
	AgreementText                   string
	SignedAgreement                 string
}

type LocalizationWallet

type LocalizationWallet struct {
	RecieveBitcoins    string `json:"recievebitcoins"`
	SendBitcoins       string `json:"sendbitcoins"`
	BTCAddress         string `json:"btcaddress"`
	QRCode             string `json:"qrcode"`
	Balance            string `json:"balance"`
	AmountToSend       string `json:"amounttosend"`
	Send               string `json:"send"`
	UnconfirmedBalance string `json:"unconfirmedbalance"`
	Time               string `json:"time"`
	Action             string `json:"action"`
	Address            string `json:"address"`
	Actions            string `json:"actions"`
}

type LocaliztionUserCard

type LocaliztionUserCard struct {
	Registred       string `json:"registred"`
	LastSeen        string `json:"lastseen"`
	PossibleScammer string `json:"possiblescammer"`
	Staff           string `json:"staff"`
	Vendor          string `json:"vendor"`
	PremiumVendor   string `json:"premiumvendor"`
	TrustedSeller   string `json:"trustedseller"`
	Tester          string `json:"tester"`
	Buyer           string `json:"buyer"`
	NoReviewsYet    string `json:"noreviewsyet"`
}

type Message

type Message struct {
	Uuid               string     `form:"uuid" json:"uuid" gorm:"primary_key" sql:"size:1024"`
	SenderUserUuid     string     `json:"-" sql:"index""`
	RecieverUserUuid   string     `json:"-" sql:"index"`
	IsReadByReciever   bool       `json:"is_read_by_reciever"`
	ParentUuid         string     `form:"parent_uuid" json:"parent_uuid" sql:"index"`
	Title              string     `form:"title" json:"title" sql:"size:140"`
	Text               string     `form:"text" json:"text" sql:"size:9086"`
	Type               string     `json:"type" sql:"index"`
	IsEncrypted        bool       `json:"is_encrypted" sql:"index"`
	IsReported         bool       `json:"is_reported" sql:"index"`
	ReportedByUserUuid string     `json:"reported_by_user_uuid" sql:"index"`
	ReviewedByUserUuid string     `json:"reviewed_by_user_uuid" sql:"index"`
	HasImage           bool       `json:"has_image" sql:"index"`
	CreatedAtTimestamp time.Time  `json:"created_at" sql:"index"`
	UpdatedAt          *time.Time `json:"updated_at" sql:"index"`
	DeletedAt          *time.Time `json:"deleted_at" sql:"index"`
	SenderUser         User       `json:"sender"`
	RecieverUser       User       `json:"reciever"`
}

func CreateMessage

func CreateMessage(text string, thread Thread, user User) (*Message, error)

func FindMessageByUuid

func FindMessageByUuid(uuid string) (*Message, error)

func GetAllMessages

func GetAllMessages() []Message

func (Message) AddImage

func (message Message) AddImage(r *web.Request) error

func (Message) Remove

func (i Message) Remove() error

func (Message) Save

func (itm Message) Save() error

func (Message) SaveToDatabase

func (itm Message) SaveToDatabase() error

func (Message) Validate

func (m Message) Validate() error

func (Message) ViewMessage

func (m Message) ViewMessage(lang string) ViewMessage

type MessageboardStats

type MessageboardStats struct {
	NumberOfMessages int
	NumberOfThreads  int
}

func CacheGetMessageboardDailyStats

func CacheGetMessageboardDailyStats() MessageboardStats

func CacheGetMessageboardSummaryStats

func CacheGetMessageboardSummaryStats() MessageboardStats

func GetMessageboardDailyStats

func GetMessageboardDailyStats() MessageboardStats

func GetMessageboardSummaryStats

func GetMessageboardSummaryStats() MessageboardStats

type MessageboardThread

type MessageboardThread struct {
	Uuid                  string
	LastMessageUsername   string
	MessageboardSectionId int
	NumberOfMessages      int
	Pages                 []int
	SenderIsAdmin         bool
	SenderIsStaff         bool

	SenderUsername string
	Title          string

	CreatedAt   time.Time
	LastUpdated time.Time
	LastRead    time.Time
}

func FindMessageboardThreads

func FindMessageboardThreads(sectionId int) []MessageboardThread

func FindMessageboardThreadsForUserUuid

func FindMessageboardThreadsForUserUuid(sectionId, page, pageSize int, userUuid string) []MessageboardThread

func (MessageboardThread) ViewMessageboardThread

func (mt MessageboardThread) ViewMessageboardThread(lang string) ViewMessageboardThread

type MessageboardThreads

type MessageboardThreads []MessageboardThread

func CacheFindNewMessageboardThreadsTop5

func CacheFindNewMessageboardThreadsTop5() MessageboardThreads

func FindNewMessageboardThreads

func FindNewMessageboardThreads(limit int) MessageboardThreads

func (MessageboardThreads) ViewMessageboardThreads

func (msbts MessageboardThreads) ViewMessageboardThreads(lang string) []ViewMessageboardThread

type Messages

type Messages []Message

func FindReportedMessages

func FindReportedMessages() Messages

func (Messages) ViewMessages

func (ms Messages) ViewMessages(lang string) []ViewMessage

type Package

type Package struct {
	Uuid        string `json:"uuid" gorm:"primary_key"`
	Name        string `json:"name"`
	Description string `json:"description"`
	Type        string `json:"type" gorm:"index"`
	ItemUuid    string `json:"item_uuid" gorm:"index"`
	StoreUuid   string `json:"store_uuid" gorm:"index"`
	// Drop
	Latitude  float64 `json:"latitude"`
	Longitude float64 `json:"longitude"`
	// New GEO
	CountryNameEnShippingFrom string `json:"country_name_en_shippinfg_from" gorm:"index"`
	CountryNameEnShippingTo   string `json:"country_name_en_shipping_to" gorm:"index"`
	DropCityId                int    `json:"drop_city_id" gorm:"index"`
	CityMetroStationUuid      string `json:"city_metro_station_uuid" gorm:"index"`
	// Associations
	Item             Item             `json:"-"`
	GeoCity          City             `gorm:"ForeignKey:DropCityId" json:"-"`
	Store            Store            `gorm:"ForeignKey:StoreUuid" json:"-"`
	CityMetroStation CityMetroStation `gorm:"ForeignKey:CityMetroStationUuid" json:"-"`
	GeoCountryFrom   Country          `gorm:"ForeignKey:CountryNameEnShippingFrom" json:"-"`
	GeoCountryTo     Country          `gorm:"ForeignKey:CountryNameEnShippingTo" json:"-"`
	PackagePrice     PackagePrice     `gorm:"ForeignKey:Uuid;AssociationForeignKey:Uuid" json:"price"`
	// TimeStamps
	CreatedAt *time.Time `json:"created_at" gorm:"index"`
	UpdatedAt *time.Time `json:"updated_at" gorm:"index"`
	DeletedAt *time.Time `json:"deleted_at" gorm:"index"`
}

func FindPackageByUuid

func FindPackageByUuid(uuid string) (*Package, error)

func (Package) GetPrice

func (a Package) GetPrice(currency string) float64

func (Package) PreValidate

func (a Package) PreValidate(step int) error

func (Package) Remove

func (a Package) Remove() error

func (Package) Reservation

func (a Package) Reservation() *Reservation

func (Package) Save

func (u Package) Save() error

func (Package) SaveToDatabase

func (u Package) SaveToDatabase() error

func (Package) Transaction

func (a Package) Transaction() *Transaction

func (Package) Validate

func (a Package) Validate() error

func (Package) ViewPackage

func (a Package) ViewPackage() ViewPackage

type PackagePrice

type PackagePrice struct {
	Uuid     string  `json:"uuid" gorm:"primary_key"`
	Currency string  `json:"currency"`
	Price    float64 `json:"price"`
}

func FindPackagePriceByUuid

func FindPackagePriceByUuid(uuid string) (*PackagePrice, error)

func (PackagePrice) Save

func (u PackagePrice) Save() error

type Packages

type Packages []Package

func FindPackagesByItemUuid

func FindPackagesByItemUuid(uuid string) Packages

func FindPaidPackagesForBuyer

func FindPaidPackagesForBuyer(uuid string) Packages

func GetAllPackages

func GetAllPackages() Packages

func (Packages) DropCitiesList

func (packages Packages) DropCitiesList() []City

func (Packages) GroupsTable

func (avs Packages) GroupsTable() GroupedPackages

func (Packages) MaxBy

func (rcv Packages) MaxBy(less func(Package, Package) bool) (result Package, err error)

func (Packages) MaxPrice

func (as Packages) MaxPrice(currency string) float64

func (Packages) MinBy

func (rcv Packages) MinBy(less func(Package, Package) bool) (result Package, err error)

func (Packages) MinPrice

func (as Packages) MinPrice(currency string) float64

func (Packages) ShippingFromList

func (packages Packages) ShippingFromList() []string

func (Packages) ShippingToList

func (packages Packages) ShippingToList() []string

func (Packages) ViewPackages

func (avs Packages) ViewPackages() []ViewPackage

func (Packages) Where

func (itms Packages) Where(fnc func(Package) bool) Packages

type PaymentReceipt

type PaymentReceipt struct {
	Uuid           string `json:"uuid" gorm:"primary_key" sql:"size:1024"`
	Type           string `json:"type" sql:"index"`
	SerializedData string `json:"serialized_data"`
	Version        int    `json:"receipt_version"`

	BTCPaymentResultItem *apis.BTCPaymentResult `json:"btc_payment_result,omitempty"`
	BCHPaymentResultItem *apis.BCHPaymentResult `json:"bch_payment_result,omitempty"`
	ETHPaymentResultItem *apis.ETHPaymentResult `json:"eth_payment_results,omitempty"`
}

func CreateBCHPaymentReceipt

func CreateBCHPaymentReceipt(transactionResult apis.BCHPaymentResult) (PaymentReceipt, error)

func CreateBTCPaymentReceipt

func CreateBTCPaymentReceipt(transactionResult apis.BTCPaymentResult) (PaymentReceipt, error)

func CreateETHPaymentReceipt

func CreateETHPaymentReceipt(transactionResult apis.ETHPaymentResult) (PaymentReceipt, error)

func (PaymentReceipt) BCHPaymentResult

func (i PaymentReceipt) BCHPaymentResult() (apis.BCHPaymentResult, error)

func (PaymentReceipt) BTCPaymentResult

func (i PaymentReceipt) BTCPaymentResult() (apis.BTCPaymentResult, error)

func (PaymentReceipt) ETHPaymentResult

func (i PaymentReceipt) ETHPaymentResult() (apis.ETHPaymentResult, error)

func (PaymentReceipt) Remove

func (i PaymentReceipt) Remove() error

func (PaymentReceipt) Save

func (itm PaymentReceipt) Save() error

func (PaymentReceipt) SaveToDatabase

func (itm PaymentReceipt) SaveToDatabase() error

func (PaymentReceipt) Validate

func (r PaymentReceipt) Validate() error

type PrivateThread

type PrivateThread struct {
	Uuid             string
	LastUpdated      time.Time
	LastReadDate     time.Time
	NumberOfMessages int
	SenderUsername   string
	ReceiverUsername string
	SenderUserUuid   string
	ReceiverUserUuid string
}

func (PrivateThread) ViewPrivateThread

func (pt PrivateThread) ViewPrivateThread(lang, username string) ViewPrivateThread

type PrivateThreads

type PrivateThreads []PrivateThread

func CacheFindPrivateThreads

func CacheFindPrivateThreads(userUuid string) PrivateThreads

func FindPrivateThreads

func FindPrivateThreads(userUuid string) PrivateThreads

func (PrivateThreads) CountUnread

func (ths PrivateThreads) CountUnread() int

func (PrivateThreads) ViewPrivateThreads

func (msbts PrivateThreads) ViewPrivateThreads(lang, username string) []ViewPrivateThread

type RatingReview

type RatingReview struct {
	Uuid            string `json:"-" gorm:"primary_key"`
	UserUuid        string `json:"-" sql:"index"`
	StoreUuid       string `json:"-" sql:"index"`
	ItemUuid        string `json:"-" sql:"index"`
	TransactionUuid string `json:"-" sql:"index"`

	ItemScore         int    `json:"item_score"`
	ItemReview        string `json:"item_review"`
	SellerScore       int    `json:"seller_score"`
	SellerReview      string `json:"seller_review"`
	MarketplaceScore  int    `json:"marketplace_score"`
	MarketplaceReview string `json:"marketplace_review"`

	User        User        `json:"user"`
	Store       Store       `json:"-" gorm:"ForeignKey:StoreUuid"`
	Item        Item        `json:"-"`
	Transaction Transaction `json:"-"`

	// ORM timestamps
	CreatedAt *time.Time `json:"created_at"`
	UpdatedAt *time.Time `json:"-"`
	DeletedAt *time.Time `json:"-"`
}

func FindRatingReviewByTransactionUuid

func FindRatingReviewByTransactionUuid(uuid string) (*RatingReview, error)

func FindRatingReviewByUuid

func FindRatingReviewByUuid(uuid string) (*RatingReview, error)

func FindRatingReviewsForStore

func FindRatingReviewsForStore(uuid string) []RatingReview

func GetAllRatingReviews

func GetAllRatingReviews() []RatingReview

func (RatingReview) Remove

func (i RatingReview) Remove() error

func (RatingReview) Save

func (itm RatingReview) Save() error

func (RatingReview) SaveToDatabase

func (itm RatingReview) SaveToDatabase() error

func (RatingReview) Validate

func (r RatingReview) Validate() error

func (RatingReview) ViewRatingReview

func (r RatingReview) ViewRatingReview(lang string) ViewRatingReview

type RatingReviews

type RatingReviews []RatingReview

func (RatingReviews) ViewRatingReviews

func (rr RatingReviews) ViewRatingReviews(lang string) []ViewRatingReview

type ReferralPayment

type ReferralPayment struct {
	gorm.Model

	ReferralPercent    float64
	ReferralPaymentBCH float64
	ReferralPaymentBTC float64
	ReferralPaymentETH float64
	ReferralPaymentUSD float64

	IsBuyerReferral bool

	UserUuid string `json:"user_uuid" sql:"index"`
	User     User   `json:"-"`

	TransactionUuid string      `json:"transaction_uuid" sql:"index"`
	Transaction     Transaction `json:"-"`
}

func FindPaymentReceiptByUuid

func FindPaymentReceiptByUuid(uuid string) []ReferralPayment

func FindReferralPayments

func FindReferralPayments() []ReferralPayment

func FindReferralPaymentsForUser

func FindReferralPaymentsForUser(uuid string) []ReferralPayment

func (ReferralPayment) Remove

func (i ReferralPayment) Remove() error

func (ReferralPayment) Save

func (itm ReferralPayment) Save() error

func (ReferralPayment) SaveToDatabase

func (itm ReferralPayment) SaveToDatabase() error

func (ReferralPayment) Validate

func (r ReferralPayment) Validate() error

type Reservation

type Reservation struct {
	Uuid            string        `json:"uuid" gorm:"primary_key"`
	EndsOn          time.Time     `json:"ends_on"`
	Duration        time.Duration `json:"duration" sql:"-"`
	TransactionUuid string        `json:"transaction_uuid" sql:"index"`

	Transaction Transaction `json:"-"`
}

func CreateReservation

func CreateReservation(a Package, t Transaction) (*Reservation, error)

func FindReservationByUuid

func FindReservationByUuid(uuid string) (*Reservation, error)

func (Reservation) CreatedAt

func (r Reservation) CreatedAt() time.Time

func (Reservation) IsActive

func (r Reservation) IsActive() bool

func (Reservation) IsCompleted

func (r Reservation) IsCompleted() bool

func (Reservation) Remove

func (r Reservation) Remove() error

func (Reservation) Save

func (r Reservation) Save() error

func (Reservation) SaveToDatabase

func (itm Reservation) SaveToDatabase() error

type Reservations

type Reservations []Reservation

func FindActiveReservations

func FindActiveReservations() Reservations

func FindActiveReservationsForBuyer

func FindActiveReservationsForBuyer(uuid string) Reservations

func FindInactiveReservations

func FindInactiveReservations() Reservations

func GetAllResevations

func GetAllResevations() Reservations

func (Reservations) Where

func (itms Reservations) Where(fnc func(Reservation) bool) Reservations

type SerpItem

type SerpItem struct {
	ItemUuid string `json:"item_uuid"`

	// Vendor details
	StoreUuid        string `json:"-"`
	Storename        string `json:"storename"`
	StoreDescription string `json:"store_description"`

	// Store conditions
	StoreIsSuspended     bool `json:"store_is_suspended"`
	StoreIsTrusted       bool `json:"store_is_trusted"`
	StoreIsAllowedToSell bool `json:"store_is_allowed_to_sell"`

	// Account types
	StoreIsFreeAccount   bool `json:"store_is_free_account"`
	StoreIsBronzeAccount bool `json:"store_is_bronze_account"`
	StoreIsSilverAccount bool `json:"store_is_silver_account"`
	StoreIsGoldAccount   bool `json:"store_is_gold_account"`

	// Dates
	StoreLastLoginDate    time.Time `json:"store_last_login_date"`
	StoreRegistrationDate time.Time `json:"store_registraion_date"`

	// Warnings
	NumberOfRedWarnings    int    `json:"number_of_red_warnings"`
	NumberOfGreenWarnings  int    `json:"number_of_green_warnings"`
	NumberOfYellowWarnings int    `json:"number_of_yellow_warnings"`
	ReviewedByUserUuid     string `json:"-"`

	// Item details
	ItemCreatedAt              time.Time `json:"item_created_at"`
	ItemName                   string    `json:"item_name"`
	ItemDescription            string    `json:"item_description"`
	ItemCategoryId             int       `json:"item_category_id"`
	ParentItemCategoryId       int       `json:"item_parent_category_id"`
	ParentParentItemCategoryId int       `json:"item_parent_parent_category_id"`

	// ItemCategory details: These fields are only available when
	// SQL JOINing in these fields -> Not used everywhere
	// At time of writing, this is only used in models_frontpage.go
	ItemCategoryNameEn             string `json:"item_category_name_en"`
	ItemCategoryNameRu             string `json:"item_category_name_ru"`
	ParentItemCategoryNameEn       string `json:"parent_item_category_name_en"`
	ParentItemCategoryNameRu       string `json:"parent_item_category_name_ru"`
	ParentParentItemCategoryNameEn string `json:"parent_parent_item_category_name_en"`
	ParentParentItemCategoryNameRu string `json:"parent_parent_item_category_name_ru"`

	// Price details
	MinPrice float64 `json:"max_price"`
	MaxPrice float64 `json:"min_price"`
	Currency string  `json:"currency"`

	// Scores
	StoreScore      float64 `json:"store_score"`
	StoreScoreCount int     `json:"-"`
	ItemScore       float64 `json:"item_score"`
	ItemScoreCount  int     `json:"-"`

	// Bitcoin transaction statistics
	StoreBitcoinTxNumber float64 `json:"-"`
	StoreBitcoinTxVolume float64 `json:"-"`
	ItemBitcoinTxNumber  float64 `json:"-"`
	ItemBitcoinTxVolume  float64 `json:"-"`

	// Bitcoin Cash transaction statistics
	StoreBitcoinCashTxNumber float64 `json:"-"`
	StoreBitcoinCashTxVolume float64 `json:"-"`
	ItemBitcoinCashTxNumber  float64 `json:"-"`
	ItemBitcoinCashTxVolume  float64 `json:"-"`

	// Ethereum transaction statistics
	StoreEthereumTxNumber  float64 `json:"-"`
	StorerEthereumTxVolume float64 `json:"-"`
	ItemEthereumTxNumber   float64 `json:"-"`
	ItemEthereumTxVolume   float64 `json:"-"`

	// Shipping and delivery details
	Type                      string `json:"type"`
	CountryNameEnShippingFrom string `json:"country_shipping_from"`
	CountryNameEnShippingTo   string `json:"country_shipping_to"`
	DropCityId                int    `json:"geoname_id"`

	// Price mappings
	Price map[string][2]float64 `json:"-"`

	// Vendor levels
	StoreLevel int `json:"store_level"`

	// Geobase fiels
	GeoCity        City    `gorm:"ForeignKey:DropCityId" json:"-"`
	GeoCountryFrom Country `gorm:"ForeignKey:CountryNameEnShippingFrom" json:"-"`
	GeoCountryTo   Country `gorm:"ForeignKey:CountryNameEnShippingTo" json:"-"`

	// Used in /front page
	CategoriesNameEn pq.StringArray `gorm:"type:varchar(100)[]" json:"categories_name_en"`
}

func (SerpItem) GetPrice

func (ai SerpItem) GetPrice(currency string) [2]float64

func (SerpItem) USDVolume

func (ai SerpItem) USDVolume() float64

func (SerpItem) ViewSerpItem

func (ai SerpItem) ViewSerpItem(lang, currency string) ViewSerpItem

type SerpItems

type SerpItems []SerpItem

func FindFilteredSerpItems

func FindFilteredSerpItems(query string) SerpItems

func FindItemsNewArrivals

func FindItemsNewArrivals() SerpItems

func FindItemsTopDrugs

func FindItemsTopDrugs() SerpItems

func FindItemsTopOther

func FindItemsTopOther() SerpItems

func FindSerpItems

func FindSerpItems() SerpItems

func (SerpItems) DropCitiesList

func (ais SerpItems) DropCitiesList() []City

func (SerpItems) Filter

func (ais SerpItems) Filter(
	category, dropCityId int,
	packageType, query, to, from, accountType string,
	domestic bool, mobileAppVersion bool) SerpItems

func (SerpItems) SerpStores

func (ais SerpItems) SerpStores() SerpStores

func (SerpItems) ShippingFromList

func (ais SerpItems) ShippingFromList() []string

func (SerpItems) ShippingToList

func (ais SerpItems) ShippingToList() []string

func (SerpItems) Sort

func (ais SerpItems) Sort(sortyBy string) SerpItems

func (SerpItems) ViewSerpItems

func (ais SerpItems) ViewSerpItems(lang, currency string) []ViewSerpItem

func (SerpItems) Where

func (ais SerpItems) Where(predicate func(SerpItem) bool) SerpItems

type SerpStore

type SerpStore struct {
	// Basic info
	Storename        string `json:"storename"`
	ShortDescription string `json:"store_description"`

	// Dates
	LastLoginDate    time.Time `json:"last_login_date"`
	RegistrationDate time.Time `json:"registration_date"`

	// Financials
	BitcoinTxNumber     float64 `json:"-"`
	BitcoinTxVolume     float64 `json:"-"`
	BitcoinCashTxNumber float64 `json:"-"`
	BitcoinCashTxVolume float64 `json:"-"`
	EthereumTxNumber    float64 `json:"-"`
	EthereumTxVolume    float64 `json:"-"`

	// Levels
	Score float64 `json:"vendor_score"`
	Level int     `json:"vendor_level"`

	// Account types
	IsFreeAccount   bool `json:"vendor_is_free_account"`
	IsGoldAccount   bool `json:"vendor_is_gold_account"`
	IsSilverAccount bool `json:"vendor_is_silver_account"`
	IsBronzeAccount bool `json:"vendor_is_bronze_account"`

	// Misc info
	IsTrusted     bool `json:"vendor_is_trusted"`
	AllowedToSell bool `json:"-"`

	// Used in /front page
	CategoriesNameEn pq.StringArray `gorm:"type:varchar(100)[]" json:"categories_name_en"`
	ScoreString      string         `json:"-"`
}

func (SerpStore) ViewSerpStore

func (v SerpStore) ViewSerpStore(lang string) ViewSerpStore

type SerpStores

type SerpStores []SerpStore

func FindVendorsNew

func FindVendorsNew() SerpStores

func FindVendorsTop

func FindVendorsTop() SerpStores

func (SerpStores) SetAdditionalData

func (ais SerpStores) SetAdditionalData()

func (SerpStores) Sort

func (vvs SerpStores) Sort(sortyBy string) SerpStores

func (SerpStores) ViewSerpStores

func (vs SerpStores) ViewSerpStores(lang string) []ViewSerpStore

type ShippingOption

type ShippingOption struct {
	gorm.Model

	Name     string  `json:"name"`
	PriceUSD float64 `json:"price_usd"`
	PriceRUB float64 `json:"price_rub"`
	PriceGBP float64 `json:"price_gbp"`
	PriceEUR float64 `json:"price_eur"`
	PriceAUD float64 `json:"price_aud"`

	// Converted to stores
	StoreUuid string `json:store_uuid" sql:"index"`
	Store     Store  `json:"-"`
}

func FindShippingOptionById

func FindShippingOptionById(id uint) (*ShippingOption, error)

func FindShippingOptionsByStoreUuid

func FindShippingOptionsByStoreUuid(storeUuid string) []ShippingOption

func GetAllShippingOptions

func GetAllShippingOptions() []ShippingOption

func (ShippingOption) Remove

func (i ShippingOption) Remove() error

func (ShippingOption) Save

func (itm ShippingOption) Save() error

func (ShippingOption) SaveToDatabase

func (itm ShippingOption) SaveToDatabase() error

func (ShippingOption) Validate

func (r ShippingOption) Validate() error

type ShippingStatus

type ShippingStatus struct {
	gorm.Model
	Time            time.Time `json:"time" sql:"index"`
	Status          string    `json:"status"`
	Comment         string    `json:"comment"`
	UserUuid        string    `json:"user_uuid" sql:"index"`
	TransactionUuid string    `json:"transaction_uuid" sql:"index"`
}

func (ShippingStatus) Save

func (ss ShippingStatus) Save() error

type StaffStats

type StaffStats struct {
	NumberOfResolvedTickets  int
	NumberOfResolvedDisputes int
	NumberOfApprovedItems    int
	NumberOfApprovedVendors  int
}

func CacheGetStaffStats

func CacheGetStaffStats(userUuid string) StaffStats

type StaffSupportTicketsStatsItem

type StaffSupportTicketsStatsItem struct {
	ResolverUsername string
	CurrentStatus    string
	TicketCount      int
}

func StaffItemApprovalStats

func StaffItemApprovalStats(from string) ([]StaffSupportTicketsStatsItem, error)

func StaffSupportDisputesResolutionStats

func StaffSupportDisputesResolutionStats(from string) ([]StaffSupportTicketsStatsItem, error)

func StaffSupportTicketsResolutionStats

func StaffSupportTicketsResolutionStats(from string) ([]StaffSupportTicketsStatsItem, error)

type StaticPage

type StaticPage struct {
	Title    string
	Filename string
	Body     template.HTML
}

type StatsItem

type StatsItem struct {
	Date                           time.Time
	DateStr                        string
	Year                           int
	WeekNumber                     int
	NumberOfUsers                  int
	NumberOfUsersDelta             int
	NumberOfVendors                int
	NumberOfVendorsDelta           int
	NumberOfItems                  int
	NumberOfItemsDelta             int
	NumberOfSupportMessages        int
	NumberOfSupportMessagesDelta   int
	NumberOfDisputes               int
	NumberOfDisputesDelta          int
	NumberOfBTCTransactionsCreated int
	NumberOfETHTransactionsCreated int
	NumberOfBCHTransactionsCreated int
	BTCTradeAmount                 float64
	ETHTradeAmount                 float64
	BCHTradeAmount                 float64
}

func CacheGetMarketplaceStats

func CacheGetMarketplaceStats(dt time.Time) []StatsItem

func GetMarketplaceStats

func GetMarketplaceStats(dt time.Time) []StatsItem

type Store

type Store struct {
	Uuid      string `json:"-" gorm:"primary_key"`
	Storename string `json:"storename" gorm:"type:varchar(16);unique"`

	// Supplementary Fields
	ShortDescription                 string     `json:"short_description"`
	Description                      string     `json:"long_description"`
	PGP                              string     `json:"pgp"`
	VendorshipAgreementText          string     `json:"-"`
	VendorshipAgreementSignatureDate *time.Time `json:"-"`

	HasAvatar bool `json:"-"`

	// Additional fields
	IsSuspended     bool `json:"is_suspended"`
	IsTrusted       bool `json:"is_trusted"`
	IsAllowedToSell bool `json:"is_allowed_to_sell"`
	IsOnVacation    bool `json:"is_on_vacation"`

	// Account type
	IsGoldAccount   bool `json:"is_gold_account"`
	IsBronzeAccount bool `json:"is_bronze_account"`
	IsSilverAccount bool `json:"is_silver_account"`
	IsFreeAccount   bool `json:"is_free_account"`

	// Verification
	HasRequestedVerification bool       `json:"-"`
	VerificationRequestDate  *time.Time `json:"-"`

	// Relations
	StoreUsers      []StoreUser      `json:"users"`
	Items           Items            `json:"-"`
	Deposits        Deposits         `json:"-"`
	Warnings        StoreWarnings    `json:"warnings"`
	RatingReviews   RatingReviews    `json:"rating_reviews"`
	ShippingOptions []ShippingOption `json:"shipping_options"`

	// Timestamps
	LastLoginDate    time.Time `json:"last_login_date"`
	RegistrationDate time.Time `json:"registration_date"`

	// CRUD timestamps
	CreatedAt *time.Time `json:"-" gorm:"index"`
	UpdatedAt *time.Time `json:"-" gorm:"index"`
	DeletedAt *time.Time `json:"-" gorm:"index"`
}

func CreateStore

func CreateStore(storeName, adminUuid string) (*Store, error)

func FindStoreByStorename

func FindStoreByStorename(name string) (*Store, error)

func FindStoreByUserUuid

func FindStoreByUserUuid(userUuid string) (*Store, error)

func FindStoreByUuid

func FindStoreByUuid(uuid string) (*Store, error)

func (Store) ActivatedAccount

func (s Store) ActivatedAccount() bool

func (Store) AdminUser

func (s Store) AdminUser() User

func (Store) BitcoinAddress

func (s Store) BitcoinAddress() string

BitcoinAddress returns BTC address to send released coins to

func (Store) BitcoinCashAddress

func (u Store) BitcoinCashAddress() string

BitcoinAddress returns BTC address to send released coins to

func (Store) BitcoinCashMultisigPublicKey

func (u Store) BitcoinCashMultisigPublicKey() string

BitcoinCasAddress returns BTC address to send released coins to

func (Store) BitcoinMultisigPublicKey

func (u Store) BitcoinMultisigPublicKey() string

BitcoinAddress returns BTC address to send released coins to

func (Store) CalculateLevel

func (s Store) CalculateLevel() int

func (Store) CalculateScore

func (s Store) CalculateScore() float64

func (Store) EthereumAddress

func (u Store) EthereumAddress() string

Ethereum returns BTC address to send released coins to

func (Store) GetStoreStats

func (s Store) GetStoreStats() StoreStats

func (Store) HasSignedVendorshipAgreement

func (s Store) HasSignedVendorshipAgreement() bool

func (Store) InviterUser

func (s Store) InviterUser() *User

InviterUser returns user who invited store

func (Store) Save

func (u Store) Save() error

func (Store) SaveToDatabase

func (u Store) SaveToDatabase() error

func (Store) UserIsAdministration

func (u Store) UserIsAdministration(userUuid string) bool

func (Store) Validate

func (s Store) Validate() error

func (Store) ViewStore

func (s Store) ViewStore(lang string) ViewStore

type StoreStats

type StoreStats struct {
	NumberOfActiveWarnings       int
	NumberOfDisputes             int
	NumberOfExpiredWarnings      int
	NumberOfGreenWarnings        int
	NumberOfItems                int
	NumberOfLostDisputes         int
	NumberOfNegativeReviews      int
	NumberOfNeutralReviews       int
	NumberOfPositiveReviews      int
	NumberOfRedWarnings          int
	NumberOfReleasedTransactions int
	NumberOfReviews              int
	NumberOfSales                int
	NumberOfWonDisputes          int
	NumberOfYellowWarnings       int
	SalesVolume                  float64
}

func CacheGetStoreStats

func CacheGetStoreStats(storeUuid string) StoreStats

type StoreUser

type StoreUser struct {
	StoreUuid string `json:"-" gorm:"primary_key"`
	UserUuid  string `json:"-" gorm:"primary_key"`
	Role      string `json:"role" gorm:"primary_key"`

	Store Store `json:"-"`
	User  User  `json:"user"`
}

func FindStoreUser

func FindStoreUser(storeUuid, userUuid string) (*StoreUser, error)

func FindStoreUsersByStore

func FindStoreUsersByStore(uuid string) []StoreUser

func (StoreUser) Save

func (u StoreUser) Save() error

func (StoreUser) SaveToDatabase

func (u StoreUser) SaveToDatabase() error

func (StoreUser) Validate

func (s StoreUser) Validate() error

type StoreWarning

type StoreWarning struct {
	Uuid string `json:"uuid" gorm:"primary_key"`

	StoreUuid    string `json:"store_uuid" gorm:"index"`
	Severety     string `json:"severety" gorm:"index"`
	Text         string `json:"text"`
	IsApproved   bool   `json:"is_approved" gorm:"index"`
	ReporterUuid string `json:"reporter_uuid" gorm:"index"`

	Store    Store `json:"-"`
	Reporter User  `json:"-"`

	CreatedAt *time.Time `json:"created_at"`
	UpdatedAt *time.Time `json:"updated_at"`
	DeletedAt *time.Time `json:"deleted_at"`
}

func CreateStoreWarning

func CreateStoreWarning(storeUuid, reporterUuid, text string) (StoreWarning, error)

func FindStoreWarningByUuid

func FindStoreWarningByUuid(uuid string) (*StoreWarning, error)

func (StoreWarning) ExpiresIn

func (w StoreWarning) ExpiresIn(lang string) string

func (StoreWarning) HasExpired

func (w StoreWarning) HasExpired() bool

func (StoreWarning) Remove

func (w StoreWarning) Remove() error

func (StoreWarning) Save

func (w StoreWarning) Save() error

func (StoreWarning) SaveToDatabase

func (w StoreWarning) SaveToDatabase() error

func (*StoreWarning) UpdateSeverety

func (uw *StoreWarning) UpdateSeverety(severety string) error

func (StoreWarning) Validate

func (w StoreWarning) Validate() error

func (StoreWarning) ViewStoreWarning

func (uw StoreWarning) ViewStoreWarning(lang string) ViewStoreWarning

type StoreWarnings

type StoreWarnings []StoreWarning

func FindAllActiveWarnings

func FindAllActiveWarnings() StoreWarnings

func FindStoreWarningsForStore

func FindStoreWarningsForStore(userUuid string) StoreWarnings

func FindStoreWarningsForUser

func FindStoreWarningsForUser(userUuid string) StoreWarnings

func (StoreWarnings) ViewStoreWarnings

func (uws StoreWarnings) ViewStoreWarnings(lang string) []ViewStoreWarning

type Stores

type Stores []Store

func FindValidStoreVerificationRequests

func FindValidStoreVerificationRequests() Stores

func (Stores) ViewStores

func (ss Stores) ViewStores(lang string) []ViewStore

type SupportTicket

type SupportTicket struct {
	Uuid        string `json:"uuid" gorm:"primary_key"`
	Title       string `json:"title"`
	Description string `json:"description" sql:"size:4096"`
	Priority    int    `json:"priority" gorm:"index"`
	Category    string `json:"category"  gorm:"index"`

	ThreadUuid string `json:"thread_uuid" gorm:"index"`
	UserUuid   string `json:"user_uuid" gorm:"index"`

	CreatedAt time.Time  `json:"created_at" gorm:"index"`
	UpdatedAt *time.Time `json:"updated_at" gorm:"index"`
	DeletedAt *time.Time `json:"deleted_at" gorm:"index"`

	User                  User                  `json:"-"`
	SupportTicketStatuses []SupportTicketStatus `json:"-"`
}

func CreateSupportTicket

func CreateSupportTicket(
	user User,
	title string,
	description string,
	priority int,
	category string,
) (*SupportTicket, error)

func FindSupportTicketByUuid

func FindSupportTicketByUuid(uuid string) (*SupportTicket, error)

func (SupportTicket) AddMessage

func (st SupportTicket) AddMessage(message string, user User) (*Message, error)

func (SupportTicket) CurrentStatus

func (st SupportTicket) CurrentStatus() (*SupportTicketStatus, error)

func (SupportTicket) Save

func (st SupportTicket) Save() error

func (*SupportTicket) SetPriority

func (st *SupportTicket) SetPriority(priority int) error

func (*SupportTicket) SetStatus

func (st *SupportTicket) SetStatus(userUuid string, status string) error

func (SupportTicket) Thread

func (st SupportTicket) Thread() (*Thread, error)

func (SupportTicket) ViewSupportTicket

func (st SupportTicket) ViewSupportTicket(lang string) ViewSupportTicket

type SupportTicketStatus

type SupportTicketStatus struct {
	Uuid   string `json:"uuid" gorm:"primary_key"`
	Status string `json:"status" gorm:"index"`

	UserUuid          string `json:"user_uuid" gorm:"index"`
	SupportTicketUuid string `json:"support_ticket_uuid" gorm:"index"`

	CreatedAt time.Time  `json:"created_at" gorm:"index"`
	UpdatedAt *time.Time `json:"updated_at" gorm:"index"`
	DeletedAt *time.Time `json:"deleted_at" gorm:"index"`

	SupportTicket SupportTicket `json:"-"`
	User          User          `json:"-"`
}

new -> open -> close

func FindSupportTicketStatusByUuid

func FindSupportTicketStatusByUuid(uuid string) (*SupportTicketStatus, error)

func (SupportTicketStatus) Save

func (sts SupportTicketStatus) Save() error

type SupportTickets

type SupportTickets []SupportTicket

func FindAllSupportTickets

func FindAllSupportTickets() (SupportTickets, error)

func FindSupportTicketsByStatus

func FindSupportTicketsByStatus(status string, pageNumber, pageSize int) (SupportTickets, error)

func FindSupportTicketsForUser

func FindSupportTicketsForUser(user User) (SupportTickets, error)

func (SupportTickets) ViewSupportTickets

func (st SupportTickets) ViewSupportTickets(lang string) []ViewSupportTicket

type Thread

type Thread struct {
	Message
	LastUpdated time.Time
	LastRead    *time.Time
}

func CreateThread

func CreateThread(
	threadType, uuid, title, text string,
	senderUser *User, recieverUser *User, save bool,
) (*Thread, error)

func FindPrivateThread

func FindPrivateThread(u1, u2 User) Thread

func FindThreadByUuid

func FindThreadByUuid(uuid string) (*Thread, error)

func GetDisputeClaimThread

func GetDisputeClaimThread(disputeClaim DisputeClaim) (*Thread, error)

func GetMessageboardThread

func GetMessageboardThread(uuid string) (*Thread, error)

func GetNewsThread

func GetNewsThread(lang string) (*Thread, error)

func GetPrivateThread

func GetPrivateThread(sender, reciever User, message string, createIfNoExists bool) (*Thread, error)

func GetShoutboxThread

func GetShoutboxThread(lang string) (*Thread, error)

func GetStoreVerificationThread

func GetStoreVerificationThread(store Store, createIfNotExists bool) (*Thread, error)

func GetTransactionThread

func GetTransactionThread(transaction Transaction, message string) (*Thread, error)

func (Thread) Messages

func (t Thread) Messages(order string) Messages

func (Thread) Validate

func (m Thread) Validate() error

func (Thread) ViewThread

func (t Thread) ViewThread(lang string, reciever *User) ViewThread

type ThreadPerusalStatus

type ThreadPerusalStatus struct {
	ThreadUuid   string    `json:"thread_uuid" gorm:"primary_key" sql:"size:1024"`
	UserUuid     string    `json:"user_uuid" gorm:"primary_key" sql:"size:1024"`
	LastReadDate time.Time `json:"last_reade_date" gorm:"index"`
}

func FindThreadPerusalStatus

func FindThreadPerusalStatus(threadUuid, userUuid string) (*ThreadPerusalStatus, error)

func (ThreadPerusalStatus) Save

func (ts ThreadPerusalStatus) Save() error

func (ThreadPerusalStatus) SaveToDatabase

func (itm ThreadPerusalStatus) SaveToDatabase() error

func (ThreadPerusalStatus) Validate

func (ts ThreadPerusalStatus) Validate() error

type Threads

type Threads []Thread

func FindThreadsByActiveUsersByType

func FindThreadsByActiveUsersByType(threadType string) Threads

func FindThreadsByType

func FindThreadsByType(threadType string) Threads

func (Threads) ViewThreads

func (ts Threads) ViewThreads(lang string, reciever *User) []ViewThread

type Transaction

type Transaction struct {
	Uuid        string `json:"uuid" gorm:"primary_key"`
	Type        string `json:"type" sql:"index"`
	Description string `json:"description"`

	PackageUuid string `json:"-" sql:"index"`
	StoreUuid   string `json:"-" sql:"index"`
	BuyerUuid   string `json:"-" sql:"index"`
	DisputeUuid string `json:"dispute_uuid" sql:"index"`

	Status         []TransactionStatus `json:"transaction_status"`
	ShippingStatus []ShippingStatus    `json:"shipping_status"`
	Package        Package             `json:"-"`
	Buyer          User                `json:"-"  gorm:"foreignkey:buyer_uuid"`
	Store          Store               `json:"-"`
	Dispute        Dispute             `json:"-"`

	BitcoinTransaction     *BitcoinTransaction     `json:"bitcoin_transcation,omitempty" gorm:"foreignkey:uuid"`
	EthereumTransaction    *EthereumTransaction    `json:"ethereum_transcation,omitempty" gorm:"foreignkey:uuid"`
	BitcoinCashTransaction *BitcoinCashTransaction `json:"bitcoin_cash_transcation,omitempty" gorm:"foreignkey:uuid"`
}

func CreateTransactionForPackage

func CreateTransactionForPackage(
	itemPackage Package,
	buyer User,
	tp string,
	quantity int,
	shippingOption *ShippingOption,
	shippingAddress string,
) (*Transaction, error)

func FindCompletedTransactions

func FindCompletedTransactions() []Transaction

func FindOldCompletedTransactions

func FindOldCompletedTransactions() []Transaction

func FindOldFailedTransactions

func FindOldFailedTransactions() []Transaction

func FindOldPendingTransactions

func FindOldPendingTransactions() []Transaction

func FindOldReleasedTransactions

func FindOldReleasedTransactions() []Transaction

func FindPendingTransactions

func FindPendingTransactions() []Transaction

func FindRecentlyCancelledAndReleasedTransactions

func FindRecentlyCancelledAndReleasedTransactions() []Transaction

func FindReleasedAndCancelledTransactionsWithNonZeroAmount

func FindReleasedAndCancelledTransactionsWithNonZeroAmount() []Transaction

func FindReleasedTransactions

func FindReleasedTransactions() []Transaction

func FindStalledCompletedTransactions

func FindStalledCompletedTransactions() []Transaction

func FindTransactionByDisputeUuid

func FindTransactionByDisputeUuid(uuid string) (*Transaction, error)

func FindTransactionByUuid

func FindTransactionByUuid(uuid string) (*Transaction, error)

func FindTransactionsForBuyer

func FindTransactionsForBuyer(userUuid string) []Transaction

func FindTransactionsForStore

func FindTransactionsForStore(userUuid string) []Transaction

func GetDisputedTransactionsPaged

func GetDisputedTransactionsPaged(page, pagesize int, resolverUuid, status string) []Transaction

func (Transaction) Cancel

func (t Transaction) Cancel(comment, userUuid string) error

func (Transaction) CancelledAt

func (t Transaction) CancelledAt() *time.Time

func (Transaction) CommissionPercent

func (t Transaction) CommissionPercent() float64

func (Transaction) Complete

func (t Transaction) Complete(comment, userUuid string) error

func (Transaction) CompletedAt

func (t Transaction) CompletedAt() *time.Time

func (Transaction) CreateDispute

func (tx Transaction) CreateDispute(claim string) (*Dispute, error)

func (Transaction) CreatedAt

func (t Transaction) CreatedAt() time.Time

func (Transaction) CurrentAmountPaid

func (t Transaction) CurrentAmountPaid() float64

func (Transaction) CurrentPaymentStatus

func (t Transaction) CurrentPaymentStatus() string

func (Transaction) CurrentShippingStatus

func (t Transaction) CurrentShippingStatus() string

func (Transaction) Fail

func (t Transaction) Fail(comment, userUuid string) error

func (Transaction) Freeze

func (t Transaction) Freeze(comment, userUuid string) error

func (Transaction) FrozenAt

func (t Transaction) FrozenAt() *time.Time

func (Transaction) FundFromUserWallets

func (t Transaction) FundFromUserWallets(user User) (PaymentReceipt, error)

For now it assumes that users hold only 1 wallets of each CC

func (Transaction) IsCancelled

func (t Transaction) IsCancelled() bool

func (Transaction) IsCompleted

func (t Transaction) IsCompleted() bool

func (Transaction) IsDispatched

func (t Transaction) IsDispatched() bool

func (Transaction) IsFailed

func (t Transaction) IsFailed() bool

func (Transaction) IsFrozen

func (t Transaction) IsFrozen() bool

func (Transaction) IsPending

func (t Transaction) IsPending() bool

func (Transaction) IsReleased

func (t Transaction) IsReleased() bool

func (Transaction) IsShipped

func (t Transaction) IsShipped() bool

func (Transaction) MakePending

func (t Transaction) MakePending(comment, userUuid string) error

func (Transaction) NumberOfMessages

func (t Transaction) NumberOfMessages() int

func (Transaction) Release

func (t Transaction) Release(comment, userUuid string) error

func (Transaction) ReleasedAt

func (t Transaction) ReleasedAt() *time.Time

func (Transaction) Remove

func (t Transaction) Remove() error

func (Transaction) Save

func (t Transaction) Save() error

func (*Transaction) SetShippingStatus

func (t *Transaction) SetShippingStatus(statusString string, comment, userUuid string)

func (*Transaction) SetTransactionStatus

func (t *Transaction) SetTransactionStatus(
	statusString string,
	newAmount float64,
	comment,
	userUuid string,
	receipt *PaymentReceipt,
) error

func (Transaction) StatusSortedByTime

func (t Transaction) StatusSortedByTime() []TransactionStatus

func (Transaction) StatusTime

func (t Transaction) StatusTime(statusString string) *time.Time

func (Transaction) String

func (t Transaction) String() string

func (Transaction) TransactionAmount

func (t Transaction) TransactionAmount() float64

func (Transaction) TransactionCurrency

func (t Transaction) TransactionCurrency() string

func (Transaction) UpdateTransactionStatus

func (t Transaction) UpdateTransactionStatus() error

func (Transaction) ViewTransaction

func (t Transaction) ViewTransaction() ViewTransaction

type TransactionStatus

type TransactionStatus struct {
	gorm.Model
	Time               time.Time `json:"time" sql:"index"`
	Amount             float64   `json:"amount"`
	Status             string    `json:"status" sql:"index"`
	Comment            string    `json:"comment"`
	UserUuid           string    `json:"-" sql:"index"`
	TransactionUuid    string    `json:"-" sql:"index"`
	PaymentReceiptUuid string    `json:"-" sql:"index" sql:"index"`

	PaymentReceipt *PaymentReceipt `json:"payment_receipt,omitempty"`
}

func (TransactionStatus) Save

func (ts TransactionStatus) Save() error

type Transactions

type Transactions []Transaction

func FindDisputedTransactionsForUser

func FindDisputedTransactionsForUser(userUuid string) Transactions

func (Transactions) ViewTransactions

func (ts Transactions) ViewTransactions() []ViewTransaction

type TxStats

type TxStats struct {
	TxNumber int
	TxVolume float64
}

func GetBitcoinCashTxStatsForBuyer

func GetBitcoinCashTxStatsForBuyer(uuid string) TxStats

func GetBitcoinCashTxStatsForVendor

func GetBitcoinCashTxStatsForVendor(uuid string) TxStats

Tx Stats

func GetBitcoinTxStatsForBuyer

func GetBitcoinTxStatsForBuyer(uuid string) TxStats

func GetBitcoinTxStatsForVendor

func GetBitcoinTxStatsForVendor(uuid string) TxStats

Tx Stats

func GetEthereumTxStatsForBuyer

func GetEthereumTxStatsForBuyer(uuid string) TxStats

func GetEthereumTxStatsForVendor

func GetEthereumTxStatsForVendor(uuid string) TxStats

type User

type User struct {
	Uuid           string `json:"-" gorm:"primary_key"`
	Username       string `json:"username" gorm:"type:varchar(16);unique"`
	PassphraseHash string `json:"-"`

	// Login dates
	RegistrationDate time.Time `json:"registration_date" gorm:"index"`
	LastLoginDate    time.Time `json:"last_login_date" gorm:"index"`

	// Settings
	Language string `json:"-" gorm:"index"`
	Currency string `json:"-" gorm:"index"`

	// Profile
	Bitcoin                  string `json:"-"`
	BitcoinMultisigPublicKey string `json:"-"`
	Ethereum                 string `json:"-"`
	BitcoinCash              string `json:"-"`

	// Contacts and Public Profile Info
	Bitmessage      string `json:"bitmessage"`
	Tox             string `json:"tox"`
	Email           string `json:"email"`
	Pgp             string `json:"pgp" sql:"type:varchar(8192);"`
	Description     string `json:"description" sql:"size:140"`
	LongDescription string `json:"long_description" sql:"size:2048"`
	InviteCode      string `json:"-" gorm:"unique"`

	// Misc settings
	TwoFactorAuthentication bool `json:"-" gorm:"index"`
	Banned                  bool `json:"-" gorm:"index"`
	HasAvatar               bool `json:"-" gorm:"index"`

	// Roles
	IsAdmin bool `json:"is_admin" gorm:"index"`
	IsStaff bool `json:"is_staff" gorm:"index"`

	// Relations
	InviterUuid string `json:"-" gorm:"index"`

	// Account types. Mainly used for referral percents
	IsGoldAccount   bool `json:"-"`
	IsSilverAccount bool `json:"-"`
	IsBronzeAccount bool `json:"-"`
	IsFreeAccount   bool `json:"-"`

	// ORM timestamps
	CreatedAt *time.Time `json:"-" gorm:"index"`
	UpdatedAt *time.Time `json:"-" gorm:"index"`
	DeletedAt *time.Time `json:"-" gorm:"index"`

	// Finance Wallets
	UserBitcoinWallets     []UserBitcoinWallet     `json:"-"`
	UserEthereumWallets    []UserEthereumWallet    `json:"-"`
	UserBitcoinCashWallets []UserBitcoinCashWallet `json:"-"`

	HasDownloadedApp          bool `json:"-" gorm:"index"`
	HasVisitedDownloadAppPage bool `json:"-" gorm:"index"`
}

func CreateUser

func CreateUser(username string, passphrase string, inviteCode string) (*User, error)

func FindUserByInviteCode

func FindUserByInviteCode(code string) (*User, error)

func FindUserByUsername

func FindUserByUsername(username string) (*User, error)

func FindUserByUuid

func FindUserByUuid(uuid string) (*User, error)

func (User) BitcoinAddress

func (s User) BitcoinAddress() string

func (User) BitcoinCashAddress

func (s User) BitcoinCashAddress() string

func (User) CheckPassphrase

func (u User) CheckPassphrase(passphrase string) bool

func (User) EthereumAddress

func (s User) EthereumAddress() string

func (User) FindRecentBitcoinCashWallet

func (u User) FindRecentBitcoinCashWallet() UserBitcoinCashWallet

func (User) FindRecentBitcoinWallet

func (u User) FindRecentBitcoinWallet() UserBitcoinWallet

func (User) FindRecentEthereumWallet

func (u User) FindRecentEthereumWallet() UserEthereumWallet

func (User) FindUserBitcoinCashWallets

func (u User) FindUserBitcoinCashWallets() UserBitcoinCashWallets

func (User) FindUserBitcoinWallets

func (u User) FindUserBitcoinWallets() UserBitcoinWallets

func (User) FindUserEthereumWallets

func (u User) FindUserEthereumWallets() UserEthereumWallets

func (User) Fingerprint

func (u User) Fingerprint() string

func (User) GenerateAvatar

func (u User) GenerateAvatar() error

func (User) Iniviter

func (u User) Iniviter() *User

Iniviter is a circular reference. Hence not a relation in a model

func (User) NumberOfInvitedUsers

func (u User) NumberOfInvitedUsers() int

func (User) PGPFingerprint

func (u User) PGPFingerprint() string

func (User) Remove

func (u User) Remove() error

func (User) Save

func (u User) Save() error

func (User) SaveToDatabase

func (u User) SaveToDatabase() error

func (User) Store

func (u User) Store() *Store

UserStore returns a store user belongs to

func (User) String

func (u User) String() string

func (User) Validate

func (u User) Validate() error

func (User) ViewUser

func (s User) ViewUser(lang string) ViewUser

type UserBitcoinCashWallet

type UserBitcoinCashWallet struct {
	PublicKey string `json:"public_key" gorm:"primary_key"`
	UserUuid  string `json:"-"`

	User User `json:"-"`

	CreatedAt *time.Time `json:"created_at,omitempty"`
	UpdatedAt *time.Time `json:"updated_at,omitempty"`
	DeletedAt *time.Time `json:"deleted_at,omitempty"`
}

func CreateBitcoinCashWallet

func CreateBitcoinCashWallet(user User) (*UserBitcoinCashWallet, error)

func FindAllBitcoinCashWallets

func FindAllBitcoinCashWallets() []UserBitcoinCashWallet

func FindBitcoinCashWalletsForUser

func FindBitcoinCashWalletsForUser(userUuid string) []UserBitcoinCashWallet

func FindRecentBitcoinCashWallets

func FindRecentBitcoinCashWallets() []UserBitcoinCashWallet

FindRecentBitcoinCashWallets returns wallets no older than 1 day

func FindUserBitcoinCashWalletByPublicKey

func FindUserBitcoinCashWalletByPublicKey(publicKey string) (*UserBitcoinCashWallet, error)

func GetAllUserBitcoinCashWallets

func GetAllUserBitcoinCashWallets() []UserBitcoinCashWallet

func (UserBitcoinCashWallet) CurrentBalance

func (UserBitcoinCashWallet) Remove

func (w UserBitcoinCashWallet) Remove() error

func (UserBitcoinCashWallet) Save

func (w UserBitcoinCashWallet) Save() error

func (UserBitcoinCashWallet) SaveToDatabase

func (w UserBitcoinCashWallet) SaveToDatabase() error

func (UserBitcoinCashWallet) SweepToBitcoinWallet

func (w UserBitcoinCashWallet) SweepToBitcoinWallet(btcWalletAddress string) (PaymentReceipt, error)

func (UserBitcoinCashWallet) UpdateBalance

func (UserBitcoinCashWallet) Validate

func (w UserBitcoinCashWallet) Validate() error

type UserBitcoinCashWalletAction

type UserBitcoinCashWalletAction struct {
	ID                 int    `json:"id" gorm:"primary_key"`
	UserUuid           string `json:"user_uuid" gorm:"user_uuid"`
	PublicKey          string `json:"public_key" gorm:"index"`
	PaymentReceiptUuid string `json:"payment_receipt_uuid" gorm:"payment_receipt_uuid"`

	Action string  `json:"action"`
	Amount float64 `json:"amount"`

	CreatedAt time.Time `json:"created_at"`

	User                  User                  `json:"-"`
	UserBitcoinCashWallet UserBitcoinCashWallet `gorm:"AssociationForeignKey:PublicKey" json:"-"`
	PaymentReceipt        PaymentReceipt        `json:"-"`
}

func FindUserBitcoinCashWalletActionsForUser

func FindUserBitcoinCashWalletActionsForUser(userUuid string) []UserBitcoinCashWalletAction

func GetAllUserBitcoinCashWalletActions

func GetAllUserBitcoinCashWalletActions() []UserBitcoinCashWalletAction

func (UserBitcoinCashWalletAction) Remove

func (UserBitcoinCashWalletAction) Save

func (UserBitcoinCashWalletAction) SaveToDatabase

func (w UserBitcoinCashWalletAction) SaveToDatabase() error

func (UserBitcoinCashWalletAction) Validate

func (w UserBitcoinCashWalletAction) Validate() error

type UserBitcoinCashWalletBalance

type UserBitcoinCashWalletBalance struct {
	ID                 int     `json:"id" gorm:"primary_key"`
	PublicKey          string  `json:"public_key" gorm:"index"`
	Balance            float64 `json:"balance"`
	UnconfirmedBalance float64 `json:"unconfirmed_balance"`
	Type               string  `json:"type"`

	CreatedAt time.Time `json:"created_at"`

	UserBitcoinCashWallet UserBitcoinCashWallet `gorm:"AssociationForeignKey:PublicKey" json:"-"`
}

func GetAlllUserBitcoinCashWalletBalances

func GetAlllUserBitcoinCashWalletBalances() []UserBitcoinCashWalletBalance

func (UserBitcoinCashWalletBalance) Remove

func (UserBitcoinCashWalletBalance) Save

func (UserBitcoinCashWalletBalance) SaveToDatabase

func (w UserBitcoinCashWalletBalance) SaveToDatabase() error

func (UserBitcoinCashWalletBalance) Validate

func (w UserBitcoinCashWalletBalance) Validate() error

type UserBitcoinCashWallets

type UserBitcoinCashWallets []UserBitcoinCashWallet

func (UserBitcoinCashWallets) Balance

func (UserBitcoinCashWallets) EstimateFee

func (ws UserBitcoinCashWallets) EstimateFee(address string, amount float64) (float64, string, error)

func (UserBitcoinCashWallets) Send

func (ws UserBitcoinCashWallets) Send(address string, amount float64) (PaymentReceipt, error)

type UserBitcoinWallet

type UserBitcoinWallet struct {
	PublicKey string `json:"public_key" gorm:"primary_key"`
	UserUuid  string `json:"-"`
	IsLocked  bool   `json:"-"`

	User User `json:"-"`

	CreatedAt *time.Time `json:"created_at,omitempty"`
	UpdatedAt *time.Time `json:"updated_at,omitempty"`
	DeletedAt *time.Time `json:"deleted_at,omitempty"`
}

func CreateBitcoinWallet

func CreateBitcoinWallet(user User) (*UserBitcoinWallet, error)

func FindAllBitcoinWallets

func FindAllBitcoinWallets() []UserBitcoinWallet

func FindBitcoinWalletsForUser

func FindBitcoinWalletsForUser(userUuid string) []UserBitcoinWallet

func FindRecentBitcoinWallets

func FindRecentBitcoinWallets() []UserBitcoinWallet

FindRecentBitcoinWallets returns wallets no older than 1 day

func FindUserBitcoinWalletByPublicKey

func FindUserBitcoinWalletByPublicKey(publicKey string) (*UserBitcoinWallet, error)

func GetAllUserBitcoinWallets

func GetAllUserBitcoinWallets() []UserBitcoinWallet

func (UserBitcoinWallet) CurrentBalance

func (w UserBitcoinWallet) CurrentBalance() UserBitcoinWalletBalance

func (UserBitcoinWallet) Remove

func (w UserBitcoinWallet) Remove() error

func (UserBitcoinWallet) Save

func (w UserBitcoinWallet) Save() error

func (UserBitcoinWallet) SaveToDatabase

func (w UserBitcoinWallet) SaveToDatabase() error

func (UserBitcoinWallet) UpdateBalance

func (w UserBitcoinWallet) UpdateBalance(force bool) (UserBitcoinWalletBalance, error)

func (UserBitcoinWallet) Validate

func (w UserBitcoinWallet) Validate() error

type UserBitcoinWalletAction

type UserBitcoinWalletAction struct {
	ID                 int    `json:"id" gorm:"primary_key"`
	UserUuid           string `json:"user_uuid" gorm:"user_uuid"`
	PaymentReceiptUuid string `json:"payment_receipt_uuid" gorm:"payment_receipt_uuid"`
	PublicKey          string `json:"public_key" gorm:"index"`

	Action string  `json:"action"`
	Amount float64 `json:"amount"`

	CreatedAt time.Time `json:"created_at"`

	User              User              `json:"-"`
	UserBitcoinWallet UserBitcoinWallet `gorm:"AssociationForeignKey:PublicKey" json:"-"`
	PaymentReceipt    PaymentReceipt    `json:"-"`
}

func FindUserBitcoinWalletActionsForUser

func FindUserBitcoinWalletActionsForUser(userUuid string) []UserBitcoinWalletAction

func GetAllUserBitcoinWalletActions

func GetAllUserBitcoinWalletActions() []UserBitcoinWalletAction

func (UserBitcoinWalletAction) Remove

func (w UserBitcoinWalletAction) Remove() error

func (UserBitcoinWalletAction) Save

func (w UserBitcoinWalletAction) Save() error

func (UserBitcoinWalletAction) SaveToDatabase

func (w UserBitcoinWalletAction) SaveToDatabase() error

func (UserBitcoinWalletAction) Validate

func (w UserBitcoinWalletAction) Validate() error

type UserBitcoinWalletBalance

type UserBitcoinWalletBalance struct {
	ID                 int     `json:"id" gorm:"primary_key"`
	PublicKey          string  `json:"public_key" gorm:"index"`
	Balance            float64 `json:"balance"`
	UnconfirmedBalance float64 `json:"unconfirmed_balance"`
	Type               string  `json:"type"`

	CreatedAt time.Time `json:"created_at"`

	UserBitcoinWallet UserBitcoinWallet `gorm:"AssociationForeignKey:PublicKey" json:"-"`
}

func GetAlllUserBitcoinWalletBalances

func GetAlllUserBitcoinWalletBalances() []UserBitcoinWalletBalance

func (UserBitcoinWalletBalance) Remove

func (w UserBitcoinWalletBalance) Remove() error

func (UserBitcoinWalletBalance) Save

func (UserBitcoinWalletBalance) SaveToDatabase

func (w UserBitcoinWalletBalance) SaveToDatabase() error

func (UserBitcoinWalletBalance) Validate

func (w UserBitcoinWalletBalance) Validate() error

type UserBitcoinWallets

type UserBitcoinWallets []UserBitcoinWallet

func (UserBitcoinWallets) Balance

func (UserBitcoinWallets) EstimateFee

func (ws UserBitcoinWallets) EstimateFee(address string, amount float64) (float64, string, error)

func (UserBitcoinWallets) Send

func (ws UserBitcoinWallets) Send(address string, amount float64) (PaymentReceipt, error)

type UserEthereumWallet

type UserEthereumWallet struct {
	PublicKey string `json:"public_key" gorm:"primary_key"`
	UserUuid  string `json:"-"`

	User User `json:"-"`

	CreatedAt *time.Time `json:"created_at,omitempty"`
	UpdatedAt *time.Time `json:"updated_at,omitempty"`
	DeletedAt *time.Time `json:"deleted_at,omitempty"`
}

func CreateEthereumWallet

func CreateEthereumWallet(user User) (*UserEthereumWallet, error)

func FindAllEthereumWallets

func FindAllEthereumWallets() []UserEthereumWallet

func FindEthereumWalletsForUser

func FindEthereumWalletsForUser(userUuid string) []UserEthereumWallet

func FindRecentEthereumWallets

func FindRecentEthereumWallets() []UserEthereumWallet

func FindUserEthereumWalletByPublicKey

func FindUserEthereumWalletByPublicKey(publicKey string) (*UserEthereumWallet, error)

func GetAllUserEthereumWallets

func GetAllUserEthereumWallets() []UserEthereumWallet

func (UserEthereumWallet) CurrentBalance

func (w UserEthereumWallet) CurrentBalance() UserEthereumWalletBalance

func (UserEthereumWallet) Remove

func (w UserEthereumWallet) Remove() error

func (UserEthereumWallet) Save

func (w UserEthereumWallet) Save() error

func (UserEthereumWallet) SaveToDatabase

func (w UserEthereumWallet) SaveToDatabase() error

func (UserEthereumWallet) Send

func (w UserEthereumWallet) Send(address string, amount float64) (PaymentReceipt, error)

func (UserEthereumWallet) UpdateBalance

func (w UserEthereumWallet) UpdateBalance(force bool) (UserEthereumWalletBalance, error)

func (UserEthereumWallet) Validate

func (w UserEthereumWallet) Validate() error

type UserEthereumWalletAction

type UserEthereumWalletAction struct {
	ID                 int    `json:"id" gorm:"primary_key"`
	UserUuid           string `json:"user_uuid" gorm:"user_uuid"`
	PublicKey          string `json:"public_key" gorm:"index"`
	PaymentReceiptUuid string `json:"payment_receipt_uuid" gorm:"payment_receipt_uuid"`

	Action string  `json:"action"`
	Amount float64 `json:"amount"`

	CreatedAt time.Time `json:"created_at"`

	User               User               `json:"-"`
	UserEthereumWallet UserEthereumWallet `gorm:"AssociationForeignKey:PublicKey" json:"-"`
	PaymentReceipt     PaymentReceipt     `json:"-"`
}

func FindUserEthereumWalletActionsForUser

func FindUserEthereumWalletActionsForUser(userUuid string) []UserEthereumWalletAction

func GetAllUserEthereumWalletActions

func GetAllUserEthereumWalletActions() []UserEthereumWalletAction

func (UserEthereumWalletAction) Remove

func (w UserEthereumWalletAction) Remove() error

func (UserEthereumWalletAction) Save

func (UserEthereumWalletAction) SaveToDatabase

func (w UserEthereumWalletAction) SaveToDatabase() error

func (UserEthereumWalletAction) Validate

func (w UserEthereumWalletAction) Validate() error

type UserEthereumWalletBalance

type UserEthereumWalletBalance struct {
	ID        int     `json:"id" gorm:"primary_key"`
	PublicKey string  `json:"public_key" gorm:"index"`
	Balance   float64 `json:"balance"`
	Type      string  `json:"type"`

	UserEthereumWallet UserEthereumWallet `gorm:"AssociationForeignKey:PublicKey" json:"-"`

	CreatedAt time.Time `json:"created_at"`
}

func GetAlllUserEthereumWalletBalances

func GetAlllUserEthereumWalletBalances() []UserEthereumWalletBalance

func (UserEthereumWalletBalance) Remove

func (w UserEthereumWalletBalance) Remove() error

func (UserEthereumWalletBalance) Save

func (UserEthereumWalletBalance) SaveToDatabase

func (w UserEthereumWalletBalance) SaveToDatabase() error

func (UserEthereumWalletBalance) Validate

func (w UserEthereumWalletBalance) Validate() error

type UserEthereumWallets

type UserEthereumWallets []UserEthereumWallet

func (UserEthereumWallets) Balance

type UserSettingsHistory

type UserSettingsHistory struct {
	gorm.Model

	UserUuid string    `json:"user_uuid"`
	Datetime time.Time `json:"datetime"`
	Action   string    `json:"action" sql:"size:1024"`
	Type     string    `json:"string"`
	User     User
}

func SettingsChangeHistoryByUser

func SettingsChangeHistoryByUser(uuid string) []UserSettingsHistory

func (UserSettingsHistory) Save

func (u UserSettingsHistory) Save() error

type Users

type Users []User

func (Users) ViewUsers

func (users Users) ViewUsers(lang string) []ViewUser

type ViewCurrentTransactionStatus

type ViewCurrentTransactionStatus struct {
	*CurrentTransactionStatus
	Image           string  `json:"image,omitempty"`
	ItemDescription string  `json:"item_description,omitempty"`
	ItemName        string  `json:"item_name,omitempty"`
	ItemRating      float64 `json:"item_rating,omitempty"`
	UpdatedAtStr    string  `json:"updated_at_string,omitempty"`
	CreatedAtStr    string  `json:"created_at_string,omitempty"`
	IsDisputed      bool    `json:"is_disputed,omitempty"`
}

type ViewExtendedUser

type ViewExtendedUser struct {
	*ExtendedUser
	InviterUsername     string
	RegistrationDateStr string
	LastLoginDateStr    string
	IsOnline            bool

	// Statistics
	StaffStats StaffStats

	// Levels
	StaffLevel int `json:"vendor_level"`
	BuyerLevel int `json:"buyer_level"`
}

type ViewFeedItem

type ViewFeedItem struct {
	*FeedItem

	ViewItems        []ViewItem
	ViewMessage      ViewMessage
	ViewOtherUser    ViewUser
	ViewRatingReview ViewRatingReview
	ViewThread       ViewThread
	ViewTransaction  ViewTransaction
	ViewUser         ViewUser

	CreatedAt string
}

type ViewItem

type ViewItem struct {
	*Item
	DescriptionHTML      template.HTML  `json:"description_html"`
	ShortDescriptionHTML template.HTML  `json:"short_description_html"`
	GroupPackages        []GroupPackage `json:"packages"`

	MaxPriceBTCStr   string  `json:"-"`
	MaxPriceBTCFloat float64 `json:"-"`
	MinPriceBTCStr   string  `json:"-"`
	MinPriceBTCFloat float64 `json:"-"`

	MaxPriceBCHStr   string  `json:"-"`
	MaxPriceBCHFloat float64 `json:"-"`
	MinPriceBCHStr   string  `json:"-"`
	MinPriceBCHFloat float64 `json:"-"`

	MaxPriceETHStr   string  `json:"-"`
	MaxPriceETHFloat float64 `json:"-"`
	MinPriceETHStr   string  `json:"-"`
	MinPriceETHFloat float64 `json:"-"`

	MaxPriceUSDStr   string  `json:"-"`
	MaxPriceUSDFloat float64 `json:"-"`
	MinPriceUSDStr   string  `json:"-"`
	MinPriceUSDFloat float64 `json:"-"`

	MaxPriceEURStr   string  `json:"-"`
	MaxPriceEURFloat float64 `json:"-"`
	MinPriceEURStr   string  `json:"-"`
	MinPriceEURFloat float64 `json:"-"`

	MaxPriceGBPStr   string  `json:"-"`
	MaxPriceGBPFloat float64 `json:"-"`
	MinPriceGBPStr   string  `json:"-"`
	MinPriceGBPFloat float64 `json:"-"`

	MaxPriceAUDStr   string  `json:"-"`
	MaxPriceAUDFloat float64 `json:"-"`
	MinPriceAUDStr   string  `json:"-"`
	MinPriceAUDFloat float64 `json:"-"`

	MaxPriceRUBStr   string  `json:"-"`
	MaxPriceRUBFloat float64 `json:"-"`
	MinPriceRUBStr   string  `json:"-"`
	MinPriceRUBFloat float64 `json:"-"`

	MedPriceBTCFloat float64 `json:"-"`

	// ViewUser ViewUser `json:"-"`
	ViewStore         ViewStore          `json:"-"`
	ViewPackages      []ViewPackage      `json:"-"`
	ViewRatingReviews []ViewRatingReview `json:"rating_reviews,omitempty"`
	ViewItemCategory  ViewItemCategory   `json:"item_category"`

	Score float64 `json:"score"`
}

func (ViewItem) DBModel

func (vi ViewItem) DBModel() Item

type ViewItemCategory

type ViewItemCategory struct {
	*ItemCategory
	Name                  string             `json:"name"`
	SubViewItemCategories []ViewItemCategory `json:"subcategories"`
}

type ViewItems

type ViewItems []ViewItem

type ViewMessage

type ViewMessage struct {
	*Message
	CreatedAtStr     string        `json:"-"`
	TextHTML         template.HTML `json:"text_html"`
	ShortText        string        `json:"-"`
	IsSuspicious     bool          `json:"is_suspicious"`
	ViewSenderUser   ViewUser      `json:"sender_user"`
	ViewReceiverUser ViewUser      `json:"receiver_user"`
}

type ViewMessageboardThread

type ViewMessageboardThread struct {
	*MessageboardThread
	IsRead           bool
	CreatedAtStr     string
	LastUpdatedAtStr string
}

type ViewPackage

type ViewPackage struct {
	*Package
	CompletedAt string
	CreatedAt   string
	Item        Item
	PriceAUD    string
	PriceBTC    string
	PriceBCH    string
	PriceETH    string
	PriceEUR    string
	PriceGBP    string
	PriceRUB    string
	PriceUSD    string
	Currency    string
	// Seller          User
	Status          string
	TransactionUuid string
	Coordinates     string
	Type            string
}

func (ViewPackage) DBModel

func (vp ViewPackage) DBModel() Package

type ViewPrivateThread

type ViewPrivateThread struct {
	*PrivateThread
	LastUpdatedStr  string
	DisplayUsername string
	IsRead          bool
}

type ViewRatingReview

type ViewRatingReview struct {
	RatingReview
	TransactionAmount string    `json:"-"`
	CreatedAtStr      string    `json:"-"`
	ViewItem          ViewItem  `json:"-"`
	ViewStore         ViewStore `json:"-"`
}

type ViewSerpItem

type ViewSerpItem struct {
	*SerpItem
	IsOnline            bool      `json:"vendor_is_online"`
	LastLoginDateStr    string    `json:"vendor_last_login_date"`
	RegistrationDateStr string    `json:"vendor_registration_date"`
	PriceRangeStr       [2]string `json:"price_range"`
	PriceStr            string    `json:"price"`
}

type ViewSerpStore

type ViewSerpStore struct {
	*SerpStore
	IsOnline            bool
	VendorScoreStr      string
	LastLoginDateStr    string
	RegistrationDateStr string
}

type ViewShippingStatus

type ViewShippingStatus struct {
	Time    string `json:"time"`
	Status  string `json:"status"`
	Comment string `json:"comment"`
}

type ViewStore

type ViewStore struct {
	*Store

	// View Models
	ViewRatingReviews []ViewRatingReview `json:"-"`
	ViewItemCategoies []ViewItemCategory `json:"-"`
	ViewItems         []ViewItem         `json:"-"`

	// Date markers
	RegistrationDateStr string `json:"-"`
	LastLoginDateStr    string `json:"-"`
	IsOnline            bool   `json:"-"`

	// Converted description
	DescriptionHTML template.HTML `json:"-"`

	// Verification
	VerificationRequired         bool
	HasSignedVendorshipAgreement bool
	ActivatedAccount             bool

	// Deposits
	HasDeposits     bool            `json:"has_deposits"`
	DepositsSummary DepositsSummary `json:"deposits_summary"`

	// Level, Score
	Level int     `json:"level"`
	Score float64 `json:"-"`

	ViewAdminUser ViewUser

	// Statistics
	Stats StoreStats
}

type ViewStoreWarning

type ViewStoreWarning struct {
	*StoreWarning
	ViewStore    ViewStore
	CreatedAtStr string
	ExpiresIn    string
	HasExpired   bool
}

type ViewStores

type ViewStores []ViewStore

type ViewSupportTicket

type ViewSupportTicket struct {
	*SupportTicket
	ViewUser      ViewUser
	CurrentStatus string
	CreatedAtStr  string
	UpdatedAtStr  string
}

type ViewThread

type ViewThread struct {
	*ViewMessage
	LastMessage *ViewMessage  `json:"-"`
	Messages    []ViewMessage `json:"messages"`

	NumberOfMessages       int   `json:"number_of_messages"`
	NumberOfUnreadMessages int   `json:"number_of_unread_messages"`
	IsRead                 bool  `json:"is_read"`
	Pages                  []int `json:"-"`
	TitleUser              User  `json:"-"`

	LastUpdatedAtStr      string `json:"last_updated_at_str"`
	LastMessageByUsername string `json:"last_message_by_username"`
}

type ViewTransaction

type ViewTransaction struct {
	*Transaction
	RatingReview          RatingReview `json:"-"`
	Amount                string       `json:"amount,omitempty"`
	AmountToPay           string       `json:"amount_to_pay,omitempty"`
	CurrentAmountPaid     string       `json:"current_amount_paid,omitempty"`
	CompletedAt           string       `json:"completed_at_string,omitempty"`
	ConfirmedAt           string       `json:"confirmed_at_string,omitempty"`
	CreatedAt             string       `json:"created_at_string,omitempty"`
	CurrentPaymentStatus  string       `json:"current_payment_status,omitempty"`
	CurrentShippingStatus string       `json:"current_shipping_status,omitempty"`
	NextStatusTime        string       `json:"next_status_time_string,omitempty"`
	NextStatusPercent     float64      `json:"next_status_percent,omitempty"`

	FEAllowed     bool `json:"fe_allowed,omitempty"`
	CancelAllowed bool `json:"cancel_allowed,omitempty"`
	IsCompleted   bool `json:"is_completed,omitempty"`
	IsReleased    bool `json:"is_released,omitempty"`
	IsFrozen      bool `json:"is_frozen,omitempty"`
	IsCancelled   bool `json:"is_cancelled,omitempty"`
	IsPending     bool `json:"is_pending,omitempty"`
	IsFailed      bool `json:"is_failed,omitempty"`
	IsDispatched  bool `json:"is_dispatched,omitempty"`
	IsShipped     bool `json:"is_shipped,omitempty"`
	IsReviewed    bool `json:"is_reviewed,omitempty"`
	IsDisputed    bool `json:"is_disputed,omitempty"`

	NumberOfMessages int `json:"number_of_messages,omitempty"`

	ViewTransactionStatus []ViewTransactionStatus `json:"transaction_status_list,omitempty"`
	ViewShippingStatus    []ViewShippingStatus    `json:"shipping_status_list,omitempty"`
}

func (ViewTransaction) DBModel

func (vt ViewTransaction) DBModel() Transaction

type ViewTransactionStatus

type ViewTransactionStatus struct {
	Time    string  `json:"time"`
	Amount  float64 `json:"amount"`
	Status  string  `json:"status"`
	Comment string  `json:"comment"`

	BTCPaymentResult *apis.BTCPaymentResult `json:"btc_payment_result,omitempty"`
	BCHPaymentResult *apis.BCHPaymentResult `json:"bch_payment_result,omitempty"`
	ETHPaymentResult *apis.ETHPaymentResult `json:"eth_payment_result,omitempty"`
}

type ViewUser

type ViewUser struct {
	*User
	InviterUsername     string        `json:"-"`
	ViewStore           *ViewStore    `json:"-"`
	RegistrationDateStr string        `json:"-"`
	LastLoginDateStr    string        `json:"-"`
	IsOnline            bool          `json:"-"`
	LongDescriptionHTML template.HTML `json:"-"`

	IsStore bool `json:"-"`

	// Wallets
	BitcoinBalance           apis.BTCWalletBalance         `json:"-"` // Bitcoin Wallets
	BitcoinWallets           UserBitcoinWallets            `json:"-"`
	BitcoinWallet            UserBitcoinWallet             `json:"-"`
	BitcoinWalletActions     []UserBitcoinWalletAction     `json:"-"`
	EthereumBalance          apis.ETHWalletBalance         `json:"-"` // Ethereum Wallets
	EthereumWallets          UserEthereumWallets           `json:"-"`
	EthereumWallet           UserEthereumWallet            `json:"-"`
	EthereumWalletActions    []UserEthereumWalletAction    `json:"-"`
	BitcoinCashBalance       apis.BCHWalletBalance         `json:"-"` // Bitcoin Cash Wallets
	BitcoinCashWallets       UserBitcoinCashWallets        `json:"-"`
	BitcoinCashWallet        UserBitcoinCashWallet         `json:"-"`
	BitcoinCashWalletActions []UserBitcoinCashWalletAction `json:"-"`

	// Statistics
	StaffStats StaffStats `json:"-"`
	// Levels
	StaffLevel int `json:"vendor_level"`
	// VendorLevel int `json:"vendor_level"`
	BuyerLevel int `json:"buyer_level"`
}

type ViewUsers

type ViewUsers []ViewUser

Source Files

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL