Skip to content

Commit 4c4ce5f

Browse files
Merge pull request #24 from apex-enterprise-patterns/bugfix/minor-adjustment-reference-to-secondary-domain
bugfix/minor-adjustment-reference-to-secondary-domain
2 parents d45903f + 1816cc6 commit 4c4ce5f

File tree

8 files changed

+41
-28
lines changed

8 files changed

+41
-28
lines changed

sfdx-source/apex-common-samplecode/main/classes/Application.cls

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ public class Application
5252
public static final fflib_Application.SelectorFactory Selector =
5353
new fflib_Application.SelectorFactory(
5454
new Map<SObjectType, Type> {
55+
Account.SObjectType => AccountsSelector.class,
5556
Opportunity.SObjectType => OpportunitiesSelector.class,
5657
OpportunityLineItem.SObjectType => OpportunityLineItemsSelector.class,
5758
PricebookEntry.SObjectType => PricebookEntriesSelector.class,

sfdx-source/apex-common-samplecode/main/classes/domains/AbstractChargeable.cls

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public with sharing abstract class AbstractChargeable extends fflib_SObjectDomai
5454

5555
Integer hoursWorkedRecordIdx = 0;
5656

57-
for(SObject record : Records)
57+
for(SObject record : this.records)
5858
{
5959
record.put(costOfHoursWorkedField, hoursWorked[hoursWorkedRecordIdx++] * 100);
6060
}

sfdx-source/apex-common-samplecode/main/classes/domains/Accounts.cls

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,20 @@ public with sharing class Accounts extends fflib_SObjectDomain
4242
super(sObjectList);
4343
}
4444

45-
public void updateOpportunityActivity(fflib_SObjectUnitOfWork uow)
45+
public void updateOpportunityActivity(fflib_ISObjectUnitOfWork uow)
4646
{
47-
for(Account account : (List<Account>) Records)
47+
for(Account account : (List<Account>) this.records)
4848
{
4949
account.Description = 'Last Opportunity Raised ' + System.today();
5050
uow.registerDirty(account);
5151
}
5252
}
53+
54+
public class Constructor implements fflib_SObjectDomain.IConstructable
55+
{
56+
public fflib_SObjectDomain construct(List<SObject> sObjectList)
57+
{
58+
return new Accounts(sObjectList);
59+
}
60+
}
5361
}

sfdx-source/apex-common-samplecode/main/classes/domains/DeveloperWorkItems.cls

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public with sharing class DeveloperWorkItems extends AbstractChargeable
5252
{
5353
// Calculate the hours worked for each record
5454
List<Integer> hoursWorked = new List<Integer>();
55-
for(DeveloperWorkItem__c workItem : (List<DeveloperWorkItem__c>) Records)
55+
for(DeveloperWorkItem__c workItem : (List<DeveloperWorkItem__c>) this.records)
5656
{
5757
// This calculation is intentionally simplistic for illustration purposes
5858
hoursWorked.add((Integer)

sfdx-source/apex-common-samplecode/main/classes/domains/IAccounts.cls

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,5 @@
2626

2727
public interface IAccounts extends fflib_ISObjectDomain
2828
{
29-
void updateOpportunityActivity(fflib_SObjectUnitOfWork uow);
29+
void updateOpportunityActivity(fflib_ISObjectUnitOfWork uow);
3030
}

sfdx-source/apex-common-samplecode/main/classes/domains/Opportunities.cls

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public class Opportunities extends fflib_SObjectDomain
4646
public void generate(InvoicingService.InvoiceFactory invoiceFactory)
4747
{
4848
// Utilise InvoiceFactory to create invoices from Opportunity details
49-
for(Opportunity opportunity : (List<Opportunity>) Records)
49+
for(Opportunity opportunity : (List<Opportunity>) this.records)
5050
{
5151
InvoicingService.Invoice invoice = new InvoicingService.Invoice();
5252
invoice.Account = opportunity.AccountId;
@@ -69,7 +69,7 @@ public class Opportunities extends fflib_SObjectDomain
6969
public override void onApplyDefaults()
7070
{
7171
// Apply defaults to Opportunities
72-
for(Opportunity opportunity : (List<Opportunity>) Records)
72+
for(Opportunity opportunity : (List<Opportunity>) this.records)
7373
{
7474
opportunity.DiscountType__c = OpportunitySettings__c.getInstance().DiscountType__c;
7575
}
@@ -78,7 +78,7 @@ public class Opportunities extends fflib_SObjectDomain
7878
public override void onValidate()
7979
{
8080
// Validate Opportunities
81-
for(Opportunity opp : (List<Opportunity>) Records)
81+
for(Opportunity opp : (List<Opportunity>) this.records)
8282
{
8383
if(opp.Type!=null && opp.Type.startsWith('Existing') && opp.AccountId == null)
8484
{
@@ -90,7 +90,7 @@ public class Opportunities extends fflib_SObjectDomain
9090
public override void onValidate(Map<Id,SObject> existingRecords)
9191
{
9292
// Validate changes to Opportunities
93-
for(Opportunity opp : (List<Opportunity>) Records)
93+
for(Opportunity opp : (List<Opportunity>) this.records)
9494
{
9595
Opportunity existingOpp = (Opportunity) existingRecords.get(opp.Id);
9696
if(opp.Type != existingOpp.Type)
@@ -103,16 +103,27 @@ public class Opportunities extends fflib_SObjectDomain
103103
public override void onAfterInsert()
104104
{
105105
// Related Accounts
106-
List<Id> accountIds = new List<Id>();
107-
for(Opportunity opp : (List<Opportunity>) Records)
108-
if(opp.AccountId!=null)
106+
Set<Id> accountIds = new Set<Id>();
107+
for(Opportunity opp : (List<Opportunity>) this.records)
108+
{
109+
if( opp.AccountId != null)
110+
{
109111
accountIds.add(opp.AccountId);
110-
111-
// Update last Opportunity activity on the related Accounts (via the Accounts domain class)
112-
fflib_SObjectUnitOfWork uow = new fflib_SObjectUnitOfWork(new Schema.SObjectType[] { Account.SObjectType });
113-
Accounts accounts = new Accounts([select Id, Name from Account where id in :accountIds]);
114-
accounts.updateOpportunityActivity(uow);
115-
uow.commitWork();
112+
}
113+
}
114+
115+
if ( ! accountIds.isEmpty() )
116+
{
117+
// Update last Opportunity activity on the related Accounts (via the Accounts domain class)
118+
fflib_ISObjectUnitOfWork uow = new fflib_SObjectUnitOfWork(new Schema.SObjectType[] { Account.SObjectType });
119+
120+
121+
IAccounts accounts = (IAccounts)Application.Domain.newInstance( accountIds );
122+
123+
accounts.updateOpportunityActivity(uow);
124+
125+
uow.commitWork();
126+
}
116127
}
117128

118129
public void applyDiscount(Decimal discountPercentage, fflib_ISObjectUnitOfWork uow)
@@ -124,7 +135,7 @@ public class Opportunities extends fflib_SObjectDomain
124135
List<OpportunityLineItem> linesToApplyDiscount = new List<OpportunityLineItem>();
125136

126137
// Apply discount
127-
for(Opportunity opportunity : (List<Opportunity>) Records)
138+
for(Opportunity opportunity : (List<Opportunity>) this.records)
128139
{
129140
// Appply to the Opporunity Amount?
130141
if(opportunity.OpportunityLineItems == null ||

sfdx-source/apex-common-samplecode/main/classes/domains/OpportunityLineItems.cls

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public with sharing class OpportunityLineItems extends fflib_SObjectDomain
5252
Decimal factor = Opportunities.calculateDiscountFactor(discountPercentage);
5353

5454
// Adjust UnitPrice of each line according to Discount Type of Opportunity
55-
for(OpportunityLineItem line : (List<OpportunityLineItem>) Records)
55+
for(OpportunityLineItem line : (List<OpportunityLineItem>) this.records)
5656
{
5757
// Skip products that have not been approved for discounting
5858
Opportunity opportunity = opportunitiesById.get(line.OpportunityId);

sfdx-source/apex-common-samplecode/main/classes/selectors/PricebookEntriesSelector.cls

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,13 +53,6 @@ public class PricebookEntriesSelector extends fflib_SObjectSelector
5353

5454
public List<PricebookEntry> selectById(Set<ID> idSet)
5555
{
56-
assertIsAccessible();
57-
String query = String.format('select {0},{3},{4} FROM {1} WHERE id in :idSet order by {2}',
58-
new List<String>{
59-
getFieldListString(),
60-
getSObjectName(),
61-
getOrderBy()
62-
});
63-
return (List<PricebookEntry>) Database.query(query);
56+
return (List<PricebookEntry>) selectSObjectsById(idSet);
6457
}
6558
}

0 commit comments

Comments
 (0)