/*
 * OPEN OUTCRY API
 *
 * # Introduction This API is documented in **OpenAPI 3.0 format**.  This API the following operations: * Retrieve a list of available instruments * Retrieve a list of executed trades  # Basics * API calls have to be secured with HTTPS. * All data has to be submitted UTF-8 encoded. * The reply is sent JSON encoded.
 *
 * API version: 1.0.0
 * Generated by: OpenAPI Generator (https://openapi-generator.tech)
 */

package api

import (
	"context"
	"errors"
	"net/http"
)

// UserAPIService is a service that implements the logic for the UserAPIServicer
// This service should implement the business logic for every endpoint for the UserAPI API.
// Include any external packages or services that will be required by this service.
type UserAPIService struct {
}

// NewUserAPIService creates a default api service
func NewUserAPIService() UserAPIServicer {
	return &UserAPIService{}
}

// CreateTrade - Create trade order
func (s *UserAPIService) CreateTrade(ctx context.Context, tradingAccountId string, createTradeRequest CreateTradeRequest) (ImplResponse, error) {
	// TODO - update CreateTrade with the required logic for this service method.
	// Add api_user_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation.

	// TODO: Uncomment the next line to return response Response(200, TradeOrder{}) or use other options such as http.Ok ...
	// return Response(200, TradeOrder{}), nil

	// TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ...
	// return Response(404, nil),nil

	return Response(http.StatusNotImplemented, nil), errors.New("CreateTrade method not implemented")
}

// DeleteTradeOrderById - Cancel trade order
func (s *UserAPIService) DeleteTradeOrderById(ctx context.Context, tradingAccountId string, tradeOrderId string) (ImplResponse, error) {
	// TODO - update DeleteTradeOrderById with the required logic for this service method.
	// Add api_user_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation.

	// TODO: Uncomment the next line to return response Response(204, {}) or use other options such as http.Ok ...
	// return Response(204, nil),nil

	// TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ...
	// return Response(404, nil),nil

	return Response(http.StatusNotImplemented, nil), errors.New("DeleteTradeOrderById method not implemented")
}

// GetBookOrders - Get book orders
func (s *UserAPIService) GetBookOrders(ctx context.Context, tradingAccountId string) (ImplResponse, error) {
	// TODO - update GetBookOrders with the required logic for this service method.
	// Add api_user_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation.

	// TODO: Uncomment the next line to return response Response(200, []TradeOrder{}) or use other options such as http.Ok ...
	// return Response(200, []TradeOrder{}), nil

	// TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ...
	// return Response(404, nil),nil

	return Response(http.StatusNotImplemented, nil), errors.New("GetBookOrders method not implemented")
}

// GetPaymentAccounts - Get payment accounts
func (s *UserAPIService) GetPaymentAccounts(ctx context.Context, appEntityId string) (ImplResponse, error) {
	// TODO - update GetPaymentAccounts with the required logic for this service method.
	// Add api_user_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation.

	// TODO: Uncomment the next line to return response Response(200, PaymentAccountList{}) or use other options such as http.Ok ...
	// return Response(200, PaymentAccountList{}), nil

	// TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ...
	// return Response(404, nil),nil

	return Response(http.StatusNotImplemented, nil), errors.New("GetPaymentAccounts method not implemented")
}

// GetTradeById - Get trade
func (s *UserAPIService) GetTradeById(ctx context.Context, tradingAccountId string, tradeId string) (ImplResponse, error) {
	// TODO - update GetTradeById with the required logic for this service method.
	// Add api_user_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation.

	// TODO: Uncomment the next line to return response Response(200, Trade{}) or use other options such as http.Ok ...
	// return Response(200, Trade{}), nil

	// TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ...
	// return Response(404, nil),nil

	return Response(http.StatusNotImplemented, nil), errors.New("GetTradeById method not implemented")
}

// GetTradeOrderById - Get trade order
func (s *UserAPIService) GetTradeOrderById(ctx context.Context, tradingAccountId string, tradeOrderId string) (ImplResponse, error) {
	// TODO - update GetTradeOrderById with the required logic for this service method.
	// Add api_user_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation.

	// TODO: Uncomment the next line to return response Response(200, TradeOrder{}) or use other options such as http.Ok ...
	// return Response(200, TradeOrder{}), nil

	// TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ...
	// return Response(404, nil),nil

	return Response(http.StatusNotImplemented, nil), errors.New("GetTradeOrderById method not implemented")
}

// GetTradeOrders - Get trade orders
func (s *UserAPIService) GetTradeOrders(ctx context.Context, tradingAccountId string) (ImplResponse, error) {
	// TODO - update GetTradeOrders with the required logic for this service method.
	// Add api_user_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation.

	// TODO: Uncomment the next line to return response Response(200, []TradeOrder{}) or use other options such as http.Ok ...
	// return Response(200, []TradeOrder{}), nil

	// TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ...
	// return Response(404, nil),nil

	return Response(http.StatusNotImplemented, nil), errors.New("GetTradeOrders method not implemented")
}

// GetTrades - Trades list
func (s *UserAPIService) GetTrades(ctx context.Context, tradingAccountId string) (ImplResponse, error) {
	// TODO - update GetTrades with the required logic for this service method.
	// Add api_user_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation.

	// TODO: Uncomment the next line to return response Response(200, []Trade{}) or use other options such as http.Ok ...
	// return Response(200, []Trade{}), nil

	// TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ...
	// return Response(404, nil),nil

	return Response(http.StatusNotImplemented, nil), errors.New("GetTrades method not implemented")
}

// GetTradingAccount - Get trading account
func (s *UserAPIService) GetTradingAccount(ctx context.Context, tradingAccountId string) (ImplResponse, error) {
	// TODO - update GetTradingAccount with the required logic for this service method.
	// Add api_user_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation.

	// TODO: Uncomment the next line to return response Response(200, TradingAccount{}) or use other options such as http.Ok ...
	// return Response(200, TradingAccount{}), nil

	// TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ...
	// return Response(404, nil),nil

	return Response(http.StatusNotImplemented, nil), errors.New("GetTradingAccount method not implemented")
}
