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

import com.fp.dto.rules.TransactionRule;
import com.fp.dto.save.SaveRequest;
import com.fp.persistence.commondb.PersistenceHelper;
import com.fp.persistence.pviaticos.solicitud.ViaSolicitud;
import com.fp.persistence.pviaticos.solicitud.ViaSolicitudKey;
import com.fp.viaticos.rules.enums.EnumCodigos;

/**
 * Clase que se encarga de cambiar el estado de una solicitud o de un informe.
 * 
 * @author Jorge Vaca.
 * @version 2.1
 */
@SuppressWarnings("serial")
public abstract class EstadoHelper extends TransactionRule {

    /**
     * Metodo que cambia el estado de una solicitud o de un informe.
     * 
     * @param pSaveRequest Objeto que tien informacion util para el procesamiento de una transaccion.
     * @param cestado Codigo de estado a actualziar en la solicitud o el informe.
     * @throws Exception
     */
    protected void cambiar(SaveRequest pSaveRequest, String cestado) throws Exception {
        String csolicitud = pSaveRequest.getString("csolicitud");
        // El tipo siempre es S el informe no maneja estados.
        ViaSolicitud vsol = ViaSolicitud.find(PersistenceHelper.getEntityManager(), new ViaSolicitudKey(csolicitud, EnumCodigos.SOLICITUD.getCodigo()));
        vsol.setCod_estado(cestado);
    }
}
