You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by si...@apache.org on 2006/08/26 01:59:23 UTC

svn commit: r437027 - in /incubator/ofbiz/trunk/applications: marketing/config/ marketing/entitydef/ marketing/webapp/marketing/contact/ party/src/org/ofbiz/party/communication/

Author: sichen
Date: Fri Aug 25 16:59:22 2006
New Revision: 437027

URL: http://svn.apache.org/viewvc?rev=437027&view=rev
Log:
OFBIZ 182 - Add singleUse indicator to ContactList to allow for lists whose members should be contacted only once.  Updated sendCommEventAsEmail to expire ContactListParty if singleUse = 'Y'.

Modified:
    incubator/ofbiz/trunk/applications/marketing/config/MarketingUiLabels.properties
    incubator/ofbiz/trunk/applications/marketing/entitydef/entitymodel.xml
    incubator/ofbiz/trunk/applications/marketing/webapp/marketing/contact/ContactListForms.xml
    incubator/ofbiz/trunk/applications/party/src/org/ofbiz/party/communication/CommunicationEventServices.java

Modified: incubator/ofbiz/trunk/applications/marketing/config/MarketingUiLabels.properties
URL: http://svn.apache.org/viewvc/incubator/ofbiz/trunk/applications/marketing/config/MarketingUiLabels.properties?rev=437027&r1=437026&r2=437027&view=diff
==============================================================================
--- incubator/ofbiz/trunk/applications/marketing/config/MarketingUiLabels.properties (original)
+++ incubator/ofbiz/trunk/applications/marketing/config/MarketingUiLabels.properties Fri Aug 25 16:59:22 2006
@@ -28,6 +28,7 @@
 ContactListContactMechTypeId=Contact Mechanisism Type Id
 ContactListCreate=Create New Contact List
 ContactListIsPublic=Is Public ?
+ContactListIsSingleUse=Is Single Use ?
 ContactListOptInVerifyCode=Opt-In Verify Code
 ContactListOwnerPartyId=Owner Party Id
 ContactListParty=Contact List Party

Modified: incubator/ofbiz/trunk/applications/marketing/entitydef/entitymodel.xml
URL: http://svn.apache.org/viewvc/incubator/ofbiz/trunk/applications/marketing/entitydef/entitymodel.xml?rev=437027&r1=437026&r2=437027&view=diff
==============================================================================
--- incubator/ofbiz/trunk/applications/marketing/entitydef/entitymodel.xml (original)
+++ incubator/ofbiz/trunk/applications/marketing/entitydef/entitymodel.xml Fri Aug 25 16:59:22 2006
@@ -146,6 +146,7 @@
       <field name="description" type="description"></field>
       <field name="comments" type="comment"></field>
       <field name="isPublic" type="indicator"></field>
+      <field name="singleUse" type="indicator"><description>Wether members of the list should be contacted only once.</description></field>
       <field name="ownerPartyId" type="id"></field>
       <field name="verifyEmailFrom" type="long-varchar"></field>
       <field name="verifyEmailScreen" type="long-varchar"></field>

Modified: incubator/ofbiz/trunk/applications/marketing/webapp/marketing/contact/ContactListForms.xml
URL: http://svn.apache.org/viewvc/incubator/ofbiz/trunk/applications/marketing/webapp/marketing/contact/ContactListForms.xml?rev=437027&r1=437026&r2=437027&view=diff
==============================================================================
--- incubator/ofbiz/trunk/applications/marketing/webapp/marketing/contact/ContactListForms.xml (original)
+++ incubator/ofbiz/trunk/applications/marketing/webapp/marketing/contact/ContactListForms.xml Fri Aug 25 16:59:22 2006
@@ -41,6 +41,11 @@
                 <option key="Y"/><option key="N"/>
             </drop-down>
         </field>
+        <field name="singleUse" title="${uiLabelMap.ContactListIsSingleUse}">
+            <drop-down allow-empty="true">
+                <option key="Y"/><option key="N"/>
+            </drop-down>
+        </field>
         
         <field name="contactMechTypeId" title="${uiLabelMap.ContactListContactMechTypeId}">
             <drop-down>
@@ -86,6 +91,7 @@
         </field>
         <field name="contactListName" title="${uiLabelMap.ContactListContactListName}"><display/></field>
         <field name="isPublic" title="${uiLabelMap.ContactListIsPublic}"><display/></field>
+        <field name="singleUse" title="${uiLabelMap.ContactListIsSingleUse}"><display/></field>
         <field name="contactListTypeId" title="${uiLabelMap.ContactListContactListTypeId}"><display-entity entity-name="ContactListType"/></field>
         
         <field name="contactMechTypeId" title="${uiLabelMap.ContactListContactMechTypeId}"><display-entity entity-name="ContactMechType"/></field>

Modified: incubator/ofbiz/trunk/applications/party/src/org/ofbiz/party/communication/CommunicationEventServices.java
URL: http://svn.apache.org/viewvc/incubator/ofbiz/trunk/applications/party/src/org/ofbiz/party/communication/CommunicationEventServices.java?rev=437027&r1=437026&r2=437027&view=diff
==============================================================================
--- incubator/ofbiz/trunk/applications/party/src/org/ofbiz/party/communication/CommunicationEventServices.java (original)
+++ incubator/ofbiz/trunk/applications/party/src/org/ofbiz/party/communication/CommunicationEventServices.java Fri Aug 25 16:59:22 2006
@@ -23,8 +23,10 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Locale;
+import java.sql.Timestamp;
 
 import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.UtilDateTime;
 import org.ofbiz.base.util.UtilMisc;
 import org.ofbiz.base.util.UtilProperties;
 import org.ofbiz.entity.GenericDelegator;
@@ -110,6 +112,10 @@
                 // there's actually a contact list here, so we want to be sending to the entire contact list
                 GenericValue contactList = communicationEvent.getRelatedOne("ContactList");
 
+                // set up some variables for single use lists
+                boolean singleUse = ("Y".equals(contactList.get("singleUse")) ? true : false);
+                Timestamp now = UtilDateTime.nowTimestamp();
+
                 // find active, ACCEPTED parties in the contact list using a list iterator (because there can be a large number)
                 EntityConditionList conditions = new EntityConditionList( UtilMisc.toList(
                             new EntityExpr("contactListId", EntityOperator.EQUALS, contactList.get("contactListId")),
@@ -117,7 +123,7 @@
                             new EntityExpr("preferredContactMechId", EntityOperator.NOT_EQUAL, null),
                             EntityUtil.getFilterByDateExpr()
                             ), EntityOperator.AND);
-                List fieldsToSelect = UtilMisc.toList("partyId", "preferredContactMechId");
+                List fieldsToSelect = UtilMisc.toList("partyId", "preferredContactMechId", "contactListId", "fromDate");
                 EntityListIterator sendToPartiesIt = delegator.findListIteratorByCondition("ContactListParty", conditions,  null, fieldsToSelect, null,
                         new EntityFindOptions(true, EntityFindOptions.TYPE_SCROLL_INSENSITIVE, EntityFindOptions.CONCUR_READ_ONLY, true));
                 
@@ -136,7 +142,16 @@
                     Map tmpResult = dispatcher.runSync("sendMail", sendMailParams);
                     if (ServiceUtil.isError(tmpResult)) {
                         errorMessages.add(ServiceUtil.getErrorMessage(tmpResult));
+                    } else if (singleUse) {
+                        // expire the ContactListParty if the list is single use and sendEmail finishes successfully
+                        tmpResult = dispatcher.runSync("updateContactListParty", UtilMisc.toMap("contactListId", nextSendToParty.get("contactListId"),
+                                    "partyId", nextSendToParty.get("partyId"), "fromDate", nextSendToParty.get("fromDate"),
+                                    "thruDate", now, "userLogin", userLogin));
+                        if (ServiceUtil.isError(tmpResult)) {
+                            errorMessages.add(ServiceUtil.getErrorMessage(tmpResult));
+                        }
                     }
+
                 }
                 sendToPartiesIt.close();
             }