package com.goodbaby.printermodule;

import android.widget.Toast;

import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.ReadableMap;
import com.goodbaby.printermodule.entity.OrderEntity;
import com.goodbaby.printermodule.utils.PrintUtil;
import com.goodbaby.printermodule.utils.Utils;

import static com.facebook.react.bridge.UiThreadUtil.runOnUiThread;

/**
 * Created by limingguang on 2018/8/22.
 */

public class PrinterModule extends ReactContextBaseJavaModule {

    private static final String TAG = "PrinterModule";

    public PrinterModule(ReactApplicationContext reactContext) {
        super(reactContext);
        System.out.println("打印机初始化!");
        PrintUtil.getUsbDriverService(reactContext);
    }

    @Override
    public String getName() {
        return "PrinterModule";
    }

    @ReactMethod
    public void print(ReadableMap json) {
        if(json == null){
            promptText("打印内容为空!");
            return;
        }
        if(json.getInt("code") != 0){
            promptText("打印报文错误!");
            return;
        }

        if(!PrintUtil.printConnStatus(getReactApplicationContext())){
            promptText("无法连接到打印机!");
            return;
        }

        try {
            OrderEntity orderEntity = Utils.serializeOrder(json);
            // 1.第一步打印小票
            PrintUtil.printTicket(orderEntity);
            // 2.第二步打印优惠信息
            PrintUtil.printDeduct(orderEntity);
            // 3.第三步打印提货存根联
            PrintUtil.printPickUpStub(orderEntity);
            // 4.第四步打印提货单
            for (int i =0; i< orderEntity.getContainerItemList().size(); i++){
                PrintUtil.printPickUpBill(orderEntity, orderEntity.getContainerItemList().get(i));
            }
            // 5. 切纸
            PrintUtil.setFeedCut(0);
        }catch (Exception ex){
            ex.printStackTrace();
            promptText("打印小票出错，请联系管理员重印！");
        }

    }

    /**
     * 弹出消息
     * @param txt toast文案
     */
    void promptText(final String txt) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(getReactApplicationContext(), txt, Toast.LENGTH_LONG).show();
            }
        });
    }


}
