diff --git a/lib/views/pages/sub_workorder/sub_workorder_page.dart b/lib/views/pages/sub_workorder/sub_workorder_page.dart index 4aeaa1be..a935b9d2 100644 --- a/lib/views/pages/sub_workorder/sub_workorder_page.dart +++ b/lib/views/pages/sub_workorder/sub_workorder_page.dart @@ -6,6 +6,7 @@ import 'package:test_sa/models/engineer.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/pages/sub_workorder/workorder_list.dart'; import 'package:test_sa/views/widgets/app_text_form_field.dart'; import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; @@ -185,13 +186,37 @@ class _SubWorkOrderPageState extends State { context, MaterialPageRoute( builder: (context) => Scaffold( - body: ListView.builder( - itemCount: woList.length, - shrinkWrap: true, - itemBuilder: (context, index) => Text( - woList[index].id?.toString(), - ), - ), + 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: (){}, )), + ], + ), + ) ), ), ); diff --git a/lib/views/pages/sub_workorder/workorder_details.dart b/lib/views/pages/sub_workorder/workorder_details.dart new file mode 100644 index 00000000..1d6fb311 --- /dev/null +++ b/lib/views/pages/sub_workorder/workorder_details.dart @@ -0,0 +1,63 @@ +import 'package:flutter/material.dart'; + +import '../../../models/service_request/search_work_order.dart'; +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); + + @override + Widget build(BuildContext context) { + return Column( + children: [ + Container( + padding: EdgeInsets.all(10), + margin: EdgeInsets.all(10), + decoration: BoxDecoration( + color: AColors.inputFieldBackgroundColor, + border: Border.all( + color: Color(0xffefefef), + ), + borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)), + // boxShadow: const [ + // AppStyle.boxShadow + // ] + ), + child: Column( + children: [ + _buildRow("call id", "", context), + _buildRow("call id", "", context), + _buildRow("call id", "", context), + _buildRow("call id", "", context), + _buildRow("call id", "", context), + _buildRow("call id", "", context), + _buildRow("call id", "", context), + _buildRow("call id", "", context), + _buildRow("call id", "", context), + ], + ), + ), + Container(child: _buildRow("call id", "", context),) + ], + ); + } + Widget _buildRow(String title, String value, BuildContext context){ + return Row( + children: [ + Expanded( + child: Text( + "Call Id", + style: Theme.of(context).textTheme.subtitle2.copyWith(), + ), + ), + //if (item.clientName != null) + Text( + '', + style: Theme.of(context).textTheme.subtitle2.copyWith(), + ), + ], + ); + } +} diff --git a/lib/views/pages/sub_workorder/workorder_item.dart b/lib/views/pages/sub_workorder/workorder_item.dart new file mode 100644 index 00000000..a6e2c706 --- /dev/null +++ b/lib/views/pages/sub_workorder/workorder_item.dart @@ -0,0 +1,106 @@ +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'; +import 'package:test_sa/views/app_style/colors.dart'; +import 'package:test_sa/views/app_style/sizing.dart'; +import 'package:test_sa/views/widgets/requests/request_status.dart'; + +import '../../../models/service_request/search_work_order.dart'; + +class WorkOrderItem extends StatelessWidget { + final int index; + final SearchWorkOrders item; + final Function(SearchWorkOrders) onPressed; + const WorkOrderItem({Key key, this.item, this.onPressed, this.index}) : super(key: key); + + @override + Widget build(BuildContext context) { + Subtitle _subtitle = AppLocalization.of(context).subtitle; + Color itemColor = index % 2 == 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary; + Color onItemColor = index % 2 != 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary; + + return Padding( + padding: const EdgeInsets.symmetric(vertical: 4), + child: ElevatedButton( + style: ElevatedButton.styleFrom( + padding: EdgeInsets.symmetric(vertical: 8, horizontal: 8), + backgroundColor: itemColor, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context)), + ), + ), + onPressed: () { + onPressed(item); + }, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + item.callRequest.callNo ?? "-----", + style: Theme.of(context).textTheme.headline6.copyWith(color: onItemColor, fontSize: 16, fontWeight: FontWeight.bold), + ), + Text( + item.callRequest.asset.id.toString(), + style: Theme.of(context).textTheme.subtitle2.copyWith( + color: onItemColor, + ), + ), + Row( + children: [ + Expanded( + child: Text( + _subtitle.assetName, + style: Theme.of(context).textTheme.subtitle2.copyWith( + color: onItemColor, + ), + ), + ), + //if (item.clientName != null) + Text( + item.callRequest.asset.assetNumber, + style: Theme.of(context).textTheme.subtitle2.copyWith( + color: onItemColor, + ), + ), + ], + ), + Text( + item.calllastSituation.name, + style: Theme.of(context).textTheme.subtitle2.copyWith( + color: onItemColor, + ), + ), + Divider( + color: onItemColor, + ), + Row( + children: [ + Expanded( + child: Text( + _subtitle.status, + style: Theme.of(context).textTheme.subtitle2.copyWith( + color: onItemColor, + ), + ), + ), + if (item.callRequest.status?.id != null) StatusLabel(label: item.callRequest.status.name, color: AColors.getGasStatusColor(item.callRequest.status.id)), + ], + ), + ], + ), + ), + ], + ), + ], + ), + ), + ); + } +} diff --git a/lib/views/pages/sub_workorder/workorder_list.dart b/lib/views/pages/sub_workorder/workorder_list.dart new file mode 100644 index 00000000..5754678c --- /dev/null +++ b/lib/views/pages/sub_workorder/workorder_list.dart @@ -0,0 +1,40 @@ +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'; +import '../../../models/service_request/search_work_order.dart'; +import '../../../models/subtitle.dart'; +import '../../widgets/loaders/lazy_loading.dart'; +import '../../widgets/loaders/no_item_found.dart'; + +class WorkOrderList extends StatelessWidget { + final List items; + final bool nextPage; + final Future Function() onLazyLoad; + WorkOrderList({Key key, this.items, this.nextPage, this.onLazyLoad}) : super(key: key); + + @override + Widget build(BuildContext context) { + + if (items.length == 0) { + 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,))); + }, item: items[itemIndex], ); + }), + ); + } +} diff --git a/lib/views/pages/sub_workorder/workorder_update.dart b/lib/views/pages/sub_workorder/workorder_update.dart new file mode 100644 index 00000000..71f589c5 --- /dev/null +++ b/lib/views/pages/sub_workorder/workorder_update.dart @@ -0,0 +1,66 @@ +import 'package:flutter/material.dart'; +import 'package:test_sa/views/pages/sub_workorder/workorder_details.dart'; + +import '../../../controllers/localization/localization.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/loading_manager.dart'; + +class WorkOrderUpdate extends StatefulWidget { + final SearchWorkOrders item; + + const WorkOrderUpdate({@required this.item,Key key}) : super(key: key); + + @override + State createState() => _WorkOrderUpdateState(); +} + +class _WorkOrderUpdateState extends State { + final GlobalKey _formKey = GlobalKey(); + Subtitle _subtitle; + bool _isLoading = false; + + @override + Widget build(BuildContext context) { + _subtitle = AppLocalization.of(context).subtitle; + + return Scaffold( + body: SafeArea( + child: Form( + key: _formKey, + child: LoadingManager( + isLoading: _isLoading, + isFailedLoading: false, + stateCode: 200, + onRefresh: () async {}, + child: Column( + children: [ + Container( + color: Theme.of(context).colorScheme.primary, + padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 4), + child: Row( + children: [ + const ABackButton(), + Expanded( + child: Center( + child: Text( + "Work Order", + style: Theme.of(context).textTheme.headline6.copyWith(color: AColors.white, fontStyle: FontStyle.italic), + ), + ), + ), + const SizedBox(width: 58), + ], + ), + ), + WorkOrderDetails(item: widget.item,) + ], + ), + ), + ), + ), + ); + } +}