public String deleteHotel(int id) {
   ArrayList<PacchettoDTO> h_pack_list = CMB.getHotelById(id).getPacchettos();
   int pr = 0;
   if (!h_pack_list.isEmpty()) {
     for (PacchettoDTO p : h_pack_list) {
       if (p.getLista_hotel().size()
           == 1) // se nel pacchetto c'è solo un hotel, in questo caso è proprio quello da
                 // eliminare
       {
         PMB.deletePacchetto(p.getId());
         pr++;
       } else { // se non era l'unico hotel, rimuovo dalla lista del pacchetto e elimina pacchetto
         ArrayList<HotelDTO> phdto = (ArrayList<HotelDTO>) p.getLista_hotel();
         ArrayList<HotelDTO> new_phdto = new ArrayList<HotelDTO>();
         for (HotelDTO hdto : phdto) {
           if (hdto.getId() != id) new_phdto.add(hdto);
         }
         p.setLista_hotel(new_phdto); // modifico la lista degli hotel al pacchetto corrente
         PMB.modifyPacchetto(p);
       }
     }
   }
   if (pr >= 1) {
     FacesContext.getCurrentInstance()
         .addMessage(
             null,
             new FacesMessage(
                 FacesMessage.SEVERITY_WARN,
                 "Info message",
                 "Con questa modifica "
                     + pr
                     + " pacchetto/i sono stati eliminati per incompatibilità"));
   }
   CMB.eliminaHotel(id);
   return "toHotel.xhtml?faces-redirect=true";
 }
  public String eliminaVolo(int id) {
    ArrayList<PacchettoDTO> volo_pack_list = CMB.getVoloById(id).getPacchettos();
    int pr = 0;
    if (!volo_pack_list.isEmpty()) {
      for (PacchettoDTO p : volo_pack_list) {
        ArrayList<VoloDTO> pvdto = (ArrayList<VoloDTO>) p.getLista_voli();
        ArrayList<VoloDTO> new_pvdto = new ArrayList<VoloDTO>();
        for (VoloDTO vdto : pvdto) {
          if (vdto.getId() != id) new_pvdto.add(vdto); // new_pvdto è la nuova list voli del pack
        }
        int andata = 0,
            ritorno =
                0; // controllo nella lista nuova se esiste almeno un volo di andata e uno di
                   // ritorno
        for (VoloDTO vdto2 : new_pvdto) {
          if (vdto2.getLuogo_partenza().equals(p.getDestinazione())) andata++;
          else if (vdto2.getLuogo_arrivo().equals(p.getDestinazione())) ritorno++;
        }

        int temporal =
            0; // Controllo che ci sia ancora un volo di andata prima di uno di ritorno nel
               // pacchetto
        for (VoloDTO vdto : new_pvdto) {
          if (vdto.getLuogo_arrivo().equals(p.getDestinazione())) {
            Date date_ref = vdto.getData();
            for (VoloDTO vdto2 : new_pvdto) {
              if (vdto2.getLuogo_partenza().equals(p.getDestinazione())) {
                if (vdto2.getData().after(date_ref)) {
                  temporal++;
                  break;
                }
              }
            }
          }
        }
        if (andata >= 1
            && ritorno >= 1
            && temporal
                >= 1) // se ho ancora abbastanza voli salvo la nuova lista e aggiorno il pack
        {
          p.setLista_voli(new_pvdto);
          PMB.modifyPacchetto(p);
        } else {
          PMB.deletePacchetto(p.getId());
          pr++;
        }
      }
    }
    if (pr >= 1) {
      FacesContext.getCurrentInstance()
          .addMessage(
              null,
              new FacesMessage(
                  FacesMessage.SEVERITY_WARN,
                  "Info message",
                  "Con questa modifica "
                      + pr
                      + " pacchetto/i sono stati eliminati per incompatibilità"));
    }
    CMB.eliminaVolo(id);
    return "toVolo.xhtml?faces-redirect=true";
  }