@@ -83,6 +83,11 @@ type AssetReportHandler struct {
8383 assetPerm * services.AssetPermissionService
8484}
8585
86+ type createAssetReportRequest struct {
87+ models.AssetReport
88+ IsActive * bool `json:"is_active"`
89+ }
90+
8691func NewAssetReportHandler (
8792 repo * repository.AssetReportRepository ,
8893 channelRepo * repository.ChannelRepository ,
@@ -300,10 +305,15 @@ func (h *AssetReportHandler) Create(w http.ResponseWriter, r *http.Request) {
300305 return
301306 }
302307
303- ar , ok := decodeChannelJSON [models. AssetReport ](w , r )
308+ input , ok := decodeChannelJSON [createAssetReportRequest ](w , r )
304309 if ! ok {
305310 return
306311 }
312+ ar := input .AssetReport
313+ ar .IsActive = true
314+ if input .IsActive != nil {
315+ ar .IsActive = * input .IsActive
316+ }
307317 if ! sanitizeAssetReport (w , r , & ar ) {
308318 return
309319 }
@@ -351,11 +361,6 @@ func (h *AssetReportHandler) Create(w http.ResponseWriter, r *http.Request) {
351361 if ! h .validateAssetReportFormBinding (w , r , user .ID , & ar ) {
352362 return
353363 }
354- // Reports default to active on create — JSON's false zero-value collides
355- // with "field omitted", so we always activate here. Callers that want to
356- // land an inactive report can follow up with PUT (Update preserves the
357- // requested is_active value verbatim).
358- ar .IsActive = true
359364 if ar .DisplayOrder == 0 {
360365 maxOrder , mErr := h .repo .MaxDisplayOrder (ar .ChannelID )
361366 if mErr != nil {
0 commit comments