List of usage examples for org.joda.time Weeks weeksBetween
public static Weeks weeksBetween(ReadablePartial start, ReadablePartial end)
Weeks
representing the number of whole weeks between the two specified partial datetimes. From source file:pt.ist.fenix.task.exportData.santanderCardGeneration.CreateAndInitializeExecutionCourses.java
License:Open Source License
public SortedSet<Integer> getOccurrenceWeeksAsString(final Lesson lesson) { final SortedSet<Integer> weeks = new TreeSet<Integer>(); final ExecutionCourse executionCourse = lesson.getExecutionCourse(); final YearMonthDay firstPossibleLessonDay = executionCourse.getMaxLessonsPeriod().getLeft(); final YearMonthDay lastPossibleLessonDay = executionCourse.getMaxLessonsPeriod().getRight(); for (final Interval interval : lesson.getAllLessonIntervals()) { final Integer week = Weeks.weeksBetween(firstPossibleLessonDay, interval.getStart().toLocalDate()) .getWeeks() + 1;/* w ww . j a v a 2 s . c om*/ weeks.add(week); } return weeks; }
From source file:ume.pareva.it.ITDr.java
private void processBillingDR(HttpServletRequest request, HttpServletResponse response) { String id = request.getParameter("id"); String report = request.getParameter("report"); // This can be DELIVERED, ACKNOWLEDGED, FAILED String messageid = request.getParameter("message_id"); String msisdn = request.getParameter("number"); Calendar deliverytime = new GregorianCalendar(); String serviceId = "6119598063441KDS"; String defClubDomain = "5510024809921CDS"; String freeCostId = "0"; String deliveryReceipt = "11"; String transactionId = Misc.generateUniqueIntegerId() + ""; String typeId = "2"; if (id.contains("-")) { serviceId = getClubId(id, "-").trim(); System.out.println("IPXDr INSIDE - condition SERVICE ID IS " + serviceId); }//from www. ja v a 2 s. c o m MobileClub club = UmeTempCmsCache.mobileClubMap.get(serviceId); UmeClubDetails clubdetail = UmeTempCmsCache.umeClubDetailsMap.get(club.getUnique()); quizsmsdao.updateResponse(id, report, sdf.format(deliverytime.getTime()), report, ""); umesmsdao.updateResponse(id, report, sdf.format(deliverytime.getTime()), report, ""); if (report.equals("DELIVERED")) { MobileClubBillingPlan mobileClubBillingPlan = null; String successResponse = "00"; SdcSmsSubmit smsrecord = quizsmsdao.getSmsMsgLog(id); if (smsrecord != null && smsrecord.getMsgType().equalsIgnoreCase("premium")) { //====================== USER- CLUBUSER - BILLING PLANS =============================== UmeUser user = null; SdcMobileClubUser clubUser = null; String userUnique = umeuserdao.getUserUnique(msisdn, "msisdn", defClubDomain); if (!userUnique.equals("")) { user = umeuserdao.getUser(msisdn); } try { System.out.println("IPXDr ITDR getting userunique from msisdn " + user.toString()); } catch (Exception e) { System.out.println("IPXDr ITDR Exception at line 178 EngageDR for msisdn " + msisdn); } if (user != null) { clubUser = user.getClubMap().get(club.getUnique()); if (clubUser == null) { clubUser = umeMobileClubUserDao.getClubUserByMsisdn(msisdn, club.getUnique()); } if (clubUser != null) { mobileClubBillingPlan = billingplandao.getAnyStatusBillingPlanByMsisdnAndClubUnique(msisdn, club.getUnique()); System.out.println("ITBillingSuccess BillingPlan is " + mobileClubBillingPlan.toString()); } } //====================== USER- CLUBUSER - BILLING PLANS =============================== boolean cpaLog = false; if (smsrecord.getLogUnique().equals(id) && smsrecord.getMsgType().equalsIgnoreCase("premium") //&& (smsrecord.getMsgCode1().equals("txtmo.jsp") || smsrecord.getMsgCode1().equals("billingITd1")) && smsrecord.getReqType().equals("firstbillable")) { //first billable System.out.println("IPXDr ITDR getting userunique from msisdn " + smsrecord.getMsgCode1()); if (user != null && clubUser != null) { //System.out.println("IPXDr ITDR getting ClubUser from msisdn "+clubUser.toString()); //boolean cpaLog = false; //BillingTry Logging for first success if (DateUtils.isSameDay(new Date(), clubUser.getSubscribed())) { successResponse = "003"; cpaLog = true; } String biloggednetwork = mobilenetwork.getMobileNetwork(club.getRegion().toUpperCase(), clubUser.getNetworkCode()); MobileClubBillingTry mobileClubBillingTry = new MobileClubBillingTry(); mobileClubBillingTry.setUnique(id); mobileClubBillingTry.setLogUnique(id); mobileClubBillingTry.setAggregator("IPX"); mobileClubBillingTry.setClubUnique(club.getUnique()); mobileClubBillingTry.setCreated(new Date()); mobileClubBillingTry.setNetworkCode(biloggednetwork.toLowerCase()); mobileClubBillingTry.setParsedMsisdn(msisdn); mobileClubBillingTry.setRegionCode(club.getRegion().toUpperCase()); mobileClubBillingTry.setResponseCode(successResponse); mobileClubBillingTry.setResponseDesc("successful"); mobileClubBillingTry.setResponseRef(transactionId); mobileClubBillingTry.setStatus("success"); mobileClubBillingTry.setTariffClass(club.getPrice()); mobileClubBillingTry.setTransactionId(transactionId); mobileClubBillingTry.setCampaign(clubUser.getCampaign()); //End BillingTry Logging if (mobileClubBillingPlan != null) { Calendar c = Calendar.getInstance(); mobileClubBillingPlan.setLastSuccess(c.getTime()); mobileClubBillingPlan.setLastPaid(c.getTime()); mobileClubBillingPlan.setPushCount(mobileClubBillingPlan.getPushCount() + 1); //Date nextPush = new Date(); if (mobileClubBillingPlan.getLastPush().before(mobileClubBillingPlan.getSubscribed())) { mobileClubBillingPlan.setLastPush(new Date()); } Date nextPush = DateUtils.addDays(mobileClubBillingPlan.getLastPush(), 7); nextPush = DateUtils.setHours(nextPush, 9); nextPush = DateUtils.truncate(nextPush, Calendar.HOUR_OF_DAY); mobileClubBillingPlan.setNextPush(nextPush); mobileClubBillingPlan.setLastSuccess(new Date()); //mobileClubBillingPlan.setLastPaid(new Date()); if (mobileClubBillingPlan.getServiceDateBillsRemaining() > 0) { mobileClubBillingPlan.setServiceDateBillsRemaining( mobileClubBillingPlan.getServiceDateBillsRemaining() - 1); } umeMobileClubUserDao.updateBillingRenew(clubUser.getUserUnique(), club.getUnique()); billingplandao.update(mobileClubBillingPlan); System.out.println("ITBillingSuccess calling UP billing success in ITDR "); MobileClubBillingSuccesses mobileClubBillingSuccesses = new MobileClubBillingSuccesses( mobileClubBillingPlan, mobileClubBillingTry); System.out.println("ITBillingSuccess Saving Billing Successes " + mobileClubBillingSuccesses.toString()); try { mobilebillingdao.insertBillingSuccess(mobileClubBillingSuccesses); mobilebillingdao.insertBillingTry(mobileClubBillingTry); } catch (Exception e) { } } } //End if user!=null } //end if first billable if (smsrecord.getLogUnique().equals(id) && smsrecord.getMsgType().equalsIgnoreCase("premium") //&& (smsrecord.getMsgCode1().equals("txtdr.jsp") || smsrecord.getMsgCode1().equals("billingITd2")) && smsrecord.getReqType().equals("secondbillable")) { if (user != null && clubUser != null) { //BillingTry Logging for first success if (DateUtils.isSameDay(new Date(), clubUser.getSubscribed())) { successResponse = "003"; cpaLog = true; } String biloggednetwork = mobilenetwork.getMobileNetwork(club.getRegion().toUpperCase(), clubUser.getNetworkCode()); MobileClubBillingTry mobileClubBillingTry = new MobileClubBillingTry(); mobileClubBillingTry.setUnique(id); mobileClubBillingTry.setLogUnique(id); mobileClubBillingTry.setAggregator("TXT"); mobileClubBillingTry.setClubUnique(club.getUnique()); mobileClubBillingTry.setCreated(new Date()); mobileClubBillingTry.setNetworkCode(biloggednetwork.toLowerCase()); mobileClubBillingTry.setParsedMsisdn(msisdn); mobileClubBillingTry.setRegionCode(club.getRegion().toUpperCase()); mobileClubBillingTry.setResponseCode(successResponse); mobileClubBillingTry.setResponseDesc("successful"); mobileClubBillingTry.setResponseRef(transactionId); mobileClubBillingTry.setStatus("success"); mobileClubBillingTry.setTariffClass(club.getPrice()); mobileClubBillingTry.setTransactionId(transactionId); mobileClubBillingTry.setCampaign(clubUser.getCampaign()); //End BillingTry Logging if (mobileClubBillingPlan != null) { Calendar c = Calendar.getInstance(); mobileClubBillingPlan.setLastSuccess(c.getTime()); mobileClubBillingPlan.setLastPaid(c.getTime()); mobileClubBillingPlan.setPushCount(mobileClubBillingPlan.getPushCount() + 1); //Date nextPush = new Date(); if (mobileClubBillingPlan.getLastPush().before(mobileClubBillingPlan.getSubscribed())) { mobileClubBillingPlan.setLastPush(new Date()); } Date nextPush = DateUtils.addDays(mobileClubBillingPlan.getLastPush(), 7); nextPush = DateUtils.setHours(nextPush, 9); nextPush = DateUtils.truncate(nextPush, Calendar.HOUR_OF_DAY); mobileClubBillingPlan.setNextPush(nextPush); mobileClubBillingPlan.setLastSuccess(new Date()); //mobileClubBillingPlan.setLastPaid(new Date()); if (mobileClubBillingPlan.getServiceDateBillsRemaining() > 0) { mobileClubBillingPlan.setServiceDateBillsRemaining( mobileClubBillingPlan.getServiceDateBillsRemaining() - 1); } umeMobileClubUserDao.updateBillingRenew(clubUser.getUserUnique(), club.getUnique()); billingplandao.update(mobileClubBillingPlan); MobileClubBillingSuccesses mobileClubBillingSuccesses = new MobileClubBillingSuccesses( mobileClubBillingPlan, mobileClubBillingTry); try { mobilebillingdao.insertBillingSuccess(mobileClubBillingSuccesses); mobilebillingdao.insertBillingTry(mobileClubBillingTry); } catch (Exception e) { } } } //END SEcond bilable uesr!=null } //END Second Billable if (smsrecord.getLogUnique().equals(id) && smsrecord.getMsgType().equalsIgnoreCase("premium") //&& (smsrecord.getMsgCode1().equals("txtdr.jsp") || smsrecord.getMsgCode1().equals("billingITd3")) && smsrecord.getReqType().equals("thirdbillable")) { //Third Billable //=================================================================== if (user != null && clubUser != null) { //boolean cpaLog = false; //BillingTry Logging for first success if (DateUtils.isSameDay(new Date(), clubUser.getSubscribed())) { successResponse = "003"; cpaLog = true; } String biloggednetwork = mobilenetwork.getMobileNetwork(club.getRegion().toUpperCase(), clubUser.getNetworkCode()); MobileClubBillingTry mobileClubBillingTry = new MobileClubBillingTry(); mobileClubBillingTry.setUnique(id); mobileClubBillingTry.setLogUnique(id); mobileClubBillingTry.setAggregator("TXT"); mobileClubBillingTry.setClubUnique(club.getUnique()); mobileClubBillingTry.setCreated(new Date()); mobileClubBillingTry.setNetworkCode(biloggednetwork.toLowerCase()); mobileClubBillingTry.setParsedMsisdn(msisdn); mobileClubBillingTry.setRegionCode(club.getRegion().toUpperCase()); mobileClubBillingTry.setResponseCode(successResponse); mobileClubBillingTry.setResponseDesc("successful"); mobileClubBillingTry.setResponseRef(transactionId); mobileClubBillingTry.setStatus("success"); mobileClubBillingTry.setTariffClass(club.getPrice()); mobileClubBillingTry.setTransactionId(transactionId); mobileClubBillingTry.setCampaign(clubUser.getCampaign()); //End BillingTry Logging if (mobileClubBillingPlan != null) { Calendar c = Calendar.getInstance(); mobileClubBillingPlan.setLastSuccess(c.getTime()); mobileClubBillingPlan.setLastPaid(c.getTime()); mobileClubBillingPlan.setPushCount(mobileClubBillingPlan.getPushCount() + 1); //Date nextPush = new Date(); if (mobileClubBillingPlan.getLastPush().before(mobileClubBillingPlan.getSubscribed())) { mobileClubBillingPlan.setLastPush(new Date()); } if (mobileClubBillingPlan.getServiceDateBillsRemaining() > 0) { mobileClubBillingPlan.setServiceDateBillsRemaining( mobileClubBillingPlan.getServiceDateBillsRemaining() - 1); } Date nextPush = DateUtils.addDays(mobileClubBillingPlan.getLastPush(), 7); nextPush = DateUtils.setHours(nextPush, 9); nextPush = DateUtils.truncate(nextPush, Calendar.HOUR_OF_DAY); mobileClubBillingPlan.setNextPush(nextPush); mobileClubBillingPlan.setLastSuccess(new Date()); /* @Date- 2016-04-05 @Author Madan Trying weeks of subscription and their success */ //=========== START WEEK Calculation for User Total Bill ==================== try { Date subscribedDate = clubUser.getSubscribed(); Date today = new Date(); DateTime dateTime1 = new DateTime(subscribedDate); DateTime dateTime2 = new DateTime(today); int weeks = Weeks.weeksBetween(dateTime1, dateTime2).getWeeks(); int totalSuccess = billingplandao.getTotalSuccess(clubUser.getParsedMobile(), clubUser.getClubUnique()); int pendingTickets = 0; int successfrequency = weeks * 3; //We need to use Frequency here... if (totalSuccess == successfrequency) // User is upto-date { mobileClubBillingPlan.setServiceDateBillsRemaining(0.0); mobileClubBillingPlan.setLastPaid(new Date()); } else if (totalSuccess < successfrequency) { //UnderBill Users pendingTickets = successfrequency - totalSuccess; if (pendingTickets >= 3) { mobileClubBillingPlan.setServiceDateBillsRemaining(3.0); } else if (pendingTickets < 3 && pendingTickets > 1) { mobileClubBillingPlan.setServiceDateBillsRemaining(2.0); } else { mobileClubBillingPlan.setServiceDateBillsRemaining(1.0); } nextPush = DateUtils.addDays(mobileClubBillingPlan.getLastPush(), 1); nextPush = DateUtils.setHours(nextPush, 9); nextPush = DateUtils.truncate(nextPush, Calendar.HOUR_OF_DAY); mobileClubBillingPlan.setNextPush(nextPush); } else if (totalSuccess > successfrequency) { //overbill users Or can be ok due to week calculation. mobileClubBillingPlan.setLastPaid(new Date()); int weekdifference = (totalSuccess - successfrequency) / 3; nextPush = DateUtils.addWeeks(mobileClubBillingPlan.getLastPush(), weekdifference); //Adding not to overbill continuously mobileClubBillingPlan.setNextPush(nextPush); } System.out.println("weeks IT Billing -- " + clubUser.getParsedMobile() + "-- " + clubUser.getClubUnique() + "-- " + clubUser.getSubscribed() + "-- no. of weeks " + weeks + " noofsuccess " + totalSuccess + " successfrequency " + successfrequency + " pending tickets " + pendingTickets + " ------- "); } catch (Exception e) { } //=============End Calculating the User's Week of billings ================================= umeMobileClubUserDao.updateBillingRenew(clubUser.getUserUnique(), club.getUnique()); billingplandao.update(mobileClubBillingPlan); MobileClubBillingSuccesses mobileClubBillingSuccesses = new MobileClubBillingSuccesses( mobileClubBillingPlan, mobileClubBillingTry); try { mobilebillingdao.insertBillingSuccess(mobileClubBillingSuccesses); mobilebillingdao.insertBillingTry(mobileClubBillingTry); } catch (Exception e) { } } QuizUserAttempted quizUserAttempted = new QuizUserAttempted(); quizUserAttempted.setaParsedMsisdn(msisdn); quizUserAttempted.setClubUnique(club.getUnique()); quizUserAttempted.setType("Entry Confirmation"); quizUserAttempted.setStatus("true"); quizUserAttempted.setaUnique(String.valueOf(transactionId)); quizUserAttempted.setaCreated(new Date()); umequizdao.saveQuizUserAttempted(quizUserAttempted); } //END thirdbillable user!=null //===================================================================== } //End of third billable CpaVisitLog visitorLog = cpavisitlogdao.getDetails(msisdn, clubUser.getCampaign()); if (visitorLog != null) { String campaignId = visitorLog.getaCampaignId(); if (null != campaignId && !"".equals(campaignId)) { MobileClubCampaign cmpg = UmeTempCmsCache.campaignMap.get(campaignId); if (cmpg != null) { if (cmpg.getSrc().toLowerCase().endsWith("cpa") && cmpg.getCpaType().equalsIgnoreCase("billing")) { // 2016.01.13 - AS - Removed commented code, check repo history if needed if (cpaLog) { // 2016.01.13 - AS - Removed commented code, check repo history if needed int insertedRows = cpaloggerdao.insertIntoCpaLogging(msisdn, campaignId, club.getUnique(), 10, clubUser.getNetworkCode(), cmpg.getSrc()); } } } } } } //End smsrecord!=null } //end if report equals delivered else { //FOR ALL FAILURE SdcSmsSubmit smsrecord = quizsmsdao.getSmsMsgLog(id); if (smsrecord != null && smsrecord.getMsgType().equalsIgnoreCase("premium")) { UmeUser user = null; MobileClubBillingPlan mobileClubBillingPlan = null; SdcMobileClubUser clubUser = null; String userUnique = ""; try { userUnique = umeuserdao.getUserUnique(msisdn, "msisdn", defClubDomain); } catch (Exception e) { System.out.println("IT Exception for at line 404 EngageDR " + msisdn); e.printStackTrace(); } if (!userUnique.equals("")) { user = umeuserdao.getUser(msisdn); } if (user != null) { clubUser = user.getClubMap().get(club.getUnique()); if (clubUser == null) { clubUser = umeMobileClubUserDao.getClubUserByMsisdn(msisdn, club.getUnique()); } } if (clubUser != null) { mobileClubBillingPlan = billingplandao.getAnyStatusBillingPlanByMsisdnAndClubUnique(msisdn, club.getUnique()); } String biloggednetwork = "unknown"; try { biloggednetwork = mobilenetwork.getMobileNetwork("IT", clubUser.getNetworkCode()); } catch (Exception e) { biloggednetwork = "unknown"; } if (report.equals("REJECTED")) {// || report.equals("INVALID_MSISDN")){ //DEACtivate user as we can't bill them if (clubUser != null && clubUser.getActive() == 1) { // 2016-05-10 Alex Sanchez if (smsrecord != null) { MobileClubBillingTry mobileClubBillingTry = new MobileClubBillingTry(); mobileClubBillingTry.setUnique(id); mobileClubBillingTry.setLogUnique(id); mobileClubBillingTry.setAggregator("TXT"); mobileClubBillingTry.setClubUnique(club.getUnique()); mobileClubBillingTry.setCreated(new Date()); mobileClubBillingTry.setNetworkCode(biloggednetwork.toLowerCase()); mobileClubBillingTry.setParsedMsisdn(msisdn); mobileClubBillingTry.setRegionCode(club.getRegion().toUpperCase()); mobileClubBillingTry.setResponseCode("99"); mobileClubBillingTry.setResponseDesc(report.toLowerCase()); mobileClubBillingTry.setResponseRef(transactionId); mobileClubBillingTry.setStatus("fail"); mobileClubBillingTry.setTransactionId(transactionId); mobileClubBillingTry.setCampaign(clubUser.getCampaign()); mobileClubBillingTry.setTariffClass(club.getPrice()); mobilebillingdao.insertBillingTry(mobileClubBillingTry); //stopuser.stopSingleSubscription(msisdn, club.getUnique(), null, null); /* SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String unSubscribed = sdf2.format(new Date()); clubUser.setActive(0); clubUser.setUnsubscribed(SdcMiscDate.parseSqlDateString(unSubscribed)); umemobileclubuserdao.saveItem(clubUser); String stop = "STOP"; try { if (DateUtils.isSameDay(clubUser.getSubscribed(), clubUser.getUnsubscribed())) { stop = "STOPFD"; } campaigndao.log("ITdr", clubUser.getLandingpage(), clubUser.getParsedMobile(), clubUser.getParsedMobile(), null, null, clubUser.getCampaign(), clubUser.getClubUnique(), stop, 0, null, null, biloggednetwork.toLowerCase()); } catch (Exception e) { System.out.println("Exception EngageDr while campaignlog for stops " + e); e.printStackTrace(); } //umemobileclubuserdao.disable(clubUser.getUnique()); if (mobileClubBillingPlan != null) { billingplandao.disableBillingPlan(msisdn, club.getUnique()); } */ // 2016-05-10 Alex Sanchez } //end smsrecord!=null } // If ClubUser is active } //end rejected or invalid msisdn else if (report.equalsIgnoreCase("ACKNOWLEDGED") || report.equalsIgnoreCase("ACCEPTED")) { //Don't do anything here as nextpush will be 7 days set from billing daemon //This is treated as the msg might have been delivered !! We will receive //notification of Delivered later on. } else { //For all other //NO_CREDIT, FAILED,VALIDITY_EXPIRED,UNKNOWN,OPERATOR_ERROR //DATETIME SCHEDULER FOR FAILURE Calendar cal = Calendar.getInstance(); cal.setTime(new Date()); cal.add(Calendar.HOUR, 3); //cal.add(Calendar.HOUR, 72); if (cal.get(Calendar.HOUR_OF_DAY) > 18) { cal.add(Calendar.DATE, 1); cal.set(Calendar.HOUR_OF_DAY, 9); } else if (cal.get(Calendar.HOUR_OF_DAY) > 12) { cal.set(Calendar.HOUR_OF_DAY, 18); } else if (cal.get(Calendar.HOUR_OF_DAY) > 9) { cal.set(Calendar.HOUR_OF_DAY, 12); } else { cal.set(Calendar.HOUR_OF_DAY, 9); } cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); MobileClubBillingTry mobileClubBillingTry = new MobileClubBillingTry(); mobileClubBillingTry.setUnique(id); mobileClubBillingTry.setLogUnique(id); mobileClubBillingTry.setAggregator("ipx"); mobileClubBillingTry.setClubUnique(club.getUnique()); mobileClubBillingTry.setCreated(new Date()); mobileClubBillingTry.setNetworkCode(biloggednetwork.toLowerCase()); mobileClubBillingTry.setParsedMsisdn(msisdn); mobileClubBillingTry.setRegionCode(club.getRegion().toUpperCase()); mobileClubBillingTry.setResponseCode("51"); mobileClubBillingTry.setResponseDesc("Insufficient Funds"); mobileClubBillingTry.setResponseRef(transactionId); mobileClubBillingTry.setStatus("fail"); mobileClubBillingTry.setTransactionId(transactionId); mobileClubBillingTry.setCampaign(clubUser.getCampaign()); mobileClubBillingTry.setTariffClass(club.getPrice()); mobilebillingdao.insertBillingTry(mobileClubBillingTry); if (mobileClubBillingPlan != null) { //Calendar cal = Calendar.getInstance(); //cal.setTime(new Date()); //mobileClubBillingPlan.setLastPush(cal.getTime()); mobileClubBillingPlan.setNextPush(cal.getTime()); mobileClubBillingPlan.setPushCount(mobileClubBillingPlan.getPushCount() + 1); //cal.add(Calendar.HOUR_OF_DAY, 12); System.out.println( "ITMODR == FAILED BILLING UPDATE to " + mobileClubBillingPlan.getParsedMobile() + " --- " + mobileClubBillingPlan.getNextPush()); billingplandao.update(mobileClubBillingPlan);//, cal.getTime()); } } //end for all the failures } //END if smsrecord!=null or Premium } // end ELSE } }
From source file:ume.pareva.veeo.VeeoDR.java
/** * Processes requests for both HTTP <code>GET</code> and <code>POST</code> * methods.// w w w . ja va 2 s. c o m * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs action mp_report id the unique * message id number number the originating telephone number report the * delivery report (e.g. delivered/acked/failed) * Status * 1: delivery success Delivered to handset * 2: delivery failure Message failed * 4: message buffered Message in queue * 8: smsc submit Submitted to SMSC * 16: smsc reject Rejected by SMSC * 32: (smsc intermediate notifications) Non-final statuses */ protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); Calendar deliverytime = new GregorianCalendar(); String serviceId = "6119598063441KDS"; String defClubDomain = "5510024809921CDS"; String transactionId = Misc.generateUniqueIntegerId() + ""; boolean cpaqueue = true; Enumeration parameterList = request.getParameterNames(); while (parameterList.hasMoreElements()) { String sName = parameterList.nextElement().toString(); System.out.println("VeeoDR: callback VeeoDR " + sName + ":" + request.getParameter(sName)); } Map<String, String> callbackMap = mappingUtil.mapRequestToCallback(request); String id = callbackMap.get("id"); String report = callbackMap.get("status"); // This can be DELIVERED, ACKNOWLEDGED, FAILED String msisdn = callbackMap.get("msisdn"); if (id.contains("-")) { serviceId = getClubId(id, "-").trim(); System.out.println("VeeoDR INSIDE - condition SERVICE ID IS " + serviceId); } MobileClub club = UmeTempCmsCache.mobileClubMap.get(serviceId); UmeClubDetails clubdetail = UmeTempCmsCache.umeClubDetailsMap.get(club.getUnique()); quizsmsdao.updateResponse(id, report, sdf.format(deliverytime.getTime()), report, ""); umesmsdao.updateResponse(id, report, sdf.format(deliverytime.getTime()), report, ""); if (report.equals("1")) { MobileClubBillingPlan mobileClubBillingPlan = null; String successResponse = "00"; SdcSmsSubmit smsrecord = quizsmsdao.getSmsMsgLog(id); if (smsrecord != null && smsrecord.getMsgType().equalsIgnoreCase("premium")) { //====================== USER- CLUBUSER - BILLING PLANS =============================== UmeUser user = null; SdcMobileClubUser clubUser = null; String userUnique = umeuserdao.getUserUnique(msisdn, "msisdn", defClubDomain); if (!userUnique.equals("")) { user = umeuserdao.getUser(msisdn); } if (user != null) { clubUser = user.getClubMap().get(club.getUnique()); if (clubUser == null) { clubUser = umemobileclubuserdao.getClubUserByMsisdn(msisdn, club.getUnique()); } if (clubUser != null) { mobileClubBillingPlan = billingplandao.getActiveBillingPlanByMsisdnAndClubUnique(msisdn, club.getUnique()); //System.out.println("IEBillingSuccess BillingPlan is " + mobileClubBillingPlan.toString()); } } //====================== USER- CLUBUSER - BILLING PLANS =============================== boolean cpaLog = false; if (smsrecord.getLogUnique().equals(id) && smsrecord.getMsgType().equalsIgnoreCase("premium")) { //Billable //=================================================================== if (user != null && clubUser != null) { //boolean cpaLog = false; //BillingTry Logging for first success if (DateUtils.isSameDay(new Date(), clubUser.getSubscribed())) { successResponse = "003"; cpaLog = true; } String biloggednetwork = mobilenetwork.getMobileNetwork(club.getRegion().toUpperCase(), clubUser.getNetworkCode()); MobileClubBillingTry mobileClubBillingTry = new MobileClubBillingTry(); mobileClubBillingTry.setUnique(id); mobileClubBillingTry.setLogUnique(id); mobileClubBillingTry.setAggregator("TXT"); mobileClubBillingTry.setClubUnique(club.getUnique()); mobileClubBillingTry.setCreated(new Date()); mobileClubBillingTry.setNetworkCode(biloggednetwork.toLowerCase()); mobileClubBillingTry.setParsedMsisdn(msisdn); mobileClubBillingTry.setRegionCode(club.getRegion().toUpperCase()); mobileClubBillingTry.setResponseCode(successResponse); mobileClubBillingTry.setResponseDesc("successful"); mobileClubBillingTry.setResponseRef(transactionId); mobileClubBillingTry.setStatus("success"); mobileClubBillingTry.setTariffClass(club.getPrice()); mobileClubBillingTry.setTransactionId(transactionId); mobileClubBillingTry.setCampaign(clubUser.getCampaign()); //End BillingTry Logging if (mobileClubBillingPlan != null) { Calendar c = Calendar.getInstance(); mobileClubBillingPlan.setLastSuccess(c.getTime()); mobileClubBillingPlan.setLastPaid(c.getTime()); mobileClubBillingPlan.setPushCount(mobileClubBillingPlan.getPushCount() + 1); //Date nextPush = new Date(); if (mobileClubBillingPlan.getLastPush().before(mobileClubBillingPlan.getSubscribed())) { mobileClubBillingPlan.setLastPush(new Date()); } if (mobileClubBillingPlan.getServiceDateBillsRemaining() > 0) { mobileClubBillingPlan.setServiceDateBillsRemaining( mobileClubBillingPlan.getServiceDateBillsRemaining() - 1); } Date nextPush = DateUtils.addDays(mobileClubBillingPlan.getLastPush(), 7); nextPush = DateUtils.setHours(nextPush, 9); nextPush = DateUtils.truncate(nextPush, Calendar.HOUR_OF_DAY); mobileClubBillingPlan.setNextPush(nextPush); mobileClubBillingPlan.setLastSuccess(new Date()); if (clubdetail.getBillingType().equalsIgnoreCase("Adhoc")) { Calendar cal = Calendar.getInstance(); cal.setTime(new Date()); cal.add(Calendar.HOUR, 1); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); mobileClubBillingPlan.setNextPush(cal.getTime()); if (mobileClubBillingPlan.getServiceDateBillsRemaining() > 0D) { mobileClubBillingPlan.setServiceDateBillsRemaining( mobileClubBillingPlan.getServiceDateBillsRemaining() - 1); } if ((mobileClubBillingPlan.getPartialsRequired() - mobileClubBillingPlan.getServiceDateBillsRemaining()) <= 2) { cpaqueue = true; } else { cpaqueue = false; } System.out.println("IEMODR == ADHOC BILLING UPDATE to " + mobileClubBillingPlan.getParsedMobile() + " --- " + mobileClubBillingPlan.getNextPush()); } else { /* @Date- 2016-04-05 @Author Madan Trying weeks of subscription and their success */ //=========== START WEEK Calculation for User Total Bill ==================== try { Date subscribedDate = clubUser.getSubscribed(); Date today = new Date(); DateTime dateTime1 = new DateTime(subscribedDate); DateTime dateTime2 = new DateTime(today); int weeks = Weeks.weeksBetween(dateTime1, dateTime2).getWeeks(); int totalSuccess = billingplandao.getTotalSuccessAfterEachSubscription( clubUser.getParsedMobile(), clubUser.getClubUnique(), clubUser.getSubscribed()); int pendingTickets = 0; int expectedSuccesses = weeks * clubdetail.getFrequency(); //We need to use Frequency here... if (totalSuccess == expectedSuccesses) { // User is upto-date mobileClubBillingPlan .setServiceDateBillsRemaining(clubdetail.getFrequency() * 1D); mobileClubBillingPlan.setLastPaid(new Date()); mobileClubBillingPlan.setNextPush(nextPush); } else if (totalSuccess < expectedSuccesses) { //UnderBill Users pendingTickets = expectedSuccesses - totalSuccess; if (pendingTickets >= clubdetail.getFrequency()) { mobileClubBillingPlan .setServiceDateBillsRemaining(1D + clubdetail.getFrequency()); } else { mobileClubBillingPlan.setServiceDateBillsRemaining(1D * pendingTickets); } nextPush = DateUtils.addHours(new Date(), 1); //nextPush = DateUtils.setHours(nextPush, 9); //nextPush = DateUtils.truncate(nextPush, Calendar.HOUR_OF_DAY); mobileClubBillingPlan.setNextPush(nextPush); } else if (totalSuccess > expectedSuccesses) { //overbill users Or can be ok due to week calculation. mobileClubBillingPlan.setLastPaid(new Date()); int weekdifference = (totalSuccess - expectedSuccesses) / clubdetail.getFrequency(); nextPush = DateUtils.addWeeks(mobileClubBillingPlan.getLastPush(), weekdifference); //Adding not to overbill continuously mobileClubBillingPlan.setNextPush(nextPush); } if (!mobileClubBillingPlan.getExternalId().toLowerCase().startsWith("adhoc")) { Date billingEnd = DateUtils.addDays(nextPush, 7); mobileClubBillingPlan.setBillingEnd(billingEnd); } System.out.println("weeks VEEO Billing -- " + clubUser.getParsedMobile() + "-- " + clubUser.getClubUnique() + "-- " + clubUser.getSubscribed() + "-- no. of weeks " + weeks + " noofsuccess " + totalSuccess + " successfrequency " + expectedSuccesses + " pending tickets " + pendingTickets + " ------- "); } catch (Exception e) { } //=============End Calculating the User's Week of billings ================================= } umemobileclubuserdao.updateBillingRenew(clubUser.getUserUnique(), club.getUnique()); billingplandao.update(mobileClubBillingPlan); MobileClubBillingSuccesses mobileClubBillingSuccesses = new MobileClubBillingSuccesses( mobileClubBillingPlan, mobileClubBillingTry); try { mobilebillingdao.insertBillingSuccess(mobileClubBillingSuccesses); mobilebillingdao.insertBillingTry(mobileClubBillingTry); } catch (Exception e) { } } // QuizUserAttempted quizUserAttempted = new QuizUserAttempted(); // quizUserAttempted.setaParsedMsisdn(msisdn); // quizUserAttempted.setClubUnique(club.getUnique()); // quizUserAttempted.setType("Entry Confirmation"); // quizUserAttempted.setStatus("true"); // quizUserAttempted.setaUnique(String.valueOf(transactionId)); // quizUserAttempted.setaCreated(new Date()); // umequizdao.saveQuizUserAttempted(quizUserAttempted); } //END thirdbillable user!=null //===================================================================== } //End of third billable CpaVisitLog visitorLog = cpavisitlogdao.getDetails(msisdn, clubUser.getCampaign()); if (visitorLog != null && cpaqueue) { String campaignId = visitorLog.getaCampaignId(); if (null != campaignId && !"".equals(campaignId)) { MobileClubCampaign cmpg = UmeTempCmsCache.campaignMap.get(campaignId); if (cmpg != null) { if (cmpg.getSrc().toLowerCase().endsWith("cpa") && cmpg.getCpaType().equalsIgnoreCase("billing")) { // 2016.01.13 - AS - Removed commented code, check repo history if needed if (cpaLog) { // 2016.01.13 - AS - Removed commented code, check repo history if needed int insertedRows = cpaloggerdao.insertIntoCpaLogging(msisdn, campaignId, club.getUnique(), 10, clubUser.getNetworkCode(), cmpg.getSrc()); } } } } } } //End smsrecord!=null } //end if report equals delivered else { //FOR ALL FAILURE SdcSmsSubmit smsrecord = quizsmsdao.getSmsMsgLog(id); if (smsrecord != null && smsrecord.getMsgType().equalsIgnoreCase("premium")) { UmeUser user = null; MobileClubBillingPlan mobileClubBillingPlan = null; SdcMobileClubUser clubUser = null; String userUnique = ""; try { userUnique = umeuserdao.getUserUnique(msisdn, "msisdn", defClubDomain); } catch (Exception e) { System.out.println("IE Exception for at line 365 EngageDR " + msisdn); e.printStackTrace(); } if (!userUnique.equals("")) { user = umeuserdao.getUser(msisdn); } if (user != null) { clubUser = user.getClubMap().get(club.getUnique()); if (clubUser == null) { clubUser = umemobileclubuserdao.getClubUserByMsisdn(msisdn, club.getUnique()); } } if (clubUser != null) { mobileClubBillingPlan = billingplandao.getActiveBillingPlanByMsisdnAndClubUnique(msisdn, club.getUnique()); } String biloggednetwork = "unknown"; try { biloggednetwork = mobilenetwork.getMobileNetwork("IE", clubUser.getNetworkCode()); } catch (Exception e) { biloggednetwork = "unknown"; } if (report.equals("REJECTED")) {// || report.equals("INVALID_MSISDN")){ //DEACtivate user as we can't bill them if (clubUser != null && clubUser.getActive() == 1) { // 2016-05-10 Alex Sanchez if (smsrecord != null) { MobileClubBillingTry mobileClubBillingTry = new MobileClubBillingTry(); mobileClubBillingTry.setUnique(id); mobileClubBillingTry.setLogUnique(id); mobileClubBillingTry.setAggregator("TXT"); mobileClubBillingTry.setClubUnique(club.getUnique()); mobileClubBillingTry.setCreated(new Date()); mobileClubBillingTry.setNetworkCode(biloggednetwork.toLowerCase()); mobileClubBillingTry.setParsedMsisdn(msisdn); mobileClubBillingTry.setRegionCode(club.getRegion().toUpperCase()); mobileClubBillingTry.setResponseCode("99"); mobileClubBillingTry.setResponseDesc(report.toLowerCase()); mobileClubBillingTry.setResponseRef(transactionId); mobileClubBillingTry.setStatus("fail"); mobileClubBillingTry.setTransactionId(transactionId); mobileClubBillingTry.setCampaign(clubUser.getCampaign()); mobileClubBillingTry.setTariffClass(club.getPrice()); mobilebillingdao.insertBillingTry(mobileClubBillingTry); //stopuser.stopSingleSubscription(msisdn, club.getUnique(), null, null); /* SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String unSubscribed = sdf2.format(new Date()); clubUser.setActive(0); clubUser.setUnsubscribed(SdcMiscDate.parseSqlDateString(unSubscribed)); umemobileclubuserdao.saveItem(clubUser); String stop = "STOP"; try { if (DateUtils.isSameDay(clubUser.getSubscribed(), clubUser.getUnsubscribed())) { stop = "STOPFD"; } campaigndao.log("iedr", clubUser.getLandingpage(), clubUser.getParsedMobile(), clubUser.getParsedMobile(), null, null, clubUser.getCampaign(), clubUser.getClubUnique(), stop, 0, null, null, biloggednetwork.toLowerCase()); } catch (Exception e) { System.out.println("Exception EngageDr while campaignlog for stops " + e); e.printStackTrace(); } //umemobileclubuserdao.disable(clubUser.getUnique()); if (mobileClubBillingPlan != null) { billingplandao.disableBillingPlan(msisdn, club.getUnique()); } */ // 2016-05-10 Alex Sanchez } //end smsrecord!=null } // If ClubUser is active } //end rejected or invalid msisdn else if (report.equalsIgnoreCase("ACKNOWLEDGED") || report.equalsIgnoreCase("ACCEPTED")) { //Don't do anything here as nextpush will be 7 days set from billing daemon //This is treated as the msg might have been delivered !! We will receive //notification of Delivered later on. } else { //For all other //NO_CREDIT, FAILED,VALIDITY_EXPIRED,UNKNOWN,OPERATOR_ERROR //DATETIME SCHEDULER FOR FAILURE Calendar cal = Calendar.getInstance(); cal.setTime(new Date()); if (clubdetail.getPaymentType().equalsIgnoreCase("Adhoc")) { cal.set(Calendar.HOUR_OF_DAY, 21); } else { cal.add(Calendar.HOUR, 3); } //cal.add(Calendar.HOUR, 72); if (cal.get(Calendar.HOUR_OF_DAY) > 18) { cal.add(Calendar.DATE, 1); cal.set(Calendar.HOUR_OF_DAY, 9); } else if (cal.get(Calendar.HOUR_OF_DAY) > 12) { cal.set(Calendar.HOUR_OF_DAY, 18); } else if (cal.get(Calendar.HOUR_OF_DAY) > 9) { cal.set(Calendar.HOUR_OF_DAY, 12); } else { cal.set(Calendar.HOUR_OF_DAY, 9); } cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); MobileClubBillingTry mobileClubBillingTry = new MobileClubBillingTry(); mobileClubBillingTry.setUnique(id); mobileClubBillingTry.setLogUnique(id); mobileClubBillingTry.setAggregator("TXT"); mobileClubBillingTry.setClubUnique(club.getUnique()); mobileClubBillingTry.setCreated(new Date()); mobileClubBillingTry.setNetworkCode(biloggednetwork.toLowerCase()); mobileClubBillingTry.setParsedMsisdn(msisdn); mobileClubBillingTry.setRegionCode(club.getRegion().toUpperCase()); mobileClubBillingTry.setResponseCode("51"); mobileClubBillingTry.setResponseDesc("Insufficient Funds"); mobileClubBillingTry.setResponseRef(transactionId); mobileClubBillingTry.setStatus("fail"); mobileClubBillingTry.setTransactionId(transactionId); mobileClubBillingTry.setCampaign(clubUser.getCampaign()); mobileClubBillingTry.setTariffClass(club.getPrice()); mobilebillingdao.insertBillingTry(mobileClubBillingTry); if (mobileClubBillingPlan != null) { //Calendar cal = Calendar.getInstance(); //cal.setTime(new Date()); //mobileClubBillingPlan.setLastPush(cal.getTime()); mobileClubBillingPlan.setNextPush(cal.getTime()); mobileClubBillingPlan.setPushCount(mobileClubBillingPlan.getPushCount() + 1); //cal.add(Calendar.HOUR_OF_DAY, 12); System.out.println( "VEEODR == FAILED BILLING UPDATE to " + mobileClubBillingPlan.getParsedMobile() + " --- " + mobileClubBillingPlan.getNextPush()); billingplandao.update(mobileClubBillingPlan);//, cal.getTime()); } } //end for all the failures } //END if smsrecord!=null or Premium } // end ELSE }