Merge remote-tracking branch 'origin/zaid_development_new' into majd_development_new

# Conflicts:
#	lib/views/pages/sub_workorder/create_sub_workorder_page.dart
#	lib/views/pages/sub_workorder/workorder_details.dart
#	lib/views/pages/sub_workorder/workorder_update.dart
pull/2/head
nextwo 2 years ago
commit fea1f31474

@ -13,9 +13,9 @@ import 'package:test_sa/models/service_request/service_request.dart';
import 'package:test_sa/models/service_request/service_request_search.dart';
import 'package:test_sa/models/subtitle.dart';
import 'package:test_sa/models/timer_model.dart';
import 'package:test_sa/models/user.dart';
import '../../../models/service_request/search_work_order.dart';
import '../../../models/user.dart';
class ServiceRequestsProvider extends ChangeNotifier {
// number of items call in each request
@ -38,7 +38,7 @@ class ServiceRequestsProvider extends ChangeNotifier {
// list of user requests
List<ServiceRequest> serviceRequests;
List<SearchWorkOrders> workOrders = [];
List<SearchWorkOrder> workOrders = [];
// when requests in-process _loading = true
// done _loading = true
@ -387,7 +387,7 @@ class ServiceRequestsProvider extends ChangeNotifier {
}
}
Future<List<SearchWorkOrders>> searchWorkOrders({@required String callId}) async {
Future<List<SearchWorkOrder>> searchWorkOrders({@required String callId}) async {
Response response;
try {
@ -402,7 +402,7 @@ class ServiceRequestsProvider extends ChangeNotifier {
// client's request was successfully received
List workOrdersJson = json.decode(response.body)["data"];
print(workOrdersJson);
workOrders = workOrdersJson.map<SearchWorkOrders>((request) => SearchWorkOrders.fromJson(request)).toList();
workOrders = workOrdersJson.map<SearchWorkOrder>((request) => SearchWorkOrder.fromJson(request)).toList();
if (workOrders.length == pageItemNumber) {
nextPage = true;
} else {
@ -478,6 +478,35 @@ class ServiceRequestsProvider extends ChangeNotifier {
}
}
Future<int> updateWorkOrderDetails({@required SearchWorkOrder workOrder}) async {
Response response;
//Map<String,dynamic> body = report.toMap(request);
// body["uid"] = user.id;
// body["token"] = user.token;
// body["job_id"] = request.id;
// body["report_id"] = request.reportID;
try {
Map<String, dynamic> body = workOrder.toJson();
// body["uid"] = user.id;
// body["token"] = user.token;
response = await ApiManager.instance.put(URLs.updateServiceReport, body: body);
// response = await post(
// Uri.parse(
// host+URLs.updateServiceReport),
// body: body,
// );
// stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
reset();
notifyListeners();
}
return response.statusCode;
} catch (error) {
return -1;
}
}
Future<int> updateServiceReportTimer({
@required String host,
@required User user,
@ -559,8 +588,8 @@ class ServiceRequestsProvider extends ChangeNotifier {
}
}
Future<List<SearchWorkOrders>> searchForWorkOrders(
SearchWorkOrders search,
Future<List<SearchWorkOrder>> searchForWorkOrders(
SearchWorkOrder search,
String callerId,
Lookup dateOperator,
String site,
@ -590,7 +619,7 @@ class ServiceRequestsProvider extends ChangeNotifier {
// client's request was successfully received
List workOrdersJson = json.decode(response.body)["data"];
print(workOrdersJson);
workOrders = workOrdersJson.map<SearchWorkOrders>((request) => SearchWorkOrders.fromJson(request)).toList();
workOrders = workOrdersJson.map<SearchWorkOrder>((request) => SearchWorkOrder.fromJson(request)).toList();
if (workOrders.length == pageItemNumber) {
nextPage = true;
} else {

File diff suppressed because it is too large Load Diff

@ -28,7 +28,7 @@ import '../../widgets/titles/app_sub_title.dart';
class CreateSubWorkOrderPage extends StatefulWidget {
static const id = "/CreateSubWorkOrder";
final SearchWorkOrders workOrder;
final SearchWorkOrder workOrder;
const CreateSubWorkOrderPage({this.workOrder, Key key}) : super(key: key);
@override
@ -37,7 +37,7 @@ class CreateSubWorkOrderPage extends StatefulWidget {
class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
SearchWorkOrders _searchWorkOrders =SearchWorkOrders();
SearchWorkOrder _searchWorkOrders =SearchWorkOrder();
Lookup _serviceReportReason=Lookup();
ServiceReport _serviceReport;
@override

@ -15,7 +15,6 @@ import '../../../controllers/localization/localization.dart';
import '../../app_style/colors.dart';
import '../../widgets/buttons/app_back_button.dart';
import '../../widgets/buttons/app_button.dart';
import '../../widgets/loaders/app_loading.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_visit_date_operator.dart';
@ -31,7 +30,7 @@ class SearchSubWorkOrderPage extends StatefulWidget {
class _SearchSubWorkOrderPageState extends State<SearchSubWorkOrderPage> {
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final SearchWorkOrders _searchWorkOrders = SearchWorkOrders();
final SearchWorkOrder _searchWorkOrders = SearchWorkOrder();
Subtitle _subtitle;
bool _isLoading = false;
String _callerId = "", _site = "";
@ -87,7 +86,9 @@ class _SearchSubWorkOrderPageState extends State<SearchSubWorkOrderPage> {
labelText: "Asset S.N.",
textInputType: TextInputType.number,
onSaved: (value) {
_searchWorkOrders.assetType = value;
if (value != null) {
_searchWorkOrders.assetType = Lookup(name: value);
}
},
),
const SizedBox(height: 16),
@ -172,7 +173,7 @@ class _SearchSubWorkOrderPageState extends State<SearchSubWorkOrderPage> {
if (_formKey.currentState?.validate() ?? false) {}
_formKey.currentState?.save();
final serviceRequestsProvider = Provider.of<ServiceRequestsProvider>(context, listen: false);
final List<SearchWorkOrders> woList = await serviceRequestsProvider.searchForWorkOrders(
final List<SearchWorkOrder> woList = await serviceRequestsProvider.searchForWorkOrders(
_searchWorkOrders,
_callerId,
_dateOperator,
@ -187,37 +188,41 @@ class _SearchSubWorkOrderPageState extends State<SearchSubWorkOrderPage> {
MaterialPageRoute(
builder: (context) => Scaffold(
body: SafeArea(
child: Column(
children: [
Container(
color: AColors.primaryColor,
padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 4),
child: Column(
child: Column(
children: [
Container(
color: AColors.primaryColor,
padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 4),
child: Column(
children: [
Row(
children: [
Row(
children: [
ABackButton(),
Expanded(
child: Center(
child: Text(
"Work Order List",
style: Theme.of(context).textTheme.headline6.copyWith(color: AColors.white, fontStyle: FontStyle.italic),
),
),
ABackButton(),
Expanded(
child: Center(
child: Text(
"Work Order List",
style: Theme.of(context).textTheme.headline6.copyWith(color: AColors.white, fontStyle: FontStyle.italic),
),
const SizedBox(
width: 48,
)
],
),
),
const SizedBox(
width: 48,
)
],
),
),
Expanded(child: WorkOrderList(items: woList, nextPage: true, onLazyLoad: (){}, )),
],
],
),
),
)
),
Expanded(
child: WorkOrderList(
items: woList,
nextPage: true,
onLazyLoad: () {},
)),
],
),
)),
),
);
} else {

@ -3,18 +3,18 @@ import 'package:fluttertoast/fluttertoast.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/models/service_request/search_work_order.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/widgets/loaders/app_loading.dart';
import '../../../controllers/api_routes/http_status_manger.dart';
import '../../../controllers/localization/localization.dart';
import '../../../controllers/providers/api/service_requests_provider.dart';
import '../../../models/service_report.dart';
import '../../../models/subtitle.dart';
import '../../widgets/app_text_form_field.dart';
import '../../widgets/buttons/app_button.dart';
import '../../widgets/titles/app_sub_title.dart';
class SparePartsBottomSheet extends StatefulWidget {
final SearchWorkOrders workOrder;
final SearchWorkOrder workOrder;
const SparePartsBottomSheet({this.workOrder, Key key}) : super(key: key);
@override
@ -23,7 +23,7 @@ class SparePartsBottomSheet extends StatefulWidget {
class _SparePartsBottomSheetState extends State<SparePartsBottomSheet> {
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
SearchWorkOrders _workOrder;
SearchWorkOrder _workOrder;
bool _isLoading = false;
@override
void initState() {
@ -72,21 +72,37 @@ class _SparePartsBottomSheetState extends State<SparePartsBottomSheet> {
final wo = _workOrder.sparePartsWorkOrders[index];
return Column(
children: [
const ATextFormField(labelText: "Part No."),
const SizedBox(height: 8),
const ATextFormField(
labelText: "Description",
hintText: "Add Some Text",
textInputType: TextInputType.multiline,
ATextFormField(
labelText: "Part No.",
onChange: (value) {
_workOrder.sparePartsWorkOrders[index].sparePart = SparePart(partNo: value);
},
),
// const SizedBox(height: 8),
// ATextFormField(
// labelText: "Description",
// hintText: "Add Some Text",
// textInputType: TextInputType.multiline,
// onSaved: (value) {
// _workOrder.sparePartsWorkOrders[index].sparePart = value;
// },
// ),
const SizedBox(height: 8),
const ATextFormField(
ATextFormField(
labelText: "Quantity",
textInputType: TextInputType.number,
onSaved: (value) {
_workOrder.sparePartsWorkOrders[index].qty = double.tryParse(value ?? "");
},
),
const SizedBox(height: 8),
InkWell(
onTap: () {},
onTap: () {
_workOrder.sparePartsWorkOrders.removeWhere(
(element) => (element.sparePart?.partNo == wo.sparePart?.partNo && element.id == wo.id),
);
setState(() {});
},
child: Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
@ -106,7 +122,10 @@ class _SparePartsBottomSheetState extends State<SparePartsBottomSheet> {
const Divider(),
const SizedBox(height: 8),
InkWell(
onTap: () {},
onTap: () {
_workOrder.sparePartsWorkOrders.add(SparePartsWorkOrders());
setState(() {});
},
child: Container(
decoration: BoxDecoration(
color: AColors.primaryColor.withOpacity(0.15),
@ -116,9 +135,7 @@ class _SparePartsBottomSheetState extends State<SparePartsBottomSheet> {
child: ListTile(
title: Text(
"Add Part",
style: Theme.of(context).textTheme.bodyMedium?.copyWith(
color: AColors.primaryColor,
),
style: Theme.of(context).textTheme.bodyMedium?.copyWith(color: AColors.primaryColor),
),
trailing: const Icon(
Icons.add_circle,
@ -135,36 +152,38 @@ class _SparePartsBottomSheetState extends State<SparePartsBottomSheet> {
),
),
),
AButton(
text: subtitle.update,
onPressed: () async {
// _validate = true;
if (!_formKey.currentState.validate()) {
setState(() {});
return;
}
// if (!_serviceReport.validate()) {
// setState(() {});
// return;
// }
_formKey.currentState.save();
_isLoading
? const ALoading()
: AButton(
text: subtitle.update,
onPressed: () async {
// _validate = true;
if (!_formKey.currentState.validate()) {
setState(() {});
return;
}
// if (!_serviceReport.validate()) {
// setState(() {});
// return;
// }
_formKey.currentState.save();
_isLoading = true;
setState(() {});
_isLoading = true;
setState(() {});
int status = await Provider.of<ServiceRequestsProvider>(context).updateServiceReport(report: ServiceReport());
_isLoading = false;
setState(() {});
if (status >= 200 && status < 300) {
Fluttertoast.showToast(msg: subtitle.requestCompleteSuccessfully);
Navigator.of(context).pop();
// Navigator.of(context).pop();
} else {
String errorMessage = HttpStatusManger.getStatusMessage(status: status, subtitle: subtitle);
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(errorMessage)));
}
},
),
int status = await Provider.of<ServiceRequestsProvider>(context, listen: false).updateWorkOrderDetails(workOrder: _workOrder);
_isLoading = false;
setState(() {});
if (status >= 200 && status < 300) {
Fluttertoast.showToast(msg: subtitle.requestCompleteSuccessfully);
Navigator.of(context).pop();
// Navigator.of(context).pop();
} else {
String errorMessage = HttpStatusManger.getStatusMessage(status: status, subtitle: subtitle);
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(errorMessage)));
}
},
),
],
),
),

@ -2,25 +2,22 @@ import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/service_requests_provider.dart';
import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/models/service_request/search_work_order.dart';
import 'package:test_sa/models/subtitle.dart';
import 'package:test_sa/views/widgets/app_text_form_field.dart';
import 'package:test_sa/views/widgets/buttons/app_button.dart';
import 'package:test_sa/views/widgets/loaders/app_loading.dart';
import 'package:test_sa/views/widgets/status/report/service_report_maintenance_situation.dart';
import 'package:test_sa/views/widgets/status/report/service_report_repair_location.dart';
import '../../../controllers/api_routes/http_status_manger.dart';
import '../../../controllers/localization/localization.dart';
import '../../../models/engineer.dart';
import '../../../models/service_report.dart';
import '../../app_style/sizing.dart';
import '../../widgets/date_and_time/time_picker.dart';
import '../../widgets/status/report/service_report_all_users.dart';
import '../../widgets/titles/app_sub_title.dart';
class WorkOrderDetailsBottomSheet extends StatefulWidget {
final SearchWorkOrders workOrder;
final SearchWorkOrder workOrder;
const WorkOrderDetailsBottomSheet({this.workOrder, Key key}) : super(key: key);
@override
@ -29,7 +26,7 @@ class WorkOrderDetailsBottomSheet extends StatefulWidget {
class _WorkOrderDetailsBottomSheetState extends State<WorkOrderDetailsBottomSheet> {
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
SearchWorkOrders _workOrder;
SearchWorkOrder _workOrder;
bool _isLoading = false;
@override
@ -73,14 +70,14 @@ class _WorkOrderDetailsBottomSheetState extends State<WorkOrderDetailsBottomShee
const SizedBox(height: 8),
const ASubTitle("Assistant Employee"),
const SizedBox(height: 4),
ServiceReportAllUsers(
initialValue: _workOrder.assistantEmployees == null || _workOrder.assistantEmployees.isEmpty
? null
: Engineer(id: _workOrder.assistantEmployees?.first?.id, name: _workOrder.assistantEmployees?.first?.name),
onSelect: (engineer) {
_workOrder.assistantEmployees = [AssignedEmployee(id: engineer.id, name: engineer.name)];
},
),
// ServiceReportAllUsers(
// initialValue: _workOrder.assistantEmployees == null || _workOrder.assistantEmployees.isEmpty
// ? null
// : Engineer(id: _workOrder.assistantEmployees?.first?.id, name: _workOrder.assistantEmployees?.first?.name),
// onSelect: (engineer) {
// _workOrder.assistantEmployees = [AssignedEmployee(id: engineer.id, name: engineer.name)];
// },
// ),
const SizedBox(height: 8),
Row(
children: [
@ -93,11 +90,11 @@ class _WorkOrderDetailsBottomSheetState extends State<WorkOrderDetailsBottomShee
height: 8 * AppStyle.getScaleFactor(context),
),
ADateTimePicker(
date: DateTime.tryParse(_workOrder.startDate ?? ""),
date: DateTime.tryParse(_workOrder.startofWorkTime ?? ""),
from: DateTime.now().subtract(const Duration(days: 365)),
to: DateTime.now().add(const Duration(days: 365)),
onDateTimePicker: (date) {
_workOrder.startDate = date?.toIso8601String();
_workOrder.startofWorkTime = date?.toIso8601String();
setState(() {});
},
),
@ -114,11 +111,11 @@ class _WorkOrderDetailsBottomSheetState extends State<WorkOrderDetailsBottomShee
height: 8 * AppStyle.getScaleFactor(context),
),
ADateTimePicker(
date: DateTime.tryParse(_workOrder.endDate ?? ""),
date: DateTime.tryParse(_workOrder.endofWorkTime ?? ""),
from: DateTime.now().subtract(const Duration(days: 365)),
to: DateTime.now().add(const Duration(days: 365)),
onDateTimePicker: (date) {
_workOrder.endDate = date?.toIso8601String();
_workOrder.endofWorkTime = date?.toIso8601String();
setState(() {});
},
),
@ -133,9 +130,12 @@ class _WorkOrderDetailsBottomSheetState extends State<WorkOrderDetailsBottomShee
ATextFormField(
initialValue: null,
textAlign: TextAlign.center,
hintText: _workOrder.startDate == null
hintText: _workOrder.startofWorkTime == null
? "0"
: ((DateTime.tryParse(_workOrder.endDate)?.difference(DateTime.tryParse(_workOrder.startDate ?? ""))?.inMinutes ?? 0) / 60)?.toStringAsFixed(2)?.toString() ?? "0",
: ((DateTime.tryParse(_workOrder.endofWorkTime ?? "")?.difference(DateTime.tryParse(_workOrder.startofWorkTime ?? ""))?.inMinutes ?? 0) / 60)
?.toStringAsFixed(2)
?.toString() ??
"0",
enable: false,
style: Theme.of(context).textTheme.titleMedium,
// validator: (value) => Validator.isNumeric(value) ? null : _subtitle.requiredWord,
@ -180,18 +180,18 @@ class _WorkOrderDetailsBottomSheetState extends State<WorkOrderDetailsBottomShee
const ASubTitle("Repair Location"),
const SizedBox(height: 4),
ServiceReportRepairLocation(
initialValue: _workOrder.repairLocation != null ? Lookup(name: _workOrder.repairLocation) : null,
initialValue: _workOrder.repairLocation,
onSelect: (status) {
_workOrder.repairLocation = status.name;
_workOrder.repairLocation = status;
},
),
const SizedBox(height: 8),
ATextFormField(
labelText: "Technical Comments",
initialValue: _workOrder.reviewComment,
initialValue: _workOrder.comment,
textInputType: TextInputType.multiline,
onSaved: (value) {
_workOrder.reviewComment = value;
_workOrder.comment = value;
},
),
const SizedBox(height: 24),
@ -200,36 +200,38 @@ class _WorkOrderDetailsBottomSheetState extends State<WorkOrderDetailsBottomShee
),
),
),
AButton(
text: subtitle.update,
onPressed: () async {
// _validate = true;
if (!_formKey.currentState.validate()) {
setState(() {});
return;
}
// if (!_serviceReport.validate()) {
// setState(() {});
// return;
// }
_formKey.currentState.save();
_isLoading
? const ALoading()
: AButton(
text: subtitle.update,
onPressed: () async {
// _validate = true;
if (!_formKey.currentState.validate()) {
setState(() {});
return;
}
// if (!_serviceReport.validate()) {
// setState(() {});
// return;
// }
_formKey.currentState.save();
_isLoading = true;
setState(() {});
_isLoading = true;
setState(() {});
int status = await Provider.of<ServiceRequestsProvider>(context).updateServiceReport(report: ServiceReport());
_isLoading = false;
setState(() {});
if (status >= 200 && status < 300) {
Fluttertoast.showToast(msg: subtitle.requestCompleteSuccessfully);
Navigator.of(context).pop();
// Navigator.of(context).pop();
} else {
String errorMessage = HttpStatusManger.getStatusMessage(status: status, subtitle: subtitle);
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(errorMessage)));
}
},
),
int status = await Provider.of<ServiceRequestsProvider>(context, listen: false).updateWorkOrderDetails(workOrder: _workOrder);
_isLoading = false;
setState(() {});
if (status >= 200 && status < 300) {
Fluttertoast.showToast(msg: subtitle.requestCompleteSuccessfully);
Navigator.of(context).pop();
// Navigator.of(context).pop();
} else {
String errorMessage = HttpStatusManger.getStatusMessage(status: status, subtitle: subtitle);
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(errorMessage)));
}
},
),
],
),
),

@ -7,7 +7,7 @@ import '../../app_style/colors.dart';
import '../../app_style/sizing.dart';
class WorkOrderDetails extends StatelessWidget {
final SearchWorkOrders item;
final SearchWorkOrder item;
WorkOrderDetails({@required this.item,Key key}) : super(key: key);
Subtitle _subtitle;
@ -24,6 +24,9 @@ class WorkOrderDetails extends StatelessWidget {
color: Color(0xffefefef),
),
borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)),
// boxShadow: const [
// AppStyle.boxShadow
// ]
),
child: Column(
children: [
@ -50,7 +53,7 @@ class WorkOrderDetails extends StatelessWidget {
),
borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)),
),
child: _buildRow("Asset type", item.callRequest?.asset?.assetType??'', context),)
child: _buildRow("call id", "", context),)
],
);
}

@ -1,4 +1,3 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:test_sa/controllers/localization/localization.dart';
import 'package:test_sa/models/subtitle.dart';
@ -10,8 +9,8 @@ import '../../../models/service_request/search_work_order.dart';
class WorkOrderItem extends StatelessWidget {
final int index;
final SearchWorkOrders item;
final Function(SearchWorkOrders) onPressed;
final SearchWorkOrder item;
final Function(SearchWorkOrder) onPressed;
const WorkOrderItem({Key key, this.item, this.onPressed, this.index}) : super(key: key);
@override
@ -49,8 +48,8 @@ class WorkOrderItem extends StatelessWidget {
Text(
item.callRequest.asset.id.toString(),
style: Theme.of(context).textTheme.subtitle2.copyWith(
color: onItemColor,
),
color: onItemColor,
),
),
Row(
children: [
@ -58,24 +57,24 @@ class WorkOrderItem extends StatelessWidget {
child: Text(
_subtitle.assetName,
style: Theme.of(context).textTheme.subtitle2.copyWith(
color: onItemColor,
),
color: onItemColor,
),
),
),
//if (item.clientName != null)
Text(
item.callRequest.asset.assetNumber,
style: Theme.of(context).textTheme.subtitle2.copyWith(
color: onItemColor,
),
color: onItemColor,
),
),
],
),
Text(
item.calllastSituation.name,
style: Theme.of(context).textTheme.subtitle2.copyWith(
color: onItemColor,
),
color: onItemColor,
),
),
Divider(
color: onItemColor,
@ -86,8 +85,8 @@ class WorkOrderItem extends StatelessWidget {
child: Text(
_subtitle.status,
style: Theme.of(context).textTheme.subtitle2.copyWith(
color: onItemColor,
),
color: onItemColor,
),
),
),
if (item.callRequest.status?.id != null) StatusLabel(label: item.callRequest.status.name, color: AColors.getGasStatusColor(item.callRequest.status.id)),

@ -1,5 +1,6 @@
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:test_sa/views/pages/sub_workorder/workorder_update.dart';
import 'package:test_sa/views/pages/sub_workorder/workorder_item.dart';
import '../../../controllers/localization/localization.dart';
@ -10,36 +11,41 @@ import '../../widgets/loaders/no_item_found.dart';
import 'create_sub_workorder_page.dart';
class WorkOrderList extends StatelessWidget {
final List<SearchWorkOrders> items;
final List<SearchWorkOrder> items;
final bool nextPage;
final Future<void> Function() onLazyLoad;
WorkOrderList({Key key, this.items, this.nextPage, this.onLazyLoad}) : super(key: key);
const WorkOrderList({Key key, this.items, this.nextPage, this.onLazyLoad}) : super(key: key);
@override
Widget build(BuildContext context) {
if (items.length == 0) {
if (items.isEmpty) {
Subtitle subtitle = AppLocalization.of(context).subtitle;
return NoItemFound(
message: subtitle.noServiceRequestFound,
);
}
return LazyLoading(
nextPage: nextPage,
onLazyLoad: onLazyLoad,
child: ListView.builder(
itemCount: items.length,
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
itemBuilder: (context, itemIndex) {
return WorkOrderItem(index: itemIndex, onPressed: (model){
// Navigator.of(context).push(MaterialPageRoute(
// builder: (_) => WorkOrderUpdate(item: model,)));
Navigator.push(
context,
MaterialPageRoute(builder: (context) => CreateSubWorkOrderPage(workOrder:model)),
);
}, item: items[itemIndex], );
}),
);
nextPage: nextPage,
onLazyLoad: onLazyLoad,
child: ListView.builder(
itemCount: items.length,
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
itemBuilder: (context, itemIndex) {
return WorkOrderItem(
index: itemIndex,
onPressed: (model) {
// Navigator.of(context).push(MaterialPageRoute(
// builder: (_) => WorkOrderUpdate(item: model,)));
log(model?.toJson()?.toString());
Navigator.push(
context,
MaterialPageRoute(builder: (context) => CreateSubWorkOrderPage(workOrder: model)),
);
},
item: items[itemIndex],
);
},
),
);
}
}

@ -9,9 +9,9 @@ import '../../widgets/buttons/app_back_button.dart';
import '../../widgets/loaders/loading_manager.dart';
class WorkOrderUpdate extends StatefulWidget {
final SearchWorkOrders item;
final SearchWorkOrder item;
const WorkOrderUpdate({@required this.item,Key key}) : super(key: key);
const WorkOrderUpdate({@required this.item, Key key}) : super(key: key);
@override
State<WorkOrderUpdate> createState() => _WorkOrderUpdateState();
@ -55,7 +55,7 @@ class _WorkOrderUpdateState extends State<WorkOrderUpdate> {
],
),
),
//WorkOrderDetails(item: widget.item,)
WorkOrderDetails(item: widget.item,)
],
),
),

@ -15,7 +15,7 @@ import 'edit_service_report.dart';
class FutureServiceReport extends StatefulWidget {
final ServiceRequest request;
final SearchWorkOrders workOrder;
final SearchWorkOrder workOrder;
const FutureServiceReport({Key key, this.request, this.workOrder}) : super(key: key);

@ -37,7 +37,7 @@ class RequestDetailsPage extends StatelessWidget {
Subtitle _subtitle = AppLocalization.of(context).subtitle;
UserProvider _userProvider = Provider.of<UserProvider>(context);
SettingProvider _settingProvider = Provider.of<SettingProvider>(context);
List<SearchWorkOrders> workOrders = [];
List<SearchWorkOrder> workOrders = [];
ServiceRequestsProvider _serviceRequestsProvider = Provider.of<ServiceRequestsProvider>(context);
return DefaultTabController(
length: 2,
@ -303,7 +303,7 @@ class RequestDetailsPage extends StatelessWidget {
FutureBuilder(
future: _serviceRequestsProvider.searchWorkOrders(callId: serviceRequest.requestCode),
builder: (context, snap) {
workOrders = snap.data as List<SearchWorkOrders>;
workOrders = snap.data as List<SearchWorkOrder>;
if (snap.connectionState == ConnectionState.waiting) return Center(child: CircularProgressIndicator());
if (snap.connectionState == ConnectionState.done && (snap.data?.length ?? 0) != 0) {
return SingleChildScrollView(

Loading…
Cancel
Save