package com.fp.frontend.prueba;

import java.util.HashMap;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import com.fp.dto.AbstractDataTransport;
import com.fp.dto.Request;
import com.fp.dto.Response;
import com.fp.dto.save.DtoSave;
import com.fp.frontend.controller.AbstractController;
import com.fp.frontend.helper.MessageHelper;
import com.fp.frontend.utility.MsgGeneral;

/**
 * Clase controladora para la verificacion de los requisitos del tramite.
 *
 * @author C.P.
 * @version 2.1
 */
@SuppressWarnings("serial")
@ManagedBean
@ViewScoped
public class PruebaInicioFlujo extends AbstractController<AbstractDataTransport> {

    public PruebaInicioFlujo() throws Exception {
        super(AbstractDataTransport.class);
    }

    @PostConstruct
    private void postconstruct() {

        try {
            this.init();
            // Inicializa autoconsulta
            super.startQuery();
        } catch (Exception e) {
            MessageHelper.setMessageError(e);
        }
    }

    /**
     * Incializa el controlador, cuando se esta utilizando una pagina que utliza
     * el controlador.
     */
    private void init() {
    }

    /**
     * Metodo para cargar el registro de la solicitud tramite en la lista new
     */
    @Override
    public void save() {
        try {
            System.out.println("--------------------------prueba------------------");
            Request request = callerhelper.getRequest();
            HashMap<String, DtoSave> msave = new HashMap<String, DtoSave>();
            request.setSaveTables(msave);
            request.modifiedData().put("csolicitud", "1");
            request.modifiedData().put("isnew", "Y");
            Response resp = callerhelper.executeSave(request);
            if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) {
                MessageHelper.setMessageInfo(resp);
            } else {
                MessageHelper.setMessageError(resp);
            }
        } catch (Throwable e) {
            MessageHelper.setMessageError(e);
        }
    }

    @Override
    protected void querydatabase() {
        try {

        } catch (Exception e) {
            MessageHelper.setMessageError(e);
        }
    }

    /**
     * M&eacute;todo para el inicio de flujo
     */
    public void iniciarFlujo() {
        try {

            Request request = callerhelper.getRequest();
            super.cleanRequest(request);
            request.modifiedData().put("csolicitud", "1");
            request.modifiedData().put("numerotransaccion", "32");
            request.modifiedData().put("xpath", "emisiondocumentohabilitante");
            request.modifiedData().put("isnew", "Y");
            Response resp = callerhelper.executeSave(request);
            if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) {
                this.setShowRow(true);
                MessageHelper.setMessageInfo(resp, MsgGeneral.getProperty("msg_initFlow") + " SOLICITUD: 1 ");
            } else {
                MessageHelper.setMessageError(resp);
            }
        } catch (Throwable e) {
            MessageHelper.setMessageError(e);
        }
    }

    /**
     * M&eacute;todo para el inicio de flujo
     */
    public void completarTarea() {

        try {
//            Request request = callerhelper.getRequest();
//            // limpiar request para finalizar la tarea.
//            super.cleanRequest(request);
//
//            request.modifiedData().put("csolicitud", solicitud.getRecord().getPk());
//            request.modifiedData().put("TID", tid);
//            request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R
//            request.modifiedData().put("BPMObs", bpmDataComment);
//
//            Response resp = callerhelper.executeSave(request);
//
//            if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) {
//                MessageHelper.setMessageInfo(resp);
//                RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()");
//            } else {
//                MessageHelper.setMessageError(resp);
//            }
        } catch (Throwable e) {
            MessageHelper.setMessageError(e);
        }
    }

    @Override
    public void postCommit(Response response) throws Exception {
    }

}
