package com.social.media.application.campaign.dto;

import lombok.Builder;
import lombok.Value;

import java.time.LocalDateTime;
import java.util.Map;

/**
 * Campaign Execution DTO
 */
@Value
@Builder
public class CampaignExecutionDto {
    Long id;
    String executionCode;
    Long campaignId;
    Long socialAccountId;
    
    // Target information
    String targetUsername;
    String targetPostId;
    String targetUserId;
    
    // Action details
    String actionType;
    String actionText;
    Map<String, Object> actionParameters;
    
    // Execution status and timing
    String status;
    LocalDateTime executionTime;
    LocalDateTime completionTime;
    Integer durationSeconds;
    
    // Error handling
    String errorMessage;
    String errorCode;
    Integer retryCount;
    Integer maxRetries;
    
    // API Response data
    Map<String, Object> responseData;
    Integer apiResponseCode;
    String apiResponseMessage;
    
    // Metrics
    EngagementResultDto engagementResult;
    
    // Rate limiting tracking
    Boolean rateLimitHit;
    LocalDateTime rateLimitResetTime;
    
    // Audit
    LocalDateTime createdAt;
    LocalDateTime updatedAt;
    
    @Value
    @Builder
    public static class EngagementResultDto {
        Integer likes;
        Integer comments;
        Integer shares;
        Integer saves;
        Integer views;
    }
}
