package io.delphiplatform.api.v3.model.ads;

import com.fasterxml.jackson.annotation.JsonProperty;

import java.math.BigDecimal;

import io.delphiplatform.api.v3.rdb.entity.ads.CampaignBudgetEntity;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;

@Builder
@Getter
@EqualsAndHashCode
public class AdsCampaignsBudgetItem {

    @JsonProperty("campaign_id")
    private String campaignId;
    @JsonProperty("account_id")
    private String accountId;
    @JsonProperty("budget_value")
    private BigDecimal budgetValue;
    @JsonProperty("budget_type")
    private BudgetType budgetType;
    @JsonProperty("budget_level")
    private BudgetLevel budgetLevel;
    @JsonProperty("currency")
    private String currency;

    public static AdsCampaignsBudgetItem from(CampaignBudgetEntity entity) {
        if (entity == null) {
            return null;
        }

        return AdsCampaignsBudgetItem.builder()
            .accountId(entity.getId().getAccountId())
            .campaignId(entity.getId().getCampaignId())
            .budgetType(entity.getBudgetType() != null ? BudgetType.fromValue(entity.getBudgetType()) : null)
            .budgetLevel(entity.getBudgetLevel() != null ? BudgetLevel.fromValue(entity.getBudgetLevel()) : null)
            .budgetValue(entity.getBudget() != null ? BigDecimal.valueOf(entity.getBudget()) : null)
            .currency(entity.getCurrency())
            .build();
    }
}
