1 16 17 18 41 package com.opensourcestrategies.crmsfa.activities; 42 43 import java.util.Map ; 44 import java.util.List ; 45 import java.util.ArrayList ; 46 import java.util.Iterator ; 47 import java.sql.Timestamp ; 48 49 import org.ofbiz.base.util.Debug; 50 import org.ofbiz.base.util.UtilMisc; 51 import org.ofbiz.base.util.UtilDateTime; 52 import org.ofbiz.entity.GenericDelegator; 53 import org.ofbiz.entity.GenericValue; 54 import org.ofbiz.entity.GenericEntityException; 55 import org.ofbiz.entity.condition.EntityConditionList; 56 import org.ofbiz.entity.condition.EntityExpr; 57 import org.ofbiz.entity.condition.EntityOperator; 58 import org.ofbiz.entity.util.EntityFindOptions; 59 import org.ofbiz.entity.util.EntityUtil; 60 import org.ofbiz.entity.util.EntityListIterator; 61 62 import com.opensourcestrategies.crmsfa.party.PartyHelper; 63 64 70 public class UtilActivity { 71 72 public static final String module = UtilActivity.class.getName(); 73 74 public static List ACT_STATUSES_PENDING = null; 76 public static List ACT_STATUSES_COMPLETED = null; 77 static { 78 ACT_STATUSES_COMPLETED = UtilMisc.toList("TASK_COMPLETED", "TASK_CANCELLED", "TASK_REJECTED", "EVENT_COMPLETED", "EVENT_CANCELLED", "EVENT_REJECTED"); 79 ACT_STATUSES_PENDING = UtilMisc.toList("TASK_SCHEDULED", "TASK_CONFIRMED", "TASK_ON_HOLD", "EVENT_SCHEDULED", "EVENT_CONFIRMED", "EVENT_ON_HOLD"); 80 ACT_STATUSES_PENDING.add("TASK_STARTED"); 81 ACT_STATUSES_PENDING.add("EVENT_STARTED"); 82 } 83 84 88 public static List getActivityParties(GenericDelegator delegator, String workEffortId) throws GenericEntityException { 89 List roleCondList = new ArrayList (); 91 for (Iterator iter = PartyHelper.CLIENT_PARTY_ROLES.iterator(); iter.hasNext(); ) { 92 String roleTypeId = (String ) iter.next(); 93 roleCondList.add(new EntityExpr("roleTypeId", EntityOperator.EQUALS, roleTypeId)); 94 } 95 EntityConditionList roleEntityCondList = new EntityConditionList(roleCondList, EntityOperator.OR); 96 97 EntityConditionList mainCondList = new EntityConditionList(UtilMisc.toList( 99 roleEntityCondList, 100 new EntityExpr("workEffortId", EntityOperator.EQUALS, workEffortId), 101 EntityUtil.getFilterByDateExpr() 102 ), EntityOperator.AND); 103 104 EntityListIterator partiesIt = delegator.findListIteratorByCondition("WorkEffortPartyAssignment", mainCondList, null, 105 UtilMisc.toList("partyId"), null, new EntityFindOptions(true, EntityFindOptions.TYPE_SCROLL_INSENSITIVE, EntityFindOptions.CONCUR_READ_ONLY, true)); 108 return partiesIt.getCompleteList(); 109 } 110 111 116 public static void removeAllAssociationsForWorkEffort(String workEffortId, GenericDelegator delegator) throws GenericEntityException { 117 118 List oldAssocs = delegator.findByAnd("SalesOpportunityWorkEffort", UtilMisc.toMap("workEffortId", workEffortId)); 120 for (Iterator iter = oldAssocs.iterator(); iter.hasNext(); ) { 121 GenericValue old = (GenericValue) iter.next(); 122 old.remove(); 124 } 125 126 oldAssocs = delegator.findByAnd("CustRequestWorkEffort", UtilMisc.toMap("workEffortId", workEffortId)); 128 for (Iterator iter = oldAssocs.iterator(); iter.hasNext(); ) { 129 GenericValue old = (GenericValue) iter.next(); 130 old.remove(); 132 } 133 134 for (Iterator iter = PartyHelper.CLIENT_PARTY_ROLES.iterator(); iter.hasNext(); ) { 136 oldAssocs = EntityUtil.filterByDate(delegator.findByAnd("WorkEffortPartyAssignment", 137 UtilMisc.toMap("workEffortId", workEffortId, "roleTypeId", iter.next()))); 138 for (Iterator inner = oldAssocs.iterator(); inner.hasNext(); ) { 139 GenericValue assoc = (GenericValue) inner.next(); 140 assoc.set("thruDate", UtilDateTime.nowTimestamp()); 141 assoc.store(); 142 } 143 } 144 } 145 146 155 public static List getActivityConflicts(GenericValue userLogin, Timestamp start, Timestamp end, String workEffortId) throws GenericEntityException { 156 GenericDelegator delegator = userLogin.getDelegator(); 157 List conditions = UtilMisc.toList( 158 new EntityExpr("partyId", EntityOperator.EQUALS, userLogin.getString("partyId")), 159 new EntityConditionList( 160 UtilMisc.toList( 161 new EntityExpr("currentStatusId", EntityOperator.EQUALS, "EVENT_SCHEDULED"), 162 new EntityExpr("currentStatusId", EntityOperator.EQUALS, "TASK_SCHEDULED") 163 ), EntityOperator.OR 164 ), 165 new EntityExpr("statusId", EntityOperator.EQUALS, "PRTYASGN_ASSIGNED"), 166 new EntityConditionList( 167 UtilMisc.toList( 168 new EntityExpr("availabilityStatusId", EntityOperator.EQUALS, "WEPA_AV_BUSY"), 169 new EntityExpr("availabilityStatusId", EntityOperator.EQUALS, "WEPA_AV_AWAY") 170 ), EntityOperator.OR 171 ), 172 new EntityConditionList( 173 UtilMisc.toList( 174 EntityUtil.getFilterByDateExpr(start, "estimatedStartDate", "estimatedCompletionDate"), 175 EntityUtil.getFilterByDateExpr(end, "estimatedStartDate", "estimatedCompletionDate") 176 ), EntityOperator.OR 177 ) 178 ); 179 if (workEffortId != null) conditions.add(new EntityExpr("workEffortId", EntityOperator.NOT_EQUAL, workEffortId)); 180 EntityConditionList cond = new EntityConditionList(conditions, EntityOperator.AND); 181 return delegator.findByCondition("WorkEffortAndPartyAssign", cond, UtilMisc.toList("workEffortId"), null); 182 } 183 184 187 public static List getActivityConflicts(GenericValue userLogin, Timestamp start, Timestamp end) throws GenericEntityException { 188 return getActivityConflicts(userLogin, start, end, null); 189 } 190 191 195 public static boolean activityIsInactive(GenericValue activity) { 196 for (Iterator iter = ACT_STATUSES_COMPLETED.iterator(); iter.hasNext(); ) { 197 if (iter.next().equals(activity.getString("currentStatusId"))) { 198 return true; 199 } 200 } 201 return false; 202 } 203 } 204 | Popular Tags |