using System.Text.Json.Serialization;
using System.Collections.Generic;
using Topsdk.Util;

namespace Topsdk.Top.Ability3261.Request;

public class TaobaoTbkDgCpaActivityReportRequest : AbstractTopApiRequest
{

    /*
        CPA活动ID，详见https://www.yuque.com/docs/share/16905f3f-3a22-4e7c-b8c3-4d23791d42f7?#
            */
    private long? eventId;


    /*
        日期(yyyyMMdd)
            */
    private string? bizDate;


    /*
        分页页数，从1开始
            */
    private long? pageNo;


    /*
        数据类型：数据类型:1预估 2结算 （选择1可查询含当天实时预估统计的累计数据，选择2可查询最晚截止昨天结算的累计数据，具体逻辑以活动规则描述为准；）
         默认值:1    */
    private long? queryType;


    /*
        分页大小
            */
    private long? pageSize;


    /*
        媒体三段式id（如果传入pid则返回pid汇总数据，不传则返回member维度统计数据，pid和relationid不可同时传入）
            */
    private string? pid;


    /*
        代理id（如果传入rid则返回rid统计数据，不传则返回member维度统计数据）
            */
    private long? relationId;


    [JsonPropertyName("event_id")]
    public long? EventId
    {
        get => eventId;
        set => this.eventId = value;
    }

    [JsonPropertyName("biz_date")]
    public string? BizDate
    {
        get => bizDate;
        set => this.bizDate = value;
    }

    [JsonPropertyName("page_no")]
    public long? PageNo
    {
        get => pageNo;
        set => this.pageNo = value;
    }

    [JsonPropertyName("query_type")]
    public long? QueryType
    {
        get => queryType;
        set => this.queryType = value;
    }

    [JsonPropertyName("page_size")]
    public long? PageSize
    {
        get => pageSize;
        set => this.pageSize = value;
    }

    [JsonPropertyName("pid")]
    public string? Pid
    {
        get => pid;
        set => this.pid = value;
    }

    [JsonPropertyName("relation_id")]
    public long? RelationId
    {
        get => relationId;
        set => this.relationId = value;
    }



    public override IDictionary<string, string> ToRequestParam()
    {
        IDictionary<string, string> requestParam = new Dictionary<string, string>();
        if(this.eventId != null)
        {
            requestParam.Add("event_id",TopUtils.ConvertBasicType(this.eventId));
        }
        if(this.bizDate != null)
        {
            requestParam.Add("biz_date",TopUtils.ConvertBasicType(this.bizDate));
        }
        if(this.pageNo != null)
        {
            requestParam.Add("page_no",TopUtils.ConvertBasicType(this.pageNo));
        }
        if(this.queryType != null)
        {
            requestParam.Add("query_type",TopUtils.ConvertBasicType(this.queryType));
        }
        if(this.pageSize != null)
        {
            requestParam.Add("page_size",TopUtils.ConvertBasicType(this.pageSize));
        }
        if(this.pid != null)
        {
            requestParam.Add("pid",TopUtils.ConvertBasicType(this.pid));
        }
        if(this.relationId != null)
        {
            requestParam.Add("relation_id",TopUtils.ConvertBasicType(this.relationId));
        }
        return requestParam;
    }

    public override IDictionary<string, TopFileItem> ToFileParam()
    {
        IDictionary<string, TopFileItem> fileParam = new Dictionary<string, TopFileItem>();
        return fileParam;
    }

    public override string GetApiCode()
    {
        return "taobao.tbk.dg.cpa.activity.report";
    }

}

