Files
2025-06-09 13:37:06 +02:00

310 lines
11 KiB
Java

package com.tarisan.chipcard.tpvvs.webservicetrayicon;
import java.awt.BorderLayout;
import javax.swing.*;
import com.tarisan.chipcard.gui.*;
import com.tarisan.chipcard.tpvvs.webservicetrayicon.messages.*;
import java.util.*;
import com.tarisan.chipcard.tpvvs.webservicetrayicon.accesodatos.*;
import java.awt.event.*;
/**
* @author jjrider
*
* Para cambiar la plantilla para este comentario de tipo generado vaya a
* Ventana>Preferencias>Java>Generación de código>Código y comentarios
*/
public class AutorizacionesFrame extends JFrame implements ActionListener,ControladorRespuestas{
private AutorizacionesPanel jpAutPanel=new AutorizacionesPanel();
private JButton btnAceptar=null;
private JButton btnCancelar=null;
private AutorizacionesBean autBean=new AutorizacionesBean();
private TerminalSanitarioBean terBean=new TerminalSanitarioBean();
private UsuarioTVSBean userBean=new UsuarioTVSBean();
private VentanaProgreso progressWindow=null;
public String devuelveRespuesta(String a)
{
return a;
}
public AutorizacionesFrame(){
setIconImage(WebServiceTrayIcon.image_authorizations_16);
progressWindow=new VentanaProgreso(this,"Solicitando autorización");
progressWindow.setVisible(false);
setTitle("Autorizaciones");
Vector vTer=terBean.getTerminalesSanitarios();
if(vTer.size()==0){
NuevoTerminalFrame frmT=new NuevoTerminalFrame();
WebServiceTrayIcon.showMessage(frmT,getTitle(),"Es necesario configurar antes Terminales Sanitarios",JOptionPane.WARNING_MESSAGE,10);
dispose();
}else{
Vector vUsers=userBean.getUsuariosTVS();
if(vUsers.size()==0){
NuevoUsuarioTVSFrame frmU=new NuevoUsuarioTVSFrame();
frmU.updateData();
WebServiceTrayIcon.showMessage(frmU,getTitle(),"Es necesario configurar antes algún Usuario del TVS",JOptionPane.WARNING_MESSAGE,10);
dispose();
}else{
init();
}
}
}
private void init(){
getContentPane().setLayout(new BorderLayout());
JPanel pn=new JPanel();
pn.setLayout(new java.awt.GridBagLayout());
java.awt.GridBagConstraints gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
pn.add(jpAutPanel, gridBagConstraints);
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy++;
JPanel jpButtons=new JPanel();
jpButtons.setLayout(new java.awt.FlowLayout());
jpButtons.add(getButtonAceptar());
jpButtons.add(getButtonCancelar());
pn.add(jpButtons,gridBagConstraints);
getContentPane().add(pn, java.awt.BorderLayout.CENTER);
jpAutPanel.updateData();
pack();
show();
UtilGUI.centerOnScreen(this);
}
private JButton getButtonAceptar(){
if(btnAceptar==null){
btnAceptar=new JButton();
btnAceptar.setText("Aceptar");
btnAceptar.setIcon(new ImageIcon(WebServiceTrayIcon.loadImage("aceptar32.gif")));
btnAceptar.addActionListener(this);
}
return btnAceptar;
}
private JButton getButtonCancelar(){
if(btnCancelar==null){
btnCancelar=new JButton();
btnCancelar.setText("Cancelar");
btnCancelar.setIcon(new ImageIcon(WebServiceTrayIcon.loadImage("cancelar32.gif")));
btnCancelar.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt){
setVisible(false);
dispose();
}
}
);
}
return btnCancelar;
}
/**
* @return
*/
public AutorizacionesPanel getAutorizacionesPanel() {
return jpAutPanel;
}
public void actionPerformed(ActionEvent evt){
UsuarioTVS user=(UsuarioTVS)getAutorizacionesPanel().getCmbImageComboUsuarios().getSelectedItem();
boolean siTerminalDeLaboratorio=user.getTerminal().isTVA();
if(user==null){
showErrorMessage("Se debe seleccionar un usuario");
return;
}
CompaniaSanitaria comp=(CompaniaSanitaria)getAutorizacionesPanel().getCmbImageComboCompanias().getSelectedItem();
if(comp==null){
showErrorMessage("Se debe seleccionar una compañia");
return;
}
EspecialidadSanitaria espe=null;
if(!siTerminalDeLaboratorio){
espe=(EspecialidadSanitaria)getAutorizacionesPanel().getCmbImageComboEspecialidades().getSelectedItem();
if(espe==null){
showErrorMessage("Se debe seleccionar una Especialidad");
return;
}
}
ProfesionalSanitario prof=(ProfesionalSanitario)getAutorizacionesPanel().getCmbImageComboProfesionales().getSelectedItem();
if(prof==null){
showErrorMessage("Se debe seleccionar un profesional");
return;
}
ListaActos listaActos=(ListaActos)getAutorizacionesPanel().getCmbImageComboListaActos().getSelectedItem();
if(listaActos==null){
showErrorMessage("Se debe seleccionar una Lista de Actos");
return;
}
String sTipoOperacion=getAutorizacionesPanel().getCmbImageComboTipoOperacion().getSelectedItem().toString();
ActoMedico arrActos[]=null;
if(!siTerminalDeLaboratorio ){
if(getAutorizacionesPanel().getActosMedicosSolicitadosModel().getSize()==0
&& !sTipoOperacion.equals(WSTRConstantes.TIPO_OP_VOL_MEDICO)){
showErrorMessage("Se deben seleccionar Actos Médicos");
return;
}
if(getAutorizacionesPanel().getActosMedicosSolicitadosModel().getSize()>0){
//Se añaden si se tienen
arrActos=new ActoMedico[getAutorizacionesPanel().getActosMedicosSolicitadosModel().getSize()];
for(int i=0;i<getAutorizacionesPanel().getActosMedicosSolicitadosModel().getSize();i++){
arrActos[i]=(ActoMedico)getAutorizacionesPanel().getActosMedicosSolicitadosModel().elementAt(i);
}
}
}
DialogoTarjetaSanitaria objDialog=new DialogoTarjetaSanitaria(this);
Paciente paciente=objDialog.getPaciente();
objDialog.dispose();
setEnabled(false);
//Construyo el mensaje a enviar
AutReq autRequest=null;
try{
if(sTipoOperacion.equals(WSTRConstantes.TIPO_OP_SOLO_TARJETA)){
if(siTerminalDeLaboratorio){
autRequest=new SoloTarjetaLaboratorio(user,paciente,comp,prof,listaActos);
}else{
autRequest=new SoloTarjeta(user,paciente,comp,espe,prof,listaActos,arrActos);
}
}else if(sTipoOperacion.equals(WSTRConstantes.TIPO_OP_DOC_UNICO)){
String sDocUnico=UtilGUI.getInputValue(this,"Por favor, indique el número de Documento Único:");
if(siTerminalDeLaboratorio){
autRequest=new DocumentoUnicoLaboratorio(user,paciente,comp,prof,listaActos,sDocUnico);
}else{
autRequest=new DocumentoUnico(user,paciente,comp,espe,prof,listaActos,arrActos,sDocUnico);
}
}else if(sTipoOperacion.equals(WSTRConstantes.TIPO_OP_VOL_CLINICO)){
String sVolante=UtilGUI.getInputValue(this,"Por favor, indique el número de Volante Clínico:");
autRequest=new VolanteClinico(user,paciente,comp,espe,prof,listaActos,arrActos,sVolante);
}else if(sTipoOperacion.equals(WSTRConstantes.TIPO_OP_VOL_MEDICO)){
String sVolante=UtilGUI.getInputValue(this,"Por favor, indique el número de Volante Médico:");
autRequest=new VolanteMedico(user,paciente,comp,espe,prof,listaActos,sVolante);
}
String sDataCliente=getAutorizacionesPanel().getTxtDatosCliente().getText();
if(sDataCliente.length()>0){
autRequest.setDatosCliente(sDataCliente);
}
if(getAutorizacionesPanel().getChkEsRepeticion().isSelected()){
autRequest.setRepeticion(true);
}
}catch(Exception err){
err.printStackTrace();
WebServiceTrayIcon.showErrorMessage(getTitle(),"No se pudo componer la solicitud a enviar:"+err.getMessage());
setEnabled(true);
}
if(autRequest!=null){
//Ya tengo la peticion a enviar...
String sURL=getAutorizacionesPanel().getCmbURLService().getSelectedItem().toString();
java.net.URL endPointURL=null;
try{
endPointURL=new java.net.URL(sURL);
}catch(Exception err){
err.printStackTrace();
WebServiceTrayIcon.showErrorMessage(getTitle(),"No se pudo enviar la solicitud a '"+sURL+"' debido al error:"+err.getMessage());
}
if(endPointURL!=null){
progressWindow.setProgressState(0);
progressWindow.setModal(false);
UtilGUI.centerOnWindow(progressWindow,this);
ClienteServicioWeb objClienteServicioWeb=new ClienteServicioWeb(autRequest,this,endPointURL);
ProgressBarThread PBTh=new ProgressBarThread(progressWindow,objClienteServicioWeb.getSegundosTimeout());
PBTh.start();
}else {
setEnabled(true);
}
}else{
setEnabled(true);
}
}
/*****
* Recibe la respuesta del Servicio Web
*/
public String recibeRespuesta(String sResponse){
if(progressWindow!=null)
progressWindow.setVisible(false);
setEnabled(true);
if(sResponse!=null){
Msg objResponse=null;
try{
objResponse=Msg.createMsgFromString(sResponse);
if(objResponse.getTypeOfMessage()==Msg.TYPE_OF_MESSAGE_ERROR){
com.tarisan.chipcard.tpvvs.webservicetrayicon.messages.Error errorMes=(com.tarisan.chipcard.tpvvs.webservicetrayicon.messages.Error)objResponse;
//Es un Error en la peticion
showErrorMessage("Se ha producido el error con código "+errorMes.getErrorCode()+".\nDescripción:"+errorMes.getErrorDescription());
}else if(objResponse.getTypeOfMessage()==Msg.TYPE_OF_MESSAGE_CCRES){
com.tarisan.chipcard.tpvvs.webservicetrayicon.messages.AutRes autResMes=(com.tarisan.chipcard.tpvvs.webservicetrayicon.messages.AutRes)objResponse;
Vector vAutorizaciones=WebServiceTrayIcon.AutResMes2Autorizacion(autResMes);
boolean blnAlgunaAutorizada=false;
for(int i=0;i<vAutorizaciones.size();i++){
Autorizacion aut=(Autorizacion)vAutorizaciones.elementAt(i);
if(!blnAlgunaAutorizada)
blnAlgunaAutorizada=aut.estaAutorizada();
autBean.insertInLocal(aut);
}
WebServiceTrayIcon.showTransactionInfo(autResMes,this);
if(blnAlgunaAutorizada){
//Elimino los actos de la lista de actos escogidos
getAutorizacionesPanel().getActosMedicosSolicitadosModel().removeAllElements();
}
}
}catch(Exception err){
err.printStackTrace();
showErrorMessage("Se ha producido un error al procesar la respuesta.\nDescripción:"+err.getMessage());
}
}else{
//Se debería repetir la respuesta?? Se supone que no se ha recibido
}
return "";
}
public void setEnabled(boolean blnEnabled){
super.setEnabled(blnEnabled);
getAutorizacionesPanel().setEnabled(blnEnabled);
getButtonAceptar().setEnabled(blnEnabled);
getButtonCancelar().setEnabled(blnEnabled);
if(!blnEnabled)
setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.WAIT_CURSOR));
else
setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.DEFAULT_CURSOR));
validate();
repaint();
}
private void showErrorMessage(String sMessage){
WebServiceTrayIcon.showMessage(this,getTitle(),sMessage,JOptionPane.ERROR_MESSAGE);
}
private void showInformationMessage(String sMessage){
WebServiceTrayIcon.showMessage(this,getTitle(),sMessage,JOptionPane.INFORMATION_MESSAGE);
}
private void showWarningMessage(String sMessage){
WebServiceTrayIcon.showMessage(this,getTitle(),sMessage,JOptionPane.WARNING_MESSAGE);
}
}