package http import ( "git.gocasts.ir/ebhomengo/niki/domain/campaign/entity" "git.gocasts.ir/ebhomengo/niki/domain/campaign/service" httpmsg "git.gocasts.ir/ebhomengo/niki/pkg/http_msg" "github.com/labstack/echo/v4" "net/http" "time" ) type Handler struct { svc service.CampaignService } func NewHandler(svc service.CampaignService) Handler { return Handler{svc: svc} } func (h Handler) createCampaign(c echo.Context) error { var req entity.Campaign if err := c.Bind(&req); err != nil { return c.JSON(http.StatusBadRequest, map[string]string{ "error": "invalid request body", }) } req.CreatedAt = time.Now() req.RaisedAmount = 0 createdID, err := h.svc.CreateCampaign(c.Request().Context(), req) if err != nil { msg, code := httpmsg.Error(err) c.Logger().Errorf("Service error creating campaign: %v (Code: %d)", err, code) return c.JSON(code, msg) } return c.JSON(http.StatusCreated, map[string]interface{}{ "message": "campaign created successfully", "id": createdID, }) }