Example usage for org.apache.commons.lang.time DateUtils isSameDay

List of usage examples for org.apache.commons.lang.time DateUtils isSameDay

Introduction

In this page you can find the example usage for org.apache.commons.lang.time DateUtils isSameDay.

Prototype

public static boolean isSameDay(Calendar cal1, Calendar cal2) 

Source Link

Document

Checks if two calendar objects are on the same day ignoring time.

28 Mar 2002 13:45 and 28 Mar 2002 06:01 would return true.

Usage

From source file:uk.ac.ebi.metabolights.repository.dao.StudyDAOSubmissionsTest.java

@Test
public void testCRUDStudy() throws Exception {

    File submissionFolder = getStudyFolderToSubmit("MTBLS1");

    Calendar cal = Calendar.getInstance();
    cal.add(Calendar.MONTH, 1);/*  w  w w  .  jav a  2 s . c  o  m*/
    Date publicReleaseDate = cal.getTime();

    Study study = studyDAO.add(submissionFolder, publicReleaseDate, curator.getApiToken());

    assertNotNull("studyAccession filled up", study.getStudyIdentifier());
    assertNotNull("Accession starts with prefix",
            study.getStudyIdentifier().startsWith(DAOFactory.getDefaultPrefix()));
    assertTrue("Public release date set properly",
            DateUtils.isSameDay(study.getStudyPublicReleaseDate(), publicReleaseDate));
    assertEquals("All files are moved", 0, submissionFolder.list().length);

    // Test READ...
    Study readStudy = studyDAO.getStudy(study.getStudyIdentifier(), curator.getApiToken());

    assertNotNull("Reading study just added", readStudy);

    // Test a failure submission
    File emptyInvestigationFile = new File(submissionFolder, "i_Investigation.txt");
    emptyInvestigationFile.createNewFile();

    try {
        studyDAO.update(submissionFolder, readStudy.getStudyIdentifier(), curator.getApiToken());
        assertTrue("Update with invalid isaTab files should throw an exception", false);
    } catch (IsaTabException e) {
        // Expected
    }

    // Test audit has happened
    File auditFolder = FileAuditUtil.getAuditFolder(uk.ac.ebi.metabolights.repository.dao.filesystem.StudyDAO
            .getDestinationFolder(readStudy.getStudyIdentifier()));

    // 3 subfolders should be created
    // 1 - i_Investigation file with the original file (add) (done when replacing ids)
    // 2 - i_Investigation file with updated id's and date (studyDAO.update()).
    // 3 - i_Investigation file original 2nd submission (empty one).
    assertEquals("Audit folder has 3 subfolders", 3, auditFolder.list().length);

    // Test the deletion
    testDeletion(readStudy);

}

From source file:uk.ac.ebi.metabolights.repository.dao.StudyDAOTest.java

@Test
public void testGetPublicStudy() throws DAOException, IsaTabException {

    Study study = studyDAO.getStudy(publicStudy.getAcc());

    assertEquals("Test DB part it's been populated: obfuscation code", publicStudy.getObfuscationcode(),
            study.getObfuscationCode());
    assertEquals("Test DB part it's been populated: study status", publicStudy.getStatus(),
            study.getStudyStatus().ordinal());
    assertNotNull("Test FS part it's been populated: study title", study.getTitle());
    assertTrue("Test release date is the one from the DB and not from the file",
            DateUtils.isSameDay(publicStudy.getReleaseDate(), study.getStudyPublicReleaseDate()));

}

From source file:uk.ac.ebi.metabolights.repository.dao.StudyDAOTest.java

@Test
public void testStatusesForSubmitter() throws Exception {

    // Get the full study
    Study study = studyDAO.getStudy(inconsistent.getAcc(), owner.getApiToken());

    assertEquals("Default status of a study must be submitted", LiteStudy.StudyStatus.SUBMITTED,
            study.getStudyStatus());/*from   w  ww. ja  va  2 s .  c  o  m*/

    // Change the statuses as owner
    Study savedStudy = updateStatus(study, owner, LiteStudy.StudyStatus.INCURATION, false);
    updateStatus(study, owner, LiteStudy.StudyStatus.INREVIEW, true);
    updateStatus(study, owner, LiteStudy.StudyStatus.PUBLIC, true);

    updateStatus(study, notOwner, LiteStudy.StudyStatus.SUBMITTED, true);
    updateStatus(study, notOwner, LiteStudy.StudyStatus.INCURATION, true);
    updateStatus(study, notOwner, LiteStudy.StudyStatus.INREVIEW, true);
    updateStatus(study, notOwner, LiteStudy.StudyStatus.PUBLIC, true);
    assertFalse("Public release date has been changed",
            DateUtils.isSameDay(new Date(), savedStudy.getStudyPublicReleaseDate()));

    // Change the status as curator
    updateStatus(study, curator, LiteStudy.StudyStatus.INCURATION, false);

    // Change the statuses as owner, shouldn't be allowed.
    updateStatus(study, owner, LiteStudy.StudyStatus.SUBMITTED, true);
    updateStatus(study, owner, LiteStudy.StudyStatus.INCURATION, true);
    updateStatus(study, owner, LiteStudy.StudyStatus.INREVIEW, true);
    updateStatus(study, owner, LiteStudy.StudyStatus.PUBLIC, true);

    updateStatus(study, notOwner, LiteStudy.StudyStatus.SUBMITTED, true);
    updateStatus(study, notOwner, LiteStudy.StudyStatus.INCURATION, true);
    updateStatus(study, notOwner, LiteStudy.StudyStatus.INREVIEW, true);
    updateStatus(study, notOwner, LiteStudy.StudyStatus.PUBLIC, true);
    assertFalse("Public release date has been changed",
            DateUtils.isSameDay(new Date(), savedStudy.getStudyPublicReleaseDate()));

    updateStatus(study, curator, LiteStudy.StudyStatus.INREVIEW, false);
    // Change the statuses as owner, shouldn't be allowed.
    updateStatus(study, owner, LiteStudy.StudyStatus.SUBMITTED, true);
    updateStatus(study, owner, LiteStudy.StudyStatus.INCURATION, true);
    updateStatus(study, owner, LiteStudy.StudyStatus.INREVIEW, true);
    updateStatus(study, owner, LiteStudy.StudyStatus.PUBLIC, true);

    updateStatus(study, notOwner, LiteStudy.StudyStatus.SUBMITTED, true);
    updateStatus(study, notOwner, LiteStudy.StudyStatus.INCURATION, true);
    updateStatus(study, notOwner, LiteStudy.StudyStatus.INREVIEW, true);
    updateStatus(study, notOwner, LiteStudy.StudyStatus.PUBLIC, true);

    assertFalse("Public release date has been changed",
            DateUtils.isSameDay(new Date(), savedStudy.getStudyPublicReleaseDate()));

    // Make it public
    savedStudy = updateStatus(study, curator, LiteStudy.StudyStatus.PUBLIC, false);

    assertTrue("Public release date not updated when changing study to public",
            DateUtils.isSameDay(new Date(), savedStudy.getStudyPublicReleaseDate()));

    // Change the statuses as owner, shouldn't be allowed.
    updateStatus(study, owner, LiteStudy.StudyStatus.SUBMITTED, true);
    updateStatus(study, owner, LiteStudy.StudyStatus.INCURATION, true);
    updateStatus(study, owner, LiteStudy.StudyStatus.INREVIEW, true);
    updateStatus(study, owner, LiteStudy.StudyStatus.PUBLIC, true);

    updateStatus(study, notOwner, LiteStudy.StudyStatus.SUBMITTED, true);
    updateStatus(study, notOwner, LiteStudy.StudyStatus.INCURATION, true);
    updateStatus(study, notOwner, LiteStudy.StudyStatus.INREVIEW, true);
    updateStatus(study, notOwner, LiteStudy.StudyStatus.PUBLIC, true);

    // Make study Private again
    updateStatus(study, curator, LiteStudy.StudyStatus.SUBMITTED, false);

    // Change the release date to yesterday
    studyDAO.updateReleaseDate(inconsistent.getAcc(), new Date(new Date().getTime() - DateUtils.MILLIS_PER_DAY),
            owner.getApiToken());

    // Make study INCURATION again
    savedStudy = updateStatus(study, owner, LiteStudy.StudyStatus.INCURATION, false);

    assertFalse("Public release date updated when changing study to INCURATION and date has passed",
            DateUtils.isSameDay(new Date(), savedStudy.getStudyPublicReleaseDate()));

    // Make study READY again this should change de public release date to today and the status to public
    updateStatus(savedStudy, curator, LiteStudy.StudyStatus.INREVIEW, false);

}

From source file:uk.ac.ebi.metabolights.repository.dao.StudyDAOTest.java

private Study updateStatus(Study study, UserData user, LiteStudy.StudyStatus newStatus,
        boolean exceptionExpected) throws IsaTabException {
    try {/*from w  w w .ja va  2 s . c  om*/
        // Should fail
        // Change the status to PUBLIC.
        studyDAO.updateStatus(study.getStudyIdentifier(), newStatus, user.getApiToken());

        if (exceptionExpected) {
            throw new AssertionError(
                    "User " + user.getUserName() + " should NOT be allowed to update the study status from "
                            + study.getStudyStatus() + " to " + newStatus);
        } else {

            // Check status has changed
            Study savedStudy = studyDAO.getStudy(study.getStudyIdentifier(), user.getApiToken());

            // For approved we need to check promotion to public.
            if (newStatus == LiteStudy.StudyStatus.INREVIEW
                    && study.getStudyPublicReleaseDate().before(new Date())) {

                assertTrue("Public release not updated when changing study to INREVIEW and date has passed",
                        DateUtils.isSameDay(new Date(), savedStudy.getStudyPublicReleaseDate()));
                assertEquals(
                        "Status not promoted to PUBLIC when changing study to INREVIEW and date has passed",
                        LiteStudy.StudyStatus.PUBLIC, savedStudy.getStudyStatus());

            } else {
                assertEquals("Study status hasn't been persisted", newStatus, savedStudy.getStudyStatus());
            }

            return savedStudy;
        }

    } catch (DAOException e) {

        if (exceptionExpected) {
            logger.info("Security exception expected");
        } else {
            throw new AssertionError(
                    "User " + user.getUserName() + " should be allowed to update the study status from "
                            + study.getStudyStatus() + " to " + newStatus);
        }
    }

    return null;
}

From source file:uk.ac.ebi.metabolights.webservice.model.StudySerializationTest.java

@Test
public void testSerialization() throws IOException {

    Study study = getTestStudy();/*from w  w  w .j a v a 2s.c om*/

    ObjectMapper mapper = new ObjectMapper();
    mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);

    String studyString = mapper.writeValueAsString(study);

    Assert.assertTrue("Test serialization of a title", studyString.contains("\"title\":\"title\""));

    // Test serialization of fields
    Assert.assertTrue("Test serialization of a fields", studyString.contains("\"header\":\"Field1\""));

    // Test serialization of users
    Assert.assertTrue("Test serialization of a users", studyString.contains("\"users\":[{"));

    // Test serialization of users, listofallstatus not serialized
    Assert.assertFalse("listofstatus is being serialized!", studyString.contains("listOfAllStatus"));

    // Test deserialisation now
    Study deserializedStudy = mapper.readValue(studyString, Study.class);

    Assert.assertTrue("Public release date is not properly kept during serialization and parsing.", DateUtils
            .isSameDay(study.getStudyPublicReleaseDate(), deserializedStudy.getStudyPublicReleaseDate()));

}

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);
    }// ww  w .j  ava  2 s  .  com
    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 ww  .  j a va2 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 

}