Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Services #3

Open
wants to merge 12 commits into
base: dev-mobile
Choose a base branch
from
Prev Previous commit
Next Next commit
Add service works!
mo-kalaleeb committed Mar 12, 2021
commit c0425f718644e8f0523ab94853328656e9f7cbe0
2 changes: 1 addition & 1 deletion app/barter/lib/module_network/http_client/http_client.dart
Original file line number Diff line number Diff line change
@@ -71,7 +71,7 @@ class ApiClient {
var response = await _client.post(
url,
queryParameters: queryParams,
data: json.encode(payLoad),
data: payLoad,
);
return _processResponse(response);
} catch (e) {
Original file line number Diff line number Diff line change
@@ -2,6 +2,7 @@ import 'package:barter/consts/urls.dart';
import 'package:barter/module_network/http_client/http_client.dart';
import 'package:barter/module_services/request/add_service_request.dart';
import 'package:barter/module_services/response/category_list_response.dart';
import 'package:barter/module_services/response/create_service_response.dart';
import 'package:barter/module_services/response/members_response.dart';
import 'package:barter/module_services/response/service_details_response.dart';
import 'package:barter/module_services/response/service_response.dart';
@@ -11,12 +12,12 @@ import 'package:inject/inject.dart';
class ServicesRepository {
final client = ApiClient();

Future<ServicesResponse> createService(AddServiceRequest request) async {
Future<CreateServiceResponse> createService(AddServiceRequest request) async {
var response = await client.post(Urls.CREATE_SERVICE_API, request.toJson());

if (response == null) return null;

return ServicesResponse.fromJson(response);
return CreateServiceResponse.fromJson(response);
}

Future<ServicesResponse> getServices() async {
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
class CreateServiceResponse {
String statusCode;
String msg;
Data data;

CreateServiceResponse({this.statusCode, this.msg, this.data});

CreateServiceResponse.fromJson(Map<String, dynamic> json) {
statusCode = json['status_code'];
msg = json['msg'];
data = json['Data'] != null ? new Data.fromJson(json['Data']) : null;
}

Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['status_code'] = this.statusCode;
data['msg'] = this.msg;
if (this.data != null) {
data['Data'] = this.data.toJson();
}
return data;
}
}

class Data {
String serviceTitle;
String description;
Duration duration;
String categoryID;
Duration activeUntil;
bool enabled;
List<String> tags;

Data(
{this.serviceTitle,
this.description,
this.duration,
this.categoryID,
this.activeUntil,
this.enabled,
this.tags});

Data.fromJson(Map<String, dynamic> json) {
serviceTitle = json['serviceTitle'];
description = json['description'];
duration = json['duration'] != null
? new Duration.fromJson(json['duration'])
: null;
categoryID = json['categoryID'];
activeUntil = json['activeUntil'] != null
? new Duration.fromJson(json['activeUntil'])
: null;
enabled = json['enabled'];
tags = json['tags'].cast<String>();
}

Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['serviceTitle'] = this.serviceTitle;
data['description'] = this.description;
if (this.duration != null) {
data['duration'] = this.duration.toJson();
}
data['categoryID'] = this.categoryID;
if (this.activeUntil != null) {
data['activeUntil'] = this.activeUntil.toJson();
}
data['enabled'] = this.enabled;
data['tags'] = this.tags;
return data;
}
}

class Duration {
int offset;
int timestamp;

Duration({this.offset, this.timestamp});

Duration.fromJson(Map<String, dynamic> json) {
offset = json['offset'];
timestamp = json['timestamp'];
}

Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['offset'] = this.offset;
data['timestamp'] = this.timestamp;
return data;
}
}
4 changes: 2 additions & 2 deletions app/barter/lib/module_services/response/service_response.dart
Original file line number Diff line number Diff line change
@@ -37,8 +37,8 @@ class Data {
Duration activeUntil;
bool enabled;
List<String> tags;
Null userName;
Null userImage;
String userName;
String userImage;

Data(
{this.id,
10 changes: 5 additions & 5 deletions app/barter/lib/module_services/service/services_service.dart
Original file line number Diff line number Diff line change
@@ -52,20 +52,20 @@ class ServicesService {
var request = AddServiceRequest(
serviceTitle: serviceModel.name,
description: serviceModel.description,
activeUntil: serviceModel.activeUntil.toIso8601String(),
activeUntil: serviceModel.activeUntil?.toIso8601String() ?? '-1',
categoryID: serviceModel.categoryId,
tags: []
);

await _repository.createService(request);
return true;
var response = await _repository.createService(request);
return response != null;
}

Future<List<CategoryModel>> getCategories() async {
var response = await _repository.getCategories();
if (response == null) {
print('No Cats!');
return null;
} else {
print('Got Cats!');
var cats = <CategoryModel>[];
response.data.forEach((element) {
cats.add(CategoryModel(element.name, element.id.toString()));
Original file line number Diff line number Diff line change
@@ -17,7 +17,7 @@ class AddServiceStateManager {

void addService(AddServiceScreen screen, ServiceModel serviceModel) {
_service.addService(serviceModel).then((value) {
if (value == null) {
if (value != null) {
stateStream.add(AddServiceStateSuccess(screen));
} else {
stateStream.add(AddServiceStateError(screen, 'Error Saving the service'));
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import 'package:barter/module_services/model/service_model.dart';
import 'package:barter/module_services/state_manager/add_service_state_manager.dart';
import 'package:barter/module_services/ui/state/add_service_state/add_service_state.dart';
import 'package:barter/module_services/ui/state/add_service_state/add_service_state_loading.dart';
@@ -10,6 +11,10 @@ class AddServiceScreen extends StatefulWidget {
final AddServiceStateManager _stateManager;
AddServiceScreen(this._stateManager);

void addService(ServiceModel serviceModel) {
_stateManager.addService(this, serviceModel);
}

@override
State<StatefulWidget> createState() => _AddServiceScreenState();
}
Original file line number Diff line number Diff line change
@@ -2,6 +2,7 @@ import 'package:barter/module_services/model/category_model.dart';
import 'package:barter/module_services/ui/screen/add_service_screen.dart';
import 'package:barter/module_services/ui/state/add_service_state/add_service_state.dart';
import 'package:barter/module_services/ui/widget/create_service_form.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/src/widgets/framework.dart';

class AddServiceStateCategoriesAdded extends AddServiceState {
@@ -10,11 +11,13 @@ class AddServiceStateCategoriesAdded extends AddServiceState {

@override
Widget getUI(BuildContext context) {
return CreateServiceForm(
categories: categories,
onServiceAdd: (service) {
// TODO: Add When Adding Service Behaviour
},
return SingleChildScrollView(
child: CreateServiceForm(
categories: categories,
onServiceAdd: (service) {
screen.addService(service);
},
),
);
}
}
Original file line number Diff line number Diff line change
@@ -10,17 +10,19 @@ class AddServiceStateSuccess extends AddServiceState {

@override
Widget getUI(BuildContext context) {
return Column(
children: [
Center(
child: IconButton(
icon: Icon(Icons.check),
onPressed: () {
Navigator.of(context)
.pushNamedAndRemoveUntil(HomeRoutes.HOME_ROUTE, (r) => false);
},
)),
],
);
return Center(
child: Container(
decoration: BoxDecoration(
color: Theme.of(context).primaryColor,
shape: BoxShape.circle,
),
child: IconButton(
icon: Icon(Icons.check, color: Colors.white,),
onPressed: () {
Navigator.of(context)
.pushNamedAndRemoveUntil(HomeRoutes.HOME_ROUTE, (r) => false);
},
),
));
}
}
Original file line number Diff line number Diff line change
@@ -114,7 +114,7 @@ class _CreateServiceFormState extends State<CreateServiceForm> {
widget.onServiceAdd(ServiceModel(
name: _nameController.text,
description: _descriptionController.text,
categoryId: _category
categoryId: _category,
));
},
child: Text('Submit Service'),