From a0569a0986db1da3d8c4c871934851938735f1cd Mon Sep 17 00:00:00 2001 From: Sai Naw Wun Date: Wed, 7 Oct 2020 17:22:01 +0630 Subject: [PATCH] add fcs shipment service --- .../provider/fcs_shipment_data_provider.dart | 23 ++++++++++++++ lib/data/services/fcs_shipment_imp.dart | 31 +++++++++++++++++++ lib/data/services/fcs_shipment_service.dart | 7 +++++ lib/data/services/services.dart | 7 +++++ lib/domain/entities/fcs_shipment.dart | 21 ++++++++++++- 5 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 lib/data/provider/fcs_shipment_data_provider.dart create mode 100644 lib/data/services/fcs_shipment_imp.dart create mode 100644 lib/data/services/fcs_shipment_service.dart diff --git a/lib/data/provider/fcs_shipment_data_provider.dart b/lib/data/provider/fcs_shipment_data_provider.dart new file mode 100644 index 0000000..ea415f7 --- /dev/null +++ b/lib/data/provider/fcs_shipment_data_provider.dart @@ -0,0 +1,23 @@ +import 'package:fcs/domain/entities/fcs_shipment.dart'; +import 'package:fcs/helpers/api_helper.dart'; +import 'package:fcs/helpers/firebase_helper.dart'; +import 'package:logging/logging.dart'; + +class FcsShipmentDataProvider { + final log = Logger('FcsShipmentDataProvider'); + + Future createFcsShipment(FcsShipment fcsShipment) async { + return await requestAPI("/fcs_shipments", "POST", + payload: fcsShipment.toMap(), token: await getToken()); + } + + Future updateFcsShipment(FcsShipment fcsShipment) async { + return await requestAPI("/fcs_shipments", "PUT", + payload: fcsShipment.toMap(), token: await getToken()); + } + + Future deleteFcsShipment(FcsShipment fcsShipment) async { + return await requestAPI("/fcs_shipments", "DELETE", + payload: fcsShipment.toMap(), token: await getToken()); + } +} diff --git a/lib/data/services/fcs_shipment_imp.dart b/lib/data/services/fcs_shipment_imp.dart new file mode 100644 index 0000000..648aaed --- /dev/null +++ b/lib/data/services/fcs_shipment_imp.dart @@ -0,0 +1,31 @@ +import 'package:fcs/data/provider/fcs_shipment_data_provider.dart'; +import 'package:fcs/domain/entities/connectivity.dart'; +import 'package:fcs/domain/entities/fcs_shipment.dart'; +import 'package:flutter/material.dart'; + +import 'fcs_shipment_service.dart'; + +class FcsShipmentServiceImp implements FcsShipmentService { + FcsShipmentServiceImp({ + @required this.connectivity, + @required this.shipmentDataProvider, + }); + + final Connectivity connectivity; + final FcsShipmentDataProvider shipmentDataProvider; + + @override + Future createFcsShipment(FcsShipment fcsShipment) { + return shipmentDataProvider.createFcsShipment(fcsShipment); + } + + @override + Future updateFcsShipment(FcsShipment fcsShipment) { + return shipmentDataProvider.updateFcsShipment(fcsShipment); + } + + @override + Future deleteFcsShipment(FcsShipment fcsShipment) { + return shipmentDataProvider.deleteFcsShipment(fcsShipment); + } +} diff --git a/lib/data/services/fcs_shipment_service.dart b/lib/data/services/fcs_shipment_service.dart new file mode 100644 index 0000000..32a67c4 --- /dev/null +++ b/lib/data/services/fcs_shipment_service.dart @@ -0,0 +1,7 @@ +import 'package:fcs/domain/entities/fcs_shipment.dart'; + +abstract class FcsShipmentService { + Future createFcsShipment(FcsShipment fcsShipment); + Future updateFcsShipment(FcsShipment fcsShipment); + Future deleteFcsShipment(FcsShipment fcsShipment); +} diff --git a/lib/data/services/services.dart b/lib/data/services/services.dart index f1ba58b..c629e76 100644 --- a/lib/data/services/services.dart +++ b/lib/data/services/services.dart @@ -1,7 +1,10 @@ import 'package:fcs/data/provider/auth_fb.dart'; import 'package:fcs/data/provider/common_data_provider.dart'; +import 'package:fcs/data/provider/fcs_shipment_data_provider.dart'; import 'package:fcs/data/provider/package_data_provider.dart'; import 'package:fcs/data/provider/user_data_provider.dart'; +import 'package:fcs/data/services/fcs_shipment_imp.dart'; +import 'package:fcs/data/services/fcs_shipment_service.dart'; import 'auth_imp.dart'; import 'auth_service.dart'; @@ -22,6 +25,7 @@ class Services { PackageService _packageService; MessagingService _messagingService; CommonService _commonService; + FcsShipmentService _fcsShipmentService; Services._() { _authService = AuthServiceImp( authFb: AuthFb.instance, @@ -33,6 +37,8 @@ class Services { _packageService = PackageServiceImp( connectivity: null, packageDataProvider: PackageDataProvider()); _commonService = CommonServiceImp(commonDataProvider: CommonDataProvider()); + _fcsShipmentService = FcsShipmentServiceImp( + connectivity: null, shipmentDataProvider: FcsShipmentDataProvider()); } AuthService get authService => _authService; @@ -40,4 +46,5 @@ class Services { MessagingService get messagingService => _messagingService; PackageService get packageService => _packageService; CommonService get commonService => _commonService; + FcsShipmentService get fcsShipmentService => _fcsShipmentService; } diff --git a/lib/domain/entities/fcs_shipment.dart b/lib/domain/entities/fcs_shipment.dart index 7d4326a..a9802db 100644 --- a/lib/domain/entities/fcs_shipment.dart +++ b/lib/domain/entities/fcs_shipment.dart @@ -1,4 +1,5 @@ class FcsShipment { + String id; DateTime shipDate; String shipmentNumber; DateTime cutoffDate; @@ -11,7 +12,8 @@ class FcsShipment { String status; String remark; FcsShipment( - {this.shipDate, + {this.id, + this.shipDate, this.shipmentNumber, this.cutoffDate, this.shipType, @@ -22,4 +24,21 @@ class FcsShipment { this.port, this.destination, this.remark}); + + Map toMap() { + return { + "id": id, + 'shipment_date': shipDate?.toUtc()?.toIso8601String(), + 'shipment_number': shipmentNumber, + 'cutoff_date': cutoffDate?.toUtc()?.toIso8601String(), + 'shipment_type': shipType, + 'arrival_date': arrivalDate?.toUtc()?.toIso8601String(), + 'departure_date': departureDate?.toUtc()?.toIso8601String(), + 'consignee': consignee, + 'port': port, + 'destination': destination, + 'status': status, + 'remark': remark, + }; + } }