/*
***************************************************************************************************************************
Example
1
: Create an Assignment from a Resource Request, respecting the resource's availability.
***************************************************************************************************************************
/*
pse__Resource_Request__c resReq = [SELECT Id, pse__Resource__c, pse__Start_Date__c FROM pse__Resource_Request__c WHERE Id =
'a1nDS000001j8fnYAA'
];
pse.ResourceAssignmentService.ResourceAssignmentRequest resAssignRequest =
new
pse.ResourceAssignmentService.ResourceAssignmentRequest();
resAssignRequest.ResourceRequestId = resReq.Id;
resAssignRequest.ResourceId = resReq.pse__Resource__c;
resAssignRequest.StartDate = resReq.pse__Start_Date__c;
resAssignRequest.Strategy = pse.ResourceAssignmentService.SchedulingStrategy.CALCULATE_END_DATE_LEVEL_SCHEDULE;
List<pse.ResourceAssignmentService.ResourceAssignmentRequest> requestList =
new
List<pse.ResourceAssignmentService.ResourceAssignmentRequest>{resAssignRequest};
List<pse.ResourceAssignmentService.ResourceAssignmentResponse> responseList = pse.ResourceAssignmentService.assignResourceRequests(requestList);
/*
***************************************************************************************************************************
Example
2
: Create an Assignment from a Resource Request with custom start date and level schedule strategy.
***************************************************************************************************************************
/*
pse__Resource_Request__c resReq = [SELECT Id, pse__Resource__c FROM pse__Resource_Request__c WHERE Id =
'a1nDS000001j8fnYAA'
];
pse.ResourceAssignmentService.ResourceAssignmentRequest resAssignRequest =
new
pse.ResourceAssignmentService.ResourceAssignmentRequest();
resAssignRequest.ResourceRequestId = resReq.Id;
resAssignRequest.ResourceId = resReq.pse__Resource__c;
resAssignRequest.StartDate = Date.newInstance(
2023
,
01
,
29
);
resAssignRequest.Strategy = pse.ResourceAssignmentService.SchedulingStrategy.CALCULATE_END_DATE_LEVEL_SCHEDULE;
List<pse.ResourceAssignmentService.ResourceAssignmentRequest> requestList =
new
List<pse.ResourceAssignmentService.ResourceAssignmentRequest>{resAssignRequest};
List<pse.ResourceAssignmentService.ResourceAssignmentResponse> responseList = pse.ResourceAssignmentService.assignResourceRequests(requestList);
/*
***************************************************************************************************************************
Example
3
: Create an Assignment from a Resource Request with custom hours on week days.
***************************************************************************************************************************
/*
Map<String, Decimal> customHours =
new
Map<String, Decimal>();
customHours.put(
'mon'
,
8
);
customHours.put(
'tue'
,
8
);
customHours.put(
'wed'
,
8
);
customHours.put(
'thu'
,
8
);
customHours.put(
'fri'
,
8
);
customHours.put(
'sat'
,
4
);
customHours.put(
'sun'
,
0
);
pse__Resource_Request__c resReq = [SELECT Id, pse__Resource__c FROM pse__Resource_Request__c WHERE Id =
'a1nDS000001j8fnYAA'
];
pse.ResourceAssignmentService.ResourceAssignmentRequest resAssignRequest =
new
pse.ResourceAssignmentService.ResourceAssignmentRequest();
resAssignRequest.ResourceRequestId = resReq.Id;
resAssignRequest.ResourceId = resReq.pse__Resource__c;
resAssignRequest.StartDate = Date.newInstance(
2023
,
01
,
29
);
resAssignRequest.EndDate = Date.newInstance(
2023
,
02
,
04
);
resAssignRequest.Strategy = pse.ResourceAssignmentService.SchedulingStrategy.CALCULATE_END_DATE_CUSTOM_SCHEDULING;
resAssignRequest.CustomHours = customHours;
List<pse.ResourceAssignmentService.ResourceAssignmentRequest> requestList =
new
List<pse.ResourceAssignmentService.ResourceAssignmentRequest>{resAssignRequest};
List<pse.ResourceAssignmentService.ResourceAssignmentResponse> responseList = pse.ResourceAssignmentService.assignResourceRequests(requestList);