11// app/routes/clinics.js
22
33const dayjs = require ( 'dayjs' ) ;
4+ const { getFilteredClinics, getClinicEvents } = require ( '../lib/utils/clinics' ) ;
45
56/**
67 * Get clinic and its related data from id
@@ -36,8 +37,47 @@ function getClinicData(data, clinicId) {
3637
3738module . exports = router => {
3839
39- router . get ( '/clinics/today' , ( req , res ) => {
40- res . render ( 'clinics/today' ) ;
40+ router . get ( '/clinics' , ( req , res ) => {
41+ res . redirect ( '/clinics/today' ) ;
42+ } ) ;
43+
44+ const clinicViews = [ '/clinics/today' , '/clinics/upcoming' , '/clinics/completed' , '/clinics/all' ] ;
45+
46+ router . get ( clinicViews , ( req , res ) => {
47+
48+ const data = req . session . data
49+
50+ // Extract filter from the URL path
51+ let filter = req . path . split ( '/' ) . pop ( ) ;
52+
53+ // Check filter from either URL param or query string
54+ filter = filter || req . query . filter || 'all' ;
55+
56+ // Add additional data needed for each clinic
57+ const clinicsWithData = data . clinics . map ( clinic => {
58+ const unit = data . breastScreeningUnits . find ( u => u . id === clinic . breastScreeningUnitId ) ;
59+ const location = unit . locations . find ( l => l . id === clinic . locationId ) ;
60+ const events = getClinicEvents ( data . events , clinic . id ) ;
61+
62+ return {
63+ ...clinic ,
64+ unit,
65+ location,
66+ events
67+ } ;
68+ } ) ;
69+
70+ // Get filtered clinics
71+ const filteredClinics = getFilteredClinics ( clinicsWithData , filter ) ;
72+
73+ res . render ( 'clinics/index' , {
74+ filter,
75+ clinics : clinicsWithData ,
76+ filteredClinics,
77+ formatDate : ( date ) => dayjs ( date ) . format ( 'D MMMM YYYY' )
78+ } ) ;
79+
80+
4181 } ) ;
4282
4383 // View participant within clinic context
@@ -54,12 +94,7 @@ module.exports = router => {
5494 return ;
5595 }
5696
57- res . render ( 'participants/show' , {
58- participant,
59- clinic,
60- event,
61- clinicId : req . params . clinicId ,
62- participantId : req . params . participantId
97+ res . render ( 'clinics.index' , {
6398 } ) ;
6499 } ) ;
65100
@@ -96,15 +131,14 @@ module.exports = router => {
96131 return res . redirect ( `/clinics/${ req . params . id } ` ) ;
97132 }
98133
99- console . log ( `Events before: ${ clinicData . events . length } ` )
100134 const filteredEvents = filterEvents ( clinicData . events , filter ) ;
101- console . log ( `Events after: ${ filteredEvents . length } ` )
102135
103136 res . render ( 'clinics/show' , {
104137 clinicId : req . params . id ,
105138 clinic : clinicData . clinic ,
106139 allEvents : clinicData . events ,
107140 filteredEvents : filteredEvents ,
141+ status : filter ,
108142 unit : clinicData . unit ,
109143 currentFilter : filter ,
110144 formatDate : ( date ) => dayjs ( date ) . format ( 'D MMMM YYYY' ) ,
0 commit comments