@@ -189,33 +189,58 @@ public function getDocumentApprovalStageAttribute(){
189189 if (!empty ($ this ->approved_on )){
190190 return "Approved " ;
191191 }
192- else {
193- $ latest_stage = $ this ->approvals ;
194- $ latest_approval_record = $ latest_stage ->sortByDesc ('id ' )->first ();
195- $ approved_by_role = @$ latest_approval_record ->approver_role ->name ;
196-
197- // Allow per-role pending labels configured in collection settings.
198- $ columnConfig = json_decode (@$ this ->collection ->column_config );
199- $ approvalRoles = $ columnConfig ->approved_by ?? [];
200- $ approvalStatusLabels = $ columnConfig ->approval_status_labels ?? [];
201- if (
202- !empty ($ latest_approval_record ->approved_by_role )
203- && is_array ($ approvalRoles )
204- && is_array ($ approvalStatusLabels )
205- && count ($ approvalRoles ) === count ($ approvalStatusLabels )
206- ) {
207- $ pendingRoleIndex = array_search ((string ) $ latest_approval_record ->approved_by_role , array_map ('strval ' , $ approvalRoles ), true );
208- if ($ pendingRoleIndex !== false && !empty ($ approvalStatusLabels [$ pendingRoleIndex ])) {
209- return $ approvalStatusLabels [$ pendingRoleIndex ];
210- }
211- }
212192
213- return "Approval pending at " .ucfirst ($ approved_by_role );
214- if (!$ latest_approval_record || !$ latest_approval_record ->approver_role ) {
215- return "Approval pending (role not assigned) " ;
193+ $ latest_approval_record = $ this ->approvals ()->orderByDesc ('id ' )->first ();
194+ if (empty ($ latest_approval_record )) {
195+ return "Awaiting " ;
196+ }
197+
198+ // Check status strictly to differentiate NULL (pending) from 0 (rejected) from 1 (approved)
199+ if ($ latest_approval_record ->approval_status === 0 ) {
200+ return "Rejected " ;
201+ }
202+
203+ if ($ latest_approval_record ->approval_status === 1 ) {
204+ return "Approved " ;
205+ }
206+
207+ // Pending status (approval_status is NULL): prefer per-role labels configured in collection settings.
208+ $ columnConfig = json_decode (@$ this ->collection ->column_config );
209+ $ approvalRoles = $ columnConfig ->approved_by ?? [];
210+ $ approvalStatusLabels = $ columnConfig ->approval_status_labels ?? [];
211+ if (
212+ !empty ($ latest_approval_record ->approved_by_role )
213+ && is_array ($ approvalRoles )
214+ && is_array ($ approvalStatusLabels )
215+ && count ($ approvalRoles ) === count ($ approvalStatusLabels )
216+ ) {
217+ $ pendingRoleIndex = array_search ((string ) $ latest_approval_record ->approved_by_role , array_map ('strval ' , $ approvalRoles ), true );
218+ if ($ pendingRoleIndex !== false && !empty ($ approvalStatusLabels [$ pendingRoleIndex ])) {
219+ return $ approvalStatusLabels [$ pendingRoleIndex ];
216220 }
217- return "Approval pending at " .ucfirst ($ latest_approval_record ->approver_role ->name );
218221 }
222+
223+ $ approved_by_role = @$ latest_approval_record ->approver_role ->name ;
224+ if (empty ($ approved_by_role )) {
225+ return "Awaiting " ;
226+ }
227+
228+ return "Approval pending at " .ucfirst ($ approved_by_role );
229+ }
230+
231+ public function getDocumentApprovalByAttribute (){
232+ $ latest_approval_record = $ this ->approvals ()->orderByDesc ('id ' )->first ();
233+ if (empty ($ latest_approval_record )) {
234+ return '- ' ;
235+ }
236+
237+ if (is_null ($ latest_approval_record ->approval_status )) {
238+ return optional ($ latest_approval_record ->approver_role )->name ?? '- ' ;
239+ }
240+
241+ return optional ($ latest_approval_record ->approver )->name
242+ ?? optional ($ latest_approval_record ->approver_role )->name
243+ ?? '- ' ;
219244 }
220245
221246 /**
0 commit comments