handler

package
v0.0.0-...-7d8e645 Latest Latest
Warning

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

Go to latest
Published: Nov 20, 2023 License: MIT Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const (
	BindJsonFailMessage  = "Failed to bind json inputs from request"
	BindQueryFailMessage = "Failed to bind query inputs from request"
	BindParamFailMessage = "Failed to bind param input from url"
	BindFormValueMessage = "Failed to bind form values from request"
)

Variables

This section is empty.

Functions

func NewAdminHandler

func NewAdminHandler(adminUsecase usecaseInterface.AdminUseCase) interfaces.AdminHandler

func NewAuthHandler

func NewAuthHandler(authUsecase usecaseInterface.AuthUseCase, config config.Config) interfaces.AuthHandler

func NewBrandHandler

func NewBrandHandler(brandUseCase usecaseInterface.BrandUseCase) interfaces.BrandHandler

func NewCartHandler

func NewCartHandler(cartUseCase usecaseInterface.CartUseCase) interfaces.CartHandler

func NewCouponHandler

func NewCouponHandler(couponUseCase usecase.CouponUseCase) interfaces.CouponHandler

func NewOfferHandler

func NewOfferHandler(offerUseCase usecaseInterface.OfferUseCase) interfaces.OfferHandler

func NewOrderHandler

func NewOrderHandler(orderUseCase usecaseInterface.OrderUseCase) interfaces.OrderHandler

func NewPaymentHandler

func NewPaymentHandler(paymentUseCase interfaces.PaymentUseCase) handlerInterface.PaymentHandler

func NewProductHandler

func NewProductHandler(productUsecase usecaseInterface.ProductUseCase) interfaces.ProductHandler

func NewStockHandler

func NewStockHandler(stockUseCase usecaseInterface.StockUseCase) interfaces.StockHandler

func NewUserHandler

func NewUserHandler(userUsecase usecaseInterface.UserUseCase) interfaces.UserHandler

Types

type AuthHandler

type AuthHandler struct {
	// contains filtered or unexported fields
}

func (*AuthHandler) AdminLogin

func (c *AuthHandler) AdminLogin(ctx *gin.Context)

AdminLogin godoc

@Summary		Login with password (Admin)
@Description	API for admin to login with password
@Id				AdminLogin
@Tags			Admin Authentication
@Param			input	body	request.Login{}	true	"Login credentials"
@Router			/admin/auth/sign-in [post]
@Success		200	{object}	response.Response{data=response.TokenResponse}	"Successfully logged in"
@Failure		400	{object}	response.Response{}								"Invalid input"
@Failure		401	{object}	response.Response{}								"Wrong password"
@Failure		404	{object}	response.Response{}								"Admin not exist with this details"
@Failure		500	{object}	response.Response{}								"Failed to login"

func (*AuthHandler) AdminRenewAccessToken

func (c *AuthHandler) AdminRenewAccessToken() gin.HandlerFunc

AdminRenewAccessToken godoc

@Summary		Renew Access Token (Admin)
@Description	API for admin to renew access token using refresh token
@Security		ApiKeyAuth
@Id				AdminRenewAccessToken
@Tags			Admin Authentication
@Param			input	body	request.RefreshToken{}	true	"Refresh token"
@Router			/admin/auth/renew-access-token [post]
@Success		200	{object}	response.Response{}	"Successfully generated access token using refresh token"
@Failure		400	{object}	response.Response{}	"Invalid input"
@Failure		401	{object}	response.Response{}	"Invalid refresh token"
@Failure		404	{object}	response.Response{}	"No session found for the given refresh token"
@Failure		410	{object}	response.Response{}	"Refresh token expired"
@Failure		403	{object}	response.Response{}	"Refresh token blocked"
@Failure		500	{object}	response.Response{}	"Failed generate access token"

func (*AuthHandler) UserGoogleAuthCallBack

func (c *AuthHandler) UserGoogleAuthCallBack(ctx *gin.Context)

UserGoogleAuthCallBack godoc

@Summary		Google auth callback (User)
@Description	API for google to callback after authentication
@Id				UserGoogleAuthCallBack
@Tags			User Authentication
@Router			/auth/google-auth/callback [post]
@Success		200	{object}	response.Response{}	"Successfully logged in with google"
@Failure		500	{object}	response.Response{}	"Failed Login with google"

func (*AuthHandler) UserGoogleAuthInitialize

func (c *AuthHandler) UserGoogleAuthInitialize(ctx *gin.Context)

UserGoogleAuthInitialize godoc

@Summary		Initialize google auth (User)
@Description	API for user to initialize google auth
@Id				UserGoogleAuthInitialize
@Tags			User Authentication
@Router			/auth/google-auth/initialize [get]

func (*AuthHandler) UserGoogleAuthLoginPage

func (c *AuthHandler) UserGoogleAuthLoginPage(ctx *gin.Context)

UserGoogleAuthLoginPage godoc

@Summary		To load google login page (User)
@Description	API for user to load google login page
@Id				UserGoogleAuthLoginPage
@Tags			User Authentication
@Router			/auth/google-auth [get]
@Success		200	{object}	response.Response{}	"Successfully google login page loaded"

func (*AuthHandler) UserLogin

func (c *AuthHandler) UserLogin(ctx *gin.Context)

UserLogin godoc

@Summary		Login with password (User)
@Description	API for user to login with email | phone | user_name with password
@Id				UserLogin
@Tags			User Authentication
@Param			inputs	body	request.Login{}	true	"Login Details"
@Router			/auth/sign-in [post]
@Success		200	{object}	response.Response{data=response.TokenResponse}	"Successfully logged in"
@Failure		400	{object}	response.Response{}								"Invalid inputs"
@Failure		403	{object}	response.Response{}								"User blocked by admin"
@Failure		401	{object}	response.Response{}								"User not exist with given login credentials"
@Failure		500	{object}	response.Response{}								"Failed to login"

func (*AuthHandler) UserLoginOtpSend

func (u *AuthHandler) UserLoginOtpSend(ctx *gin.Context)

UserLoginOtpSend godoc

@Summary		Login with Otp send (User)
@Description	API for user to send otp for login enter email | phone | user_name : otp will send to user registered number
@Id				UserLoginOtpSend
@Tags			User Authentication
@Param			inputs	body	request.OTPLogin{}	true	"Login credentials"
@Router			/auth/sign-in/otp/send [post]
@Success		200	{object}	response.Response{response.OTPResponse{}}	"Successfully otp send to user's registered number"
@Failure		400	{object}	response.Response{}							"Invalid Otp"
@Failure		403	{object}	response.Response{}							"User blocked by admin"
@Failure		401	{object}	response.Response{}							"User not exist with given login credentials"
@Failure		500	{object}	response.Response{}							"Failed to send otp"

func (*AuthHandler) UserLoginOtpVerify

func (c *AuthHandler) UserLoginOtpVerify(ctx *gin.Context)

UserLoginOtpVerify godoc

@summary		Login with Otp verify (User)
@description	API for user to verify otp
@id				UserLoginOtpVerify
@tags			User Authentication
@param			inputs	body	request.OTPVerify{}	true	"Otp Verify Details"
@Router			/auth/sign-in/otp/verify [post]
@Success		200	{object}	response.Response{data=response.TokenResponse}	"Successfully user logged in"
@Failure		400	{object}	response.Response{}								"Invalid inputs"
@Failure		401	{object}	response.Response{}								"Otp not matched"
@Failure		410	{object}	response.Response{}								"Otp Expired"
@Failure		500	{object}	response.Response{}								"Failed to verify otp

func (*AuthHandler) UserRenewAccessToken

func (c *AuthHandler) UserRenewAccessToken() gin.HandlerFunc

UserRenewAccessToken godoc

@Summary		Renew Access Token (User)
@Description	API for user to renew access token using refresh token
@Security		ApiKeyAuth
@Id				UserRenewAccessToken
@Tags			User Authentication
@Param			input	body	request.RefreshToken{}	true	"Refresh token"
@Router			/auth/renew-access-token [post]
@Success		200	{object}	response.Response{}	"Successfully generated access token using refresh token"
@Failure		400	{object}	response.Response{}	"Invalid input"
@Failure		401	{object}	response.Response{}	"Invalid refresh token"
@Failure		404	{object}	response.Response{}	"No session found for the given refresh token"
@Failure		410	{object}	response.Response{}	"Refresh token expired"
@Failure		403	{object}	response.Response{}	"Refresh token blocked"
@Failure		500	{object}	response.Response{}	"Failed generate access token"

func (*AuthHandler) UserSignUp

func (c *AuthHandler) UserSignUp(ctx *gin.Context)

UserSignUp godoc

@Summary		Signup (User)
@Description	API for user to register a new account
@Id				UserSignUp
@Tags			User Authentication
@Param			input	body	request.UserSignUp{}	true	"Input Fields"
@Router			/auth/sign-up [post]
@Success		200	{object}	response.Response{data=response.OTPResponse}	"Successfully account created and otp send to registered number"
@Failure		400	{object}	response.Response{}								"Invalid input"
@Failure		409	{object}	response.Response{}								"A verified user already exist with given user credentials"
@Failure		500	{object}	response.Response{}								"Failed to signup"

func (*AuthHandler) UserSignUpVerify

func (c *AuthHandler) UserSignUpVerify(ctx *gin.Context)

UserSignUpVerify godoc

@summary		UserSingUp verify OTP  (User)
@description	API for user to verify otp on sign up
@id				UserSignUpVerify
@tags			User Authentication
@param			inputs	body	request.OTPVerify{}	true	"Otp Verify Details"
@Router			/auth/sign-up/verify [post]
@Success		200	{object}	response.Response{data=response.TokenResponse}	"Successfully otp verified for user sign up"
@Failure		400	{object}	response.Response{}								"Invalid inputs"
@Failure		401	{object}	response.Response{}								"Otp not matched"
@Failure		410	{object}	response.Response{}								"Otp Expired"
@Failure		500	{object}	response.Response{}								"Failed to verify otp"

type CouponHandler

type CouponHandler struct {
	// contains filtered or unexported fields
}

func (*CouponHandler) ApplyCouponToCart

func (c *CouponHandler) ApplyCouponToCart(ctx *gin.Context)

ApplyCouponToCart godoc

@Summary		Apply coupon
@Description	API for user to apply a coupon on cart
@Security		BearerAuth
@Tags			User Cart
@Id				ApplyCouponToCart
@Param			inputs	body	request.ApplyCoupon{}	true	"Input Field"
@Router			/carts/apply-coupon [patch]
@Success		200	{object}	response.Response{}	"Successfully coupon applied to user cart"
@Failure		400	{object}	response.Response{}	"invalid input"

func (*CouponHandler) GetAllCouponsAdmin

func (c *CouponHandler) GetAllCouponsAdmin(ctx *gin.Context)

GetAllCouponsAdmin godoc

@Summary		Get all coupons (Admin)
@Description	API for admin to get all coupons
@Security		BearerAuth
@Tags			Admin Coupon
@Id				GetAllCouponsAdmin
@Param			page_number	query	int	false	"Page Number"
@Param			count		query	int	false	"Count"
@Router			/admin/coupons [get]
@Success		200	{object}	response.Response{}	"successfully go all the coupons
@Failure		500	{object}	response.Response{}	"failed to get all coupons"

func (*CouponHandler) GetAllCouponsForUser

func (c *CouponHandler) GetAllCouponsForUser(ctx *gin.Context)

GetAllCouponsForUser godoc

@Summary		Get all user coupons (User)
@Description	API for user to get all coupons
@Security		BearerAuth
@tags			User Profile
@id				GetAllCouponsForUser
@Param			page_number	query	int	false	"Page Number"
@Param			count		query	int	false	"Count Of Order"
@Router			/account/coupons [get]
@Success		200	{object}	response.Response{}	""Successfully	found	all	coupons	for	user"
@Failure		500	{object}	response.Response{}	"Failed to find all user"

func (*CouponHandler) SaveCoupon

func (c *CouponHandler) SaveCoupon(ctx *gin.Context)

SaveCoupon godoc

@Summary		Add coupons (Admin)
@Description	API for admin to add a new coupon
@Security		BearerAuth
@Tags			Admin Coupon
@Id				SaveCoupon
@Param			inputs	body	request.Coupon{}	true	"Input Fields"
@Router			/admin/coupons [post]
@Success		200	{object}	response.Response{}	"successfully coupon added"
@Failure		400	{object}	response.Response{}	"invalid input"

func (*CouponHandler) UpdateCoupon

func (c *CouponHandler) UpdateCoupon(ctx *gin.Context)

UpdateCoupon godoc

@Summary		Update Coupon (Admin)
@Description	API for admin update coupon details
@Security		BearerAuth
@Tags			Admin Coupon
@Id				UpdateCoupon
@Param			inputs	body	request.EditCoupon{}	true	"Input Field"
@Router			/admin/coupons [put]
@Success		200	{object}	response.Response{}	"Successfully updated the coupon"
@Failure		400	{object}	response.Response{}	"invalid input"

type OrderHandler

type OrderHandler struct {
	// contains filtered or unexported fields
}

func (*OrderHandler) CancelOrder

func (c *OrderHandler) CancelOrder(ctx *gin.Context)

CancelOrder godoc

@Summary		Cancel order (User)
@Security		BearerAuth
@Description	Api for user to cancel a order
@Id				CancelOrder
@Tags			User Orders
@Param			shop_order_id	path	int	true	"Shop Order ID"
@Router			/orders/{shop_order_id}/cancel [post]
@Success		200	{object}	response.Response{}	"Successfully order cancelled"
@Failure		400	{object}	response.Response{}	"Invalid inputs"
@Failure		500	{object}	response.Response{}	"Failed to cancel order"

func (*OrderHandler) GetAllOrderItemsAdmin

func (c *OrderHandler) GetAllOrderItemsAdmin() func(ctx *gin.Context)

GetAllOrderItemsAdmin godoc

@Summary		Get all order items (Admin)
@Security		BearerAuth
@Description	API for user to get all order items of a specific order
@Id				GetAllOrderItemsAdmin
@Tags			Admin Orders
@Param			shop_order_id	path	int	true	"Shop Order ID"
@Param			page_number		query	int	false	"Page Number"
@Param			count			query	int	false	"Count"
@Router			/admin/orders/{shop_order_id}/items [get]
@Success		200	{object}	response.Response{}	"Successfully found order items"
@Success		204	{object}	response.Response{}	"No order items found"
@Failure		500	{object}	response.Response{}	"Failed to find order items"

func (*OrderHandler) GetAllOrderItemsUser

func (c *OrderHandler) GetAllOrderItemsUser() func(ctx *gin.Context)

GetAllOrderItemsUser godoc

@Summary		Get all order items (User)
@Security		BearerAuth
@Description	API for user to get all order items of a specific order
@Id				GetAllOrderItemsUser
@Tags			User Orders
@Param			shop_order_id	path	int	true	"Shop Order ID"
@Param			page_number		query	int	false	"Page Number"
@Param			count			query	int	false	"Count Of Order"
@Router			/orders/{shop_order_id}/items  [get]
@Success		200	{object}	response.Response{}	"Successfully found order items"
@Failure		500	{object}	response.Response{}	"Failed to find order items"

func (*OrderHandler) GetAllOrderReturns

func (c *OrderHandler) GetAllOrderReturns(ctx *gin.Context)

GetAllOrderReturns godoc

@Summary		Get all order returns (Admin)
@Security		BearerAuth
@Description	API for admin to get all order returns
@Id				GetAllOrderReturns
@Tags			Admin Orders
@Param			page_number	query	int	false	"Page Number"
@Param			count		query	int	false	"Count Of Order"
@Router			/admin/orders/returns [get]
@Success		200	{object}	response.Response{}	"Successfully found all order returns"
@Failure		500	{object}	response.Response{}	"Failed to find all order returns"

func (*OrderHandler) GetAllOrderStatuses

func (c *OrderHandler) GetAllOrderStatuses(ctx *gin.Context)

GetAllOrderStatuses godoc

@Summary		Get all order statuses (Admin)
@Security		BearerAuth
@Description	API for admin to get all available order statuses
@Id				GetAllOrderStatuses
@Tags			Admin Orders
@Router			/admin/orders/statuses [get]
@Success		200	{object}	response.Response{}	"Successfully retrieved all order statuses"
@Success		204	{object}	response.Response{}	"No order statuses found"
@Failure		500	{object}	response.Response{}	"Failed to find all order statuses"

func (*OrderHandler) GetAllPendingReturns

func (c *OrderHandler) GetAllPendingReturns(ctx *gin.Context)

GetAllPendingReturns godoc

@Summary		Get all pending returns (Admin)
@Security		BearerAuth
@Description	API for admin to get all pending returns
@Id				GetAllPendingReturns
@Tags			Admin Orders
@Param			page_number	query	int	false	"Page Number"
@Param			count		query	int	false	"Count Of Order"
@Router			/admin/orders/returns/pending [get]
@Success		200	{object}	response.Response{}	"Successfully found all pending orders return requests"
@Failure		500	{object}	response.Response{}	"Failed to find all pending order return requests"

func (*OrderHandler) GetAllShopOrders

func (c *OrderHandler) GetAllShopOrders(ctx *gin.Context)

GetAllShopOrders godoc

@Summary		Get all orders (Admin)
@Security		BearerAuth
@Description	API for admin to get all orders
@Id				GetAllShopOrders
@Tags			Admin Orders
@Param			page_number	query	int	false	"Page Number"
@Param			count		query	int	false	"Count"
@Router			/admin/orders/all [get]
@Success		200	{object}	response.Response{}	"Successfully retrieved all shop orders"
@Success		204	{object}	response.Response{}	"No shop order found"
@Failure		500	{object}	response.Response{}	"Failed to find all shop orders"

func (*OrderHandler) GetUserOrder

func (c *OrderHandler) GetUserOrder(ctx *gin.Context)

GetUserOrder godoc

@summary		Get user orders (User)
@Security		BearerAuth
@description	API to get order for user user orders
@id				GetUserOrder
@tags			User Orders
@Param			page_number	query	int	false	"Page Number"
@Param			count		query	int	false	"Count Of Order"
@Router			/orders [get]
@Success		200	{object}	response.Response{}	"Successfully retrieved all user orders"
@Success		204	{object}	response.Response{}	"No shop orders for user"
@Failure		500	{object}	response.Response{}	"Failed to retrieve all user orders"

func (*OrderHandler) GetUserWallet

func (c *OrderHandler) GetUserWallet(ctx *gin.Context)

GetUserWallet godoc

@Summary		Get user wallet  (User)
@Security		BearerAuth
@Description	API for user to get user wallet
@Id				GetUserWallet
@Tags			User Profile
@Router			/account/wallet [get]
@Success		200	{object}	response.Response{}	"Successfully retrieve user wallet"
@Failure		500	{object}	response.Response{}	"Failed to retrieve user wallet"

func (*OrderHandler) GetUserWalletTransactions

func (c *OrderHandler) GetUserWalletTransactions(ctx *gin.Context)

GetUserWalletTransactions godoc

@Summary		Get user wallet  (User)
@Security		BearerAuth
@Description	API for user to get user wallet transaction
@Id				GetUserWalletTransactions
@Tags			User Profile
@Router			/account/wallet/transactions [get]
@Success		200	{object}	response.Response{}	"Successfully retrieved user wallet transactions"
@Success		204	{object}	response.Response{}	"No wallet transaction for user"
@Failure		500	{object}	response.Response{}	"Failed to retrieve user wallet transactions"

func (*OrderHandler) SaveOrder

func (c *OrderHandler) SaveOrder(ctx *gin.Context)

SaveOrder godoc

@Summary		Save Order (User)
@Security		BearerAuth
@Description	API for user save an order
@Tags			User Orders
@Id				SaveOrder
@Param			address_id	formData	string	true	"Address ID"
@Router			/carts/place-order [post]
@Success		200	{object}	response.Response{}	"successfully order placed"
@Success		204	{object}	response.Response{}	"Cart is empty"
@Failure		400	{object}	response.Response{}	"invalid input"
@Failure		409	{object}	response.Response{}	"Can't place order out of stock product on cart"
@Failure		500	{object}	response.Response{}	"Failed to save order"

func (OrderHandler) SubmitReturnRequest

func (c OrderHandler) SubmitReturnRequest(ctx *gin.Context)

SubmitReturnRequest godoc

@Summary		Return request (User)
@Security		BearerAuth
@Description	API for user to request a return for delivered order
@Id				SubmitReturnRequest
@Tags			User Orders
@Param			input	body	request.Return	true	"Input Fields"
@Router			/orders/return [post]
@Success		200	{object}	response.Response{}	"Successfully return request submitted for order"
@Failure		400	{object}	response.Response{}	"invalid input"

func (*OrderHandler) UpdateOrderStatus

func (c *OrderHandler) UpdateOrderStatus(ctx *gin.Context)

UpdateOrderStatus godoc

@Summary		Change order status (Admin)
@Security		BearerAuth
@Description	API for admin to change order status
@Id				UpdateOrderStatus
@Tags			Admin Orders
@Param			input	body	request.UpdateOrder{}	true	"input field"
@Router			/admin/orders/ [put]
@Success		200	{object}	response.Response{}	"Successfully order status updated"
@Failure		400	{object}	response.Response{}	"invalid input"

func (*OrderHandler) UpdateReturnRequest

func (c *OrderHandler) UpdateReturnRequest(ctx *gin.Context)

UpdateReturnRequest godoc

@summary		Change return request status (Admin)
@Security		BearerAuth
@description	API for admin to change status of return requested orders
@id				UpdateReturnRequest
@tags			Admin Orders
@Param			input	body	request.UpdateOrderReturn{}	true	"Input Fields"
@Router			/admin/orders/returns/pending [put]
@Success		200	{object}	response.Response{}	"successfully order_response updated"
@Failure		500	{object}	response.Response{}	"invalid input"

type ProductHandler

type ProductHandler struct {
	// contains filtered or unexported fields
}

func (*ProductHandler) GetAllCategories

func (p *ProductHandler) GetAllCategories(ctx *gin.Context)

GetAllCategories godoc

@Summary		Get all categories (Admin)
@Security		BearerAuth
@Description	API for admin to get all categories and their subcategories
@Tags			Admin Category
@ID				GetAllCategories
@Accept			json
@Produce		json
@Param			page_number	query	int	false	"Page number"
@Param			count		query	int	false	"Count"
@Router			/admin/categories [get]
@Success		200	{object}	response.Response{}	"Successfully retrieved all categories"
@Failure		500	{object}	response.Response{}	"Failed to retrieve categories"

func (*ProductHandler) GetAllProductItemsAdmin

func (p *ProductHandler) GetAllProductItemsAdmin() func(ctx *gin.Context)

GetAllProductItemsAdmin godoc

@Summary		Get all product items (Admin)
@Security		BearerAuth
@Description	API for admin to get all product items for a specific product
@ID				GetAllProductItemsAdmin
@Tags			Admin Products
@Accept			json
@Produce		json
@Param			product_id	path	int	true	"Product ID"
@Router			/admin/products/{product_id}/items [get]
@Success		200	{object}	response.Response{}	"Successfully get all product items"
@Failure		400	{object}	response.Response{}	"Invalid input"
@Failure		400	{object}	response.Response{}	"Failed to get all product items"

func (*ProductHandler) GetAllProductItemsUser

func (p *ProductHandler) GetAllProductItemsUser() func(ctx *gin.Context)

GetAllProductItemsUser godoc

@Summary		Get all product items (User)
@Security		BearerAuth
@Description	API for user to get all product items for a specific product
@ID				GetAllProductItemsUser
@Tags			User Products
@Accept			json
@Produce		json
@Param			product_id	path	int	true	"Product ID"
@Router			/products/{product_id}/items [get]
@Success		200	{object}	response.Response{}	"Successfully get all product items"
@Failure		400	{object}	response.Response{}	"Invalid input"
@Failure		400	{object}	response.Response{}	"Failed to get all product items"

func (*ProductHandler) GetAllProductsAdmin

func (p *ProductHandler) GetAllProductsAdmin() func(ctx *gin.Context)

GetAllProductsAdmin godoc

@Summary		Get all products (Admin)
@Security		BearerAuth
@Description	API for admin to get all products
@ID				GetAllProductsAdmin
@Tags			Admin Products
@Param			page_number	query	int	false	"Page Number"
@Param			count		query	int	false	"Count"
@Router			/admin/products [get]
@Success		200	{object}	response.Response{}	"Successfully found all products"
@Failure		500	{object}	response.Response{}	"Failed to Get all products"

func (*ProductHandler) GetAllProductsUser

func (p *ProductHandler) GetAllProductsUser() func(ctx *gin.Context)

GetAllProductsUser godoc

@Summary		Get all products (User)
@Security		BearerAuth
@Description	API for user to get all products
@ID				GetAllProductsUser
@Tags			User Products
@Param			page_number	query	int	false	"Page Number"
@Param			count		query	int	false	"Count"
@Router			/products [get]
@Success		200	{object}	response.Response{}	"Successfully found all products"
@Failure		500	{object}	response.Response{}	"Failed to get all products"

func (*ProductHandler) GetAllVariations

func (c *ProductHandler) GetAllVariations(ctx *gin.Context)

GetAllVariations godoc

@Summary		Get all variations (Admin)
@Security		BearerAuth
@Description	API for admin to get all variation and its values of a category
@Tags			Admin Category
@ID				GetAllVariations
@Accept			json
@Produce		json
@Param			category_id	path	int	true	"Category ID"
@Router			/admin/categories/{category_id}/variations [get]
@Success		200	{object}	response.Response{}	"Successfully retrieved all variations and its values"
@Failure		400	{object}	response.Response{}	"Invalid input"
@Failure		500	{object}	response.Response{}	"Failed to Get variations and its values"

func (*ProductHandler) SaveCategory

func (p *ProductHandler) SaveCategory(ctx *gin.Context)

SaveCategory godoc

@Summary		Add a new category (Admin)
@Security		BearerAuth
@Description	API for Admin to save new category
@Tags			Admin Category
@ID				SaveCategory
@Accept			json
@Produce		json
@Param			input	body	request.Category{}	true	"Category details"
@Router			/admin/categories [post]
@Success		201	{object}	response.Response{}	"Successfully added category"
@Failure		400	{object}	response.Response{}	"Invalid input"
@Failure		409	{object}	response.Response{}	"Category already exist"
@Failure		409	{object}	response.Response{}	"Failed to save category"

func (*ProductHandler) SaveProduct

func (p *ProductHandler) SaveProduct(ctx *gin.Context)

SaveProduct godoc

@Summary		Add a new product (Admin)
@Security		BearerAuth
@Description	API for admin to add a new product
@ID				SaveProduct
@Tags			Admin Products
@Produce		json
@Param			name		formData	string				true	"Product Name"
@Param			description	formData	string				true	"Product Description"
@Param			category_id	formData	int					true	"Category Id"
@Param			brand_id	formData	int					true	"Brand Id"
@Param			price		formData	int					true	"Product Price"
@Param			image		formData	file				true	"Product Description"
@Success		200			{object}	response.Response{}	"successfully product added"
@Router			/admin/products [post]
@Failure		400	{object}	response.Response{}	"invalid input"
@Failure		409	{object}	response.Response{}	"Product name already exist"

func (*ProductHandler) SaveProductItem

func (p *ProductHandler) SaveProductItem(ctx *gin.Context)

SaveProductItem godoc

@Summary		Add a product item (Admin)
@Security		BearerAuth
@Description	API for admin to add a product item for a specific product(should select at least one variation option from each variations)
@ID				SaveProductItem
@Tags			Admin Products
@Accept			json
@Produce		json
@Param			product_id				path		int		true	"Product ID"
@Param			price					formData	int		true	"Price"
@Param			qty_in_stock			formData	int		true	"Quantity In Stock"
@Param			variation_option_ids	formData	[]int	true	"Variation Option IDs"
@Param			images					formData	file	true	"Images"
@Router			/admin/products/{product_id}/items [post]
@Success		200	{object}	response.Response{}	"Successfully product item added"
@Failure		400	{object}	response.Response{}	"invalid input"
@Failure		409	{object}	response.Response{}	"Product have already this configured product items exist"

func (*ProductHandler) SaveSubCategory

func (p *ProductHandler) SaveSubCategory(ctx *gin.Context)

SaveSubCategory godoc

@Summary		Add a new subcategory (Admin)
@Security		BearerAuth
@Description	API for admin to add a new sub category for a existing category
@Tags			Admin Category
@ID				SaveSubCategory
@Accept			json
@Produce		json
@Param			input	body	request.SubCategory{}	true	"Subcategory details"
@Router			/admin/categories/sub-categories [post]
@Success		201	{object}	response.Response{}	"Successfully added subcategory"
@Failure		400	{object}	response.Response{}	"Invalid input"
@Failure		409	{object}	response.Response{}	"Sub category already exist"
@Failure		500	{object}	response.Response{}	"Failed to add subcategory"

func (*ProductHandler) SaveVariation

func (p *ProductHandler) SaveVariation(ctx *gin.Context)

SaveVariation godoc

@Summary		Add new variations (Admin)
@Security		BearerAuth
@Description	API for admin to add new variations for a category
@Tags			Admin Category
@ID				SaveVariation
@Accept			json
@Produce		json
@Param			category_id	path	int					true	"Category ID"
@Param			input		body	request.Variation{}	true	"Variation details"
@Router			/admin/categories/{category_id}/variations [post]
@Success		201	{object}	response.Response{}	"Successfully added variations"
@Failure		400	{object}	response.Response{}	"Invalid input"
@Failure		500	{object}	response.Response{}	"Failed to add variation"

func (*ProductHandler) SaveVariationOption

func (p *ProductHandler) SaveVariationOption(ctx *gin.Context)

SaveVariationOption godoc

@Summary		Add new variation options (Admin)
@Security		BearerAuth
@Description	API for admin to add variation options for a variation
@Tags			Admin Category
@ID				SaveVariationOption
@Accept			json
@Produce		json
@Param			category_id		path	int							true	"Category ID"
@Param			variation_id	path	int							true	"Variation ID"
@Param			input			body	request.VariationOption{}	true	"Variation option details"
@Router			/admin/categories/{category_id}/variations/{variation_id}/options [post]
@Success		201	{object}	response.Response{}	"Successfully added variation options"
@Failure		400	{object}	response.Response{}	"Invalid input"
@Failure		500	{object}	response.Response{}	"Failed to add variation options"

func (*ProductHandler) UpdateProduct

func (c *ProductHandler) UpdateProduct(ctx *gin.Context)

UpdateProduct godoc

@Summary		Update a product (Admin)
@Security		BearerAuth
@Description	API for admin to update a product
@ID				UpdateProduct
@Tags			Admin Products
@Accept			json
@Produce		json
@Param			input	body	request.UpdateProduct{}	true	"Product update input"
@Router			/admin/products [put]
@Success		200	{object}	response.Response{}	"successfully product updated"
@Failure		400	{object}	response.Response{}	"invalid input"
@Failure		409	{object}	response.Response{}	"Failed to update product"
@Failure		500	{object}	response.Response{}	"Product name already exist for another product"

type UserHandler

type UserHandler struct {
	// contains filtered or unexported fields
}

func (*UserHandler) CheckOutCart

func (c *UserHandler) CheckOutCart(ctx *gin.Context)

// CheckOutCart godoc // @summary api for cart checkout // @description user can checkout user cart items // @Security BearerAuth // @id CheckOutCart // @tags User Cart // @Router /carts/checkout [get] // @Success 200 {object} response.Response{} "successfully got checkout data" // @Failure 401 {object} res.Response{} "cart is empty so user can't call this api" // @Failure 500 {object} res.Response{} "failed to get checkout items"

func (*UserHandler) GetAllAddresses

func (u *UserHandler) GetAllAddresses(ctx *gin.Context)

GetAllAddresses godoc

@Summary		Get all addresses (User)
@Security		BearerAuth
@Description	API for user to get all user addresses
@Id				GetAllAddresses
@Tags			User Profile
@Router			/account/address [get]
@Success		200	{object}	response.Response{}	"successfully retrieved all user addresses"
@Failure		500	{object}	response.Response{}	"failed to show user addresses"

func (*UserHandler) GetProfile

func (u *UserHandler) GetProfile(ctx *gin.Context)

GetProfile godoc

@Summary		Get User Profile (User)
@Security		BearerAuth
@Description	API for user to get all user details
@Id				GetProfile
@Tags			User Profile
@Router			/account [get]
@Success		200	"Successfully retrieved user details"
@Failure		500	{object}	response.Response{}	"Failed to retrieve user details"

func (*UserHandler) GetWishList

func (u *UserHandler) GetWishList(ctx *gin.Context)

GetWishList godoc

@Summary		Get whish list product items (User)
@Security		BearerAuth
@Descriptions	API for user to get product items in the wish list
@Id				GetWishList
@Tags			User Profile
@Router			/account/wishlist [get]
@Success		200	"Successfully retrieved all product items in th wish list"
@Failure		500	"Failed to retrieve product items from the wish list"

func (*UserHandler) RemoveFromWishList

func (u *UserHandler) RemoveFromWishList(ctx *gin.Context)

RemoveFromWishList godoc

@Summary		Remove from whish list (User)
@Security		BearerAuth
@Descriptions	API for user to remove a product item from whish list
@Id				RemoveFromWishList
@Tags			User Profile
@Param			product_item_id	path	int	true	"Product Item ID"
@Router			/account/wishlist/{product_item_id} [delete]
@Success		200	{object}	response.Response{}	"successfully removed product item from wishlist"
@Failure		400	{object}	response.Response{}	"invalid input"

func (*UserHandler) SaveAddress

func (u *UserHandler) SaveAddress(ctx *gin.Context)

SaveAddress godoc

@Summary		Add a new address (User)
@Security		BearerAuth
@Description	API for user to add a new address
@Id				SaveAddress
@Tags			User Profile
@Param			inputs	body	request.Address{}	true	"Address input"
@Router			/account/address [post]
@Success		200	{object}	response.Response{}	"Successfully address added"
@Failure		400	{object}	response.Response{}	"invalid input"
@Failure		500	{object}	response.Response{}	"Failed to save address"

func (*UserHandler) SaveToWishList

func (u *UserHandler) SaveToWishList(ctx *gin.Context)

SaveToWishList godoc

@Summary		Add to whish list (User)
@Security		BearerAuth
@Descriptions	API for user to add product item to wish list
@Id				SaveToWishList
@Tags			User Profile
@Param			product_item_id	path	int	true	"Product Item ID"
@Router			/account/wishlist/{product_item_id} [post]
@Success		200	{object}	response.Response{}	"Successfully product items added to whish list"
@Failure		400	{object}	response.Response{}	"invalid input"
@Failure		409	{object}	response.Response{}	"Product item already exist on wish list"
@Failure		500	{object}	response.Response{}	"Failed to add product item to wishlist"

func (*UserHandler) UpdateAddress

func (u *UserHandler) UpdateAddress(ctx *gin.Context)

UpdateAddress godoc

@Summary		Update address (User)
@Security		BearerAuth
@Description	API for user to update user address
@Id				UpdateAddress
@Tags			User Profile
@Param			input	body	request.EditAddress{}	true	"Address input"
@Router			/account/address [put]
@Success		200	{object}	response.Response{}	"successfully addresses updated"
@Failure		400	{object}	response.Response{}	"can't update the address"

func (*UserHandler) UpdateProfile

func (u *UserHandler) UpdateProfile(ctx *gin.Context)

UpdateProfile godoc

@Summary		Edit profile (User)
@Security		BearerAuth
@Description	API for user to edit user details
@Id				UpdateProfile
@Tags			User Profile
@Param			input	body	request.EditUser{}	true	"User details input"
@Router			/account [put]
@Success		200	{object}	response.Response{}	"Successfully profile updated"
@Failure		400	{object}	response.Response{}	"Invalid inputs"
@Failure		500	{object}	response.Response{}	"Failed to update profile"

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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