/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.fp.person.rules.save;

import com.fp.common.helper.Constant;
import com.fp.dto.save.SaveRequest;
import com.fp.persistence.commondb.PersistenceHelper;
import com.fp.persistence.pcustomer.people.TcustPeople;
import com.fp.persistence.pcustomer.people.TcustPeopleKey;
import com.fp.persistence.pgeneral.gene.OptmListaNegra;
import java.util.List;

/**
 * Clase que verifica si la persona se encuentra registrada en el CONSEP
 *
 * @author hinga
 */
public class VerifyInConsepPerson extends VerifyInConsep {

    /**
     * Ejecuta la transaccion en modo normal.<br> Verifica que la persona que se intenta registrar se encuentra o no en
     * la lista negra (CONSEP).
     *
     * @param pSaveRequest Objeto que almacena referencia a las tablas de que intervienen en el proceso con sus datos.
     * @throws Exception
     * @return pSaveRequest Objeto que almacena referencia a las tablas de que intervienen en el proceso con sus datos.
     */
    @Override
    public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception {
        String firsname = null, middlename = null, lastname = null, surename = null, transaction = null, identificationConsep = null;
        String balancefile = (String) pSaveRequest.get("balancefile");
        if (balancefile != null && balancefile.compareTo("excelfile") == 0) {
            return pSaveRequest;
        }
        identificationConsep = (String) pSaveRequest.get("identification");
        TcustPeople tcustPeople = null;

        if (pSaveRequest.get("personcode") == null || pSaveRequest.get("personcode").equals("")) {
            tcustPeople = (TcustPeople) pSaveRequest.getSaveBeanModifiedObject("TCUSTPEOPLE");
            transaction = "N";
        } else {
            TcustPeopleKey key = new TcustPeopleKey(new Integer((String)pSaveRequest.get("personcode")), Constant.getDefaultExpiryTimestamp());
            tcustPeople = TcustPeople.find(PersistenceHelper.getEntityManager(), key);
            transaction = "U";
        }
        if(tcustPeople == null){
            tcustPeople = (TcustPeople) pSaveRequest.getSaveBeanModifiedObject("TCUSTPEOPLE");
        }
        if(transaction.compareTo("U") == 0){
            this.verifyChangeIdentificationPeople(tcustPeople, pSaveRequest, identificationConsep);
        }
        firsname = tcustPeople.getFirstname();
        middlename = tcustPeople.getMiddlename();
        lastname = tcustPeople.getLastname();
        surename = tcustPeople.getSurename();
        if (identificationConsep != null) {
            List<OptmListaNegra> ldata = OptmListaNegra.find(PersistenceHelper.getEntityManager(), identificationConsep);
            this.fillConsep(pSaveRequest, ldata, identificationConsep, firsname, middlename, lastname, surename, transaction, false);
        }
        return pSaveRequest;
    }

    /**
     * Ejecuta la transaccion en modo reverso.<br>
     *
     * @param pSaveRequest Objeto que almacena referencia a las tablas de que intervienen en el proceso con sus datos.
     * @throws Exception
     */
    @Override
    public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception {
        return pSaveRequest;
    }
}
