Merge remote-tracking branch 'origin/design_3.0_sdk_upgrade' into design_3.0_sdk_upgrade

design_3.0_latest
WaseemAbbasi22 1 year ago
commit 7f563e8292

@ -157,6 +157,7 @@
"searchBySn": "البحث بالرقم التسلسلي", "searchBySn": "البحث بالرقم التسلسلي",
"serviceRequestInformation": "معلومات طلب الخدمة", "serviceRequestInformation": "معلومات طلب الخدمة",
"serviceRequests": "طلبات الخدمة", "serviceRequests": "طلبات الخدمة",
"correctiveMaintenance": "الصيانة التصحيحية",
"shareAntherIssue": "مشاركة قضية أخرى", "shareAntherIssue": "مشاركة قضية أخرى",
"shareApp": "مشاركة التطبيق", "shareApp": "مشاركة التطبيق",
"sn": "الرقم التسلسلي", "sn": "الرقم التسلسلي",

@ -157,6 +157,7 @@
"searchBySn": "Search By Sn", "searchBySn": "Search By Sn",
"serviceRequestInformation": "Service Request Information", "serviceRequestInformation": "Service Request Information",
"serviceRequests": "Service Requests", "serviceRequests": "Service Requests",
"correctiveMaintenance": "Corrective Maintenance",
"shareAntherIssue": "share Another Issue", "shareAntherIssue": "share Another Issue",
"shareApp": "Share App", "shareApp": "Share App",
"sn": "SN", "sn": "SN",

@ -34,7 +34,6 @@ class AppDrawer extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Consumer<UserProvider>(builder: (context, snapshot, _) { Consumer<UserProvider>(builder: (context, snapshot, _) {
print('profile photo i got is ${snapshot.user!.profilePhotoName!}');
return CircleAvatar( return CircleAvatar(
radius: 45, radius: 45,
backgroundColor: context.isDark ? AppColor.neutral50 : AppColor.neutral40, backgroundColor: context.isDark ? AppColor.neutral50 : AppColor.neutral40,
@ -43,7 +42,7 @@ class AppDrawer extends StatelessWidget {
child: ClipOval( child: ClipOval(
child: snapshot.profileImage != null child: snapshot.profileImage != null
? Image.file(snapshot.profileImage!) ? Image.file(snapshot.profileImage!)
: (snapshot.user!.profilePhotoName?.isNotEmpty ?? false) : (snapshot.user?.profilePhotoName?.isNotEmpty ?? false)
? Image.network(snapshot.user!.profilePhotoName!) ? Image.network(snapshot.user!.profilePhotoName!)
: const Icon(Icons.person, size: 50, color: Colors.white), : const Icon(Icons.person, size: 50, color: Colors.white),
), ),

@ -19,7 +19,7 @@ class RequestItemViewList extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return (list.isEmpty && !isLoading) return (list.isEmpty && !isLoading)
? NoDataFound(message: context.translation.noDataFound) ? NoDataFound(message: context.translation.noDataFound).center
: ListView.separated( : ListView.separated(
padding: const EdgeInsets.all(16), padding: const EdgeInsets.all(16),
shrinkWrap: true, shrinkWrap: true,

@ -1,13 +1,13 @@
import 'dart:convert'; import 'dart:convert';
import 'package:http/http.dart'; import 'package:http/http.dart';
import 'package:test_sa/models/lookup.dart';
import '../../controllers/api_routes/api_manager.dart'; import '../../controllers/api_routes/api_manager.dart';
import '../../controllers/api_routes/urls.dart'; import '../../controllers/api_routes/urls.dart';
import '../models/new_models/department.dart';
import 'loading_list_notifier.dart'; import 'loading_list_notifier.dart';
class DepartmentProvider extends LoadingListNotifier<Department> { class DepartmentProvider extends LoadingListNotifier<Lookup> {
@override @override
Future getDate() async { Future getDate() async {
if (loading ?? false) return -2; if (loading ?? false) return -2;
@ -15,7 +15,7 @@ class DepartmentProvider extends LoadingListNotifier<Department> {
notifyListeners(); notifyListeners();
Response response; Response response;
try { try {
response = await ApiManager.instance.post(URLs.getDepartments, body: {"pageSize": 50}); response = await ApiManager.instance.post(URLs.getDepartments, body: {"pageSize": 50});
} catch (error) { } catch (error) {
loading = false; loading = false;
stateCode = -1; stateCode = -1;
@ -26,7 +26,7 @@ class DepartmentProvider extends LoadingListNotifier<Department> {
if (response.statusCode >= 200 && response.statusCode < 300) { if (response.statusCode >= 200 && response.statusCode < 300) {
// client's request was successfully received // client's request was successfully received
List listJson = json.decode(response.body)["data"]; List listJson = json.decode(response.body)["data"];
items = listJson.map((department) => Department.fromJson(department)).toList(); items = listJson.map((department) => Lookup.fromJson(department)).toList();
} }
loading = false; loading = false;
notifyListeners(); notifyListeners();

@ -4,7 +4,6 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:test_sa/app_strings/app_asset.dart'; import 'package:test_sa/app_strings/app_asset.dart';
import 'package:test_sa/dashboard_latest/widgets/request_category_list.dart';
import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart';
@ -608,6 +607,7 @@ class ServiceRequestBottomSheet {
); );
})); }));
} }
static Future nurseRejectBackBottomSheet({required BuildContext context}) { static Future nurseRejectBackBottomSheet({required BuildContext context}) {
String feedback = ''; String feedback = '';
return buildBottomSheetParent( return buildBottomSheetParent(
@ -652,7 +652,7 @@ class ServiceRequestBottomSheet {
); );
requestDetailProvider.nurseReject(); requestDetailProvider.nurseReject();
Navigator.pop(context); Navigator.pop(context);
if(requestDetailProvider.currentWorkOrder!.data!.requestId!=null){ if (requestDetailProvider.currentWorkOrder!.data!.requestId != null) {
requestDetailProvider.getWorkOrderById(id: requestDetailProvider.currentWorkOrder!.data!.requestId!); requestDetailProvider.getWorkOrderById(id: requestDetailProvider.currentWorkOrder!.data!.requestId!);
} }
} }
@ -691,13 +691,13 @@ class ServiceRequestBottomSheet {
InkWell( InkWell(
child: acknowledge child: acknowledge
? const Icon( ? const Icon(
Icons.check_box, Icons.check_box,
color: AppColor.primary10, color: AppColor.primary10,
) )
: const Icon( : const Icon(
Icons.check_box_outline_blank, Icons.check_box_outline_blank,
color: AppColor.neutral120, color: AppColor.neutral120,
), ),
onTap: () { onTap: () {
setState(() { setState(() {
acknowledge = !acknowledge; acknowledge = !acknowledge;
@ -706,9 +706,7 @@ class ServiceRequestBottomSheet {
), ),
6.width, 6.width,
Flexible( Flexible(
child: context.translation.nurseAcknowledge child: context.translation.nurseAcknowledge.bodyText(context).custom(color: context.isDark ? AppColor.primary50 : AppColor.neutral120),
.bodyText(context)
.custom(color: context.isDark ? AppColor.primary50 : AppColor.neutral120),
), ),
], ],
), ),
@ -719,18 +717,17 @@ class ServiceRequestBottomSheet {
newSignature: newSignature, newSignature: newSignature,
backgroundColor: AppColor.neutral100, backgroundColor: AppColor.neutral100,
showShadow: false, showShadow: false,
onChange:(signature){ onChange: (signature) {
if (signature == null || signature.isEmpty) return;
setState(() { setState(() {
if (signature == null || signature.isEmpty) return;
newSignature = signature; newSignature = signature;
nurseSignature = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}"; nurseSignature = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}";
print('signature i got is ${newSignature}'); print('signature i got is ${newSignature}');
}); });
}, },
onSaved: (signature) { onSaved: (signature) {
if (signature == null || signature.isEmpty) return;
setState(() { setState(() {
if (signature == null || signature.isEmpty) return;
newSignature = signature; newSignature = signature;
nurseSignature = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}"; nurseSignature = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}";
print('signature i got is ${newSignature}'); print('signature i got is ${newSignature}');
@ -763,6 +760,7 @@ class ServiceRequestBottomSheet {
AppFilledButton( AppFilledButton(
label: context.translation.confirm, label: context.translation.confirm,
maxWidth: true, maxWidth: true,
loading: requestDetailProvider.isLoading,
buttonColor: AppColor.green70, buttonColor: AppColor.green70,
onPressed: () async { onPressed: () async {
if (newSignature != null) { if (newSignature != null) {
@ -770,12 +768,12 @@ class ServiceRequestBottomSheet {
workOrderId: requestDetailProvider.currentWorkOrder!.data!.requestId!, workOrderId: requestDetailProvider.currentWorkOrder!.data!.requestId!,
signatureNurse: nurseSignature, signatureNurse: nurseSignature,
); );
requestDetailProvider.nurseConfirm(); await requestDetailProvider.nurseConfirm();
if(requestDetailProvider.currentWorkOrder!.data!.requestId!=null){ if (requestDetailProvider.currentWorkOrder!.data!.requestId != null) {
requestDetailProvider.getWorkOrderById(id: requestDetailProvider.currentWorkOrder!.data!.requestId!); requestDetailProvider.getWorkOrderById(id: requestDetailProvider.currentWorkOrder!.data!.requestId!);
} }
Navigator.pop(context); Navigator.pop(context);
}else{ } else {
//show some toast... //show some toast...
} }
}, },

@ -60,7 +60,7 @@ class WorkOrderDetailView extends StatelessWidget {
context: context), context: context),
], ],
), ),
if (requestProvider.timer!=null&&requestProvider.timer!.isActive)...[ if (requestProvider.timer != null && requestProvider.timer!.isActive) ...[
const TimerWidget(), const TimerWidget(),
] ]
], ],
@ -69,7 +69,6 @@ class WorkOrderDetailView extends StatelessWidget {
} }
Widget workOrderDetailCard(BuildContext context, WorkOrderData workOrder, UserProvider userProvider) { Widget workOrderDetailCard(BuildContext context, WorkOrderData workOrder, UserProvider userProvider) {
return Column( return Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
@ -104,10 +103,10 @@ class WorkOrderDetailView extends StatelessWidget {
Column( Column(
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end,
children: [ children: [
if (userProvider.user!.type == UsersTypes.normal_user) // if (userProvider.user!.type == UsersTypes.normal_user)
context.translation.code.toSvgAsset(width: 48).onPress(() { // context.translation.code.toSvgAsset(width: 48).onPress(() {
// Navigator.push(context, MaterialPageRoute(builder: (context) => UpdateServiceRequestPage(serviceRequest: serviceRequest))); // // Navigator.push(context, MaterialPageRoute(builder: (context) => UpdateServiceRequestPage(serviceRequest: serviceRequest)));
}), // }),
if (userProvider.user!.type == UsersTypes.engineer) 16.height, if (userProvider.user!.type == UsersTypes.engineer) 16.height,
Text( Text(
workOrder.requestedDate!.toString().toServiceRequestCardFormat, workOrder.requestedDate!.toString().toServiceRequestCardFormat,

@ -6,7 +6,6 @@ import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/models/new_models/department.dart';
import 'package:test_sa/models/new_models/site.dart'; import 'package:test_sa/models/new_models/site.dart';
import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/new_views/common_widgets/app_filled_button.dart'; import 'package:test_sa/new_views/common_widgets/app_filled_button.dart';
@ -34,7 +33,7 @@ class _AssetFilterScreenState extends State<AssetFilterScreen> {
late AssetSearch filter; late AssetSearch filter;
Lookup? _commissioningStatus; Lookup? _commissioningStatus;
Site? _site; Site? _site;
Department? _department; Lookup? _department;
String? startDate, endDate; String? startDate, endDate;
bool loading = false; bool loading = false;
@ -50,8 +49,8 @@ class _AssetFilterScreenState extends State<AssetFilterScreen> {
final siteProvider = Provider.of<SiteProvider>(context, listen: false); final siteProvider = Provider.of<SiteProvider>(context, listen: false);
if (departmentProvider.items.isEmpty ?? true) await departmentProvider.getDate(); if (departmentProvider.items.isEmpty ?? true) await departmentProvider.getDate();
if (siteProvider.items.isEmpty ?? true) await siteProvider.getDate(); if (siteProvider.items.isEmpty ?? true) await siteProvider.getDate();
_department = departmentProvider.items.firstWhere((element) => element.name == filter.department, orElse: null); _department = departmentProvider.items.where((element) => element.name == filter.department).firstOrNull;
_site = siteProvider.items.firstWhere((element) => element.name == filter.site, orElse: null); _site = siteProvider.items.where((element) => element.name == filter.site).firstOrNull;
loading = false; loading = false;
setState(() {}); setState(() {});
}); });
@ -99,7 +98,7 @@ class _AssetFilterScreenState extends State<AssetFilterScreen> {
}, },
), ),
16.height, 16.height,
SingleItemDropDownMenu<Department, DepartmentProvider>( SingleItemDropDownMenu<Lookup, DepartmentProvider>(
context: context, context: context,
title: context.translation.byDepartment, title: context.translation.byDepartment,
initialValue: _department, initialValue: _department,
@ -161,7 +160,7 @@ class _AssetFilterScreenState extends State<AssetFilterScreen> {
void _search() async { void _search() async {
filter.site = _site?.name; filter.site = _site?.name;
filter.department = _department?.departmentName; filter.department = _department?.name;
filter.supplyDateFrom = startDate; filter.supplyDateFrom = startDate;
filter.supplyDateTo = endDate; filter.supplyDateTo = endDate;
final deviceProvider = Provider.of<AssetProvider>(context, listen: false); final deviceProvider = Provider.of<AssetProvider>(context, listen: false);

@ -119,10 +119,10 @@ class _ServiceRequestDetailsPageState extends State<ServiceRequestDetailsPage> {
Column( Column(
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end,
children: [ children: [
if (userProvider.user!.type == UsersTypes.normal_user) // if (userProvider.user!.type == UsersTypes.normal_user)
context.translation.code.toSvgAsset(width: 48).onPress(() { // context.translation.code.toSvgAsset(width: 48).onPress(() {
Navigator.push(context, MaterialPageRoute(builder: (context) => UpdateServiceRequestPage(serviceRequest: serviceRequest))); // Navigator.push(context, MaterialPageRoute(builder: (context) => UpdateServiceRequestPage(serviceRequest: serviceRequest)));
}), // }),
if (userProvider.user!.type == UsersTypes.engineer) 16.height, if (userProvider.user!.type == UsersTypes.engineer) 16.height,
Text( Text(
serviceRequest.date!.toServiceRequestCardFormat, serviceRequest.date!.toServiceRequestCardFormat,

@ -132,7 +132,7 @@ class _MyAssetsPageState extends State<MyAssetsPage> {
context.translation.filter, context.translation.filter,
style: AppTextStyles.bodyText2.copyWith(color: AppColor.blueStatus(context)), style: AppTextStyles.bodyText2.copyWith(color: AppColor.blueStatus(context)),
).onPress(() async { ).onPress(() async {
final result = await Navigator.push(context, MaterialPageRoute(builder: (context) => AssetFilterScreen(data: _searchAsset!))); final result = await Navigator.push(context, MaterialPageRoute(builder: (context) => AssetFilterScreen(data: _searchAsset)));
if (result != null) { if (result != null) {
_searchAsset = result; _searchAsset = result;
} }

Loading…
Cancel
Save