// weatherstories.go presents weather story payloads.
// Layer: adapters/inbound/httpapi/presenter weather stories payload mapping.
package presenter

import (
	"time"

	"gitea.maximumdirect.net/ejr/weatherfeeder/model"
)

func WeatherStoryRunPayload(run *model.WeatherStoryRun, _ Units, tz *time.Location) any {
	if run == nil {
		return nil
	}

	out := model.WeatherStoryRun{
		OfficeID: run.OfficeID,
		AsOf:     inLocationTime(run.AsOf, tz),
		Stories:  make([]model.WeatherStory, 0, len(run.Stories)),
	}
	for _, story := range run.Stories {
		out.Stories = append(out.Stories, copyWeatherStory(story, tz))
	}
	return &out
}

func WeatherStoryPayload(story *model.WeatherStory, _ Units, tz *time.Location) any {
	if story == nil {
		return nil
	}
	out := copyWeatherStory(*story, tz)
	return &out
}

func copyWeatherStory(story model.WeatherStory, tz *time.Location) model.WeatherStory {
	return model.WeatherStory{
		OfficeID:    story.OfficeID,
		StartTime:   inLocationTime(story.StartTime, tz),
		EndTime:     inLocationTime(story.EndTime, tz),
		UpdatedAt:   inLocationTime(story.UpdatedAt, tz),
		Title:       story.Title,
		Description: story.Description,
		AltText:     story.AltText,
		Priority:    story.Priority,
		Order:       story.Order,
		DownloadURL: story.DownloadURL,
	}
}
