Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added assets/images/flower_logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/whatsapp.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
38 changes: 25 additions & 13 deletions assets/translations/ar.json
Original file line number Diff line number Diff line change
Expand Up @@ -179,17 +179,15 @@
"failed_to_save_address": "فشل حفظ العنوان",
"addNewAddress": "إضافة عنوان جديد",
"savedAddress": "تم حفظ العنوان",
"recipient_phone": "Recipient phone",
"english": "English",
"sortBy": "Sort By",
"lowestPrice": "Lowest Price",
"highestPrice": "Highest Price",
"newest": "Newest",
"oldest": "Oldest",
"discount": "Discounts",
"filter": "Filter",
"active": "Active",
"completed": "Completed",
"sortBy": "ترتيب حسب",
"lowestPrice": "أدنى سعر",
"highestPrice": "أعلى سعر",
"newest": "الأحدث",
"oldest": "الأقدم",
"discount": "الخصومات",
"filter": "فلتر",
"active": "نشط",
"completed": "مكتمل",
"no_orders_found": "لا توجد طلبات",
"track_order": "تتبع الطلب",
"order_number": "رقم الطلب#",
Expand Down Expand Up @@ -241,11 +239,25 @@
"editDriverProfile": "تعديل الملف الشخصي",
"editVehicle": "تعديل المركبة",
"cannotBeSame": "كلمة المرور الجديدة لا يجب أن تطابق الحالية",
"driverOrderTitle": "طلب زهور",
"orderDetails": "بيانات الطلب",
"status": "الحالة",
"orderId": "رقم الطلب : ",
"pickupAddress": "عنوان الاستلام",
"floweryStore": "متجر فلوري",
"userAddress": "عنوان المستخدم",
"arrivedAtPickupPoint": "وصلت الى نقطة الالتقاء",
"startDelivery": "بدء التوصيل",
"arriverAtDestination": "وصلت إلى نقطة التسليم",
"confirmDelivery": "تأكيد التسليم",
"deliveryConfirmed": "تم تأكيد التسليم",
"orderCompleted": "تم إكمال الطلب",
"accepted": "مقبول",
"pickedUp": "تم الاستلام",
"outForDelivery": "في الطريق للتسليم",
"arrived": "وصلت",
"driverOrderTitle": "طلب زهور",
"unknownStore": "متجر غير معروف",
"noAddress": "لا يوجد عنوان",
"userAddress": "عنوان المستخدم",
"accept": "قبول",
"reject": "رفض",
"noPendingOrders": "لا توجد طلبات معلقة",
Expand Down
19 changes: 16 additions & 3 deletions assets/translations/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,6 @@
"addNewAddress": "Add New Address",
"savedAddress": "Saved Address",
"recipient_phone": "Recipient phone",
"english": "English",
"sortBy": "Sort By",
"lowestPrice": "Lowest Price",
"highestPrice": "Highest Price",
Expand Down Expand Up @@ -243,11 +242,25 @@
"editDriverProfile": "Edit Driver Profile",
"editVehicle": "Edit Vehicle",
"cannotBeSame": "New password cann't be same",
"driverOrderTitle": "Flower order",
"orderDetails": "Order details",
"status": "Status : ",
"orderId": "Order ID : # ",
"pickupAddress": "Pickup address",
"floweryStore": "Flowery Store",
"userAddress": "User address",
"arrivedAtPickupPoint": "Arrived at pickup point",
"startDelivery": "Start delivery",
"arriverAtDestination": "Arrived at destination",
"confirmDelivery": "Confirm delivery",
"deliveryConfirmed": "Delivery confirmed",
"orderCompleted": "Order completed",
"accepted": "Accepted",
"pickedUp": "Picked up",
"outForDelivery": "Out for delivery",
"arrived": "Arrived",
"driverOrderTitle": "Flower order",
"unknownStore": "Unknown Store",
"noAddress": "No address",
"userAddress": "User address",
"accept": "Accept",
"reject": "Reject",
"noPendingOrders": "No pending orders",
Expand Down
31 changes: 31 additions & 0 deletions lib/app/config/di/di.config.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions lib/app/config/network/firebase_module.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:injectable/injectable.dart';

@module
abstract class FirebaseModule {
@lazySingleton
FirebaseFirestore get firestore => FirebaseFirestore.instance;
}
10 changes: 7 additions & 3 deletions lib/app/core/router/app_router.dart
Original file line number Diff line number Diff line change
@@ -1,18 +1,16 @@
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:go_router/go_router.dart';
import 'package:tracking_app/app/config/auth_storage/auth_storage.dart';
import 'package:tracking_app/app/config/di/di.dart';
import 'package:tracking_app/app/core/router/route_names.dart';
import 'package:tracking_app/features/auth/presentation/logout/manager/logout_cubit.dart';
import 'package:tracking_app/features/Onboarding/presentation/pages/onboardingScreen.dart';
import 'package:tracking_app/features/app_sections/presentation/pages/app_sections.dart';
import 'package:tracking_app/features/driver_orders_details/presentation/pages/drivers_orders_details_page.dart';
import 'package:tracking_app/features/profile/data/models/driver_model.dart';
import 'package:tracking_app/features/profile/presentation/pages/edit_driver_profile_page.dart';
import 'package:tracking_app/features/profile/presentation/pages/edit_vehicle_page.dart';
import 'package:tracking_app/features/profile/presentation/pages/profile_page.dart';
import 'package:tracking_app/features/my_orders/domain/models/order_entity.dart';
import 'package:tracking_app/features/my_orders/presentation/pages/order_details_page.dart';
import '../../config/di/di.dart';
import 'package:tracking_app/features/auth/presentation/apply/view/apply_view.dart';
import 'package:tracking_app/features/auth/presentation/forget_pass/manager/cubit/forget_pass_cubit.dart';
import 'package:tracking_app/features/auth/presentation/forget_pass/pages/forget_pass_page.dart';
Expand Down Expand Up @@ -99,6 +97,12 @@ final GoRouter appRouter = GoRouter(
return EditVehiclePage(driver: driver);
},
),

GoRoute(
path: RouteNames.ordersDetailsPage,
builder: (context, state) => DriversOrdersDetailsPage(),
),

GoRoute(
path: RouteNames.orderDetails,
builder: (context, state) {
Expand Down
1 change: 1 addition & 0 deletions lib/app/core/router/route_names.dart
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ abstract class RouteNames {
static const editDriverProfile = "/editDriverProfile";
static const editVehicle = "/editVehicle";
static const getProfle = "/profile-data";
static const ordersDetailsPage = "/ordersDetails";
static const myOrders = "/myOrders";
static const orderDetails = "/orderDetails";
}
1 change: 1 addition & 0 deletions lib/app/core/ui_helper/color/colors.dart
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,5 @@ abstract final class AppColors {
static const Color white = Color(0xFFFFFFFF);
static const Color purple = Color(0xFF441AB0);
static const Color white70 = Color(0xFFA6A6A6);
static const Color lightPink = Color(0xFFF9ECF0);
}
3 changes: 3 additions & 0 deletions lib/app/core/values/paths.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,7 @@ class AppPaths {
static const String aboutUs = 'about_app';
static const String terms = 'terms_and_conditions';
static const String onboardingImage = 'assets/images/Clip path group.png';
static const String whatsappImage = 'assets/images/whatsapp.png';
static const String flowerLogo = 'assets/images/flower_logo.png';
static const String mediaUrl = 'https://flower.elevateegy.com/uploads/';
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import 'package:injectable/injectable.dart';
import 'package:tracking_app/app/core/network/api_result.dart';
import 'package:tracking_app/features/driver_orders_details/data/datasource/order_details_remote_datasource.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:tracking_app/features/driver_orders_details/data/models/orders_dto.dart';

@Injectable(as: OrderDetailsRemoteDatasource)
class OrderDetailsRemoteDatasourceImpl implements OrderDetailsRemoteDatasource {
final FirebaseFirestore _firestore;
OrderDetailsRemoteDatasourceImpl({required FirebaseFirestore firestore})
: _firestore = firestore;

@override
ApiResult<Stream<OrderDto>> getOrderStream(String orderId) {
try {
final stream = _firestore
.collection('orders')
.doc(orderId)
.snapshots()
.map((snapshot) {
if (!snapshot.exists || snapshot.data() == null) {
throw Exception("Document does not exist!");
}
return OrderDto.fromJson(
snapshot.data() as Map<String, dynamic>,
snapshot.id,
);
});
return SuccessApiResult<Stream<OrderDto>>(data: stream);
} catch (e) {
return ErrorApiResult<Stream<OrderDto>>(error: e.toString());
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import 'package:tracking_app/app/core/network/api_result.dart';
import 'package:tracking_app/features/driver_orders_details/data/models/orders_dto.dart';

abstract class OrderDetailsRemoteDatasource {
ApiResult<Stream<OrderDto>> getOrderStream(String orderId);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
import 'package:tracking_app/features/driver_orders_details/data/models/orders_dto.dart';
import 'package:tracking_app/features/driver_orders_details/domain/models/orders_model.dart';

extension OrderDtoMapper on OrderDto {
OrderModel toOrderModel() {
return OrderModel(
driverId: driverId,
orderId: orderId,
userAddress: userAddress.toUserAddressModel(),
userId: userId,
orderDetails: orderDetails.toOrderDetailsModel(),
);
}
}

extension OrderDetailsDtoMapper on OrderDetailsDto {
OrderDetailsModel toOrderDetailsModel() {
return OrderDetailsModel(
items: items.map((i) => i.toOrderItemModel()).toList(),
status: status,
totalPrice: totalPrice,
pickupAddress: pickupAddress.toPickedAddressModel(),
orderId: orderId,
userAddress: userAddress,
);
}
}

extension OrderItemDtoMapper on OrderItemDto {
OrderItemModel toOrderItemModel() {
return OrderItemModel(
productId: productId,
title: title,
image: image,
quantity: quantity,
price: price,
);
}
}

extension PickedAddressDtoMapper on PickedAddressDto {
PickedAddressModel toPickedAddressModel() {
return PickedAddressModel(name: name, address: address);
}
}

extension UserAddressDtoMapper on UserAddressDto {
UserAddressModel toUserAddressModel() {
return UserAddressModel(name: name, address: address, userId: userId);
}
}
Loading