Skip to content

Commit

Permalink
Changes related to EDRD-1150
Browse files Browse the repository at this point in the history
  • Loading branch information
deepakmulamalla committed Jan 8, 2025
1 parent dfab53a commit 801cb80
Show file tree
Hide file tree
Showing 13 changed files with 250 additions and 56 deletions.
43 changes: 43 additions & 0 deletions dev-app-post/main/default/classes/EDRD_cls_HandleGroupsTest.cls
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
/**********************************************************************************************
* @Author: Accenture
* @Date: 20/12/2024
* @Description: The purpose of this class is to cover Code coverage of EDRD_cls_HandleGroups
* @Revision(s): [Date] - [Change Reference] - [Changed By] - [Description]
20 Dec - EDRD-1150 - Accenture - The purpose of this method is to Remove Committee based on ACR delete of EDRD_Committee & Provider OR Committee_Reviewer.
***********************************************************************************************/
@isTest
public class EDRD_cls_HandleGroupsTest {

/**
* @author:
* @date: 23 Dec 2024
* @description: The purpose of this method is to cover Testcoverage of handleGroupMembership
* @Modification Log: [Date] - [Change Reference] - [Changed By] - [Description]
*/
@isTest
public static void handleGroupMembershipTest(){
Account providerAcc = TestFactory.newProvider('Provider Test');
providerAcc.Committee__pc = ESA_cls_constants.EDRD_PERSONACCOUNT_SC;
providerAcc.Committee_Name__pc = ESA_cls_constants.EDRD_PERSONACCOUNT_SC_METABOLIC_SUBCOMMITTEE;
providerAcc.Provider_Identifier__pc = '1112223';
providerAcc.Provider_Type__pc = ESA_cls_constants.EDRD_PHYSICIAN;
insert providerAcc;

Id ContactId = [SELECT Id FROM Contact WHERE AccountID =: providerAcc.Id].get(0).Id;
Profile profileRec = [SELECT Id FROM Profile WHERE Name = 'EDRD Prescriber Community User'];
User communityUser = TestFactory.createCommunityUser(ContactId, profileRec.Id, 'Test1', 'Test');
insert communityUser;

providerAcc.Committee__pc = ESA_cls_constants.EDRD_PERSONACCOUNT_ACSC;

Test.startTest();
update providerAcc;
Test.stopTest();

List<GroupMember> groupMembers = [SELECT Id, GroupId FROM GroupMember WHERE UserOrGroupId = :communityUser.Id];

Assert.areEqual(TRUE, groupMembers.size() > 0, 'At least one GroupMember should exist for the user');
Assert.areEqual(2, groupMembers.size(), 'Exactly two GroupMember should exist for the user');
Assert.areNotEqual(null, groupMembers[0].GroupId, 'GroupMember should have a valid GroupId');
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -89,10 +89,35 @@ public class ESA_cls_accountTriggerHandlerTest {
}

/**
* @author:
* @author: Deepak
* @date: 20 Dec 2024
* @description: The purpose of this method is to cover Testcoverage of handlePublicGroupMemberships
* @Modification Log: [Date] - [Change Reference] - [Changed By] - [Description]
*/

@isTest
public static void handlePublicGroupMembershipsTest(){
Account providerAccount = TestFactory.newProvider('Provider Test');
providerAccount.Committee__pc = ESA_cls_constants.EDRD_PERSONACCOUNT_SC;
providerAccount.Committee_Name__pc = ESA_cls_constants.EDRD_PERSONACCOUNT_SC_METABOLIC_SUBCOMMITTEE;
providerAccount.Provider_Identifier__pc = '1112223';
providerAccount.Provider_Type__pc = ESA_cls_constants.EDRD_PHYSICIAN;
insert providerAccount;

Id ContactId = [SELECT Id FROM Contact WHERE AccountID =: providerAccount.Id].get(0).Id;
Profile profileRec = [SELECT Id FROM Profile WHERE Name = 'EDRD Prescriber Community User'];
User communityReviewer = TestFactory.createCommunityUser(ContactId, profileRec.Id, 'Test1', 'Test');
insert communityReviewer;

providerAccount.Committee__pc = ESA_cls_constants.EDRD_PERSONACCOUNT_ACSC;

Test.startTest();
update providerAccount;
Test.stopTest();

List<GroupMember> groupMembersList = [SELECT Id, GroupId FROM GroupMember WHERE UserOrGroupId = :communityReviewer.Id];

Assert.areEqual(TRUE, groupMembersList.size() > 0, 'At least one GroupMember should exist for the user');
Assert.areEqual(2, groupMembersList.size(), 'Exactly two GroupMember should exist for the user');
Assert.areNotEqual(null, groupMembersList[0].GroupId, 'GroupMember should have a valid GroupId');
}
}
31 changes: 31 additions & 0 deletions dev-app-post/main/default/classes/UserTriggerHandlerTest.cls
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
* @Description: The purpose of this class is to cover Code coverage of UserTriggerHandler
* @Revision(s): [Date] - [Change Reference] - [Changed By] - [Description]
24Sept - EDRD-911 - Deepak - Added activateACROnEDRDPortalEnable_Test method
07Jan - EDRD-1150 - Accenture - Added handleEDRDPublicGroupMemberTest method
***********************************************************************************************/
@isTest
public class UserTriggerHandlerTest {
Expand Down Expand Up @@ -57,4 +58,34 @@ public class UserTriggerHandlerTest {
Assert.areNotEqual(accShareList1.isEmpty(), true, 'AccountShare list should not be empty');
Assert.areNotEqual(accShareList1[0].UserOrGroupId, null, 'UserOrGroupId should not be null');
}

/**
* @author: Deepak
* @date: 07 Jan 2025
* @description: The purpose of this method is to cover Testcoverage of handleEDRDPublicGroupMember & handleGroupsForUsersAsync
* @Modification Log: [Date] - [Change Reference] - [Changed By] - [Description]
*/
@isTest
public static void handleEDRDPublicGroupMemberTest(){
Account providerAcc = TestFactory.newProvider('Provider Test');
providerAcc.Committee__pc = ESA_cls_constants.EDRD_PERSONACCOUNT_SC;
providerAcc.Committee_Name__pc = ESA_cls_constants.EDRD_PERSONACCOUNT_SC_METABOLIC_SUBCOMMITTEE;
providerAcc.Provider_Identifier__pc = '1112223';
providerAcc.Provider_Type__pc = ESA_cls_constants.EDRD_PHYSICIAN;
insert providerAcc;

Id ContactId = [SELECT Id FROM Contact WHERE AccountID =: providerAcc.Id].get(0).Id;
Profile profileRec = [SELECT Id FROM Profile WHERE Name = 'EDRD Prescriber Community User'];
User communityUser = TestFactory.createCommunityUser(ContactId, profileRec.Id, 'Test1', 'Test');

Test.startTest();
insert communityUser;
Test.stopTest();

List<GroupMember> groupMembers = [SELECT Id, GroupId, UserOrGroupId FROM GroupMember WHERE UserOrGroupId = :communityUser.Id];

Assert.areEqual(TRUE, groupMembers.size() > 0, 'At least one GroupMember should be created for the community user.');
Assert.areEqual(1, groupMembers.size(), 'Exactly one GroupMember should be created for the community user.');
Assert.areNotEqual(null, groupMembers[0].GroupId, 'GroupMember should have a valid GroupId.');
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ public with sharing class AccountContactRelationTriggerHandler {
if(accRecTypeSet.Contains(businessAccount.RecordType.DeveloperName) || (accRecTypeSet.Contains(providerAccount.RecordType.DeveloperName))){
String businessCommitteeTypes = businessAccount.EDRD_Committee_Type__c;
String oldProviderCommittee = providerAccount.Committee__pc;

if (ESA_cls_constants.EDRD_BUSINESS_SC_ACCOUNT.equalsIgnoreCase(businessCommitteeTypes) && oldProviderCommittee == NULL) {
providerAccount.Committee__pc = ESA_cls_constants.EDRD_PERSONACCOUNT_SC;
providerAccount.Committee_Name__pc = providerAccount.Committee_Name__pc != NULL ? providerAccount.Committee_Name__pc +';'+ businessAccount.Name : businessAccount.Name;
Expand Down Expand Up @@ -238,7 +238,7 @@ public with sharing class AccountContactRelationTriggerHandler {
providerIdVsRecToUpdate.put(providerAccount.Id, new Account(Id = providerAccount.Id, Committee__pc = providerAccount.Committee__pc, Committee_Name__pc = providerAccount.Committee_Name__pc));
}
}

if (!providerIdVsRecToUpdate.isEmpty()) {
Database.update(providerIdVsRecToUpdate.values(), true);
}
Expand Down
12 changes: 7 additions & 5 deletions force-app/main/default/classes/EDRD_cls_HandleGroups.cls
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
* @Date: 09 Mar 2023
* @Description: The purpose of this class is to Adding/Removing - Provider/Reviewer to public groups in without sharing context.
* @Revision(s): [Date] - [Change Reference] - [Changed By] - [Description]
20 Dec - EDRD-1150 - Accenture - Adding/Removing - Provider/Reviewer to public groups based on Committees.
20 Dec - EDRD-1150 - Accenture - Adding/Removing - Provider/Reviewer to public groups based on Committees
***********************************************************************************************/
public with Sharing class EDRD_cls_HandleGroups {
public without Sharing class EDRD_cls_HandleGroups {

/**
* @author: Deepak
Expand Down Expand Up @@ -63,7 +63,7 @@ public with Sharing class EDRD_cls_HandleGroups {
List<User> userListToDelete = [SELECT Id, ContactId FROM User WHERE ContactId IN: perConIdVsOldGroupName.keySet()];

for(Group grpObj: groupList){
groupNameVsGroupId.put(grpObj.Name, grpObj.Id);
groupNameVsGroupId.put(grpObj.DeveloperName, grpObj.Id);
}
Map<Id, Id> groupIdVsUserGroupId = new Map<Id, Id>();
for(User userObj: userListToDelete){
Expand All @@ -78,14 +78,14 @@ public with Sharing class EDRD_cls_HandleGroups {
delete groupMemberToDelete;
}
}


for(Id perContactId :perConIdVsnewCommitteeName.KeySet()){
for(String committeeName: perConIdVsnewCommitteeName.get(perContactId)){
if(!perConIdVsNewGroupName.containsKey(perContactId)){
perConIdVsNewGroupName.put(perContactId, new Set<String>());
}
perConIdVsNewGroupName.get(perContactId).add(committeeToGroupMap.get(committeeName));
perConIdVsNewGroupName.get(perContactId).add(committeeToGroupMap.get(committeeName));
}
}

Expand All @@ -97,7 +97,9 @@ public with Sharing class EDRD_cls_HandleGroups {

for(User userObj: userList){
for(String groupName: perConIdVsNewGroupName.get(userObj.ContactId)){
if(groupNameVsGroupId.get(groupName) != NULL){
groupMemberToInsert.add(new GroupMember(groupId = groupNameVsGroupId.get(groupName), UserOrGroupId = userObj.Id));
}
}
}

Expand Down
18 changes: 0 additions & 18 deletions force-app/main/default/classes/EDRD_cls_HandleGroupsTest.cls

This file was deleted.

85 changes: 57 additions & 28 deletions force-app/main/default/classes/ESA_cls_accountTriggerHandler.cls
Original file line number Diff line number Diff line change
Expand Up @@ -97,46 +97,75 @@ public with sharing class ESA_cls_accountTriggerHandler {
public static void handlePublicGroupMemberships(Map<Id, Account> oldAccountMap, Map<Id, Account> newAccountMap) {
Map<Id, Set<String>> perConIdVsOldCommittesName = new Map<Id, Set<String>>();
Map<Id, Set<String>> perConIdVsnewCommitteeName = new Map<Id, Set<String>>();
List<String> perConIdVsOldCommittesNameSTRList = new List<String>();
List<String> perConIdVsnewCommitteeNameSTRList = new List<String>();
Map<String, Id> accNameVsPerConId = new Map<String, Id>();

for (Id accountId : newAccountMap.keySet()) {
Account oldAccount = oldAccountMap.get(accountId);
Account newAccount = newAccountMap.get(accountId);
if(oldAccount.Committee__pc == newAccount.Committee__pc && oldAccount.Committee_Name__pc == newAccount.Committee_Name__pc){
continue;
}
accNameVsPerConId.put(newAccount.Name, newAccount.PersonContactId);

if (oldAccount.Committee__pc != null && oldAccount.Committee_Name__pc != null) {
perConIdVsOldCommittesName.put(oldAccount.perSonContactId, new Set<String>(oldAccount.Committee_Name__pc.split(';')));
if(oldAccount.Committee_Name__pc != newAccount.Committee_Name__pc){
if (oldAccount.Committee_Name__pc != null) {
perConIdVsOldCommittesName.put(oldAccount.perSonContactId, new Set<String>(oldAccount.Committee_Name__pc.split(';')));
}
if (newAccount.Committee_Name__pc != null) {
perConIdVsnewCommitteeName.put(newAccount.perSonContactId, new Set<String>(newAccount.Committee_Name__pc.split(';')));
}
}
if (newAccount.Committee__pc != null && newAccount.Committee_Name__pc != null) {
perConIdVsnewCommitteeName.put(newAccount.perSonContactId, new Set<String>(newAccount.Committee_Name__pc.split(';')));
if(oldAccount.Committee__pc != newAccount.Committee__pc){
if(!perConIdVsOldCommittesName.containsKey(oldAccount.perSonContactId)){
perConIdVsOldCommittesName.put(oldAccount.perSonContactId, new Set<String>());
}
if(!perConIdVsnewCommitteeName.containsKey(newAccount.perSonContactId)){
perConIdVsnewCommitteeName.put(newAccount.perSonContactId, new Set<String>());
}
if (oldAccount.Committee__pc != null) {
String committeeName = (oldAccount.Committee__pc == 'EDRD Advisory/ Sub Committee') ? 'EDRD Advisory Committee' : oldAccount.Committee__pc;
perConIdVsOldCommittesName.get(oldAccount.perSonContactId).add(committeeName);
}
if (newAccount.Committee__pc != null) {
perConIdVsnewCommitteeName.get(newAccount.perSonContactId).addAll(newAccount.Committee__pc.split(';'));
}
}
}
List<String> perConIdVsOldCommittesNameSTRList = new List<String>();

for(Id perContactId: perConIdVsOldCommittesName.keySet()){
groupMemberWrapper gMWObj = new groupMemberWrapper();
gMWObj.personContactId = perContactId;
List<cls_committiees> committeList = new List<cls_committiees>();
for(String committeeName : perConIdVsOldCommittesName.get(perContactId)){
committeList.add(new cls_committiees(committeeName));
if(oldAccount.Committee__pc != newAccount.Committee__pc){
if(newAccount.Committee__pc == 'EDRD Advisory Committee' || newAccount.Committee__pc == 'EDRD Advisory/ Sub Committee'){
if(!perConIdVsnewCommitteeName.containsKey(newAccount.perSonContactId)){
perConIdVsnewCommitteeName.put(newAccount.perSonContactId, new Set<String>{'EDRD Advisory Committee'});
}else {
perConIdVsnewCommitteeName.get(newAccount.perSonContactId).add('EDRD Advisory Committee');
}
}
}
gMWObj.committiees = committeList;
perConIdVsOldCommittesNameSTRList.add(JSON.serialize(gMWObj));
}

List<String> perConIdVsnewCommitteeNameSTRList = new List<String>();

for(Id perContactId: perConIdVsnewCommitteeName.keySet()){
groupMemberWrapper gMWObj = new groupMemberWrapper();
gMWObj.personContactId = perContactId;
List<cls_committiees> committeList = new List<cls_committiees>();
for(String committeeName : perConIdVsnewCommitteeName.get(perContactId)){
committeList.add(new cls_committiees(committeeName));
for(Id perContactId: perConIdVsOldCommittesName.keySet()){
groupMemberWrapper gMWObj = new groupMemberWrapper();
gMWObj.personContactId = perContactId;
List<cls_committiees> committeList = new List<cls_committiees>();
for(String committeeName : perConIdVsOldCommittesName.get(perContactId)){
committeList.add(new cls_committiees(committeeName));
}
gMWObj.committiees = committeList;
perConIdVsOldCommittesNameSTRList.add(JSON.serialize(gMWObj));
}

for(Id perContactId: perConIdVsnewCommitteeName.keySet()){
groupMemberWrapper gMWObj = new groupMemberWrapper();
gMWObj.personContactId = perContactId;
List<cls_committiees> committeList = new List<cls_committiees>();
for(String committeeName : perConIdVsnewCommitteeName.get(perContactId)){
committeList.add(new cls_committiees(committeeName));
}
gMWObj.committiees = committeList;
perConIdVsnewCommitteeNameSTRList.add(JSON.serialize(gMWObj));
}
if(!perConIdVsOldCommittesNameSTRList.isEmpty() || !perConIdVsnewCommitteeNameSTRList.isEmpty()){
EDRD_cls_HandleGroups.handleGroupMembership(perConIdVsOldCommittesNameSTRList, perConIdVsnewCommitteeNameSTRList);
}
gMWObj.committiees = committeList;
perConIdVsnewCommitteeNameSTRList.add(JSON.serialize(gMWObj));
}
EDRD_cls_HandleGroups.handleGroupMembership(perConIdVsOldCommittesNameSTRList, perConIdVsnewCommitteeNameSTRList);
}

/**
Expand Down
1 change: 1 addition & 0 deletions force-app/main/default/classes/ESA_cls_constants.cls
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ public class ESA_cls_constants {
public static final String EDRD_CASE_MOHFUNDING_DENIED = 'Denied';
public static final String EDRD_CASE_STATUS_CANCELLED = 'Cancelled';
public static final String EDRD_CASE_STATUS_FUNDING_APPROVED = 'Funding Approved';
public static final String EDRD_COMMITTEE_REVIEWER = 'Committee_Reviewer';
public static final String EDRD_FORMULATION_BOTTLE = 'Bottle';
public static final String EDRD_FUNDING_DECISION_DENIED = 'Denied';
public static final String EDRD_NAME = 'EDRD';
Expand Down
Loading

0 comments on commit 801cb80

Please sign in to comment.