diff --git a/lib/ui/journey/model/journey_model.dart b/lib/ui/journey/model/journey_model.dart new file mode 100644 index 0000000..e2f4c8f --- /dev/null +++ b/lib/ui/journey/model/journey_model.dart @@ -0,0 +1,23 @@ +import 'dart:convert'; + +class JourneyModel { + final String id; + final String title; + final String description; + + JourneyModel({ + required this.id, + required this.title, + required this.description, + }); + + factory JourneyModel.fromJsonString(String jsonString) { + Map json = jsonDecode(jsonString); + + return JourneyModel( + id: json['_id']! as String, + title: json['title']! as String, + description: json['description']! as String, + ); + } +} diff --git a/lib/ui/journey/model/journey_request.dart b/lib/ui/journey/model/journey_request.dart index 9374d2c..21c95e2 100644 --- a/lib/ui/journey/model/journey_request.dart +++ b/lib/ui/journey/model/journey_request.dart @@ -1,21 +1,15 @@ import 'dart:convert'; class JourneyRequest { - final String title; - final String description; - final String pointId; + final String subjectId; JourneyRequest({ - required this.title, - required this.description, - required this.pointId, + required this.subjectId, }); Map toJson() { return { - 'title': title, - 'description': description, - 'pointId': pointId, + 'subjectId': subjectId, }; } @@ -23,9 +17,7 @@ class JourneyRequest { final json = jsonDecode(jsonString); return JourneyRequest( - title: json['title']! as String, - description: json['description']! as String, - pointId: json['pointId']! as String, + subjectId: json['subjectId']! as String, ); } } diff --git a/lib/ui/journey/model/journey_response.dart b/lib/ui/journey/model/journey_response.dart deleted file mode 100644 index 745ca48..0000000 --- a/lib/ui/journey/model/journey_response.dart +++ /dev/null @@ -1,18 +0,0 @@ -import 'dart:convert'; - -class JourneyResponse { - final String title; - final String description; - final String pointId; - - JourneyResponse(this.title, this.description, this.pointId); - - factory JourneyResponse.fromJsonString(String jsonString) { - Map json = jsonDecode(jsonString); - return JourneyResponse( - json['title'] as String, - json['description'] as String, - json['pointId'] as String - ); - } -} diff --git a/lib/ui/journey/service/journey_service.dart b/lib/ui/journey/service/journey_service.dart index d19299c..adc03fc 100644 --- a/lib/ui/journey/service/journey_service.dart +++ b/lib/ui/journey/service/journey_service.dart @@ -1,27 +1,27 @@ import 'package:aranduapp/core/log/log.dart'; -import 'package:aranduapp/core/network/base_api.dart'; +import 'package:aranduapp/core/network/studio_maker_api.dart'; import 'package:aranduapp/ui/journey/model/journey_request.dart'; -import 'package:aranduapp/ui/journey/model/journey_response.dart'; +import 'package:aranduapp/ui/journey/model/journey_model.dart'; import 'package:dio/dio.dart'; class JourneyService { - Future?> getJourneys(JourneyRequest journeyRequest) async { - Log.d('Request Journey: ${journeyRequest.title}, ${journeyRequest.description}, ${journeyRequest.pointId}'); + Future> getJourneys(JourneyRequest journeyRequest) async { + Response response = await StudioMakerApi.getInstance() + .get(path: '/journeys/subjects/${journeyRequest.subjectId}'); - Response response = await BaseApi.getInstance(auth: true) - .get(path: '/journeys', data: journeyRequest.toJson()); + List subjectList = response.data as List; - Log.d('Response Journey: ${response.toString()}'); + Log.i(subjectList); - if (response.data != null) { - List journeyList = response.data as List; - return journeyList - .map((journeyJson) => JourneyResponse.fromJsonString(journeyJson)) - .toList(); - } else { - Log.e('Não é uma lista'); - return null; - } - + var res = subjectList.map((e) { + final Map subjectMap = e as Map; + + return JourneyModel( + id: subjectMap['_id']! as String, + title: subjectMap['title']! as String, + description: subjectMap['description']! as String); + }).toList(); + + return res; } } diff --git a/lib/ui/journey/view/journey_view.dart b/lib/ui/journey/view/journey_view.dart index aed8da9..fc99e71 100644 --- a/lib/ui/journey/view/journey_view.dart +++ b/lib/ui/journey/view/journey_view.dart @@ -61,14 +61,16 @@ class _JourneyScreen extends StatelessWidget { Widget _buildJourney(BuildContext context) { JourneyViewModel viewModel = Provider.of(context); + viewModel.getJourneyCommand.execute(subject.id); + return RefreshIndicator( - onRefresh: viewModel.journeyCommand.execute, + onRefresh: () => viewModel.getJourneyCommand.execute(subject.id), child: ListenableBuilder( - listenable: viewModel.journeyCommand, + listenable: viewModel.getJourneyCommand, builder: (context, child) { - if (viewModel.journeyCommand.isOk) { - return listView(viewModel); - } else if (viewModel.journeyCommand.isError) { + if (viewModel.getJourneyCommand.isOk) { + return _buildListView(context); + } else if (viewModel.getJourneyCommand.isError) { return const ErrorScreen(message: "Deslize para baixo"); } else { return const LoadingWidget(); @@ -78,12 +80,15 @@ class _JourneyScreen extends StatelessWidget { ); } - ListView listView(JourneyViewModel viewModel) { + ListView _buildListView(BuildContext context) { + + JourneyViewModel viewModel = Provider.of(context); + return ListView.builder( - itemCount: viewModel.journeyCommand.result!.asValue!.value.length, + itemCount: viewModel.getJourneyCommand.result!.asValue!.value.length, shrinkWrap: true, itemBuilder: (context, index) { - var journey = viewModel.journeyCommand.result!.asValue!.value[index]; + var journey = viewModel.getJourneyCommand.result!.asValue!.value[index]; return ListTile( leading: Icon( Icons.border_right, diff --git a/lib/ui/journey/viewmodel/journey_viewmodel.dart b/lib/ui/journey/viewmodel/journey_viewmodel.dart index 54d150e..b2ddd1f 100644 --- a/lib/ui/journey/viewmodel/journey_viewmodel.dart +++ b/lib/ui/journey/viewmodel/journey_viewmodel.dart @@ -1,30 +1,22 @@ import 'package:aranduapp/core/state/command.dart'; import 'package:aranduapp/ui/journey/model/journey_request.dart'; -import 'package:aranduapp/ui/journey/model/journey_response.dart'; +import 'package:aranduapp/ui/journey/model/journey_model.dart'; +import 'package:aranduapp/ui/journey/service/journey_service.dart'; import 'package:async/async.dart'; import 'package:flutter/material.dart'; +import 'package:get_it/get_it.dart'; class JourneyViewModel extends ChangeNotifier { - List journeys = []; - - late Command0> journeyCommand; + late Command1, String> getJourneyCommand; JourneyViewModel() { - journeyCommand = Command0(journey); - - journeyCommand.execute(); + getJourneyCommand = Command1(getJourney); } - Future>> journey() async { - - await Future.delayed(const Duration(seconds: 1)); - - final journeyRequest = JourneyRequest( - title: "Viagem ao Parque", - description: "Explorar o parque local com os amigos.", - pointId: "123", - ); + Future>> getJourney(String subjectId) async { + List res = await GetIt.instance() + .getJourneys(JourneyRequest(subjectId: subjectId)); - return Result.value(List.generate(50, (_) => journeyRequest)); + return Result.value(res); } } diff --git a/lib/ui/subjects/model/subject_model.dart b/lib/ui/subjects/model/subject_model.dart index 28ef297..82966a1 100644 --- a/lib/ui/subjects/model/subject_model.dart +++ b/lib/ui/subjects/model/subject_model.dart @@ -1,12 +1,14 @@ import 'dart:convert'; class SubjectModel { + final String id; final String name; final String shortName; final String description; SubjectModel({ + required this.id, required this.name, required this.shortName, required this.description, @@ -24,6 +26,7 @@ class SubjectModel { final json = jsonDecode(jsonString); return SubjectModel( + id: json['_id']! as String, name: json['name']! as String, shortName: json['shortName']! as String, description: json['description']! as String, diff --git a/lib/ui/subjects/service/subjects_service.dart b/lib/ui/subjects/service/subjects_service.dart index 7be49ed..312393e 100644 --- a/lib/ui/subjects/service/subjects_service.dart +++ b/lib/ui/subjects/service/subjects_service.dart @@ -16,6 +16,7 @@ class SubjectService { final Map subjectMap = e as Map; return SubjectModel( + id: subjectMap['_id']!, name: subjectMap['name']!, shortName: subjectMap['shortName']!, description: subjectMap['description']!);