package org.example.ycs.responder;

import lombok.SneakyThrows;
import lombok.extern.log4j.Log4j2;
import org.example.ycs.MessageResponder;
import org.example.ycs.ResponderRegistry;
import org.jpos.iso.ISOException;
import org.jpos.iso.ISOMsg;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
@Component
@Log4j2
public class VoidResponder extends BaseAuthResponder implements MessageResponder {
    @Autowired
    ResponderRegistry responderRegistry;

    @PostConstruct
    public void setup() {
        responderRegistry.register(this);
    }


    @SneakyThrows
    @Override
    public boolean isMatched(ISOMsg req) {
        if (("0220".equals(req.getMTI()))
                && req.getString(3).substring(0,2).equals("02")) {
            return true;
        }
        return false;
    }

    @Override
    public ISOMsg respond(ISOMsg request) {
        ISOMsg response = baseResponse(request);
        System.out.println("Void " + request.getString(4));
        if (request.getString(4).equals("000000000600")) {
            // Simulate Timeout for 20 seconds if amount is 123
            response.set(39, "65");
            //response.set(55, HexUtils.fromHexString("910A6EC3298EE96CBE843932"));
            response.unset(55);
        } else {
            response.set(39, "00");
            response.set(38, "123456");
        }
        return response;
    }
}
