private boolean reachedLimitOfBuying(Mensagem msg) { boolean reachedLimit = false; try { BuyConfig config = buyConfigDAO.findConfigByOperadora(msg.getOperadora()); if (config != null) { if (config.getMesCorrenteAtivo() == 1) { Double sum = billingRecordSuccessDAO.getBuyingSumByCurrentMonth(msg.getMsisdn()); if (sum >= config.getVlMax()) { logger.info(loggerMessageDAO.getMessageById(2, sum)); reachedLimit = true; } else { logger.info(loggerMessageDAO.getMessageById(3, sum)); } } else { Integer numberOfDays = config.getNuDias(); Double sum = billingRecordSuccessDAO.getBuyingSumByDaysBeforeCurrent( msg.getMsisdn(), numberOfDays); if (sum >= config.getVlMax()) { logger.info(loggerMessageDAO.getMessageById(10, numberOfDays, sum)); reachedLimit = true; } else { logger.info(loggerMessageDAO.getMessageById(9, numberOfDays, sum)); } } } else { String carrier = operadoraDAO.getCarrierById(moRequest.getCarrier()); logger.error(loggerMessageDAO.getMessageById(1, carrier)); } } catch (Exception exp) { logger.error(loggerMessageDAO.getMessageById(4, exp.getMessage())); } return reachedLimit; }
protected ModelAndView handleRequestInternal( HttpServletRequest request, HttpServletResponse response) throws Exception { Date currentDate = new Date(); try { moRequest = parseInputParameters(request); logger.info("MO Message: " + moRequest); } catch (Exception e) { logger.warn(loggerMessageDAO.getMessageById(5, e.getMessage())); response.sendError(HttpServletResponse.SC_BAD_REQUEST, loggerMessageDAO.getMessageById(6)); return null; } String strLa = moRequest.getDestinationNumber(); if (moRequest.getDestinationNumber().contains("-")) { strLa = moRequest .getDestinationNumber() .substring(0, moRequest.getDestinationNumber().indexOf("-")); } la = laDAO.findByNome(strLa); if (la == null) { logger.warn(loggerMessageDAO.getMessageById(7, moRequest.getDestinationNumber())); response.sendError( HttpServletResponse.SC_BAD_REQUEST, loggerMessageDAO.getMessageById(7, moRequest.getDestinationNumber())); return null; } if (isOptionIn()) { return null; } Mensagem msg = new Mensagem(); msg.setLa(la); msg.setMensagem(moRequest.getTextMessage()); msg.setMsisdn(moRequest.getOriginationNumber()); msg.setOperadora(Integer.parseInt(moRequest.getCarrier())); msg.setProcessamento(currentDate); msg.setRequest(currentDate); Historico hist = new Historico(); hist.setDtCriacao(currentDate); hist.setLa(la); hist.setMensagem(msg); hist.setTxMensagem(msg.getMensagem()); hist.setMsisdn(msg.getMsisdn()); hist.setOperadora(msg.getOperadora()); hist.setStatusType(StatusType.FLOW_START); boolean isDuplicate = isDuplicate(msg.getMsisdn()); if (isDuplicate) { msg.setMessageStatus(MessageStatus.DUPLICATE); hist.setMessageStatus(MessageStatus.DUPLICATE); } else { msg.setMessageStatus(MessageStatus.FLOW_START); hist.setMessageStatus(MessageStatus.FLOW_START); } try { msgDAO.save(msg); historicoDAO.save(hist); if (isDuplicate) { DuplicatedMessage dupMessage = new DuplicatedMessage(); dupMessage.setCodigoOperadora(msg.getOperadora()); dupMessage.setMensagem(msg); dupMessage.setSmsMtSent(0); dupMessage.setMsisdn(msg.getMsisdn()); dupMessage.setDtCompra(Calendar.getInstance().getTime()); duplicatedMessageDAO.save(dupMessage); return null; } if (!existsCampaign()) { hist.setMessageStatus(MessageStatus.CAMPAIGN_NOT_FOUND); msg.setMessageStatus(MessageStatus.CAMPAIGN_NOT_FOUND); msgDAO.update(msg); historicoDAO.update(hist); WithoutCampaignMsg withoutCampaignMsg = new WithoutCampaignMsg(); withoutCampaignMsg.setCodigoOperadora(msg.getOperadora()); withoutCampaignMsg.setMensagem(msg); withoutCampaignMsg.setSmsMtSent(0); withoutCampaignMsg.setTxtMensagem(msg.getMensagem()); withoutCampaignMsg.setMsisdn(msg.getMsisdn()); withoutCampaignMsgDAO.save(withoutCampaignMsg); return null; } if (reachedLimitOfBuying(msg)) { hist.setMessageStatus(MessageStatus.BUY_LIMIT_REACHED); msg.setMessageStatus(MessageStatus.BUY_LIMIT_REACHED); msgDAO.update(msg); historicoDAO.update(hist); BuyingLimitExceed bl = new BuyingLimitExceed(); bl.setMensagem(msg); bl.setMsisdn(msg.getMsisdn()); bl.setSmsMtSent(0); bl.setCodigoOperadora(msg.getOperadora()); bl.setDtCompra(Calendar.getInstance().getTime()); buyingLimitExceedDAO.save(bl); return null; } Sharecode sharecode = campaign.getRegra().getSharecode(msg.getOperadora()); Transacao tr = new Transacao(); tr.setDtSchedule(currentDate); tr.setDtTransacao(currentDate); tr.setKeycode(campaign.getRegra().getKeycode()); tr.setLa(la); tr.setMensagem(msg); tr.setMsisdn(msg.getMsisdn()); tr.setOperadora(msg.getOperadora()); tr.setParceiro(keycode.getParceiro()); tr.setRegra(campaign.getRegra()); tr.setCampanha(campaign); tr.setSharecode(sharecode); tr.setValorTarifacao(sharecode.getTarifacao()); tr.setDoubleOptionIn(0); switch (campaign.getFlowType()) { case Campanha.REQUIRES_AUTHORIZATION_FLOW: tr.setTransactionStatus(TransactionStatus.WAITING_TO_PROCESS); break; case Campanha.SIMPLIFIED_FLOW: tr.setTransactionStatus(TransactionStatus.TRANSACTION_AUTHORIZED); break; case Campanha.VOUCHER_FLOW: tr.setTransactionStatus(TransactionStatus.WAITING_TO_PROCESS); break; } transacaoDAO.save(tr); } catch (Exception e) { logger.error(loggerMessageDAO.getMessageById(8, e.getMessage())); hist.setMessageStatus(MessageStatus.ERROR); msg.setMessageStatus(MessageStatus.ERROR); msgDAO.update(msg); historicoDAO.update(hist); } return null; }
private boolean isOptionIn() { String optionInMsg = moRequest.getTextMessage(); String expectedAnswer = configDAO.findByName(OPTION_IN_ANSWER); if (optionInMsg.equalsIgnoreCase(expectedAnswer)) { String originator = moRequest.getOriginationNumber(); Transacao tr = transacaoDAO.findLastByMsisdnAndStatus( originator, TransactionStatus.WAIT_OPTION_IN_ANSWER); if (tr != null) { tr.setTransactionStatus(TransactionStatus.TRANSACTION_AUTHORIZED); transacaoDAO.update(tr); insertToMsgHist( tr, optionInMsg, StatusType.WAIT_OPTION_IN_ANSWER, MessageStatus.TRANSACTION_AUTHORIZED); OptionIn optionIn = optionInDAO.findByTransactionId(tr.getId()); optionIn.setTimeOfAuthorization(Calendar.getInstance().getTime()); optionIn.setIsAuthorized(1); optionInDAO.update(optionIn); logger.info( loggerMessageDAO.getMessageByShortcode( VOUCHER_AUTHORIZED, tr.getCampanha().getKeyword(), tr.getMsisdn(), tr.getId(), dateTimeFormat.format(Calendar.getInstance().getTime()))); List<Transacao> trList = transacaoDAO.findAllByMsisdnAndStatus( originator, TransactionStatus.WAIT_OPTION_IN_ANSWER); for (Transacao t : trList) { t.setTransactionStatus(TransactionStatus.TRANSACTION_CANCELED); transacaoDAO.update(t); insertToMsgHist( t, null, StatusType.WAIT_OPTION_IN_ANSWER, MessageStatus.TRANSACTION_CANCELED); logger.info( loggerMessageDAO.getMessageByShortcode( VOUCHER_CANCELED, tr.getCampanha().getKeyword(), tr.getMsisdn(), tr.getId(), dateTimeFormat.format(Calendar.getInstance().getTime()))); } return true; } else { return false; } } return false; }