@@ -19,17 +19,7 @@ public function index(): void
1919 $ user = Auth::user ();
2020 $ perPage = max (10 , min (100 , (int ) ($ user ['page_size ' ] ?? 20 )));
2121
22- $ filters = [
23- 'status ' => trim ((string ) ($ _GET ['status ' ] ?? '' )),
24- 'site_id ' => (int ) ($ _GET ['site_id ' ] ?? 0 ),
25- 'keyword ' => trim ((string ) ($ _GET ['keyword ' ] ?? '' )),
26- 'date_from ' => trim ((string ) ($ _GET ['date_from ' ] ?? '' )),
27- 'date_to ' => trim ((string ) ($ _GET ['date_to ' ] ?? '' )),
28- ];
29-
30- if ($ filters ['site_id ' ] === 0 ) {
31- $ filters ['site_id ' ] = null ;
32- }
22+ $ filters = $ this ->collectFilters ();
3323
3424 $ inquiryModel = new Inquiry ();
3525 $ siteModel = new Site ();
@@ -48,6 +38,7 @@ public function show(): void
4838 {
4939 $ id = (int ) ($ _GET ['id ' ] ?? 0 );
5040 $ inquiryModel = new Inquiry ();
41+ $ logModel = new InquiryLog ();
5142 $ inquiry = $ inquiryModel ->find ($ id );
5243
5344 if (!$ inquiry ) {
@@ -58,7 +49,7 @@ public function show(): void
5849
5950 if ($ inquiry ['status ' ] === 'unread ' ) {
6051 $ inquiryModel ->updateStatus ($ id , 'read ' );
61- ( new InquiryLog ()) ->create ($ id , Auth::id (), 'viewed ' , 'Marked as read from detail page ' );
52+ $ logModel ->create ($ id , Auth::id (), 'viewed ' , 'Marked as read from detail page ' );
6253 $ inquiry = $ inquiryModel ->find ($ id );
6354 }
6455
@@ -78,6 +69,7 @@ public function show(): void
7869 'inquiry ' => $ inquiry ,
7970 'extraData ' => $ extraData ,
8071 'rawPayload ' => $ rawPayload ,
72+ 'logs ' => $ logModel ->latestForInquiry ($ id , 8 ),
8173 'csrfToken ' => Csrf::token (),
8274 ]);
8375 }
@@ -111,4 +103,40 @@ public function updateStatus(): void
111103 $ back = trim ((string ) ($ _POST ['back ' ] ?? 'inquiries ' ));
112104 redirect ($ back );
113105 }
106+
107+ public function exportCsv (): void
108+ {
109+ $ filters = $ this ->collectFilters ();
110+ $ rows = (new Inquiry ())->exportRows ($ filters , 5000 );
111+
112+ (new InquiryLog ())->create (null , Auth::id (), 'inquiries_exported ' , 'Exported ' . count ($ rows ) . ' rows as CSV ' );
113+
114+ send_csv_download (
115+ 'inquiries- ' . date ('Ymd-His ' ) . '.csv ' ,
116+ [
117+ 'id ' , 'site_name ' , 'form_key ' , 'status ' , 'name ' , 'email ' , 'title ' , 'content ' ,
118+ 'country ' , 'phone ' , 'address ' , 'from_company ' , 'source_url ' , 'referer_url ' ,
119+ 'ip ' , 'browser ' , 'device_type ' , 'language ' , 'admin_note ' , 'submitted_at ' ,
120+ 'created_at ' , 'updated_at ' , 'extra_data ' ,
121+ ],
122+ $ rows
123+ );
124+ }
125+
126+ private function collectFilters (): array
127+ {
128+ $ filters = [
129+ 'status ' => trim ((string ) ($ _GET ['status ' ] ?? '' )),
130+ 'site_id ' => (int ) ($ _GET ['site_id ' ] ?? 0 ),
131+ 'keyword ' => trim ((string ) ($ _GET ['keyword ' ] ?? '' )),
132+ 'date_from ' => trim ((string ) ($ _GET ['date_from ' ] ?? '' )),
133+ 'date_to ' => trim ((string ) ($ _GET ['date_to ' ] ?? '' )),
134+ ];
135+
136+ if ($ filters ['site_id ' ] === 0 ) {
137+ $ filters ['site_id ' ] = null ;
138+ }
139+
140+ return $ filters ;
141+ }
114142}
0 commit comments