snag list remaining 4 points resolved & improvements.

main_design2.0
Sikander Saleem 2 years ago
parent 58f5fbab5e
commit adba86b10e

@ -78,7 +78,8 @@ class URLs {
static get getSubWorkerInfoAccordingToPreviousStep => "$_baseUrl/WorkOrder/GetDataPreviousStep"; static get getSubWorkerInfoAccordingToPreviousStep => "$_baseUrl/WorkOrder/GetDataPreviousStep";
static get getServiceReportReasons => "$_baseUrl/Lookups/GetLookup?lookupEnum=522"; // get static get getPpmReasons => "$_baseUrl/Lookups/GetLookup?lookupEnum=522"; // get for ppm po reason, in mobile there is no use of it.
static get getServiceReportReasons => "$_baseUrl/Lookups/GetLookup?lookupEnum=505"; // get // for service
static get getServiceReportTypes => "$_baseUrl/Lookups/GetLookup?lookupEnum=501"; // get static get getServiceReportTypes => "$_baseUrl/Lookups/GetLookup?lookupEnum=501"; // get
static get getServiceReportTypesForWO => "$_baseUrl/Lookups/GetLookup?lookupEnum=34"; // get static get getServiceReportTypesForWO => "$_baseUrl/Lookups/GetLookup?lookupEnum=34"; // get
static get getServiceReportStatus => "$_baseUrl/Lookups/GetLookup?lookupEnum=521"; // get static get getServiceReportStatus => "$_baseUrl/Lookups/GetLookup?lookupEnum=521"; // get

@ -161,6 +161,7 @@ class GasRefillProvider extends ChangeNotifier {
"department": department?.toJson(), "department": department?.toJson(),
"engSignature": newModel.engSignature, "engSignature": newModel.engSignature,
"nurseSignature": newModel.nurseSignature, "nurseSignature": newModel.nurseSignature,
"comment": newModel.comment,
}; };
body["gazRefillDetails"] = newModel.gazRefillDetails body["gazRefillDetails"] = newModel.gazRefillDetails

@ -49,7 +49,7 @@ class NotificationsProvider extends ChangeNotifier {
notifyListeners(); notifyListeners();
Response response; Response response;
try { try {
final Map<String, dynamic> body = {"pageSize": pageItemNumber, "pageNumber": notifications.length ~/ pageItemNumber + 1}; final Map<String, dynamic> body = {"pageSize": pageItemNumber, "pageNumber": notifications.length ~/ pageItemNumber + 1, "userId": user.userID};
response = await ApiManager.instance.post(URLs.getSystemNotifications, body: body); response = await ApiManager.instance.post(URLs.getSystemNotifications, body: body);
stateCode = response.statusCode; stateCode = response.statusCode;

@ -345,6 +345,10 @@ class ServiceReport {
await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.callLastSituation}"); await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.callLastSituation}");
return false; return false;
} }
if (reason == null) {
await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.reason}");
return false;
}
// if (sparePartsWorkOrders?.isEmpty ?? true) { // if (sparePartsWorkOrders?.isEmpty ?? true) {
// await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.partNo}"); // await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.partNo}");
// return false; // return false;

@ -11,9 +11,11 @@ class SystemNotificationModel {
int id; int id;
String createdOn; String createdOn;
String modifiedOn; String modifiedOn;
String priorityName;
String statusName;
SystemNotificationModel( SystemNotificationModel(
{this.userId, this.userName, this.title, this.text, this.referenceId, this.sourceId, this.sourceName, this.readed, this.readingDate, this.id, this.createdOn, this.modifiedOn}); {this.userId, this.userName, this.title, this.text, this.referenceId, this.sourceId, this.sourceName, this.readed, this.readingDate, this.id, this.createdOn, this.modifiedOn, this.priorityName, this.statusName});
SystemNotificationModel.fromJson(Map<String, dynamic> json) { SystemNotificationModel.fromJson(Map<String, dynamic> json) {
userId = json['userId']; userId = json['userId'];
@ -28,6 +30,8 @@ class SystemNotificationModel {
id = json['id']; id = json['id'];
createdOn = json['createdOn']; createdOn = json['createdOn'];
modifiedOn = json['modifiedOn']; modifiedOn = json['modifiedOn'];
priorityName = json['priorityName'];
statusName = json['statusName'];
} }
Map<String, dynamic> toNotificationJson() { Map<String, dynamic> toNotificationJson() {
@ -44,8 +48,9 @@ class SystemNotificationModel {
data['id'] = this.id; data['id'] = this.id;
data['createdOn'] = this.createdOn; data['createdOn'] = this.createdOn;
data['modifiedOn'] = this.modifiedOn; data['modifiedOn'] = this.modifiedOn;
data['priority'] = "Low Priority"; data['priorityName'] = this.priorityName;
data['priority'] = this.priorityName;
data['statusName'] = this.statusName;
return data; return data;
} }
@ -63,6 +68,8 @@ class SystemNotificationModel {
data['id'] = this.id; data['id'] = this.id;
data['createdOn'] = this.createdOn; data['createdOn'] = this.createdOn;
data['modifiedOn'] = this.modifiedOn; data['modifiedOn'] = this.modifiedOn;
data['priorityName'] = this.priorityName;
data['statusName'] = this.statusName;
return data; return data;
} }
} }

@ -3,6 +3,7 @@ import 'package:provider/provider.dart';
import 'package:test_sa/controllers/notification/firebase_notification_manger.dart'; import 'package:test_sa/controllers/notification/firebase_notification_manger.dart';
import 'package:test_sa/controllers/providers/api/all_requests_provider.dart'; import 'package:test_sa/controllers/providers/api/all_requests_provider.dart';
import 'package:test_sa/controllers/providers/api/notifications_provider.dart'; import 'package:test_sa/controllers/providers/api/notifications_provider.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
@ -21,7 +22,7 @@ class RecentActivitiesFragment extends StatelessWidget {
return RefreshIndicator( return RefreshIndicator(
onRefresh: () { onRefresh: () {
Provider.of<AllRequestsProvider>(context, listen: false).getRequests(); Provider.of<AllRequestsProvider>(context, listen: false).getRequests();
_notificationsProvider.getSystemNotifications(); _notificationsProvider.getSystemNotifications(user: Provider.of<UserProvider>(context, listen: false).user);
return Future.delayed(const Duration(microseconds: 250)); return Future.delayed(const Duration(microseconds: 250));
}, },
child: SingleChildScrollView( child: SingleChildScrollView(

@ -3,6 +3,7 @@ import 'package:provider/provider.dart';
import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart';
import 'package:test_sa/controllers/providers/api/all_requests_provider.dart'; import 'package:test_sa/controllers/providers/api/all_requests_provider.dart';
import 'package:test_sa/controllers/providers/api/notifications_provider.dart'; import 'package:test_sa/controllers/providers/api/notifications_provider.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart';
@ -24,7 +25,7 @@ class RequestsFragment extends StatelessWidget {
builder: (context, snapshot, _) => RefreshIndicator( builder: (context, snapshot, _) => RefreshIndicator(
onRefresh: () { onRefresh: () {
snapshot.getRequests(); snapshot.getRequests();
Provider.of<NotificationsProvider>(context, listen: false).getSystemNotifications(); Provider.of<NotificationsProvider>(context, listen: false).getSystemNotifications(user: Provider.of<UserProvider>(context, listen: false).user);
return Future.delayed(const Duration(microseconds: 250)); return Future.delayed(const Duration(microseconds: 250));
}, },
child: GridView( child: GridView(

@ -38,7 +38,7 @@ class _DashboardPageState extends State<DashboardPage> {
super.initState(); super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) { WidgetsBinding.instance.addPostFrameCallback((_) {
Provider.of<AllRequestsProvider>(context, listen: false).getRequests(); Provider.of<AllRequestsProvider>(context, listen: false).getRequests();
Provider.of<NotificationsProvider>(context, listen: false).getSystemNotifications(); Provider.of<NotificationsProvider>(context, listen: false).getSystemNotifications(user: Provider.of<UserProvider>(context, listen: false).user);
}); });
} }

@ -171,14 +171,13 @@ class _NewGasRefillRequestPageState extends State<NewGasRefillRequestPage> {
buttonColor: context.isDark ? AppColor.neutral60 : AppColor.neutral50, buttonColor: context.isDark ? AppColor.neutral60 : AppColor.neutral50,
onPressed: _add, onPressed: _add,
), ),
24.height,
ListView.builder( ListView.builder(
shrinkWrap: true, shrinkWrap: true,
itemCount: _gasModel.gazRefillDetails?.length, itemCount: _gasModel.gazRefillDetails?.length,
padding: const EdgeInsets.only(top: 12, bottom: 24),
physics: const NeverScrollableScrollPhysics(), physics: const NeverScrollableScrollPhysics(),
itemBuilder: (context, index) { itemBuilder: (context, index) {
return Card( return Column(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Row( Row(
@ -215,24 +214,26 @@ class _NewGasRefillRequestPageState extends State<NewGasRefillRequestPage> {
("${context.translation.floor}: ${_gasModel.floor?.name}").bodyText(context), ("${context.translation.floor}: ${_gasModel.floor?.name}").bodyText(context),
("${context.translation.department}: ${_gasModel.department?.departmentName}").bodyText(context), ("${context.translation.department}: ${_gasModel.department?.departmentName}").bodyText(context),
], ],
).paddingAll(16), ).toShadowContainer(context);
);
},
),
8.height,
AppTextFormField(
labelText: context.translation.comments,
textInputType: TextInputType.multiline,
alignLabelWithHint: true,
onChange: (text) {
_gasModel.comment = text;
}, },
), ),
40.height, // 8.height,
// // todo sikander, check it with FM
// AppTextFormField(
// labelText: context.translation.comments,
// textInputType: TextInputType.multiline,
// alignLabelWithHint: true,
// onChange: (text) {
// _gasModel.comment = text;
// },
// ),
//40.height,
], ],
), ),
), ),
).expanded, ).expanded,
16.height,
AppFilledButton(label: context.translation.submitRequest, maxWidth: true, onPressed: _submit), AppFilledButton(label: context.translation.submitRequest, maxWidth: true, onPressed: _submit),
], ],
).paddingOnly(start: 16, end: 16, bottom: 24), ).paddingOnly(start: 16, end: 16, bottom: 24),

@ -63,6 +63,7 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
super.initState(); super.initState();
if (widget.gasRefillModel != null) { if (widget.gasRefillModel != null) {
_formModel.fromGasRefillModel(widget.gasRefillModel); _formModel.fromGasRefillModel(widget.gasRefillModel);
_commentController.text = _formModel.comment ?? "";
} }
} }
@ -90,7 +91,7 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
setState(() {}); setState(() {});
_formKey.currentState.save(); _formKey.currentState.save();
_formModel.comment = _commentController.text;
int status = widget.gasRefillModel == null int status = widget.gasRefillModel == null
? null /*await _gasRefillProvider.createModel( ? null /*await _gasRefillProvider.createModel(
user: _userProvider.user, user: _userProvider.user,
@ -137,7 +138,7 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
// Scrollable.ensureVisible(_DetailsKey.currentContext); // Scrollable.ensureVisible(_DetailsKey.currentContext);
_deliveredQuantityController.clear(); _deliveredQuantityController.clear();
_workingHoursController.clear(); _workingHoursController.clear();
_commentController.clear(); //_commentController.clear();
_currentDetails = GasRefillDetails(); _currentDetails = GasRefillDetails();
setState(() {}); setState(() {});
return true; return true;
@ -207,6 +208,7 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
/// TBD /// TBD
'${context.translation.gasRequest}: ${widget.gasRefillModel.gazRefillDetails[0].gasType.name}'.bodyText(context), '${context.translation.gasRequest}: ${widget.gasRefillModel.gazRefillDetails[0].gasType.name}'.bodyText(context),
'${context.translation.cylinderType}: ${widget.gasRefillModel.gazRefillDetails[0].cylinderType.name}'.bodyText(context),
'${context.translation.cylinderSize}: ${widget.gasRefillModel.gazRefillDetails[0].cylinderSize.name}'.bodyText(context), '${context.translation.cylinderSize}: ${widget.gasRefillModel.gazRefillDetails[0].cylinderSize.name}'.bodyText(context),
'${context.translation.quantity}: ${widget.gasRefillModel.gazRefillDetails[0].requestedQty ?? 0}'.bodyText(context), '${context.translation.quantity}: ${widget.gasRefillModel.gazRefillDetails[0].requestedQty ?? 0}'.bodyText(context),
'${context.translation.site}: ${widget.gasRefillModel.site?.name}'.bodyText(context), '${context.translation.site}: ${widget.gasRefillModel.site?.name}'.bodyText(context),
@ -225,7 +227,7 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
8.height, 8.height,
SingleItemDropDownMenu<Lookup, GasStatusProvider>( SingleItemDropDownMenu<Lookup, GasStatusProvider>(
context: context, context: context,
title: context.translation.reportStatus, title: context.translation.requestStatus,
initialValue: _formModel.status, initialValue: _formModel.status,
onSelect: (value) { onSelect: (value) {
if (value?.value == 0) { if (value?.value == 0) {
@ -233,8 +235,9 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
setState(() {}); setState(() {});
return; return;
} }
if(value!=null) {
_formModel.status = value; _formModel.status = value;
}
}, },
), ),
8.height, 8.height,

@ -231,6 +231,11 @@ class _ServiceRequestDetailsPageState extends State<ServiceRequestDetailsPage> {
body: SafeArea( body: SafeArea(
child: loading child: loading
? const ALoading().center ? const ALoading().center
: serviceRequest == null
? Text(
context.translation.noDataFound,
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20),
).center
: Column( : Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
@ -239,7 +244,7 @@ class _ServiceRequestDetailsPageState extends State<ServiceRequestDetailsPage> {
child: informationCard(serviceRequest), child: informationCard(serviceRequest),
).expanded, ).expanded,
if (_userProvider.user.type == UsersTypes.engineer || (serviceRequest.statusValue == 5 || serviceRequest.statusValue == 3)) if (_userProvider.user.type == UsersTypes.engineer || (serviceRequest.statusValue == 5 || serviceRequest.statusValue == 3))
(serviceRequest.firstAction == null (serviceRequest?.firstAction == null
? AppFilledButton( ? AppFilledButton(
label: context.translation.firstAction, label: context.translation.firstAction,
maxWidth: true, maxWidth: true,

@ -46,8 +46,9 @@ class ADatePicker extends StatelessWidget {
padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 8.toScreenHeight), padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 8.toScreenHeight),
child: Row( child: Row(
children: [ children: [
enable // enable
? Column( // ?
Column(
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
@ -58,8 +59,8 @@ class ADatePicker extends StatelessWidget {
.bodyText(context) .bodyText(context)
.custom(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), .custom(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
], ],
).expanded ).expanded,
: label.bodyText(context).paddingOnly(top: 8, bottom: 8), //: label.bodyText(context).paddingOnly(top: 8, bottom: 8),
enable ? 16.width : const Spacer(), enable ? 16.width : const Spacer(),
"calender".toSvgAsset(width: 20, color: context.isDark ? AppColor.neutral10 : null), "calender".toSvgAsset(width: 20, color: context.isDark ? AppColor.neutral10 : null),
], ],

@ -6,6 +6,7 @@ import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/system_notification_model.dart'; import 'package:test_sa/models/system_notification_model.dart';
import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/views/widgets/requests/request_status.dart';
class NotificationItem extends StatelessWidget { class NotificationItem extends StatelessWidget {
final SystemNotificationModel notification; final SystemNotificationModel notification;
@ -20,6 +21,24 @@ class NotificationItem extends StatelessWidget {
return Column( return Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Row(
children: [
if (notification.priorityName != null)
StatusLabel(
label: notification.priorityName,
textColor: AppColor.getRequestStatusTextColorByName(context, notification.priorityName),
backgroundColor: AppColor.getRequestStatusColorByName(context, notification.priorityName),
).toShimmer(isShow: isLoading),
8.width,
if((notification.statusName ?? "").isNotEmpty && notification.sourceName!="Asset Transfer")
StatusLabel(
label: notification.statusName ?? "",
textColor: AppColor.getRequestStatusTextColorByName(context, notification.statusName ?? ""),
backgroundColor: AppColor.getRequestStatusColorByName(context, notification.statusName ?? ""),
).toShimmer(isShow: isLoading),
],
),
8.height,
Row( Row(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [

@ -93,6 +93,7 @@ class _PentryTBSFormState extends State<PentryTBSForm> {
label: context.translation.expectedVisitDate, label: context.translation.expectedVisitDate,
date: DateTime.tryParse(widget.model.expectedDate ?? ""), date: DateTime.tryParse(widget.model.expectedDate ?? ""),
from: DateTime.now().subtract(const Duration(days: 30)), from: DateTime.now().subtract(const Duration(days: 30)),
enable: false,
onDatePicker: (date) { onDatePicker: (date) {
if (date == null) return; if (date == null) return;
widget.model.expectedDate = date?.toIso8601String(); widget.model.expectedDate = date?.toIso8601String();

@ -1,38 +1,38 @@
import 'package:flutter/material.dart'; // import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; // import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_reasons_provider.dart'; // import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_reasons_provider.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart'; // import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; // import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; // import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
import 'package:test_sa/views/widgets/status/single_status_menu.dart'; // import 'package:test_sa/views/widgets/status/single_status_menu.dart';
//
class ServiceReportReasonsMenu extends StatelessWidget { // class ServiceReportReasonsMenu extends StatelessWidget {
final Lookup initialValue; // final Lookup initialValue;
final Function(Lookup) onSelect; // final Function(Lookup) onSelect;
//
const ServiceReportReasonsMenu({Key key, this.onSelect, this.initialValue}) : super(key: key); // const ServiceReportReasonsMenu({Key key, this.onSelect, this.initialValue}) : super(key: key);
//
@override // @override
Widget build(BuildContext context) { // Widget build(BuildContext context) {
SettingProvider _settingProvider = Provider.of<SettingProvider>(context); // SettingProvider _settingProvider = Provider.of<SettingProvider>(context);
UserProvider _userProvider = Provider.of<UserProvider>(context); // UserProvider _userProvider = Provider.of<UserProvider>(context);
ServiceReportReasonsProvider _menuProvider = Provider.of<ServiceReportReasonsProvider>(context); // ServiceReportReasonsProvider _menuProvider = Provider.of<ServiceReportReasonsProvider>(context);
return LoadingManager( // return LoadingManager(
isLoading: _menuProvider.isLoading, // isLoading: _menuProvider.isLoading,
isFailedLoading: _menuProvider.reasons == null, // isFailedLoading: _menuProvider.reasons == null,
stateCode: _menuProvider.stateCode, // stateCode: _menuProvider.stateCode,
onRefresh: () async { // onRefresh: () async {
_menuProvider.reset(); // _menuProvider.reset();
await _menuProvider.getTypes( // await _menuProvider.getTypes(
user: _userProvider.user, // user: _userProvider.user,
host: _settingProvider.host, // host: _settingProvider.host,
); // );
}, // },
child: SingleStatusMenu( // child: SingleStatusMenu(
initialStatus: initialValue, // initialStatus: initialValue,
statuses: _menuProvider.reasons, // statuses: _menuProvider.reasons,
onSelect: onSelect, // onSelect: onSelect,
)); // ));
} // }
} // }

Loading…
Cancel
Save