-- name: CreateShopTransaction :one
INSERT INTO shop_transactions (
        amount,
        branch_id,
        company_id,
        user_id,
        type,
        full_name,
        phone_number,
        payment_option,
        bank_code,
        beneficiary_name,
        account_name,
        account_number,
        reference_number
    )
VALUES (
        $1,
        $2,
        $3,
        $4,
        $5,
        $6,
        $7,
        $8,
        $9,
        $10,
        $11,
        $12,
        $13
    )
RETURNING *;
-- name: GetAllShopTransactions :many
SELECT *
FROM shop_transaction_detail
wHERE (
        branch_id = sqlc.narg('branch_id')
        OR sqlc.narg('branch_id') IS NULL
    )
    AND (
        company_id = sqlc.narg('company_id')
        OR sqlc.narg('company_id') IS NULL
    )
    AND (
        user_id = sqlc.narg('user_id')
        OR sqlc.narg('user_id') IS NULL
    )
    AND (
        full_name ILIKE '%' || sqlc.narg('query') || '%'
        OR phone_number ILIKE '%' || sqlc.narg('query') || '%'
        OR sqlc.narg('query') IS NULL
    )
    AND (
        created_at > sqlc.narg('created_before')
        OR sqlc.narg('created_before') IS NULL
    )
    AND (
        created_at < sqlc.narg('created_after')
        OR sqlc.narg('created_after') IS NULL
    );
-- name: GetShopTransactionByID :one
SELECT *
FROM shop_transaction_detail
WHERE id = $1;
-- name: GetShopTransactionByBranch :many
SELECT *
FROM shop_transaction_detail
WHERE branch_id = $1;
-- name: UpdateShopTransactionVerified :exec
UPDATE shop_transactions
SET verified = $2,
    approved_by = $3,
    updated_at = CURRENT_TIMESTAMP
WHERE id = $1;
-- name: CreateShopBet :one
INSERT INTO shop_bets (
        shop_transaction_id,
        cashout_id,
        bet_id,
        number_of_outcomes
    )
VALUES ($1, $2, $3, $4)
RETURNING *;
-- name: GetAllShopBets :many
SELECT *
FROM shop_bet_detail
WHERE (
        full_name ILIKE '%' || sqlc.narg('query') || '%'
        OR phone_number ILIKE '%' || sqlc.narg('query') || '%'
        OR sqlc.narg('query') IS NULL
    )
    AND (
        branch_id = sqlc.narg('branch_id')
        OR sqlc.narg('branch_id') IS NULL
    )
    AND (
        company_id = sqlc.narg('company_id')
        OR sqlc.narg('company_id') IS NULL
    )
    AND (
        created_at > sqlc.narg('created_before')
        OR sqlc.narg('created_before') IS NULL
    )
    AND (
        created_at < sqlc.narg('created_after')
        OR sqlc.narg('created_after') IS NULL
    );
-- name: GetShopBetByID :one
SELECT *
FROM shop_bet_detail
WHERE id = $1;
-- name: GetShopBetByBetID :one
SELECT *
FROM shop_bet_detail
WHERE bet_id = $1;
-- name: GetShopBetByCashoutID :one
SELECT *
FROM shop_bet_detail
WHERE cashout_id = $1;
-- name: GetShopBetByShopTransactionID :one
SELECT *
FROM shop_bet_detail
WHERE shop_transaction_id = $1;
-- name: UpdateShopBetCashOut :exec
UPDATE shop_bets
SET cashed_out = $2,
    updated_at = CURRENT_TIMESTAMP
WHERE id = $1;
-- name: UpdateShopBetCashoutID :exec
UPDATE shop_bets
SET cashout_id = $2,
    updated_at = CURRENT_TIMESTAMP
WHERE id = $1;
-- name: CreateShopDeposit :one
INSERT INTO shop_deposits (
        shop_transaction_id,
        customer_id,
        branch_wallet_id
    )
VALUES ($1, $2, $3)
RETURNING *;
-- name: GetAllShopDeposit :many
SELECT *
FROM shop_deposit_detail
WHERE (
        full_name ILIKE '%' || sqlc.narg('query') || '%'
        OR phone_number ILIKE '%' || sqlc.narg('query') || '%'
        OR sqlc.narg('query') IS NULL
    )
    AND (
        branch_id = sqlc.narg('branch_id')
        OR sqlc.narg('branch_id') IS NULL
    )
    AND (
        company_id = sqlc.narg('company_id')
        OR sqlc.narg('company_id') IS NULL
    )
    AND (
        created_at > sqlc.narg('created_before')
        OR sqlc.narg('created_before') IS NULL
    )
    AND (
        created_at < sqlc.narg('created_after')
        OR sqlc.narg('created_after') IS NULL
    );
-- name: GetShopDepositByID :one
SELECT *
FROM shop_deposit_detail
WHERE id = $1;
-- name: GetShopDepositByShopTransactionID :one
SELECT *
FROM shop_deposit_detail
WHERE shop_transaction_id = $1;
-- name: UpdateShopDepositTransferID :exec
UPDATE shop_deposits
SET wallet_transfer_id = $2,
    updated_at = CURRENT_TIMESTAMP
WHERE id = $1;