diff --git a/src/pages/team/Requests.jsx b/src/pages/team/Requests.jsx index d5f2333..d354a84 100755 --- a/src/pages/team/Requests.jsx +++ b/src/pages/team/Requests.jsx @@ -44,52 +44,81 @@ export default function Requests() {

No requests yet

Client requests will appear here.

- ) : submissions.map(sub => { - const task = tasks.find(t => t.id === sub.task_id); - const project = projects.find(p => p.id === task?.project_id); - const company = companies.find(co => co.id === project?.company_id); + ) : (() => { + // Group by task_id + version_number + const groupMap = {}; + submissions.forEach(sub => { + const key = `${sub.task_id}-${sub.version_number}`; + if (!groupMap[key]) groupMap[key] = []; + groupMap[key].push(sub); + }); - return ( -
-
-
-
- {sub.service_type} - {sub.type === 'revision' && ( - Revision v{sub.version_number} - )} + // Sort groups by latest submitted_at descending + const groups = Object.values(groupMap).sort((a, b) => { + const aMax = Math.max(...a.map(s => new Date(s.submitted_at))); + const bMax = Math.max(...b.map(s => new Date(s.submitted_at))); + return bMax - aMax; + }); + + return groups.map(group => { + const primary = group.find(s => s.type !== 'amendment') || group[0]; + const amendments = group.filter(s => s.type === 'amendment'); + const task = tasks.find(t => t.id === primary.task_id); + const project = projects.find(p => p.id === task?.project_id); + const company = companies.find(co => co.id === project?.company_id); + + return ( +
+
+
+
+ {primary.service_type} + +
+
+ From {primary.submitted_by_name} + {company && ( + <> · {company.name} + )} + {' · '}{new Date(primary.submitted_at).toLocaleDateString()} +
-
- From {sub.submitted_by_name} - {company && ( - <> · {company.name} - )} - {' · '}{new Date(sub.submitted_at).toLocaleDateString()} +
+ + {task && View Job}
-
- - {task && View Job} + +
+
+ Deadline +
{primary.deadline || 'Not specified'}
+
+
+ Project +
+ {project ? {project.name} : '—'} +
+
+ +

0 ? 12 : 0 }}>{primary.description}

+ + {amendments.map(amendment => ( +
+
+ Amended Request +
+
+ {amendment.submitted_by_name} · {new Date(amendment.submitted_at).toLocaleDateString()} +
+

{amendment.description}

+
+ ))}
- -
-
- Deadline -
{sub.deadline || 'Not specified'}
-
-
- Project -
- {project ? {project.name} : '—'} -
-
-
- -

{sub.description}

-
- ); - })} + ); + }); + })()} ); }