Skip to content

Commit

Permalink
Merge pull request #95 from fga-eps-mds/feat#64/Journey-backend
Browse files Browse the repository at this point in the history
Feat#64/journey backend
  • Loading branch information
GabrielCostaDeOliveira authored Jan 24, 2025
2 parents e5c3321 + 67e2649 commit 79cdb87
Show file tree
Hide file tree
Showing 8 changed files with 70 additions and 72 deletions.
23 changes: 23 additions & 0 deletions lib/ui/journey/model/journey_model.dart
Original file line number Diff line number Diff line change
@@ -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<String, dynamic> json = jsonDecode(jsonString);

return JourneyModel(
id: json['_id']! as String,
title: json['title']! as String,
description: json['description']! as String,
);
}
}
16 changes: 4 additions & 12 deletions lib/ui/journey/model/journey_request.dart
Original file line number Diff line number Diff line change
@@ -1,31 +1,23 @@
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<String, dynamic> toJson() {
return <String, dynamic>{
'title': title,
'description': description,
'pointId': pointId,
'subjectId': subjectId,
};
}

factory JourneyRequest.fromJsonString(String jsonString) {
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,
);
}
}
18 changes: 0 additions & 18 deletions lib/ui/journey/model/journey_response.dart

This file was deleted.

34 changes: 17 additions & 17 deletions lib/ui/journey/service/journey_service.dart
Original file line number Diff line number Diff line change
@@ -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<List<JourneyResponse>?> getJourneys(JourneyRequest journeyRequest) async {
Log.d('Request Journey: ${journeyRequest.title}, ${journeyRequest.description}, ${journeyRequest.pointId}');
Future<List<JourneyModel>> 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<dynamic> subjectList = response.data as List<dynamic>;

Log.d('Response Journey: ${response.toString()}');
Log.i(subjectList);

if (response.data != null) {
List<dynamic> journeyList = response.data as List<dynamic>;
return journeyList
.map((journeyJson) => JourneyResponse.fromJsonString(journeyJson))
.toList();
} else {
Log.e('Não é uma lista');
return null;
}

var res = subjectList.map((e) {
final Map<String, dynamic> subjectMap = e as Map<String, dynamic>;

return JourneyModel(
id: subjectMap['_id']! as String,
title: subjectMap['title']! as String,
description: subjectMap['description']! as String);
}).toList();

return res;
}
}
21 changes: 13 additions & 8 deletions lib/ui/journey/view/journey_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -61,14 +61,16 @@ class _JourneyScreen extends StatelessWidget {
Widget _buildJourney(BuildContext context) {
JourneyViewModel viewModel = Provider.of<JourneyViewModel>(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();
Expand All @@ -78,12 +80,15 @@ class _JourneyScreen extends StatelessWidget {
);
}

ListView listView(JourneyViewModel viewModel) {
ListView _buildListView(BuildContext context) {

JourneyViewModel viewModel = Provider.of<JourneyViewModel>(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,
Expand Down
26 changes: 9 additions & 17 deletions lib/ui/journey/viewmodel/journey_viewmodel.dart
Original file line number Diff line number Diff line change
@@ -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<JourneyResponse> journeys = [];

late Command0<List<JourneyRequest>> journeyCommand;
late Command1<List<JourneyModel>, String> getJourneyCommand;

JourneyViewModel() {
journeyCommand = Command0(journey);

journeyCommand.execute();
getJourneyCommand = Command1(getJourney);
}

Future<Result<List<JourneyRequest>>> 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<Result<List<JourneyModel>>> getJourney(String subjectId) async {
List<JourneyModel> res = await GetIt.instance<JourneyService>()
.getJourneys(JourneyRequest(subjectId: subjectId));

return Result.value(List.generate(50, (_) => journeyRequest));
return Result.value(res);
}
}
3 changes: 3 additions & 0 deletions lib/ui/subjects/model/subject_model.dart
Original file line number Diff line number Diff line change
@@ -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,
Expand All @@ -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,
Expand Down
1 change: 1 addition & 0 deletions lib/ui/subjects/service/subjects_service.dart
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ class SubjectService {
final Map<String, dynamic> subjectMap = e as Map<String, dynamic>;

return SubjectModel(
id: subjectMap['_id']!,
name: subjectMap['name']!,
shortName: subjectMap['shortName']!,
description: subjectMap['description']!);
Expand Down

0 comments on commit 79cdb87

Please sign in to comment.