package handlers import ( "kontor-api-echo/internal/globals" "kontor-api-echo/internal/models" "kontor-api-echo/internal/repository" "kontor-api-echo/internal/service" "net/http" "github.com/labstack/echo/v5" "github.com/uptrace/bun" ) type MediaVideoHandler struct { Service *service.MediaVideoService } func NewMediaVideoHandler(db *bun.DB) *MediaVideoHandler { handler := &MediaVideoHandler{Service: service.NewMediaVideoService(repository.NewMediaVideoRepository(db))} return handler } func (handler *MediaVideoHandler) List(c *echo.Context) { logger := c.Logger() logger.Info("MediaVideoHandler#List") videos, err := handler.Service.List(c.Request().Context()) if err != nil { c.JSON(http.StatusInternalServerError, map[string]string{"error": err.Error()}) return } dtos := models.ConvertMediaVideosToDtos(videos) c.JSON(http.StatusOK, dtos) } func (handler *MediaVideoHandler) ListPage(c *echo.Context) { cookie, err := c.Cookie(globals.UserKey) user := cookie.Value logger := c.Logger() videos, err := handler.Service.List(c.Request().Context()) if err != nil { c.JSON(http.StatusInternalServerError, map[string]string{"error": err.Error()}) return } logger.Info("MediaVideoHandler#ListPage", "videos count", len(videos)) data := globals.GetDefaultValues(user, "MediaVideos...") data["title"] = "Kontor MediaVideos" data["media_links"] = videos data["MediaLinksUrl"] = globals.MediaVideoLink c.Render(http.StatusOK, "media_links", data) } func (handler *MediaVideoHandler) EditPage(c *echo.Context) { cookie, err := c.Cookie(globals.UserKey) user := cookie.Value id := c.Param("id") logger := c.Logger() video, err := handler.Service.Get(c.Request().Context(), id) if err != nil { logger.Info("MediaVideoHandler#EditPage", "error", err.Error()) c.JSON(http.StatusInternalServerError, map[string]string{"error": err.Error()}) return } logger.Info("MediaVideoHandler#EditPage", "lofi", video) data := globals.GetDefaultValues(user, "MediaLofis...") data["lofi"] = video c.Render(http.StatusOK, "lofi_detail", data) } func (handler *MediaVideoHandler) UpdatePage(c *echo.Context) { cookie, err := c.Cookie(globals.UserKey) user := cookie.Value id := c.Param("id") logger := c.Logger() video, err := handler.Service.Get(c.Request().Context(), id) if err != nil { logger.Info("MediaVideoHandler#UpdatePage", "error", err.Error()) c.JSON(http.StatusInternalServerError, map[string]string{"error": err.Error()}) return } var form models.MediaVideoForm if err := c.Bind(&form); err != nil { logger.Info("MediaVideoHandler#UpdatePage", "error", err.Error()) c.Render(http.StatusBadRequest, "lofi_detail", map[string]any{ "Form": form, "Errors": err.Error(), "user": user, }) return } logger.Info("MediaVideoHandler#UpdatePage", "lofi", video) //handler.Service.Update(c.Request.Context(), form.ConvertFormToMediaLofiDTO()) c.Redirect(http.StatusFound, globals.MediaVideoLink) } func (handler *MediaVideoHandler) DeletePage(c *echo.Context) { cookie, err := c.Cookie(globals.UserKey) user := cookie.Value id := c.Param("id") logger := c.Logger() err = handler.Service.Delete(c.Request().Context(), id) if err != nil { logger.Info("MediaVideoHandler#DeletePage", "error", err.Error()) c.JSON(http.StatusInternalServerError, map[string]string{"error": err.Error()}) return } logger.Info("MediaVideoHandler#DeletePage", "video", id) c.Render(http.StatusOK, "lofi_delete", map[string]string{ "title": "Kontor MediaFiles", "version": "0.4.0", "message": "MediaFiles...", "user": user, }) }