Skip to content

Commit

Permalink
Merge pull request #57 from SLIIT-Y3S2/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
Sandaru-IT21001352 committed Oct 29, 2023
2 parents 5a76103 + 30f9a53 commit afe71b3
Show file tree
Hide file tree
Showing 15 changed files with 359 additions and 56 deletions.
37 changes: 28 additions & 9 deletions flutter_client/lib/blocs/cart/cart_bloc.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,16 @@ import 'package:bloc/bloc.dart';
import 'package:flutter_client/models/order.dart';
import 'package:flutter_client/models/order_product.dart';
import 'package:flutter_client/models/product_model.dart';
import 'package:flutter_client/models/user_model.dart';
import 'package:meta/meta.dart';

part 'cart_event.dart';
part 'cart_state.dart';

class CartBloc extends Bloc<CartEvent, CartState> {
late User supplier;
final List<OrderProduct> _cart = [];
double _cartTotal = 0;
double cartTotal = 0;
final List<Product> _temporaryProducts = [];

CartBloc() : super(CartInitial()) {
Expand All @@ -19,6 +21,23 @@ class CartBloc extends Bloc<CartEvent, CartState> {
on<RemoveProductFromCartEvent>(_removeProductFromCartHandler);
on<IncreaseProductQuantityEvent>(_increaseProductQuantityHandler);
on<DecreaseProductQuantityEvent>(_decreaseProductQuantityHandler);
on<ConfirmOrderEvent>(_confirmOrderHandler);
}

//Confirm order
void _confirmOrderHandler(
ConfirmOrderEvent event,
Emitter<CartState> emit,
) {
Order order = Order(
dateToBeDelivered: event.dateToBeDelivered,
products: event.orderProducts,
siteManagerId: event.supplier.id,
siteId: event.siteId,
supplierId: event.supplier.id,
);

emit(OrderConfirmed(order: order));
}

//Calculate cart total
Expand All @@ -39,9 +58,9 @@ class CartBloc extends Bloc<CartEvent, CartState> {
}
}

_cartTotal = calculateCartTotal();
cartTotal = calculateCartTotal();

emit(ProductCartUpdated(orderProducts: _cart, cartTotal: _cartTotal));
emit(ProductCartUpdated(orderProducts: _cart, cartTotal: cartTotal));
}

//Decrease product quantity
Expand All @@ -53,9 +72,9 @@ class CartBloc extends Bloc<CartEvent, CartState> {
}
}

_cartTotal = calculateCartTotal();
cartTotal = calculateCartTotal();

emit(ProductCartUpdated(orderProducts: _cart, cartTotal: _cartTotal));
emit(ProductCartUpdated(orderProducts: _cart, cartTotal: cartTotal));
}

// Add product to cart
Expand All @@ -73,9 +92,9 @@ class CartBloc extends Bloc<CartEvent, CartState> {
_cart.add(orderProduct);
_temporaryProducts.add(event.product);

_cartTotal = calculateCartTotal();
cartTotal = calculateCartTotal();

emit(ProductCartUpdated(orderProducts: _cart, cartTotal: _cartTotal));
emit(ProductCartUpdated(orderProducts: _cart, cartTotal: cartTotal));
}

//Load Cart
Expand Down Expand Up @@ -103,11 +122,11 @@ class CartBloc extends Bloc<CartEvent, CartState> {
}
}

_cartTotal = calculateCartTotal();
cartTotal = calculateCartTotal();

emit(ProductCartUpdated(
orderProducts: _cart,
cartTotal: _cartTotal,
cartTotal: cartTotal,
));
}
}
17 changes: 17 additions & 0 deletions flutter_client/lib/blocs/cart/cart_event.dart
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,20 @@ class DecreaseProductQuantityEvent extends CartEvent {
required this.orderProduct,
});
}

class ConfirmOrderEvent extends CartEvent {
final List<OrderProduct> orderProducts;
final double cartTotal;
final User supplier;
final User customer;
final String siteId;
final DateTime dateToBeDelivered;
const ConfirmOrderEvent({
required this.dateToBeDelivered,
required this.orderProducts,
required this.cartTotal,
required this.supplier,
required this.customer,
required this.siteId,
});
}
10 changes: 10 additions & 0 deletions flutter_client/lib/blocs/cart/cart_state.dart
Original file line number Diff line number Diff line change
Expand Up @@ -40,3 +40,13 @@ final class RestoreProductToProductList extends CartState {
required this.product,
});
}

final class OrderConfirmed extends CartState {
final Order order;

const OrderConfirmed({
required this.order,
});
}

final class ConfirmingOrder extends CartState {}
2 changes: 2 additions & 0 deletions flutter_client/lib/constants.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ const Color kSeedColor = Color(0xFF2F1160);

const Color kPrimaryColor = Color(0xFF2F1160);

const Color kSurfaceColor = Color(0xFFF4F4F4);

//order status colors

const Color viewPending = Color(0xFFFFD700);
Expand Down
8 changes: 8 additions & 0 deletions flutter_client/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_client/blocs/auth/auth_bloc.dart';
import 'package:flutter_client/blocs/cart/cart_bloc.dart';
import 'package:flutter_client/blocs/order/order_bloc.dart';
import 'package:flutter_client/blocs/products/products_bloc.dart';
import 'package:flutter_client/blocs/site/site_bloc.dart';
import 'package:flutter_client/procument_mobile_app.dart';
import 'package:flutter_client/repositiories/auth/auth_repository.dart';

Expand All @@ -22,6 +24,12 @@ void main() {
),
RepositoryProvider(
create: (context) => CartBloc(),
),
RepositoryProvider(
create: (context) => SiteBloc(),
),
RepositoryProvider(
create: (context) => OrderBloc(),
)
],
child: const ProcumentMobileApp(),
Expand Down
13 changes: 3 additions & 10 deletions flutter_client/lib/models/order.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,27 +2,20 @@ import 'package:flutter_client/models/order_product.dart';

class Order {
final String supplierId;
final String orderId;
final String? orderId;
final DateTime dateToBeDelivered;
final String siteId;
final String siteManagerId;
final List<OrderProduct> products;

Order({
required this.supplierId,
required this.orderId,
this.orderId,
required this.dateToBeDelivered,
required this.siteId,
required this.siteManagerId,
required this.products,
});
//TODO Remove this constructor
// Order.init({
// required this.orderId,
// required this.dateToBeDelivered,
// required this.siteId,
// required this.siteManagerId,
// }) : products = [];

set setProducts(List<OrderProduct> products) {
products = products;
Expand All @@ -42,7 +35,7 @@ class Order {
Map<String, dynamic> toJson() {
return {
'orderId': orderId,
'dateToBeDelivered': dateToBeDelivered.toIso8601String(),
'dateToBeDelivered': dateToBeDelivered,
'site': siteId,
'siteManager': siteManagerId,
'supplier': supplierId,
Expand Down
13 changes: 9 additions & 4 deletions flutter_client/lib/procument_mobile_app.dart
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import 'dart:developer' as developer;

import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_client/blocs/auth/auth_bloc.dart';
import 'package:flutter_client/constants.dart';
import 'package:flutter_client/repositiories/auth/auth_repository.dart';
import 'package:flutter_client/screens/home_screen.dart';
import 'package:flutter_client/screens/login_screen.dart';
import 'package:flutter_client/screens/main_screen.dart';
import 'package:google_fonts/google_fonts.dart';
Expand Down Expand Up @@ -34,7 +35,11 @@ class _ProcumentMobileAppState extends State<ProcumentMobileApp> {
}
});
}).catchError((error) {
print(error);
developer.log(
error,
name: 'procument_mobile_app.dart',
stackTrace: error,
);
});
}

Expand Down Expand Up @@ -73,12 +78,12 @@ class _ProcumentMobileAppState extends State<ProcumentMobileApp> {
colorScheme: ColorScheme.fromSeed(
seedColor: kSeedColor,
primary: kPrimaryColor,
surface: kSurfaceColor,
),
textTheme: GoogleFonts.interTextTheme(),
useMaterial3: true,
),
// home: _isTokenAvailable ? const MainScreen() : const LoginScreen(),
home: const MainScreen(),
home: _isTokenAvailable ? const MainScreen() : const LoginScreen(),
),
);
}
Expand Down
9 changes: 9 additions & 0 deletions flutter_client/lib/repositiories/auth/auth_repository.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'dart:async';
import 'dart:convert';
import 'dart:developer' as developer;

import 'package:flutter_client/exceptions/auth_exceptions.dart';
import 'package:flutter_client/repositiories/auth/base_auth_repository.dart';
Expand All @@ -26,9 +27,14 @@ class AuthRepository extends BaseAuthRepository {
throw UnauthorizedException('Failed to login');
}
} on JWTExpiredException catch (e) {
developer.log(e.message, name: "AuthRepository");
throw TokenExpiredException(e.message);
} on JWTException catch (ex) {
developer.log(ex.message, name: "AuthRepository");
throw AuthException(ex.message); // ex: invalid signature
} catch (e) {
developer.log(e.toString(), name: "AuthRepository");
throw AuthException(e.toString());
}
}
}
Expand Down Expand Up @@ -78,10 +84,13 @@ class AuthRepository extends BaseAuthRepository {
throw UnauthorizedException('Failed to login');
}
} on JWTExpiredException catch (e) {
developer.log(e.message, name: "AuthRepository");
throw TokenExpiredException(e.message);
} on JWTException catch (ex) {
developer.log(ex.message, name: "AuthRepository");
throw AuthException(ex.message); // ex: invalid signature
} catch (e) {
developer.log(e.toString(), name: "AuthRepository");
throw AuthException(e.toString());
}
}
Expand Down
18 changes: 15 additions & 3 deletions flutter_client/lib/repositiories/order/order_repository.dart
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,28 @@ class OrderRepository extends BaseOrderRepository {
'Authorization': 'Bearer $token',
};

final body = {};
final body = {
'orderId': order.orderId,
'dateToBeDelivered': order.dateToBeDelivered.toString(),
'site': order.siteId,
'siteManager': order.siteManagerId,
'supplier': order.supplierId,
'products': [
...order.products.map(
(product) => product.toJson(),
)
],
};

// send request to get all suppliers
final responseBody = await http
.post(orderURL, headers: headers)
.then((response) => response.body)
.post(orderURL, headers: headers, body: body)
// .then((response) => response.body)
.catchError((error) {
developer.log(error);
throw Exception(error);
});
developer.log("responseBody: ${responseBody.statusCode}");
return true;
}

Expand Down
1 change: 1 addition & 0 deletions flutter_client/lib/repositiories/paths.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ const String hostName = 'procument-backend-61616eb5472a.herokuapp.com';
const String supplierPath = 'api/suppliers';
const String orderPath = 'api/orders';
const String authPath = 'api/login';
const String sitePath = 'api/sites';
Loading

0 comments on commit afe71b3

Please sign in to comment.