Updating Search Work Order Model

pull/2/head
zaid_daoud 3 years ago
parent ebd9297646
commit 19cee08954

@ -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,7 +478,7 @@ class ServiceRequestsProvider extends ChangeNotifier {
}
}
Future<int> updateWorkOrderDetails({@required SearchWorkOrders workOrder}) async {
Future<int> updateWorkOrderDetails({@required SearchWorkOrder workOrder}) async {
Response response;
//Map<String,dynamic> body = report.toMap(request);
// body["uid"] = user.id;
@ -588,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,
@ -619,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

@ -13,14 +13,10 @@ import '../../../controllers/localization/localization.dart';
import '../../../models/subtitle.dart';
import '../../widgets/buttons/app_back_button.dart';
import '../../widgets/buttons/app_button.dart';
import '../../widgets/date_and_time/date_picker.dart';
import '../../widgets/status/report/service_report_equipment_status.dart';
import '../../widgets/status/report/service_report_reasons.dart';
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

@ -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 {

@ -14,7 +14,7 @@ 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() {
@ -123,7 +123,7 @@ class _SparePartsBottomSheetState extends State<SparePartsBottomSheet> {
const SizedBox(height: 8),
InkWell(
onTap: () {
_workOrder.sparePartsWorkOrders.add(SparePartWorkOrder());
_workOrder.sparePartsWorkOrders.add(SparePartsWorkOrders());
setState(() {});
},
child: Container(

@ -2,7 +2,6 @@ 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';
@ -13,14 +12,12 @@ import 'package:test_sa/views/widgets/status/report/service_report_repair_locati
import '../../../controllers/api_routes/http_status_manger.dart';
import '../../../controllers/localization/localization.dart';
import '../../../models/engineer.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),

@ -5,8 +5,8 @@ import '../../app_style/colors.dart';
import '../../app_style/sizing.dart';
class WorkOrderDetails extends StatelessWidget {
final SearchWorkOrders item;
const WorkOrderDetails({@required this.item,Key key}) : super(key: key);
final SearchWorkOrder item;
const WorkOrderDetails({@required this.item, Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
@ -47,11 +47,13 @@ class WorkOrderDetails extends StatelessWidget {
),
borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)),
),
child: _buildRow("call id", "", context),)
child: _buildRow("call id", "", context),
)
],
);
}
Widget _buildRow(String title, String value, BuildContext context){
Widget _buildRow(String title, String value, BuildContext context) {
return Row(
children: [
Expanded(

@ -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,9 @@ 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