Package fing.satode.ui.necesidades.client

Source Code of fing.satode.ui.necesidades.client.EntryPointGestionNecesidad

package fing.satode.ui.necesidades.client;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;

import org.mortbay.jetty.servlet.HashSessionIdManager;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.LinkElement;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.CaptionPanel;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Hyperlink;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.datepicker.client.DatePicker;

import fing.satode.constantes.EstadoNecesidad;
import fing.satode.constantes.EstadoSolicitudEnvio;
import fing.satode.constantes.ItemConstante;
import fing.satode.data.CuentaCorrienteSuministroDTO;
import fing.satode.data.DesastreDTO;
import fing.satode.data.GestionNecesidadDTO;
import fing.satode.data.NecesidadDTO;
import fing.satode.data.PlanSuministroDTO;
import fing.satode.data.PuntoReferenciaDTO;
import fing.satode.data.SolicitudEnvioDTO;
import fing.satode.data.SolicitudEnvioSuministroDTO;
import fing.satode.data.SolicitudSuministroDTO;
import fing.satode.data.TipoSuministroDTO;
import fing.satode.data.UsuarioDTO;
import fing.satode.ui.deposito.client.IDeposito;
import fing.satode.ui.deposito.client.IDepositoAsync;
import fing.satode.ui.desastres.client.IDesastre;
import fing.satode.ui.desastres.client.IDesastreAsync;
import fing.satode.ui.general.data.DepositoCantidad;
import fing.satode.ui.general.data.KeyNumeric;
import fing.satode.ui.necesidades.client.EntryPointNecesidad.FormDialogBox;
import fing.satode.ui.necesidades.client.EntryPointNecesidad.FormDialogSuministroBox;
import fing.satode.ui.puntoReferencias.client.IPuntoReferencia;
import fing.satode.ui.puntoReferencias.client.IPuntoReferenciaAsync;
import fing.satode.ui.usuarios.client.IUsuario;
import fing.satode.ui.usuarios.client.IUsuarioAsync;

public class EntryPointGestionNecesidad implements EntryPoint {


  final Button buscarB = new Button("Buscar");
  final VerticalPanel vertical = new VerticalPanel();
  private ArrayList<NecesidadDTO> necesidadesGlobal;
  private ArrayList<DesastreDTO> desastreGlobal;
  private ArrayList<TipoSuministroDTO> tipoSuministrosGlobal;
  private ArrayList<PuntoReferenciaDTO> puntosReferenciaGlobal;
  final Label modificarLabel= new Label("Modificar");
  final Label eliminarLabel= new Label("Eliminar");
  final Label ver= new Label("Ver");
  public static Grid gridFormulario = new Grid(6,2);
  public static  Grid suministros;
  private static ListBox desastres;
  private static ListBox estados;
  public static NecesidadDTO necesidadDTO;
  private static Long numerador=10000000000L;
  private static Long baseNumerador=10000000000L;
  private UsuarioDTO usuarioGlobal;
  private static ListBox recursosLocales=new ListBox();
  private static HashMap<Long, ArrayList<CuentaCorrienteSuministroDTO>> stocks;
 
  @Override
  public void onModuleLoad() {
    HorizontalPanel botonera= new HorizontalPanel();
    Grid desastreGrid=new Grid(1,2);
    Grid estadoGrid=new Grid(1,2);
    botonera.add(desastreGrid);
    botonera.add(estadoGrid);
    botonera.add(buscarB);
   
    RootPanel.get("botones").add(botonera);
    RootPanel.get("necesidades").add(vertical);
   
    desastres=new ListBox();
    desastres.addItem("Todos","0");
    desastreGrid.setWidget(0, 1, desastres);
    desastreGrid.setWidget(0, 0,new Label("Desastre"));
   
    estados=new ListBox();
    estados.addItem("Todos","0");
    estadoGrid.setWidget(0, 1, estados);
    estadoGrid.setWidget(0,0,new Label("Estado"));
    for(ItemConstante i:EstadoNecesidad.getItems()){
      estados.addItem(i.getTexto(), String.valueOf(i.getCodigo()));
    }
   
    IDesastreAsync serverDesastre=GWT.create(IDesastre.class);
    serverDesastre.listaDesastres(new AsyncCallback<ArrayList<DesastreDTO>>() {
     
      @Override
      public void onSuccess(ArrayList<DesastreDTO> result) {
        desastreGlobal=result;
        DateTimeFormat format=DateTimeFormat.getFormat("dd/MM/yyyy");
        for(DesastreDTO d: result){
          desastres.addItem(d.getId().toString()+"-"+d.getEvento().getCiudad().getNombre()+"-"+format.format(d.getFechaDeclaracion()),d.getId().toString());
        }
      }
     
      @Override
      public void onFailure(Throwable caught) {
        caught.printStackTrace();
        Window.alert("ERROR AJAX");
      }
    });
   
    IPuntoReferenciaAsync serverPuntoRef=GWT.create(IPuntoReferencia.class);
   
    serverPuntoRef.listPuntoEntrega(new AsyncCallback<ArrayList<PuntoReferenciaDTO>>() {
     
      @Override
      public void onSuccess(ArrayList<PuntoReferenciaDTO> result) {
        puntosReferenciaGlobal=result;
      }
     
      @Override
      public void onFailure(Throwable caught) {
        caught.printStackTrace();
        Window.alert("ERROR AJAX");
      }
    });
   
    IDepositoAsync serverDeposito=GWT.create(IDeposito.class);
   
    serverDeposito.listaTipoSuministros(new AsyncCallback<ArrayList<TipoSuministroDTO>>() {
     
      @Override
      public void onSuccess(ArrayList<TipoSuministroDTO> result) {
        tipoSuministrosGlobal=result;
      }
     
      @Override
      public void onFailure(Throwable caught) {
        caught.printStackTrace();
        Window.alert("ERROR AJAX");
       
      }
    });
   
    serverDeposito.buscarCuentaCorrienteSuministro(0L, 0L, new AsyncCallback<ArrayList<CuentaCorrienteSuministroDTO>>() {
     
      @Override
      public void onSuccess(ArrayList<CuentaCorrienteSuministroDTO> result) {
        stocks= new HashMap<Long, ArrayList<CuentaCorrienteSuministroDTO>>();
        for(CuentaCorrienteSuministroDTO dto:result){
          if(!stocks.containsKey(dto.getTipoSuministro().getId())){
            stocks.put(dto.getTipoSuministro().getId(),new ArrayList<CuentaCorrienteSuministroDTO>());
          }
          ArrayList<CuentaCorrienteSuministroDTO> lista=stocks.get(dto.getTipoSuministro().getId());
          lista.add(dto);
        }
      }
     
      @Override
      public void onFailure(Throwable caught) {
        caught.printStackTrace();
        Window.alert("ERROR AJAX");
      }
    });
   
    buscarB.addClickHandler(new ClickHandler() {
      @Override
      public void onClick(ClickEvent event) {
          cargarLista();
      }
         
    });
   
    IUsuarioAsync servidorUsuario= GWT.create(IUsuario.class);
   
    servidorUsuario.getUsuarioLogin(new AsyncCallback<UsuarioDTO>() {
     
      @Override
      public void onSuccess(UsuarioDTO result) {
        usuarioGlobal=result;
      }
     
      @Override
      public void onFailure(Throwable caught) {
        caught.printStackTrace();
        Window.alert("ERROR AJAX");
      }
    });
  }
 
  public void cargarLista(){
    vertical.clear();
 
    Long idDesastre=Long.valueOf(desastres.getValue(desastres.getSelectedIndex()));
    Long idEstado=Long.valueOf(estados.getValue(estados.getSelectedIndex()));
   
    final INecesidadAsync serverNecesidad=GWT.create(INecesidad.class);
   
    serverNecesidad.buscarNecesidades(idDesastre, idEstado, false, new AsyncCallback<ArrayList<NecesidadDTO>>() {
     
      @Override
      public void onSuccess(ArrayList<NecesidadDTO> result) {
        necesidadesGlobal=result;
       
        Grid gridPrincipal= new Grid(result.size()+1,10);
        for(int i=0;i<10;i++){
          gridPrincipal.getCellFormatter().setStyleName(0,i, "tbl-cab");
        }
        gridPrincipal.setBorderWidth(1);
        gridPrincipal.setWidget(0, 0, new Label("ID"));
        gridPrincipal.setWidget(0, 1, new Label("Fecha"));
        gridPrincipal.setWidget(0, 2, new Label("Desastre"));
        gridPrincipal.setWidget(0, 3, new Label("Punto Entrega"));
        gridPrincipal.setWidget(0, 4, new Label("Descripcion"));
        gridPrincipal.setWidget(0, 5, new Label("Estado"));
        gridPrincipal.setWidget(0, 6, new Label("Usuario"));
        gridPrincipal.setWidget(0, 7, new Label("Procesar"));
        gridPrincipal.setWidget(0, 8, new Label("Confirmar"));
        gridPrincipal.setWidget(0, 9, new Label("Rechazar"));
   
       
        vertical.add(gridPrincipal);
       
        int row=1;
        DateTimeFormat format=DateTimeFormat.getFormat("dd/MM/yyyy");
        for(NecesidadDTO s: result){
          gridPrincipal.setWidget(row, 0, new Label(s.getId().toString()));
          gridPrincipal.setWidget(row, 1, new Label(format.format(s.getFecha())));
          gridPrincipal.setWidget(row, 2, new Label(s.getDesastre().getId().toString()+"-"+s.getDesastre().getEvento().getCiudad().getNombre()+"-"+format.format(s.getDesastre().getFechaDeclaracion())));
          gridPrincipal.setWidget(row, 3, new Label(s.getId().toString()+"-"+s.getPuntoEntrega().getCiudad().getNombre()+"-"+s.getPuntoEntrega().getDireccion()));
          gridPrincipal.setWidget(row, 4, new Label(s.getDescripcion()));
          gridPrincipal.setWidget(row, 5, new Label(EstadoNecesidad.getTXT(s.getEstado())));
          gridPrincipal.setWidget(row, 6, new Label(s.getUsuarioCreador().getNombreCompleto()));
         
          final Long id= s.getId();
         
         
          final Button  procesar= new Button();
          procesar.setText("Procesar");
         
          procesar.addClickHandler(new ClickHandler() {
           
            @Override
            public void onClick(ClickEvent event) {
              FormDialogBox dialog= new FormDialogBox(id, "procesar");
              dialog.show();
            }
          });
         
          final Button  modificarI= new Button();
          modificarI.setText("Confirmar");
          final NecesidadDTO ns=s;
          modificarI.addClickHandler(new ClickHandler() {
           
            @Override
            public void onClick(ClickEvent event) {
              ns.setEstado(EstadoNecesidad.ACEPTADA);
              serverNecesidad.modificarNecesidad(ns, new AsyncCallback<Void>() {
               
                @Override
                public void onSuccess(Void result) {
                 
                  serverNecesidad.buscarGestionNecesidadPorNecesidad(ns.getId(), new AsyncCallback<GestionNecesidadDTO>() {
                   
                    @Override
                    public void onSuccess(GestionNecesidadDTO result) {
                      for(PlanSuministroDTO ps:result.getPlanesSuministros()){
                        for(SolicitudEnvioDTO se:ps.getSolicitudesEnvios()){
                          se.setEstado(EstadoSolicitudEnvio.NUEVA);
                        }
                      }
                     
                      serverNecesidad.modificarGestionNecesidad(result, new AsyncCallback<Void>() {
                       
                        @Override
                        public void onSuccess(Void result) {
                          cargarLista();
                        }
                       
                        @Override
                        public void onFailure(Throwable caught) {
                          caught.printStackTrace();
                          Window.alert("ERROR AJAX");
                        }
                      });
                    }
                   
                    @Override
                    public void onFailure(Throwable caught) {
                      caught.printStackTrace();
                      Window.alert("ERROR AJAX");
                     
                    }
                  });
                }
               
                @Override
                public void onFailure(Throwable caught) {
                  caught.printStackTrace();
                  Window.alert("ERROR AJAX");
                }
              });
            }
          });
         
          final Button  rechazarI= new Button();
          rechazarI.setText("Rechazar");
          rechazarI.addClickHandler(new ClickHandler() {
           
            @Override
            public void onClick(ClickEvent event) {
              ns.setEstado(EstadoNecesidad.RECHAZADA);
              serverNecesidad.modificarNecesidad(ns, new AsyncCallback<Void>() {
               
                @Override
                public void onSuccess(Void result) {
                  cargarLista();
                }
               
                @Override
                public void onFailure(Throwable caught) {
                  caught.printStackTrace();
                  Window.alert("ERROR AJAX");
                }
              });
            }
          });
         
          if(s.getEstado()==EstadoNecesidad.EN_PROCESO || s.getEstado()==EstadoNecesidad.INGRESADA){
            gridPrincipal.setWidget(row, 7, procesar);
            gridPrincipal.setWidget(row, 9, rechazarI);
          }
         
          if(s.getEstado()==EstadoNecesidad.EN_PROCESO){
            gridPrincipal.setWidget(row, 8, modificarI);
          }
         
          row++;
         
        }
      }
      @Override
      public void onFailure(Throwable caught) {
        caught.printStackTrace();
        Window.alert("ERROR AJAX");
      }
    });
  }
 
  public class FormDialogBox extends DialogBox{
    private String a;
    private Long id;
    final HorizontalPanel horizontal= new HorizontalPanel();
    final VerticalPanel panelSuministros= new VerticalPanel();
    final VerticalPanel vertical= new VerticalPanel();
    final CaptionPanel panelPrincipal = new CaptionPanel();
   
      final Grid gridFecha= new Grid(1,2);
     
      final DatePicker datePicker = new DatePicker();
      final TextBox descripcion =new TextBox();
      final TextBox fecha= new TextBox();
      final ListBox desastres=new ListBox();
      final HashMap<Long,ArrayList<DepositoCantidad>> cantidades= new HashMap<Long,ArrayList<DepositoCantidad>>();
      final ListBox puntoEntrega=new ListBox();
    
      final Button cancelar= new Button("Cancelar");
    final Button aceptar= new Button("Aceptar");
    private GestionNecesidadDTO dto;
   
    public FormDialogBox(Long idNecesidad,String accion){
      a=accion;
      id=idNecesidad;
      cantidades.clear();
     
      datePicker.addValueChangeHandler(new ValueChangeHandler<Date>() {
          public void onValueChange(ValueChangeEvent<Date> event) {
            Date date = (Date)event.getValue();
            DateTimeFormat format=DateTimeFormat.getFormat("dd/MM/yyyy");
            String dateString = format.format(date);
            fecha.setText(dateString);
          }
        });
        datePicker.setValue(new Date(), true);
       
        if(a=="modificar") panelPrincipal.setCaptionText("Modificar Gestion Necesidad");
      if(a=="procesar") panelPrincipal.setCaptionText("Procesar Necesidad");
      if(a=="nuevo") panelPrincipal.setCaptionText("Nuevo Gestion Necesidad");
      if(a=="ver") panelPrincipal.setCaptionText("Ver Gestion Necesidad");
     
      gridFormulario.setWidget(0, 0, new Label("Fecha"));
      gridFormulario.setWidget(1, 0, new Label("Desastre"));
      gridFormulario.setWidget(2, 0, new Label("Punto de Entrega"));
      gridFormulario.setWidget(3, 0, new Label("Descripcion"));
      gridFormulario.setWidget(4, 0, new Label("Recursos Locales"));
      gridFormulario.setBorderWidth(1);
     
      gridFecha.setWidget(0, 0, fecha);
      gridFecha.setWidget(0, 1, datePicker);
      gridFormulario.setWidget(0, 1, gridFecha);
     
      desastres.addItem("Seleccionar", "0");
      DateTimeFormat format=DateTimeFormat.getFormat("dd/MM/yyyy");
      for(DesastreDTO d: desastreGlobal){
        desastres.addItem(d.getId().toString()+"-"+d.getEvento().getCiudad().getNombre()+"-"+format.format(d.getFechaDeclaracion()),d.getId().toString());
      }
      gridFormulario.setWidget(1, 1, desastres);
     
      puntoEntrega.addItem("Seleccionar", "0");
      for(PuntoReferenciaDTO d: puntosReferenciaGlobal){
        puntoEntrega.addItem(d.getId().toString()+"-"+d.getCiudad().getNombre()+"-"+d.getDireccion(),d.getId().toString());
      }
      gridFormulario.setWidget(2, 1, puntoEntrega);
     
      gridFormulario.setWidget(3, 1, descripcion);
     
      recursosLocales.clear();
      recursosLocales.setEnabled(true);
      recursosLocales.addItem("NO", "NO");
      recursosLocales.addItem("SI", "SI");
      gridFormulario.setWidget(4, 1, recursosLocales);
     
      necesidadDTO= new NecesidadDTO();
     
        gridFormulario.setWidget(5, 0, suministros);
         
      for(NecesidadDTO e:necesidadesGlobal){
          if(e.getId().equals(id)){
            necesidadDTO=e;
          }
        }
       
        descripcion.setText(necesidadDTO.getDescripcion());
        datePicker.setValue(necesidadDTO.getFecha(),true);
       
        desastres.clear();
        desastres.addItem("Seleccionar", "0");
        int index=1;
      for(DesastreDTO d: desastreGlobal){
        desastres.addItem(d.getId().toString()+"-"+d.getEvento().getCiudad().getNombre()+"-"+format.format(d.getFechaDeclaracion()),d.getId().toString());
        if(d.getId().equals(necesidadDTO.getDesastre().getId())){
          desastres.setSelectedIndex(index);
        }
        index++;
      }
     
      puntoEntrega.clear();
      puntoEntrega.addItem("Seleccionar", "0");
        index=1;
      for(PuntoReferenciaDTO d: puntosReferenciaGlobal){
        puntoEntrega.addItem(d.getId()+"-"+d.getCiudad().getNombre()+"-"+d.getDireccion(),String.valueOf(d.getId()));
        if(d.getId().equals(necesidadDTO.getPuntoEntrega().getId())){
          puntoEntrega.setSelectedIndex(index);
        }
        index++;
      }
     
      recursosLocales.setSelectedIndex(necesidadDTO.isRecursosLocales()?1:0);
     
        gridFormulario.setWidget(5, 0, panelSuministros);
       
        INecesidadAsync serverNecesidad=GWT.create(INecesidad.class);
       
        serverNecesidad.buscarGestionNecesidadPorNecesidad(id, new AsyncCallback<GestionNecesidadDTO>() {
       
        @Override
        public void onSuccess(GestionNecesidadDTO result) {
          dto=result;
          boolean yaExiste=true;
          if(dto==null){
            yaExiste=false;
            dto=new GestionNecesidadDTO();
            dto.setNecesidad(necesidadDTO);
            dto.setUsuario(usuarioGlobal);
            INecesidadAsync serverNecesidad=GWT.create(INecesidad.class);
           
            serverNecesidad.nuevoGestionNecesidad(dto, new AsyncCallback<Void>() {
             
              @Override
              public void onSuccess(Void result){
                INecesidadAsync serverNecesidad=GWT.create(INecesidad.class);
             
                serverNecesidad.buscarGestionNecesidadPorNecesidad(id, new AsyncCallback<GestionNecesidadDTO>() {
                 
                  @Override
                  public void onSuccess(GestionNecesidadDTO result) {
                    dto.setId(result.getId());
                  }
                 
                  @Override
                  public void onFailure(Throwable caught) {
                    // TODO Auto-generated method stub
                   
                  }
                });
              }
             
              @Override
              public void onFailure(Throwable caught) {
                caught.printStackTrace();
                Window.alert("ERROR AJAX");
              }
            });
          }
         
          for(SolicitudSuministroDTO s: necesidadDTO.getSolicitudesSuministros()){
            suministros= new Grid(2, 2);
            suministros.setBorderWidth(1);
            suministros.setWidget(0, 0, new Label("Tipo Suministro"));
              suministros.setWidget(0, 1, new Label("Cantidad"));
              suministros.setWidget(1, 0, new Label(s.getTipoSuministro().getNombre()));
            suministros.setWidget(1, 1, new Label(String.valueOf(s.getCantidad())));
            for(int i=0;i<2;i++){
              suministros.getCellFormatter().setStyleName(0,i, "tbl-cab");
            }
            panelSuministros.add(suministros);
           
           
            PlanSuministroDTO planSum=null;
            for(PlanSuministroDTO pdto:dto.getPlanesSuministros()){
              if(pdto.getSolicitudsuministro().getTipoSuministro().getId().equals(s.getTipoSuministro().getId())){
                planSum=pdto;
                break;
              }
            }
           
            if(stocks.containsKey(s.getTipoSuministro().getId())){
              Grid depoCantidades= new Grid(stocks.get(s.getTipoSuministro().getId()).size()+1,3);
              depoCantidades.setBorderWidth(1);
              depoCantidades.setWidget(0, 0, new Label("Deposito"));
              depoCantidades.setWidget(0, 1, new Label("Cantidad en Stock"));
              depoCantidades.setWidget(0, 2, new Label("Cantidad a enviar"));
              panelSuministros.add(depoCantidades);
             
              for(int i=0;i<3;i++){
                depoCantidades.getCellFormatter().setStyleName(0,i, "tbl-cab");
              }
              int row=1;
              for(CuentaCorrienteSuministroDTO cuenta:stocks.get(s.getTipoSuministro().getId())){
                depoCantidades.setWidget(row, 0, new Label(cuenta.getDeposito().getId().toString()+"-"+cuenta.getDeposito().getCiudad().getNombre()+"-"+cuenta.getDeposito().getDireccion()));
                depoCantidades.setWidget(row, 1, new Label(String.valueOf(cuenta.getCantidad())));
                TextBox cantidad = new TextBox();
                cantidad.setText("0");
                cantidad.addKeyboardListener(new KeyNumeric());
                DepositoCantidad depoCan=new DepositoCantidad();
                depoCan.setDeposito(cuenta.getDeposito());
                depoCan.setCantidad(cantidad);
                if(!cantidades.containsKey(s.getTipoSuministro().getId())){
                  cantidades.put(s.getTipoSuministro().getId(),new ArrayList<DepositoCantidad>());
                }
                ArrayList<DepositoCantidad> listaDepoCan= cantidades.get(s.getTipoSuministro().getId());
                listaDepoCan.add(depoCan);
                depoCantidades.setWidget(row, 2, cantidad);
                row++;
                if(planSum!=null){
                  for(SolicitudEnvioDTO sdto: planSum.getSolicitudesEnvios()){
                    if(sdto.getDeposito().getId().equals(cuenta.getDeposito().getId())){
                      for(SolicitudEnvioSuministroDTO sesdto:sdto.getSolicitudesEnvioSuministros()){
                        if(sesdto.getTipoSuministro().getId().equals(s.getTipoSuministro().getId())){
                          cantidad.setText(String.valueOf(sesdto.getCantidad()));
                        }
                      }
                    }
                  }
                }
              }
            }else{
              if(planSum==null){
                Grid depoCantidades= new Grid(2,3);
                depoCantidades.setBorderWidth(1);
                depoCantidades.setWidget(0, 0, new Label("Deposito"));
                depoCantidades.setWidget(0, 1, new Label("Cantidad en Stock"));
                depoCantidades.setWidget(0, 2, new Label("Cantidad a enviar"));
                panelSuministros.add(depoCantidades);
               
                for(int i=0;i<3;i++){
                  depoCantidades.getCellFormatter().setStyleName(0,i, "tbl-cab");
                }
       
                depoCantidades.setWidget(1, 0, new Label("SIN STOCK"));
                depoCantidades.setWidget(1, 1, new Label("SIN STOCK"));
                depoCantidades.setWidget(1, 2, new Label("SIN STOCK"));
              }else{
               
                Grid depoCantidades= new Grid(stocks.get(s.getTipoSuministro().getId()).size()+1,3);
                depoCantidades.setBorderWidth(1);
                depoCantidades.setWidget(0, 0, new Label("Deposito"));
                depoCantidades.setWidget(0, 1, new Label("Cantidad en Stock"));
                depoCantidades.setWidget(0, 2, new Label("Cantidad a enviar"));
                panelSuministros.add(depoCantidades);
               
                for(int i=0;i<3;i++){
                  depoCantidades.getCellFormatter().setStyleName(0,i, "tbl-cab");
                }
                int row=1;
                for(SolicitudEnvioDTO solenv:planSum.getSolicitudesEnvios() ){
                  for(SolicitudEnvioSuministroDTO solenvsum:solenv.getSolicitudesEnvioSuministros()){
                    if(solenvsum.getTipoSuministro().getId().equals(s.getTipoSuministro().getId()))
                    {
                      depoCantidades.setWidget(row, 0, new Label(solenv.getDeposito().getId().toString()+"-"+solenv.getDeposito().getCiudad().getNombre()+"-"+solenv.getDeposito().getDireccion()));
                      depoCantidades.setWidget(row, 1, new Label(String.valueOf(solenvsum.getCantidad())));
                      TextBox cantidad = new TextBox();
                      cantidad.setText(String.valueOf(solenvsum.getCantidad()));
                      cantidad.addKeyboardListener(new KeyNumeric());
                      DepositoCantidad depoCan=new DepositoCantidad();
                      depoCan.setDeposito(solenv.getDeposito());
                      depoCan.setCantidad(cantidad);
                      if(!cantidades.containsKey(s.getId())){
                        cantidades.put(s.getTipoSuministro().getId(),new ArrayList<DepositoCantidad>());
                      }
                      ArrayList<DepositoCantidad> listaDepoCan= cantidades.get(s.getTipoSuministro().getId());
                      listaDepoCan.add(depoCan);
                      depoCantidades.setWidget(row, 2, cantidad);
                      row++;
                     
                    }
                  }
                }
              }
            }
          }
        }
       
        @Override
        public void onFailure(Throwable caught) {
          caught.printStackTrace();
          Window.alert("ERROR AJAX");
        }
      });
       
     
       
        descripcion.setEnabled(false);
        fecha.setEnabled(false);
        desastres.setEnabled(false);
        puntoEntrega.setEnabled(false);
        recursosLocales.setEnabled(false);
        datePicker.setVisible(false);
       
     
      panelPrincipal.add(vertical);
      vertical.add(gridFormulario);
        horizontal.add(aceptar);
      horizontal.add(cancelar);
      vertical.add(horizontal);
     
      cancelar.addClickHandler(new ClickHandler() {
       
        @Override
        public void onClick(ClickEvent event) {
          FormDialogBox.this.hide();
        }
      });
     
      aceptar.addClickHandler(new ClickHandler() {
       
        @Override
        public void onClick(ClickEvent event) {
          FormDialogBox.this.procesar();
        }
      });
       
      setAnimationEnabled(true);
      add(panelPrincipal);
      center();
    }

    protected void procesar() {
      GestionNecesidadDTO dto=validar();
     
      if(dto!=null){
       
        dto.setUsuario(usuarioGlobal);
       
        if(a=="procesar"){
         
          INecesidadAsync servidorNecesidad=GWT.create(INecesidad.class);
         
          necesidadDTO.setEstado(EstadoNecesidad.EN_PROCESO);
          servidorNecesidad.modificarNecesidad(necesidadDTO, new AsyncCallback<Void>() {
           
            @Override
            public void onSuccess(Void result) {
            }
           
            @Override
            public void onFailure(Throwable caught) {
              caught.printStackTrace();
              Window.alert("ERROR AJAX");
            }
          });
         
          servidorNecesidad.modificarGestionNecesidad(dto, new AsyncCallback<Void>() {
           
            @Override
            public void onSuccess(Void result) {
              hide();
              cargarLista();
            }
           
            @Override
            public void onFailure(Throwable caught) {
              caught.printStackTrace();
              Window.alert("ERROR AJAX");
            }
          });
       
        }
      }
    }
   
    private GestionNecesidadDTO validar(){
      dto.getPlanesSuministros().clear();
      for(Long idTipoSuministo :cantidades.keySet()){
        ArrayList<DepositoCantidad> depoCanList= cantidades.get(idTipoSuministo);
        TipoSuministroDTO tipoSuministro=null;
        for(TipoSuministroDTO t:tipoSuministrosGlobal){
          if(idTipoSuministo.equals(t.getId())){
            tipoSuministro=t;
            break;
          }
         
        }
        PlanSuministroDTO plan= new PlanSuministroDTO();
        dto.getPlanesSuministros().add(plan);       
        for(SolicitudSuministroDTO soldto:necesidadDTO.getSolicitudesSuministros()){
          if(soldto.getTipoSuministro().getId().equals(idTipoSuministo)){
            plan.setSolicitudsuministro(soldto);
            break;
          }
        }
        HashSet<SolicitudEnvioDTO> solicitudesEnvios=new HashSet<SolicitudEnvioDTO>();
        plan.setSolicitudesEnvios(solicitudesEnvios);
        for(DepositoCantidad depoCan:depoCanList){
          if(Integer.valueOf(depoCan.getCantidad().getText())>0){
            SolicitudEnvioDTO solenv= new SolicitudEnvioDTO();
            solenv.setDeposito(depoCan.getDeposito());
            solenv.setEstado(EstadoSolicitudEnvio.CREADA);
            solenv.setFecha(new Date());
            solenv.setPuntoEntrega(necesidadDTO.getPuntoEntrega());
            solenv.setSolicitudesEnvioSuministros(new HashSet<SolicitudEnvioSuministroDTO>());
            SolicitudEnvioSuministroDTO solensum=new SolicitudEnvioSuministroDTO();
            solensum.setCantidad(Integer.valueOf(depoCan.getCantidad().getText()));
            solensum.setTipoSuministro(tipoSuministro);
            solenv.getSolicitudesEnvioSuministros().add(solensum);
            solicitudesEnvios.add(solenv);
          }
        }
       
      }
     
      return dto;
    }
  }

}
TOP

Related Classes of fing.satode.ui.necesidades.client.EntryPointGestionNecesidad

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.