package io.delphiplatform.api.v3.model.tiktok.top.sound;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Set;

import io.delphiplatform.api.util.model.ModelUtils;
import io.delphiplatform.api.v3.model.tiktok.TikTokContentType;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * Object containing info about ISRC top TikTok sound.
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TikTokTopIsrcSound {

    @JsonProperty("report_date")
    private LocalDate reportDate;

    @JsonProperty("sound_id")
    private String soundId;

    @JsonProperty("isrcs")
    private Set<String> isrcs;

    @JsonProperty("content_type")
    private TikTokContentType contentType;

    @JsonProperty("creations")
    private Long creations;

    @JsonProperty("position")
    private Integer position;

    @JsonIgnore
    private Long totalIsrcCreations;

    @JsonProperty("creations_share")
    public BigDecimal getCreationsShare() {
        return ModelUtils.calculateCreationsShare(creations, totalIsrcCreations);
    }

    @JsonProperty("sound_url")
    public String getSoundUrl() {
        return "https://www.tiktok.com/music/-" + soundId;
    }
}
