bug-771,804,773,769,776,794,801,796,797,799,811,814 fixed

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

@ -117,37 +117,37 @@ class ApiManager {
return response;
}
Future<http.Response> postWithOutBody(String url, {Map<String, String>? headers,bool showLoading = true}) async {
headers ??= {};
headers.addAll(_headers);
Uri _url = Uri.parse(url);
if (!kReleaseMode) {
print("URL:$_url");
print("Headers:$headers");
}
var request = http.Request('POST', _url);
request.headers.addAll(headers);
http.StreamedResponse _streamedResponse = await request.send();
http.Response response = await http.Response.fromStream(_streamedResponse);
try {
if (response.statusCode == 401) {
showLoginDialog();
} else {
if (jsonDecode(response.body) is Map<String, dynamic>) {
final message = jsonDecode(response.body)["message"];
if (message != null && message.toString().isNotEmpty&&showLoading) {
Fluttertoast.showToast(msg: message ?? "", toastLength: Toast.LENGTH_LONG);
}
}
}
} catch (ex) {}
return response;
}
// Future<http.Response> postWithOutBody(String url, {Map<String, String>? headers,bool showLoading = true}) async {
// headers ??= {};
//
// headers.addAll(_headers);
//
// Uri _url = Uri.parse(url);
// if (!kReleaseMode) {
// print("URL:$_url");
// print("Headers:$headers");
// }
//
// var request = http.Request('POST', _url);
// request.headers.addAll(headers);
//
// http.StreamedResponse _streamedResponse = await request.send();
// http.Response response = await http.Response.fromStream(_streamedResponse);
// try {
// if (response.statusCode == 401) {
// showLoginDialog();
// } else {
// if (jsonDecode(response.body) is Map<String, dynamic>) {
// final message = jsonDecode(response.body)["message"];
// if (message != null && message.toString().isNotEmpty&&showLoading) {
// Fluttertoast.showToast(msg: message ?? "", toastLength: Toast.LENGTH_LONG);
// }
// }
// }
// } catch (ex) {}
//
// return response;
// }
Future<http.Response> put(String url, {Map<String, String>? headers, required Map<String, dynamic> body}) async {
headers ??= {};

@ -6,7 +6,7 @@ import 'package:flutter/material.dart';
import 'package:google_api_availability/google_api_availability.dart';
import 'package:huawei_push/huawei_push.dart' as h_push;
import 'package:test_sa/controllers/notification/notification_manger.dart';
import 'package:test_sa/models/device/asset_transfer.dart';
import 'package:test_sa/models/device/device_transfer.dart';
import 'package:test_sa/models/new_models/gas_refill_model.dart';
import 'package:test_sa/service_request_latest/views/service_request_detail_main_view.dart';
import 'package:test_sa/views/pages/device_transfer/device_transfer_details.dart';
@ -88,7 +88,7 @@ class FirebaseNotificationManger {
model: GasRefillModel(id: int.parse(messageData["requestNumber"].toString())),
);
} else if (messageData["requestType"] == "Asset Transfer") {
serviceClass = DeviceTransferDetails(model: AssetTransfer(id: int.parse(messageData["requestNumber"].toString())));
serviceClass = DeviceTransferDetails(model: DeviceTransfer(id: int.parse(messageData["requestNumber"].toString())));
} else if (messageData["requestType"] == "PPM") {
serviceClass = PpmDetailsPage(requestId: int.parse(messageData["requestNumber"].toString()));
}

@ -8,7 +8,7 @@ import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/string_extensions.dart';
import 'package:test_sa/models/device/asset.dart';
import 'package:test_sa/models/device/asset_transfer.dart';
import 'package:test_sa/models/device/device_transfer.dart';
import 'package:test_sa/models/service_request/pending_service_request_model.dart';
import 'package:test_sa/models/user.dart';
@ -19,7 +19,7 @@ class AssetTransferProvider extends ChangeNotifier {
// number of items call in each request
final pageItemNumber = 12;
AssetTransfer transferModel = AssetTransfer();
DeviceTransfer transferModel = DeviceTransfer();
//reset provider data
void reset() {
@ -44,7 +44,7 @@ class AssetTransferProvider extends ChangeNotifier {
bool nextPage = true;
// list of user requests
List<AssetTransfer>? items;
List<DeviceTransfer>? items;
// when requests in-process _loading = true
// done _loading = true
@ -84,7 +84,7 @@ class AssetTransferProvider extends ChangeNotifier {
if (stateCode! >= 200 && stateCode! < 300) {
// client's request was successfully received
List listJson = json.decode(response.body)["data"];
List<AssetTransfer> itemsPage = listJson.map((request) => AssetTransfer.fromJson(request)).toList();
List<DeviceTransfer> itemsPage = listJson.map((request) => DeviceTransfer.fromJson(request)).toList();
items ??= [];
items!.addAll(itemsPage.toSet().toList());
notifyListeners();
@ -105,7 +105,7 @@ class AssetTransferProvider extends ChangeNotifier {
}
}
Future<AssetTransfer?> getRequestById({int? assetTransferId}) async {
Future<DeviceTransfer?> getRequestById({int? assetTransferId}) async {
Response response;
try {
response = await ApiManager.instance.get(
@ -113,7 +113,7 @@ class AssetTransferProvider extends ChangeNotifier {
enableToastMessage: false,
);
if (response.statusCode >= 200 && response.statusCode < 300) {
return AssetTransfer.fromJson(json.decode(response.body)["data"]);
return DeviceTransfer.fromJson(json.decode(response.body)["data"]);
}
return null;
} catch (error) {
@ -137,7 +137,7 @@ class AssetTransferProvider extends ChangeNotifier {
Future<void> createRequest({
required BuildContext context,
required AssetTransfer model,
required DeviceTransfer model,
}) async {
Response response;
try {
@ -146,7 +146,7 @@ class AssetTransferProvider extends ChangeNotifier {
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
if (items != null) {
items!.insert(0, AssetTransfer.fromJson(json.decode(utf8.decode(response.bodyBytes))[0]));
items!.insert(0, DeviceTransfer.fromJson(json.decode(utf8.decode(response.bodyBytes))[0]));
reset();
notifyListeners();
}
@ -158,11 +158,13 @@ class AssetTransferProvider extends ChangeNotifier {
Navigator.pop(context);
} catch (error) {
Navigator.pop(context);
stateCode = -1;
notifyListeners();
print(error);
}
}
Future<int> updateRequest(BuildContext context, {required AssetTransfer model}) async {
Future<int> updateRequest(BuildContext context, {required DeviceTransfer model}) async {
Response response;
try {
showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading());

@ -59,7 +59,7 @@ class AssetProvider extends ChangeNotifier {
notifyListeners();
}
Future<int> getAssets({AssetSearch? search, bool isQr = false, bool isSearchBy = false}) async {
Future<int> getAssets({DeviceSearch? search, bool isQr = false, bool isSearchBy = false}) async {
if (_loading == true) return -2;
_loading = true;
notifyListeners();
@ -124,7 +124,7 @@ class AssetProvider extends ChangeNotifier {
// String serialNumber,
// String number,
bool addPagination = true,
AssetSearch? search,
DeviceSearch? search,
}) async {
late Response response;
try {

@ -132,6 +132,8 @@ class GasRefillProvider extends ChangeNotifier {
}
Navigator.pop(context);
} catch (error) {
stateCode = -1;
notifyListeners();
Navigator.pop(context);
print(error);
}

@ -52,7 +52,7 @@ class NotificationsProvider extends ChangeNotifier {
response = await ApiManager.instance.post(URLs.getSystemNotifications, body: body);
stateCode = response.statusCode;
print('notifaction response is $response');
print('notifaction response is ${response.body}');
if (response.statusCode >= 200 && response.statusCode < 300) {
// client's request was successfully received
List requestsListJson = json.decode(response.body)["data"];

@ -31,7 +31,7 @@ class UserProvider extends ChangeNotifier {
File? profileImage;
VerifyOtpModel _verifyOtpModel= VerifyOtpModel();
VerifyOtpModel _verifyOtpModel = VerifyOtpModel();
SwipeTransaction _swipeTransactionModel = SwipeTransaction();
List<SwipeHistory> _swipeHistory = [];
@ -87,7 +87,7 @@ class UserProvider extends ChangeNotifier {
notifyListeners();
Response response;
try {
showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading());
showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading());
response = await ApiManager.instance.post(URLs.login, body: await user.toLoginJson());
_loading = false;
if (response.statusCode >= 200 && response.statusCode < 300) {
@ -155,7 +155,7 @@ class UserProvider extends ChangeNotifier {
Response response;
try {
showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading());
response = await ApiManager.instance.postWithOutBody(URLs.sendForgetPasswordOtp + '?employeeId=$employeeId', showLoading: false);
response = await ApiManager.instance.post(URLs.sendForgetPasswordOtp + '?employeeId=$employeeId', showToast: false, body: {});
generalResponseModel = GeneralResponseModel.fromJson(json.decode(response.body));
_loading = false;
if (response.statusCode >= 200 && response.statusCode < 300) {
@ -183,9 +183,7 @@ class UserProvider extends ChangeNotifier {
Response response;
try {
showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading());
response = await ApiManager.instance.postWithOutBody(
URLs.sendForgetPasswordValidateOtp + '?employeeId=$employeeId&otp=$otp',
);
response = await ApiManager.instance.post(URLs.sendForgetPasswordValidateOtp + '?employeeId=$employeeId&otp=$otp', body: {});
generalResponseModel = GeneralResponseModel.fromJson(json.decode(response.body));
_loading = false;
if (response.statusCode >= 200 && response.statusCode < 300) {
@ -208,7 +206,7 @@ class UserProvider extends ChangeNotifier {
}
}
Future<GeneralResponseModel> updateNewPassword({required BuildContext context, required UpdatePasswordModel updatePasswordModel}) async {
Future<GeneralResponseModel> updateNewPassword({required BuildContext context, required UpdatePasswordModel updatePasswordModel}) async {
GeneralResponseModel generalResponseModel = GeneralResponseModel(responseCode: -1);
if (_loading == true) return generalResponseModel;
_loading = true;
@ -235,6 +233,7 @@ class UserProvider extends ChangeNotifier {
return generalResponseModel;
}
}
Future<int> uploadProfileImage(String userId, File image) async {
if (_loading == true) return -2;
_loading = true;
@ -261,23 +260,24 @@ class UserProvider extends ChangeNotifier {
return -1;
}
}
Future<SwipeModel> makeSwipe({required Swipe model}) async {
isLoading = true;
SwipeModel swipeResponse = SwipeModel(data: false, message: '', responseCode: 0, isSuccess: false);
notifyListeners();
Response response;
// try {
response = await ApiManager.instance.post(URLs.swipeUrl, body: model.toJson(), showToast: false);
swipeResponse = SwipeModel.fromJson(json.decode(response.body));
if (response.statusCode >= 200 && response.statusCode < 300) {
isUserConfirmSwipe = true;
await getSwipeLastTransaction(userId: user!.userID!);
notifyListeners();
}
response = await ApiManager.instance.post(URLs.swipeUrl, body: model.toJson(), showToast: false);
swipeResponse = SwipeModel.fromJson(json.decode(response.body));
if (response.statusCode >= 200 && response.statusCode < 300) {
isUserConfirmSwipe = true;
await getSwipeLastTransaction(userId: user!.userID!);
notifyListeners();
return swipeResponse;
}
notifyListeners();
return swipeResponse;
// } catch (error) {
// notifyListeners();
// return swipeResponse;
@ -305,7 +305,7 @@ class UserProvider extends ChangeNotifier {
}
}
Future<int> getSwipeTransactionHistory({required String userId, required DateTime dateFrom,required DateTime dateTo}) async {
Future<int> getSwipeTransactionHistory({required String userId, required DateTime dateFrom, required DateTime dateTo}) async {
isLoading = true;
notifyListeners();
Response response;
@ -313,7 +313,7 @@ class UserProvider extends ChangeNotifier {
"userId": userId,
"dateFrom": dateFrom.toIso8601String(),
"dateTo": dateTo.toIso8601String(),
"IsSucces":true,
"IsSucces": true,
};
try {
response = await ApiManager.instance.post(URLs.getSwipeTransactionHistoryUrl, body: body);

@ -113,7 +113,7 @@ class DashBoardProvider extends ChangeNotifier {
}
Response response;
try {
response = await ApiManager.instance.postWithOutBody(url);
response = await ApiManager.instance.post(url,body: {});
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
dashboardCount = DashboardCount.fromJson(json.decode(response.body));
@ -244,8 +244,6 @@ class DashBoardProvider extends ChangeNotifier {
if (usersType == UsersTypes.engineer) {
//need to check pagination for not assigned task @waseem.
print('status i got is $status');
print('id i got is $tabId');
//these checks are to call different apis for dashboard for engineer...
if (status == 0) {
url = URLs.engineerDashboardUpcoming;

@ -83,7 +83,7 @@ class RequestCategoryFragment extends StatelessWidget {
label: tabs[index].label,
loading: requestsProvider.isDetailLoading,
isSelected: requestsProvider.currentListIndex == index,
count: requestsProvider.requestDetailList != null ? requestsProvider.requestDetailList!.totalRows ?? 0 : 0,
count: requestsProvider.requestDetailList != null ? requestsProvider.requestDetailList!.count ?? 0 : 0,
onPressed: () async {
requestsProvider.currentListIndex = index;
requestsProvider.resetRequestDataList();

@ -3,7 +3,7 @@ import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/new_models/dashboard_detail.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/new_views/pages/land_page/requests/asset_item_view.dart';
import 'package:test_sa/new_views/pages/land_page/requests/device_item_view.dart';
import 'package:test_sa/new_views/pages/land_page/requests/gas_refill_item_view.dart';
import 'package:test_sa/new_views/pages/land_page/requests/ppm_item_view.dart';
import 'package:test_sa/new_views/pages/land_page/requests/recurrent_wo_item_view.dart';
@ -46,7 +46,7 @@ class RequestCategoryList extends StatelessWidget {
case 2:
return GasRefillItemView(requestData: request);
case 3:
return AssetItemView(requestData: request);
return DeviceItemView(requestData: request);
case 4:
return PpmItemView(requestData: request);
case 5:

@ -68,9 +68,9 @@ import 'package:test_sa/providers/work_order/supplier_engineer_provider.dart';
import 'package:test_sa/providers/work_order/vendor_provider.dart';
import 'package:test_sa/service_request_latest/service_request_detail_provider.dart';
import 'package:test_sa/service_request_latest/views/nurse/create_new_request_view.dart';
import 'package:test_sa/views/pages/device_transfer/asset_filter_screen.dart';
import 'package:test_sa/views/pages/device_transfer/asset_search_screen.dart';
import 'package:test_sa/views/pages/device_transfer/create__asset_transfer_request.dart';
import 'package:test_sa/views/pages/device_transfer/device_filter_screen.dart';
import 'package:test_sa/views/pages/device_transfer/device_search_screen.dart';
import 'package:test_sa/views/pages/device_transfer/create__device_transfer_request.dart';
import 'package:test_sa/views/pages/device_transfer/track_device_transfer.dart';
import 'package:test_sa/views/pages/sub_workorder/create_sub_workorder_page.dart';
import 'package:test_sa/views/pages/user/gas_refill/gas_refill_form.dart';
@ -320,7 +320,7 @@ class MyApp extends StatelessWidget {
// PreventiveMaintenanceVisitsPage.id: (_) => PreventiveMaintenanceVisitsPage(),
PpmPage.id: (_) => const PpmPage(),
TrackGasRefillPage.id: (_) => const TrackGasRefillPage(),
CreateAssetTransferRequest.id: (_) => const CreateAssetTransferRequest(),
CreateDeviceTransferRequest.id: (_) => const CreateDeviceTransferRequest(),
TrackDeviceTransferPage.id: (_) => const TrackDeviceTransferPage(),
// todo remove this class after work
@ -328,8 +328,8 @@ class MyApp extends StatelessWidget {
CreateSubWorkOrderPage.id: (_) => const CreateSubWorkOrderPage(),
WorkOrderListPage.id: (_) => WorkOrderListPage(),
AssetDetailPage.id: (_) => const AssetDetailPage(),
AssetSearchScreen.id: (_) => const AssetSearchScreen(),
AssetFilterScreen.id: (_) => const AssetFilterScreen(),
DeviceSearchScreen.id: (_) => const DeviceSearchScreen(),
DeviceFilterScreen.id: (_) => const DeviceFilterScreen(),
WorkOrderDetailsPage.id: (_) => const WorkOrderDetailsPage(),
UpdateServiceRequestPage.id: (_) => const UpdateServiceRequestPage(),
SettingsPage.id: (_) => const SettingsPage(),

@ -1,7 +1,7 @@
import 'package:test_sa/models/lookup.dart';
class AssetSearch {
AssetSearch(
class DeviceSearch {
DeviceSearch(
{this.code,
this.assetSerialNumber,
this.assetName,
@ -31,7 +31,7 @@ class AssetSearch {
this.oracleCodeTypeId,
this.oracleCodeValue});
AssetSearch.fromJson(dynamic json) {
DeviceSearch.fromJson(dynamic json) {
code = json['code'];
assetSerialNumber = json['assetSerialNumber'];
assetName = json['assetName'];
@ -91,7 +91,7 @@ class AssetSearch {
String? oracleCodeValue; // Now nullable
int? oracleCodeTypeId;
AssetSearch copyWith(
DeviceSearch copyWith(
{String? code,
String? assetSerialNumber,
String? assetName,
@ -120,7 +120,7 @@ class AssetSearch {
Lookup? assetGroup,
String? oracleCodeValue,
int? oracleCodeTypeId}) =>
AssetSearch(
DeviceSearch(
code: code ?? this.code,
assetSerialNumber: assetSerialNumber ?? this.assetSerialNumber,
assetName: assetName ?? this.assetName,

@ -9,8 +9,8 @@ import 'package:test_sa/models/timer_model.dart';
import 'asset_transfer_attachment.dart';
class AssetTransfer {
AssetTransfer({
class DeviceTransfer {
DeviceTransfer({
this.id,
this.transferNo,
this.transferType,
@ -92,7 +92,7 @@ class AssetTransfer {
this.statusValue,
});
AssetTransfer.fromJson(dynamic json) {
DeviceTransfer.fromJson(dynamic json) {
id = json['id'];
transferNo = json['transferNo'];
transferCode = json['transferCode'];
@ -299,7 +299,7 @@ class AssetTransfer {
AssetTransferAssistantEmployees? modelAssistantEmployees;
TimerModel? tbsTimer = TimerModel();
AssetTransfer copyWith(
DeviceTransfer copyWith(
{num? id,
num? transferNo,
String? transferCode,
@ -370,7 +370,7 @@ class AssetTransfer {
List<VisitTimers>? senderVisitTimers,
List<VisitTimers>? receiverVisitTimers,
TimerModel? tbsTimer}) =>
AssetTransfer(
DeviceTransfer(
id: id ?? this.id,
transferNo: transferNo ?? this.transferNo,
transferCode: transferCode ?? this.transferCode,
@ -613,7 +613,7 @@ class AssetTransfer {
return map;
}
fromDetails(AssetTransfer? assetTransfer) {
fromDetails(DeviceTransfer? assetTransfer) {
if (assetTransfer == null) return;
id = assetTransfer.id;
transferNo = assetTransfer.transferNo;

@ -1,6 +1,7 @@
class DashboardDetail {
List<Data>? data;
int? totalRows;
int? count;
String? message;
String? title;
String? innerMessage;
@ -11,6 +12,7 @@ class DashboardDetail {
DashboardDetail.fromJson(Map<String, dynamic> json) {
totalRows = json['totalRows'];
count = json['count'];
if (json['data'] != null) {
data = <Data>[];
json['data'].forEach((v) {

@ -9,7 +9,7 @@
// import 'package:test_sa/models/enums/user_types.dart';
// import 'package:test_sa/models/user.dart';
// import 'package:test_sa/new_views/pages/new_gas_refill_request_page.dart';
// import 'package:test_sa/views/pages/device_transfer/create__asset_transfer_request.dart';
// import 'package:test_sa/views/pages/device_transfer/create__device_transfer_request.dart';
// import 'package:test_sa/views/pages/user/requests/create_service_request_page.dart';
// // todo @delete file
// import '../app_style/app_color.dart';

@ -5,7 +5,7 @@ import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/new_views/pages/new_gas_refill_request_page.dart';
import 'package:test_sa/service_request_latest/views/nurse/create_new_request_view.dart';
import 'package:test_sa/views/pages/device_transfer/create__asset_transfer_request.dart';
import 'package:test_sa/views/pages/device_transfer/create__device_transfer_request.dart';
import 'package:test_sa/views/pages/user/tasks_request/create_task_view.dart';
class CreateRequestTypeBottomSheet extends StatelessWidget {
@ -64,7 +64,7 @@ class CreateRequestTypeBottomSheet extends StatelessWidget {
icon: 'add_icon',
label: context.translation.deviceTransfer,
onTap: () async {
Navigator.pushReplacementNamed(context, CreateAssetTransferRequest.id);
Navigator.pushReplacementNamed(context, CreateDeviceTransferRequest.id);
},
),
listCard(

@ -5,19 +5,19 @@ 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/all_requests_and_count_model.dart';
import 'package:test_sa/models/device/asset_transfer.dart';
import 'package:test_sa/models/device/device_transfer.dart';
import 'package:test_sa/models/new_models/dashboard_detail.dart';
import 'package:test_sa/views/pages/device_transfer/device_transfer_details.dart';
import '../../../../views/widgets/requests/request_status.dart';
import '../../../app_style/app_color.dart';
class AssetItemView extends StatelessWidget {
class DeviceItemView extends StatelessWidget {
final Data? requestData;
final RequestsDetails? requestDetails;
final bool showShadow;
const AssetItemView({Key? key, this.requestData, this.requestDetails, this.showShadow = true}) : super(key: key);
const DeviceItemView({Key? key, this.requestData, this.requestDetails, this.showShadow = true}) : super(key: key);
@override
Widget build(BuildContext context) {
@ -76,7 +76,7 @@ class AssetItemView extends StatelessWidget {
),
],
).toShadowContainer(context, withShadow: showShadow).onPress(() {
Navigator.of(context).push(MaterialPageRoute(builder: (_) => DeviceTransferDetails(model: AssetTransfer(id: requestData!.id!))));
Navigator.of(context).push(MaterialPageRoute(builder: (_) => DeviceTransferDetails(model: DeviceTransfer(id: requestData!.id!))));
});
}
@ -111,11 +111,12 @@ class AssetItemView extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
'${context.translation.requestNo}: ${requestDetails!.requestNo}'.bodyText(context),
(requestDetails?.nameOfType ?? context.translation.deviceTransferRequest).heading5(context),
"${context.translation.from} : ${requestDetails!.siteTransferFrom?.cleanupWhitespace.capitalizeFirstOfEach}".bodyText(context),
"${context.translation.to} : ${requestDetails!.siteTransferTo?.cleanupWhitespace.capitalizeFirstOfEach}".bodyText(context),
requestDetails!.status!.replaceAll("=", ":").bodyText(context),
'${context.translation.requestNo}: ${requestDetails!.requestNo}'.bodyText(context),
],
),
Row(
@ -135,7 +136,7 @@ class AssetItemView extends StatelessWidget {
),
],
).toShadowContainer(context, withShadow: showShadow).onPress(() {
Navigator.of(context).push(MaterialPageRoute(builder: (_) => DeviceTransferDetails(model: AssetTransfer(id: requestDetails!.id!))));
Navigator.of(context).push(MaterialPageRoute(builder: (_) => DeviceTransferDetails(model: DeviceTransfer(id: requestDetails!.id!))));
});
}

@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/models/new_models/dashboard_detail.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/new_views/pages/land_page/requests/asset_item_view.dart';
import 'package:test_sa/new_views/pages/land_page/requests/device_item_view.dart';
import 'package:test_sa/new_views/pages/land_page/requests/gas_refill_item_view.dart';
import 'package:test_sa/new_views/pages/land_page/requests/ppm_item_view.dart';
import 'package:test_sa/new_views/pages/land_page/requests/recurrent_wo_item_view.dart';
@ -61,7 +61,7 @@ class RequestPaginatedListview extends StatelessWidget {
} else if (isPPMs) {
return PpmItemView(requestData: request);
} else if (isAssetTransfer) {
return AssetItemView(requestData: request);
return DeviceItemView(requestData: request);
} else if (isRecurrentTask) {
return RecurrentWoItemView(requestData: request);
} else {

@ -4,7 +4,7 @@ import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/all_requests_and_count_model.dart';
import 'package:test_sa/new_views/pages/land_page/requests/asset_item_view.dart';
import 'package:test_sa/new_views/pages/land_page/requests/device_item_view.dart';
import 'package:test_sa/new_views/pages/land_page/requests/gas_refill_item_view.dart';
import 'package:test_sa/new_views/pages/land_page/requests/ppm_item_view.dart';
import 'package:test_sa/new_views/pages/land_page/requests/recurrent_wo_item_view.dart';
@ -33,7 +33,7 @@ class RequestItemViewList extends StatelessWidget {
case 2:
return GasRefillItemView(requestDetails: list[index]);
case 3:
return AssetItemView(requestDetails: list[index]);
return DeviceItemView(requestDetails: list[index]);
case 4:
return PpmItemView(requestDetails: list[index]);
case 5:

@ -5,10 +5,12 @@ import 'dart:io';
import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:provider/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';
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';
import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/models/new_models/building.dart';
import 'package:test_sa/models/new_models/department.dart';
@ -251,6 +253,10 @@ class _NewGasRefillRequestPageState extends State<NewGasRefillRequestPage> {
context: context,
model: _gasModel,
);
if(_gasRefillProvider?.stateCode==200){
DashBoardProvider dashBoardProvider = Provider.of<DashBoardProvider>(context,listen: false);
dashBoardProvider.refreshDashboard(context: context,userType: UsersTypes.nurse);
}
}
void _add() async {

@ -63,6 +63,8 @@ class TaskRequestProvider extends ChangeNotifier {
Navigator.pop(context);
} catch (error) {
print(error);
stateCode = -1;
notifyListeners();
Navigator.pop(context);
}
}

@ -923,8 +923,9 @@ class ServiceRequestDetailProvider extends ChangeNotifier {
isLoading = true;
notifyListeners();
try {
final response = await ApiManager.instance.postWithOutBody(
final response = await ApiManager.instance.post(
URLs.sendOtpUrl + "$workOrderId",
body: {}
);
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {}
@ -943,7 +944,7 @@ class ServiceRequestDetailProvider extends ChangeNotifier {
isLoading = true;
notifyListeners();
try {
final response = await ApiManager.instance.postWithOutBody(URLs.verifyOtpUrl + '$workOrderId&$otpCode');
final response = await ApiManager.instance.post(URLs.verifyOtpUrl + '$workOrderId&$otpCode',body: {});
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {}

@ -152,7 +152,7 @@ class _CreateNewRequestState extends State<CreateNewRequest> with TickerProvider
label: context.translation.attachImage,
files: _deviceImages,
buttonColor: AppColor.black10,
onlyImages: true,
onlyImages: false,
buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.neutral120),
),
],

@ -3,13 +3,15 @@ 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/dashboard_latest/dashboard_provider.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/device/asset.dart';
import 'package:test_sa/models/device/asset_transfer.dart';
import 'package:test_sa/models/device/device_transfer.dart';
import 'package:test_sa/models/device/asset_transfer_attachment.dart';
import 'package:test_sa/models/enums/user_types.dart';
import 'package:test_sa/models/new_models/department.dart';
import 'package:test_sa/models/new_models/floor.dart';
import 'package:test_sa/models/service_request/pending_service_request_model.dart';
@ -29,19 +31,19 @@ import '../../../new_views/common_widgets/single_item_drop_down_menu.dart';
import '../../../providers/gas_request_providers/site_provider.dart';
import '../../../providers/loading_list_notifier.dart';
class CreateAssetTransferRequest extends StatefulWidget {
class CreateDeviceTransferRequest extends StatefulWidget {
static const String id = "/request-device-transfer";
const CreateAssetTransferRequest({Key? key}) : super(key: key);
const CreateDeviceTransferRequest({Key? key}) : super(key: key);
@override
State<CreateAssetTransferRequest> createState() => _CreateAssetTransferRequestState();
State<CreateDeviceTransferRequest> createState() => _CreateDeviceTransferRequestState();
}
class _CreateAssetTransferRequestState extends State<CreateAssetTransferRequest> {
class _CreateDeviceTransferRequestState extends State<CreateDeviceTransferRequest> {
late AssetTransferProvider _deviceTransferProvider;
final TextEditingController _requestedQuantityController = TextEditingController();
final AssetTransfer _transferModel = AssetTransfer(id: 0);
final DeviceTransfer _transferModel = DeviceTransfer(id: 0);
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
final TextEditingController _receiverNameController = TextEditingController(), _commentsController = TextEditingController();
@ -79,11 +81,14 @@ class _CreateAssetTransferRequestState extends State<CreateAssetTransferRequest>
}
_transferModel.attachments = attachement;
await _deviceTransferProvider.createRequest(
context: context,
model: _transferModel,
);
if(_deviceTransferProvider.stateCode==200){
DashBoardProvider dashBoardProvider = Provider.of<DashBoardProvider>(context,listen: false);
dashBoardProvider.refreshDashboard(context: context,userType: UsersTypes.nurse);
}
}
@override
@ -246,7 +251,7 @@ class _CreateAssetTransferRequestState extends State<CreateAssetTransferRequest>
label: context.translation.attachImage,
files: _deviceImages,
buttonColor: AppColor.black10,
onlyImages: true,
onlyImages: false,
buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.neutral120),
),
// 100.height,

@ -19,18 +19,18 @@ import '../../../new_views/common_widgets/app_lazy_loading.dart';
import '../../../new_views/common_widgets/default_app_bar.dart';
import '../../widgets/equipment/commissioning_status_buttons.dart';
class AssetFilterScreen extends StatefulWidget {
class DeviceFilterScreen extends StatefulWidget {
static const String id = "asset_filter_screen";
final AssetSearch? data;
final DeviceSearch? data;
const AssetFilterScreen({Key? key, this.data}) : super(key: key);
const DeviceFilterScreen({Key? key, this.data}) : super(key: key);
@override
State<AssetFilterScreen> createState() => _AssetFilterScreenState();
State<DeviceFilterScreen> createState() => _DeviceFilterScreenState();
}
class _AssetFilterScreenState extends State<AssetFilterScreen> {
late AssetSearch filter;
class _DeviceFilterScreenState extends State<DeviceFilterScreen> {
late DeviceSearch filter;
Lookup? _commissioningStatus;
Site? _site;
Lookup? _department;
@ -39,7 +39,7 @@ class _AssetFilterScreenState extends State<AssetFilterScreen> {
@override
void initState() {
filter = widget.data ?? AssetSearch();
filter = widget.data ?? DeviceSearch();
WidgetsFlutterBinding.ensureInitialized().addPostFrameCallback((timeStamp) async {
loading = true;
setState(() {});

@ -12,24 +12,24 @@ import '../../../models/device/asset_search.dart';
import '../../../new_views/common_widgets/app_lazy_loading.dart';
import '../../../new_views/common_widgets/default_app_bar.dart';
class AssetSearchScreen extends StatefulWidget {
class DeviceSearchScreen extends StatefulWidget {
static const String id = "asset_search_screen";
final AssetSearch? data;
final DeviceSearch? data;
const AssetSearchScreen({Key? key, this.data}) : super(key: key);
const DeviceSearchScreen({Key? key, this.data}) : super(key: key);
@override
State<AssetSearchScreen> createState() => _AssetSearchScreenState();
State<DeviceSearchScreen> createState() => _DeviceSearchScreenState();
}
class _AssetSearchScreenState extends State<AssetSearchScreen> {
late AssetSearch search;
class _DeviceSearchScreenState extends State<DeviceSearchScreen> {
late DeviceSearch search;
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
late TextEditingController _assetNameController, _assetNumberController, _snController, _modelController, _supplierController, _siteController, _manufactureController, _mdController;
@override
void initState() {
search = widget.data ?? AssetSearch();
search = widget.data ?? DeviceSearch();
_assetNameController = TextEditingController(text: search.assetName);
_assetNumberController = TextEditingController(text: search.assetNo);
_snController = TextEditingController(text: search.assetSerialNumber);

@ -8,7 +8,7 @@ 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/widget_extensions.dart';
import 'package:test_sa/models/device/asset_transfer.dart';
import 'package:test_sa/models/device/device_transfer.dart';
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';
@ -21,7 +21,7 @@ import '../../../new_views/common_widgets/default_app_bar.dart';
import '../../widgets/requests/request_status.dart';
class DeviceTransferDetails extends StatefulWidget {
final AssetTransfer model;
final DeviceTransfer model;
const DeviceTransferDetails({Key? key, required this.model}) : super(key: key);
@ -31,7 +31,7 @@ class DeviceTransferDetails extends StatefulWidget {
class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
UserProvider? _userProvider;
AssetTransfer? _model;
DeviceTransfer? _model;
final bool _isLoading = false;
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
List<File> _attachments = [];
@ -56,7 +56,7 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
if (snapshot.connectionState == ConnectionState.waiting) {
return const ALoading();
} else {
_model = snapshot.data as AssetTransfer?;
_model = snapshot.data as DeviceTransfer?;
_attachments = _model?.assetTransferAttachments?.map((e) => File(e.attachmentName ?? '')).toList() ?? [];
return Form(
key: _formKey,
@ -65,89 +65,91 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
isFailedLoading: false,
stateCode: 200,
onRefresh: () async {},
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
context.translation.transferDetails.heading5(context),
8.height,
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
_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 ?? ""}'),
if (_model?.receiverEndUserName != null) _buildTextWidget('${context.translation.receiverName} : ${_model?.receiverEndUserName ?? ""}'),
_buildTextWidget('${context.translation.requestNo} : ${_model?.transferCode ?? ""}'),
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),
if ((_model?.comment ?? "").isNotEmpty) ...[
8.height,
const Divider().defaultStyle(context),
8.height,
_buildTextWidget(_model!.comment!),
child: SingleChildScrollView(
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
context.translation.transferDetails.heading5(context),
8.height,
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 ?? ""}'),
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),
if ((_model?.comment ?? "").isNotEmpty) ...[
8.height,
const Divider().defaultStyle(context),
8.height,
_buildTextWidget(_model!.comment!),
],
if (_attachments.isNotEmpty) ...[
attachmentWidget(),
]
],
if (_attachments.isNotEmpty) ...[
attachmentWidget(),
]
],
),
8.height,
],
).expanded,
Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
1.width,
Text(
_model?.createdOn != null ? _model!.createdOn!.toServiceRequestCardFormat : "",
textAlign: TextAlign.end,
style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20),
),
],
),
],
).toShadowContainer(context),
8.height,
// sender card
_buildCard(
isSender: true,
site: _model?.senderSiteName?.cleanupWhitespace.capitalizeFirstOfEach ?? "",
unit: _model?.senderDepartmentName?.cleanupWhitespace.capitalizeFirstOfEach ?? "",
comment: _model?.senderComment ?? "",
statusLabel: _model?.senderMachineStatusName != null
? StatusLabel(
label: _model!.senderMachineStatusName!,
id: _model!.senderMachineStatusId!.toInt(),
textColor: AppColor.getRequestStatusTextColorByName(context, _model!.senderMachineStatusName!),
backgroundColor: AppColor.getRequestStatusColorByName(context, _model!.senderMachineStatusName!),
)
: null,
),
8.height,
// receiver card
_buildCard(
isSender: false,
site: _model?.destSiteName?.cleanupWhitespace.capitalizeFirstOfEach ?? "",
unit: _model?.destDepartmentName?.cleanupWhitespace.capitalizeFirstOfEach ?? "",
comment: _model?.receiverComment ?? "",
statusLabel: _model?.receiverMachineStatusName != null
? StatusLabel(
label: _model!.receiverMachineStatusName ?? "",
id: _model!.receiverMachineStatusId!.toInt(),
textColor: AppColor.getRequestStatusTextColorByName(context, _model!.receiverMachineStatusName!),
backgroundColor: AppColor.getRequestStatusColorByName(context, _model!.receiverMachineStatusName!))
: null,
),
],
).paddingAll(16),
),
8.height,
],
).expanded,
Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
1.width,
Text(
_model?.createdOn != null ? _model!.createdOn!.toServiceRequestCardFormat : "",
textAlign: TextAlign.end,
style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20),
),
],
),
],
).toShadowContainer(context),
8.height,
// sender card
_buildCard(
isSender: true,
site: _model?.senderSiteName?.cleanupWhitespace.capitalizeFirstOfEach ?? "",
unit: _model?.senderDepartmentName?.cleanupWhitespace.capitalizeFirstOfEach ?? "",
comment: _model?.senderComment ?? "",
statusLabel: _model?.senderMachineStatusName != null
? StatusLabel(
label: _model!.senderMachineStatusName!,
id: _model!.senderMachineStatusId!.toInt(),
textColor: AppColor.getRequestStatusTextColorByName(context, _model!.senderMachineStatusName!),
backgroundColor: AppColor.getRequestStatusColorByName(context, _model!.senderMachineStatusName!),
)
: null,
),
8.height,
// receiver card
_buildCard(
isSender: false,
site: _model?.destSiteName?.cleanupWhitespace.capitalizeFirstOfEach ?? "",
unit: _model?.destDepartmentName?.cleanupWhitespace.capitalizeFirstOfEach ?? "",
comment: _model?.receiverComment ?? "",
statusLabel: _model?.receiverMachineStatusName != null
? StatusLabel(
label: _model!.receiverMachineStatusName ?? "",
id: _model!.receiverMachineStatusId!.toInt(),
textColor: AppColor.getRequestStatusTextColorByName(context, _model!.receiverMachineStatusName!),
backgroundColor: AppColor.getRequestStatusColorByName(context, _model!.receiverMachineStatusName!))
: null,
),
],
).paddingAll(16),
),
),
);
}

@ -18,20 +18,20 @@ import '../../widgets/horizontal_list_widget.dart';
import '../../widgets/loaders/lazy_loading.dart';
import '../../widgets/loaders/no_data_found.dart';
class SearchAssetPage extends StatefulWidget {
class SearchDevicePage extends StatefulWidget {
/// add on route
static const String id = "asset_search_page";
final bool multiSelection;
const SearchAssetPage({Key? key, this.multiSelection = false}) : super(key: key);
const SearchDevicePage({Key? key, this.multiSelection = false}) : super(key: key);
@override
State<SearchAssetPage> createState() => _SearchAssetPageState();
State<SearchDevicePage> createState() => _SearchDevicePageState();
}
class _SearchAssetPageState extends State<SearchAssetPage> {
class _SearchDevicePageState extends State<SearchDevicePage> {
int _selectedIndex = 0;
AssetSearch? search;
DeviceSearch? search;
late TextEditingController _searchController;
late AssetProvider _deviceProvider;
final List<Asset> _searchableList = [];
@ -111,7 +111,7 @@ class _SearchAssetPageState extends State<SearchAssetPage> {
},
onSaved: (value) {
setState(() {
search = AssetSearch();
search = DeviceSearch();
});
_setValue(value);
},

@ -13,7 +13,7 @@
// import 'package:test_sa/extensions/int_extensions.dart';
// import 'package:test_sa/extensions/string_extensions.dart';
// import 'package:test_sa/extensions/widget_extensions.dart';
// import 'package:test_sa/models/device/asset_transfer.dart';
// import 'package:test_sa/models/device/device_transfer.dart';
// import 'package:test_sa/models/device/asset_transfer_attachment.dart';
// import 'package:test_sa/new_views/common_widgets/app_filled_button.dart';
// import 'package:test_sa/providers/asset_transfer/asset_transfer_status_provider.dart';
@ -342,7 +342,7 @@ 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/widget_extensions.dart';
import 'package:test_sa/models/device/asset_transfer.dart';
import 'package:test_sa/models/device/device_transfer.dart';
import 'package:test_sa/models/device/asset_transfer_attachment.dart';
import 'package:test_sa/models/new_models/assigned_employee.dart';
import 'package:test_sa/models/new_models/assistant_employee.dart';
@ -364,7 +364,7 @@ import '../../../new_views/common_widgets/default_app_bar.dart';
import '../../widgets/timer/app_timer.dart';
class UpdateDeviceTransfer extends StatefulWidget {
final AssetTransfer model;
final DeviceTransfer model;
final bool isSender;
const UpdateDeviceTransfer({Key? key, required this.model, required this.isSender}) : super(key: key);
@ -378,7 +378,7 @@ class _UpdateDeviceTransferState extends State<UpdateDeviceTransfer> {
late AssetTransferProvider _deviceTransferProvider;
final TextEditingController _requestedQuantityController = TextEditingController();
final AssetTransfer _formModel = AssetTransfer();
final DeviceTransfer _formModel = DeviceTransfer();
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
@ -608,7 +608,7 @@ class _UpdateDeviceTransferState extends State<UpdateDeviceTransfer> {
class AssistantEmployeeCard extends StatefulWidget {
bool? isSender = false;
AssetTransfer? formModel;
DeviceTransfer? formModel;
AssistantEmployeeCard({super.key, this.isSender, this.formModel});

@ -38,9 +38,7 @@ class _GasRefillDetailsPageState extends State<GasRefillDetailsPage> {
GasRefillModel _model = GasRefillModel(gasRefillDetails: []);
late UserProvider _userProvider;
late GasRefillProvider gasRefillProvider;
final bool _isLoading = false;
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
List<File> _attachments = [];
@ -76,7 +74,7 @@ class _GasRefillDetailsPageState extends State<GasRefillDetailsPage> {
padding: const EdgeInsets.all(16),
child: informationCard(_model),
).expanded,
if (_userProvider.user!.type == UsersTypes.engineer && (_model.status!.value! != 2))//TODO need to ask backend for status of complete and cancelled request.
if (_userProvider.user!.type == UsersTypes.engineer && (_model.status!.value! != 2))
AppFilledButton(
onPressed: () async {
await Navigator.of(context).push(MaterialPageRoute(builder: (_) => GasRefillForm(gasRefillModel: _model)));
@ -122,31 +120,53 @@ class _GasRefillDetailsPageState extends State<GasRefillDetailsPage> {
],
),
8.height,
context.translation.gasRefillRequest.heading5(context),
8.height,
'${context.translation.gasType}: ${gasRefillModel.gasRefillDetails![0].gasType?.name}'.bodyText(context),
'${context.translation.cylinderType}: ${gasRefillModel.gasRefillDetails![0].cylinderType?.name}'.bodyText(context),
'${context.translation.cylinderSize}: ${gasRefillModel.gasRefillDetails![0].cylinderSize?.name}'.bodyText(context),
'${context.translation.site}: ${gasRefillModel.site?.name?.cleanupWhitespace.capitalizeFirstOfEach}'.bodyText(context),
'${context.translation.department}: ${gasRefillModel.department?.name?.cleanupWhitespace.capitalizeFirstOfEach}'.bodyText(context),
'${context.translation.requestNo}: ${gasRefillModel.gasRefillNo}'.bodyText(context),
// context.translation.gasRefillRequest.heading5(context),
Text(
"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()),
const Divider().defaultStyle(context),
Text(
"Created By".addTranslation,
style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
),
infoText(label: context.translation.employeeId, value: gasRefillModel.employeeId),
infoText(label: context.translation.name, value: gasRefillModel.name),
infoText(label: context.translation.createdDate, value: gasRefillModel.createdDate?.toInitialVisitCardFormat),
const Divider().defaultStyle(context),
'${context.translation.requestedQuantity}: ${gasRefillModel.gasRefillDetails![0].requestedQty ?? 0}'.bodyText(context),
'${context.translation.deliveredQuantity}: ${gasRefillModel.gasRefillDetails![0].deliverdQty ?? 0}'.bodyText(context),
8.height,
if (gasRefillModel.comment?.isNotEmpty ?? false) ...[
const Divider().defaultStyle(context),
Text(
"Comments".addTranslation,
style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
),
gasRefillModel.comment!.bodyText(context),
8.height,
],
if (gasRefillModel.techComment?.isNotEmpty ?? false) ...[
const Divider().defaultStyle(context),
Text(
"Technical Comments".addTranslation,
style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
),
gasRefillModel.techComment!.bodyText(context),
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,
@ -168,67 +188,7 @@ class _GasRefillDetailsPageState extends State<GasRefillDetailsPage> {
).paddingOnly(top: 16, start: 16, end: 16),
/// TBD
// (_userProvider.user!.type == UsersTypes.normal_user
// ? Container(
// height: 50,
// padding: const EdgeInsets.only(left: 16, right: 16),
// alignment: Alignment.center,
// width: double.infinity,
// decoration: ShapeDecoration(
// color: context.isDark ? AppColor.neutral50 : AppColor.neutral30,
// shape: const RoundedRectangleBorder(
// borderRadius: BorderRadius.only(
// bottomLeft: Radius.circular(14),
// bottomRight: Radius.circular(14),
// ),
// ),
// ),
// child: Row(
// children: [
// Text(
// '${context.translation.commentHere}...',
// style: AppTextStyles.heading6.copyWith(
// color: (context.isDark ? AppColor.neutral30 : AppColor.neutral50).withOpacity(.6),
// ),
// ).expanded,
// "comment_send".toSvgAsset(width: 24, color: context.isDark ? AppColor.primary50 : AppColor.primary70),
// ],
// ),
// )
// : Column(
// mainAxisSize: MainAxisSize.min,
// crossAxisAlignment: CrossAxisAlignment.start,
// children: [
// const Divider().defaultStyle(context),
// 8.height,
// Row(
// mainAxisSize: MainAxisSize.min,
// children: [
// Text(
// context.translation.viewComments,
// style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)),
// ),
// 4.width,
// Icon(
// Icons.arrow_forward,
// color: AppColor.blueStatus(context),
// size: 14,
// )
// ],
// ),
// ],
// ).paddingOnly(bottom: 16, start: 16, end: 16))
// .onPress(() {
// showModalBottomSheet(
// context: context,
// useSafeArea: true,
// isScrollControlled: true,
// useRootNavigator: true,
// backgroundColor: Colors.transparent,
// builder: (context) => GasRefillCommentsBottomSheet(requestId: gasRefillModel.id.toString()),
// );
// }),
],
).toShadowContainer(context, padding: 0);
}
@ -237,7 +197,7 @@ class _GasRefillDetailsPageState extends State<GasRefillDetailsPage> {
String? label,
String? value,
}) {
if (value == null || value.isEmpty) {
if (value == null || value.isEmpty||value.toLowerCase()=='null') {
return const SizedBox();
} else {
return '$label: $value'.bodyText(context);

@ -19,7 +19,7 @@
//
// import '../../../models/enums/user_types.dart';
// import '../../widgets/land_page/land_page_item.dart';
// import '../device_transfer/create__asset_transfer_request.dart';
// import '../device_transfer/create__device_transfer_request.dart';
// import 'requests/requests_page.dart';
//
// @Deprecated("Use the page which is inside the [new_views/pages/land_page] folder")

@ -3,11 +3,13 @@ import 'dart:io';
import 'package:flutter/material.dart';
import 'package:provider/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';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/device/asset.dart';
import 'package:test_sa/models/enums/user_types.dart';
import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/models/new_models/building.dart';
import 'package:test_sa/models/new_models/floor.dart';
@ -109,7 +111,7 @@ class _CreateTaskViewState extends State<CreateTaskView> with TickerProviderStat
label: context.translation.attachImage,
files: _deviceImages,
buttonColor: AppColor.black10,
onlyImages: true,
onlyImages: false,
buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.neutral120),
),
],
@ -443,7 +445,11 @@ class _CreateTaskViewState extends State<CreateTaskView> with TickerProviderStat
_addTaskModel?.attachments?.add(TaskJobAttachment(id: 0, name: "${item.path.split("/").last}|${base64Encode(item.readAsBytesSync())}"));
}
TaskRequestProvider taskRequestProvider = Provider.of<TaskRequestProvider>(context, listen: false);
taskRequestProvider.addTask(context: context, task: _addTaskModel!);
await taskRequestProvider.addTask(context: context, task: _addTaskModel!);
if (taskRequestProvider.stateCode == 200) {
DashBoardProvider dashBoardProvider = Provider.of<DashBoardProvider>(context, listen: false);
dashBoardProvider.refreshDashboard(context: context, userType: UsersTypes.nurse);
}
}
}
}

@ -5,7 +5,7 @@ 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/all_requests_and_count_model.dart';
import 'package:test_sa/models/device/asset_transfer.dart';
import 'package:test_sa/models/device/device_transfer.dart';
import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/models/new_models/dashboard_detail.dart';
import 'package:test_sa/models/plan_preventive_visit/plan_preventive_visit_model.dart';

@ -3,15 +3,15 @@ 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/widget_extensions.dart';
import 'package:test_sa/models/device/asset_transfer.dart';
import 'package:test_sa/models/device/device_transfer.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import '../../../extensions/text_extensions.dart';
class DeviceTransferItem extends StatelessWidget {
final int index;
final AssetTransfer item;
final Function(AssetTransfer) onPressed;
final DeviceTransfer item;
final Function(DeviceTransfer) onPressed;
const DeviceTransferItem({Key? key,required this.item,required this.onPressed,required this.index}) : super(key: key);

@ -1,13 +1,13 @@
import 'package:flutter/material.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/models/device/asset_transfer.dart';
import 'package:test_sa/models/device/device_transfer.dart';
import 'package:test_sa/views/pages/device_transfer/device_transfer_details.dart';
import 'package:test_sa/views/widgets/device_trancfer/device_transfer_item.dart';
import 'package:test_sa/views/widgets/loaders/lazy_loading.dart';
import 'package:test_sa/views/widgets/loaders/no_data_found.dart';
class DeviceTransferList extends StatelessWidget {
final List<AssetTransfer> items;
final List<DeviceTransfer> items;
final bool nextPage;
final Future<void> Function() onLazyLoad;

@ -7,7 +7,7 @@ import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/views/pages/device_transfer/asset_search_screen.dart';
import 'package:test_sa/views/pages/device_transfer/device_search_screen.dart';
import 'package:test_sa/views/widgets/equipment/asset_detail_page.dart';
import 'package:test_sa/views/widgets/equipment/asset_item_gridview.dart';
import 'package:test_sa/views/widgets/equipment/asset_item_listview.dart';
@ -19,7 +19,7 @@ import 'package:test_sa/views/widgets/qr/scan_qr.dart';
import '../../../models/device/asset.dart';
import '../../../models/device/asset_search.dart';
import '../../../new_views/app_style/app_color.dart';
import '../../pages/device_transfer/asset_filter_screen.dart';
import '../../pages/device_transfer/device_filter_screen.dart';
class MyAssetsPage extends StatefulWidget {
static const String id = "/single-device-Picker";
@ -38,7 +38,7 @@ class _MyAssetsPageState extends State<MyAssetsPage> {
final List<Asset> _searchableList = [];
final List<Asset> _initList = [];
final bool _firstTime = true;
AssetSearch? _searchAsset;
DeviceSearch? _searchAsset;
bool showListView = true;
@ -48,7 +48,7 @@ class _MyAssetsPageState extends State<MyAssetsPage> {
_getDevice(String result, {bool isQr = false}) async {
_devicesProvider.reset();
await _devicesProvider.getAssets(
search: AssetSearch(assetNo: result, assetSerialNumber: ""),
search: DeviceSearch(assetNo: result, assetSerialNumber: ""),
isQr: isQr,
);
_searchableList.clear();
@ -113,7 +113,7 @@ class _MyAssetsPageState extends State<MyAssetsPage> {
],
),
).onPress(() async {
final result = await Navigator.push(context, MaterialPageRoute(builder: (context) => const AssetSearchScreen()));
final result = await Navigator.push(context, MaterialPageRoute(builder: (context) => const DeviceSearchScreen()));
if (result != null) {
_searchAsset = result;
}
@ -132,7 +132,7 @@ class _MyAssetsPageState extends State<MyAssetsPage> {
context.translation.filter,
style: AppTextStyles.bodyText2.copyWith(color: AppColor.blueStatus(context)),
).onPress(() async {
final result = await Navigator.push(context, MaterialPageRoute(builder: (context) => AssetFilterScreen(data: _searchAsset)));
final result = await Navigator.push(context, MaterialPageRoute(builder: (context) => DeviceFilterScreen(data: _searchAsset)));
if (result != null) {
_searchAsset = result;
}

@ -12,7 +12,7 @@ import '../../../controllers/providers/api/devices_provider.dart';
import '../../../models/device/asset_search.dart';
import '../../../new_views/common_widgets/app_filled_button.dart';
import '../../../new_views/common_widgets/custom_app_bar.dart';
import '../../pages/device_transfer/search_asset_page.dart';
import '../../pages/device_transfer/search_device_page.dart';
class AssetScanQr extends StatefulWidget {
static const String id = "/asset-scan-qr";
@ -53,13 +53,13 @@ class _AssetScanQrState extends State<AssetScanQr> {
_pickManually() async {
_controller?.pauseCamera();
await Navigator.push(context, MaterialPageRoute(builder: (context) => SearchAssetPage(multiSelection: widget.multiSelection))).then((value) => _controller?.resumeCamera());
await Navigator.push(context, MaterialPageRoute(builder: (context) => SearchDevicePage(multiSelection: widget.multiSelection))).then((value) => _controller?.resumeCamera());
}
_getDevice(String result, {bool isQr = false}) async {
_devicesProvider.reset();
await _devicesProvider.getAssets(
search: AssetSearch(assetNo: result, assetSerialNumber: ""),
search: DeviceSearch(assetNo: result, assetSerialNumber: ""),
isQr: isQr,
);
return _devicesProvider.devices;

Loading…
Cancel
Save