package cz.moneta.test.dsl.util.task.wso2.payments;

import lombok.*;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * List of transactions in ICBS.
 * Class for API response /t/payments.cluster/GET_HISTORY_TRXS/001.
 */
@AllArgsConstructor
@NoArgsConstructor
@Builder
@EqualsAndHashCode(callSuper = false)
@ToString
public class ListOfTransactionsSuccessResponse {

    //Transactions count
    public Integer RT1CNT;

    //List of transactions
    @Builder.Default
    public List<RS_DATA> RS_DATA = new ArrayList<>();

    @AllArgsConstructor
    @NoArgsConstructor
    @Builder
    @EqualsAndHashCode(callSuper = false)
    public static class RS_DATA {

        // Transaction Amount
        public Double OUAMT;
        // Variable Symbol
        public String OUDVSY;
        // AV Message 1
        public String OUAVM1;
        // Specific Symbol
        public Long OUDSSY;
        // Posting Date
        public Date OUDATE;
        // Credit Message 3
        public String OUCMS3;
        // Originator Reference
        public String OUBREF;
        // Credit Message 4
        public String OUCMS4;
        // Credit Message 1
        public String OUCMS1;
        // Transaction Amount / LCYE
        public Integer OUITC;
        // Credit Message 2
        public String OUCMS2;
        // User ID
        public String OUUSER;
        // Constant Symbol
        public String OUDCSY;
        // Transaction Description
        public String OUDSC2;
        // Original Transaction Code (from the Vision for the Card Transactions)
        public String OUOTC;
        // Transaction Description
        public String OUDSC3;
        // Originators Document ID
        public String OUDCID;
        // Effective Date
        public Date OUEFF;
        // Transaction Description
        public String OUDSC1;
        // Debit/Credit Code (D/C)
        public String OUDRCRX;
        // Debit Message 4
        public String OUDMS4;
        // Partner Account Name
        public String OUOSHN;
        // Partner Bank
        public String OUOBKB;
        // Debit Message 1
        public String OUDMS1;
        // Partner Account
        public Long OUOACC;
        // Debit Message 2
        public String OUDMS2;
        // Debit Message 3
        public String OUDMS3;
        // AV Message 4
        public String OUAVM4;
        // Tran Number Within Day
        public Integer OUNBR;
        // AV Message 3
        public String OUAVM3;
        // AV Message 2
        public String OUAVM2;
        // Debit or Credit Code
        public String OUDRCR;
        // Transaction Amount / LCYE
        public Double OUDLCY;

    }
}
