Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Calculate the last visit date for a list of accounts
- */
- public static void updateAccountLastVisits(Set<Id> accountIds) {
- Set<Id> accountsToNull = new Set<Id>();
- System.debug('Accounts: '+accountIds);
- Map<Id, Account> accountsToUpdateMap = new Map<Id, Account>();
- for (AggregateResult ar : [
- select
- contact__r.accountId,
- visit__r.assigned_to__r.title,
- visit__r.visit_type__c,
- max(visit__r.end_date_time__c) maxdate
- from
- attendee__c
- where
- status__c = :MetadataConstants.ATTENDED_STATUS and
- contact__r.AccountId in :accountIds and
- visit__r.end_date_time__c <= today and
- (
- (
- visit__r.visit_type__c not in :MetadataConstants.EXCLUDED_ALL_VISIT_TYPES and visit__r.assigned_to__r.title in :MetadataConstants.EXCLUDED_ALL_TITLES)
- OR
- (
- visit__r.visit_type__c not in :MetadataConstants.EXCLUDED_PUBLIC_VISIT_TYPES and visit__r.assigned_to__r.title in :MetadataConstants.EXCLUDED_PUBLIC_TITLES))
- group by
- contact__r.accountId,
- visit__r.assigned_to__r.title,
- visit__r.visit_type__c]) {
- System.debug('RRR3 Aggregate Result found: '+ar);
- Id accountId = (Id)ar.get('accountId');
- String ownerTitle = (String)ar.get('title');
- DateTime maxDateTime = (DateTime)ar.get('maxdate');
- String visitType = (String)ar.get('visit_type__c');
- Date maxDate = maxDateTime == null ? null : maxDateTime.date();
- System.debug('title is '+ownerTitle);
- Boolean addAccount = false;
- 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);
- System.debug('a is '+a);
- if (ownerTitle == MetadataConstants.TITLE_DW &&
- (
- a.DW_Office_Last_Visit_Date__c == null || maxDate > a.DW_Office_Last_Visit_Date__c) &&
- (
- (!MetadataConstants.EXCLUDED_ALL_VISIT_TYPES.contains(visitType) && MetadataConstants.EXCLUDED_ALL_TITLES.contains(ownerTitle)) ||
- (!MetadataConstants.EXCLUDED_PUBLIC_VISIT_TYPES.contains(visitType) && MetadataConstants.EXCLUDED_PUBLIC_TITLES.contains(ownerTitle)))) {
- a.DW_Office_Last_Visit_Date__c = maxDate;
- addAccount = true;
- }
- else if (ownerTitle == MetadataConstants.TITLE_IARM &&
- (
- a.IARM_Office_Last_Visit_Date__c == null || maxDate > a.IARM_Office_Last_Visit_Date__c) &&
- (
- (!MetadataConstants.EXCLUDED_ALL_VISIT_TYPES.contains(visitType) && MetadataConstants.EXCLUDED_ALL_TITLES.contains(ownerTitle)) ||
- (!MetadataConstants.EXCLUDED_PUBLIC_VISIT_TYPES.contains(visitType) && MetadataConstants.EXCLUDED_PUBLIC_TITLES.contains(ownerTitle)))) {
- a.IARM_Office_Last_Visit_Date__c = maxDate;
- addAccount = true;
- }
- else if (ownerTitle == MetadataConstants.TITLE_RPC &&
- (
- a.RPC_Office_Last_Visit_Date__c == null || maxDate > a.RPC_Office_Last_Visit_Date__c) &&
- (
- (!MetadataConstants.EXCLUDED_ALL_VISIT_TYPES.contains(visitType) && MetadataConstants.EXCLUDED_ALL_TITLES.contains(ownerTitle)) ||
- (!MetadataConstants.EXCLUDED_PUBLIC_VISIT_TYPES.contains(visitType) && MetadataConstants.EXCLUDED_PUBLIC_TITLES.contains(ownerTitle)))) {
- a.RPC_Office_Last_Visit_Date__c = maxDate;
- addAccount = true;
- }
- else if (ownerTitle == MetadataConstants.TITLE_WLSR &&
- (
- a.WLSR_Office_Last_Visit_Date__c == null || maxDate > a.WLSR_Office_Last_Visit_Date__c) &&
- (
- (!MetadataConstants.EXCLUDED_ALL_VISIT_TYPES.contains(visitType) && MetadataConstants.EXCLUDED_ALL_TITLES.contains(ownerTitle)) ||
- (!MetadataConstants.EXCLUDED_PUBLIC_VISIT_TYPES.contains(visitType) && MetadataConstants.EXCLUDED_PUBLIC_TITLES.contains(ownerTitle)))) {
- a.WLSR_Office_Last_Visit_Date__c = maxDate;
- addAccount = true;
- }
- if (ownerTitle != null) {
- a.Last_Visit_Date__c = maxDate;
- addAccount = true;
- }
- if (addAccount) {
- if (accountIds.contains(accountId)) {
- accountIds.remove(accountId);
- }
- accountsToUpdateMap.put(a.Id, a);
- }
- }
- System.debug('RRR2 accounts to update: '+accountsToUpdateMap);
- update accountsToUpdateMap.values();
- accountsToNull.addAll(accountIds);
- System.debug('SSS2 removing '+accountsToNull);
- List<Account> accountsToUpdate = new List<Account>();
- for (Account a : [
- Select
- DW_Office_Last_Visit_Date__c,
- IARM_Office_Last_Visit_Date__c,
- RPC_Office_Last_Visit_Date__c,
- WLSR_Office_Last_Visit_Date__c,
- Last_Visit_Date__c
- From
- Account
- Where
- Id in :accountsToNull]) {
- a.DW_Office_Last_Visit_Date__c = null;
- a.IARM_Office_Last_Visit_Date__c = null;
- a.RPC_Office_Last_Visit_Date__c = null;
- a.WLSR_Office_Last_Visit_Date__c = null;
- a.Last_Visit_Date__c = null;
- accountsToUpdate.add(a);
- }
- System.debug('TTT2 nulling '+accountsToUpdate);
- update accountsToUpdate;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement