@php
/**
* PDWP Working Paper Form (Word-like).
* Expects: $data (array)
*/
$data = \App\Support\WorkingPaperRichTextHtml::decodePayloadStrings(is_array($data ?? null) ? $data : []);
$m = function (string $key) use ($data): string {
$raw = data_get($data ?? [], $key, '');
if ($raw === null || $raw === '') {
return '';
}
return \App\Helpers\PC\AmountMillionHelper::amountToMillion($raw);
};
$v = function (string $key, $default = '') use ($data) {
$raw = data_get($data ?? [], $key, $default);
if (is_string($raw)) {
return \App\Support\HtmlDisplay::decodeEntities($raw, 8);
}
if (is_array($raw)) {
return \App\Support\WorkingPaperRichTextHtml::decodePayloadStrings($raw);
}
return $raw;
};
$rbmRows = data_get($data ?? [], 'rbm', []);
$rbmCount = max(1, is_array($rbmRows) ? count($rbmRows) : 0);
$rbmMinRows = 1;
$revisionRows = data_get($data ?? [], 'revision_compare', []);
$revisionCount = max(3, is_array($revisionRows) ? count($revisionRows) : 0);
$overallRows = data_get($data ?? [], 'overall_comments', []);
$overallCount = max(3, is_array($overallRows) ? count($overallRows) : 0);
$pcLinkedKeys = is_array($pcLinkedKeys ?? null) ? $pcLinkedKeys : [];
$canEditBody = (bool) ($canEditWorkingPaperBody ?? true);
$ro = function (string $key) use ($pcLinkedKeys, $canEditBody): string {
if (in_array($key, ['rbm', 'cost', 'operation_maintenance', 'location'], true) && $canEditBody) {
return '';
}
return in_array($key, $pcLinkedKeys, true) ? 'readonly' : '';
};
$defaultCostSourceLabel = function (string $k): string {
if ($k === 'original') {
return 'Original';
}
if ($k === 'revised') {
return 'Revised';
}
if ($k === 'revised2') {
return '2nd Revised';
}
if (preg_match('/^revised(\d+)$/', $k, $m)) {
$n = (int) $m[1];
$suffix = ($n % 100 >= 11 && $n % 100 <= 13) ? 'th' : (match ($n % 10) { 1 => 'st', 2 => 'nd', 3 => 'rd', default => 'th' });
return $n.$suffix.' Revised';
}
return $k;
};
$costSourceValue = fn (string $k): string => trim((string) $v("cost.$k.source", '')) !== ''
? trim((string) $v("cost.$k.source", ''))
: $defaultCostSourceLabel($k);
$ce = is_array($ceProjectCostBreakdown ?? null) ? $ceProjectCostBreakdown : [];
$ceHasCostBreakdown = ! empty($ce['has_lines']);
@endphp
@push('stylesheets')
@endpush
GOVERNMENT OF SINDH
PLANNING AND DEVELOPMENT DEPARTMENT
WORKING PAPER FOR PDWP
@include('working-papers.partials.scheme-meta-header', [
'v' => $v,
'inputClass' => 'pdwpwp-input',
'textareaClass' => 'pdwpwp-textarea',
'fontSize' => '11pt',
])
@php
$cost = data_get($data ?? [], 'cost', []);
$cost = is_array($cost) ? $cost : [];
$revisionKeys = array_values(array_filter(array_keys($cost), fn ($k) => $k !== 'original'));
usort($revisionKeys, function ($a, $b) {
$idx = function ($k) {
if ($k === 'revised') return 1;
if ($k === 'revised2') return 2;
if (preg_match('/^revised(\d+)$/', (string) $k, $m)) return (int) $m[1];
return 9999;
};
return $idx($a) <=> $idx($b);
});
$costRowKeys = array_merge(['original'], $revisionKeys);
$revLabel = function (string $k) {
if ($k === 'original') {
return 'Original';
}
if ($k === 'revised') return 'Revised';
if ($k === 'revised2') return '2nd Revised';
if (preg_match('/^revised(\d+)$/', $k, $m)) {
$n = (int) $m[1];
$suffix = ($n % 100 >= 11 && $n % 100 <= 13) ? 'th' : (match ($n % 10) { 1 => 'st', 2 => 'nd', 3 => 'rd', default => 'th' });
return $n.''.$suffix.' Revised';
}
return e($k);
};
$costMinRows = 1;
@endphp
@if ($ceHasCostBreakdown)
@include('working-papers.partials.ce-project-cost-breakdown', ['ce' => $ce, 'variant' => 'pd'])
@else
@endif
@include('working-papers.partials.comments-inline', ['variant' => 'pdwp'])
@include('working-papers.partials.attachments', ['variant' => 'pdwp'])
@push('scripts')
@endpush