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

@ -6,7 +6,7 @@ import 'package:flutter/material.dart';
import 'package:google_api_availability/google_api_availability.dart'; import 'package:google_api_availability/google_api_availability.dart';
import 'package:huawei_push/huawei_push.dart' as h_push; import 'package:huawei_push/huawei_push.dart' as h_push;
import 'package:test_sa/controllers/notification/notification_manger.dart'; 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/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/service_request_latest/views/service_request_detail_main_view.dart';
import 'package:test_sa/views/pages/device_transfer/device_transfer_details.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())), model: GasRefillModel(id: int.parse(messageData["requestNumber"].toString())),
); );
} else if (messageData["requestType"] == "Asset Transfer") { } 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") { } else if (messageData["requestType"] == "PPM") {
serviceClass = PpmDetailsPage(requestId: int.parse(messageData["requestNumber"].toString())); 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/context_extension.dart';
import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart';
import 'package:test_sa/models/device/asset.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/service_request/pending_service_request_model.dart';
import 'package:test_sa/models/user.dart'; import 'package:test_sa/models/user.dart';
@ -19,7 +19,7 @@ class AssetTransferProvider extends ChangeNotifier {
// number of items call in each request // number of items call in each request
final pageItemNumber = 12; final pageItemNumber = 12;
AssetTransfer transferModel = AssetTransfer(); DeviceTransfer transferModel = DeviceTransfer();
//reset provider data //reset provider data
void reset() { void reset() {
@ -44,7 +44,7 @@ class AssetTransferProvider extends ChangeNotifier {
bool nextPage = true; bool nextPage = true;
// list of user requests // list of user requests
List<AssetTransfer>? items; List<DeviceTransfer>? items;
// when requests in-process _loading = true // when requests in-process _loading = true
// done _loading = true // done _loading = true
@ -84,7 +84,7 @@ class AssetTransferProvider extends ChangeNotifier {
if (stateCode! >= 200 && stateCode! < 300) { if (stateCode! >= 200 && stateCode! < 300) {
// client's request was successfully received // client's request was successfully received
List listJson = json.decode(response.body)["data"]; 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 ??= [];
items!.addAll(itemsPage.toSet().toList()); items!.addAll(itemsPage.toSet().toList());
notifyListeners(); notifyListeners();
@ -105,7 +105,7 @@ class AssetTransferProvider extends ChangeNotifier {
} }
} }
Future<AssetTransfer?> getRequestById({int? assetTransferId}) async { Future<DeviceTransfer?> getRequestById({int? assetTransferId}) async {
Response response; Response response;
try { try {
response = await ApiManager.instance.get( response = await ApiManager.instance.get(
@ -113,7 +113,7 @@ class AssetTransferProvider extends ChangeNotifier {
enableToastMessage: false, enableToastMessage: false,
); );
if (response.statusCode >= 200 && response.statusCode < 300) { 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; return null;
} catch (error) { } catch (error) {
@ -137,7 +137,7 @@ class AssetTransferProvider extends ChangeNotifier {
Future<void> createRequest({ Future<void> createRequest({
required BuildContext context, required BuildContext context,
required AssetTransfer model, required DeviceTransfer model,
}) async { }) async {
Response response; Response response;
try { try {
@ -146,7 +146,7 @@ class AssetTransferProvider extends ChangeNotifier {
stateCode = response.statusCode; stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) { if (response.statusCode >= 200 && response.statusCode < 300) {
if (items != null) { 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(); reset();
notifyListeners(); notifyListeners();
} }
@ -158,11 +158,13 @@ class AssetTransferProvider extends ChangeNotifier {
Navigator.pop(context); Navigator.pop(context);
} catch (error) { } catch (error) {
Navigator.pop(context); Navigator.pop(context);
stateCode = -1;
notifyListeners();
print(error); print(error);
} }
} }
Future<int> updateRequest(BuildContext context, {required AssetTransfer model}) async { Future<int> updateRequest(BuildContext context, {required DeviceTransfer model}) async {
Response response; Response response;
try { try {
showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading()); showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading());

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

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

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

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

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

@ -83,7 +83,7 @@ class RequestCategoryFragment extends StatelessWidget {
label: tabs[index].label, label: tabs[index].label,
loading: requestsProvider.isDetailLoading, loading: requestsProvider.isDetailLoading,
isSelected: requestsProvider.currentListIndex == index, isSelected: requestsProvider.currentListIndex == index,
count: requestsProvider.requestDetailList != null ? requestsProvider.requestDetailList!.totalRows ?? 0 : 0, count: requestsProvider.requestDetailList != null ? requestsProvider.requestDetailList!.count ?? 0 : 0,
onPressed: () async { onPressed: () async {
requestsProvider.currentListIndex = index; requestsProvider.currentListIndex = index;
requestsProvider.resetRequestDataList(); 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/extensions/widget_extensions.dart';
import 'package:test_sa/models/new_models/dashboard_detail.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/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/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/ppm_item_view.dart';
import 'package:test_sa/new_views/pages/land_page/requests/recurrent_wo_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: case 2:
return GasRefillItemView(requestData: request); return GasRefillItemView(requestData: request);
case 3: case 3:
return AssetItemView(requestData: request); return DeviceItemView(requestData: request);
case 4: case 4:
return PpmItemView(requestData: request); return PpmItemView(requestData: request);
case 5: 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/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/service_request_detail_provider.dart';
import 'package:test_sa/service_request_latest/views/nurse/create_new_request_view.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/device_filter_screen.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/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/device_transfer/track_device_transfer.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/sub_workorder/create_sub_workorder_page.dart';
import 'package:test_sa/views/pages/user/gas_refill/gas_refill_form.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(), // PreventiveMaintenanceVisitsPage.id: (_) => PreventiveMaintenanceVisitsPage(),
PpmPage.id: (_) => const PpmPage(), PpmPage.id: (_) => const PpmPage(),
TrackGasRefillPage.id: (_) => const TrackGasRefillPage(), TrackGasRefillPage.id: (_) => const TrackGasRefillPage(),
CreateAssetTransferRequest.id: (_) => const CreateAssetTransferRequest(), CreateDeviceTransferRequest.id: (_) => const CreateDeviceTransferRequest(),
TrackDeviceTransferPage.id: (_) => const TrackDeviceTransferPage(), TrackDeviceTransferPage.id: (_) => const TrackDeviceTransferPage(),
// todo remove this class after work // todo remove this class after work
@ -328,8 +328,8 @@ class MyApp extends StatelessWidget {
CreateSubWorkOrderPage.id: (_) => const CreateSubWorkOrderPage(), CreateSubWorkOrderPage.id: (_) => const CreateSubWorkOrderPage(),
WorkOrderListPage.id: (_) => WorkOrderListPage(), WorkOrderListPage.id: (_) => WorkOrderListPage(),
AssetDetailPage.id: (_) => const AssetDetailPage(), AssetDetailPage.id: (_) => const AssetDetailPage(),
AssetSearchScreen.id: (_) => const AssetSearchScreen(), DeviceSearchScreen.id: (_) => const DeviceSearchScreen(),
AssetFilterScreen.id: (_) => const AssetFilterScreen(), DeviceFilterScreen.id: (_) => const DeviceFilterScreen(),
WorkOrderDetailsPage.id: (_) => const WorkOrderDetailsPage(), WorkOrderDetailsPage.id: (_) => const WorkOrderDetailsPage(),
UpdateServiceRequestPage.id: (_) => const UpdateServiceRequestPage(), UpdateServiceRequestPage.id: (_) => const UpdateServiceRequestPage(),
SettingsPage.id: (_) => const SettingsPage(), SettingsPage.id: (_) => const SettingsPage(),

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

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

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

@ -9,7 +9,7 @@
// import 'package:test_sa/models/enums/user_types.dart'; // import 'package:test_sa/models/enums/user_types.dart';
// import 'package:test_sa/models/user.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/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'; // import 'package:test_sa/views/pages/user/requests/create_service_request_page.dart';
// // todo @delete file // // todo @delete file
// import '../app_style/app_color.dart'; // 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/app_style/app_color.dart';
import 'package:test_sa/new_views/pages/new_gas_refill_request_page.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/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'; import 'package:test_sa/views/pages/user/tasks_request/create_task_view.dart';
class CreateRequestTypeBottomSheet extends StatelessWidget { class CreateRequestTypeBottomSheet extends StatelessWidget {
@ -64,7 +64,7 @@ class CreateRequestTypeBottomSheet extends StatelessWidget {
icon: 'add_icon', icon: 'add_icon',
label: context.translation.deviceTransfer, label: context.translation.deviceTransfer,
onTap: () async { onTap: () async {
Navigator.pushReplacementNamed(context, CreateAssetTransferRequest.id); Navigator.pushReplacementNamed(context, CreateDeviceTransferRequest.id);
}, },
), ),
listCard( 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/text_extensions.dart';
import 'package:test_sa/extensions/widget_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/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/models/new_models/dashboard_detail.dart';
import 'package:test_sa/views/pages/device_transfer/device_transfer_details.dart'; import 'package:test_sa/views/pages/device_transfer/device_transfer_details.dart';
import '../../../../views/widgets/requests/request_status.dart'; import '../../../../views/widgets/requests/request_status.dart';
import '../../../app_style/app_color.dart'; import '../../../app_style/app_color.dart';
class AssetItemView extends StatelessWidget { class DeviceItemView extends StatelessWidget {
final Data? requestData; final Data? requestData;
final RequestsDetails? requestDetails; final RequestsDetails? requestDetails;
final bool showShadow; 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 @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -76,7 +76,7 @@ class AssetItemView extends StatelessWidget {
), ),
], ],
).toShadowContainer(context, withShadow: showShadow).onPress(() { ).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, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
'${context.translation.requestNo}: ${requestDetails!.requestNo}'.bodyText(context),
(requestDetails?.nameOfType ?? context.translation.deviceTransferRequest).heading5(context), (requestDetails?.nameOfType ?? context.translation.deviceTransferRequest).heading5(context),
"${context.translation.from} : ${requestDetails!.siteTransferFrom?.cleanupWhitespace.capitalizeFirstOfEach}".bodyText(context), "${context.translation.from} : ${requestDetails!.siteTransferFrom?.cleanupWhitespace.capitalizeFirstOfEach}".bodyText(context),
"${context.translation.to} : ${requestDetails!.siteTransferTo?.cleanupWhitespace.capitalizeFirstOfEach}".bodyText(context), "${context.translation.to} : ${requestDetails!.siteTransferTo?.cleanupWhitespace.capitalizeFirstOfEach}".bodyText(context),
requestDetails!.status!.replaceAll("=", ":").bodyText(context), requestDetails!.status!.replaceAll("=", ":").bodyText(context),
'${context.translation.requestNo}: ${requestDetails!.requestNo}'.bodyText(context),
], ],
), ),
Row( Row(
@ -135,7 +136,7 @@ class AssetItemView extends StatelessWidget {
), ),
], ],
).toShadowContainer(context, withShadow: showShadow).onPress(() { ).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/extensions/int_extensions.dart';
import 'package:test_sa/models/new_models/dashboard_detail.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/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/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/ppm_item_view.dart';
import 'package:test_sa/new_views/pages/land_page/requests/recurrent_wo_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) { } else if (isPPMs) {
return PpmItemView(requestData: request); return PpmItemView(requestData: request);
} else if (isAssetTransfer) { } else if (isAssetTransfer) {
return AssetItemView(requestData: request); return DeviceItemView(requestData: request);
} else if (isRecurrentTask) { } else if (isRecurrentTask) {
return RecurrentWoItemView(requestData: request); return RecurrentWoItemView(requestData: request);
} else { } 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/int_extensions.dart';
import 'package:test_sa/extensions/widget_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/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/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/ppm_item_view.dart';
import 'package:test_sa/new_views/pages/land_page/requests/recurrent_wo_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: case 2:
return GasRefillItemView(requestDetails: list[index]); return GasRefillItemView(requestDetails: list[index]);
case 3: case 3:
return AssetItemView(requestDetails: list[index]); return DeviceItemView(requestDetails: list[index]);
case 4: case 4:
return PpmItemView(requestDetails: list[index]); return PpmItemView(requestDetails: list[index]);
case 5: case 5:

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

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

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

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

@ -3,13 +3,15 @@ import 'dart:io';
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/asset_transfer_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/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';
import 'package:test_sa/extensions/widget_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.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/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/department.dart';
import 'package:test_sa/models/new_models/floor.dart'; import 'package:test_sa/models/new_models/floor.dart';
import 'package:test_sa/models/service_request/pending_service_request_model.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/gas_request_providers/site_provider.dart';
import '../../../providers/loading_list_notifier.dart'; import '../../../providers/loading_list_notifier.dart';
class CreateAssetTransferRequest extends StatefulWidget { class CreateDeviceTransferRequest extends StatefulWidget {
static const String id = "/request-device-transfer"; static const String id = "/request-device-transfer";
const CreateAssetTransferRequest({Key? key}) : super(key: key); const CreateDeviceTransferRequest({Key? key}) : super(key: key);
@override @override
State<CreateAssetTransferRequest> createState() => _CreateAssetTransferRequestState(); State<CreateDeviceTransferRequest> createState() => _CreateDeviceTransferRequestState();
} }
class _CreateAssetTransferRequestState extends State<CreateAssetTransferRequest> { class _CreateDeviceTransferRequestState extends State<CreateDeviceTransferRequest> {
late AssetTransferProvider _deviceTransferProvider; late AssetTransferProvider _deviceTransferProvider;
final TextEditingController _requestedQuantityController = TextEditingController(); final TextEditingController _requestedQuantityController = TextEditingController();
final AssetTransfer _transferModel = AssetTransfer(id: 0); final DeviceTransfer _transferModel = DeviceTransfer(id: 0);
final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>(); final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
final TextEditingController _receiverNameController = TextEditingController(), _commentsController = TextEditingController(); final TextEditingController _receiverNameController = TextEditingController(), _commentsController = TextEditingController();
@ -79,11 +81,14 @@ class _CreateAssetTransferRequestState extends State<CreateAssetTransferRequest>
} }
_transferModel.attachments = attachement; _transferModel.attachments = attachement;
await _deviceTransferProvider.createRequest( await _deviceTransferProvider.createRequest(
context: context, context: context,
model: _transferModel, model: _transferModel,
); );
if(_deviceTransferProvider.stateCode==200){
DashBoardProvider dashBoardProvider = Provider.of<DashBoardProvider>(context,listen: false);
dashBoardProvider.refreshDashboard(context: context,userType: UsersTypes.nurse);
}
} }
@override @override
@ -246,7 +251,7 @@ class _CreateAssetTransferRequestState extends State<CreateAssetTransferRequest>
label: context.translation.attachImage, label: context.translation.attachImage,
files: _deviceImages, files: _deviceImages,
buttonColor: AppColor.black10, buttonColor: AppColor.black10,
onlyImages: true, onlyImages: false,
buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.neutral120), buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.neutral120),
), ),
// 100.height, // 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 '../../../new_views/common_widgets/default_app_bar.dart';
import '../../widgets/equipment/commissioning_status_buttons.dart'; import '../../widgets/equipment/commissioning_status_buttons.dart';
class AssetFilterScreen extends StatefulWidget { class DeviceFilterScreen extends StatefulWidget {
static const String id = "asset_filter_screen"; 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 @override
State<AssetFilterScreen> createState() => _AssetFilterScreenState(); State<DeviceFilterScreen> createState() => _DeviceFilterScreenState();
} }
class _AssetFilterScreenState extends State<AssetFilterScreen> { class _DeviceFilterScreenState extends State<DeviceFilterScreen> {
late AssetSearch filter; late DeviceSearch filter;
Lookup? _commissioningStatus; Lookup? _commissioningStatus;
Site? _site; Site? _site;
Lookup? _department; Lookup? _department;
@ -39,7 +39,7 @@ class _AssetFilterScreenState extends State<AssetFilterScreen> {
@override @override
void initState() { void initState() {
filter = widget.data ?? AssetSearch(); filter = widget.data ?? DeviceSearch();
WidgetsFlutterBinding.ensureInitialized().addPostFrameCallback((timeStamp) async { WidgetsFlutterBinding.ensureInitialized().addPostFrameCallback((timeStamp) async {
loading = true; loading = true;
setState(() {}); 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/app_lazy_loading.dart';
import '../../../new_views/common_widgets/default_app_bar.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"; 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 @override
State<AssetSearchScreen> createState() => _AssetSearchScreenState(); State<DeviceSearchScreen> createState() => _DeviceSearchScreenState();
} }
class _AssetSearchScreenState extends State<AssetSearchScreen> { class _DeviceSearchScreenState extends State<DeviceSearchScreen> {
late AssetSearch search; late DeviceSearch search;
final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
late TextEditingController _assetNameController, _assetNumberController, _snController, _modelController, _supplierController, _siteController, _manufactureController, _mdController; late TextEditingController _assetNameController, _assetNumberController, _snController, _modelController, _supplierController, _siteController, _manufactureController, _mdController;
@override @override
void initState() { void initState() {
search = widget.data ?? AssetSearch(); search = widget.data ?? DeviceSearch();
_assetNameController = TextEditingController(text: search.assetName); _assetNameController = TextEditingController(text: search.assetName);
_assetNumberController = TextEditingController(text: search.assetNo); _assetNumberController = TextEditingController(text: search.assetNo);
_snController = TextEditingController(text: search.assetSerialNumber); _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/int_extensions.dart';
import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart';
import 'package:test_sa/extensions/widget_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/pages/device_transfer/update_device_transfer.dart';
import 'package:test_sa/views/widgets/images/multi_image_picker.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/app_loading.dart';
@ -21,7 +21,7 @@ import '../../../new_views/common_widgets/default_app_bar.dart';
import '../../widgets/requests/request_status.dart'; import '../../widgets/requests/request_status.dart';
class DeviceTransferDetails extends StatefulWidget { class DeviceTransferDetails extends StatefulWidget {
final AssetTransfer model; final DeviceTransfer model;
const DeviceTransferDetails({Key? key, required this.model}) : super(key: key); const DeviceTransferDetails({Key? key, required this.model}) : super(key: key);
@ -31,7 +31,7 @@ class DeviceTransferDetails extends StatefulWidget {
class _DeviceTransferDetailsState extends State<DeviceTransferDetails> { class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
UserProvider? _userProvider; UserProvider? _userProvider;
AssetTransfer? _model; DeviceTransfer? _model;
final bool _isLoading = false; final bool _isLoading = false;
final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
List<File> _attachments = []; List<File> _attachments = [];
@ -56,7 +56,7 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
if (snapshot.connectionState == ConnectionState.waiting) { if (snapshot.connectionState == ConnectionState.waiting) {
return const ALoading(); return const ALoading();
} else { } else {
_model = snapshot.data as AssetTransfer?; _model = snapshot.data as DeviceTransfer?;
_attachments = _model?.assetTransferAttachments?.map((e) => File(e.attachmentName ?? '')).toList() ?? []; _attachments = _model?.assetTransferAttachments?.map((e) => File(e.attachmentName ?? '')).toList() ?? [];
return Form( return Form(
key: _formKey, key: _formKey,
@ -65,89 +65,91 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
isFailedLoading: false, isFailedLoading: false,
stateCode: 200, stateCode: 200,
onRefresh: () async {}, onRefresh: () async {},
child: Column( child: SingleChildScrollView(
children: [ child: Column(
Row( children: [
crossAxisAlignment: CrossAxisAlignment.start, Row(
children: [ crossAxisAlignment: CrossAxisAlignment.start,
Column( children: [
crossAxisAlignment: CrossAxisAlignment.stretch, Column(
children: [ crossAxisAlignment: CrossAxisAlignment.stretch,
context.translation.transferDetails.heading5(context), children: [
8.height, context.translation.transferDetails.heading5(context),
Column( 8.height,
crossAxisAlignment: CrossAxisAlignment.start, Column(
children: [ crossAxisAlignment: CrossAxisAlignment.start,
_buildTextWidget('${context.translation.transferType} : ${_model?.transferType?.name ?? ""}'), children: [
_buildTextWidget('${context.translation.assetName} : ${_model?.assetName?.cleanupWhitespace.capitalizeFirstOfEach ?? ""}'), _buildTextWidget('${context.translation.requestNo} : ${_model?.transferCode ?? ""}'),
_buildTextWidget('${context.translation.assetNumber} : ${_model?.assetNumber ?? ""}'), _buildTextWidget('${context.translation.transferType} : ${_model?.transferType?.name ?? ""}'),
_buildTextWidget('${context.translation.model} : ${_model?.modelName ?? ""}'), _buildTextWidget('${context.translation.assetName} : ${_model?.assetName?.cleanupWhitespace.capitalizeFirstOfEach ?? ""}'),
_buildTextWidget('${context.translation.sn} : ${_model?.assetSerialNo ?? ""}'), _buildTextWidget('${context.translation.assetNumber} : ${_model?.assetNumber ?? ""}'),
if (_model?.receiverEndUserName != null) _buildTextWidget('${context.translation.receiverName} : ${_model?.receiverEndUserName ?? ""}'), _buildTextWidget('${context.translation.model} : ${_model?.modelName ?? ""}'),
_buildTextWidget('${context.translation.requestNo} : ${_model?.transferCode ?? ""}'), _buildTextWidget('${context.translation.sn} : ${_model?.assetSerialNo ?? ""}'),
infoText(label: context.translation.employeeId, value: _model?.employeeId), if (_model?.receiverEndUserName != null) _buildTextWidget('${context.translation.receiverName} : ${_model?.receiverEndUserName ?? ""}'),
infoText(label: context.translation.name, value: _model?.name), infoText(label: context.translation.employeeId, value: _model?.employeeId),
infoText(label: context.translation.createdDate, value: _model?.createdDate?.toInitialVisitCardFormat), infoText(label: context.translation.name, value: _model?.name),
if ((_model?.comment ?? "").isNotEmpty) ...[ infoText(label: context.translation.createdDate, value: _model?.createdDate?.toInitialVisitCardFormat),
8.height, if ((_model?.comment ?? "").isNotEmpty) ...[
const Divider().defaultStyle(context), 8.height,
8.height, const Divider().defaultStyle(context),
_buildTextWidget(_model!.comment!), 8.height,
_buildTextWidget(_model!.comment!),
],
if (_attachments.isNotEmpty) ...[
attachmentWidget(),
]
], ],
if (_attachments.isNotEmpty) ...[ ),
attachmentWidget(), 8.height,
] ],
], ).expanded,
), Column(
8.height, crossAxisAlignment: CrossAxisAlignment.end,
], children: [
).expanded, 1.width,
Column( Text(
crossAxisAlignment: CrossAxisAlignment.end, _model?.createdOn != null ? _model!.createdOn!.toServiceRequestCardFormat : "",
children: [ textAlign: TextAlign.end,
1.width, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20),
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(
).toShadowContainer(context), isSender: true,
8.height, site: _model?.senderSiteName?.cleanupWhitespace.capitalizeFirstOfEach ?? "",
// sender card unit: _model?.senderDepartmentName?.cleanupWhitespace.capitalizeFirstOfEach ?? "",
_buildCard( comment: _model?.senderComment ?? "",
isSender: true, statusLabel: _model?.senderMachineStatusName != null
site: _model?.senderSiteName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", ? StatusLabel(
unit: _model?.senderDepartmentName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", label: _model!.senderMachineStatusName!,
comment: _model?.senderComment ?? "", id: _model!.senderMachineStatusId!.toInt(),
statusLabel: _model?.senderMachineStatusName != null textColor: AppColor.getRequestStatusTextColorByName(context, _model!.senderMachineStatusName!),
? StatusLabel( backgroundColor: AppColor.getRequestStatusColorByName(context, _model!.senderMachineStatusName!),
label: _model!.senderMachineStatusName!, )
id: _model!.senderMachineStatusId!.toInt(), : null,
textColor: AppColor.getRequestStatusTextColorByName(context, _model!.senderMachineStatusName!), ),
backgroundColor: AppColor.getRequestStatusColorByName(context, _model!.senderMachineStatusName!), 8.height,
) // receiver card
: null, _buildCard(
), isSender: false,
8.height, site: _model?.destSiteName?.cleanupWhitespace.capitalizeFirstOfEach ?? "",
// receiver card unit: _model?.destDepartmentName?.cleanupWhitespace.capitalizeFirstOfEach ?? "",
_buildCard( comment: _model?.receiverComment ?? "",
isSender: false, statusLabel: _model?.receiverMachineStatusName != null
site: _model?.destSiteName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", ? StatusLabel(
unit: _model?.destDepartmentName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", label: _model!.receiverMachineStatusName ?? "",
comment: _model?.receiverComment ?? "", id: _model!.receiverMachineStatusId!.toInt(),
statusLabel: _model?.receiverMachineStatusName != null textColor: AppColor.getRequestStatusTextColorByName(context, _model!.receiverMachineStatusName!),
? StatusLabel( backgroundColor: AppColor.getRequestStatusColorByName(context, _model!.receiverMachineStatusName!))
label: _model!.receiverMachineStatusName ?? "", : null,
id: _model!.receiverMachineStatusId!.toInt(), ),
textColor: AppColor.getRequestStatusTextColorByName(context, _model!.receiverMachineStatusName!), ],
backgroundColor: AppColor.getRequestStatusColorByName(context, _model!.receiverMachineStatusName!)) ).paddingAll(16),
: null, ),
),
],
).paddingAll(16),
), ),
); );
} }

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

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

@ -38,9 +38,7 @@ class _GasRefillDetailsPageState extends State<GasRefillDetailsPage> {
GasRefillModel _model = GasRefillModel(gasRefillDetails: []); GasRefillModel _model = GasRefillModel(gasRefillDetails: []);
late UserProvider _userProvider; late UserProvider _userProvider;
late GasRefillProvider gasRefillProvider; late GasRefillProvider gasRefillProvider;
final bool _isLoading = false;
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>(); final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
List<File> _attachments = []; List<File> _attachments = [];
@ -76,7 +74,7 @@ class _GasRefillDetailsPageState extends State<GasRefillDetailsPage> {
padding: const EdgeInsets.all(16), padding: const EdgeInsets.all(16),
child: informationCard(_model), child: informationCard(_model),
).expanded, ).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( AppFilledButton(
onPressed: () async { onPressed: () async {
await Navigator.of(context).push(MaterialPageRoute(builder: (_) => GasRefillForm(gasRefillModel: _model))); await Navigator.of(context).push(MaterialPageRoute(builder: (_) => GasRefillForm(gasRefillModel: _model)));
@ -122,31 +120,53 @@ class _GasRefillDetailsPageState extends State<GasRefillDetailsPage> {
], ],
), ),
8.height, 8.height,
context.translation.gasRefillRequest.heading5(context), // context.translation.gasRefillRequest.heading5(context),
8.height, Text(
"Request Details".addTranslation,
'${context.translation.gasType}: ${gasRefillModel.gasRefillDetails![0].gasType?.name}'.bodyText(context), style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
'${context.translation.cylinderType}: ${gasRefillModel.gasRefillDetails![0].cylinderType?.name}'.bodyText(context), ),
'${context.translation.cylinderSize}: ${gasRefillModel.gasRefillDetails![0].cylinderSize?.name}'.bodyText(context), infoText(label: context.translation.requestNo, value:gasRefillModel.gasRefillNo),
'${context.translation.site}: ${gasRefillModel.site?.name?.cleanupWhitespace.capitalizeFirstOfEach}'.bodyText(context), infoText(label: context.translation.gasType, value:gasRefillModel.gasRefillDetails?[0].gasType?.name),
'${context.translation.department}: ${gasRefillModel.department?.name?.cleanupWhitespace.capitalizeFirstOfEach}'.bodyText(context), infoText(label: context.translation.cylinderType, value:gasRefillModel.gasRefillDetails?[0].cylinderType?.name),
'${context.translation.requestNo}: ${gasRefillModel.gasRefillNo}'.bodyText(context), 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.employeeId, value: gasRefillModel.employeeId),
infoText(label: context.translation.name, value: gasRefillModel.name), 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, 8.height,
if (gasRefillModel.comment?.isNotEmpty ?? false) ...[ if (gasRefillModel.comment?.isNotEmpty ?? false) ...[
const Divider().defaultStyle(context), const Divider().defaultStyle(context),
Text(
"Comments".addTranslation,
style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
),
gasRefillModel.comment!.bodyText(context), gasRefillModel.comment!.bodyText(context),
8.height, 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) ...[ if (_attachments.isNotEmpty) ...[
const Divider().defaultStyle(context), 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, 8.height,
MultiFilesPicker( MultiFilesPicker(
label: context.translation.attachments, label: context.translation.attachments,
@ -168,67 +188,7 @@ class _GasRefillDetailsPageState extends State<GasRefillDetailsPage> {
).paddingOnly(top: 16, start: 16, end: 16), ).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); ).toShadowContainer(context, padding: 0);
} }
@ -237,7 +197,7 @@ class _GasRefillDetailsPageState extends State<GasRefillDetailsPage> {
String? label, String? label,
String? value, String? value,
}) { }) {
if (value == null || value.isEmpty) { if (value == null || value.isEmpty||value.toLowerCase()=='null') {
return const SizedBox(); return const SizedBox();
} else { } else {
return '$label: $value'.bodyText(context); return '$label: $value'.bodyText(context);

@ -19,7 +19,7 @@
// //
// import '../../../models/enums/user_types.dart'; // import '../../../models/enums/user_types.dart';
// import '../../widgets/land_page/land_page_item.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'; // import 'requests/requests_page.dart';
// //
// @Deprecated("Use the page which is inside the [new_views/pages/land_page] folder") // @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:flutter/material.dart';
import 'package:provider/provider.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/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';
import 'package:test_sa/extensions/widget_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.dart';
import 'package:test_sa/models/enums/user_types.dart';
import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/models/new_models/building.dart'; import 'package:test_sa/models/new_models/building.dart';
import 'package:test_sa/models/new_models/floor.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, label: context.translation.attachImage,
files: _deviceImages, files: _deviceImages,
buttonColor: AppColor.black10, buttonColor: AppColor.black10,
onlyImages: true, onlyImages: false,
buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.neutral120), 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())}")); _addTaskModel?.attachments?.add(TaskJobAttachment(id: 0, name: "${item.path.split("/").last}|${base64Encode(item.readAsBytesSync())}"));
} }
TaskRequestProvider taskRequestProvider = Provider.of<TaskRequestProvider>(context, listen: false); 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/text_extensions.dart';
import 'package:test_sa/extensions/widget_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/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/lookup.dart';
import 'package:test_sa/models/new_models/dashboard_detail.dart'; import 'package:test_sa/models/new_models/dashboard_detail.dart';
import 'package:test_sa/models/plan_preventive_visit/plan_preventive_visit_model.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/int_extensions.dart';
import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart';
import 'package:test_sa/extensions/widget_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 'package:test_sa/new_views/app_style/app_color.dart';
import '../../../extensions/text_extensions.dart'; import '../../../extensions/text_extensions.dart';
class DeviceTransferItem extends StatelessWidget { class DeviceTransferItem extends StatelessWidget {
final int index; final int index;
final AssetTransfer item; final DeviceTransfer item;
final Function(AssetTransfer) onPressed; final Function(DeviceTransfer) onPressed;
const DeviceTransferItem({Key? key,required this.item,required this.onPressed,required this.index}) : super(key: key); 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:flutter/material.dart';
import 'package:test_sa/extensions/context_extension.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/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/device_trancfer/device_transfer_item.dart';
import 'package:test_sa/views/widgets/loaders/lazy_loading.dart'; import 'package:test_sa/views/widgets/loaders/lazy_loading.dart';
import 'package:test_sa/views/widgets/loaders/no_data_found.dart'; import 'package:test_sa/views/widgets/loaders/no_data_found.dart';
class DeviceTransferList extends StatelessWidget { class DeviceTransferList extends StatelessWidget {
final List<AssetTransfer> items; final List<DeviceTransfer> items;
final bool nextPage; final bool nextPage;
final Future<void> Function() onLazyLoad; 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/int_extensions.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';
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_detail_page.dart';
import 'package:test_sa/views/widgets/equipment/asset_item_gridview.dart'; import 'package:test_sa/views/widgets/equipment/asset_item_gridview.dart';
import 'package:test_sa/views/widgets/equipment/asset_item_listview.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.dart';
import '../../../models/device/asset_search.dart'; import '../../../models/device/asset_search.dart';
import '../../../new_views/app_style/app_color.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 { class MyAssetsPage extends StatefulWidget {
static const String id = "/single-device-Picker"; static const String id = "/single-device-Picker";
@ -38,7 +38,7 @@ class _MyAssetsPageState extends State<MyAssetsPage> {
final List<Asset> _searchableList = []; final List<Asset> _searchableList = [];
final List<Asset> _initList = []; final List<Asset> _initList = [];
final bool _firstTime = true; final bool _firstTime = true;
AssetSearch? _searchAsset; DeviceSearch? _searchAsset;
bool showListView = true; bool showListView = true;
@ -48,7 +48,7 @@ class _MyAssetsPageState extends State<MyAssetsPage> {
_getDevice(String result, {bool isQr = false}) async { _getDevice(String result, {bool isQr = false}) async {
_devicesProvider.reset(); _devicesProvider.reset();
await _devicesProvider.getAssets( await _devicesProvider.getAssets(
search: AssetSearch(assetNo: result, assetSerialNumber: ""), search: DeviceSearch(assetNo: result, assetSerialNumber: ""),
isQr: isQr, isQr: isQr,
); );
_searchableList.clear(); _searchableList.clear();
@ -113,7 +113,7 @@ class _MyAssetsPageState extends State<MyAssetsPage> {
], ],
), ),
).onPress(() async { ).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) { if (result != null) {
_searchAsset = result; _searchAsset = result;
} }
@ -132,7 +132,7 @@ class _MyAssetsPageState extends State<MyAssetsPage> {
context.translation.filter, context.translation.filter,
style: AppTextStyles.bodyText2.copyWith(color: AppColor.blueStatus(context)), style: AppTextStyles.bodyText2.copyWith(color: AppColor.blueStatus(context)),
).onPress(() async { ).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) { if (result != null) {
_searchAsset = result; _searchAsset = result;
} }

@ -12,7 +12,7 @@ import '../../../controllers/providers/api/devices_provider.dart';
import '../../../models/device/asset_search.dart'; import '../../../models/device/asset_search.dart';
import '../../../new_views/common_widgets/app_filled_button.dart'; import '../../../new_views/common_widgets/app_filled_button.dart';
import '../../../new_views/common_widgets/custom_app_bar.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 { class AssetScanQr extends StatefulWidget {
static const String id = "/asset-scan-qr"; static const String id = "/asset-scan-qr";
@ -53,13 +53,13 @@ class _AssetScanQrState extends State<AssetScanQr> {
_pickManually() async { _pickManually() async {
_controller?.pauseCamera(); _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 { _getDevice(String result, {bool isQr = false}) async {
_devicesProvider.reset(); _devicesProvider.reset();
await _devicesProvider.getAssets( await _devicesProvider.getAssets(
search: AssetSearch(assetNo: result, assetSerialNumber: ""), search: DeviceSearch(assetNo: result, assetSerialNumber: ""),
isQr: isQr, isQr: isQr,
); );
return _devicesProvider.devices; return _devicesProvider.devices;

Loading…
Cancel
Save