package gw.web.policy uses gw.api.locale.DisplayKey uses java.util.LinkedHashMap uses java.util.Map uses java.util.List @Export class UWReferralReasonsModalRowOrganizer extends ModalRowOrganizer { static function organize(reasons : UWReferralReason[]) : UWReferralReasonModalRow[] { var authProfiles = User.util.CurrentUser.UWAuthorityProfiles var modalRows = reasons.map(\ reason -> new UWReferralReasonModalRow() { :Item = reason, :UserCanApproveIssue = reason.canBeApprovedBy(authProfiles), :UserCanApproveAllIssues = perm.System.uwapproveall }) return new UWReferralReasonsModalRowOrganizer(modalRows).createWrappers() } var _sectionTitles : Map construct(reasons : UWReferralReasonModalRow[]) { this(reasons, createSectionTitleMap()) } construct(reasons : UWReferralReasonModalRow[], sectionTitlesArg : Map) { super(sectionTitlesArg.Keys, reasons) _sectionTitles = sectionTitlesArg } override function categoryForItem(row : UWReferralReasonModalRow) : UWReferralReasonStatus { return row.Item.Status } override function createTitleRow(category : UWReferralReasonStatus) : UWReferralReasonModalRow { return new UWReferralReasonModalRow() {:Title = _sectionTitles[category]} } override function sortRowsWithinCategory(list : List) : List { return list.orderBy(\ x -> x.Item.IssueType.Code).thenBy(\ x -> x.Item.IssueKey) } private static function createSectionTitleMap() : Map { return new LinkedHashMap() { UWReferralReasonStatus.TC_OPEN -> DisplayKey.get("Web.UWReferralReasonLV.OpenReferralReasonsCategoryTitle"), UWReferralReasonStatus.TC_CLOSED -> DisplayKey.get("Web.UWReferralReasonLV.ClosedReferralReasonsCategoryTitle") } } }