Finalizing Shift Trade Approval
Finalizing shift trade approvals while validating schedule conflicts, coordinating approval groups, and applying give-up or swap changes.
var allApprovals = await _shiftTradeRepository
.GetAllApprovalsForTradeRequestAndResponse(
command.TradeRequestId,
userTradeApproval.TradeResponseId);
var groupedApprovals =
allApprovals.GroupBy(a => a.ApprovalGroup);
if (groupedApprovals.All(group =>
group.Any(a =>
a.IsFinalizer &&
a.Decision == TradeDecision.Approved)))
{
tradeRequest.TradeStatus =
TradeStatus.Approved;
await _shiftTradeRepository
.UpdateShiftTradeRequest(tradeRequest);
}