package com.fp.frontend.controller.pcustomer; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Field; import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; import javax.annotation.PostConstruct; import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedProperty; import javax.faces.bean.ViewScoped; import javax.faces.context.ExternalContext; import javax.faces.context.FacesContext; import javax.imageio.ImageIO; import javax.servlet.ServletContext; import org.primefaces.event.FileUploadEvent; import org.primefaces.event.FlowEvent; import org.primefaces.event.SelectEvent; import org.primefaces.model.DefaultStreamedContent; import org.primefaces.model.StreamedContent; import org.primefaces.model.UploadedFile; import com.fp.dto.Request; import com.fp.dto.Response; import com.fp.dto.helper.FileHelper; import com.fp.dto.query.DtoQuery; import com.fp.dto.query.SubQuery; import com.fp.dto.save.DtoSave; import com.fp.frontend.controller.AbstractController; import com.fp.frontend.controller.pcustomer.lov.JuridicalPersonLovController; import com.fp.frontend.controller.pcustomer.lov.PersonLovController; import com.fp.frontend.controller.pgeneral.date.TgeneAccountingDateBranchController; import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; import com.fp.frontend.controller.pgeneral.gene.LanguageController; import com.fp.frontend.controller.pgeneral.lov.ActivityLovController; import com.fp.frontend.helper.MessageHelper; import com.fp.frontend.utility.MsgGeneral; import com.fp.persistence.pcustomer.company.TcustCompany; import com.fp.persistence.pcustomer.gene.TcustPersonAddress; import com.fp.persistence.pcustomer.gene.TcustPersonDetail; import com.fp.persistence.pcustomer.gene.TcustPersonPhone; import com.fp.persistence.pcustomer.gene.TgeneActivity; import com.fp.persistence.pcustomer.people.TcustPeople; import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; import com.fp.persistence.pgeneral.gene.TgeneLanguage; import com.fp.persistence.pgeneral.image.TgeneFilesDetail; import com.fp.persistence.pgeneral.safe.TsafeUserDetail; /** * Clase controladora de JuridicalPerson. * * @author MAV. * @version 1.0 */ @ManagedBean @ViewScoped public class JuridicalPersonController extends AbstractController { private static final long serialVersionUID = 1L; @ManagedProperty(value = "#{companyController}") private CompanyController companyController; @ManagedProperty(value = "#{peopleFastController}") private PeopleFastController peopleFastController; @ManagedProperty(value = "#{personAddressController}") private PersonAddressController addressController; @ManagedProperty(value = "#{personPhoneController}") private PersonPhoneController phonesController; @ManagedProperty(value = "#{fileDetailController}") private FileDetailController fileDetail; /** * Atributo para la lista de objetos TgeneCatalogDetail de identificacion */ private List lidentification; /** * Atributo para la lista de objetos TgeneCatalogDetail de tipo de cliente */ private List ltypeclient; /** * Atributo para la lista de objetos TgeneCatalogDetail de sector * económico */ private List leconomicsector; /** * Atributo para la lista de objetos TgeneCatalogDetail de actividad no * económica */ private List lnotactivity; /** * Atributo para el listado de géneros */ private List lgender; /** * Atributo para el listado de idiomas */ private List llenguage; /** * Atributo para activar el keyFilter */ private boolean activeRegEx; /** * Atributo para la longitud de la identificación */ private String lengthId; /** * atributo para el código de persona */ private String personcode; private Boolean existingperson; /** * Atributo para deshabilitar el boton save */ private Boolean isDisableSave = Boolean.FALSE; /** * Atributo para el control de checkBox exencto de impuesto a la renta */ private boolean exentoImpuesto; /** * Atributos relacionados con el logo */ UploadedFile selectedPicture; Boolean fotoCargada=false; StreamedContent foto; String rutaFoto; private String extensionFoto = "jpg"; private String imageUrl; TsafeUserDetail usuario; List fileH = new ArrayList(); public JuridicalPersonController() throws Exception { super(TcustPersonDetail.class); } @PostConstruct private void postconstruct() throws Exception { this.lengthId = "13"; this.init(); //super.buildTransactionPages("juridicalPersonController"); } /** * Incializa el controlador, cuando se esta utilizando una pagina que utliza * el controlador. */ private void init() { try { this.create(); this.lrecord = new ArrayList<>(); this.record=new TcustPersonDetail(); this.record.setIsnew(true); this.beanalias = "JURIDICALPERSONCONTROLLER"; this.companyController.create(); this.companyController.setRecord(new TcustCompany()); this.companyController.getRecord().setIsnew(true); this.addressController.create(); this.addressController.setRecord(new TcustPersonAddress()); this.addressController.getRecord().setIsnew(true); this.phonesController.create(); this.phonesController.setRecord(new TcustPersonPhone()); this.phonesController.getRecord().setIsnew(true); //Llenando las listas this.lidentification = CatalogDetailController.find("IDENTIFICATION","2"); this.leconomicsector = CatalogDetailController.find("ECONOMICSECTOR"); this.ltypeclient = CatalogDetailController.findClientType("CLIENTTYPE", "2"); this.lnotactivity = CatalogDetailController.find("NOTACTIVITY"); this.lgender = CatalogDetailController.getListGender(); this.llenguage = LanguageController.find(); this.getRecord().setLanguagecode("ES"); //Obteniendo los datos del usuario logueado usuario=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); } catch (Exception e) { MessageHelper.setMessageError(e); } } @Override protected void querydatabase() { try { if(super.getMfilters().get("pk.personcode")==null || super.getMfilters().get("pk.personcode").equals("null")){ return; } super.addFilterDateto(); //Obteniendo la compannia TcustCompany compannia=CompanyController.findByPersonCode(super.getMfilters().get("pk.personcode")); if(compannia!=null){ this.companyController.setRecord(compannia); } //Obteniendo las direcciones List direcciones=PersonAddressController.findAllByPersonCode(this.getMfilters().get("pk.personcode")); this.addressController.setLrecord(direcciones); //Obteniendo los telefonos List telefonos=PersonPhoneController.findAllByPersonCode(this.getMfilters().get("pk.personcode")); this.phonesController.setLrecord(telefonos); Request request = this.callerhelper.getRequest(); DtoQuery dto = super.getDtoQuery(false); // subqueries SubQuery subquery = new SubQuery("TgeneActivity", "description", "activitydesc", "i.pk = t.activitycode"); dto.addSubQuery(subquery); SubQuery subquery1 = new SubQuery("TgeneActivity", "segmenttypecatalog", "segmenttypecatalog", "i.pk = t.activitycode"); dto.addSubQuery(subquery1); SubQuery subquery2 = new SubQuery( "TgeneCatalogDetail", "description", "segmentdesc", "i.pk.catalogcode = 'SEGMENTTYPE' and i.pk.catalog = (select a.segmenttypecatalog from TgeneActivity a where a.pk = t.activitycode)"); dto.addSubQuery(subquery2); HashMap mtables = new HashMap(); mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. request.setQueryTables(mtables); Response resp = this.callerhelper.executeQuery(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { this.record = new TcustPersonDetail(); this.companyController.setRecord(new TcustCompany()); MessageHelper.setMessageError(resp); } else { if(resp.get(this.beanalias)!=null){ this.record = (TcustPersonDetail) resp.get(this.beanalias); this.record.setIsnew(false); } if(this.companyController.getRecord()==null) { this.companyController.setRecord(new TcustCompany()); this.companyController.getRecord().setIsnew(true); }else{ //Cargando la imagen if(this.companyController.getRecord()!=null && this.companyController.getRecord().getLogo()!=null){ TgeneFilesDetail fileDetalle = fileDetail.find((this.companyController==null || this.companyController.getRecord().getLogo()==null)?null:String.valueOf(this.companyController.getRecord().getLogo())); extensionFoto = fileDetalle!=null?fileDetalle.getExtension():extensionFoto; if(fileDetalle!=null && fileDetalle.getImage()!=null){ InputStream input=new ByteArrayInputStream(fileDetalle.getImage()); this.foto=new DefaultStreamedContent(input); this.fotoCargada=true; //Almacenando la imagen temporalmente ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext(); ServletContext servletContext = (ServletContext) externalContext.getContext(); String tempUrl = servletContext.getRealPath("/");; String imageName=UUID.randomUUID().toString(); String imageUrl=tempUrl + "resources/images/" + imageName +"."+extensionFoto; imageUrl = imageUrl.replace("\\", "/"); File outputfile = new File(imageUrl); BufferedImage image=ImageIO.read(input); Boolean saved=ImageIO.write(image, extensionFoto, outputfile); this.rutaFoto="/resources/images/"+imageName+"."+extensionFoto; } }else{ this.fotoCargada=false; } } } this.personcode = String.valueOf(this.getMfilters().get("pk.personcode")); // this.addressController.addPersoncodeFilter(this.personcode); // this.addressController.addFilterDateto(); // this.addressController.query(); /* this.phonesController.addPersoncodeFilter(this.personcode); this.phonesController.addFilterDateto(); this.phonesController.query();*/ } catch (Throwable e) { MessageHelper.setMessageError(e); } } @Override public void save() { try { //Validando las direcciones y telefonos if (this.addressController.getLrecord().size() == 0) { MessageHelper.setMessageError("msg_requireAddress"); return; }else{ for (TcustPersonAddress direccion : this.addressController.getLrecord()) { if(direccion.isnew){ direccion.setIngressusercode(this.usuario.getPk().getUsercode()); }else{ direccion.setModifyusercode(this.usuario.getPk().getUsercode()); } } } if (this.phonesController.getLrecord().size() == 0) { MessageHelper.setMessageError("msg_requirePhones"); return; }else{ for (TcustPersonPhone telefono : this.phonesController.getLrecord()) { if(telefono.isnew){ telefono.setIngressusercode(this.usuario.getPk().getUsercode()); }else{ telefono.setModifyusercode(this.usuario.getPk().getUsercode()); } } } //Asignando los campos this.record.setDatefrom(new Timestamp(Calendar.getInstance().getTimeInMillis())); this.record.setIdentificationcatalogcode("IDENTIFICATION"); if(this.record.isnew){ this.record.setIngressuser(this.usuario.getPk().getUsercode()); }else{ this.record.setModifyuser(this.usuario.getPk().getUsercode()); } this.record.setPersontypecatalog("2"); this.record.setPersontypecatalogcode("PERSONTYPE"); this.record.setRegisterdate(new java.sql.Date(Calendar.getInstance().getTimeInMillis())); this.record.setClienttypecatalogcode("CLIENTTYPE"); this.record.setEconomicsectorcatalogcode("ECONOMICSECTOR"); if(this.selectedPicture!=null){ this.companyController.getRecord().setPicture(this.selectedPicture.getContents()); } DtoSave dtosave = super.getDtoSave(true); dtosave.setReturnpk(true); HashMap msave = new HashMap(); Request request = this.callerhelper.getRequest(); dtosave.setPosition(3); msave.put(this.beanalias, dtosave); // DIRECCIONES DtoSave dtosaveAddress = addressController.getDtoSave(); dtosaveAddress.setPosition(1); msave.put(addressController.getBeanalias(), dtosaveAddress); // TELEFONOS DtoSave dtosavePhone = phonesController.getDtoSave(); dtosavePhone.setPosition(2); msave.put(phonesController.getBeanalias(), dtosavePhone); request.setSaveTables(msave); request.getModifiedData().put("PERSON", this.record); request.getModifiedData().put("COMPANY", this.companyController.getRecord()); request.getModifiedData().put("ADDRESSES", this.addressController.getLrecord()); guardarInformacionImagenes(); request.getModifiedData().put("file", fileH); request.getModifiedData().put("logocode",companyController.getRecord()!=null?companyController.getRecord().getLogo()!= null?companyController.getRecord().getLogo():null:null); request.getModifiedData().put("pk_personcode", companyController.getRecord()!=null?companyController.getRecord().getPk()!=null?companyController.getRecord().getPk().getPersoncode():null:null); request.getModifiedData().put("PHONES", this.phonesController.getLrecord()); Response resp = this.callerhelper.executeSave(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { this.postCommit(resp); this.companyController.postCommit(resp); this.addressController.postCommit(resp); this.phonesController.postCommit(resp); this.personcode = String.valueOf(resp.get("personcode")); super.addFilter("pk.personcode", this.personcode); isDisableSave = Boolean.TRUE; MessageHelper.setMessageInfo(resp); } else { MessageHelper.setMessageError(resp); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } /** * Metodo para guardar informacion de las imagenes en la base de datos * @throws IOException */ private void guardarInformacionImagenes() throws IOException{ FileHelper archivoPicture = new FileHelper(); archivoPicture.setName(""); fileH = new ArrayList(); if(selectedPicture!=null){ long size = selectedPicture.getSize(); InputStream stream = selectedPicture.getInputstream(); byte[] buffer = new byte[(int) size]; stream.read(buffer, 0, (int) size); stream.close(); archivoPicture.setContentType(selectedPicture.getContentType()); archivoPicture.setExtension(extensionFoto); archivoPicture.setImage(buffer); archivoPicture.setName(selectedPicture.getFileName()); archivoPicture.setSize(selectedPicture.getFileName().length()); } fileH.add(archivoPicture); } /** * Método que abre el lov de activudad económica */ public void openActivityLov() { Map> params = new HashMap<>(); ActivityLovController.openLov(params); } @Override public void forcedQuery() throws Exception { Field f[] = this.getClass().getDeclaredFields(); //super.forcedQuery(f, this); super.forcedQuery(); } /** * Método para cargar datos en el editar */ public void loadEdit(){ if(this.record.getTaxexempt()!=null) { this.exentoImpuesto = this.record.getTaxexempt().equals("Y")?true:false; } } /** * Método para manejar el evento change en el CheckBox */ public void onChangeTaxexempt(){ if(this.exentoImpuesto){ this.record.setTaxexempt("Y"); }else{ this.record.setTaxexempt("N"); } } /** * Verifica el ingreso de una actividad económica * * @param person * Objeto TcustPersonDetail * @param people * Objeto TcustPeople * @return result V/F */ private boolean activity(TcustPersonDetail person, TcustPeople people) { boolean result = false; if (((person.getActivitycode() == null) || person.getActivitycode() .equals("")) && ((people.getNotactivitycatalog() == null) || people .getNotactivitycatalog().equals(""))) { result = true; } return result; } /** * Ejecuta el evento change del combo actividad no económica */ public void onChangeNotactivity() { this.getRecord().setActivitycode(null); this.getRecord().put("activitydesc", null); this.getRecord().put("segmenttypecatalog", null); this.getRecord().put("segmentdesc", null); } /** * Método para abrir el lov de personas */ public void openPersonLov() { Map> params = new HashMap<>(); List juridical = new ArrayList(); juridical.add("RUC"); params.put("isJuridical", juridical); JuridicalPersonLovController.openLov(params); } /** * Método para abrir el lov de personas */ public void openPersonLovComplete() { Map> params = new HashMap<>(); PersonLovController.openLov(params); } /** * Método para abrir el lov de Instituciones Finacieras */ public void openInstitucionTypeLov() { Map> params = new HashMap<>(); // InstitutionTypeLovController.openLov(params); } public void onReturnInstitucionTypeLov(SelectEvent event) throws Exception { TgeneCatalogDetail t = (TgeneCatalogDetail) event.getObject(); this.companyController.getRecord().getModifiedData().put("institutiontypedesc", t.getDescription()); this.companyController.getRecord().setInstitutiontypecatalog(t.getPk().getCatalog()); this.companyController.getRecord().setInstitutiontypecatalogcode(t.getPk().getCatalogcode()); } /** * Retorna los valores del lov * * @param event * Evento ajax * @throws Exception */ public void onReturnPersonLov(SelectEvent event) throws Exception { TcustPersonDetail t = (TcustPersonDetail) event.getObject(); super.addFilter("pk.personcode", t.getPk().getPersoncode().toString()); super.addField("personname", t.getName()); super.query(); } /** * Controla la respuesta del lov de activudad económica * * @param event * @throws Exception */ public void onReturnActivityLov(SelectEvent event) throws Exception { TgeneActivity t = (TgeneActivity) event.getObject(); super.addField("activitydesc", t.getDescription()); this.getRecord().setActivitycode(t.getPk()); this.getRecord().modifiedData.put("activitydesc", t.getDescription()); this.getRecord().modifiedData.put("segmenttypecatalog", t.getSegmenttypecatalog()); this.getRecord().modifiedData.put("segmentdesc", t.get("segmentdesc")); } public void onChangeId() { if (this.getRecord().getIdentificationcatalog() .compareTo("CED") == 0) { this.lengthId = "10"; this.activeRegEx = false; } else if (this.getRecord().getIdentificationcatalog() .compareTo("RUC") == 0) { this.lengthId = "13"; this.activeRegEx = false; } else if (this.getRecord().getIdentificationcatalog() .compareTo("PAS") == 0) { this.lengthId = "13"; this.activeRegEx = true; } } public String onFlowProcess(FlowEvent event) { System.out.println("WIZARD NEW "+event.getNewStep()); System.out.println("WIZARD OLD "+event.getNewStep()); if(this.getRecord().getActivitycode()==null){ MessageHelper.setMessageError("msg_requireActivity"); return event.getOldStep(); } return event.getNewStep(); } public String workingdate() { String dateString = null; try { Date date = TgeneAccountingDateBranchController.find( this.getLoginController().getRequest().getCompany()) .getWorkingdate(); dateString = (new SimpleDateFormat( MsgGeneral.getProperty("dateformat")).format(date)); } catch (Throwable e) { MessageHelper.setMessageError(e); } return dateString; } /** * Metodo que carga la foto */ @SuppressWarnings("unused") public void uploadPicture(FileUploadEvent event){ try { selectedPicture = event.getFile(); InputStream is=new ByteArrayInputStream(selectedPicture.getContents()); //this.foto=new DefaultStreamedContent(is, selectedPicture.getContentType(), selectedPicture.getFileName()); this.foto=new DefaultStreamedContent(event.getFile().getInputstream()); this.fotoCargada=true; //Obteniendo la extension de la imagen String extension=""; int pos=-1; for (int i = selectedPicture.getFileName().length()-1; i>=0; i--) { if(selectedPicture.getFileName().toCharArray()[i]=='.'){ pos=i; break; } } if(pos!=-1){ extension=selectedPicture.getFileName().substring(pos+1, selectedPicture.getFileName().length()); } //Almacenando la imagen temporalmente /* ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext(); ServletContext servletContext = (ServletContext) externalContext.getContext(); String tempUrl = "/resources/images/temp/"; String imageName=UUID.randomUUID().toString(); String imageUrl=servletContext.getRealPath(tempUrl)+File.separator+imageName+"."+extension; File outputfile = new File(imageUrl); InputStream input=new ByteArrayInputStream(selectedPicture.getContents()); BufferedImage image=ImageIO.read(input); Boolean saved=ImageIO.write(image, extension, outputfile); this.rutaFoto="/resources/images/temp/"+imageName+"."+extension;*/ //Almacenando la imagen temporalmente ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext(); ServletContext servletContext = (ServletContext) externalContext.getContext(); String tempUrl = servletContext.getRealPath("/");; String imageName=UUID.randomUUID().toString(); imageUrl=tempUrl + "resources/images/" + imageName +"."+extensionFoto; imageUrl = imageUrl.replace("\\", "/"); File outputfile = new File(imageUrl); InputStream input=new ByteArrayInputStream(selectedPicture.getContents()); BufferedImage image=ImageIO.read(input); Boolean saved=ImageIO.write(image, extensionFoto, outputfile); this.rutaFoto="/resources/images/"+imageName+"."+extensionFoto; } catch (Exception e) { MessageHelper.setMessageError(e); } } /** * Entrega lista de objetos TgeneCatalogDetail tipo de identificación * * @return lidentification Lista de objetos TgeneCatalogDetail */ public List getLidentification() { return this.lidentification; } /** * Fija lista de objetos TgeneCatalogDetail tipo de identificación * * @param lidentification * Lista de objetos TgeneCatalogDetail */ public void setLidentification(List lidentification) { this.lidentification = lidentification; } /** * Entrega Verdadero/Falso * * @return activeNotEconomic V/F */ public boolean isActiveRegEx() { return this.activeRegEx; } /** * Fija Verdadero/Falso * * @param activeNotEconomic * V/F */ public void setActiveRegEx(boolean activeRegEx) { this.activeRegEx = activeRegEx; } /** * Entrega el número de digitos para el tipo de identificaci&oacuye;n * * @return lengthId Número de digitos */ public String getLengthId() { return this.lengthId; } /** * Fija el número de digitos para el tipo de identificaci&oacuye;n * * @param lengthId * Número de digitos */ public void setLengthId(String lengthId) { this.lengthId = lengthId; } /** * Entrega lista de objetos TgeneCatalogDetail de sector económico * * @return leconomicsector Lista de objetos TgeneCatalogDetail */ public List getLeconomicsector() { return this.leconomicsector; } /** * Fija lista de objetos TgeneCatalogDetail de sector económico * * @param leconomicsector * Lista de objetos TgeneCatalogDetail */ public void setLeconomicsector(List leconomicsector) { this.leconomicsector = leconomicsector; } /** * Entrega lista de objetos TgeneCatalogDetail de tipo cliente * * @return ltypeclient Lista de objetos TgeneCatalogDetail */ public List getLtypeclient() { return this.ltypeclient; } /** * Fija lista de objetos TgeneCatalogDetail de tipo cliente * * @param ltypeclient * Lista de objetos TgeneCatalogDetail */ public void setLtypeclient(List ltypeclient) { this.ltypeclient = ltypeclient; } /** * Entrega lista de objetos TgeneCatalogDetail * * @return lnotactivity Lista de objetos TgeneCatalogDetail */ public List getLnotactivity() { return this.lnotactivity; } /** * Fija lista de objetos TgeneCatalogDetail * * @param lnotactivity * Lista de objetos TgeneCatalogDetail */ public void setLnotactivity(List lnotactivity) { this.lnotactivity = lnotactivity; } /** * Entrega la lista de géneros * * @return lgender Lista de géneros */ public List getLgender() { return this.lgender; } /** * Fija la lista de géneros * * @param lgender * Lista de géneros */ public void setLgender(List lgender) { this.lgender = lgender; } public List getLlenguage() { return llenguage; } public void setLlenguage(List llenguage) { this.llenguage = llenguage; } public Boolean getExistingperson() { return existingperson; } public void setExistingperson(Boolean existingperson) { this.existingperson = existingperson; } /** * @return the personcode */ public String getPersoncode() { return personcode; } /** * @param personcode the personcode to set */ public void setPersoncode(String personcode) { this.personcode = personcode; } /** * @return the exentoImpuesto */ public boolean isExentoImpuesto() { return exentoImpuesto; } /** * @param exentoImpuesto the exentoImpuesto to set */ public void setExentoImpuesto(boolean exentoImpuesto) { this.exentoImpuesto = exentoImpuesto; } public PeopleFastController getPeopleFastController() { return peopleFastController; } public void setPeopleFastController(PeopleFastController peopleFastController) { this.peopleFastController = peopleFastController; } public UploadedFile getSelectedPicture() { return selectedPicture; } public void setSelectedPicture(UploadedFile selectedPicture) { this.selectedPicture = selectedPicture; } public Boolean getFotoCargada() { return fotoCargada; } public void setFotoCargada(Boolean fotoCargada) { this.fotoCargada = fotoCargada; } public StreamedContent getFoto() { return foto; } public void setFoto(StreamedContent foto) { this.foto = foto; } public String getRutaFoto() { return rutaFoto; } public void setRutaFoto(String rutaFoto) { this.rutaFoto = rutaFoto; } public CompanyController getCompanyController() { return companyController; } public void setCompanyController(CompanyController companyController) { this.companyController = companyController; } public PersonAddressController getAddressController() { return addressController; } public void setAddressController(PersonAddressController addressController) { this.addressController = addressController; } public PersonPhoneController getPhonesController() { return phonesController; } public void setPhonesController(PersonPhoneController phonesController) { this.phonesController = phonesController; } public FileDetailController getFileDetail() { return fileDetail; } public void setFileDetail(FileDetailController fileDetail) { this.fileDetail = fileDetail; } public TsafeUserDetail getUsuario() { return usuario; } public void setUsuario(TsafeUserDetail usuario) { this.usuario = usuario; } public String getImageUrl() { return imageUrl; } public void setImageUrl(String imageUrl) { this.imageUrl = imageUrl; } public Boolean getIsDisableSave() { return isDisableSave; } public void setIsDisableSave(Boolean isDisableSave) { this.isDisableSave = isDisableSave; } }