ATOMS-771, ATOMS-804, ATOMS-773, ATOMS-769, ATOMS-776, ATOMS-794, ATOMS-801, ATOMS-796, ATOMS-790, ATOMS-797, ATOMS-799, ATOMS-811, ATOMS-811, ATOMS-817, ATOMS-814, ATOMS-820, ATOMS-829, issues fixed

design_3.0_task_module_new
WaseemAbbasi22 6 months ago
parent 72823e37f8
commit a42466b578

@ -15,7 +15,7 @@ import 'package:test_sa/models/user.dart';
import '../../../models/hospital.dart';
import '../../../new_views/common_widgets/app_lazy_loading.dart';
class AssetTransferProvider extends ChangeNotifier {
class DeviceTransferProvider extends ChangeNotifier {
// number of items call in each request
final pageItemNumber = 12;

@ -7,7 +7,7 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:localization/localization.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/all_requests_provider.dart';
import 'package:test_sa/controllers/providers/api/asset_transfer_provider.dart';
import 'package:test_sa/controllers/providers/api/device_transfer_provider.dart';
import 'package:test_sa/controllers/providers/api/comments_provider.dart';
import 'package:test_sa/controllers/providers/api/departments_provider.dart';
import 'package:test_sa/controllers/providers/api/devices_provider.dart';
@ -195,7 +195,7 @@ class MyApp extends StatelessWidget {
ChangeNotifierProvider(create: (_) => GasStatusProvider()),
ChangeNotifierProvider(create: (_) => GasTypesProvider()),
ChangeNotifierProvider(create: (_) => GasRefillProvider()),
ChangeNotifierProvider(create: (_) => AssetTransferProvider()),
ChangeNotifierProvider(create: (_) => DeviceTransferProvider()),
ChangeNotifierProvider(create: (_) => AssetTransferStatusProvider()),
///todo deleted

@ -3,6 +3,7 @@ import 'package:provider/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/int_extensions.dart';
import 'package:test_sa/extensions/string_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/enums/user_types.dart';
@ -45,6 +46,7 @@ class _AllRequestsFilterPageState extends State<AllRequestsFilterPage> {
@override
Widget build(BuildContext context) {
print('i am here...');
bool isEngineer = (Provider.of<UserProvider>(context, listen: false).user?.type) == UsersTypes.engineer;
if (search == null) {
search = SearchAllRequestsModel(
@ -154,6 +156,10 @@ class _AllRequestsFilterPageState extends State<AllRequestsFilterPage> {
from: DateTime(2000),
date: search!.endDate,
onDatePicker: (date) {
if (search!.startDate != null && date.isBefore(search!.startDate!)) {
"End Date time must be greater then start date".showToast;
return;
}
setState(() {
search!.endDate = date;
});

@ -2,7 +2,7 @@ import 'dart:convert';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/asset_transfer_provider.dart';
import 'package:test_sa/controllers/providers/api/device_transfer_provider.dart';
import 'package:test_sa/dashboard_latest/dashboard_provider.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
@ -41,7 +41,7 @@ class CreateDeviceTransferRequest extends StatefulWidget {
}
class _CreateDeviceTransferRequestState extends State<CreateDeviceTransferRequest> {
late AssetTransferProvider _deviceTransferProvider;
late DeviceTransferProvider _deviceTransferProvider;
final TextEditingController _requestedQuantityController = TextEditingController();
final DeviceTransfer _transferModel = DeviceTransfer(id: 0);
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
@ -111,7 +111,7 @@ class _CreateDeviceTransferRequestState extends State<CreateDeviceTransferReques
@override
Widget build(BuildContext context) {
_deviceTransferProvider = Provider.of<AssetTransferProvider>(context, listen: false);
_deviceTransferProvider = Provider.of<DeviceTransferProvider>(context, listen: false);
return Scaffold(
key: _scaffoldKey,
appBar: DefaultAppBar(

@ -1,8 +1,7 @@
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/asset_transfer_provider.dart';
import 'package:test_sa/controllers/providers/api/device_transfer_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/int_extensions.dart';
@ -13,7 +12,6 @@ import 'package:test_sa/views/pages/device_transfer/update_device_transfer.dart'
import 'package:test_sa/views/widgets/images/multi_image_picker.dart';
import 'package:test_sa/views/widgets/loaders/app_loading.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
import '../../../extensions/text_extensions.dart';
import '../../../models/enums/user_types.dart';
import '../../../new_views/app_style/app_color.dart';
@ -51,7 +49,7 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
key: _scaffoldKey,
body: SafeArea(
child: FutureBuilder(
future: Provider.of<AssetTransferProvider>(context).getRequestById(assetTransferId: widget.model.id?.toInt()),
future: Provider.of<DeviceTransferProvider>(context).getRequestById(assetTransferId: widget.model.id?.toInt()),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return const ALoading();
@ -74,30 +72,44 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
context.translation.transferDetails.heading5(context),
8.height,
Text(
"Transfer Details".addTranslation,
style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
),
_buildTextWidget('${context.translation.requestNo} : ${_model?.transferCode ?? ""}'),
_buildTextWidget('${context.translation.transferType} : ${_model?.transferType?.name ?? ""}'),
const Divider().defaultStyle(context),
Text(
"Asset Info".addTranslation,
style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
),
_buildTextWidget('${context.translation.assetName} : ${_model?.assetName?.cleanupWhitespace.capitalizeFirstOfEach ?? ""}'),
_buildTextWidget('${context.translation.assetNumber} : ${_model?.assetNumber ?? ""}'),
_buildTextWidget('${context.translation.model} : ${_model?.modelName ?? ""}'),
_buildTextWidget('${context.translation.sn} : ${_model?.assetSerialNo ?? ""}'),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
_buildTextWidget('${context.translation.requestNo} : ${_model?.transferCode ?? ""}'),
_buildTextWidget('${context.translation.transferType} : ${_model?.transferType?.name ?? ""}'),
_buildTextWidget('${context.translation.assetName} : ${_model?.assetName?.cleanupWhitespace.capitalizeFirstOfEach ?? ""}'),
_buildTextWidget('${context.translation.assetNumber} : ${_model?.assetNumber ?? ""}'),
_buildTextWidget('${context.translation.model} : ${_model?.modelName ?? ""}'),
_buildTextWidget('${context.translation.sn} : ${_model?.assetSerialNo ?? ""}'),
const Divider().defaultStyle(context),
Text(
"Contact Info".addTranslation,
style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
),
if (_model?.receiverEndUserName != null) _buildTextWidget('${context.translation.receiverName} : ${_model?.receiverEndUserName ?? ""}'),
infoText(label: context.translation.employeeId, value: _model?.employeeId),
infoText(label: context.translation.name, value: _model?.name),
infoText(label: context.translation.createdDate, value: _model?.createdDate?.toInitialVisitCardFormat),
// infoText(label: context.translation.telephone, value: _model?.te),
if ((_model?.comment ?? "").isNotEmpty) ...[
8.height,
const Divider().defaultStyle(context),
Text(
"Comments".addTranslation,
style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
),
8.height,
_buildTextWidget(_model!.comment!),
],
if (_attachments.isNotEmpty) ...[
attachmentWidget(),
]
],
),
8.height,
@ -121,7 +133,9 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
_buildCard(
isSender: true,
site: _model?.senderSiteName?.cleanupWhitespace.capitalizeFirstOfEach ?? "",
unit: _model?.senderDepartmentName?.cleanupWhitespace.capitalizeFirstOfEach ?? "",
dept: _model?.senderDepartmentName?.cleanupWhitespace.capitalizeFirstOfEach ?? "",
building: _model?.senderBuildingName?.cleanupWhitespace.capitalizeFirstOfEach ?? "",
floor: _model?.senderFloorName?.cleanupWhitespace.capitalizeFirstOfEach ?? "",
comment: _model?.senderComment ?? "",
statusLabel: _model?.senderMachineStatusName != null
? StatusLabel(
@ -137,7 +151,9 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
_buildCard(
isSender: false,
site: _model?.destSiteName?.cleanupWhitespace.capitalizeFirstOfEach ?? "",
unit: _model?.destDepartmentName?.cleanupWhitespace.capitalizeFirstOfEach ?? "",
dept: _model?.destDepartmentName?.cleanupWhitespace.capitalizeFirstOfEach ?? "",
building: _model?.destBuildingName?.cleanupWhitespace.capitalizeFirstOfEach ?? "",
floor: _model?.destFloorName?.cleanupWhitespace.capitalizeFirstOfEach ?? "",
comment: _model?.receiverComment ?? "",
statusLabel: _model?.receiverMachineStatusName != null
? StatusLabel(
@ -160,13 +176,14 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
}
Widget attachmentWidget() {
return Column(
return _attachments.isNotEmpty? Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
8.height,
if (_attachments.isNotEmpty) ...[
const Divider().defaultStyle(context),
context.translation.attachments.bodyText(context),
Text(
"Attachments".addTranslation,
style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
),
8.height,
MultiFilesPicker(
label: context.translation.attachments,
@ -175,15 +192,14 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
onlyImages: false,
),
],
],
);
):const SizedBox();
}
_buildTextWidget(String text) {
return text.bodyText(context);
}
_buildCard({required String site, required String unit, required String comment, required bool isSender, StatusLabel? statusLabel}) {
_buildCard({required String site, String? building, String? dept, String? floor, required String comment, required bool isSender, StatusLabel? statusLabel}) {
bool isCurrentEngineerEligibleForEdit = isSender ? _model?.senderAssignedEmployeeId == _userProvider!.user?.userID : _model?.receiverAssignedEmployeeId == _userProvider!.user?.userID;
bool isCurrentRequestClosed =
@ -219,12 +235,17 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
}),
],
),
_buildTextWidget('${context.translation.site} : $site'),
_buildTextWidget('${context.translation.department} : $unit'),
infoText(label: context.translation.site, value: site),
infoText(label: context.translation.building, value: building),
infoText(label: context.translation.floor, value: floor),
infoText(label: context.translation.department, value: dept),
if (comment.isNotEmpty) ...[
8.height,
const Divider().defaultStyle(context),
8.height,
Text(
"Technical Comments".addTranslation,
style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
),
_buildTextWidget(comment),
]
],

@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/asset_transfer_provider.dart';
import 'package:test_sa/controllers/providers/api/device_transfer_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/extensions/context_extension.dart';
@ -19,13 +19,13 @@ class TrackDeviceTransferPage extends StatefulWidget {
}
class _TrackDeviceTransferPageState extends State<TrackDeviceTransferPage> with TickerProviderStateMixin {
late AssetTransferProvider _deviceTransferProvider;
late DeviceTransferProvider _deviceTransferProvider;
late UserProvider _userProvider;
late SettingProvider _settingProvider;
@override
Widget build(BuildContext context) {
_deviceTransferProvider = Provider.of<AssetTransferProvider>(context);
_deviceTransferProvider = Provider.of<DeviceTransferProvider>(context);
_userProvider = Provider.of<UserProvider>(context);
_settingProvider = Provider.of<SettingProvider>(context);

@ -6,7 +6,7 @@
// import 'package:flutter/material.dart';
// import 'package:fluttertoast/fluttertoast.dart';
// import 'package:provider/provider.dart';
// import 'package:test_sa/controllers/providers/api/asset_transfer_provider.dart';
// import 'package:test_sa/controllers/providers/api/device_transfer_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/extensions/context_extension.dart';
@ -337,7 +337,7 @@ import 'dart:io';
import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/asset_transfer_provider.dart';
import 'package:test_sa/controllers/providers/api/device_transfer_provider.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/string_extensions.dart';
@ -376,7 +376,7 @@ class UpdateDeviceTransfer extends StatefulWidget {
class _UpdateDeviceTransferState extends State<UpdateDeviceTransfer> {
final bool _isLoading = false;
late AssetTransferProvider _deviceTransferProvider;
late DeviceTransferProvider _deviceTransferProvider;
final TextEditingController _requestedQuantityController = TextEditingController();
final DeviceTransfer _formModel = DeviceTransfer();
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
@ -470,7 +470,7 @@ class _UpdateDeviceTransferState extends State<UpdateDeviceTransfer> {
@override
Widget build(BuildContext context) {
_deviceTransferProvider = Provider.of<AssetTransferProvider>(context, listen: false);
_deviceTransferProvider = Provider.of<DeviceTransferProvider>(context, listen: false);
double totalWorkingHours = widget.isSender
? (widget.model.senderVisitTimers?.fold(0.0, (sum, item) => (sum ?? 0) + DateTime.parse(item.endDateTime!).difference(DateTime.parse(item.startDateTime!)).inSeconds) ?? 0)
: (widget.model.receiverVisitTimers?.fold(0.0, (sum, item) => (sum ?? 0) + DateTime.parse(item.endDateTime!).difference(DateTime.parse(item.startDateTime!)).inSeconds) ?? 0);

@ -1,5 +1,4 @@
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/gas_refill_comments.dart';
@ -11,18 +10,15 @@ import 'package:test_sa/extensions/string_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/new_views/common_widgets/app_filled_button.dart';
import 'package:test_sa/views/pages/user/gas_refill/gas_refill_form.dart';
import 'package:test_sa/views/pages/user/gas_refill/request_gas_refill.dart';
import 'package:test_sa/views/widgets/images/multi_image_picker.dart';
import 'package:test_sa/views/widgets/loaders/app_loading.dart';
import 'package:test_sa/views/widgets/loaders/no_data_found.dart';
import '../../../../extensions/text_extensions.dart';
import '../../../../models/enums/user_types.dart';
import '../../../../models/new_models/gas_refill_model.dart';
import '../../../../new_views/app_style/app_color.dart';
import '../../../../new_views/common_widgets/default_app_bar.dart';
import '../../../widgets/requests/request_status.dart';
import 'gas_refill_comments.dart';
class GasRefillDetailsPage extends StatefulWidget {
GasRefillModel model;
@ -125,16 +121,16 @@ class _GasRefillDetailsPageState extends State<GasRefillDetailsPage> {
"Request Details".addTranslation,
style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
),
infoText(label: context.translation.requestNo, value:gasRefillModel.gasRefillNo),
infoText(label: context.translation.gasType, value:gasRefillModel.gasRefillDetails?[0].gasType?.name),
infoText(label: context.translation.cylinderType, value:gasRefillModel.gasRefillDetails?[0].cylinderType?.name),
infoText(label: context.translation.cylinderSize, value:gasRefillModel.gasRefillDetails?[0].cylinderSize?.name),
infoText(label: context.translation.site, value:gasRefillModel.site?.name?.cleanupWhitespace.capitalizeFirstOfEach),
infoText(label: context.translation.building, value:gasRefillModel.building?.name),
infoText(label: context.translation.floor, value:gasRefillModel.floor?.name),
infoText(label: context.translation.department, value:gasRefillModel.department?.name),
infoText(label: context.translation.requestedQuantity, value:gasRefillModel.gasRefillDetails?[0].requestedQty.toString()),
infoText(label: context.translation.deliveredQuantity, value:gasRefillModel.gasRefillDetails![0].deliverdQty.toString()),
infoText(label: context.translation.requestNo, value: gasRefillModel.gasRefillNo),
infoText(label: context.translation.gasType, value: gasRefillModel.gasRefillDetails?[0].gasType?.name),
infoText(label: context.translation.cylinderType, value: gasRefillModel.gasRefillDetails?[0].cylinderType?.name),
infoText(label: context.translation.cylinderSize, value: gasRefillModel.gasRefillDetails?[0].cylinderSize?.name),
infoText(label: context.translation.site, value: gasRefillModel.site?.name?.cleanupWhitespace.capitalizeFirstOfEach),
infoText(label: context.translation.building, value: gasRefillModel.building?.name),
infoText(label: context.translation.floor, value: gasRefillModel.floor?.name),
infoText(label: context.translation.department, value: gasRefillModel.department?.name),
infoText(label: context.translation.requestedQuantity, value: gasRefillModel.gasRefillDetails?[0].requestedQty.toString()),
infoText(label: context.translation.deliveredQuantity, value: gasRefillModel.gasRefillDetails![0].deliverdQty.toString()),
const Divider().defaultStyle(context),
Text(
"Created By".addTranslation,
@ -185,10 +181,7 @@ class _GasRefillDetailsPageState extends State<GasRefillDetailsPage> {
style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50),
),
],
).paddingOnly(top: 16, start: 16, end: 16),
],
).toShadowContainer(context, padding: 0);
}
@ -197,7 +190,7 @@ class _GasRefillDetailsPageState extends State<GasRefillDetailsPage> {
String? label,
String? value,
}) {
if (value == null || value.isEmpty||value.toLowerCase()=='null') {
if (value == null || value.isEmpty || value.toLowerCase() == 'null') {
return const SizedBox();
} else {
return '$label: $value'.bodyText(context);

Loading…
Cancel
Save