bug 309, 297, 293 fixed.

main_design2.0
Sikander Saleem 2 years ago
parent c7e2736bd8
commit 828ae74e48

@ -246,7 +246,9 @@ class MyApp extends StatelessWidget {
TrackGasRefillPage.id: (_) => const TrackGasRefillPage(), TrackGasRefillPage.id: (_) => const TrackGasRefillPage(),
RequestDeviceTransfer.id: (_) => const RequestDeviceTransfer(), RequestDeviceTransfer.id: (_) => const RequestDeviceTransfer(),
TrackDeviceTransferPage.id: (_) => const TrackDeviceTransferPage(), TrackDeviceTransferPage.id: (_) => const TrackDeviceTransferPage(),
SearchSubWorkOrderPage.id: (_) => const SearchSubWorkOrderPage(),
// todo remove this class after work
// SearchSubWorkOrderPage.id: (_) => const SearchSubWorkOrderPage(),
CreateSubWorkOrderPage.id: (_) => const CreateSubWorkOrderPage(), CreateSubWorkOrderPage.id: (_) => const CreateSubWorkOrderPage(),
WorkOrderListPage.id: (_) => WorkOrderListPage(), WorkOrderListPage.id: (_) => WorkOrderListPage(),
AssetDetailPage.id: (_) => AssetDetailPage(), AssetDetailPage.id: (_) => AssetDetailPage(),

@ -1,222 +1,222 @@
import 'package:flutter/material.dart'; // import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; // import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; // import 'package:test_sa/controllers/providers/api/service_requests_provider.dart';
import 'package:test_sa/extensions/context_extension.dart'; // import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/models/employee.dart'; // import 'package:test_sa/models/employee.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/models/service_request/search_work_order.dart'; // import 'package:test_sa/models/service_request/search_work_order.dart';
import 'package:test_sa/views/pages/sub_workorder/workorder_list.dart'; // import 'package:test_sa/views/pages/sub_workorder/workorder_list.dart';
import 'package:test_sa/views/widgets/app_text_form_field.dart'; // import 'package:test_sa/views/widgets/app_text_form_field.dart';
import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; // import 'package:test_sa/views/widgets/date_and_time/date_picker.dart';
import 'package:test_sa/views/widgets/hospitals/hospital_auto_complete_field_new.dart'; // import 'package:test_sa/views/widgets/hospitals/hospital_auto_complete_field_new.dart';
//
import '../../../controllers/api_routes/http_status_manger.dart'; // import '../../../controllers/api_routes/http_status_manger.dart';
import '../../../controllers/providers/api/status_drop_down/report/service_report_maintenance_situation_provider.dart'; // import '../../../controllers/providers/api/status_drop_down/report/service_report_maintenance_situation_provider.dart';
import '../../../models/new_models/assigned_employee.dart'; // import '../../../models/new_models/assigned_employee.dart';
import '../../widgets/buttons/app_back_button.dart'; // import '../../widgets/buttons/app_back_button.dart';
import '../../widgets/buttons/app_button.dart'; // import '../../widgets/buttons/app_button.dart';
import '../../widgets/status/report/service_report_all_users.dart'; // import '../../widgets/status/report/service_report_all_users.dart';
import '../../widgets/status/report/service_report_maintenance_situation.dart'; // import '../../widgets/status/report/service_report_maintenance_situation.dart';
import '../../widgets/status/report/service_report_visit_date_operator.dart'; // import '../../widgets/status/report/service_report_visit_date_operator.dart';
import '../../widgets/titles/app_sub_title.dart'; // import '../../widgets/titles/app_sub_title.dart';
// todo remove this class after work
class SearchSubWorkOrderPage extends StatefulWidget { // class SearchSubWorkOrderPage extends StatefulWidget {
static String id = "/SubWorkOrderPage"; // static String id = "/SubWorkOrderPage";
//
const SearchSubWorkOrderPage({Key key}) : super(key: key); // const SearchSubWorkOrderPage({Key key}) : super(key: key);
//
@override // @override
State<SearchSubWorkOrderPage> createState() => _SearchSubWorkOrderPageState(); // State<SearchSubWorkOrderPage> createState() => _SearchSubWorkOrderPageState();
} // }
//
class _SearchSubWorkOrderPageState extends State<SearchSubWorkOrderPage> { // class _SearchSubWorkOrderPageState extends State<SearchSubWorkOrderPage> {
final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); // final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final SearchWorkOrder _searchWorkOrders = SearchWorkOrder(); // final SearchWorkOrder _searchWorkOrders = SearchWorkOrder();
//
bool _isLoading = false; // bool _isLoading = false;
String _callerId = "", _site = ""; // String _callerId = "", _site = "";
Lookup _dateOperator; // Lookup _dateOperator;
//
@override // @override
void initState() { // void initState() {
super.initState(); // super.initState();
if (context.mounted) { // if (context.mounted) {
Provider.of<ServiceReportMaintenanceSituationProvider>(context, listen: false).reset(); // Provider.of<ServiceReportMaintenanceSituationProvider>(context, listen: false).reset();
} // }
} // }
//
@override // @override
Widget build(BuildContext context) { // Widget build(BuildContext context) {
return Scaffold( // return Scaffold(
body: SafeArea( // body: SafeArea(
child: SingleChildScrollView( // child: SingleChildScrollView(
child: Column( // child: Column(
children: [ // children: [
Container( // Container(
// color: AColors.primaryColor, // // color: AColors.primaryColor,
padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 4), // padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 4),
child: Column( // child: Column(
children: [ // children: [
Row( // Row(
children: [ // children: [
const ABackButton(), // const ABackButton(),
Expanded( // Expanded(
child: Center( // child: Center(
child: Text( // child: Text(
"Search Work Order", // "Search Work Order",
// style: Theme.of(context).textTheme.titleLarge.copyWith(color: AColors.white, fontStyle: FontStyle.italic), // // style: Theme.of(context).textTheme.titleLarge.copyWith(color: AColors.white, fontStyle: FontStyle.italic),
), // ),
), // ),
), // ),
const SizedBox( // const SizedBox(
width: 48, // width: 48,
) // )
], // ],
), // ),
], // ],
), // ),
), // ),
const SizedBox(height: 8), // const SizedBox(height: 8),
Form( // Form(
key: _formKey, // key: _formKey,
child: Padding( // child: Padding(
padding: const EdgeInsets.all(16.0), // padding: const EdgeInsets.all(16.0),
child: Column( // child: Column(
crossAxisAlignment: CrossAxisAlignment.start, // crossAxisAlignment: CrossAxisAlignment.start,
children: [ // children: [
ATextFormField( // ATextFormField(
labelText: "Call ID", // labelText: "Call ID",
onSaved: (value) { // onSaved: (value) {
_callerId = value; // _callerId = value;
}, // },
), // ),
const SizedBox(height: 16), // const SizedBox(height: 16),
ATextFormField( // ATextFormField(
labelText: "Asset S.N.", // labelText: "Asset S.N.",
textInputType: TextInputType.number, // textInputType: TextInputType.number,
onSaved: (value) { // onSaved: (value) {
if (value != null) { // if (value != null) {
_searchWorkOrders.assetType = Lookup(name: value); // _searchWorkOrders.assetType = Lookup(name: value);
} // }
}, // },
), // ),
const SizedBox(height: 16), // const SizedBox(height: 16),
ATextFormField( // ATextFormField(
labelText: "Work Order No.", // labelText: "Work Order No.",
onSaved: (value) { // onSaved: (value) {
_searchWorkOrders.workOrderNo = value; // _searchWorkOrders.workOrderNo = value;
}, // },
), // ),
const SizedBox(height: 16), // const SizedBox(height: 16),
ASubTitle(context.translation.assignedEmployee), // ASubTitle(context.translation.assignedEmployee),
const SizedBox(height: 4), // const SizedBox(height: 4),
ServiceReportAllUsers( // ServiceReportAllUsers(
initialValue: _searchWorkOrders.assignedEmployee == null ? null : Employee(id: _searchWorkOrders.assignedEmployee.id, name: _searchWorkOrders.assignedEmployee.name), // initialValue: _searchWorkOrders.assignedEmployee == null ? null : Employee(id: _searchWorkOrders.assignedEmployee.id, name: _searchWorkOrders.assignedEmployee.name),
onSelect: (engineer) { // onSelect: (engineer) {
_searchWorkOrders.assignedEmployee = AssignedEmployee(id: engineer.id, name: engineer.name); // _searchWorkOrders.assignedEmployee = AssignedEmployee(id: engineer.id, name: engineer.name);
}, // },
), // ),
const SizedBox(height: 16), // const SizedBox(height: 16),
const ASubTitle("Maintenance Situation"), // const ASubTitle("Maintenance Situation"),
const SizedBox(height: 4), // const SizedBox(height: 4),
ServiceReportMaintenanceSituation( // ServiceReportMaintenanceSituation(
initialValue: _searchWorkOrders.calllastSituation, // initialValue: _searchWorkOrders.calllastSituation,
onSelect: (status) { // onSelect: (status) {
if (status?.value == 12 || _searchWorkOrders.calllastSituation?.value == 12) { // if (status?.value == 12 || _searchWorkOrders.calllastSituation?.value == 12) {
_searchWorkOrders.calllastSituation = status; // _searchWorkOrders.calllastSituation = status;
setState(() {}); // setState(() {});
} else { // } else {
_searchWorkOrders.calllastSituation = status; // _searchWorkOrders.calllastSituation = status;
} // }
}, // },
woId: _searchWorkOrders.id?.toString(), // woId: _searchWorkOrders.id?.toString(),
), // ),
const SizedBox(height: 16), // const SizedBox(height: 16),
HospitalAutoCompleteField( // HospitalAutoCompleteField(
initialValue: _site, // initialValue: _site,
onSearch: (value) { // onSearch: (value) {
_site = value.name; // _site = value.name;
setState(() {}); // setState(() {});
}, // },
), // ),
const SizedBox(height: 16), // const SizedBox(height: 16),
ASubTitle(context.translation.visitDate), // ASubTitle(context.translation.visitDate),
const SizedBox(height: 4), // const SizedBox(height: 4),
ServiceReportVisitDateOperator( // ServiceReportVisitDateOperator(
initialValue: _dateOperator, // initialValue: _dateOperator,
onSelect: (status) { // onSelect: (status) {
_dateOperator = status; // _dateOperator = status;
}, // },
), // ),
Row( // Row(
children: [ // children: [
Expanded( // Expanded(
child: ADatePicker( // child: ADatePicker(
date: DateTime.tryParse(_searchWorkOrders.visitDate ?? ""), // date: DateTime.tryParse(_searchWorkOrders.visitDate ?? ""),
from: DateTime(1950), // from: DateTime(1950),
onDatePicker: (date) { // onDatePicker: (date) {
_searchWorkOrders.visitDate = date?.toIso8601String(); // _searchWorkOrders.visitDate = date?.toIso8601String();
setState(() {}); // setState(() {});
}, // },
), // ),
), // ),
], // ],
), // ),
], // ],
), // ),
), // ),
), // ),
const SizedBox(height: 100), // const SizedBox(height: 100),
], // ],
), // ),
), // ),
), // ),
floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat, // floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat,
floatingActionButton: _isLoading // floatingActionButton: _isLoading
? const CircularProgressIndicator() // ? const CircularProgressIndicator()
: Padding( // : Padding(
padding: const EdgeInsets.symmetric(horizontal: 16), // padding: const EdgeInsets.symmetric(horizontal: 16),
child: AButton( // child: AButton(
text: context.translation.search, // text: context.translation.search,
onPressed: () async { // onPressed: () async {
_isLoading = true; // _isLoading = true;
setState(() {}); // setState(() {});
if (_formKey.currentState?.validate() ?? false) {} // if (_formKey.currentState?.validate() ?? false) {}
_formKey.currentState?.save(); // _formKey.currentState?.save();
final serviceRequestsProvider = Provider.of<ServiceRequestsProvider>(context, listen: false); // final serviceRequestsProvider = Provider.of<ServiceRequestsProvider>(context, listen: false);
serviceRequestsProvider.reset(); // serviceRequestsProvider.reset();
final List<SearchWorkOrder> woList = await serviceRequestsProvider.searchForWorkOrders( // final List<SearchWorkOrder> woList = await serviceRequestsProvider.searchForWorkOrders(
_searchWorkOrders, // _searchWorkOrders,
_callerId, // _callerId,
_dateOperator, // _dateOperator,
_site, // _site,
); // );
_isLoading = false; // _isLoading = false;
setState(() {}); // setState(() {});
if (serviceRequestsProvider.stateCode >= 200 && serviceRequestsProvider.stateCode < 300) { // if (serviceRequestsProvider.stateCode >= 200 && serviceRequestsProvider.stateCode < 300) {
Navigator.push( // Navigator.push(
context, // context,
MaterialPageRoute( // MaterialPageRoute(
builder: (context) => WorkOrderList( // builder: (context) => WorkOrderList(
items: woList, // items: woList,
onLazyLoading: () async { // onLazyLoading: () async {
return await serviceRequestsProvider.searchForWorkOrders( // return await serviceRequestsProvider.searchForWorkOrders(
_searchWorkOrders, // _searchWorkOrders,
_callerId, // _callerId,
_dateOperator, // _dateOperator,
_site, // _site,
); // );
}, // },
), // ),
), // ),
); // );
} else { // } else {
String errorMessage = HttpStatusManger.getStatusMessage(status: serviceRequestsProvider.stateCode, subtitle: context.translation); // String errorMessage = HttpStatusManger.getStatusMessage(status: serviceRequestsProvider.stateCode, subtitle: context.translation);
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(errorMessage))); // ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(errorMessage)));
} // }
}, // },
), // ),
), // ),
); // );
} // }
} // }

@ -1,98 +1,98 @@
import 'package:flutter/material.dart'; // import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; // import 'package:provider/provider.dart';
import 'package:test_sa/extensions/context_extension.dart'; // import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/views/pages/sub_workorder/workorder_item.dart'; // import 'package:test_sa/views/pages/sub_workorder/workorder_item.dart';
//
import '../../../controllers/providers/api/service_requests_provider.dart'; // import '../../../controllers/providers/api/service_requests_provider.dart';
import '../../../models/service_request/search_work_order.dart'; // import '../../../models/service_request/search_work_order.dart';
import '../../widgets/buttons/app_back_button.dart'; // import '../../widgets/buttons/app_back_button.dart';
import '../../widgets/loaders/lazy_loading.dart'; // import '../../widgets/loaders/lazy_loading.dart';
import '../../widgets/loaders/no_item_found.dart'; // import '../../widgets/loaders/no_item_found.dart';
import 'create_sub_workorder_page.dart'; // import 'create_sub_workorder_page.dart';
//// todo remove this class after work
class WorkOrderList extends StatefulWidget { // class WorkOrderList extends StatefulWidget {
List<SearchWorkOrder> items; // List<SearchWorkOrder> items;
final Future<List<SearchWorkOrder>> Function() onLazyLoading; // final Future<List<SearchWorkOrder>> Function() onLazyLoading;
//
WorkOrderList({Key key, this.items, this.onLazyLoading}) : super(key: key); // WorkOrderList({Key key, this.items, this.onLazyLoading}) : super(key: key);
//
@override // @override
State<WorkOrderList> createState() => _WorkOrderListState(); // State<WorkOrderList> createState() => _WorkOrderListState();
} // }
//
class _WorkOrderListState extends State<WorkOrderList> { // class _WorkOrderListState extends State<WorkOrderList> {
List<SearchWorkOrder> _items; // List<SearchWorkOrder> _items;
//
@override // @override
void initState() { // void initState() {
super.initState(); // super.initState();
_items = widget.items; // _items = widget.items;
} // }
//
@override // @override
Widget build(BuildContext context) { // Widget build(BuildContext context) {
final serviceRequestsProvider = Provider.of<ServiceRequestsProvider>(context, listen: false); // final serviceRequestsProvider = Provider.of<ServiceRequestsProvider>(context, listen: false);
//
return Scaffold( // return Scaffold(
body: SafeArea( // body: SafeArea(
child: Column( // child: Column(
children: [ // children: [
Container( // Container(
// color: AColors.primaryColor, // // color: AColors.primaryColor,
padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 4), // padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 4),
child: Column( // child: Column(
children: [ // children: [
Row( // Row(
children: [ // children: [
const ABackButton(), // const ABackButton(),
Expanded( // Expanded(
child: Center( // child: Center(
child: Text( // child: Text(
"Work Order List", // "Work Order List",
// style: Theme.of(context).textTheme.headline6.copyWith(color: AColors.white, fontStyle: FontStyle.italic), // // style: Theme.of(context).textTheme.headline6.copyWith(color: AColors.white, fontStyle: FontStyle.italic),
), // ),
), // ),
), // ),
const SizedBox(width: 48), // const SizedBox(width: 48),
], // ],
), // ),
], // ],
), // ),
), // ),
Expanded( // Expanded(
child: _items?.isEmpty ?? [] // child: _items?.isEmpty ?? []
? NoItemFound( // ? NoItemFound(
message: context.translation.noServiceRequestFound, // message: context.translation.noServiceRequestFound,
) // )
: LazyLoading( // : LazyLoading(
nextPage: serviceRequestsProvider.nextPage, // nextPage: serviceRequestsProvider.nextPage,
onLazyLoad: () async { // onLazyLoad: () async {
_items = await widget.onLazyLoading(); // _items = await widget.onLazyLoading();
setState(() {}); // setState(() {});
}, // },
child: ListView.builder( // child: ListView.builder(
itemCount: _items.length, // itemCount: _items.length,
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), // padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
itemBuilder: (context, itemIndex) { // itemBuilder: (context, itemIndex) {
return WorkOrderItem( // return WorkOrderItem(
index: itemIndex, // index: itemIndex,
onPressed: (model) { // onPressed: (model) {
// Navigator.of(context).push(MaterialPageRoute( // // Navigator.of(context).push(MaterialPageRoute(
// builder: (_) => WorkOrderUpdate(item: model,))); // // builder: (_) => WorkOrderUpdate(item: model,)));
Navigator.push( // Navigator.push(
context, // context,
MaterialPageRoute(builder: (context) => CreateSubWorkOrderPage(workOrder: model)), // MaterialPageRoute(builder: (context) => CreateSubWorkOrderPage(workOrder: model)),
); // );
}, // },
item: _items[itemIndex], // item: _items[itemIndex],
); // );
}, // },
), // ),
), // ),
), // ),
], // ],
), // ),
), // ),
); // );
} // }
} // }

@ -129,16 +129,16 @@ class _FirstActionBottomSheetState extends State<FirstActionBottomSheet> {
// }); // });
// }, // },
// ), // ),
if (_serviceRequest?.loanAvailability?.value == 1) 8.height, // if (_serviceRequest?.loanAvailability?.value == 1) 8.height,
if (_serviceRequest?.loanAvailability?.value == 1) // if (_serviceRequest?.loanAvailability?.value == 1)
PickAsset( // PickAsset(
device: asset ?? _serviceRequest.device, // device: asset ?? _serviceRequest.device,
onPickAsset: (asset) { // onPickAsset: (asset) {
setState(() { // setState(() {
this.asset = asset; // this.asset = asset;
}); // });
}, // },
), // ),
8.height, 8.height,
AppTextFormField( AppTextFormField(
labelText: context.translation.comments, labelText: context.translation.comments,

@ -101,6 +101,7 @@ class _CreateServiceReportState extends State<CreateServiceReport> with TickerPr
_serviceReport.callRequest = await _serviceRequestsProvider.getCallRequestForWorkOrder(callId: widget.request.id); _serviceReport.callRequest = await _serviceRequestsProvider.getCallRequestForWorkOrder(callId: widget.request.id);
await _assetTypeProvider.getTypes(user: _userProvider.user, host: _settingProvider.host); await _assetTypeProvider.getTypes(user: _userProvider.user, host: _settingProvider.host);
_serviceReport.assignedEmployee = _serviceReport.callRequest?.assignedEmployee; _serviceReport.assignedEmployee = _serviceReport.callRequest?.assignedEmployee;
_serviceReport.equipmentStatus = _serviceReport.callRequest?.defectType;
_spareParts = await _partsProvider.getPartsList(assetId: widget.request.deviceId); _spareParts = await _partsProvider.getPartsList(assetId: widget.request.deviceId);
_isLoading = false; _isLoading = false;
setState(() {}); setState(() {});
@ -185,6 +186,15 @@ class _CreateServiceReportState extends State<CreateServiceReport> with TickerPr
enabled: _serviceReport.endofWorkTime == null, enabled: _serviceReport.endofWorkTime == null,
onChange: (timer) async { onChange: (timer) async {
_serviceReport.timer = timer; _serviceReport.timer = timer;
if (timer?.startAt != null && timer?.endAt != null) {
if (timer?.durationInSecond != 0) {
_serviceReport.workingHours = num.tryParse((((timer?.durationInSecond ?? 0) / 60) / 60)?.toStringAsFixed(2) ?? "0");
} else {
timer.durationInSecond = (timer.endAt.difference(timer.startAt))?.inSeconds;
String workingHours = (((timer.durationInSecond ?? 0) / 60) / 60).toStringAsFixed(2);
_serviceReport.workingHours = num.tryParse(workingHours ?? "0");
}
}
return true; return true;
}, },
), ),
@ -215,7 +225,9 @@ class _CreateServiceReportState extends State<CreateServiceReport> with TickerPr
title: context.translation.equipmentStatus, title: context.translation.equipmentStatus,
initialValue: _serviceReport.equipmentStatus, initialValue: _serviceReport.equipmentStatus,
onSelect: (value) { onSelect: (value) {
_serviceReport.equipmentStatus = value; if (value != null) {
_serviceReport.equipmentStatus = value;
}
}, },
), ),
8.height, 8.height,

Loading…
Cancel
Save