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

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

@ -173,6 +173,7 @@ class _SearchSubWorkOrderPageState extends State<SearchSubWorkOrderPage> {
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();
final List<SearchWorkOrder> woList = await serviceRequestsProvider.searchForWorkOrders( final List<SearchWorkOrder> woList = await serviceRequestsProvider.searchForWorkOrders(
_searchWorkOrders, _searchWorkOrders,
_callerId, _callerId,
@ -186,43 +187,17 @@ class _SearchSubWorkOrderPageState extends State<SearchSubWorkOrderPage> {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => Scaffold( builder: (context) => WorkOrderList(
body: SafeArea( items: woList,
child: Column( onLazyLoading: () async {
children: [ return await serviceRequestsProvider.searchForWorkOrders(
Container( _searchWorkOrders,
color: AColors.primaryColor, _callerId,
padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 4), _dateOperator,
child: Column( _site,
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: () {},
)),
],
),
)),
), ),
); );
} else { } else {

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

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

@ -1,50 +1,100 @@
import 'dart:developer'; import 'dart:developer';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.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/localization/localization.dart'; import '../../../controllers/localization/localization.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 '../../../models/subtitle.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/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';
class WorkOrderList extends StatelessWidget { class WorkOrderList extends StatefulWidget {
final List<SearchWorkOrder> items; List<SearchWorkOrder> items;
final bool nextPage; final Future<List<SearchWorkOrder>> Function() onLazyLoading;
final Future<void> Function() onLazyLoad; WorkOrderList({Key key, this.items, this.onLazyLoading}) : super(key: key);
const WorkOrderList({Key key, this.items, this.nextPage, this.onLazyLoad}) : 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 @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
if (items.isEmpty) { final serviceRequestsProvider = Provider.of<ServiceRequestsProvider>(context, listen: false);
Subtitle subtitle = AppLocalization.of(context).subtitle; Subtitle subtitle = AppLocalization.of(context).subtitle;
return NoItemFound( return Scaffold(
message: subtitle.noServiceRequestFound, body: SafeArea(
); child: Column(
} children: [
return LazyLoading( Container(
nextPage: nextPage, color: AColors.primaryColor,
onLazyLoad: onLazyLoad, padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 4),
child: ListView.builder( child: Column(
itemCount: items.length, children: [
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), Row(
itemBuilder: (context, itemIndex) { children: [
return WorkOrderItem( const ABackButton(),
index: itemIndex, Expanded(
onPressed: (model) { child: Center(
// Navigator.of(context).push(MaterialPageRoute( child: Text(
// builder: (_) => WorkOrderUpdate(item: model,))); "Work Order List",
log(model?.toJson()?.toString()); style: Theme.of(context).textTheme.headline6.copyWith(color: AColors.white, fontStyle: FontStyle.italic),
Navigator.push( ),
context, ),
MaterialPageRoute(builder: (context) => CreateSubWorkOrderPage(workOrder: model)), ),
); const SizedBox(width: 48),
}, ],
item: items[itemIndex], ),
); ],
}, ),
),
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 { } else {
return Center( return Column(
child: ASubTitle(_subtitle.noDateFound), 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, stateCode: _serviceRequestsProvider.stateCode,
onRefresh: () async { onRefresh: () async {
_serviceRequestsProvider.reset(); _serviceRequestsProvider.reset();
await _serviceRequestsProvider.getRequests( await _serviceRequestsProvider.getRequests(hospitalId: _userProvider.user.clientId);
user: _userProvider.user,
host: _settingProvider.host,
hospitalId: _userProvider.user.clientId,
);
}, },
child: Stack( child: Stack(
children: [ children: [
@ -104,11 +100,7 @@ class _ServiceRequestsPageState extends State<ServiceRequestsPage> with TickerPr
child: ServiceRequestsList( child: ServiceRequestsList(
nextPage: _serviceRequestsProvider.nextPage, nextPage: _serviceRequestsProvider.nextPage,
onLazyLoad: () async { onLazyLoad: () async {
await _serviceRequestsProvider.getRequests( await _serviceRequestsProvider.getRequests(hospitalId: _userProvider.user.clientId);
user: _userProvider.user,
host: _settingProvider.host,
hospitalId: _userProvider.user.clientId,
);
}, },
requests: _serviceRequestsProvider.serviceRequests, requests: _serviceRequestsProvider.serviceRequests,
), ),

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

Loading…
Cancel
Save