Skip to content

Commit

Permalink
update project
Browse files Browse the repository at this point in the history
  • Loading branch information
a4ifka committed Apr 18, 2024
1 parent 2268aab commit de6056c
Show file tree
Hide file tree
Showing 8 changed files with 376 additions and 202 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,42 +11,42 @@ class DailySalaryCubit extends Cubit<DailySalaryState> {
final GetUserOrdersByDay getUserOrdersByDay;
final GetOrderItems getOrderItems;

DailySalaryCubit({required this.getUserOrdersByDay, required this.getOrderItems})
DailySalaryCubit(
{required this.getUserOrdersByDay, required this.getOrderItems})
: super(DailySalaryInitial());

getDailySalary(DateTime today) async {
emit(DailySalaryLoading());



final ordersResponse = await getUserOrdersByDay(OrdersByDayParams(
year: today.year,
month: today.month,
day: today.day,
isDelivered: true));

Decimal salary = Decimal.fromInt(0);

ordersResponse.fold(
(failure) => emit(DailySalaryFailure(message: failure.toString())),
(orders) async {
List<ItemEntity> items = [];

for (var order in orders){
final itemsResponse = await getOrderItems(ItemParams(orderId: int.parse(order.orderNumber)));
itemsResponse.fold(
(failure) => emit(DailySalaryFailure(message: failure.toString())),
(orders) async {
List<ItemEntity> items = [];

for (var order in orders) {
final itemsResponse = await getOrderItems(
ItemParams(orderId: int.parse(order.orderNumber)));
itemsResponse.fold(
(failure) => emit(DailySalaryFailure(message: failure.toString())),
(itemsFromResponse) => itemsFromResponse.forEach(items.add)
);
}

if(state is DailySalaryFailure) return;

for(var item in items){
salary += item.cost * Decimal.fromInt(item.count);
}
emit(DailySalarySuccess(salary: salary));
(itemsFromResponse) => itemsFromResponse.forEach(items.add));
}

if (state is DailySalaryFailure) return;

for (var item in items) {
Decimal orderSalary = (item.cost / Decimal.fromInt(100)).toDecimal() *
Decimal.fromInt(40);
salary += orderSalary * Decimal.fromInt(item.count);
}
);
emit(DailySalarySuccess(salary: salary));
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ class MonthSalaryCubit extends Cubit<MonthSalaryState> {
Decimal orderSalary = ((item.cost / Decimal.fromInt(100)).toDecimal() *
Decimal.fromInt(40));
salaryByMonth +=
(orderSalary * Decimal.fromInt(item.count)) + Decimal.fromInt(1500);
(orderSalary * Decimal.fromInt(item.count)) + Decimal.fromInt(1000);
}
emit(MonthSalarySuccess(salary: salaryByMonth));
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,21 @@ class OrdersCostCubit extends Cubit<OrdersCostState> {
(fail) => emit(OrdersCostFailure(message: fail.toString())),
(orders) async {
Map<int, Decimal> costs = {};

Map<int, Decimal> costsForRecent = {};
for (final order in orders){
final itemsResponse = await getOrderItems(ItemParams(orderId: int.parse(order.orderNumber)));

itemsResponse.fold(
(failure) => emit(OrdersCostFailure(message: failure.toString())),
(itemsFromResponse) {
costs.putIfAbsent(order.id, () {
Decimal orderCost = Decimal.zero;
for(final item in itemsFromResponse){
orderCost += item.cost * Decimal.fromInt(item.count);
}
return orderCost;
});
costsForRecent.putIfAbsent(order.id, () {
Decimal orderCost = Decimal.zero;
for(final item in itemsFromResponse){
orderCost += item.cost * Decimal.fromInt(item.count);
Expand All @@ -50,7 +57,7 @@ class OrdersCostCubit extends Cubit<OrdersCostState> {

if(state is OrdersCostFailure) return;

emit(OrdersCostSuccess(costs: costs));
emit(OrdersCostSuccess(costs: costs, costsForRecent: costsForRecent));
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@ final class OrdersCostLoading extends OrdersCostState {}

final class OrdersCostSuccess extends OrdersCostState {
final Map<int, Decimal> costs;

const OrdersCostSuccess({required this.costs});
final Map<int, Decimal> costsForRecent;
const OrdersCostSuccess({required this.costs, required this.costsForRecent});

@override
get props => [costs];
get props => [costs, costsForRecent];
}

final class OrdersCostFailure extends OrdersCostState {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ class StatisticCubit extends Cubit<StatisticState> {
if (salaryByDates.containsKey(i)) {
Decimal orderSalary =
((salaryByDates[i]! / Decimal.fromInt(100)).toDecimal() *
Decimal.fromInt(40)) + Decimal.fromInt(1500);
Decimal.fromInt(40)) + Decimal.fromInt(1000);

salary.add(orderSalary);
} else {
Expand Down
46 changes: 44 additions & 2 deletions lib/feature/presentation/pages/order_detail_screen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import 'package:iiko_delivery/feature/presentation/bloc/item_cubit/item_cubit.da
import 'package:iiko_delivery/feature/presentation/bloc/item_cubit/item_state.dart';
import 'package:iiko_delivery/feature/presentation/bloc/location_cubit/location_cubit.dart';
import 'package:iiko_delivery/feature/presentation/bloc/location_cubit/location_state.dart';
import 'package:iiko_delivery/feature/presentation/bloc/orders_cost_cubit/orders_cost_cubit.dart';
import 'package:iiko_delivery/feature/presentation/bloc/set_delivered_cubit/set_delivered_cubit.dart';
import 'package:iiko_delivery/feature/presentation/bloc/set_delivered_cubit/set_delivered_state.dart';
import 'package:iiko_delivery/feature/presentation/widgets/item_list_widget.dart';
Expand All @@ -25,8 +26,10 @@ class _OrderDetailPageState extends State<OrderDetailPage> {
Widget build(BuildContext context) {
final order = ModalRoute.of(context)!.settings.arguments as OrderEntity;
int orderId = order.id;
bool isDelivered = order.isDelivered;
context.read<ItemCubit>().getOrderItems(order.id);
context.read<LocationCubit>().getPhoneLocation(order.address);
context.read<OrdersCostCubit>().getOrdersCost(isDelivered);

BitmapDescriptor address = BitmapDescriptor.defaultMarker;
BitmapDescriptor home = BitmapDescriptor.defaultMarker;
Expand All @@ -41,7 +44,7 @@ class _OrderDetailPageState extends State<OrderDetailPage> {
// Начальная точка

String googleMapsUrl =
'https://www.google.com/maps/dir/?api=1&origin=$startLat,$startLong&destination=$destinationLat,$destinationLong&travelmode=driving';
'geo:$startLat,$startLong?q=$destinationLat,$destinationLong';

// ignore: deprecated_member_use
if (await canLaunch(googleMapsUrl)) {
Expand Down Expand Up @@ -76,7 +79,8 @@ class _OrderDetailPageState extends State<OrderDetailPage> {
body: Container(
color: const Color(0xFFFAF7F5),
child: Padding(
padding: const EdgeInsets.only(right: 20, left: 20, top: 10, bottom: 20),
padding:
const EdgeInsets.only(right: 20, left: 20, top: 10, bottom: 20),
child: Container(
color: const Color(0xFFFAF7F5),
constraints: BoxConstraints(
Expand Down Expand Up @@ -315,6 +319,44 @@ class _OrderDetailPageState extends State<OrderDetailPage> {
},
),
),
BlocBuilder<OrdersCostCubit, OrdersCostState>(
builder: (context, state) {
if (state is OrdersCostSuccess) {
return Text(
"Итоговая стоимость ${state.costs[orderId]!.toStringAsFixed(2)} ₽ ",
style: const TextStyle(
color: Colors.black,
fontSize: 17,
fontFamily: 'Nunito',
fontWeight: FontWeight.w400,
),
);
} else if (state is OrdersCostFailure) {
return Text(state.message);
} else {
return const Text('Loading...');
}
},
),
BlocBuilder<OrdersCostCubit, OrdersCostState>(
builder: (context, state) {
if (state is OrdersCostSuccess) {
return Text(
"Процент курьера ${state.costsForRecent[orderId]!.toStringAsFixed(2)} ₽ (40%)",
style: const TextStyle(
color: Colors.black,
fontSize: 17,
fontFamily: 'Nunito',
fontWeight: FontWeight.w400,
),
);
} else if (state is OrdersCostFailure) {
return Text(state.message);
} else {
return const Text('Loading...');
}
},
),
Align(
alignment: Alignment.bottomLeft,
child: SwipeableButtonView(
Expand Down
Loading

0 comments on commit de6056c

Please sign in to comment.