Advertisement
Guest User

Untitled

a guest
Sep 20th, 2017
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.18 KB | None | 0 0
  1.  
  2.     /*
  3.      * Calculate the last visit date for a list of accounts
  4.      */
  5.     public static void updateAccountLastVisits(Set<Id> accountIds) {
  6.         Set<Id> accountsToNull = new Set<Id>();
  7.         System.debug('Accounts: '+accountIds);
  8.         Map<Id, Account> accountsToUpdateMap = new Map<Id, Account>();
  9.  
  10.         for (AggregateResult ar : [
  11.                 select
  12.                     contact__r.accountId,
  13.                     visit__r.assigned_to__r.title,
  14.                     visit__r.visit_type__c,
  15.                     max(visit__r.end_date_time__c) maxdate
  16.                 from
  17.                     attendee__c
  18.                 where
  19.                     status__c = :MetadataConstants.ATTENDED_STATUS and
  20.                     contact__r.AccountId in :accountIds and
  21.                     visit__r.end_date_time__c <= today and
  22.                     (
  23.                         (
  24.                             visit__r.visit_type__c not in :MetadataConstants.EXCLUDED_ALL_VISIT_TYPES and visit__r.assigned_to__r.title in :MetadataConstants.EXCLUDED_ALL_TITLES)
  25.                         OR
  26.                         (
  27.                             visit__r.visit_type__c not in :MetadataConstants.EXCLUDED_PUBLIC_VISIT_TYPES and visit__r.assigned_to__r.title in :MetadataConstants.EXCLUDED_PUBLIC_TITLES))
  28.                 group by
  29.                     contact__r.accountId,
  30.                     visit__r.assigned_to__r.title,
  31.                     visit__r.visit_type__c]) {
  32.             System.debug('RRR3 Aggregate Result found: '+ar);
  33.             Id accountId = (Id)ar.get('accountId');
  34.             String ownerTitle = (String)ar.get('title');
  35.             DateTime maxDateTime = (DateTime)ar.get('maxdate');
  36.             String visitType = (String)ar.get('visit_type__c');
  37.             Date maxDate = maxDateTime == null ? null : maxDateTime.date();
  38.             System.debug('title is '+ownerTitle);
  39.             Boolean addAccount = false;
  40.            
  41.             Account a = accountsToUpdateMap.get(accountId) == null ? new Account(Id = accountId, DW_Office_Last_Visit_Date__c = null, IARM_Office_Last_Visit_Date__c = null, RPC_Office_Last_Visit_Date__c = null, WLSR_Office_Last_Visit_Date__c = null, Last_Visit_Date__c = null) : accountsToUpdateMap.get(accountId);
  42.             System.debug('a is '+a);
  43.             if (ownerTitle == MetadataConstants.TITLE_DW &&
  44.                     (
  45.                         a.DW_Office_Last_Visit_Date__c == null || maxDate > a.DW_Office_Last_Visit_Date__c) &&
  46.                     (
  47.                         (!MetadataConstants.EXCLUDED_ALL_VISIT_TYPES.contains(visitType) && MetadataConstants.EXCLUDED_ALL_TITLES.contains(ownerTitle)) ||
  48.                         (!MetadataConstants.EXCLUDED_PUBLIC_VISIT_TYPES.contains(visitType) && MetadataConstants.EXCLUDED_PUBLIC_TITLES.contains(ownerTitle)))) {
  49.                 a.DW_Office_Last_Visit_Date__c = maxDate;
  50.                 addAccount = true;
  51.             }
  52.             else if (ownerTitle == MetadataConstants.TITLE_IARM &&
  53.                     (
  54.                         a.IARM_Office_Last_Visit_Date__c == null || maxDate > a.IARM_Office_Last_Visit_Date__c) &&
  55.                     (
  56.                         (!MetadataConstants.EXCLUDED_ALL_VISIT_TYPES.contains(visitType) && MetadataConstants.EXCLUDED_ALL_TITLES.contains(ownerTitle)) ||
  57.                         (!MetadataConstants.EXCLUDED_PUBLIC_VISIT_TYPES.contains(visitType) && MetadataConstants.EXCLUDED_PUBLIC_TITLES.contains(ownerTitle)))) {
  58.                 a.IARM_Office_Last_Visit_Date__c = maxDate;
  59.                 addAccount = true;
  60.             }
  61.             else if (ownerTitle == MetadataConstants.TITLE_RPC &&
  62.                     (
  63.                         a.RPC_Office_Last_Visit_Date__c == null || maxDate > a.RPC_Office_Last_Visit_Date__c) &&
  64.                     (
  65.                         (!MetadataConstants.EXCLUDED_ALL_VISIT_TYPES.contains(visitType) && MetadataConstants.EXCLUDED_ALL_TITLES.contains(ownerTitle)) ||
  66.                         (!MetadataConstants.EXCLUDED_PUBLIC_VISIT_TYPES.contains(visitType) && MetadataConstants.EXCLUDED_PUBLIC_TITLES.contains(ownerTitle)))) {
  67.                 a.RPC_Office_Last_Visit_Date__c = maxDate;
  68.                 addAccount = true;
  69.             }
  70.             else if (ownerTitle == MetadataConstants.TITLE_WLSR &&
  71.                     (
  72.                         a.WLSR_Office_Last_Visit_Date__c == null || maxDate > a.WLSR_Office_Last_Visit_Date__c) &&
  73.                     (
  74.                         (!MetadataConstants.EXCLUDED_ALL_VISIT_TYPES.contains(visitType) && MetadataConstants.EXCLUDED_ALL_TITLES.contains(ownerTitle)) ||
  75.                         (!MetadataConstants.EXCLUDED_PUBLIC_VISIT_TYPES.contains(visitType) && MetadataConstants.EXCLUDED_PUBLIC_TITLES.contains(ownerTitle)))) {
  76.                 a.WLSR_Office_Last_Visit_Date__c = maxDate;
  77.                 addAccount = true;
  78.             }
  79.            
  80.             if (ownerTitle != null) {
  81.                 a.Last_Visit_Date__c = maxDate;
  82.                 addAccount = true;
  83.             }
  84.            
  85.             if (addAccount) {
  86.                 if (accountIds.contains(accountId)) {
  87.                     accountIds.remove(accountId);
  88.                 }
  89.                 accountsToUpdateMap.put(a.Id, a);
  90.             }
  91.         }
  92.        
  93.         System.debug('RRR2 accounts to update: '+accountsToUpdateMap);
  94.         update accountsToUpdateMap.values();
  95.        
  96.         accountsToNull.addAll(accountIds);
  97.         System.debug('SSS2 removing '+accountsToNull);
  98.         List<Account> accountsToUpdate = new List<Account>();
  99.         for (Account a : [
  100.                 Select
  101.                     DW_Office_Last_Visit_Date__c,
  102.                     IARM_Office_Last_Visit_Date__c,
  103.                     RPC_Office_Last_Visit_Date__c,
  104.                     WLSR_Office_Last_Visit_Date__c,
  105.                     Last_Visit_Date__c
  106.                 From
  107.                     Account
  108.                 Where
  109.                     Id in :accountsToNull]) {
  110.             a.DW_Office_Last_Visit_Date__c = null;
  111.             a.IARM_Office_Last_Visit_Date__c = null;
  112.             a.RPC_Office_Last_Visit_Date__c = null;
  113.             a.WLSR_Office_Last_Visit_Date__c = null;
  114.             a.Last_Visit_Date__c = null;
  115.             accountsToUpdate.add(a);
  116.         }
  117.         System.debug('TTT2 nulling '+accountsToUpdate);
  118.        
  119.         update accountsToUpdate;       
  120.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement