package com.fp.viaticos.rules.save.solicitud;

import com.fp.common.helper.Constant;
import com.fp.dto.rules.TransactionRule;
import com.fp.dto.save.SaveRequest;
import com.fp.persistence.pviaticos.solicitud.ViaSolicitud;
import com.fp.sessionbeans.helper.Sequence;

/**
 * Clase que se encarga de completar información de una solicitud de viaticos.
 * 
 * @author Jorge Vaca.
 * @version 2.1
 */
public class Solicitud extends TransactionRule {

    private static final long serialVersionUID = 1L;

    /*
     * (non-Javadoc)
     * 
     * @see com.fp.dto.rules.TransactionRule#normalProcess(com.fp.dto.save.SaveRequest)
     */
    @Override
    public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception {
        if (Constant.ifYes((String) pSaveRequest.get("isnew")) || pSaveRequest.get("csolicitud") != null) {
            return pSaveRequest;
        }
        String codSolicitud = null;
        ViaSolicitud viasolicitud = (ViaSolicitud) pSaveRequest.getSaveBeanModifiedObject("SOLICITUD");
        if (viasolicitud == null) {
            return pSaveRequest;
        }
        codSolicitud = viasolicitud.getPk().getCod_solicitud();
        if (viasolicitud.getPk().getCod_solicitud() == null) {
            codSolicitud = this.getCodigoSolicitud();
            viasolicitud.getPk().setCod_solicitud(codSolicitud);
            pSaveRequest.put("csolicitud", codSolicitud);
        }
        return pSaveRequest;
    }

    /*
     * (non-Javadoc)
     * 
     * @see com.fp.dto.rules.TransactionRule#reverseProcess(com.fp.dto.save.SaveRequest)
     */
    @Override
    public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception {
        return pSaveRequest;
    }

    /**
     * Metodo que devuelve la secuencia de una solicitud de viaticos.
     * 
     * @return Codigo de la nueva solicitud de viaticos.
     * @throws Exception
     */
    private String getCodigoSolicitud() throws Exception {
        Sequence sequence = new Sequence();
        Integer solcitud = Integer.valueOf(sequence.getNextValue("VIATICOS").toString());
        return solcitud.toString();
    }

}
