316 lines
11 KiB
Go
316 lines
11 KiB
Go
package domain
|
|
|
|
import (
|
|
"time"
|
|
|
|
dbgen "github.com/SamuelTariku/FortuneBet-Backend/gen/db"
|
|
)
|
|
|
|
type ShopTransactionType int
|
|
|
|
const (
|
|
TRANSACTION_CASHOUT ShopTransactionType = iota
|
|
TRANSACTION_DEPOSIT
|
|
TRANSACTION_BET
|
|
)
|
|
|
|
type PaymentOption int64
|
|
|
|
const (
|
|
CASH_TRANSACTION PaymentOption = iota
|
|
TELEBIRR_TRANSACTION
|
|
ARIFPAY_TRANSACTION
|
|
BANK
|
|
)
|
|
|
|
// ShopTransaction only represents branch transactions
|
|
// This is only used for statistic data
|
|
type ShopTransaction struct {
|
|
ID int64
|
|
Amount Currency
|
|
BranchID int64
|
|
CompanyID int64
|
|
UserID int64
|
|
Type ShopTransactionType
|
|
PaymentOption PaymentOption
|
|
FullName string
|
|
PhoneNumber string
|
|
// Payment Details for bank
|
|
BankCode ValidString
|
|
BeneficiaryName ValidString
|
|
AccountName ValidString
|
|
AccountNumber ValidString
|
|
ReferenceNumber ValidString
|
|
Verified bool
|
|
ApprovedBy ValidInt64
|
|
UpdatedAt time.Time
|
|
CreatedAt time.Time
|
|
}
|
|
|
|
type ShopTransactionRes struct {
|
|
ID int64 `json:"id" example:"1"`
|
|
Amount float32 `json:"amount" example:"100.0"`
|
|
BranchID int64 `json:"branch_id" example:"1"`
|
|
BranchName string `json:"branch_name" example:"Branch Name"`
|
|
BranchLocation string `json:"branch_location" example:"Branch Location"`
|
|
CompanyID int64 `json:"company_id" example:"1"`
|
|
UserID int64 `json:"user_id" example:"1"`
|
|
CreatorFirstName string `json:"creator_first_name" example:"John"`
|
|
CreatorLastName string `json:"creator_last_name" example:"Smith"`
|
|
CreatorPhoneNumber string `json:"creator_phone_number" example:"0911111111"`
|
|
CashierName string `json:"cashier_name" example:"John Smith"`
|
|
Type int64 `json:"type" example:"1"`
|
|
PaymentOption PaymentOption `json:"payment_option" example:"1"`
|
|
FullName string `json:"full_name" example:"John Smith"`
|
|
PhoneNumber string `json:"phone_number" example:"0911111111"`
|
|
BankCode string `json:"bank_code"`
|
|
BeneficiaryName string `json:"beneficiary_name"`
|
|
AccountName string `json:"account_name"`
|
|
AccountNumber string `json:"account_number"`
|
|
ReferenceNumber string `json:"reference_number"`
|
|
Verified bool `json:"verified" example:"true"`
|
|
ApprovedBy int64 `json:"approved_by" example:"1"`
|
|
ApproverFirstName string `json:"approver_first_name" example:"John"`
|
|
ApproverLastName string `json:"approver_last_name" example:"Smith"`
|
|
ApproverPhoneNumber string `json:"approver_phone_number" example:"0911111111"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
}
|
|
|
|
type ShopTransactionDetail struct {
|
|
ID int64
|
|
Amount Currency
|
|
BranchID int64
|
|
BranchName string
|
|
BranchLocation string
|
|
CompanyID int64
|
|
UserID int64
|
|
CreatorFirstName string
|
|
CreatorLastName string
|
|
CreatorPhoneNumber string
|
|
Type ShopTransactionType
|
|
PaymentOption PaymentOption
|
|
FullName string
|
|
PhoneNumber string
|
|
// Payment Details for bank
|
|
BankCode ValidString
|
|
BeneficiaryName ValidString
|
|
AccountName ValidString
|
|
AccountNumber ValidString
|
|
ReferenceNumber ValidString
|
|
Verified bool
|
|
ApprovedBy ValidInt64
|
|
ApproverFirstName ValidString
|
|
ApproverLastName ValidString
|
|
ApproverPhoneNumber ValidString
|
|
UpdatedAt time.Time
|
|
CreatedAt time.Time
|
|
}
|
|
|
|
type ShopTransactionFilter struct {
|
|
CompanyID ValidInt64
|
|
BranchID ValidInt64
|
|
UserID ValidInt64
|
|
Query ValidString
|
|
CreatedBefore ValidTime
|
|
CreatedAfter ValidTime
|
|
}
|
|
type CreateShopTransaction struct {
|
|
Amount Currency
|
|
BranchID int64
|
|
CompanyID int64
|
|
UserID int64
|
|
Type ShopTransactionType
|
|
PaymentOption PaymentOption
|
|
FullName string
|
|
PhoneNumber string
|
|
// Payment Details for bank
|
|
BankCode ValidString
|
|
BeneficiaryName ValidString
|
|
AccountName ValidString
|
|
AccountNumber ValidString
|
|
ReferenceNumber ValidString
|
|
Verified bool
|
|
ApprovedBy ValidInt64
|
|
}
|
|
|
|
func ConvertShopTransaction(transaction ShopTransaction) ShopTransactionRes {
|
|
newTransaction := ShopTransactionRes{
|
|
ID: transaction.ID,
|
|
Amount: transaction.Amount.Float32(),
|
|
BranchID: transaction.BranchID,
|
|
CompanyID: transaction.CompanyID,
|
|
UserID: transaction.UserID,
|
|
Type: int64(transaction.Type),
|
|
PaymentOption: transaction.PaymentOption,
|
|
FullName: transaction.FullName,
|
|
PhoneNumber: transaction.PhoneNumber,
|
|
BankCode: transaction.BankCode.Value,
|
|
BeneficiaryName: transaction.BeneficiaryName.Value,
|
|
AccountName: transaction.AccountName.Value,
|
|
AccountNumber: transaction.AccountNumber.Value,
|
|
ReferenceNumber: transaction.ReferenceNumber.Value,
|
|
Verified: transaction.Verified,
|
|
ApprovedBy: transaction.ApprovedBy.Value,
|
|
CreatedAt: transaction.CreatedAt,
|
|
UpdatedAt: transaction.UpdatedAt,
|
|
}
|
|
|
|
return newTransaction
|
|
}
|
|
|
|
func ConvertShopTransactionDetail(transaction ShopTransactionDetail) ShopTransactionRes {
|
|
newTransaction := ShopTransactionRes{
|
|
ID: transaction.ID,
|
|
Amount: transaction.Amount.Float32(),
|
|
BranchID: transaction.BranchID,
|
|
BranchName: transaction.BranchName,
|
|
BranchLocation: transaction.BranchLocation,
|
|
CompanyID: transaction.CompanyID,
|
|
UserID: transaction.UserID,
|
|
CreatorFirstName: transaction.CreatorFirstName,
|
|
CreatorLastName: transaction.CreatorLastName,
|
|
CreatorPhoneNumber: transaction.CreatorPhoneNumber,
|
|
Type: int64(transaction.Type),
|
|
PaymentOption: transaction.PaymentOption,
|
|
FullName: transaction.FullName,
|
|
PhoneNumber: transaction.PhoneNumber,
|
|
BankCode: transaction.BankCode.Value,
|
|
BeneficiaryName: transaction.BeneficiaryName.Value,
|
|
AccountName: transaction.AccountName.Value,
|
|
AccountNumber: transaction.AccountNumber.Value,
|
|
ReferenceNumber: transaction.ReferenceNumber.Value,
|
|
Verified: transaction.Verified,
|
|
ApprovedBy: transaction.ApprovedBy.Value,
|
|
ApproverFirstName: transaction.ApproverFirstName.Value,
|
|
ApproverLastName: transaction.ApproverLastName.Value,
|
|
ApproverPhoneNumber: transaction.ApproverPhoneNumber.Value,
|
|
CreatedAt: transaction.CreatedAt,
|
|
UpdatedAt: transaction.UpdatedAt,
|
|
}
|
|
|
|
return newTransaction
|
|
}
|
|
|
|
type UpdateTransactionVerifiedReq struct {
|
|
Verified bool `json:"verified" example:"true"`
|
|
}
|
|
|
|
|
|
func ConvertDBShopTransaction(transaction dbgen.ShopTransaction) ShopTransaction {
|
|
return ShopTransaction{
|
|
ID: transaction.ID,
|
|
Amount: Currency(transaction.Amount),
|
|
BranchID: transaction.BranchID,
|
|
UserID: transaction.UserID,
|
|
Type: ShopTransactionType(transaction.Type),
|
|
PaymentOption: PaymentOption(transaction.PaymentOption),
|
|
FullName: transaction.FullName,
|
|
PhoneNumber: transaction.PhoneNumber,
|
|
BankCode: ValidString{
|
|
Value: transaction.BankCode.String,
|
|
Valid: transaction.BankCode.Valid,
|
|
},
|
|
BeneficiaryName: ValidString{
|
|
Value: transaction.BeneficiaryName.String,
|
|
Valid: transaction.BeneficiaryName.Valid,
|
|
},
|
|
AccountName: ValidString{
|
|
Value: transaction.AccountName.String,
|
|
Valid: transaction.AccountName.Valid,
|
|
},
|
|
AccountNumber: ValidString{
|
|
Value: transaction.AccountName.String,
|
|
Valid: transaction.AccountNumber.Valid,
|
|
},
|
|
ReferenceNumber: ValidString{
|
|
Value: transaction.ReferenceNumber.String,
|
|
Valid: transaction.ReferenceNumber.Valid,
|
|
},
|
|
ApprovedBy: ValidInt64{
|
|
Value: transaction.ApprovedBy.Int64,
|
|
Valid: transaction.ApprovedBy.Valid,
|
|
},
|
|
CreatedAt: transaction.CreatedAt.Time,
|
|
UpdatedAt: transaction.UpdatedAt.Time,
|
|
Verified: transaction.Verified,
|
|
CompanyID: transaction.CompanyID,
|
|
}
|
|
}
|
|
|
|
func ConvertDBShopTransactionDetail(transaction dbgen.ShopTransactionDetail) ShopTransactionDetail {
|
|
return ShopTransactionDetail{
|
|
ID: transaction.ID,
|
|
Amount: Currency(transaction.Amount),
|
|
BranchID: transaction.BranchID,
|
|
UserID: transaction.UserID,
|
|
CreatorFirstName: transaction.CreatorFirstName.String,
|
|
CreatorLastName: transaction.CreatorLastName.String,
|
|
CreatorPhoneNumber: transaction.CreatorPhoneNumber.String,
|
|
Type: ShopTransactionType(transaction.Type),
|
|
PaymentOption: PaymentOption(transaction.PaymentOption),
|
|
FullName: transaction.FullName,
|
|
PhoneNumber: transaction.PhoneNumber,
|
|
BankCode: ValidString{
|
|
Value: transaction.BankCode.String,
|
|
Valid: transaction.BankCode.Valid,
|
|
},
|
|
BeneficiaryName: ValidString{
|
|
Value: transaction.BeneficiaryName.String,
|
|
Valid: transaction.BeneficiaryName.Valid,
|
|
},
|
|
AccountName: ValidString{
|
|
Value: transaction.AccountName.String,
|
|
Valid: transaction.AccountName.Valid,
|
|
},
|
|
AccountNumber: ValidString{
|
|
Value: transaction.AccountName.String,
|
|
Valid: transaction.AccountNumber.Valid,
|
|
},
|
|
ReferenceNumber: ValidString{
|
|
Value: transaction.ReferenceNumber.String,
|
|
Valid: transaction.ReferenceNumber.Valid,
|
|
},
|
|
ApprovedBy: ValidInt64{
|
|
Value: transaction.ApprovedBy.Int64,
|
|
Valid: transaction.ApprovedBy.Valid,
|
|
},
|
|
ApproverFirstName: ValidString{
|
|
Value: transaction.ApproverFirstName.String,
|
|
Valid: transaction.ApproverFirstName.Valid,
|
|
},
|
|
ApproverLastName: ValidString{
|
|
Value: transaction.ApproverLastName.String,
|
|
Valid: transaction.ApproverLastName.Valid,
|
|
},
|
|
ApproverPhoneNumber: ValidString{
|
|
Value: transaction.ApproverPhoneNumber.String,
|
|
Valid: transaction.ApproverPhoneNumber.Valid,
|
|
},
|
|
CreatedAt: transaction.CreatedAt.Time,
|
|
UpdatedAt: transaction.UpdatedAt.Time,
|
|
Verified: transaction.Verified,
|
|
CompanyID: transaction.CompanyID,
|
|
BranchName: transaction.BranchName.String,
|
|
BranchLocation: transaction.BranchLocation.String,
|
|
}
|
|
}
|
|
|
|
func ConvertCreateShopTransaction(transaction CreateShopTransaction) dbgen.CreateShopTransactionParams {
|
|
return dbgen.CreateShopTransactionParams{
|
|
Amount: int64(transaction.Amount),
|
|
BranchID: transaction.BranchID,
|
|
UserID: transaction.UserID,
|
|
Type: int64(transaction.Type),
|
|
PaymentOption: int64(transaction.PaymentOption),
|
|
FullName: transaction.FullName,
|
|
PhoneNumber: transaction.PhoneNumber,
|
|
CompanyID: transaction.CompanyID,
|
|
BankCode: transaction.BankCode.ToPG(),
|
|
BeneficiaryName: transaction.BeneficiaryName.ToPG(),
|
|
AccountName: transaction.AccountName.ToPG(),
|
|
AccountNumber: transaction.AccountNumber.ToPG(),
|
|
ReferenceNumber: transaction.ReferenceNumber.ToPG(),
|
|
}
|
|
}
|