package org.example.ycs.responder;

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

import javax.annotation.PostConstruct;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

@Log4j2
@Component
public class IpekMessageResponder implements MessageResponder {

    @Autowired
    ResponderRegistry responderRegistry;

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

    @SneakyThrows
    @Override
    public boolean isMatched(ISOMsg req) {

        log.info("DE3: " + req.getString(3));
        if ("990280".equals(req.getString(3)) && "0800".equals(req.getMTI())) {
            return true;
        }
        return false;
    }

    @SneakyThrows
    @Override
    public ISOMsg respond(ISOMsg req) {
        LocalDateTime dateTime = LocalDateTime.now();
        DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("MMdd");
        DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HHmmss");
        ISOMsg resp = new ISOMsg();
        resp.setPackager(new ISO87DPackager());
        resp.setMTI(req.getMTI());
        resp.setResponseMTI();
        resp.set(3, req.getString(3));
        resp.set(11, req.getString(11));
        resp.set(12, dateTime.format(timeFormatter));
        resp.set(13, dateTime.format(dateFormatter));
        resp.set(24, req.getString(24));
        resp.set(39, "00");
        resp.set(41, req.getString(41));
        resp.set(62, "F6BB1C4EEDD1B4ED010ECA802D08696CFC98F6");

        return resp;
    }
}
