package io.delphiplatform.api.v3.model;

import com.fasterxml.jackson.annotation.JsonProperty;

import java.time.LocalDate;
import java.util.Map;

import lombok.Builder;
import lombok.Getter;

@Getter
@Builder
public class TrackStreamsInsightsItem {

    @JsonProperty("peak_streams_date")
    private LocalDate peakStreamsDate;
    @JsonProperty("peak_streams_number")
    private Long peakStreamsNumber;
    @JsonProperty("strike_weeks")
    private Long strikeWeeks;
    @JsonProperty("country_code")
    private String countryCode;

    public static TrackStreamsInsightsItem from(StreamModel streamModel, Map<String, Long> strikeWeeksByCountry) {
        return TrackStreamsInsightsItem.builder()
            .peakStreamsDate(streamModel.getDate())
            .peakStreamsNumber(streamModel.getStreams())
            .strikeWeeks(strikeWeeksByCountry == null ? 0 : strikeWeeksByCountry.getOrDefault(streamModel.getCountryCode(), 0L))
            .countryCode(streamModel.getCountryCode())
            .build();
    }
}
