package handlers import ( "github.com/SamuelTariku/FortuneBet-Backend/internal/domain" "github.com/gofiber/fiber/v2" ) // @Summary Get supported currencies // @Description Returns list of supported currencies // @Tags Multi-Currency // @Produce json // @Success 200 {object} domain.Response{data=[]domain.Currency} // @Router /api/v1/currencies [get] func (h *Handler) GetSupportedCurrencies(c *fiber.Ctx) error { currencies, err := h.currSvc.GetSupportedCurrencies(c.Context()) if err != nil { return domain.UnExpectedErrorResponse(c) } return c.Status(fiber.StatusOK).JSON(domain.Response{ Success: true, Message: "Supported currencies retrieved successfully", Data: currencies, StatusCode: fiber.StatusOK, }) } // @Summary Convert currency // @Description Converts amount from one currency to another // @Tags Multi-Currency // @Produce json // @Param from query string true "Source currency code (e.g., USD)" // @Param to query string true "Target currency code (e.g., ETB)" // @Param amount query number true "Amount to convert" // @Success 200 {object} domain.Response{data=float64} // @Failure 400 {object} domain.ErrorResponse // @Router /api/v1/currencies/convert [get] func (h *Handler) ConvertCurrency(c *fiber.Ctx) error { from := domain.IntCurrency(c.Query("from")) to := domain.IntCurrency(c.Query("to")) amount := c.QueryFloat("amount", 0) // if err != nil { // return domain.BadRequestResponse(c) // } converted, err := h.currSvc.Convert(c.Context(), amount, from, to) if err != nil { return domain.UnExpectedErrorResponse(c) } return c.Status(fiber.StatusOK).JSON(domain.Response{ Success: true, Message: "Currency converted successfully", Data: converted, StatusCode: fiber.StatusOK, }) }