Skip to content

Commit 15d09db

Browse files
get my reservation
1 parent 2b188a7 commit 15d09db

File tree

7 files changed

+95
-2
lines changed

7 files changed

+95
-2
lines changed

lib/datasource/app_data_source.dart

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,22 @@ class AppDataSource extends DataSource {
184184
}
185185
}
186186

187+
@override
188+
Future<List<BusReservation>> getMyReservation(String userName) async {
189+
final url = '$baseUrl${'reservation/all/$userName'}';
190+
try {
191+
final response = await http.get(Uri.parse(url));
192+
if (response.statusCode == 200) {
193+
final mapList = json.decode(response.body) as List;
194+
return List.generate(
195+
mapList.length, (index) => BusReservation.fromJson(mapList[index]));
196+
}
197+
return [];
198+
} catch (error) {
199+
rethrow;
200+
}
201+
}
202+
187203
@override
188204
Future<List<BusRoute>> getAllRoutes() async {
189205
final url = '$baseUrl${'route/all'}';

lib/datasource/data_source.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ abstract class DataSource {
4747
Future<ResponseModel> addReservation(BusReservation reservation);
4848

4949
Future<List<BusReservation>> getAllReservation();
50+
Future<List<BusReservation>> getMyReservation(String userName);
5051

5152
Future<List<BusReservation>> getReservationsByMobile(String mobile);
5253

lib/drawers/main_drawer.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,8 @@ class _MainDrawerState extends State<MainDrawer> {
127127
),
128128
ListTile(
129129
onTap: () {
130-
// Navigator.pop(context);
131-
// Navigator.pushNamed(context, routeNameMyProfilePage);
130+
Navigator.pop(context);
131+
Navigator.pushNamed(context, routeNameMyReservation);
132132
},
133133
leading: const Icon(Icons.bus_alert),
134134
title: const Text('My Reservation'),

lib/main.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import 'package:bus_reservation/pages/add_schedule_page.dart';
2+
import 'package:bus_reservation/pages/my_reservation_page.dart';
23
import 'package:bus_reservation/pages/sign_up_page.dart';
34
import 'package:bus_reservation/pages/user_details_page.dart';
45
import 'package:flutter_easyloading/flutter_easyloading.dart';
@@ -53,6 +54,7 @@ class MyApp extends StatelessWidget {
5354
routeNameAddCityPage : (context) => const AddCity(),
5455
routeNameSignUpPage : (context) => const SignUpPage(),
5556
routeNameUserDetailsPage : (context) => const UserDetailsPage(),
57+
routeNameMyReservation : (context) => const MyReservationPage(),
5658
},
5759
);
5860
}

lib/pages/my_reservation_page.dart

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import 'package:flutter/material.dart';
2+
import 'package:provider/provider.dart';
3+
4+
import '../customwidgets/reservation_item_body_view.dart';
5+
import '../customwidgets/reservation_item_header_view.dart';
6+
import '../customwidgets/search_box.dart';
7+
import '../models/reservation_expansion_item.dart';
8+
import '../providers/app_data_provider.dart';
9+
import '../utils/helper_functions.dart';
10+
11+
class MyReservationPage extends StatefulWidget {
12+
const MyReservationPage({super.key});
13+
14+
@override
15+
State<MyReservationPage> createState() => _MyReservationPageState();
16+
}
17+
18+
class _MyReservationPageState extends State<MyReservationPage> {
19+
bool isFirst = true;
20+
List<ReservationExpansionItem> items = [];
21+
@override
22+
void didChangeDependencies() {
23+
if(isFirst) {
24+
_getData();
25+
}
26+
super.didChangeDependencies();
27+
}
28+
29+
_getData() async {
30+
String userName = await getLoggedInUserName();
31+
final reservations = await Provider.of<AppDataProvider>(context, listen: false).getMyReservations(userName);
32+
items = Provider.of<AppDataProvider>(context, listen: false).getExpansionItems(reservations);
33+
setState(() {
34+
35+
});
36+
}
37+
@override
38+
Widget build(BuildContext context) {
39+
return Scaffold(
40+
appBar: AppBar(
41+
title: const Text('Reservation List'),
42+
),
43+
body: SingleChildScrollView(
44+
child: Column(
45+
children: [
46+
// SearchBox(onSubmit: (value) {
47+
// _search(value);
48+
// }),
49+
ExpansionPanelList(
50+
expansionCallback: (index, isExpanded) {
51+
setState(() {
52+
items[index].isExpanded = !items[index].isExpanded;
53+
print("Item at index $index is now ${items[index].isExpanded}");
54+
});
55+
},
56+
children: items.map((item) => ExpansionPanel(
57+
isExpanded: item.isExpanded,
58+
headerBuilder: (context, isExpanded) => ReservationItemHeaderView(header: item.header),
59+
body: ReservationItemBodyView(body: item.body,)
60+
)).toList(),
61+
),
62+
],
63+
),
64+
),
65+
);
66+
}
67+
}

lib/providers/app_data_provider.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,12 @@ class AppDataProvider extends ChangeNotifier {
118118
return _reservationList;
119119
}
120120

121+
Future<List<BusReservation>> getMyReservations(String userName) async {
122+
_reservationList = await _dataSource.getMyReservation(userName);
123+
notifyListeners();
124+
return _reservationList;
125+
}
126+
121127
Future<List<BusReservation>> getReservationsByMobile(String mobile) {
122128
return _dataSource.getReservationsByMobile(mobile);
123129
}

lib/utils/constants.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ const String routeNameReservationPage = 'reservation';
2727
const String routeNameAddCityPage = 'add_city';
2828
const String routeNameSignUpPage = 'sign_up';
2929
const String routeNameUserDetailsPage = 'user_details';
30+
const String routeNameMyReservation = 'my_reservation';
3031
const String unknownErrMessage = 'Unknown error!';
3132

3233

0 commit comments

Comments
 (0)