-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
1072f1b
commit 032b57d
Showing
21 changed files
with
444 additions
and
200 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
37 changes: 37 additions & 0 deletions
37
flutter_client/lib/blocs/goodReceipts/goods_receipt_bloc.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
import 'package:flutter_bloc/flutter_bloc.dart'; | ||
import 'package:flutter_client/models/goods_receipt.dart'; | ||
import 'package:flutter_client/repositiories/goods_receipt/base_goods_receipt_repository.dart'; | ||
import 'package:meta/meta.dart'; | ||
|
||
part 'goods_receipt_event.dart'; | ||
part 'goods_receipt_state.dart'; | ||
|
||
class GoodsReceiptBloc extends Bloc<GoodsReceiptEvent, GoodsReceiptState> { | ||
final GoodsReceiptRepository _goodsReceiptRepository = | ||
GoodsReceiptRepository(); | ||
|
||
GoodsReceiptBloc() : super(GoodsReceiptInitial()) { | ||
on<GetGoodsReceiptsEvent>(_getGoodsReceiptsHandler); | ||
} | ||
|
||
// Load products | ||
void _getGoodsReceiptsHandler( | ||
GetGoodsReceiptsEvent event, Emitter<GoodsReceiptState> emit) async { | ||
emit( | ||
GoodsReceiptLoading(), | ||
); | ||
|
||
await _goodsReceiptRepository.getGoodsReceipts().then( | ||
(goodsReceipts) { | ||
emit(GoodsReceiptsLoaded(goodsReceipts: goodsReceipts)); | ||
}, | ||
).catchError( | ||
(error) { | ||
emit( | ||
const GoodsReceiptError( | ||
message: "Error loading goods receipts. Please try again."), | ||
); | ||
}, | ||
); | ||
} | ||
} |
10 changes: 10 additions & 0 deletions
10
flutter_client/lib/blocs/goodReceipts/goods_receipt_event.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
part of 'goods_receipt_bloc.dart'; | ||
|
||
@immutable | ||
abstract class GoodsReceiptEvent { | ||
const GoodsReceiptEvent(); | ||
} | ||
|
||
class GetGoodsReceiptsEvent extends GoodsReceiptEvent { | ||
const GetGoodsReceiptsEvent(); | ||
} |
26 changes: 26 additions & 0 deletions
26
flutter_client/lib/blocs/goodReceipts/goods_receipt_state.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
part of 'goods_receipt_bloc.dart'; | ||
|
||
@immutable | ||
sealed class GoodsReceiptState { | ||
const GoodsReceiptState(); | ||
} | ||
|
||
final class GoodsReceiptInitial extends GoodsReceiptState {} | ||
|
||
final class GoodsReceiptLoading extends GoodsReceiptState {} | ||
|
||
final class GoodsReceiptError extends GoodsReceiptState { | ||
final String message; | ||
|
||
const GoodsReceiptError({ | ||
required this.message, | ||
}); | ||
} | ||
|
||
final class GoodsReceiptsLoaded extends GoodsReceiptState { | ||
final List<GoodsReceipt> goodsReceipts; | ||
|
||
const GoodsReceiptsLoaded({ | ||
required this.goodsReceipts, | ||
}); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
import 'package:flutter_client/models/product_model.dart'; | ||
|
||
enum GoodsReceiptStatus { pendingShipping, received } | ||
|
||
class GoodsReceiptItem { | ||
final Product item; | ||
final int quantity; | ||
|
||
GoodsReceiptItem({ | ||
required this.item, | ||
required this.quantity, | ||
}); | ||
} | ||
|
||
class GoodsReceipt { | ||
final String id; | ||
final String supplier; | ||
final String site; | ||
final String siteManager; | ||
final String goodsReceiptId; | ||
final GoodsReceiptStatus status; | ||
final List<GoodsReceiptItem> items; | ||
final DateTime createdAt; | ||
|
||
GoodsReceipt({ | ||
required this.id, | ||
required this.supplier, | ||
required this.site, | ||
required this.siteManager, | ||
required this.goodsReceiptId, | ||
required this.status, | ||
required this.items, | ||
required this.createdAt, | ||
}); | ||
|
||
factory GoodsReceipt.fromJson(Map<String, dynamic> json) { | ||
return GoodsReceipt( | ||
id: json['_id'], | ||
supplier: json['supplier'], | ||
site: json['site'], | ||
siteManager: json['siteManager'], | ||
goodsReceiptId: json['goodReceiptId'], | ||
status: json['status'] == 'shipped' | ||
? GoodsReceiptStatus.received | ||
: GoodsReceiptStatus.pendingShipping, | ||
items: json['items'] | ||
.map<GoodsReceiptItem>( | ||
(item) => GoodsReceiptItem( | ||
item: Product.fromJson(item['item']), | ||
quantity: item['quantity'], | ||
), | ||
) | ||
.toList(), | ||
createdAt: DateTime.parse(json['createdAt']), | ||
); | ||
} | ||
} |
52 changes: 52 additions & 0 deletions
52
flutter_client/lib/repositiories/goods_receipt/base_goods_receipt_repository.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
import 'dart:convert'; | ||
import 'dart:developer' as developer; | ||
import 'package:flutter_client/repositiories/paths.dart'; | ||
import 'package:http/http.dart' as http; | ||
import 'package:shared_preferences/shared_preferences.dart'; | ||
|
||
import 'package:flutter_client/models/goods_receipt.dart'; | ||
import 'package:flutter_client/repositiories/goods_receipt/goods_receipt_repository.dart'; | ||
|
||
class GoodsReceiptRepository extends BaseGoodsReceiptRepository { | ||
@override | ||
Future<List<GoodsReceipt>> getGoodsReceipts() async { | ||
final List<GoodsReceipt> goodsReceiptList = []; | ||
final Uri goodsReceiptURL = Uri.https(hostName, getGoodsReceiptPath); | ||
|
||
final sharedPreferences = await SharedPreferences.getInstance(); | ||
final token = sharedPreferences.getString('jwt'); | ||
|
||
final headers = <String, String>{ | ||
'Authorization': 'Bearer $token', | ||
}; | ||
|
||
// send request to get all GOODS RECEIPTS | ||
final responseBody = await http | ||
.get(goodsReceiptURL, headers: headers) | ||
.then((response) => response.body) | ||
.catchError((error) { | ||
developer.log(error); | ||
throw Exception(error); | ||
}); | ||
final decodedBody = jsonDecode(responseBody); | ||
|
||
// get all GOODS RECEIPTS and add to list | ||
try { | ||
for (var goodsReceiptJson in decodedBody) { | ||
final goodsReceipt = GoodsReceipt.fromJson(goodsReceiptJson); | ||
goodsReceiptList.add(goodsReceipt); | ||
} | ||
} on TypeError catch (e) { | ||
developer.log('Error decoding json', stackTrace: e.stackTrace, error: e); | ||
throw Exception(e); | ||
} on Exception catch (e) { | ||
developer.log(e.toString()); | ||
throw Exception(e); | ||
} catch (e) { | ||
developer.log(e.toString()); | ||
throw Exception(e); | ||
} | ||
|
||
return goodsReceiptList; | ||
} | ||
} |
5 changes: 5 additions & 0 deletions
5
flutter_client/lib/repositiories/goods_receipt/goods_receipt_repository.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
import 'package:flutter_client/models/goods_receipt.dart'; | ||
|
||
abstract class BaseGoodsReceiptRepository { | ||
Future<List<GoodsReceipt>> getGoodsReceipts(); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.