package it.valueteam.gnp.manager; import it.valueteam.gnp.dao.db.hb.*; import it.valueteam.gnp.systemcontroller.dbcfxgo.DbcfxgoController; import it.valueteam.gnp.utility.DateUtils; import it.valueteam.gnp.utility.UserTransactionUtility; import org.hibernate.criterion.Restrictions; import org.hibernate.criterion.SimpleExpression; import javax.transaction.UserTransaction; import java.util.ArrayList; import java.util.Date; public class RequestManagerNngDon { final static String PROCESSO_DONATING_NNG = "NNG_DON"; final static String PROCESSO_RESTITUZIONE_TIM = "RESTITUZIONE_TIM"; public static void avanzaStatoinAcquisita(GnpNngFenpRichIn fenpRichIn) throws Exception { GnpNngFenpRichInDAO fenpRichInDAO = new GnpNngFenpRichInDAO(); GnpRichiesteNngDonDAO richDAO = new GnpRichiesteNngDonDAO(); GnpRichiesteNngDon richiesta = new GnpRichiesteNngDon(); richiesta.setOpRecipient(fenpRichIn.getCodOpRecipient()); richiesta.setStato(Long.valueOf(1)); richiesta.setDaInviare(Long.valueOf(1)); if ("1".equals(fenpRichIn.getTipoComunicazione())){ richiesta.setProcesso(PROCESSO_DONATING_NNG); } else { richiesta.setProcesso(PROCESSO_RESTITUZIONE_TIM); richiesta.setOpRecipient(fenpRichIn.getCodOpReturning()); } richiesta.setTipoServizio(fenpRichIn.getTipoServizio()); richiesta.setDataOperazione(fenpRichIn.getDataOrdine()); richiesta.setCodiceFiscale(fenpRichIn.getCodFiscale()); richiesta.setPartitaIva(fenpRichIn.getPartitaIva()); richiesta.setCodiceOrdine(fenpRichIn.getCodiceOrdine()); richiesta.setCodiceProgetto(fenpRichIn.getCodiceProgetto()); richiesta.setCow(fenpRichIn.getCodOpDonating()); if ("9".equals(fenpRichIn.getTipoComunicazione())){ richiesta.setCow("TLC"); } richiesta.setDac(fenpRichIn.getDac()); richiesta.setNng(fenpRichIn.getNng()); richiesta.setPartitaIva(fenpRichIn.getPartitaIva()); richDAO.save(richiesta); fenpRichIn.setIdRichiesta(richiesta.getIdRichiesta()); fenpRichInDAO.merge(fenpRichIn); DbcfxgoController.getInstance().inviaNotificaDbcfxGo(richiesta, fenpRichIn); } public static void createFenpRichiesteOut(GnpDbcfxgoInNng103 dbcfxgoInRec, GnpRichiesteNngDon richiestaDon) throws Exception { UserTransaction uTX = null; //uTX = UserTransactionUtility.beginUserTransaction(); try{ GnpNngFenpRichOut fenpRichiesteOut = new GnpNngFenpRichOut(); String tipoComunicazione = String.valueOf(dbcfxgoInRec.getTipoComunicazione()); fenpRichiesteOut.setDaProcessare(1L); fenpRichiesteOut.setDataCreazione(new Date()); if ("2".equals(tipoComunicazione) || "4".equals(tipoComunicazione)){ fenpRichiesteOut.setCodOpRecipient(richiestaDon.getOpRecipient()); } fenpRichiesteOut.setTipoComunicazione(tipoComunicazione); fenpRichiesteOut.setDataOrdine(richiestaDon.getDataOperazione()); fenpRichiesteOut.setNng(richiestaDon.getNng()); // DAC nel donating arriva solo nel TC1 e TC3 (fenpIn) // fenpRichiesteOut.setDac(dbcfxgoInRec.getDAC() != null ? DateUtils.toDate(dbcfxgoInRec.getDAC(), "yyyy-MM-dd") : null); // fenpRichiesteOut.setCodiceProgetto(dbcfxgoInRec.getCODICE_PROGETTO() != null? dbcfxgoInRec.getCODICE_PROGETTO() : ""); if ("2".equals(tipoComunicazione) || ("10".equals(tipoComunicazione))) { fenpRichiesteOut.setStatoOrdine(String.valueOf(dbcfxgoInRec.getStato())); fenpRichiesteOut.setCodMotivoRifiuto(richiestaDon.getCodRifiuto()); fenpRichiesteOut.setDescMotivoRifiuto(richiestaDon.getDescRifiuto()); } if ("4".equals(tipoComunicazione)) { fenpRichiesteOut.setStatoOrdine("3"); fenpRichiesteOut.setCodOpDonating(richiestaDon.getCow()); //TLC fenpRichiesteOut.setCodOp(dbcfxgoInRec.getCodOperatore()); //telecom italia fenpRichiesteOut.setDataEspletamento(richiestaDon.getDac()); //invio effettivo alle 16 di DAC } fenpRichiesteOut.setIdRichiesta(Long.valueOf(dbcfxgoInRec.getIdRichiesta())); if (tipoComunicazione.equals("10") ) { fenpRichiesteOut.setCodOpReturning(dbcfxgoInRec.getCor()); fenpRichiesteOut.setCodOpRecipient(dbcfxgoInRec.getCor()); fenpRichiesteOut.setCodOpDonating(richiestaDon.getCow()); fenpRichiesteOut.setStatoOrdine("1"); } if (tipoComunicazione.equals("11")) { // questo dovrebbe essere al posto del recipient... fenpRichiesteOut.setCodOpReturning(dbcfxgoInRec.getCor()); fenpRichiesteOut.setCodOpRecipient(dbcfxgoInRec.getCor()); fenpRichiesteOut.setCodOpDonating(richiestaDon.getCow()); fenpRichiesteOut.setCodOp(dbcfxgoInRec.getCodOperatore()); fenpRichiesteOut.setStatoOrdine("3"); } fenpRichiesteOut.setCodiceOrdine(dbcfxgoInRec.getCodiceOrdine()); fenpRichiesteOut.setTipoNotifica("NPNNG"); new GnpNngFenpRichOutDAO().save(fenpRichiesteOut); //SAVE //UserTransactionUtility.endUserTransaction(uTX, true); } catch (Exception ex) { //rollback della tx corrente ex.printStackTrace(); //0010 C - ERRORE DURANTE L''ELABORAZIONE: System.out.println(" " + richiestaDon.getIdRichiesta() + " - " + ex.toString()); System.out.println("exception"+ ex.getMessage()); } } // avanzamento da DBCFXGO public static void avanzamentoNngDon(GnpDbcfxgoInNng103 dbcfxgoInRec) throws Exception { GnpDbcfxgoInNng103DAO nngInDao = new GnpDbcfxgoInNng103DAO(); GnpRichiesteNngDonDAO richDAO = new GnpRichiesteNngDonDAO(); GnpRichiesteNngDon richiesta = new GnpRichiesteNngDon(); if (dbcfxgoInRec.getIdRichiesta() != null) { richiesta = richDAO.findById(Long.valueOf(dbcfxgoInRec.getIdRichiesta())); } else { ArrayList criterion = new ArrayList(); criterion.add(Restrictions.eq(GnpRichiesteNngDonDAO.HIB_CODICE_ORDINE, dbcfxgoInRec.getCodiceOrdine())); richiesta = (GnpRichiesteNngDon) richDAO.findByCriteria(criterion).get(0); dbcfxgoInRec.setIdRichiesta(richiesta.getIdRichiesta()); } if (dbcfxgoInRec.getTipoComunicazione() == 2 || dbcfxgoInRec.getTipoComunicazione() == 10) { if (dbcfxgoInRec.getStato() == 1) { //rifiutato richiesta.setStato(Long.valueOf(4)); richiesta.setCodRifiuto(String.valueOf(dbcfxgoInRec.getCodiceRifiutoFenp())); richiesta.setDescRifiuto(dbcfxgoInRec.getCausaleRifiutoFenp()); } else { richiesta.setStato(Long.valueOf(3)); } } richDAO.merge(richiesta); dbcfxgoInRec.setDaScodare(0L); nngInDao.merge(dbcfxgoInRec); createFenpRichiesteOut(dbcfxgoInRec,richiesta); } // avanzamento da FENP public static void avanzamentoNngDon(GnpRichiesteNngDon richiesta, GnpNngFenpRichIn fenpRichiestaIn) throws Exception { GnpRichiesteNngDonDAO richDAO = new GnpRichiesteNngDonDAO(); String tipoComunicazione = fenpRichiestaIn.getTipoComunicazione(); if (richiesta != null) { if ("4".equals(tipoComunicazione)) { richiesta.setDataEspletamento(fenpRichiestaIn.getDataEspletamento()); avanzaStatoinEspletata(richiesta); } if ("7".equals(tipoComunicazione)) { if (fenpRichiestaIn.getRdac().before(fenpRichiestaIn.getDac())) { return; //ignora } else if (fenpRichiestaIn.getDac().before(DateUtils.toDate(DateUtils.aggiungiGiorniLavorativi(new Date(), 3),"yyyy-MM-dd" ))) { // ignora return; } else if (fenpRichiestaIn.getDac().equals(DateUtils.toDate(DateUtils.aggiungiGiorniLavorativi(new Date(), 3),"yyyy-MM-dd" )) && Long.valueOf(DateUtils.getHour(new Date())).intValue() >= 16 ) { return; // ignora } else { richiesta.setDac(fenpRichiestaIn.getRdac()); aggiornaTC4(fenpRichiestaIn); } } if ("8".equals(tipoComunicazione)) { if (richiesta.getDac().before(DateUtils.toDate(DateUtils.aggiungiGiorniLavorativi(new Date(), 3),"yyyy-MM-dd" ))) { // ignora return; } else if (richiesta.getDac().equals(DateUtils.toDate(DateUtils.aggiungiGiorniLavorativi(new Date(), 3),"yyyy-MM-dd" )) && Long.valueOf(DateUtils.getHour(new Date())).intValue() >= 16 ) { return; // ignora } else { avanzaStatoinAnnullata(richiesta); annullaTC4(fenpRichiestaIn); } } richDAO.merge(richiesta); DbcfxgoController.getInstance().inviaNotificaDbcfxGo(richiesta, fenpRichiestaIn); } } private static void annullaTC4(GnpNngFenpRichIn fenpRichiestaIn) { GnpNngFenpRichOutDAO fenpRichOutDAO = new GnpNngFenpRichOutDAO(); GnpNngFenpRichOut tc4 = fenpRichOutDAO.getTC4FromCodiceOrdine(fenpRichiestaIn.getCodiceOrdine()); if (tc4 != null && tc4.getDaProcessare() == 1) { tc4.setDaProcessare(0L); tc4.setDataEspletamento(null); } } private static void aggiornaTC4(GnpNngFenpRichIn fenpRichiestaIn) { GnpNngFenpRichOutDAO fenpRichOutDAO = new GnpNngFenpRichOutDAO(); GnpNngFenpRichOut tc4 = fenpRichOutDAO.getTC4FromCodiceOrdine(fenpRichiestaIn.getCodiceOrdine()); if (tc4 != null && tc4.getDaProcessare() == 1) { tc4.setDataEspletamento(fenpRichiestaIn.getRdac()); } } public static void avanzaStatoInInviataGo(GnpRichiesteNngDon richiesta) { richiesta.setStato(Long.valueOf(2)); new GnpRichiesteNngDonDAO().merge(richiesta); } private static void avanzaStatoinAnnullata(GnpRichiesteNngDon richiesta) { richiesta.setStato((long) 7); } private static void avanzaStatoinEspletata(GnpRichiesteNngDon richiesta) { richiesta.setStato((long) 6); } public static void avanzaStatoinInviataFenp(GnpRichiesteNngDon richiesta) { richiesta.setStato((long) 5); } }