maia/registro/.svn/pristine/58/587a45869b2101bf421fe5a2e0b...

487 lines
23 KiB
Plaintext
Executable File

package com.fp.armas.portal.controller.registro;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.DefaultStreamedContent;
import com.fp.armas.portal.controller.base.BaseController;
import com.fp.armas.portal.datamanager.base.BaseDataManager;
import com.fp.armas.portal.datamanager.registro.RegistroDataManager;
import com.fp.armas.portal.facade.PortalService;
import com.fp.armas.portal.faces.FacesUtil;
import com.fp.armas.portal.model.Tcustcompany;
import com.fp.armas.portal.model.Tcustpeople;
import com.fp.armas.portal.model.Tcustpersonaddress;
import com.fp.armas.portal.model.Tcustpersondetail;
import com.fp.armas.portal.model.Tcustpersonphone;
import com.fp.armas.portal.model.Tgenecanton;
import com.fp.armas.portal.model.Tgenecity;
import com.fp.armas.portal.model.Tgenefilesdetail;
import com.fp.armas.portal.model.Tgeneparroquia;
import com.fp.armas.portal.model.TgeneparroquiaPK;
import com.fp.armas.portal.model.Tgeneprovince;
import com.fp.armas.portal.util.PortalMessages;
import com.fp.armas.portal.webservices.snap.cedula.ClienteCedula;
import com.fp.armas.portal.webservices.snap.ruc.ClienteRUC;
import ec.gob.registrocivil.consultacedula.Cedula;
import ec.gov.sri.wsconsultacontribuyente.ContribuyenteCompleto;
/**
* Bean que maneja el registro del usuario en el portal y por el cual se va a enviar dichos datos a MAIA
* @author dcruz
*
*/
@ManagedBean
@ViewScoped
public class RegistroController extends BaseController implements Serializable {
private static final long serialVersionUID = 1L;
private static final String TIPO_TELEFONO=PortalMessages.getInstancia().getString("catalogo.codigo.tipo.telefono");
private static final String TIPO_DIRECCION=PortalMessages.getInstancia().getString("catalogo.codigo.tipo.direccion");
private static final String TIPO_IDENTIFICACION=PortalMessages.getInstancia().getString("catalogo.codigo.tipo.identificacion");
private static final String ESTADO_CIVIL=PortalMessages.getInstancia().getString("catalogo.codigo.tipo.estado.civil");
private static final String PROFESION=PortalMessages.getInstancia().getString("catalogo.codigo.tipo.profesion");
private Boolean isEnableSave=Boolean.TRUE;
@ManagedProperty(value="#{registroDataManager}")
private RegistroDataManager registroDataManager;
@Inject
private PortalService portalService;
@Override
public BaseDataManager getDataManager() {
return registroDataManager;
}
@Override
public void inicializar(){
try{
this.registroDataManager.setDireccionPersona(new Tcustpersonaddress());
this.registroDataManager.getDireccionPersona().setTgeneparroquia(new Tgeneparroquia());
this.registroDataManager.getDireccionPersona().getTgeneparroquia().setId(new TgeneparroquiaPK());
this.registroDataManager.setPersona(new Tcustpersondetail());
this.registroDataManager.getPersona().setIdentificationcatalogcode(TIPO_IDENTIFICACION);
this.registroDataManager.setTipoDocumentoColl(portalService.obtenerCatalogo(TIPO_IDENTIFICACION));
this.registroDataManager.getDireccionPersona().setCountryCode("EC");
this.registroDataManager.getDireccionPersona().setProvinceCode(null);
this.registroDataManager.getDireccionPersona().setCantonCode(null);
this.registroDataManager.getDireccionPersona().setCityCode(null);
this.registroDataManager.setPaisesColl(portalService.obtenerPais());
this.registroDataManager.setEstadoCivilColl(portalService.obtenerCatalogo(ESTADO_CIVIL));
this.registroDataManager.setActividadEconomicaColl(portalService.obtenerActividadEconomica());
this.registroDataManager.setProfesionColl(portalService.obtenerCatalogo(PROFESION));
this.registroDataManager.setDireccionPersona(new Tcustpersonaddress());
this.registroDataManager.getDireccionPersona().setAddresstypecatalogcode(TIPO_DIRECCION);
this.registroDataManager.setCorreoPersona(new Tcustpersonaddress());
this.registroDataManager.getCorreoPersona().setAddresstypecatalogcode(TIPO_DIRECCION);
this.registroDataManager.getCorreoPersona().setAddresstypecatalog("3");
this.registroDataManager.setTelefonoPersona(new Tcustpersonphone());
this.registroDataManager.getTelefonoPersona().setAddressnumber(1L);
this.registroDataManager.getTelefonoPersona().setPhonetypecatalogcode(TIPO_TELEFONO);
this.registroDataManager.getTelefonoPersona().setPhonetypecatalog("1");//1 Fijo, 2 Celular
this.registroDataManager.setTelefonoCelular(new Tcustpersonphone());
this.registroDataManager.getTelefonoCelular().setAddressnumber(2L);
this.registroDataManager.getTelefonoCelular().setPhonetypecatalogcode(TIPO_TELEFONO);
this.registroDataManager.getTelefonoCelular().setPhonetypecatalog("2");//1 Fijo, 2 Celular
this.registroDataManager.setAdicionalPersona(new Tcustpeople());
this.registroDataManager.getDireccionPersona().setCountryCode("EC");
this.registroDataManager.setCompania(new Tcustcompany());
this.registroDataManager.setFoto(new Tgenefilesdetail());
this.cambiaPais();
}catch(Throwable e){
FacesUtil.getInstancia().messageError(ExceptionUtils.getRootCauseMessage(e));
}
}
/*
* Eventos ajax
*/
/**
* Cambia pais y actualiza provincias
*/
public void cambiaPais() {
try{
if(this.registroDataManager.getDireccionPersona().getCountryCode()!=null){
Collection<Tgeneprovince> provinciaColl = portalService.obtenerProvincias(this.registroDataManager.getDireccionPersona().getCountryCode());
registroDataManager.setProvinciasColl(provinciaColl);
cambiaProvincia();
//cambiaCanton();
}else{
registroDataManager.setProvinciasColl(new ArrayList<Tgeneprovince>());
registroDataManager.setCantonColl(new ArrayList<Tgenecanton>());
registroDataManager.setCiudadColl(new ArrayList<Tgenecity>());
this.registroDataManager.getDireccionPersona().setProvinceCode(null);
this.registroDataManager.getDireccionPersona().setCantonCode(null);
this.registroDataManager.getDireccionPersona().setCityCode(null);
}
// if(provinciaColl != null && !provinciaColl.isEmpty()){
// registroDataManager.getDireccionPersona().setProvinceCode(provinciaColl.iterator().next().getId().getProvincecode());
// registroDataManager.setCantonColl(portalService.obtenerCantones(this.registroDataManager.getDireccionPersona().getCountryCode(), provinciaColl.iterator().next().getId().getProvincecode()));
// }else{
// registroDataManager.setCantonColl(new HashSet<Tgenecanton>());
// }
// if(registroDataManager.getCantonColl() != null && !registroDataManager.getCantonColl().isEmpty()){
// registroDataManager.getDireccionPersona().setCantonCode(registroDataManager.getCantonColl().iterator().next().getId().getCantoncode());
// registroDataManager.setCiudadColl(portalService.obtenerCiudades(this.registroDataManager.getDireccionPersona().getCountryCode(), provinciaColl.iterator().next().getId().getProvincecode(), registroDataManager.getCantonColl().iterator().next().getId().getCantoncode()));
// registroDataManager.setParroquiaColl(portalService.obtenerParroquias(this.registroDataManager.getDireccionPersona().getCountryCode(), provinciaColl.iterator().next().getId().getProvincecode(), registroDataManager.getCantonColl().iterator().next().getId().getCantoncode()));
// }else{
// registroDataManager.setParroquiaColl(new HashSet<Tgeneparroquia>());
// registroDataManager.setCiudadColl(new HashSet<Tgenecity>());
// }
}catch(Throwable e){
FacesUtil.getInstancia().messageError(ExceptionUtils.getRootCauseMessage(e));
}
}
/**
* Cambia provincia y actualiza sus subniveles
*/
public void cambiaProvincia() {
try{
// if(registroDataManager.getDireccionPersona().getProvinceCode() == null){
// registroDataManager.getDireccionPersona().setProvinceCode(registroDataManager.getProvinciasColl() != null && !registroDataManager.getProvinciasColl().isEmpty() ?
// registroDataManager.getProvinciasColl().iterator().next().getId().getProvincecode():null);
// }
if( registroDataManager.getDireccionPersona().getProvinceCode()!=null && registroDataManager.getDireccionPersona().getCountryCode()!=null){
Collection<Tgenecanton> cantonColl = portalService.obtenerCantones(registroDataManager.getDireccionPersona().getCountryCode(), registroDataManager.getDireccionPersona().getProvinceCode());
registroDataManager.setCantonColl(cantonColl);
cambiaCanton();
}else{
registroDataManager.setCantonColl(new ArrayList<Tgenecanton>());
registroDataManager.setParroquiaColl(new ArrayList<Tgeneparroquia>());
registroDataManager.setCiudadColl(new ArrayList<Tgenecity>());
this.registroDataManager.getDireccionPersona().setCantonCode(null);
this.registroDataManager.getDireccionPersona().setCityCode(null);
}
// if(cantonColl != null && !cantonColl.isEmpty()){
// registroDataManager.setCiudadColl(portalService.obtenerCiudades(registroDataManager.getDireccionPersona().getCountryCode(), registroDataManager.getProvinciasColl().iterator().next().getId().getProvincecode(), registroDataManager.getCantonColl().iterator().next().getId().getCantoncode()));
// registroDataManager.setParroquiaColl(portalService.obtenerParroquias(registroDataManager.getDireccionPersona().getCountryCode(), registroDataManager.getProvinciasColl().iterator().next().getId().getProvincecode(), registroDataManager.getCantonColl().iterator().next().getId().getCantoncode()));
// }else{
// registroDataManager.setParroquiaColl(new HashSet<Tgeneparroquia>());
// registroDataManager.setCiudadColl(new HashSet<Tgenecity>());
// }
}catch(Throwable e){
FacesUtil.getInstancia().messageError(ExceptionUtils.getRootCauseMessage(e));
}
}
/**
* Cambia cant&oacute;n y actualiza subniveles
*/
public void cambiaCanton() {
try{
// if(registroDataManager.getDireccionPersona().getCantonCode() == null){
// registroDataManager.getDireccionPersona().setCantonCode(registroDataManager.getCantonColl() != null && !registroDataManager.getCantonColl().isEmpty() ?
// registroDataManager.getCantonColl().iterator().next().getId().getCantoncode():null);
// }
if(registroDataManager.getDireccionPersona().getCountryCode()!=null && registroDataManager.getDireccionPersona().getProvinceCode()!=null &&
registroDataManager.getDireccionPersona().getCantonCode()!=null){
Collection<Tgeneparroquia> parroquiaColl = portalService.obtenerParroquias(registroDataManager.getDireccionPersona().getCountryCode(), registroDataManager.getDireccionPersona().getProvinceCode(), registroDataManager.getDireccionPersona().getCantonCode());
Collection<Tgenecity> cityColl = portalService.obtenerCiudades (registroDataManager.getDireccionPersona().getCountryCode(), registroDataManager.getDireccionPersona().getProvinceCode(), registroDataManager.getDireccionPersona().getCantonCode());
registroDataManager.setParroquiaColl(parroquiaColl);
registroDataManager.setCiudadColl(cityColl);
}else{
this.registroDataManager.getDireccionPersona().setCityCode(null);
registroDataManager.setParroquiaColl(new ArrayList<Tgeneparroquia>());
registroDataManager.setCiudadColl(new ArrayList<Tgenecity>());
}
}catch(Throwable e){
FacesUtil.getInstancia().messageError(ExceptionUtils.getRootCauseMessage(e));
}
}
/**
* Se verifica que debe
*/
public void changeTipoIdentificacion() {
try{
switch (registroDataManager.getPersona().getIdentificationcatalog()) {
case "CED":
registroDataManager.setTamDocIndentificacion(10);
registroDataManager.setTipoMascaraIdentificacion(PortalMessages.getInstancia().getString("tipo.mascara.pint"));
break;
case "RUC":
registroDataManager.setTamDocIndentificacion(13);
registroDataManager.setTipoMascaraIdentificacion(PortalMessages.getInstancia().getString("tipo.mascara.pint"));
break;
case "PAS":
registroDataManager.setTamDocIndentificacion(15);
registroDataManager.setTipoMascaraIdentificacion(PortalMessages.getInstancia().getString("tipo.mascara.alphanum"));
break;
default:
break;
}
}catch(Throwable e){
FacesUtil.getInstancia().messageError(ExceptionUtils.getRootCauseMessage(e));
}
}
/**
* Se verifica que si existe el usuario actualice toda la informaci&oacute;n
*/
public void changeIdentificacion() {
String id = registroDataManager.getPersona().getIdentification();
String tipoId = registroDataManager.getPersona().getIdentificationcatalog();
Tcustpersondetail personaDetalle = portalService.obtenerDetallePersonaPorIdentificacion(registroDataManager.getPersona().getIdentification());
if(personaDetalle != null){
// FacesUtil.getInstancia().messageWarn(PortalWebResources.getString("error.msg.persona.registrada"));
registroDataManager.setExisteCedula(true);
}else{
registroDataManager.setExisteCedula(false);
this.inicializar();
registroDataManager.getPersona().setIdentification(id);
registroDataManager.getPersona().setIdentificationcatalog(tipoId);
}
this.completaDatosPersona(personaDetalle);
cambiaPais();
}
/**
* Completa los datos de la persona si esta existe
* @param identificacion
* @param tipoIdentificacion
*/
private void completaDatosPersona(Tcustpersondetail personaDetalle){
if(personaDetalle != null){
registroDataManager.setPersona(personaDetalle);
}
switch (registroDataManager.getPersona().getIdentification().length()) {
case 10:{
Cedula cedula = ClienteCedula.obtenerCedula(registroDataManager.getPersona().getIdentification());
completaDatosPersonaNatural(registroDataManager.getPersona());
completaDatosSnap(cedula);
registroDataManager.setCedulaSnap(cedula);
registroDataManager.setRucSnap(null);
}
break;
case 13:{
ContribuyenteCompleto contribuyente = ClienteRUC.obtenerRUC(registroDataManager.getPersona().getIdentification());
if(!contribuyente.getCodEstado().equals("ACT")){
FacesUtil.getInstancia().messageError("El RUC INGRESADO NO ESTA ACTIVO");
FacesContext.getCurrentInstance().getExternalContext().getFlash().setKeepMessages(Boolean.TRUE);
// FacesUtil.getInstancia().eliminaBeanSesion("registroDataManager");
isEnableSave=Boolean.FALSE;
return;
}
completaDatosCompania(registroDataManager.getPersona());
completaDatosSnap(contribuyente);
registroDataManager.setRucSnap(contribuyente);
registroDataManager.setCedulaSnap(null);
}
break;
default:
break;
}
completaDatosGenerales(personaDetalle);
}
/**
* Completa los datos de la compan&iacute;a
* @param personaDetalle
*/
private void completaDatosCompania(Tcustpersondetail personaDetalle) {
if(personaDetalle.getId()!=null && personaDetalle.getId().getPersoncode()>0){
registroDataManager.setCompania(portalService.obtenerCompaniaPorId((int)personaDetalle.getId().getPersoncode()));
if(registroDataManager.getCompania()!=null && registroDataManager.getCompania().getId()!=null && registroDataManager.getCompania().getId().getPersoncode()>0 && registroDataManager.getCompania().getLogo()!=null){
Tgenefilesdetail tgenefilesdetail= portalService.obtenerImagen(registroDataManager.getCompania().getLogo());
if(tgenefilesdetail!=null && tgenefilesdetail.getImage()!=null){
byte[] byt=tgenefilesdetail.getImage();
InputStream is = new ByteArrayInputStream(byt);
//registroDataManager.getFoto().setImage(IOUtils.toByteArray(event.getFile().getInputstream()));
registroDataManager.setContenidoFoto(new DefaultStreamedContent(is));
}
}
}
}
/**
* Completa los datos si es persona natural
* @param personaDetalle
*/
private void completaDatosPersonaNatural(Tcustpersondetail personaDetalle){
if(personaDetalle.getId() != null && personaDetalle.getId().getPersoncode() != 0){
registroDataManager.setAdicionalPersona(portalService.obtenerPersonaNaturalPorId((int)personaDetalle.getId().getPersoncode()));
}
}
private void completaDatosSnap(Object datosSnap){
if(datosSnap instanceof Cedula){
Cedula cedula = (Cedula) datosSnap;
if(registroDataManager.getAdicionalPersona() == null){
registroDataManager.setAdicionalPersona(new Tcustpeople());
}
if(cedula != null){
registroDataManager.getAdicionalPersona().setFirstname(cedula.getNombre());
// registroDataManager.getAdicionalPersona().setLastname(cedula.getNombrePadre());
// registroDataManager.getAdicionalPersona().setSurename(cedula.getNombreMadre());
}
} else if(datosSnap instanceof ContribuyenteCompleto){
ContribuyenteCompleto contribuyente = (ContribuyenteCompleto) datosSnap;
if(registroDataManager.getCompania() == null){
registroDataManager.setCompania(new Tcustcompany());
}
if(contribuyente != null){
registroDataManager.getPersona().setName(contribuyente.getRazonSocial());
registroDataManager.getPersona().setLegalrepresent(contribuyente.getRepresentanteLegal().getNombre());
registroDataManager.getPersona().setLegalrepresentidentification(contribuyente.getRepresentanteLegal().getIdentificacion());
registroDataManager.getPersona().setEconimicact(contribuyente.getActividadEconomica().getActividadGeneral());
}
}
}
/**
* Completa los datos generales como direcci&oacute;n y tel&eacute;fono y dem&aacute;s requeridas para su funcionamiento
* @param personaDetalle
*/
private void completaDatosGenerales(Tcustpersondetail personaDetalle){
if(personaDetalle != null){
Tcustpersonaddress direccionPrincipal = portalService.obtenerDireccionPrincipal((int)personaDetalle.getId().getPersoncode());
if(direccionPrincipal == null){
registroDataManager.setDireccionPersona(new Tcustpersonaddress());
registroDataManager.getDireccionPersona().setAddresstypecatalog(TIPO_DIRECCION);
} else{
registroDataManager.setDireccionPersona(direccionPrincipal);
}
Tcustpersonaddress mail = portalService.obtenerCorreo((int)personaDetalle.getId().getPersoncode());;
if(mail == null){
this.registroDataManager.getCorreoPersona().setAddresstypecatalogcode(TIPO_DIRECCION);
this.registroDataManager.getCorreoPersona().setAddresstypecatalog("3");
} else{
registroDataManager.setCorreoPersona(mail);
}
Tcustpersonphone telefonoFijo = portalService.obtenerTelefonoFijo((int)personaDetalle.getId().getPersoncode());
if(telefonoFijo == null){
this.registroDataManager.setTelefonoPersona(new Tcustpersonphone());
this.registroDataManager.getTelefonoPersona().setAddressnumber(1L);
this.registroDataManager.getTelefonoPersona().setPhonetypecatalogcode(TIPO_TELEFONO);
this.registroDataManager.getTelefonoPersona().setPhonetypecatalog("1");//1 Fijo, 2 Celular
} else{
registroDataManager.setTelefonoPersona(telefonoFijo);
}
Tcustpersonphone telefonoCelular = portalService.obtenerTelefonoCelular((int)personaDetalle.getId().getPersoncode());
if(telefonoCelular == null){
this.registroDataManager.setTelefonoCelular(new Tcustpersonphone());
this.registroDataManager.getTelefonoCelular().setAddressnumber(2L);
this.registroDataManager.getTelefonoCelular().setPhonetypecatalogcode(TIPO_TELEFONO);
this.registroDataManager.getTelefonoCelular().setPhonetypecatalog("2");//1 Fijo, 2 Celular
} else{
registroDataManager.setTelefonoCelular(telefonoCelular);
}
}
}
/**
* Listener que espera un archivo cargado
* @param event
*/
public void uploadFoto(FileUploadEvent event) {
try {
if(registroDataManager.getPersona().getIdentificationcatalog().equals(PortalMessages.getInstancia().getString("catalogo.codigo.detalle.id.ruc"))){
registroDataManager.getFoto().setCapturedate(Calendar.getInstance().getTime());
registroDataManager.getFoto().setContenttype(event.getFile().getContentType());
registroDataManager.getFoto().setExtension(FilenameUtils.getExtension(event.getFile().getFileName()));
registroDataManager.getFoto().setImage(IOUtils.toByteArray(event.getFile().getInputstream()));
registroDataManager.getFoto().setImagesize(event.getFile().getSize());
registroDataManager.getFoto().setName(FilenameUtils.getBaseName(event.getFile().getFileName()));
registroDataManager.setContenidoFoto(new DefaultStreamedContent(event.getFile().getInputstream()));
}
} catch (Throwable e) {
FacesUtil.getInstancia().messageError(ExceptionUtils.getRootCauseMessage(e));
}
}
/**
* Almacena el usuario en las tablas de maia
*/
public String guardarUsuario() {
try{
switch (this.registroDataManager.getPersona().getIdentificationcatalog()) {
case "CED": case "PAS":
this.registroDataManager.getDireccionPersona().setAddresstypecatalog("2");
break;
case "RUC":
this.registroDataManager.getDireccionPersona().setAddresstypecatalog("1");
break;
default:
break;
}
if(this.registroDataManager.getAdicionalPersona().getMaritalstatuscatalog() != null){
this.registroDataManager.getAdicionalPersona().setMaritalstatuscatalogcode(ESTADO_CIVIL);
}
if(this.registroDataManager.getAdicionalPersona().getProfessioncatalog() != null){
this.registroDataManager.getAdicionalPersona().setProfessioncatalogcode(PROFESION);
}
portalService.guardarUsuarioMaia(
registroDataManager.getPersona(),
registroDataManager.getDireccionPersona(),
registroDataManager.getCorreoPersona(),
registroDataManager.getTelefonoPersona(),
registroDataManager.getTelefonoCelular(),
registroDataManager.getAdicionalPersona(),
registroDataManager.getCompania(),
registroDataManager.getFoto());
FacesUtil.getInstancia().messageInfo("El usuario fue guardado exitosamente");
FacesContext.getCurrentInstance().getExternalContext().getFlash().setKeepMessages(Boolean.TRUE);
FacesUtil.getInstancia().eliminaBeanSesion("registroDataManager");
return "/pages/notificacion/home?faces-redirect=true";
}catch (Throwable e){
FacesUtil.getInstancia().messageError("ERROR NO CONTROLADO CONTACTE AL PROVEEDOR");
ExceptionUtils.getRootCauseMessage(e);
return null;
}
}
public String cancelarOperacion() {
FacesUtil.getInstancia().eliminaBeanSesion("registroDataManager");
return "/pages/registro/home?faces-redirect=true";
}
public RegistroDataManager getRegistroDataManager() {
return registroDataManager;
}
public void setRegistroDataManager(RegistroDataManager registroDataManager) {
this.registroDataManager = registroDataManager;
}
public Boolean getIsEnableSave() {
return isEnableSave;
}
public void setIsEnableSave(Boolean isEnableSave) {
this.isEnableSave = isEnableSave;
}
}