Current File : /home/tradevaly/public_html/fresh/lib/data/repository/order_repo.dart |
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:flutter_grocery/data/datasource/remote/dio/dio_client.dart';
import 'package:flutter_grocery/data/datasource/remote/exception/api_error_handler.dart';
import 'package:flutter_grocery/data/model/body/place_order_body.dart';
import 'package:flutter_grocery/data/model/body/review_body.dart';
import 'package:flutter_grocery/data/model/response/base/api_response.dart';
import 'package:flutter_grocery/utill/app_constants.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:intl/intl.dart';
class OrderRepo {
final DioClient dioClient;
OrderRepo({@required this.dioClient});
Future<ApiResponse> getOrderList() async {
try {
final response = await dioClient.get(AppConstants.ORDER_LIST_URI);
return ApiResponse.withSuccess(response);
} catch (e) {
return ApiResponse.withError(ApiErrorHandler.getMessage(e));
}
}
Future<ApiResponse> getOrderDetails(String orderID, String languageCode) async {
try {
final response = await dioClient.get(
'${AppConstants.ORDER_DETAILS_URI}$orderID',
options: Options(headers: {'X-localization': languageCode}),
);
return ApiResponse.withSuccess(response);
} catch (e) {
return ApiResponse.withError(ApiErrorHandler.getMessage(e));
}
}
Future<ApiResponse> cancelOrder(String orderID) async {
try {
Map<String, dynamic> data = Map<String, dynamic>();
data['order_id'] = orderID;
data['_method'] = 'put';
final response = await dioClient.post(AppConstants.ORDER_CANCEL_URI, data: data);
return ApiResponse.withSuccess(response);
} catch (e) {
return ApiResponse.withError(ApiErrorHandler.getMessage(e));
}
}
Future<ApiResponse> trackOrder(String orderID) async {
try {
final response = await dioClient.get('${AppConstants.TRACK_URI}$orderID');
return ApiResponse.withSuccess(response);
} catch (e) {
return ApiResponse.withError(ApiErrorHandler.getMessage(e));
}
}
Future<ApiResponse> placeOrder(PlaceOrderBody orderBody) async {
try {
final response = await dioClient.post(AppConstants.PLACE_ORDER_URI, data: orderBody.toJson());
return ApiResponse.withSuccess(response);
} catch (e) {
return ApiResponse.withError(ApiErrorHandler.getMessage(e));
}
}
Future<ApiResponse> getDeliveryManData(String orderID) async {
try {
final response = await dioClient.get('${AppConstants.LAST_LOCATION_URI}$orderID');
return ApiResponse.withSuccess(response);
} catch (e) {
return ApiResponse.withError(ApiErrorHandler.getMessage(e));
}
}
Future<ApiResponse> getTimeSlot() async {
try {
final response = await dioClient.get('${AppConstants.TIMESLOT_URI}');
return ApiResponse.withSuccess(response);
} catch (e) {
return ApiResponse.withError(ApiErrorHandler.getMessage(e));
}
}
List<String> getDates(BuildContext context) {
List<String> _dates = [];
_dates.add(DateFormat('yyyy-MM-dd').format(DateTime.now()));
_dates.add(DateFormat('yyyy-MM-dd').format(DateTime.now().add(Duration(days: 1))));
_dates.add(DateFormat('yyyy-MM-dd').format(DateTime.now().add(Duration(days: 2))));
return _dates;
}
Future<ApiResponse> updatePaymentMethod(String orderID) async {
try {
Map<String, dynamic> data = Map<String, dynamic>();
data['order_id'] = orderID;
data['_method'] = 'put';
data['payment_method'] = 'cash_on_delivery';
final response = await dioClient.post(AppConstants.UPDATE_METHOD_URI, data: data);
return ApiResponse.withSuccess(response);
} catch (e) {
return ApiResponse.withError(ApiErrorHandler.getMessage(e));
}
}
Future<ApiResponse> submitReview(ReviewBody reviewBody) async {
try {
final response = await dioClient.post(AppConstants.REVIEW_URI, data: reviewBody);
return ApiResponse.withSuccess(response);
} catch (e) {
return ApiResponse.withError(ApiErrorHandler.getMessage(e));
}
}
Future<ApiResponse> submitDeliveryManReview(ReviewBody reviewBody) async {
try {
final response = await dioClient.post(AppConstants.DELIVER_MAN_REVIEW_URI, data: reviewBody);
return ApiResponse.withSuccess(response);
} catch (e) {
return ApiResponse.withError(ApiErrorHandler.getMessage(e));
}
}
Future<ApiResponse> getDistanceInMeter(LatLng originLatLng, LatLng destinationLatLng) async {
try {
Response response = await dioClient.get('${AppConstants.DISTANCE_MATRIX_URI}'
'?origin_lat=${originLatLng.latitude}&origin_lng=${originLatLng.longitude}'
'&destination_lat=${destinationLatLng.latitude}&destination_lng=${destinationLatLng.longitude}');
return ApiResponse.withSuccess(response);
} catch (e) {
return ApiResponse.withError(ApiErrorHandler.getMessage(e));
}
}
}