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

# Conflicts:
#	lib/views/pages/sub_workorder/create_sub_workorder_page.dart
pull/2/head
nextwo 2 years ago
commit 912a306e9e

@ -23,6 +23,7 @@ class ServiceRequestsProvider extends ChangeNotifier {
//reset provider data
void reset() {
workOrders = [];
serviceRequests = null;
nextPage = true;
stateCode = null;
@ -52,11 +53,7 @@ class ServiceRequestsProvider extends ChangeNotifier {
/// return state code if request complete may be 200, 404 or 403
/// for more details check http state manager
/// lib\controllers\http_status_manger\http_status_manger.dart
Future<int> getRequests({
@required String host,
@required User user,
@required int hospitalId,
}) async {
Future<int> getRequests({@required int hospitalId}) async {
if (isLoading == true) return -2;
isLoading = true;
if (serviceRequests == null) notifyListeners();
@ -370,11 +367,10 @@ class ServiceRequestsProvider extends ChangeNotifier {
}) async {
Response response;
try {
Map<String, dynamic> body= workOrder.toJson();
Map<String, dynamic> body = workOrder.toJson();
response = await ApiManager.instance.post(URLs.createServiceReport, body: body);
print(response.body);
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
reset();
@ -641,7 +637,8 @@ class ServiceRequestsProvider extends ChangeNotifier {
// client's request was successfully received
List workOrdersJson = json.decode(response.body)["data"];
print(workOrdersJson);
workOrders = workOrdersJson.map<SearchWorkOrder>((request) => SearchWorkOrder.fromJson(request)).toList();
workOrders ??= [];
workOrders.addAll(workOrdersJson.map<SearchWorkOrder>((request) => SearchWorkOrder.fromJson(request)).toList());
if (workOrders.length == pageItemNumber) {
nextPage = true;
} else {

@ -1,4 +1,3 @@
import 'dart:convert';
import 'dart:developer';
import 'dart:io';
@ -39,7 +38,7 @@ class CreateSubWorkOrderPage extends StatefulWidget {
class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final SearchWorkOrder _subWorkOrders = SearchWorkOrder();
SearchWorkOrder _subWorkOrders;
Lookup _serviceReportReason = const Lookup();
ServiceReport _serviceReport;
File _image;
@ -48,9 +47,9 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
final Subtitle subtitle = AppLocalization.of(context).subtitle;

@ -173,6 +173,7 @@ class _SearchSubWorkOrderPageState extends State<SearchSubWorkOrderPage> {
if (_formKey.currentState?.validate() ?? false) {}
_formKey.currentState?.save();
final serviceRequestsProvider = Provider.of<ServiceRequestsProvider>(context, listen: false);
serviceRequestsProvider.reset();
final List<SearchWorkOrder> woList = await serviceRequestsProvider.searchForWorkOrders(
_searchWorkOrders,
_callerId,
@ -186,43 +187,17 @@ class _SearchSubWorkOrderPageState extends State<SearchSubWorkOrderPage> {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => Scaffold(
body: SafeArea(
child: Column(
children: [
Container(
color: AColors.primaryColor,
padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 4),
child: Column(
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),
),
),
),
const SizedBox(
width: 48,
)
],
),
],
),
),
Expanded(
child: WorkOrderList(
items: woList,
nextPage: true,
onLazyLoad: () {},
)),
],
),
)),
builder: (context) => WorkOrderList(
items: woList,
onLazyLoading: () async {
return await serviceRequestsProvider.searchForWorkOrders(
_searchWorkOrders,
_callerId,
_dateOperator,
_site,
);
},
),
),
);
} else {

@ -18,12 +18,12 @@ class SparePartsBottomSheet extends StatefulWidget {
class _SparePartsBottomSheetState extends State<SparePartsBottomSheet> {
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
SearchWorkOrder _workOrder;
final SearchWorkOrder _workOrder = SearchWorkOrder();
@override
void initState() {
super.initState();
_workOrder = widget.subWorkOrder;
_workOrder.copyFrom(widget.subWorkOrder);
}
@override
@ -68,7 +68,7 @@ class _SparePartsBottomSheetState extends State<SparePartsBottomSheet> {
return Column(
children: [
ATextFormField(
labelText: "Part No.",
labelText: _workOrder?.sparePartsWorkOrders[index]?.sparePart?.partNo ?? "Part No.",
onChange: (value) {
_workOrder.sparePartsWorkOrders[index].sparePart = SparePart(partNo: value);
},
@ -84,7 +84,7 @@ class _SparePartsBottomSheetState extends State<SparePartsBottomSheet> {
// ),
const SizedBox(height: 8),
ATextFormField(
labelText: "Quantity",
labelText: _workOrder?.sparePartsWorkOrders[index]?.qty?.toString() ?? "Quantity",
textInputType: TextInputType.number,
onSaved: (value) {
_workOrder.sparePartsWorkOrders[index].qty = double.tryParse(value ?? "");

@ -22,12 +22,12 @@ class WorkOrderDetailsBottomSheet extends StatefulWidget {
class _WorkOrderDetailsBottomSheetState extends State<WorkOrderDetailsBottomSheet> {
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
SearchWorkOrder _workOrder;
final SearchWorkOrder _workOrder = SearchWorkOrder();
@override
void initState() {
super.initState();
_workOrder = widget.subWorkOrder;
_workOrder.copyFrom(widget.subWorkOrder);
}
@override

@ -1,50 +1,100 @@
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/views/pages/sub_workorder/workorder_item.dart';
import '../../../controllers/localization/localization.dart';
import '../../../controllers/providers/api/service_requests_provider.dart';
import '../../../models/service_request/search_work_order.dart';
import '../../../models/subtitle.dart';
import '../../app_style/colors.dart';
import '../../widgets/buttons/app_back_button.dart';
import '../../widgets/loaders/lazy_loading.dart';
import '../../widgets/loaders/no_item_found.dart';
import 'create_sub_workorder_page.dart';
class WorkOrderList extends StatelessWidget {
final List<SearchWorkOrder> items;
final bool nextPage;
final Future<void> Function() onLazyLoad;
const WorkOrderList({Key key, this.items, this.nextPage, this.onLazyLoad}) : super(key: key);
class WorkOrderList extends StatefulWidget {
List<SearchWorkOrder> items;
final Future<List<SearchWorkOrder>> Function() onLazyLoading;
WorkOrderList({Key key, this.items, this.onLazyLoading}) : super(key: key);
@override
State<WorkOrderList> createState() => _WorkOrderListState();
}
class _WorkOrderListState extends State<WorkOrderList> {
List<SearchWorkOrder> _items;
@override
void initState() {
super.initState();
_items = widget.items;
}
@override
Widget build(BuildContext context) {
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,)));
log(model?.toJson()?.toString());
Navigator.push(
context,
MaterialPageRoute(builder: (context) => CreateSubWorkOrderPage(workOrder: model)),
);
},
item: items[itemIndex],
);
},
final serviceRequestsProvider = Provider.of<ServiceRequestsProvider>(context, listen: false);
Subtitle subtitle = AppLocalization.of(context).subtitle;
return Scaffold(
body: SafeArea(
child: Column(
children: [
Container(
color: AColors.primaryColor,
padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 4),
child: Column(
children: [
Row(
children: [
const 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),
],
),
],
),
),
Expanded(
child: _items?.isEmpty ?? []
? NoItemFound(
message: subtitle.noServiceRequestFound,
)
: LazyLoading(
nextPage: serviceRequestsProvider.nextPage,
onLazyLoad: () async {
_items = await widget.onLazyLoading();
setState(() {});
},
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],
);
},
),
),
),
],
),
),
);
}

@ -408,8 +408,26 @@ class RequestDetailsPage extends StatelessWidget {
),
);
} else {
return Center(
child: ASubTitle(_subtitle.noDateFound),
return Column(
children: [
Expanded(
child: Center(
child: ASubTitle(_subtitle.dataNotFound),
),
),
if (_userProvider.user.type == UsersTypes.engineer)
Center(
child: Padding(
padding: const EdgeInsets.all(32),
child: AButton(
text: "Create Report",
onPressed: () {
Navigator.of(context).push(MaterialPageRoute(builder: (_) => CreateServiceReport(request: serviceRequest)));
},
),
),
),
],
);
}
},

@ -44,11 +44,7 @@ class _ServiceRequestsPageState extends State<ServiceRequestsPage> with TickerPr
stateCode: _serviceRequestsProvider.stateCode,
onRefresh: () async {
_serviceRequestsProvider.reset();
await _serviceRequestsProvider.getRequests(
user: _userProvider.user,
host: _settingProvider.host,
hospitalId: _userProvider.user.clientId,
);
await _serviceRequestsProvider.getRequests(hospitalId: _userProvider.user.clientId);
},
child: Stack(
children: [
@ -104,11 +100,7 @@ class _ServiceRequestsPageState extends State<ServiceRequestsPage> with TickerPr
child: ServiceRequestsList(
nextPage: _serviceRequestsProvider.nextPage,
onLazyLoad: () async {
await _serviceRequestsProvider.getRequests(
user: _userProvider.user,
host: _settingProvider.host,
hospitalId: _userProvider.user.clientId,
);
await _serviceRequestsProvider.getRequests(hospitalId: _userProvider.user.clientId);
},
requests: _serviceRequestsProvider.serviceRequests,
),

@ -19,7 +19,6 @@ class ServiceReportAssistantEmployeeMenu extends StatelessWidget {
stateCode: menuProvider.stateCode,
onRefresh: () async {
await menuProvider.getAssistantEmployees();
print("ccccccccccccccc");
},
child: AssistantEmployeeMenu(
initialStatus: initialValue,

Loading…
Cancel
Save