102 lines
4.0 KiB
Plaintext
Executable File
102 lines
4.0 KiB
Plaintext
Executable File
package com.fp.person.rules.query.code;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
import javax.persistence.Query;
|
|
|
|
import com.fp.common.helper.Constant;
|
|
import com.fp.dto.query.QueryRequest;
|
|
import com.fp.dto.rules.QueryRule;
|
|
import com.fp.general.exception.GeneralException;
|
|
import com.fp.persistence.commondb.PersistenceHelper;
|
|
|
|
/**
|
|
* Clase que verifica si las direcciones se encuentran referenciadas en las tablas de TcustPeopleJob y
|
|
* TcustCompanyBranch
|
|
*
|
|
* @author JARIAS
|
|
*
|
|
*/
|
|
public class ValidationAddress extends QueryRule {
|
|
|
|
/**
|
|
*
|
|
*/
|
|
private static final long serialVersionUID = 1L;
|
|
|
|
/**
|
|
* Metodo que consulta los datos de manera normal segun el query enviado
|
|
*/
|
|
@Override
|
|
public QueryRequest process(QueryRequest qr) throws Exception {
|
|
// TODO Auto-generated method stub
|
|
List<Object> result = null;
|
|
List<Object> resultBranch = null;
|
|
Integer personcode = null;
|
|
Object objpersoncode = qr.get("personcode");
|
|
if (objpersoncode instanceof String) {
|
|
personcode = Integer.parseInt(objpersoncode.toString());
|
|
} else if (objpersoncode instanceof String) {
|
|
personcode = (Integer) objpersoncode;
|
|
}
|
|
|
|
Integer addressnumber = (Integer) qr.get("addressnumber");
|
|
result = this.ValidateAddressJob(personcode, addressnumber);
|
|
resultBranch = this.ValidateAddressBranch(personcode, addressnumber);
|
|
if (((result != null) && (!result.isEmpty())) || ((resultBranch != null) && (!resultBranch.isEmpty()))) {
|
|
throw new GeneralException("CUST-0010", "NO SE PUEDE ELIMINAR LA DIRECCIÓN PORQUE SE ENCUENTRA ASOCIADA");
|
|
}
|
|
return qr;
|
|
|
|
}
|
|
|
|
/**
|
|
* Metodo que consulta si la direccion esta refernciada en la tabla TcustPeopleJob
|
|
*
|
|
* @param personcode codigo de la persona dueña de la direccion
|
|
* @param addressnumber codigo de la direccion a consultar
|
|
* @return numberAddress retorna el codigo de la direccion si esta refenciado si es igual a 0 no existe referencia
|
|
*/
|
|
private List<Object> ValidateAddressJob(Integer personcode, Integer addressnumber) throws Exception {
|
|
List<Object> numberAddress = new ArrayList<Object>();
|
|
Query qry = PersistenceHelper.getEntityManager().createQuery(ValidationAddress.JPQLJOB);
|
|
qry.setParameter("personcode", personcode);
|
|
qry.setParameter("dateto", Constant.getDefaultExpiryTimestamp());
|
|
qry.setParameter("addressnumber", addressnumber);
|
|
return numberAddress = qry.getResultList();
|
|
|
|
}
|
|
|
|
/**
|
|
* Metodo que consulta si la direccion se encuentra referenciado en la tabla TcustCompanyBranch
|
|
*
|
|
* @param personcode codigo de la persona dueña de la direccion
|
|
* @param addressnumber codigo de la direccion a consultar
|
|
* @return numberAddress la lista es diferente de null si existe referencia
|
|
* @throws Exception
|
|
*/
|
|
private List<Object> ValidateAddressBranch(Integer personcode, Integer addressnumber) throws Exception {
|
|
List<Object> addressBranch = new ArrayList<Object>();
|
|
Query qry = PersistenceHelper.getEntityManager().createQuery(ValidationAddress.JPQLBRANCH);
|
|
qry.setParameter("personcode", personcode);
|
|
qry.setParameter("dateto", Constant.getDefaultExpiryTimestamp());
|
|
qry.setParameter("addressnumber", addressnumber);
|
|
return addressBranch = qry.getResultList();
|
|
|
|
}
|
|
|
|
/**
|
|
* Sentecia para consulta en la TcustPeopleJob
|
|
*/
|
|
private static final String JPQLJOB = "select t.address from TcustPeopleJob t where t.pk.personcode=:personcode"
|
|
+ " and t.pk.dateto=:dateto and t.address=:addressnumber";
|
|
|
|
/**
|
|
* Sentencia para consultar en la TcustCompanyBranch
|
|
*/
|
|
private static final String JPQLBRANCH = "select t.addressnumber from TcustCompanyBranch t where t.pk.personcode=:personcode "
|
|
+ " and t.pk.dateto=:dateto and t.addressnumber=:addressnumber";
|
|
|
|
}
|