package handlers import ( "net/http" "github.com/gin-gonic/gin" "git.mchus.pro/mchus/quoteforge/internal/services" ) type QuoteHandler struct { quoteService *services.QuoteService } func NewQuoteHandler(quoteService *services.QuoteService) *QuoteHandler { return &QuoteHandler{quoteService: quoteService} } func (h *QuoteHandler) Validate(c *gin.Context) { var req services.QuoteRequest if err := c.ShouldBindJSON(&req); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } result, err := h.quoteService.ValidateAndCalculate(&req) if err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } c.JSON(http.StatusOK, result) } func (h *QuoteHandler) Calculate(c *gin.Context) { var req services.QuoteRequest if err := c.ShouldBindJSON(&req); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } result, err := h.quoteService.ValidateAndCalculate(&req) if err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } c.JSON(http.StatusOK, gin.H{ "items": result.Items, "total": result.Total, }) }