Merge remote-tracking branch 'origin/main_design2.0' into main_design2.0

design_3.0_demo_module
Sikander Saleem 2 years ago
commit ad3549b9a4

@ -1,3 +1,4 @@
///todo deleted
// import 'dart:convert'; // import 'dart:convert';
// //
// import 'package:flutter/material.dart'; // import 'package:flutter/material.dart';

@ -1,3 +1,4 @@
///check deleted
import 'dart:convert'; import 'dart:convert';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';

@ -1,3 +1,4 @@
///todo deleted
// import 'dart:convert'; // import 'dart:convert';
// //
// import 'package:flutter/cupertino.dart'; // import 'package:flutter/cupertino.dart';

@ -1,75 +1,76 @@
import 'dart:convert'; ///todo deleted
// import 'dart:convert';
import 'package:flutter/cupertino.dart'; //
import 'package:flutter/material.dart'; // import 'package:flutter/cupertino.dart';
import 'package:http/http.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/controllers/api_routes/api_manager.dart'; // import 'package:http/http.dart';
import 'package:test_sa/controllers/api_routes/urls.dart'; // import 'package:test_sa/controllers/api_routes/api_manager.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/models/user.dart'; // import 'package:test_sa/models/lookup.dart';
// import 'package:test_sa/models/user.dart';
class AssetTransferStatusProvider extends ChangeNotifier { //
//reset provider data // class AssetTransferStatusProvider extends ChangeNotifier {
void reset() { // //reset provider data
_items = null; // void reset() {
_loading = null; // _items = null;
_stateCode = null; // _loading = null;
} // _stateCode = null;
// }
// state code of current request to defied error message //
// like 400 customer request failed // // state code of current request to defied error message
// 500 service not available // // like 400 customer request failed
int _stateCode; // // 500 service not available
// int _stateCode;
int get stateCode => _stateCode; //
// int get stateCode => _stateCode;
// contain user data //
// when user not login or register _user = null // // contain user data
List<Lookup> _items; // // when user not login or register _user = null
// List<Lookup> _items;
List<Lookup> get items => _items; //
// List<Lookup> get items => _items;
// when categories in-process _loading = true //
// done _loading = true // // when categories in-process _loading = true
// failed _loading = false // // done _loading = true
bool _loading; // // failed _loading = false
// bool _loading;
bool get isLoading => _loading; //
// bool get isLoading => _loading;
set isLoading(bool isLoading) { //
_loading = isLoading; // set isLoading(bool isLoading) {
notifyListeners(); // _loading = isLoading;
} // notifyListeners();
// }
/// return -2 if request in progress //
/// return -1 if error happen when sending request // /// return -2 if request in progress
/// return state code if request complete may be 200, 404 or 403 // /// return -1 if error happen when sending request
/// for more details check http state manager // /// return state code if request complete may be 200, 404 or 403
/// lib\controllers\http_status_manger\http_status_manger.dart // /// for more details check http state manager
Future<int> getData({ // /// lib\controllers\http_status_manger\http_status_manger.dart
String host, // Future<int> getData({
User user, // String host,
}) async { // User user,
if (_loading == true) return -2; // }) async {
_loading = true; // if (_loading == true) return -2;
notifyListeners(); // _loading = true;
Response response; // notifyListeners();
try { // Response response;
response = await ApiManager.instance.get(URLs.getAssetTransferStatus); // try {
_stateCode = response.statusCode; // response = await ApiManager.instance.get(URLs.getAssetTransferStatus);
if (response.statusCode >= 200 && response.statusCode < 300) { // _stateCode = response.statusCode;
// client's request was successfully received // if (response.statusCode >= 200 && response.statusCode < 300) {
List categoriesListJson = json.decode(response.body)["data"]; // // client's request was successfully received
_items = categoriesListJson.map((item) => Lookup.fromJson(item)).toList(); // List categoriesListJson = json.decode(response.body)["data"];
} // _items = categoriesListJson.map((item) => Lookup.fromJson(item)).toList();
_loading = false; // }
notifyListeners(); // _loading = false;
return response.statusCode; // notifyListeners();
} catch (error) { // return response.statusCode;
_loading = false; // } catch (error) {
_stateCode = -1; // _loading = false;
notifyListeners(); // _stateCode = -1;
return -1; // notifyListeners();
} // return -1;
} // }
} // }
// }

@ -1,73 +1,74 @@
import 'dart:convert'; ///todo deleted
// import 'dart:convert';
import 'package:flutter/cupertino.dart'; //
import 'package:flutter/material.dart'; // import 'package:flutter/cupertino.dart';
import 'package:http/http.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/controllers/api_routes/api_manager.dart'; // import 'package:http/http.dart';
import 'package:test_sa/controllers/api_routes/urls.dart'; // import 'package:test_sa/controllers/api_routes/api_manager.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/models/user.dart'; // import 'package:test_sa/models/lookup.dart';
// import 'package:test_sa/models/user.dart';
class AssignedToProvider extends ChangeNotifier { //
//reset provider data // class AssignedToProvider extends ChangeNotifier {
void reset() { // //reset provider data
_items = null; // void reset() {
_stateCode = null; // _items = null;
} // _stateCode = null;
// }
// state code of current request to defied error message //
// like 400 customer request failed // // state code of current request to defied error message
// 500 service not available // // like 400 customer request failed
int _stateCode; // // 500 service not available
// int _stateCode;
int get stateCode => _stateCode; //
// int get stateCode => _stateCode;
// contain user data //
// when user not login or register _user = null // // contain user data
List<Lookup> _items; // // when user not login or register _user = null
// List<Lookup> _items;
List<Lookup> get items => _items; //
// List<Lookup> get items => _items;
// when categories in-process _loading = true //
// done _loading = true // // when categories in-process _loading = true
// failed _loading = false // // done _loading = true
bool _loading; // // failed _loading = false
// bool _loading;
bool get isLoading => _loading; //
// bool get isLoading => _loading;
set isLoading(bool isLoading) { //
_loading = isLoading; // set isLoading(bool isLoading) {
notifyListeners(); // _loading = isLoading;
} // notifyListeners();
// }
/// return -2 if request in progress //
/// return -1 if error happen when sending request // /// return -2 if request in progress
/// return state code if request complete may be 200, 404 or 403 // /// return -1 if error happen when sending request
/// for more details check http state manager // /// return state code if request complete may be 200, 404 or 403
/// lib\controllers\http_status_manger\http_status_manger.dart // /// for more details check http state manager
Future<int> getData({String host, User user}) async { // /// lib\controllers\http_status_manger\http_status_manger.dart
if (_loading == true) return -2; // Future<int> getData({String host, User user}) async {
_loading = true; // if (_loading == true) return -2;
notifyListeners(); // _loading = true;
Response response; // notifyListeners();
try { // Response response;
response = await ApiManager.instance.get( // try {
URLs.getEmployees, // response = await ApiManager.instance.get(
); // URLs.getEmployees,
_stateCode = response.statusCode; // );
if (response.statusCode >= 200 && response.statusCode < 300) { // _stateCode = response.statusCode;
// client's request was successfully received // if (response.statusCode >= 200 && response.statusCode < 300) {
List categoriesListJson = json.decode(response.body)["data"]; // // client's request was successfully received
_items = categoriesListJson.map((type) => Lookup.fromJson(type)).toList(); // List categoriesListJson = json.decode(response.body)["data"];
} // _items = categoriesListJson.map((type) => Lookup.fromJson(type)).toList();
_loading = false; // }
notifyListeners(); // _loading = false;
return response.statusCode; // notifyListeners();
} catch (error) { // return response.statusCode;
_loading = false; // } catch (error) {
_stateCode = -1; // _loading = false;
notifyListeners(); // _stateCode = -1;
return -1; // notifyListeners();
} // return -1;
} // }
} // }
// }

@ -1,73 +1,74 @@
import 'dart:convert'; ///todo deleted
// import 'dart:convert';
import 'package:flutter/cupertino.dart'; //
import 'package:flutter/material.dart'; // import 'package:flutter/cupertino.dart';
import 'package:http/http.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/controllers/api_routes/api_manager.dart'; // import 'package:http/http.dart';
import 'package:test_sa/controllers/api_routes/urls.dart'; // import 'package:test_sa/controllers/api_routes/api_manager.dart';
import 'package:test_sa/models/employee.dart'; // import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/models/user.dart'; // import 'package:test_sa/models/employee.dart';
// import 'package:test_sa/models/user.dart';
class EngineersProvider extends ChangeNotifier { //
//reset provider data // class EngineersProvider extends ChangeNotifier {
void reset() { // //reset provider data
_items = null; // void reset() {
_stateCode = null; // _items = null;
} // _stateCode = null;
// }
// state code of current request to defied error message //
// like 400 customer request failed // // state code of current request to defied error message
// 500 service not available // // like 400 customer request failed
int _stateCode; // // 500 service not available
// int _stateCode;
int get stateCode => _stateCode; //
// int get stateCode => _stateCode;
// contain user data //
// when user not login or register _user = null // // contain user data
List<Employee> _items; // // when user not login or register _user = null
// List<Employee> _items;
List<Employee> get items => _items; //
// List<Employee> get items => _items;
// when categories in-process _loading = true //
// done _loading = true // // when categories in-process _loading = true
// failed _loading = false // // done _loading = true
bool _loading; // // failed _loading = false
// bool _loading;
bool get isLoading => _loading; //
// bool get isLoading => _loading;
set isLoading(bool isLoading) { //
_loading = isLoading; // set isLoading(bool isLoading) {
notifyListeners(); // _loading = isLoading;
} // notifyListeners();
// }
/// return -2 if request in progress //
/// return -1 if error happen when sending request // /// return -2 if request in progress
/// return state code if request complete may be 200, 404 or 403 // /// return -1 if error happen when sending request
/// for more details check http state manager // /// return state code if request complete may be 200, 404 or 403
/// lib\controllers\http_status_manger\http_status_manger.dart // /// for more details check http state manager
Future<int> getData({String host, User user}) async { // /// lib\controllers\http_status_manger\http_status_manger.dart
if (_loading == true) return -2; // Future<int> getData({String host, User user}) async {
_loading = true; // if (_loading == true) return -2;
notifyListeners(); // _loading = true;
Response response; // notifyListeners();
try { // Response response;
response = await ApiManager.instance.get( // try {
URLs.getEngineers, // response = await ApiManager.instance.get(
); // URLs.getEngineers,
_stateCode = response.statusCode; // );
if (response.statusCode >= 200 && response.statusCode < 300) { // _stateCode = response.statusCode;
// client's request was successfully received // if (response.statusCode >= 200 && response.statusCode < 300) {
List categoriesListJson = json.decode(response.body); // // client's request was successfully received
_items = categoriesListJson.map((type) => Employee.fromJson(type)).toList(); // List categoriesListJson = json.decode(response.body);
} // _items = categoriesListJson.map((type) => Employee.fromJson(type)).toList();
_loading = false; // }
notifyListeners(); // _loading = false;
return response.statusCode; // notifyListeners();
} catch (error) { // return response.statusCode;
_loading = false; // } catch (error) {
_stateCode = -1; // _loading = false;
notifyListeners(); // _stateCode = -1;
return -1; // notifyListeners();
} // return -1;
} // }
} // }
// }

@ -1,77 +1,78 @@
import 'dart:convert'; ///todo deleted
// import 'dart:convert';
import 'package:flutter/cupertino.dart'; //
import 'package:flutter/material.dart'; // import 'package:flutter/cupertino.dart';
import 'package:http/http.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/controllers/api_routes/api_manager.dart'; // import 'package:http/http.dart';
import 'package:test_sa/controllers/api_routes/urls.dart'; // import 'package:test_sa/controllers/api_routes/api_manager.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/models/user.dart'; // import 'package:test_sa/models/lookup.dart';
// import 'package:test_sa/models/user.dart';
class GasCylinderSizesProvider extends ChangeNotifier { //
//reset provider data // class GasCylinderSizesProvider extends ChangeNotifier {
void reset() { // //reset provider data
_items = null; // void reset() {
_loading = null; // _items = null;
_stateCode = null; // _loading = null;
} // _stateCode = null;
// }
// state code of current request to defied error message //
// like 400 customer request failed // // state code of current request to defied error message
// 500 service not available // // like 400 customer request failed
int _stateCode; // // 500 service not available
// int _stateCode;
int get stateCode => _stateCode; //
// int get stateCode => _stateCode;
// contain user data //
// when user not login or register _user = null // // contain user data
List<Lookup> _items; // // when user not login or register _user = null
// List<Lookup> _items;
List<Lookup> get items => _items; //
// List<Lookup> get items => _items;
// when categories in-process _loading = true //
// done _loading = true // // when categories in-process _loading = true
// failed _loading = false // // done _loading = true
bool _loading; // // failed _loading = false
// bool _loading;
bool get isLoading => _loading; //
// bool get isLoading => _loading;
set isLoading(bool isLoading) { //
_loading = isLoading; // set isLoading(bool isLoading) {
notifyListeners(); // _loading = isLoading;
} // notifyListeners();
// }
/// return -2 if request in progress //
/// return -1 if error happen when sending request // /// return -2 if request in progress
/// return state code if request complete may be 200, 404 or 403 // /// return -1 if error happen when sending request
/// for more details check http state manager // /// return state code if request complete may be 200, 404 or 403
/// lib\controllers\http_status_manger\http_status_manger.dart // /// for more details check http state manager
Future<int> getData({ // /// lib\controllers\http_status_manger\http_status_manger.dart
String host, // Future<int> getData({
User user, // String host,
}) async { // User user,
if (_loading == true) return -2; // }) async {
_loading = true; // if (_loading == true) return -2;
notifyListeners(); // _loading = true;
Response response; // notifyListeners();
try { // Response response;
response = await ApiManager.instance.get( // try {
URLs.getGasCylinderSize, // response = await ApiManager.instance.get(
); // URLs.getGasCylinderSize,
_stateCode = response.statusCode; // );
if (response.statusCode >= 200 && response.statusCode < 300) { // _stateCode = response.statusCode;
// client's request was successfully received // if (response.statusCode >= 200 && response.statusCode < 300) {
List categoriesListJson = json.decode(response.body)["data"]; // // client's request was successfully received
_items = categoriesListJson.map((item) => Lookup.fromJson(item)).toList(); // List categoriesListJson = json.decode(response.body)["data"];
} // _items = categoriesListJson.map((item) => Lookup.fromJson(item)).toList();
_loading = false; // }
notifyListeners(); // _loading = false;
return response.statusCode; // notifyListeners();
} catch (error) { // return response.statusCode;
_loading = false; // } catch (error) {
_stateCode = -1; // _loading = false;
notifyListeners(); // _stateCode = -1;
return -1; // notifyListeners();
} // return -1;
} // }
} // }
// }

@ -1,77 +1,78 @@
import 'dart:convert'; ///todo deleted
// import 'dart:convert';
import 'package:flutter/cupertino.dart'; //
import 'package:flutter/material.dart'; // import 'package:flutter/cupertino.dart';
import 'package:http/http.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/controllers/api_routes/api_manager.dart'; // import 'package:http/http.dart';
import 'package:test_sa/controllers/api_routes/urls.dart'; // import 'package:test_sa/controllers/api_routes/api_manager.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/models/user.dart'; // import 'package:test_sa/models/lookup.dart';
// import 'package:test_sa/models/user.dart';
class GasCylinderTypesProvider extends ChangeNotifier { //
//reset provider data // class GasCylinderTypesProvider extends ChangeNotifier {
void reset() { // //reset provider data
_items = null; // void reset() {
_loading = null; // _items = null;
_stateCode = null; // _loading = null;
} // _stateCode = null;
// }
// state code of current request to defied error message //
// like 400 customer request failed // // state code of current request to defied error message
// 500 service not available // // like 400 customer request failed
int _stateCode; // // 500 service not available
// int _stateCode;
int get stateCode => _stateCode; //
// int get stateCode => _stateCode;
// contain user data //
// when user not login or register _user = null // // contain user data
List<Lookup> _items; // // when user not login or register _user = null
// List<Lookup> _items;
List<Lookup> get items => _items; //
// List<Lookup> get items => _items;
// when categories in-process _loading = true //
// done _loading = true // // when categories in-process _loading = true
// failed _loading = false // // done _loading = true
bool _loading; // // failed _loading = false
// bool _loading;
bool get isLoading => _loading; //
// bool get isLoading => _loading;
set isLoading(bool isLoading) { //
_loading = isLoading; // set isLoading(bool isLoading) {
notifyListeners(); // _loading = isLoading;
} // notifyListeners();
// }
/// return -2 if request in progress //
/// return -1 if error happen when sending request // /// return -2 if request in progress
/// return state code if request complete may be 200, 404 or 403 // /// return -1 if error happen when sending request
/// for more details check http state manager // /// return state code if request complete may be 200, 404 or 403
/// lib\controllers\http_status_manger\http_status_manger.dart // /// for more details check http state manager
Future<int> getData({ // /// lib\controllers\http_status_manger\http_status_manger.dart
String host, // Future<int> getData({
User user, // String host,
}) async { // User user,
if (_loading == true) return -2; // }) async {
_loading = true; // if (_loading == true) return -2;
notifyListeners(); // _loading = true;
Response response; // notifyListeners();
try { // Response response;
response = await ApiManager.instance.get( // try {
URLs.getGasCylinderType, // response = await ApiManager.instance.get(
); // URLs.getGasCylinderType,
_stateCode = response.statusCode; // );
if (response.statusCode >= 200 && response.statusCode < 300) { // _stateCode = response.statusCode;
// client's request was successfully received // if (response.statusCode >= 200 && response.statusCode < 300) {
List categoriesListJson = json.decode(response.body)["data"]; // // client's request was successfully received
_items = categoriesListJson.map((item) => Lookup.fromJson(item)).toList(); // List categoriesListJson = json.decode(response.body)["data"];
} // _items = categoriesListJson.map((item) => Lookup.fromJson(item)).toList();
_loading = false; // }
notifyListeners(); // _loading = false;
return response.statusCode; // notifyListeners();
} catch (error) { // return response.statusCode;
_loading = false; // } catch (error) {
_stateCode = -1; // _loading = false;
notifyListeners(); // _stateCode = -1;
return -1; // notifyListeners();
} // return -1;
} // }
} // }
// }

@ -1,77 +1,78 @@
import 'dart:convert'; ///todo deleted
// import 'dart:convert';
import 'package:flutter/cupertino.dart'; //
import 'package:flutter/material.dart'; // import 'package:flutter/cupertino.dart';
import 'package:http/http.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/controllers/api_routes/api_manager.dart'; // import 'package:http/http.dart';
import 'package:test_sa/controllers/api_routes/urls.dart'; // import 'package:test_sa/controllers/api_routes/api_manager.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/models/user.dart'; // import 'package:test_sa/models/lookup.dart';
// import 'package:test_sa/models/user.dart';
class GasStatusProvider extends ChangeNotifier { //
//reset provider data // class GasStatusProvider extends ChangeNotifier {
void reset() { // //reset provider data
_items = null; // void reset() {
_loading = null; // _items = null;
_stateCode = null; // _loading = null;
} // _stateCode = null;
// }
// state code of current request to defied error message //
// like 400 customer request failed // // state code of current request to defied error message
// 500 service not available // // like 400 customer request failed
int _stateCode; // // 500 service not available
// int _stateCode;
int get stateCode => _stateCode; //
// int get stateCode => _stateCode;
// contain user data //
// when user not login or register _user = null // // contain user data
List<Lookup> _items; // // when user not login or register _user = null
// List<Lookup> _items;
List<Lookup> get items => _items; //
// List<Lookup> get items => _items;
// when categories in-process _loading = true //
// done _loading = true // // when categories in-process _loading = true
// failed _loading = false // // done _loading = true
bool _loading; // // failed _loading = false
// bool _loading;
bool get isLoading => _loading; //
// bool get isLoading => _loading;
set isLoading(bool isLoading) { //
_loading = isLoading; // set isLoading(bool isLoading) {
notifyListeners(); // _loading = isLoading;
} // notifyListeners();
// }
/// return -2 if request in progress //
/// return -1 if error happen when sending request // /// return -2 if request in progress
/// return state code if request complete may be 200, 404 or 403 // /// return -1 if error happen when sending request
/// for more details check http state manager // /// return state code if request complete may be 200, 404 or 403
/// lib\controllers\http_status_manger\http_status_manger.dart // /// for more details check http state manager
Future<int> getData({ // /// lib\controllers\http_status_manger\http_status_manger.dart
String host, // Future<int> getData({
User user, // String host,
}) async { // User user,
if (_loading == true) return -2; // }) async {
_loading = true; // if (_loading == true) return -2;
notifyListeners(); // _loading = true;
Response response; // notifyListeners();
try { // Response response;
response = await ApiManager.instance.get( // try {
URLs.getGasStatus, // response = await ApiManager.instance.get(
); // URLs.getGasStatus,
_stateCode = response.statusCode; // );
if (response.statusCode >= 200 && response.statusCode < 300) { // _stateCode = response.statusCode;
// client's request was successfully received // if (response.statusCode >= 200 && response.statusCode < 300) {
List categoriesListJson = json.decode(response.body)["data"]; // // client's request was successfully received
_items = categoriesListJson.map((item) => Lookup.fromJson(item)).toList(); // List categoriesListJson = json.decode(response.body)["data"];
} // _items = categoriesListJson.map((item) => Lookup.fromJson(item)).toList();
_loading = false; // }
notifyListeners(); // _loading = false;
return response.statusCode; // notifyListeners();
} catch (error) { // return response.statusCode;
_loading = false; // } catch (error) {
_stateCode = -1; // _loading = false;
notifyListeners(); // _stateCode = -1;
return -1; // notifyListeners();
} // return -1;
} // }
} // }
// }

@ -1,77 +1,78 @@
import 'dart:convert'; ///todo deleted
// import 'dart:convert';
import 'package:flutter/cupertino.dart'; //
import 'package:flutter/material.dart'; // import 'package:flutter/cupertino.dart';
import 'package:http/http.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/controllers/api_routes/api_manager.dart'; // import 'package:http/http.dart';
import 'package:test_sa/controllers/api_routes/urls.dart'; // import 'package:test_sa/controllers/api_routes/api_manager.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/models/user.dart'; // import 'package:test_sa/models/lookup.dart';
// import 'package:test_sa/models/user.dart';
class GasTypesProvider extends ChangeNotifier { //
//reset provider data // class GasTypesProvider extends ChangeNotifier {
void reset() { // //reset provider data
_items = null; // void reset() {
_loading = null; // _items = null;
_stateCode = null; // _loading = null;
} // _stateCode = null;
// }
// state code of current request to defied error message //
// like 400 customer request failed // // state code of current request to defied error message
// 500 service not available // // like 400 customer request failed
int _stateCode; // // 500 service not available
// int _stateCode;
int get stateCode => _stateCode; //
// int get stateCode => _stateCode;
// contain user data //
// when user not login or register _user = null // // contain user data
List<Lookup> _items; // // when user not login or register _user = null
// List<Lookup> _items;
List<Lookup> get items => _items; //
// List<Lookup> get items => _items;
// when categories in-process _loading = true //
// done _loading = true // // when categories in-process _loading = true
// failed _loading = false // // done _loading = true
bool _loading; // // failed _loading = false
// bool _loading;
bool get isLoading => _loading; //
// bool get isLoading => _loading;
set isLoading(bool isLoading) { //
_loading = isLoading; // set isLoading(bool isLoading) {
notifyListeners(); // _loading = isLoading;
} // notifyListeners();
// }
/// return -2 if request in progress //
/// return -1 if error happen when sending request // /// return -2 if request in progress
/// return state code if request complete may be 200, 404 or 403 // /// return -1 if error happen when sending request
/// for more details check http state manager // /// return state code if request complete may be 200, 404 or 403
/// lib\controllers\http_status_manger\http_status_manger.dart // /// for more details check http state manager
Future<int> getData({ // /// lib\controllers\http_status_manger\http_status_manger.dart
String host, // Future<int> getData({
User user, // String host,
}) async { // User user,
if (_loading == true) return -2; // }) async {
_loading = true; // if (_loading == true) return -2;
notifyListeners(); // _loading = true;
Response response; // notifyListeners();
try { // Response response;
response = await ApiManager.instance.get( // try {
URLs.getGasTypes, // response = await ApiManager.instance.get(
); // URLs.getGasTypes,
_stateCode = response.statusCode; // );
if (response.statusCode >= 200 && response.statusCode < 300) { // _stateCode = response.statusCode;
// client's request was successfully received // if (response.statusCode >= 200 && response.statusCode < 300) {
List categoriesListJson = json.decode(response.body)["data"]; // // client's request was successfully received
_items = categoriesListJson.map((item) => Lookup.fromJson(item)).toList(); // List categoriesListJson = json.decode(response.body)["data"];
} // _items = categoriesListJson.map((item) => Lookup.fromJson(item)).toList();
_loading = false; // }
notifyListeners(); // _loading = false;
return response.statusCode; // notifyListeners();
} catch (error) { // return response.statusCode;
_loading = false; // } catch (error) {
_stateCode = -1; // _loading = false;
notifyListeners(); // _stateCode = -1;
return -1; // notifyListeners();
} // return -1;
} // }
} // }
// }

@ -1,74 +1,75 @@
import 'dart:convert'; ///todo deleted
// import 'dart:convert';
import 'package:flutter/cupertino.dart'; //
import 'package:flutter/material.dart'; // import 'package:flutter/cupertino.dart';
import 'package:http/http.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/controllers/api_routes/api_manager.dart'; // import 'package:http/http.dart';
import 'package:test_sa/controllers/api_routes/urls.dart'; // import 'package:test_sa/controllers/api_routes/api_manager.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/models/user.dart'; // import 'package:test_sa/models/lookup.dart';
// import 'package:test_sa/models/user.dart';
class PentryStatusProvider extends ChangeNotifier { //
//reset provider data // class PentryStatusProvider extends ChangeNotifier {
void reset() { // //reset provider data
_items = null; // void reset() {
_stateCode = null; // _items = null;
} // _stateCode = null;
// }
// state code of current request to defied error message //
// like 400 customer request failed // // state code of current request to defied error message
// 500 service not available // // like 400 customer request failed
int _stateCode; // // 500 service not available
// int _stateCode;
int get stateCode => _stateCode; //
// int get stateCode => _stateCode;
// contain user data //
// when user not login or register _user = null // // contain user data
List<Lookup> _items; // // when user not login or register _user = null
// List<Lookup> _items;
List<Lookup> get items => _items; //
// List<Lookup> get items => _items;
// when categories in-process _loading = true //
// done _loading = true // // when categories in-process _loading = true
// failed _loading = false // // done _loading = true
bool _loading; // // failed _loading = false
// bool _loading;
bool get isLoading => _loading; //
// bool get isLoading => _loading;
set isLoading(bool isLoading) { //
_loading = isLoading; // set isLoading(bool isLoading) {
notifyListeners(); // _loading = isLoading;
} // notifyListeners();
// }
/// return -2 if request in progress //
/// return -1 if error happen when sending request // /// return -2 if request in progress
/// return state code if request complete may be 200, 404 or 403 // /// return -1 if error happen when sending request
/// for more details check http state manager // /// return state code if request complete may be 200, 404 or 403
/// lib\controllers\http_status_manger\http_status_manger.dart // /// for more details check http state manager
Future<int> getData({String host, User user}) async { // /// lib\controllers\http_status_manger\http_status_manger.dart
if (_loading == true) return -2; // Future<int> getData({String host, User user}) async {
_loading = true; // if (_loading == true) return -2;
notifyListeners(); // _loading = true;
Response response; // notifyListeners();
try { // Response response;
response = await ApiManager.instance.get( // try {
URLs.getPentryStatus, // response = await ApiManager.instance.get(
); // URLs.getPentryStatus,
// );
_stateCode = response.statusCode; //
if (response.statusCode >= 200 && response.statusCode < 300) { // _stateCode = response.statusCode;
// client's request was successfully received // if (response.statusCode >= 200 && response.statusCode < 300) {
List listJson = json.decode(response.body)["data"]; // // client's request was successfully received
_items = listJson.map((type) => Lookup.fromJson(type)).toList(); // List listJson = json.decode(response.body)["data"];
} // _items = listJson.map((type) => Lookup.fromJson(type)).toList();
_loading = false; // }
notifyListeners(); // _loading = false;
return response.statusCode; // notifyListeners();
} catch (error) { // return response.statusCode;
_loading = false; // } catch (error) {
_stateCode = -1; // _loading = false;
notifyListeners(); // _stateCode = -1;
return -1; // notifyListeners();
} // return -1;
} // }
} // }
// }

@ -1,74 +1,75 @@
import 'dart:convert'; ///todo deleted
// import 'dart:convert';
import 'package:flutter/cupertino.dart'; //
import 'package:flutter/material.dart'; // import 'package:flutter/cupertino.dart';
import 'package:http/http.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/controllers/api_routes/api_manager.dart'; // import 'package:http/http.dart';
import 'package:test_sa/controllers/api_routes/urls.dart'; // import 'package:test_sa/controllers/api_routes/api_manager.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/models/user.dart'; // import 'package:test_sa/models/lookup.dart';
// import 'package:test_sa/models/user.dart';
class PentryTaskStatusProvider extends ChangeNotifier { //
//reset provider data // class PentryTaskStatusProvider extends ChangeNotifier {
void reset() { // //reset provider data
_items = null; // void reset() {
_stateCode = null; // _items = null;
} // _stateCode = null;
// }
// state code of current request to defied error message //
// like 400 customer request failed // // state code of current request to defied error message
// 500 service not available // // like 400 customer request failed
int _stateCode; // // 500 service not available
// int _stateCode;
int get stateCode => _stateCode; //
// int get stateCode => _stateCode;
// contain user data //
// when user not login or register _user = null // // contain user data
List<Lookup> _items; // // when user not login or register _user = null
// List<Lookup> _items;
List<Lookup> get items => _items; //
// List<Lookup> get items => _items;
// when categories in-process _loading = true //
// done _loading = true // // when categories in-process _loading = true
// failed _loading = false // // done _loading = true
bool _loading; // // failed _loading = false
// bool _loading;
bool get isLoading => _loading; //
// bool get isLoading => _loading;
set isLoading(bool isLoading) { //
_loading = isLoading; // set isLoading(bool isLoading) {
notifyListeners(); // _loading = isLoading;
} // notifyListeners();
// }
/// return -2 if request in progress //
/// return -1 if error happen when sending request // /// return -2 if request in progress
/// return state code if request complete may be 200, 404 or 403 // /// return -1 if error happen when sending request
/// for more details check http state manager // /// return state code if request complete may be 200, 404 or 403
/// lib\controllers\http_status_manger\http_status_manger.dart // /// for more details check http state manager
Future<int> getData({String host, User user}) async { // /// lib\controllers\http_status_manger\http_status_manger.dart
if (_loading == true) return -2; // Future<int> getData({String host, User user}) async {
_loading = true; // if (_loading == true) return -2;
notifyListeners(); // _loading = true;
Response response; // notifyListeners();
try { // Response response;
response = await ApiManager.instance.get( // try {
URLs.getPentryTaskStatus, // response = await ApiManager.instance.get(
); // URLs.getPentryTaskStatus,
// );
_stateCode = response.statusCode; //
if (response.statusCode >= 200 && response.statusCode < 300) { // _stateCode = response.statusCode;
// client's request was successfully received // if (response.statusCode >= 200 && response.statusCode < 300) {
List categoriesListJson = json.decode(response.body)["data"]; // // client's request was successfully received
_items = categoriesListJson.map((type) => Lookup.fromJson(type)).toList(); // List categoriesListJson = json.decode(response.body)["data"];
} // _items = categoriesListJson.map((type) => Lookup.fromJson(type)).toList();
_loading = false; // }
notifyListeners(); // _loading = false;
return response.statusCode; // notifyListeners();
} catch (error) { // return response.statusCode;
_loading = false; // } catch (error) {
_stateCode = -1; // _loading = false;
notifyListeners(); // _stateCode = -1;
return -1; // notifyListeners();
} // return -1;
} // }
} // }
// }

@ -1,74 +1,75 @@
import 'dart:convert'; ///todo deleted
// import 'dart:convert';
import 'package:flutter/cupertino.dart'; //
import 'package:flutter/material.dart'; // import 'package:flutter/cupertino.dart';
import 'package:http/http.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/controllers/api_routes/api_manager.dart'; // import 'package:http/http.dart';
import 'package:test_sa/controllers/api_routes/urls.dart'; // import 'package:test_sa/controllers/api_routes/api_manager.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/models/user.dart'; // import 'package:test_sa/models/lookup.dart';
// import 'package:test_sa/models/user.dart';
class PentryVisitStatusProvider extends ChangeNotifier { //
//reset provider data // class PentryVisitStatusProvider extends ChangeNotifier {
void reset() { // //reset provider data
_items = null; // void reset() {
_stateCode = null; // _items = null;
} // _stateCode = null;
// }
// state code of current request to defied error message //
// like 400 customer request failed // // state code of current request to defied error message
// 500 service not available // // like 400 customer request failed
int _stateCode; // // 500 service not available
// int _stateCode;
int get stateCode => _stateCode; //
// int get stateCode => _stateCode;
// contain user data //
// when user not login or register _user = null // // contain user data
List<Lookup> _items; // // when user not login or register _user = null
// List<Lookup> _items;
List<Lookup> get items => _items; //
// List<Lookup> get items => _items;
// when categories in-process _loading = true //
// done _loading = true // // when categories in-process _loading = true
// failed _loading = false // // done _loading = true
bool _loading; // // failed _loading = false
// bool _loading;
bool get isLoading => _loading; //
// bool get isLoading => _loading;
set isLoading(bool isLoading) { //
_loading = isLoading; // set isLoading(bool isLoading) {
notifyListeners(); // _loading = isLoading;
} // notifyListeners();
// }
/// return -2 if request in progress //
/// return -1 if error happen when sending request // /// return -2 if request in progress
/// return state code if request complete may be 200, 404 or 403 // /// return -1 if error happen when sending request
/// for more details check http state manager // /// return state code if request complete may be 200, 404 or 403
/// lib\controllers\http_status_manger\http_status_manger.dart // /// for more details check http state manager
Future<int> getData({String host, User user}) async { // /// lib\controllers\http_status_manger\http_status_manger.dart
if (_loading == true) return -2; // Future<int> getData({String host, User user}) async {
_loading = true; // if (_loading == true) return -2;
notifyListeners(); // _loading = true;
Response response; // notifyListeners();
try { // Response response;
response = await ApiManager.instance.get( // try {
URLs.getPentryVisitStatus, // response = await ApiManager.instance.get(
); // URLs.getPentryVisitStatus,
// );
_stateCode = response.statusCode; //
if (response.statusCode >= 200 && response.statusCode < 300) { // _stateCode = response.statusCode;
// client's request was successfully received // if (response.statusCode >= 200 && response.statusCode < 300) {
List listJson = json.decode(response.body)["data"]; // // client's request was successfully received
_items = listJson.map((type) => Lookup.fromJson(type)).toList(); // List listJson = json.decode(response.body)["data"];
} // _items = listJson.map((type) => Lookup.fromJson(type)).toList();
_loading = false; // }
notifyListeners(); // _loading = false;
return response.statusCode; // notifyListeners();
} catch (error) { // return response.statusCode;
_loading = false; // } catch (error) {
_stateCode = -1; // _loading = false;
notifyListeners(); // _stateCode = -1;
return -1; // notifyListeners();
} // return -1;
} // }
} // }
// }

@ -1,73 +1,74 @@
import 'dart:convert'; ///todo deleted
// import 'dart:convert';
import 'package:flutter/cupertino.dart'; //
import 'package:flutter/material.dart'; // import 'package:flutter/cupertino.dart';
import 'package:http/http.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/controllers/api_routes/api_manager.dart'; // import 'package:http/http.dart';
import 'package:test_sa/controllers/api_routes/urls.dart'; // import 'package:test_sa/controllers/api_routes/api_manager.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/models/user.dart'; // import 'package:test_sa/models/lookup.dart';
// import 'package:test_sa/models/user.dart';
class ServiceRequestDefectTypesProvider extends ChangeNotifier { //
//reset provider data // class ServiceRequestDefectTypesProvider extends ChangeNotifier {
void reset() { // //reset provider data
_items = null; // void reset() {
_stateCode = null; // _items = null;
} // _stateCode = null;
// }
// state code of current request to defied error message //
// like 400 customer request failed // // state code of current request to defied error message
// 500 service not available // // like 400 customer request failed
int _stateCode; // // 500 service not available
// int _stateCode;
int get stateCode => _stateCode; //
// int get stateCode => _stateCode;
// contain user data //
// when user not login or register _user = null // // contain user data
List<Lookup> _items; // // when user not login or register _user = null
// List<Lookup> _items;
List<Lookup> get items => _items; //
// List<Lookup> get items => _items;
// when categories in-process _loading = true //
// done _loading = true // // when categories in-process _loading = true
// failed _loading = false // // done _loading = true
bool _loading; // // failed _loading = false
// bool _loading;
bool get isLoading => _loading; //
// bool get isLoading => _loading;
set isLoading(bool isLoading) { //
_loading = isLoading; // set isLoading(bool isLoading) {
notifyListeners(); // _loading = isLoading;
} // notifyListeners();
// }
/// return -2 if request in progress //
/// return -1 if error happen when sending request // /// return -2 if request in progress
/// return state code if request complete may be 200, 404 or 403 // /// return -1 if error happen when sending request
/// for more details check http state manager // /// return state code if request complete may be 200, 404 or 403
/// lib\controllers\http_status_manger\http_status_manger.dart // /// for more details check http state manager
Future<int> getData({String host, User user}) async { // /// lib\controllers\http_status_manger\http_status_manger.dart
if (_loading == true) return -2; // Future<int> getData({String host, User user}) async {
_loading = true; // if (_loading == true) return -2;
notifyListeners(); // _loading = true;
Response response; // notifyListeners();
try { // Response response;
response = await ApiManager.instance.get( // try {
URLs.getServiceReportDefectTypes, // response = await ApiManager.instance.get(
); // URLs.getServiceReportDefectTypes,
_stateCode = response.statusCode; // );
if (response.statusCode >= 200 && response.statusCode < 300) { // _stateCode = response.statusCode;
// client's request was successfully received // if (response.statusCode >= 200 && response.statusCode < 300) {
List listJson = json.decode(response.body)["data"]; // // client's request was successfully received
_items = listJson.map((type) => Lookup.fromJson(type)).toList(); // List listJson = json.decode(response.body)["data"];
} // _items = listJson.map((type) => Lookup.fromJson(type)).toList();
_loading = false; // }
notifyListeners(); // _loading = false;
return response.statusCode; // notifyListeners();
} catch (error) { // return response.statusCode;
_loading = false; // } catch (error) {
_stateCode = -1; // _loading = false;
notifyListeners(); // _stateCode = -1;
return -1; // notifyListeners();
} // return -1;
} // }
} // }
// }

@ -1,72 +1,73 @@
import 'dart:convert'; ///todo deleted
// import 'dart:convert';
import 'package:flutter/cupertino.dart'; //
import 'package:flutter/material.dart'; // import 'package:flutter/cupertino.dart';
import 'package:http/http.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/controllers/api_routes/api_manager.dart'; // import 'package:http/http.dart';
import 'package:test_sa/controllers/api_routes/urls.dart'; // import 'package:test_sa/controllers/api_routes/api_manager.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/models/user.dart'; // import 'package:test_sa/models/lookup.dart';
// import 'package:test_sa/models/user.dart';
class ServiceReportEquipmentStatusProvider extends ChangeNotifier { //
//reset provider data // class ServiceReportEquipmentStatusProvider extends ChangeNotifier {
void reset() { // //reset provider data
_status = null; // void reset() {
_stateCode = null; // _status = null;
} // _stateCode = null;
// }
// state code of current request to defied error message //
// like 400 customer request failed // // state code of current request to defied error message
// 500 service not available // // like 400 customer request failed
int _stateCode; // // 500 service not available
// int _stateCode;
int get stateCode => _stateCode; //
// int get stateCode => _stateCode;
// contain user data //
// when user not login or register _user = null // // contain user data
List<Lookup> _status; // // when user not login or register _user = null
// List<Lookup> _status;
List<Lookup> get statuses => _status; //
// List<Lookup> get statuses => _status;
// when categories in-process _loading = true //
// done _loading = true // // when categories in-process _loading = true
// failed _loading = false // // done _loading = true
bool _loading; // // failed _loading = false
// bool _loading;
bool get isLoading => _loading; //
// bool get isLoading => _loading;
set isLoading(bool isLoading) { //
_loading = isLoading; // set isLoading(bool isLoading) {
notifyListeners(); // _loading = isLoading;
} // notifyListeners();
// }
/// return -2 if request in progress //
/// return -1 if error happen when sending request // /// return -2 if request in progress
/// return state code if request complete may be 200, 404 or 403 // /// return -1 if error happen when sending request
/// for more details check http state manager // /// return state code if request complete may be 200, 404 or 403
/// lib\controllers\http_status_manger\http_status_manger.dart // /// for more details check http state manager
Future<int> getTypes({String host, User user}) async { // /// lib\controllers\http_status_manger\http_status_manger.dart
if (_loading == true) return -2; // Future<int> getTypes({String host, User user}) async {
_loading = true; // if (_loading == true) return -2;
notifyListeners(); // _loading = true;
Response response; // notifyListeners();
try { // Response response;
response = await ApiManager.instance.get(URLs.equipmentStatus); // try {
// response = await ApiManager.instance.get(URLs.equipmentStatus);
_stateCode = response.statusCode; //
if (response.statusCode >= 200 && response.statusCode < 300) { // _stateCode = response.statusCode;
// client's request was successfully received // if (response.statusCode >= 200 && response.statusCode < 300) {
List categoriesListJson = json.decode(response.body)["data"]; // // client's request was successfully received
_status = categoriesListJson.map((type) => Lookup.fromJson(type)).toList(); // List categoriesListJson = json.decode(response.body)["data"];
} // _status = categoriesListJson.map((type) => Lookup.fromJson(type)).toList();
_loading = false; // }
notifyListeners(); // _loading = false;
return response.statusCode; // notifyListeners();
} catch (error) { // return response.statusCode;
_loading = false; // } catch (error) {
_stateCode = -1; // _loading = false;
notifyListeners(); // _stateCode = -1;
return -1; // notifyListeners();
} // return -1;
} // }
} // }
// }

@ -1,79 +1,80 @@
import 'dart:convert'; ///todo deleted
// import 'dart:convert';
import 'package:flutter/cupertino.dart'; //
import 'package:flutter/material.dart'; // import 'package:flutter/cupertino.dart';
import 'package:http/http.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/controllers/api_routes/api_manager.dart'; // import 'package:http/http.dart';
import 'package:test_sa/controllers/api_routes/urls.dart'; // import 'package:test_sa/controllers/api_routes/api_manager.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/controllers/api_routes/urls.dart';
// import 'package:test_sa/models/lookup.dart';
class ServiceReportMaintenanceSituationProvider extends ChangeNotifier { //
//reset provider data // class ServiceReportMaintenanceSituationProvider extends ChangeNotifier {
void reset() { // //reset provider data
_calls = null; // void reset() {
_loading = null; // _calls = null;
_stateCode = null; // _loading = null;
} // _stateCode = null;
// }
// state code of current request to defied error message //
// like 400 customer request failed // // state code of current request to defied error message
// 500 service not available // // like 400 customer request failed
int _stateCode; // // 500 service not available
// int _stateCode;
int get stateCode => _stateCode; //
// int get stateCode => _stateCode;
// contain user data //
// when user not login or register _user = null // // contain user data
List<Lookup> _calls; // // when user not login or register _user = null
// List<Lookup> _calls;
List<Lookup> get operators => _calls; //
// List<Lookup> get operators => _calls;
// when categories in-process _loading = true //
// done _loading = true // // when categories in-process _loading = true
// failed _loading = false // // done _loading = true
bool _loading; // // failed _loading = false
// bool _loading;
bool get isLoading => _loading; //
// bool get isLoading => _loading;
set isLoading(bool isLoading) { //
_loading = isLoading; // set isLoading(bool isLoading) {
notifyListeners(); // _loading = isLoading;
} // notifyListeners();
// }
/// return -2 if request in progress //
/// return -1 if error happen when sending request // /// return -2 if request in progress
/// return state code if request complete may be 200, 404 or 403 // /// return -1 if error happen when sending request
/// for more details check http state manager // /// return state code if request complete may be 200, 404 or 403
/// lib\controllers\http_status_manger\http_status_manger.dart // /// for more details check http state manager
Future<int> getOperators(String woId) async { // /// lib\controllers\http_status_manger\http_status_manger.dart
if (_loading == true) return -2; // Future<int> getOperators(String woId) async {
_loading = true; // if (_loading == true) return -2;
notifyListeners(); // _loading = true;
Response response; // notifyListeners();
try { // Response response;
response = await ApiManager.instance.get( // try {
woId == null ? "${URLs.getMaintenanceSituation}" : "${URLs.getServiceReportLastCalls}?parentWOId=$woId&isAdd=true&id=${0}&typeTransaction='Nothing'", // response = await ApiManager.instance.get(
); // woId == null ? "${URLs.getMaintenanceSituation}" : "${URLs.getServiceReportLastCalls}?parentWOId=$woId&isAdd=true&id=${0}&typeTransaction='Nothing'",
// response = await get(
// Uri.parse(
// URLs.getServiceReportLastCalls
// +(serviceStatus == null ? "" : "?service_status=$serviceStatus")
// ),
// ); // );
_stateCode = response.statusCode; // // response = await get(
if (response.statusCode >= 200 && response.statusCode < 300) { // // Uri.parse(
// client's request was successfully received // // URLs.getServiceReportLastCalls
List categoriesListJson = json.decode(response.body)["data"]; // // +(serviceStatus == null ? "" : "?service_status=$serviceStatus")
_calls = categoriesListJson.map((type) => Lookup.fromJson(type)).toList(); // // ),
} // // );
_loading = false; // _stateCode = response.statusCode;
notifyListeners(); // if (response.statusCode >= 200 && response.statusCode < 300) {
return response.statusCode; // // client's request was successfully received
} catch (error) { // List categoriesListJson = json.decode(response.body)["data"];
_loading = false; // _calls = categoriesListJson.map((type) => Lookup.fromJson(type)).toList();
_stateCode = -1; // }
notifyListeners(); // _loading = false;
return -1; // notifyListeners();
} // return response.statusCode;
} // } catch (error) {
} // _loading = false;
// _stateCode = -1;
// notifyListeners();
// return -1;
// }
// }
// }

@ -1,75 +1,76 @@
import 'dart:convert'; ///todo deleted
// import 'dart:convert';
import 'package:flutter/cupertino.dart'; //
import 'package:flutter/material.dart'; // import 'package:flutter/cupertino.dart';
import 'package:http/http.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/controllers/api_routes/api_manager.dart'; // import 'package:http/http.dart';
import 'package:test_sa/controllers/api_routes/urls.dart'; // import 'package:test_sa/controllers/api_routes/api_manager.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/models/user.dart'; // import 'package:test_sa/models/lookup.dart';
// import 'package:test_sa/models/user.dart';
@Deprecated("Use the one inside lib/providers folder") //
class ServiceRequestPriorityProvider extends ChangeNotifier { // @Deprecated("Use the one inside lib/providers folder")
//reset provider data // class ServiceRequestPriorityProvider extends ChangeNotifier {
void reset() { // //reset provider data
_items = null; // void reset() {
_stateCode = null; // _items = null;
} // _stateCode = null;
// }
// state code of current request to defied error message //
// like 400 customer request failed // // state code of current request to defied error message
// 500 service not available // // like 400 customer request failed
int _stateCode; // // 500 service not available
// int _stateCode;
int get stateCode => _stateCode; //
// int get stateCode => _stateCode;
// contain user data //
// when user not login or register _user = null // // contain user data
List<Lookup> _items; // // when user not login or register _user = null
// List<Lookup> _items;
List<Lookup> get items => _items; //
// List<Lookup> get items => _items;
// when categories in-process _loading = true //
// done _loading = true // // when categories in-process _loading = true
// failed _loading = false // // done _loading = true
bool _loading; // // failed _loading = false
// bool _loading;
bool get isLoading => _loading; //
// bool get isLoading => _loading;
set isLoading(bool isLoading) { //
_loading = isLoading; // set isLoading(bool isLoading) {
notifyListeners(); // _loading = isLoading;
} // notifyListeners();
// }
/// return -2 if request in progress //
/// return -1 if error happen when sending request // /// return -2 if request in progress
/// return state code if request complete may be 200, 404 or 403 // /// return -1 if error happen when sending request
/// for more details check http state manager // /// return state code if request complete may be 200, 404 or 403
/// lib\controllers\http_status_manger\http_status_manger.dart // /// for more details check http state manager
Future<int> getData({String host, User user}) async { // /// lib\controllers\http_status_manger\http_status_manger.dart
if (_loading == true) return -2; // Future<int> getData({String host, User user}) async {
_loading = true; // if (_loading == true) return -2;
notifyListeners(); // _loading = true;
Response response; // notifyListeners();
try { // Response response;
response = await ApiManager.instance.get( // try {
URLs.getServiceReportPriority, // response = await ApiManager.instance.get(
); // URLs.getServiceReportPriority,
// );
_stateCode = response.statusCode; //
if (response.statusCode >= 200 && response.statusCode < 300) { // _stateCode = response.statusCode;
// client's request was successfully received // if (response.statusCode >= 200 && response.statusCode < 300) {
List listJson = json.decode(response.body)["data"]; // // client's request was successfully received
_items = listJson.map((type) => Lookup.fromJson(type)).toList(); // List listJson = json.decode(response.body)["data"];
} // _items = listJson.map((type) => Lookup.fromJson(type)).toList();
_loading = false; // }
notifyListeners(); // _loading = false;
return response.statusCode; // notifyListeners();
} catch (error) { // return response.statusCode;
_loading = false; // } catch (error) {
_stateCode = -1; // _loading = false;
notifyListeners(); // _stateCode = -1;
return -1; // notifyListeners();
} // return -1;
} // }
} // }
// }

@ -1,73 +1,74 @@
import 'dart:convert'; ///todo deleted
// import 'dart:convert';
import 'package:flutter/cupertino.dart'; //
import 'package:flutter/material.dart'; // import 'package:flutter/cupertino.dart';
import 'package:http/http.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/controllers/api_routes/api_manager.dart'; // import 'package:http/http.dart';
import 'package:test_sa/controllers/api_routes/urls.dart'; // import 'package:test_sa/controllers/api_routes/api_manager.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/models/user.dart'; // import 'package:test_sa/models/lookup.dart';
// import 'package:test_sa/models/user.dart';
class ServiceReportReasonsProvider extends ChangeNotifier { //
//reset provider data // class ServiceReportReasonsProvider extends ChangeNotifier {
void reset() { // //reset provider data
_reasons = null; // void reset() {
_stateCode = null; // _reasons = null;
} // _stateCode = null;
// }
// state code of current request to defied error message //
// like 400 customer request failed // // state code of current request to defied error message
// 500 service not available // // like 400 customer request failed
int _stateCode; // // 500 service not available
// int _stateCode;
int get stateCode => _stateCode; //
// int get stateCode => _stateCode;
// contain user data //
// when user not login or register _user = null // // contain user data
List<Lookup> _reasons; // // when user not login or register _user = null
// List<Lookup> _reasons;
List<Lookup> get reasons => _reasons; //
// List<Lookup> get reasons => _reasons;
// when categories in-process _loading = true //
// done _loading = true // // when categories in-process _loading = true
// failed _loading = false // // done _loading = true
bool _loading; // // failed _loading = false
// bool _loading;
bool get isLoading => _loading; //
// bool get isLoading => _loading;
set isLoading(bool isLoading) { //
_loading = isLoading; // set isLoading(bool isLoading) {
notifyListeners(); // _loading = isLoading;
} // notifyListeners();
// }
/// return -2 if request in progress //
/// return -1 if error happen when sending request // /// return -2 if request in progress
/// return state code if request complete may be 200, 404 or 403 // /// return -1 if error happen when sending request
/// for more details check http state manager // /// return state code if request complete may be 200, 404 or 403
/// lib\controllers\http_status_manger\http_status_manger.dart // /// for more details check http state manager
Future<int> getTypes({String host, User user}) async { // /// lib\controllers\http_status_manger\http_status_manger.dart
if (_loading == true) return -2; // Future<int> getTypes({String host, User user}) async {
_loading = true; // if (_loading == true) return -2;
notifyListeners(); // _loading = true;
Response response; // notifyListeners();
try { // Response response;
response = await ApiManager.instance.get( // try {
URLs.getServiceReportReasons+"&serviceRequestId=72355", // response = await ApiManager.instance.get(
); // URLs.getServiceReportReasons+"&serviceRequestId=72355",
_stateCode = response.statusCode; // );
if (response.statusCode >= 200 && response.statusCode < 300) { // _stateCode = response.statusCode;
// client's request was successfully received // if (response.statusCode >= 200 && response.statusCode < 300) {
List categoriesListJson = json.decode(response.body)["data"]; // // client's request was successfully received
_reasons = categoriesListJson.map((type) => Lookup.fromJson(type)).toList(); // List categoriesListJson = json.decode(response.body)["data"];
} // _reasons = categoriesListJson.map((type) => Lookup.fromJson(type)).toList();
_loading = false; // }
notifyListeners(); // _loading = false;
return response.statusCode; // notifyListeners();
} catch (error) { // return response.statusCode;
_loading = false; // } catch (error) {
_stateCode = -1; // _loading = false;
notifyListeners(); // _stateCode = -1;
return -1; // notifyListeners();
} // return -1;
} // }
} // }
// }

@ -1,74 +1,75 @@
import 'dart:convert'; ///todo deleted
// import 'dart:convert';
import 'package:flutter/cupertino.dart'; //
import 'package:flutter/material.dart'; // import 'package:flutter/cupertino.dart';
import 'package:http/http.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/controllers/api_routes/api_manager.dart'; // import 'package:http/http.dart';
import 'package:test_sa/controllers/api_routes/urls.dart'; // import 'package:test_sa/controllers/api_routes/api_manager.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/models/user.dart'; // import 'package:test_sa/models/lookup.dart';
// import 'package:test_sa/models/user.dart';
class ServiceReportStatusProvider extends ChangeNotifier { //
//reset provider data // class ServiceReportStatusProvider extends ChangeNotifier {
void reset() { // //reset provider data
_status = null; // void reset() {
_stateCode = null; // _status = null;
} // _stateCode = null;
// }
// state code of current request to defied error message //
// like 400 customer request failed // // state code of current request to defied error message
// 500 service not available // // like 400 customer request failed
int _stateCode; // // 500 service not available
// int _stateCode;
int get stateCode => _stateCode; //
// int get stateCode => _stateCode;
// contain user data //
// when user not login or register _user = null // // contain user data
List<Lookup> _status; // // when user not login or register _user = null
// List<Lookup> _status;
List<Lookup> get statuses => _status; //
// List<Lookup> get statuses => _status;
// when categories in-process _loading = true //
// done _loading = true // // when categories in-process _loading = true
// failed _loading = false // // done _loading = true
bool _loading; // // failed _loading = false
// bool _loading;
bool get isLoading => _loading; //
// bool get isLoading => _loading;
set isLoading(bool isLoading) { //
_loading = isLoading; // set isLoading(bool isLoading) {
notifyListeners(); // _loading = isLoading;
} // notifyListeners();
// }
/// return -2 if request in progress //
/// return -1 if error happen when sending request // /// return -2 if request in progress
/// return state code if request complete may be 200, 404 or 403 // /// return -1 if error happen when sending request
/// for more details check http state manager // /// return state code if request complete may be 200, 404 or 403
/// lib\controllers\http_status_manger\http_status_manger.dart // /// for more details check http state manager
Future<int> getTypes({String host, User user}) async { // /// lib\controllers\http_status_manger\http_status_manger.dart
if (_loading == true) return -2; // Future<int> getTypes({String host, User user}) async {
_loading = true; // if (_loading == true) return -2;
notifyListeners(); // _loading = true;
Response response; // notifyListeners();
try { // Response response;
response = await ApiManager.instance.get( // try {
URLs.getServiceReportStatus, // response = await ApiManager.instance.get(
); // URLs.getServiceReportStatus,
// );
_stateCode = response.statusCode; //
if (response.statusCode >= 200 && response.statusCode < 300) { // _stateCode = response.statusCode;
// client's request was successfully received // if (response.statusCode >= 200 && response.statusCode < 300) {
List categoriesListJson = json.decode(response.body)["data"]; // // client's request was successfully received
_status = categoriesListJson.map((type) => Lookup.fromJson(type)).toList(); // List categoriesListJson = json.decode(response.body)["data"];
} // _status = categoriesListJson.map((type) => Lookup.fromJson(type)).toList();
_loading = false; // }
notifyListeners(); // _loading = false;
return response.statusCode; // notifyListeners();
} catch (error) { // return response.statusCode;
_loading = false; // } catch (error) {
_stateCode = -1; // _loading = false;
notifyListeners(); // _stateCode = -1;
return -1; // notifyListeners();
} // return -1;
} // }
} // }
// }

@ -1,73 +1,74 @@
import 'dart:convert'; ///todo deleted
// import 'dart:convert';
import 'package:flutter/cupertino.dart'; //
import 'package:flutter/material.dart'; // import 'package:flutter/cupertino.dart';
import 'package:http/http.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/controllers/api_routes/api_manager.dart'; // import 'package:http/http.dart';
import 'package:test_sa/controllers/api_routes/urls.dart'; // import 'package:test_sa/controllers/api_routes/api_manager.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/models/user.dart'; // import 'package:test_sa/models/lookup.dart';
// import 'package:test_sa/models/user.dart';
class ServiceReportTypesProvider extends ChangeNotifier { //
//reset provider data // class ServiceReportTypesProvider extends ChangeNotifier {
void reset() { // //reset provider data
_types = null; // void reset() {
_stateCode = null; // _types = null;
} // _stateCode = null;
// }
// state code of current request to defied error message //
// like 400 customer request failed // // state code of current request to defied error message
// 500 service not available // // like 400 customer request failed
int _stateCode; // // 500 service not available
// int _stateCode;
int get stateCode => _stateCode; //
// int get stateCode => _stateCode;
// contain user data //
// when user not login or register _user = null // // contain user data
List<Lookup> _types; // // when user not login or register _user = null
// List<Lookup> _types;
List<Lookup> get types => _types; //
// List<Lookup> get types => _types;
// when categories in-process _loading = true //
// done _loading = true // // when categories in-process _loading = true
// failed _loading = false // // done _loading = true
bool _loading; // // failed _loading = false
// bool _loading;
bool get isLoading => _loading; //
// bool get isLoading => _loading;
set isLoading(bool isLoading) { //
_loading = isLoading; // set isLoading(bool isLoading) {
notifyListeners(); // _loading = isLoading;
} // notifyListeners();
// }
/// return -2 if request in progress //
/// return -1 if error happen when sending request // /// return -2 if request in progress
/// return state code if request complete may be 200, 404 or 403 // /// return -1 if error happen when sending request
/// for more details check http state manager // /// return state code if request complete may be 200, 404 or 403
/// lib\controllers\http_status_manger\http_status_manger.dart // /// for more details check http state manager
Future<int> getTypes({String host, User user}) async { // /// lib\controllers\http_status_manger\http_status_manger.dart
if (_loading == true) return -2; // Future<int> getTypes({String host, User user}) async {
_loading = true; // if (_loading == true) return -2;
notifyListeners(); // _loading = true;
Response response; // notifyListeners();
try { // Response response;
response = await ApiManager.instance.get( // try {
URLs.getServiceReportTypes, // response = await ApiManager.instance.get(
); // URLs.getServiceReportTypes,
_stateCode = response.statusCode; // );
if (response.statusCode >= 200 && response.statusCode < 300) { // _stateCode = response.statusCode;
// client's request was successfully received // if (response.statusCode >= 200 && response.statusCode < 300) {
List categoriesListJson = json.decode(response.body)["data"]; // // client's request was successfully received
_types = categoriesListJson.map((type) => Lookup.fromJson(type)).toList(); // List categoriesListJson = json.decode(response.body)["data"];
} // _types = categoriesListJson.map((type) => Lookup.fromJson(type)).toList();
_loading = false; // }
notifyListeners(); // _loading = false;
return response.statusCode; // notifyListeners();
} catch (error) { // return response.statusCode;
_loading = false; // } catch (error) {
_stateCode = -1; // _loading = false;
notifyListeners(); // _stateCode = -1;
return -1; // notifyListeners();
} // return -1;
} // }
} // }
// }

@ -1,77 +1,78 @@
import 'dart:convert'; ///todo deleted
// import 'dart:convert';
import 'package:flutter/cupertino.dart'; //
import 'package:flutter/material.dart'; // import 'package:flutter/cupertino.dart';
import 'package:http/http.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/controllers/api_routes/api_manager.dart'; // import 'package:http/http.dart';
import 'package:test_sa/controllers/api_routes/urls.dart'; // import 'package:test_sa/controllers/api_routes/api_manager.dart';
import 'package:test_sa/models/employee.dart'; // import 'package:test_sa/controllers/api_routes/urls.dart';
// import 'package:test_sa/models/employee.dart';
class ServiceReportUsersProvider extends ChangeNotifier { //
//reset provider data // class ServiceReportUsersProvider extends ChangeNotifier {
void reset() { // //reset provider data
_engineers = null; // void reset() {
_loading = null; // _engineers = null;
_stateCode = null; // _loading = null;
} // _stateCode = null;
// }
// state code of current request to defied error message //
// like 400 customer request failed // // state code of current request to defied error message
// 500 service not available // // like 400 customer request failed
int _stateCode; // // 500 service not available
// int _stateCode;
int get stateCode => _stateCode; //
// int get stateCode => _stateCode;
// contain user data //
// when user not login or register _user = null // // contain user data
List<Employee> _engineers; // // when user not login or register _user = null
// List<Employee> _engineers;
List<Employee> get engineers => _engineers; //
// List<Employee> get engineers => _engineers;
// when categories in-process _loading = true //
// done _loading = true // // when categories in-process _loading = true
// failed _loading = false // // done _loading = true
bool _loading; // // failed _loading = false
// bool _loading;
bool get isLoading => _loading; //
// bool get isLoading => _loading;
set isLoading(bool isLoading) { //
_loading = isLoading; // set isLoading(bool isLoading) {
notifyListeners(); // _loading = isLoading;
} // notifyListeners();
// }
/// return -2 if request in progress //
/// return -1 if error happen when sending request // /// return -2 if request in progress
/// return state code if request complete may be 200, 404 or 403 // /// return -1 if error happen when sending request
/// for more details check http state manager // /// return state code if request complete may be 200, 404 or 403
/// lib\controllers\http_status_manger\http_status_manger.dart // /// for more details check http state manager
Future<int> getAllUsers() async { // /// lib\controllers\http_status_manger\http_status_manger.dart
if (_loading == true) return -2; // Future<int> getAllUsers() async {
_loading = true; // if (_loading == true) return -2;
notifyListeners(); // _loading = true;
Response response; // notifyListeners();
try { // Response response;
response = await ApiManager.instance.get("${URLs.getEngineers}"); // try {
// response = await get( // response = await ApiManager.instance.get("${URLs.getEngineers}");
// Uri.parse( // // response = await get(
// URLs.getServiceReportLastCalls // // Uri.parse(
// +(serviceStatus == null ? "" : "?service_status=$serviceStatus") // // URLs.getServiceReportLastCalls
// ), // // +(serviceStatus == null ? "" : "?service_status=$serviceStatus")
// ); // // ),
_stateCode = response.statusCode; // // );
if (response.statusCode >= 200 && response.statusCode < 300) { // _stateCode = response.statusCode;
// client's request was successfully received // if (response.statusCode >= 200 && response.statusCode < 300) {
List usersListJson = json.decode(response.body); // // client's request was successfully received
_engineers = usersListJson.map((type) => Employee.fromJson(type)).toList(); // List usersListJson = json.decode(response.body);
} // _engineers = usersListJson.map((type) => Employee.fromJson(type)).toList();
_loading = false; // }
notifyListeners(); // _loading = false;
return response.statusCode; // notifyListeners();
} catch (error) { // return response.statusCode;
_loading = false; // } catch (error) {
_stateCode = -1; // _loading = false;
notifyListeners(); // _stateCode = -1;
return -1; // notifyListeners();
} // return -1;
} // }
} // }
// }

@ -1,79 +1,80 @@
import 'dart:convert'; ///todo deleted
// import 'dart:convert';
import 'package:flutter/cupertino.dart'; //
import 'package:flutter/material.dart'; // import 'package:flutter/cupertino.dart';
import 'package:http/http.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/controllers/api_routes/api_manager.dart'; // import 'package:http/http.dart';
import 'package:test_sa/controllers/api_routes/urls.dart'; // import 'package:test_sa/controllers/api_routes/api_manager.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/controllers/api_routes/urls.dart';
// import 'package:test_sa/models/lookup.dart';
class ServiceReportVisitOperatorProvider extends ChangeNotifier { //
//reset provider data // class ServiceReportVisitOperatorProvider extends ChangeNotifier {
void reset() { // //reset provider data
_calls = null; // void reset() {
_loading = null; // _calls = null;
_stateCode = null; // _loading = null;
} // _stateCode = null;
// }
// state code of current request to defied error message //
// like 400 customer request failed // // state code of current request to defied error message
// 500 service not available // // like 400 customer request failed
int _stateCode; // // 500 service not available
// int _stateCode;
int get stateCode => _stateCode; //
// int get stateCode => _stateCode;
// contain user data //
// when user not login or register _user = null // // contain user data
List<Lookup> _calls; // // when user not login or register _user = null
// List<Lookup> _calls;
List<Lookup> get operators => _calls; //
// List<Lookup> get operators => _calls;
// when categories in-process _loading = true //
// done _loading = true // // when categories in-process _loading = true
// failed _loading = false // // done _loading = true
bool _loading; // // failed _loading = false
// bool _loading;
bool get isLoading => _loading; //
// bool get isLoading => _loading;
set isLoading(bool isLoading) { //
_loading = isLoading; // set isLoading(bool isLoading) {
notifyListeners(); // _loading = isLoading;
} // notifyListeners();
// }
/// return -2 if request in progress //
/// return -1 if error happen when sending request // /// return -2 if request in progress
/// return state code if request complete may be 200, 404 or 403 // /// return -1 if error happen when sending request
/// for more details check http state manager // /// return state code if request complete may be 200, 404 or 403
/// lib\controllers\http_status_manger\http_status_manger.dart // /// for more details check http state manager
Future<int> getOperators() async { // /// lib\controllers\http_status_manger\http_status_manger.dart
if (_loading == true) return -2; // Future<int> getOperators() async {
_loading = true; // if (_loading == true) return -2;
notifyListeners(); // _loading = true;
Response response; // notifyListeners();
try { // Response response;
response = await ApiManager.instance.get( // try {
"${URLs.getDateOperators}", // response = await ApiManager.instance.get(
); // "${URLs.getDateOperators}",
// response = await get(
// Uri.parse(
// URLs.getServiceReportLastCalls
// +(serviceStatus == null ? "" : "?service_status=$serviceStatus")
// ),
// ); // );
_stateCode = response.statusCode; // // response = await get(
if (response.statusCode >= 200 && response.statusCode < 300) { // // Uri.parse(
// client's request was successfully received // // URLs.getServiceReportLastCalls
List categoriesListJson = json.decode(response.body)["data"]; // // +(serviceStatus == null ? "" : "?service_status=$serviceStatus")
_calls = categoriesListJson.map((type) => Lookup.fromJson(type)).toList(); // // ),
} // // );
_loading = false; // _stateCode = response.statusCode;
notifyListeners(); // if (response.statusCode >= 200 && response.statusCode < 300) {
return response.statusCode; // // client's request was successfully received
} catch (error) { // List categoriesListJson = json.decode(response.body)["data"];
_loading = false; // _calls = categoriesListJson.map((type) => Lookup.fromJson(type)).toList();
_stateCode = -1; // }
notifyListeners(); // _loading = false;
return -1; // notifyListeners();
} // return response.statusCode;
} // } catch (error) {
} // _loading = false;
// _stateCode = -1;
// notifyListeners();
// return -1;
// }
// }
// }

@ -1,73 +1,74 @@
import 'dart:convert'; ///todo deleted
// import 'dart:convert';
import 'package:flutter/cupertino.dart'; //
import 'package:flutter/material.dart'; // import 'package:flutter/cupertino.dart';
import 'package:http/http.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/controllers/api_routes/api_manager.dart'; // import 'package:http/http.dart';
import 'package:test_sa/controllers/api_routes/urls.dart'; // import 'package:test_sa/controllers/api_routes/api_manager.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/models/user.dart'; // import 'package:test_sa/models/lookup.dart';
// import 'package:test_sa/models/user.dart';
class ServiceFirstActionProvider extends ChangeNotifier { //
//reset provider data // class ServiceFirstActionProvider extends ChangeNotifier {
void reset() { // //reset provider data
_statuses = null; // void reset() {
_stateCode = null; // _statuses = null;
} // _stateCode = null;
// }
// state code of current request to defied error message //
// like 400 customer request failed // // state code of current request to defied error message
// 500 service not available // // like 400 customer request failed
int _stateCode; // // 500 service not available
// int _stateCode;
int get stateCode => _stateCode; //
// int get stateCode => _stateCode;
// contain user data //
// when user not login or register _user = null // // contain user data
List<Lookup> _statuses; // // when user not login or register _user = null
// List<Lookup> _statuses;
List<Lookup> get items => _statuses; //
// List<Lookup> get items => _statuses;
// when categories in-process _loading = true //
// done _loading = true // // when categories in-process _loading = true
// failed _loading = false // // done _loading = true
bool _loading; // // failed _loading = false
// bool _loading;
bool get isLoading => _loading; //
// bool get isLoading => _loading;
set isLoading(bool isLoading) { //
_loading = isLoading; // set isLoading(bool isLoading) {
notifyListeners(); // _loading = isLoading;
} // notifyListeners();
// }
/// return -2 if request in progress //
/// return -1 if error happen when sending request // /// return -2 if request in progress
/// return state code if request complete may be 200, 404 or 403 // /// return -1 if error happen when sending request
/// for more details check http state manager // /// return state code if request complete may be 200, 404 or 403
/// lib\controllers\http_status_manger\http_status_manger.dart // /// for more details check http state manager
Future<int> getData({String host, User user}) async { // /// lib\controllers\http_status_manger\http_status_manger.dart
if (_loading == true) return -2; // Future<int> getData({String host, User user}) async {
_loading = true; // if (_loading == true) return -2;
notifyListeners(); // _loading = true;
Response response; // notifyListeners();
try { // Response response;
response = await ApiManager.instance.get( // try {
URLs.getServiceFirstAction, // response = await ApiManager.instance.get(
); // URLs.getServiceFirstAction,
_stateCode = response.statusCode; // );
if (response.statusCode >= 200 && response.statusCode < 300) { // _stateCode = response.statusCode;
// client's request was successfully received // if (response.statusCode >= 200 && response.statusCode < 300) {
List categoriesListJson = json.decode(response.body)["data"]; // // client's request was successfully received
_statuses = categoriesListJson.map((e) => Lookup.fromJson(e)).toList(); // List categoriesListJson = json.decode(response.body)["data"];
} // _statuses = categoriesListJson.map((e) => Lookup.fromJson(e)).toList();
_loading = false; // }
notifyListeners(); // _loading = false;
return response.statusCode; // notifyListeners();
} catch (error) { // return response.statusCode;
_loading = false; // } catch (error) {
_stateCode = -1; // _loading = false;
notifyListeners(); // _stateCode = -1;
return -1; // notifyListeners();
} // return -1;
} // }
} // }
// }

@ -1,3 +1,5 @@
///todo deleted
/// Loan availability not required /// Loan availability not required
// import 'dart:convert'; // import 'dart:convert';
// //

@ -1,73 +1,74 @@
import 'dart:convert'; ///todo deleted
// import 'dart:convert';
import 'package:flutter/cupertino.dart'; //
import 'package:flutter/material.dart'; // import 'package:flutter/cupertino.dart';
import 'package:http/http.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/controllers/api_routes/api_manager.dart'; // import 'package:http/http.dart';
import 'package:test_sa/controllers/api_routes/urls.dart'; // import 'package:test_sa/controllers/api_routes/api_manager.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/models/user.dart'; // import 'package:test_sa/models/lookup.dart';
// import 'package:test_sa/models/user.dart';
class ServiceRequestStatusProvider extends ChangeNotifier { //
//reset provider data // class ServiceRequestStatusProvider extends ChangeNotifier {
void reset() { // //reset provider data
_statuses = null; // void reset() {
_stateCode = null; // _statuses = null;
} // _stateCode = null;
// }
// state code of current request to defied error message //
// like 400 customer request failed // // state code of current request to defied error message
// 500 service not available // // like 400 customer request failed
int _stateCode; // // 500 service not available
// int _stateCode;
int get stateCode => _stateCode; //
// int get stateCode => _stateCode;
// contain user data //
// when user not login or register _user = null // // contain user data
List<Lookup> _statuses; // // when user not login or register _user = null
// List<Lookup> _statuses;
List<Lookup> get items => _statuses; //
// List<Lookup> get items => _statuses;
// when categories in-process _loading = true //
// done _loading = true // // when categories in-process _loading = true
// failed _loading = false // // done _loading = true
bool _loading; // // failed _loading = false
// bool _loading;
bool get isLoading => _loading; //
// bool get isLoading => _loading;
set isLoading(bool isLoading) { //
_loading = isLoading; // set isLoading(bool isLoading) {
notifyListeners(); // _loading = isLoading;
} // notifyListeners();
// }
/// return -2 if request in progress //
/// return -1 if error happen when sending request // /// return -2 if request in progress
/// return state code if request complete may be 200, 404 or 403 // /// return -1 if error happen when sending request
/// for more details check http state manager // /// return state code if request complete may be 200, 404 or 403
/// lib\controllers\http_status_manger\http_status_manger.dart // /// for more details check http state manager
Future<int> getData({String host, User user}) async { // /// lib\controllers\http_status_manger\http_status_manger.dart
if (_loading == true) return -2; // Future<int> getData({String host, User user}) async {
_loading = true; // if (_loading == true) return -2;
notifyListeners(); // _loading = true;
Response response; // notifyListeners();
try { // Response response;
response = await ApiManager.instance.get( // try {
URLs.getServiceRequestStatus, // response = await ApiManager.instance.get(
); // URLs.getServiceRequestStatus,
_stateCode = response.statusCode; // );
if (response.statusCode >= 200 && response.statusCode < 300) { // _stateCode = response.statusCode;
// client's request was successfully received // if (response.statusCode >= 200 && response.statusCode < 300) {
List categoriesListJson = json.decode(response.body)["data"]; // // client's request was successfully received
_statuses = categoriesListJson.map((e) => Lookup.fromJson(e)).toList(); // List categoriesListJson = json.decode(response.body)["data"];
} // _statuses = categoriesListJson.map((e) => Lookup.fromJson(e)).toList();
_loading = false; // }
notifyListeners(); // _loading = false;
return response.statusCode; // notifyListeners();
} catch (error) { // return response.statusCode;
_loading = false; // } catch (error) {
_stateCode = -1; // _loading = false;
notifyListeners(); // _stateCode = -1;
return -1; // notifyListeners();
} // return -1;
} // }
} // }
// }

@ -1,77 +1,78 @@
import 'dart:convert'; ///todo deleted
// import 'dart:convert';
import 'package:flutter/cupertino.dart'; //
import 'package:flutter/material.dart'; // import 'package:flutter/cupertino.dart';
import 'package:http/http.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/controllers/api_routes/api_manager.dart'; // import 'package:http/http.dart';
import 'package:test_sa/controllers/api_routes/urls.dart'; // import 'package:test_sa/controllers/api_routes/api_manager.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/models/user.dart'; // import 'package:test_sa/models/lookup.dart';
// import 'package:test_sa/models/user.dart';
class ServiceRequestedThroughProvider extends ChangeNotifier { //
//reset provider data // class ServiceRequestedThroughProvider extends ChangeNotifier {
void reset() { // //reset provider data
_statuses = null; // void reset() {
_stateCode = null; // _statuses = null;
} // _stateCode = null;
// }
// state code of current request to defied error message //
// like 400 customer request failed // // state code of current request to defied error message
// 500 service not available // // like 400 customer request failed
int _stateCode; // // 500 service not available
// int _stateCode;
int get stateCode => _stateCode; //
// int get stateCode => _stateCode;
// contain user data //
// when user not login or register _user = null // // contain user data
List<Lookup> _statuses; // // when user not login or register _user = null
// List<Lookup> _statuses;
List<Lookup> get items => _statuses; //
// List<Lookup> get items => _statuses;
// when categories in-process _loading = true //
// done _loading = true // // when categories in-process _loading = true
// failed _loading = false // // done _loading = true
bool _loading; // // failed _loading = false
// bool _loading;
bool get isLoading => _loading; //
// bool get isLoading => _loading;
set isLoading(bool isLoading) { //
_loading = isLoading; // set isLoading(bool isLoading) {
notifyListeners(); // _loading = isLoading;
} // notifyListeners();
// }
/// return -2 if request in progress //
/// return -1 if error happen when sending request // /// return -2 if request in progress
/// return state code if request complete may be 200, 404 or 403 // /// return -1 if error happen when sending request
/// for more details check http state manager // /// return state code if request complete may be 200, 404 or 403
/// lib\controllers\http_status_manger\http_status_manger.dart // /// for more details check http state manager
Future<int> getData({String host, User user}) async { // /// lib\controllers\http_status_manger\http_status_manger.dart
if (_loading == true) return -2; // Future<int> getData({String host, User user}) async {
_loading = true; // if (_loading == true) return -2;
notifyListeners(); // _loading = true;
Response response; // notifyListeners();
try { // Response response;
response = await ApiManager.instance.get( // try {
URLs.getServiceRequestThrough, // response = await ApiManager.instance.get(
); // URLs.getServiceRequestThrough,
_stateCode = response.statusCode; // );
if (response.statusCode >= 200 && response.statusCode < 300) { // _stateCode = response.statusCode;
// client's request was successfully received // if (response.statusCode >= 200 && response.statusCode < 300) {
List categoriesListJson = json.decode(response.body)["data"]; // // client's request was successfully received
_statuses = categoriesListJson.map((e) => Lookup.fromJson(e)).toList(); // List categoriesListJson = json.decode(response.body)["data"];
} // _statuses = categoriesListJson.map((e) => Lookup.fromJson(e)).toList();
_loading = false; // }
notifyListeners(); // _loading = false;
return response.statusCode; // notifyListeners();
} catch (error) { // return response.statusCode;
_loading = false; // } catch (error) {
_stateCode = -1; // _loading = false;
notifyListeners(); // _stateCode = -1;
return -1; // notifyListeners();
} // return -1;
} // }
// }
Lookup getDefaultItem() { //
return items?.firstWhere((element) => element.name.toLowerCase().contains("app")); // Lookup getDefaultItem() {
} // return items?.firstWhere((element) => element.name.toLowerCase().contains("app"));
} // }
// }

@ -1,77 +1,78 @@
import 'dart:convert'; ///todo deleted
// import 'dart:convert';
import 'package:flutter/cupertino.dart'; //
import 'package:flutter/material.dart'; // import 'package:flutter/cupertino.dart';
import 'package:http/http.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/controllers/api_routes/api_manager.dart'; // import 'package:http/http.dart';
import 'package:test_sa/controllers/api_routes/urls.dart'; // import 'package:test_sa/controllers/api_routes/api_manager.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/models/user.dart'; // import 'package:test_sa/models/lookup.dart';
// import 'package:test_sa/models/user.dart';
class ServiceRequestTypeProvider extends ChangeNotifier { //
//reset provider data // class ServiceRequestTypeProvider extends ChangeNotifier {
void reset() { // //reset provider data
_statuses = null; // void reset() {
_stateCode = null; // _statuses = null;
} // _stateCode = null;
// }
// state code of current request to defied error message //
// like 400 customer request failed // // state code of current request to defied error message
// 500 service not available // // like 400 customer request failed
int _stateCode; // // 500 service not available
// int _stateCode;
int get stateCode => _stateCode; //
// int get stateCode => _stateCode;
// contain user data //
// when user not login or register _user = null // // contain user data
List<Lookup> _statuses; // // when user not login or register _user = null
// List<Lookup> _statuses;
List<Lookup> get items => _statuses; //
// List<Lookup> get items => _statuses;
// when categories in-process _loading = true //
// done _loading = true // // when categories in-process _loading = true
// failed _loading = false // // done _loading = true
bool _loading; // // failed _loading = false
// bool _loading;
bool get isLoading => _loading; //
// bool get isLoading => _loading;
set isLoading(bool isLoading) { //
_loading = isLoading; // set isLoading(bool isLoading) {
notifyListeners(); // _loading = isLoading;
} // notifyListeners();
// }
/// return -2 if request in progress //
/// return -1 if error happen when sending request // /// return -2 if request in progress
/// return state code if request complete may be 200, 404 or 403 // /// return -1 if error happen when sending request
/// for more details check http state manager // /// return state code if request complete may be 200, 404 or 403
/// lib\controllers\http_status_manger\http_status_manger.dart // /// for more details check http state manager
Future<int> getData({String host, User user}) async { // /// lib\controllers\http_status_manger\http_status_manger.dart
if (_loading == true) return -2; // Future<int> getData({String host, User user}) async {
_loading = true; // if (_loading == true) return -2;
notifyListeners(); // _loading = true;
Response response; // notifyListeners();
try { // Response response;
response = await ApiManager.instance.get( // try {
URLs.getServiceRequestTypes, // response = await ApiManager.instance.get(
); // URLs.getServiceRequestTypes,
_stateCode = response.statusCode; // );
if (response.statusCode >= 200 && response.statusCode < 300) { // _stateCode = response.statusCode;
// client's request was successfully received // if (response.statusCode >= 200 && response.statusCode < 300) {
List categoriesListJson = json.decode(response.body)["data"]; // // client's request was successfully received
_statuses = categoriesListJson.map((e) => Lookup.fromJson(e)).toList(); // List categoriesListJson = json.decode(response.body)["data"];
} // _statuses = categoriesListJson.map((e) => Lookup.fromJson(e)).toList();
_loading = false; // }
notifyListeners(); // _loading = false;
return response.statusCode; // notifyListeners();
} catch (error) { // return response.statusCode;
_loading = false; // } catch (error) {
_stateCode = -1; // _loading = false;
notifyListeners(); // _stateCode = -1;
return -1; // notifyListeners();
} // return -1;
} // }
// }
Lookup getDefaultItem() { //
return items?.firstWhere((element) => element.name.toLowerCase().contains("maintenance")); // Lookup getDefaultItem() {
} // return items?.firstWhere((element) => element.name.toLowerCase().contains("maintenance"));
} // }
// }

@ -161,39 +161,52 @@ class MyApp extends StatelessWidget {
// ChangeNotifierProvider(create: (_) => PreventiveMaintenanceVisitsProvider()), // ChangeNotifierProvider(create: (_) => PreventiveMaintenanceVisitsProvider()),
ChangeNotifierProvider(create: (_) => PpmProvider()), ChangeNotifierProvider(create: (_) => PpmProvider()),
ChangeNotifierProvider(create: (_) => PartsProvider()), ChangeNotifierProvider(create: (_) => PartsProvider()),
ChangeNotifierProvider(create: (_) => ServiceReportReasonsProvider()), ///todo deleted
ChangeNotifierProvider(create: (_) => ServiceReportStatusProvider()), //ChangeNotifierProvider(create: (_) => ServiceReportReasonsProvider()),
ChangeNotifierProvider(create: (_) => ServiceReportEquipmentStatusProvider()), //ChangeNotifierProvider(create: (_) => ServiceReportStatusProvider()),
ChangeNotifierProvider(create: (_) => ServiceReportTypesProvider()), ///todo deleted
//ChangeNotifierProvider(create: (_) => ServiceReportEquipmentStatusProvider()),
//ChangeNotifierProvider(create: (_) => ServiceReportTypesProvider()),
ChangeNotifierProvider(create: (_) => ServiceStatusProvider()), ChangeNotifierProvider(create: (_) => ServiceStatusProvider()),
ChangeNotifierProvider(create: (_) => ServiceReportLastCallsProvider()), ChangeNotifierProvider(create: (_) => ServiceReportLastCallsProvider()),
ChangeNotifierProvider(create: (_) => GasCylinderSizesProvider()), ///todo deleted
ChangeNotifierProvider(create: (_) => GasCylinderTypesProvider()), //ChangeNotifierProvider(create: (_) => GasCylinderSizesProvider()),
///todo deleted
//ChangeNotifierProvider(create: (_) => GasCylinderTypesProvider()),
ChangeNotifierProvider(create: (_) => GasStatusProvider()), ChangeNotifierProvider(create: (_) => GasStatusProvider()),
ChangeNotifierProvider(create: (_) => GasTypesProvider()), ChangeNotifierProvider(create: (_) => GasTypesProvider()),
ChangeNotifierProvider(create: (_) => GasRefillProvider()), ChangeNotifierProvider(create: (_) => GasRefillProvider()),
ChangeNotifierProvider(create: (_) => AssetTransferProvider()), ChangeNotifierProvider(create: (_) => AssetTransferProvider()),
ChangeNotifierProvider(create: (_) => AssetTransferStatusProvider()), ChangeNotifierProvider(create: (_) => AssetTransferStatusProvider()),
ChangeNotifierProvider(create: (_) => AssignedToProvider()), ///todo deleted
ChangeNotifierProvider(create: (_) => PentryTaskStatusProvider()), //ChangeNotifierProvider(create: (_) => AssignedToProvider()),
ChangeNotifierProvider(create: (_) => PentryVisitStatusProvider()), ///todo deleted
ChangeNotifierProvider(create: (_) => PentryStatusProvider()), //ChangeNotifierProvider(create: (_) => PentryTaskStatusProvider()),
ChangeNotifierProvider(create: (_) => ServiceRequestPriorityProvider()), //ChangeNotifierProvider(create: (_) => PentryVisitStatusProvider()),
ChangeNotifierProvider(create: (_) => ServiceRequestDefectTypesProvider()), ///todo deleted
ChangeNotifierProvider(create: (_) => ServiceRequestTypeProvider()), //ChangeNotifierProvider(create: (_) => PentryStatusProvider()),
ChangeNotifierProvider(create: (_) => ServiceRequestedThroughProvider()), //ChangeNotifierProvider(create: (_) => ServiceRequestPriorityProvider()),
ChangeNotifierProvider(create: (_) => ServiceRequestStatusProvider()), ///todo deleted
ChangeNotifierProvider(create: (_) => EngineersProvider()), //ChangeNotifierProvider(create: (_) => ServiceRequestDefectTypesProvider()),
//ChangeNotifierProvider(create: (_) => ServiceRequestTypeProvider()),
///todo deleted
//ChangeNotifierProvider(create: (_) => ServiceRequestedThroughProvider()),
//ChangeNotifierProvider(create: (_) => ServiceRequestStatusProvider()),
///todo deleted
//ChangeNotifierProvider(create: (_) => EngineersProvider()),
ChangeNotifierProvider(create: (_) => SupplierEngineerProvider()), ChangeNotifierProvider(create: (_) => SupplierEngineerProvider()),
/// Loan availability not required /// Loan availability not required
// ChangeNotifierProvider(create: (_) => ServiceLoanAvailabilityProvider()), // ChangeNotifierProvider(create: (_) => ServiceLoanAvailabilityProvider()),
ChangeNotifierProvider(create: (_) => ServiceFirstActionProvider()), ///todo deleted
//ChangeNotifierProvider(create: (_) => ServiceFirstActionProvider()),
ChangeNotifierProvider(create: (_) => ServiceReportRepairLocationProvider()), ChangeNotifierProvider(create: (_) => ServiceReportRepairLocationProvider()),
ChangeNotifierProvider(create: (_) => ServiceRequestFaultDescriptionProvider()), ChangeNotifierProvider(create: (_) => ServiceRequestFaultDescriptionProvider()),
ChangeNotifierProvider(create: (_) => ServiceReportVisitOperatorProvider()), ///todo deleted
ChangeNotifierProvider(create: (_) => ServiceReportMaintenanceSituationProvider()), //ChangeNotifierProvider(create: (_) => ServiceReportVisitOperatorProvider()),
ChangeNotifierProvider(create: (_) => ServiceReportUsersProvider()), ///todo deleted
//ChangeNotifierProvider(create: (_) => ServiceReportMaintenanceSituationProvider()),
//ChangeNotifierProvider(create: (_) => ServiceReportUsersProvider()),
ChangeNotifierProvider(create: (_) => ServiceReportAssistantsEmployeeProvider()), ChangeNotifierProvider(create: (_) => ServiceReportAssistantsEmployeeProvider()),
ChangeNotifierProvider(create: (_) => PriorityProvider()), ChangeNotifierProvider(create: (_) => PriorityProvider()),
ChangeNotifierProvider(create: (_) => EquipmentStatusProvider()), ChangeNotifierProvider(create: (_) => EquipmentStatusProvider()),
@ -205,10 +218,12 @@ class MyApp extends StatelessWidget {
/// Loan availability not required /// Loan availability not required
ChangeNotifierProvider(create: (_) => LoanAvailabilityProvider()), ChangeNotifierProvider(create: (_) => LoanAvailabilityProvider()),
ChangeNotifierProvider(create: (_) => ReasonProvider()), ChangeNotifierProvider(create: (_) => ReasonProvider()),
ChangeNotifierProvider(create: (_) => AssetTypesProvider()), ///todo deleted
//ChangeNotifierProvider(create: (_) => AssetTypesProvider()),
ChangeNotifierProvider(create: (_) => ServiceTypeProvider()), ChangeNotifierProvider(create: (_) => ServiceTypeProvider()),
ChangeNotifierProvider(create: (_) => PPMVisitStatusProvider()), ChangeNotifierProvider(create: (_) => PPMVisitStatusProvider()),
ChangeNotifierProvider(create: (_) => PentryTaskStatusProvider()), ///todo deleted
//ChangeNotifierProvider(create: (_) => PentryTaskStatusProvider()),
ChangeNotifierProvider(create: (_) => PPMDeviceStatusProvider()), ChangeNotifierProvider(create: (_) => PPMDeviceStatusProvider()),
ChangeNotifierProvider(create: (_) => PpmAssetAvailabilityProvider()), ChangeNotifierProvider(create: (_) => PpmAssetAvailabilityProvider()),
ChangeNotifierProvider(create: (_) => PpmTaskStatusProvider()), ChangeNotifierProvider(create: (_) => PpmTaskStatusProvider()),
@ -216,7 +231,8 @@ class MyApp extends StatelessWidget {
ChangeNotifierProvider(create: (_) => PpmServiceProvider()), ChangeNotifierProvider(create: (_) => PpmServiceProvider()),
ChangeNotifierProvider(create: (_) => CommentsProvider()), ChangeNotifierProvider(create: (_) => CommentsProvider()),
ChangeNotifierProvider(create: (_) => GasRefillCommentsProvider()), ChangeNotifierProvider(create: (_) => GasRefillCommentsProvider()),
ChangeNotifierProvider(create: (_) => RequestStatusProvider()), ///todo deleted
//ChangeNotifierProvider(create: (_) => RequestStatusProvider()),
ChangeNotifierProvider(create: (_) => VendorProvider()), ChangeNotifierProvider(create: (_) => VendorProvider()),
ChangeNotifierProvider(create: (_) => PpmChecklistStatusProvider()), ChangeNotifierProvider(create: (_) => PpmChecklistStatusProvider()),
], ],
@ -239,7 +255,8 @@ class MyApp extends StatelessWidget {
routes: { routes: {
SplashPage.routeName: (_) => const SplashPage(), SplashPage.routeName: (_) => const SplashPage(),
LoginPage.routeName: (_) => const LoginPage(), LoginPage.routeName: (_) => const LoginPage(),
old.LandPage.id: (_) => const old.LandPage(), ///todo deleted
//old.LandPage.id: (_) => const old.LandPage(),
LandPage.routeName: (_) => const LandPage(), LandPage.routeName: (_) => const LandPage(),
NewGasRefillRequestPage.routeName: (_) => const NewGasRefillRequestPage(), NewGasRefillRequestPage.routeName: (_) => const NewGasRefillRequestPage(),
ServiceRequestsPage.id: (_) => ServiceRequestsPage(), ServiceRequestsPage.id: (_) => ServiceRequestsPage(),

@ -1,149 +1,150 @@
class Customer { ///todo deleted
List<Data> data; // class Customer {
String message; // List<Data> data;
String innerMessage; // String message;
int responseCode; // String innerMessage;
bool isSuccess; // int responseCode;
// bool isSuccess;
Customer({this.data, this.message, this.innerMessage, this.responseCode, this.isSuccess}); //
// Customer({this.data, this.message, this.innerMessage, this.responseCode, this.isSuccess});
Customer.fromJson(Map<String, dynamic> json) { //
if (json['data'] != null) { // Customer.fromJson(Map<String, dynamic> json) {
data = []; // if (json['data'] != null) {
json['data'].forEach((v) { // data = [];
data.add(new Data.fromJson(v)); // json['data'].forEach((v) {
}); // data.add(new Data.fromJson(v));
} // });
message = json['message']; // }
innerMessage = json['innerMessage']; // message = json['message'];
responseCode = json['responseCode']; // innerMessage = json['innerMessage'];
isSuccess = json['isSuccess']; // responseCode = json['responseCode'];
} // isSuccess = json['isSuccess'];
// }
Map<String, dynamic> toJson() { //
final Map<String, dynamic> data = new Map<String, dynamic>(); // Map<String, dynamic> toJson() {
if (this.data != null) { // final Map<String, dynamic> data = new Map<String, dynamic>();
data['data'] = this.data.map((v) => v.toJson()).toList(); // if (this.data != null) {
} // data['data'] = this.data.map((v) => v.toJson()).toList();
data['message'] = this.message; // }
data['innerMessage'] = this.innerMessage; // data['message'] = this.message;
data['responseCode'] = this.responseCode; // data['innerMessage'] = this.innerMessage;
data['isSuccess'] = this.isSuccess; // data['responseCode'] = this.responseCode;
return data; // data['isSuccess'] = this.isSuccess;
} // return data;
} // }
// }
class Data { //
int id; // class Data {
int customerCode; // int id;
String custName; // int customerCode;
List<Buildings> buildings; // String custName;
// List<Buildings> buildings;
Data({this.id, this.customerCode, this.custName, this.buildings}); //
// Data({this.id, this.customerCode, this.custName, this.buildings});
Data.fromJson(Map<String, dynamic> json) { //
id = json['id']; // Data.fromJson(Map<String, dynamic> json) {
customerCode = json['customerCode']; // id = json['id'];
custName = json['custName']; // customerCode = json['customerCode'];
if (json['buildings'] != null) { // custName = json['custName'];
buildings = []; // if (json['buildings'] != null) {
json['buildings'].forEach((v) { // buildings = [];
buildings.add(new Buildings.fromJson(v)); // json['buildings'].forEach((v) {
}); // buildings.add(new Buildings.fromJson(v));
} // });
} // }
// }
Map<String, dynamic> toJson() { //
final Map<String, dynamic> data = new Map<String, dynamic>(); // Map<String, dynamic> toJson() {
data['id'] = this.id; // final Map<String, dynamic> data = new Map<String, dynamic>();
data['customerCode'] = this.customerCode; // data['id'] = this.id;
data['custName'] = this.custName; // data['customerCode'] = this.customerCode;
if (this.buildings != null) { // data['custName'] = this.custName;
data['buildings'] = this.buildings.map((v) => v.toJson()).toList(); // if (this.buildings != null) {
} // data['buildings'] = this.buildings.map((v) => v.toJson()).toList();
return data; // }
} // return data;
} // }
// }
class Buildings { //
int id; // class Buildings {
String name; // int id;
int value; // String name;
List<Floors> floors; // int value;
// List<Floors> floors;
Buildings({this.id, this.name, this.value, this.floors}); //
// Buildings({this.id, this.name, this.value, this.floors});
Buildings.fromJson(Map<String, dynamic> json) { //
id = json['id']; // Buildings.fromJson(Map<String, dynamic> json) {
name = json['name']; // id = json['id'];
value = json['value']; // name = json['name'];
if (json['floors'] != null) { // value = json['value'];
floors = []; // if (json['floors'] != null) {
json['floors'].forEach((v) { // floors = [];
floors.add(new Floors.fromJson(v)); // json['floors'].forEach((v) {
}); // floors.add(new Floors.fromJson(v));
} // });
} // }
// }
Map<String, dynamic> toJson() { //
final Map<String, dynamic> data = new Map<String, dynamic>(); // Map<String, dynamic> toJson() {
data['id'] = this.id; // final Map<String, dynamic> data = new Map<String, dynamic>();
data['name'] = this.name; // data['id'] = this.id;
data['value'] = this.value; // data['name'] = this.name;
if (this.floors != null) { // data['value'] = this.value;
data['floors'] = this.floors.map((v) => v.toJson()).toList(); // if (this.floors != null) {
} // data['floors'] = this.floors.map((v) => v.toJson()).toList();
return data; // }
} // return data;
} // }
// }
class Floors { //
int id; // class Floors {
String name; // int id;
int value; // String name;
List<Departments> departments; // int value;
// List<Departments> departments;
Floors({this.id, this.name, this.value, this.departments}); //
// Floors({this.id, this.name, this.value, this.departments});
Floors.fromJson(Map<String, dynamic> json) { //
id = json['id']; // Floors.fromJson(Map<String, dynamic> json) {
name = json['name']; // id = json['id'];
value = json['value']; // name = json['name'];
if (json['departments'] != null) { // value = json['value'];
departments = []; // if (json['departments'] != null) {
json['departments'].forEach((v) { // departments = [];
departments.add(new Departments.fromJson(v)); // json['departments'].forEach((v) {
}); // departments.add(new Departments.fromJson(v));
} // });
} // }
// }
Map<String, dynamic> toJson() { //
final Map<String, dynamic> data = new Map<String, dynamic>(); // Map<String, dynamic> toJson() {
data['id'] = this.id; // final Map<String, dynamic> data = new Map<String, dynamic>();
data['name'] = this.name; // data['id'] = this.id;
data['value'] = this.value; // data['name'] = this.name;
if (this.departments != null) { // data['value'] = this.value;
data['departments'] = this.departments.map((v) => v.toJson()).toList(); // if (this.departments != null) {
} // data['departments'] = this.departments.map((v) => v.toJson()).toList();
return data; // }
} // return data;
} // }
// }
class Departments { //
int id; // class Departments {
String name; // int id;
// String name;
Departments({this.id, this.name}); //
// Departments({this.id, this.name});
Departments.fromJson(Map<String, dynamic> json) { //
id = json['id']; // Departments.fromJson(Map<String, dynamic> json) {
name = json['name']; // id = json['id'];
} // name = json['name'];
// }
Map<String, dynamic> toJson() { //
final Map<String, dynamic> data = new Map<String, dynamic>(); // Map<String, dynamic> toJson() {
data['id'] = this.id; // final Map<String, dynamic> data = new Map<String, dynamic>();
data['name'] = this.name; // data['id'] = this.id;
return data; // data['name'] = this.name;
} // return data;
} // }
// }

@ -1,43 +1,44 @@
import 'asset.dart'; ///todo deleted
import 'asset_transfer.dart'; // import 'asset.dart';
// import 'asset_transfer.dart';
class AssetTransferSearch extends AssetTransfer { //
Asset asset; // class AssetTransferSearch extends AssetTransfer {
int pageNumber = 10, pageSize; // Asset asset;
bool mostRecent; // int pageNumber = 10, pageSize;
// bool mostRecent;
Map<String, dynamic> toSearch() { //
final map = <String, dynamic>{}; // Map<String, dynamic> toSearch() {
map['pageSize'] = pageSize; // final map = <String, dynamic>{};
map['pageNumber'] = pageNumber; // map['pageSize'] = pageSize;
map['id'] = id; // map['pageNumber'] = pageNumber;
map['transferNo'] = transferNo; // map['id'] = id;
map['transferCode'] = transferCode; // map['transferNo'] = transferNo;
map['assetId'] = assetId; // map['transferCode'] = transferCode;
map['destSiteId'] = destSiteId; // map['assetId'] = assetId;
map['destBuildingId'] = destBuildingId; // map['destSiteId'] = destSiteId;
map['destFloorId'] = destFloorId; // map['destBuildingId'] = destBuildingId;
map['destDepartmentId'] = destDepartmentId; // map['destFloorId'] = destFloorId;
map['destRoomId'] = destRoomId; // map['destDepartmentId'] = destDepartmentId;
map['senderSiteId'] = senderSiteId; // map['destRoomId'] = destRoomId;
map['senderBuildingId'] = senderBuildingId; // map['senderSiteId'] = senderSiteId;
map['senderFloorId'] = senderFloorId; // map['senderBuildingId'] = senderBuildingId;
map['senderDepartmentId'] = senderDepartmentId; // map['senderFloorId'] = senderFloorId;
map['senderRoom'] = senderRoom; // map['senderDepartmentId'] = senderDepartmentId;
map['senderAssignedEmployeeId'] = senderAssignedEmployeeId; // map['senderRoom'] = senderRoom;
map['receiverAssignedEmployeeId'] = receiverAssignedEmployeeId; // map['senderAssignedEmployeeId'] = senderAssignedEmployeeId;
map['mostRecent'] = mostRecent; // map['receiverAssignedEmployeeId'] = receiverAssignedEmployeeId;
map['assetNumber'] = asset?.assetNumber; // map['mostRecent'] = mostRecent;
map['assetSerialNo'] = asset?.assetSerialNo; // map['assetNumber'] = asset?.assetNumber;
map['siteName'] = asset?.site?.custName; // map['assetSerialNo'] = asset?.assetSerialNo;
// map['siteName'] = asset?.site?.custName;
/// TODO : the below parameters need to be discussed //
// map['relatedToEmployeeId'] = ""; // /// TODO : the below parameters need to be discussed
// map['assetGroup'] = { // // map['relatedToEmployeeId'] = "";
// "id": 1, // // map['assetGroup'] = {
// "name": "", // // "id": 1,
// "code": "", // // "name": "",
// }; // // "code": "",
return map; // // };
} // return map;
} // }
// }

@ -1,105 +1,106 @@
import 'dart:io'; ///todo deleted
// import 'dart:io';
import 'package:test_sa/models/department.dart'; //
import 'package:test_sa/models/hospital.dart'; // import 'package:test_sa/models/department.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/models/hospital.dart';
// import 'package:test_sa/models/lookup.dart';
import '../timer_model.dart'; //
// import '../timer_model.dart';
@Deprecated("Use asset_transfer.dart instead of this one") //
class DeviceTransferInfo { // @Deprecated("Use asset_transfer.dart instead of this one")
String userId; // class DeviceTransferInfo {
String comment; // String userId;
Hospital client; // String comment;
Department department; // Hospital client;
String workingHours; // Department department;
// String workingHours;
// DateTime startDate; //
// DateTime endDate; // // DateTime startDate;
String travelingHours; // // DateTime endDate;
String userName; // String travelingHours;
String engSignature; // String userName;
List<File> attachments; // String engSignature;
String assignedEmployeeName; // List<File> attachments;
Lookup status; // String assignedEmployeeName;
TimerModel timer; // Lookup status;
// TimerModel timer;
DeviceTransferInfo({ //
this.userId, // DeviceTransferInfo({
this.comment, // this.userId,
this.department, // this.comment,
this.client, // this.department,
this.userName, // this.client,
this.travelingHours, // this.userName,
// this.startDate, // this.travelingHours,
// this.endDate, // // this.startDate,
this.workingHours, // // this.endDate,
this.engSignature, // this.workingHours,
this.status, // this.engSignature,
this.assignedEmployeeName, // this.status,
this.timer, // this.assignedEmployeeName,
this.attachments, // this.timer,
}); // this.attachments,
// });
Map<String, String> toJson(bool isSender) { //
Map<String, String> body = {}; // Map<String, String> toJson(bool isSender) {
final baseKey = isSender ? "sender_" : "receiver_"; // Map<String, String> body = {};
// final baseKey = isSender ? "sender_" : "receiver_";
if (comment != null && comment.isNotEmpty) body["${baseKey}comment"] = comment; //
if (workingHours != null && workingHours.isNotEmpty) body["${baseKey}working_hours"] = workingHours; // if (comment != null && comment.isNotEmpty) body["${baseKey}comment"] = comment;
// if (startDate != null) body["${baseKey}start_date"] = startDate?.toIso8601String(); // if (workingHours != null && workingHours.isNotEmpty) body["${baseKey}working_hours"] = workingHours;
// if (endDate != null) body["${baseKey}end_date"] = endDate?.toIso8601String(); // // if (startDate != null) body["${baseKey}start_date"] = startDate?.toIso8601String();
if (timer?.startAt != null) body["${baseKey}start_date"] = timer?.startAt?.toIso8601String(); // // if (endDate != null) body["${baseKey}end_date"] = endDate?.toIso8601String();
if (timer?.endAt != null) body["${baseKey}end_date"] = timer?.endAt?.toIso8601String(); // if (timer?.startAt != null) body["${baseKey}start_date"] = timer?.startAt?.toIso8601String();
if (travelingHours != null && travelingHours.isNotEmpty) body["${baseKey}travel_hours"] = travelingHours; // if (timer?.endAt != null) body["${baseKey}end_date"] = timer?.endAt?.toIso8601String();
if (status != null) body["${baseKey}status"] = status.id.toString(); // if (travelingHours != null && travelingHours.isNotEmpty) body["${baseKey}travel_hours"] = travelingHours;
if (engSignature != null && engSignature.isNotEmpty) body["${baseKey}image"] = engSignature; // if (status != null) body["${baseKey}status"] = status.id.toString();
return body; // if (engSignature != null && engSignature.isNotEmpty) body["${baseKey}image"] = engSignature;
} // return body;
// }
bool validate() { //
if (client == null) return false; // bool validate() {
if (department == null) return false; // if (client == null) return false;
return true; // if (department == null) return false;
} // return true;
// }
fromDetails(DeviceTransferInfo old, {bool withSignature = true}) { //
userId = old.userId; // fromDetails(DeviceTransferInfo old, {bool withSignature = true}) {
userName = old.userName; // userId = old.userId;
client = Hospital.fromHospital(old.client); // userName = old.userName;
department = Department.fromDepartment(old.department); // client = Hospital.fromHospital(old.client);
workingHours = old.workingHours; // department = Department.fromDepartment(old.department);
attachments = old.attachments ?? []; // workingHours = old.workingHours;
// startDate = old.startDate; // attachments = old.attachments ?? [];
// endDate = old.endDate; // // startDate = old.startDate;
timer = old.timer; // // endDate = old.endDate;
travelingHours = old.travelingHours; // timer = old.timer;
comment = old.comment; // travelingHours = old.travelingHours;
if (withSignature) engSignature = old.engSignature; // comment = old.comment;
status = old.status; // if (withSignature) engSignature = old.engSignature;
} // status = old.status;
// }
// factory DeviceTransferInfo.fromJson(Map<String, dynamic> parsedJson, String key) { //
// return DeviceTransferInfo( // // factory DeviceTransferInfo.fromJson(Map<String, dynamic> parsedJson, String key) {
// workingHours: parsedJson["${key}working_hours"], // // return DeviceTransferInfo(
// // startDate: parsedJson["${key}start_date"], // // workingHours: parsedJson["${key}working_hours"],
// // endDate: parsedJson["${key}end_date"], // // // startDate: parsedJson["${key}start_date"],
// timer: TimerModel( // // // endDate: parsedJson["${key}end_date"],
// startAt: DateTime.tryParse(parsedJson["${key}start_date"] ?? ""), // // timer: TimerModel(
// endAt: DateTime.tryParse(parsedJson["${key}end_date"] ?? ""), // // startAt: DateTime.tryParse(parsedJson["${key}start_date"] ?? ""),
// durationInSecond: ((parsedJson["${key}working_hours"] ?? 0) * 60 * 60).toInt(), // // endAt: DateTime.tryParse(parsedJson["${key}end_date"] ?? ""),
// ), // // durationInSecond: ((parsedJson["${key}working_hours"] ?? 0) * 60 * 60).toInt(),
// travelingHours: parsedJson["${key}travel_hours"], // // ),
// userName: parsedJson["${key}name"], // // travelingHours: parsedJson["${key}travel_hours"],
// signature: parsedJson["${key}image"], // // userName: parsedJson["${key}name"],
// userId: parsedJson["${key}id"], // // signature: parsedJson["${key}image"],
// comment: parsedJson["${key}comment"], // // userId: parsedJson["${key}id"],
// assignedEmployeeName: parsedJson["${key}AssignedEmployeeName"], // // comment: parsedJson["${key}comment"],
// client: Hospital(id: parsedJson["${key}SiteId"], name: parsedJson["${key}SiteName"]), // // assignedEmployeeName: parsedJson["${key}AssignedEmployeeName"],
// department: Department( // // client: Hospital(id: parsedJson["${key}SiteId"], name: parsedJson["${key}SiteName"]),
// id: parsedJson["${key}DepartmentId"], // // department: Department(
// name: parsedJson["${key}DepartmentName"], // // id: parsedJson["${key}DepartmentId"],
// ), // // name: parsedJson["${key}DepartmentName"],
// ); // // ),
// // );
// // }
// } // }
}

@ -1,67 +1,68 @@
import '../hospital.dart'; ///todo deleted
import 'asset.dart'; // import '../hospital.dart';
// import 'asset.dart';
@Deprecated("Use asset_transfer_search.dart instead of this one") //
class DeviceTransferSearch { // @Deprecated("Use asset_transfer_search.dart instead of this one")
Asset device; // class DeviceTransferSearch {
String title, room; // Asset device;
bool mostRecent; // String title, room;
Hospital hospital; // bool mostRecent;
Buildings building; // Hospital hospital;
List<Buildings> buildingsList; // Buildings building;
Floors floor; // List<Buildings> buildingsList;
List<Floors> floorsList; // Floors floor;
Departments department; // List<Floors> floorsList;
List<Departments> departmentsList; // Departments department;
// List<Departments> departmentsList;
DeviceTransferSearch({ //
this.device, // DeviceTransferSearch({
this.hospital, // this.device,
this.building, // this.hospital,
this.floor, // this.building,
this.department, // this.floor,
this.room, // this.department,
this.title, // this.room,
this.mostRecent = true, // this.title,
}); // this.mostRecent = true,
// });
Map<String, dynamic> toMap() { //
Map<String, dynamic> search = {}; // Map<String, dynamic> toMap() {
if (title != null && title.isNotEmpty) { // Map<String, dynamic> search = {};
search["transferCode"] = title; // if (title != null && title.isNotEmpty) {
} // search["transferCode"] = title;
if (device != null) { // }
search["assetId"] = device.id; // if (device != null) {
} // search["assetId"] = device.id;
if (mostRecent != null) { // }
search["mostRecent"] = mostRecent; // if (mostRecent != null) {
} // search["mostRecent"] = mostRecent;
if (hospital?.id != null) { // }
search["destSiteId"] = hospital.id; // if (hospital?.id != null) {
} // search["destSiteId"] = hospital.id;
if (building?.id != null) { // }
search["destBuildingId"] = building.id; // if (building?.id != null) {
} // search["destBuildingId"] = building.id;
if (floor?.id != null) { // }
search["destFloorId"] = floor.id; // if (floor?.id != null) {
} // search["destFloorId"] = floor.id;
if (department?.id != null) { // }
search["destDepartmentId"] = department.id; // if (department?.id != null) {
} // search["destDepartmentId"] = department.id;
if (room != null && room.isNotEmpty) { // }
search["destRoom"] = department.id; // if (room != null && room.isNotEmpty) {
} // search["destRoom"] = department.id;
return search; // }
} // return search;
// }
void fromSearch(DeviceTransferSearch newSearch) { //
title = newSearch.title; // void fromSearch(DeviceTransferSearch newSearch) {
room = newSearch.room; // title = newSearch.title;
mostRecent = newSearch.mostRecent; // room = newSearch.room;
device = newSearch.device; // mostRecent = newSearch.mostRecent;
hospital = newSearch.hospital; // device = newSearch.device;
building = newSearch.building; // hospital = newSearch.hospital;
floor = newSearch.floor; // building = newSearch.building;
department = newSearch.department; // floor = newSearch.floor;
} // department = newSearch.department;
} // }
// }

@ -1,49 +1,50 @@
@Deprecated("Use the class inside model_definition.dart") ///todo deleted
class ModelDefinition { // @Deprecated("Use the class inside model_definition.dart")
int id; // class ModelDefinition {
String assetName; // int id;
String modelDefCode; // String assetName;
String modelName; // String modelDefCode;
String manufacturerName; // String modelName;
String supplierName; // String manufacturerName;
String replacementDate; // String supplierName;
int lifeSpan; // String replacementDate;
// int lifeSpan;
ModelDefinition({ //
this.id, // ModelDefinition({
this.assetName, // this.id,
this.modelDefCode, // this.assetName,
this.modelName, // this.modelDefCode,
this.manufacturerName, // this.modelName,
this.supplierName, // this.manufacturerName,
this.replacementDate, // this.supplierName,
this.lifeSpan, // this.replacementDate,
}); // this.lifeSpan,
// });
Map<String, dynamic> toJson() { //
final Map<String, dynamic> data = <String, dynamic>{}; // Map<String, dynamic> toJson() {
data['id'] = id; // final Map<String, dynamic> data = <String, dynamic>{};
data['assetName'] = assetName; // data['id'] = id;
data['modelDefCode'] = modelDefCode; // data['assetName'] = assetName;
data['modelName'] = modelName; // data['modelDefCode'] = modelDefCode;
data['manufacturerName'] = manufacturerName; // data['modelName'] = modelName;
data['supplierName'] = supplierName; // data['manufacturerName'] = manufacturerName;
data['replacementDate'] = replacementDate; // data['supplierName'] = supplierName;
data['lifeSpan'] = lifeSpan; // data['replacementDate'] = replacementDate;
return data; // data['lifeSpan'] = lifeSpan;
} // return data;
// }
factory ModelDefinition.fromJson(Map<String, dynamic> map) { //
if (map == null) return null; // factory ModelDefinition.fromJson(Map<String, dynamic> map) {
return ModelDefinition( // if (map == null) return null;
id: map['id'] as int, // return ModelDefinition(
assetName: map['assetName'] as String, // id: map['id'] as int,
modelDefCode: map['modelDefCode'] as String, // assetName: map['assetName'] as String,
modelName: map['modelName'] as String, // modelDefCode: map['modelDefCode'] as String,
manufacturerName: map['manufacturerName'] as String, // modelName: map['modelName'] as String,
supplierName: map['supplierName'] as String, // manufacturerName: map['manufacturerName'] as String,
replacementDate: map['replacementDate'] as String, // supplierName: map['supplierName'] as String,
lifeSpan: map['lifeSpan'] as int, // replacementDate: map['replacementDate'] as String,
); // lifeSpan: map['lifeSpan'] as int,
} // );
} // }
// }

@ -1,50 +1,51 @@
enum TranslationKeys { ///todo deleted
login, // enum TranslationKeys {
enterCredsToLogin, // login,
forgotPassword, // enterCredsToLogin,
password, // forgotPassword,
username, // password,
requiredField, // username,
passwordLengthMessage, // requiredField,
overview, // passwordLengthMessage,
myRequests, // overview,
myAssets, // myRequests,
contactUs, // myAssets,
welcome, // contactUs,
openWhatsapp, // welcome,
liveChat, // openWhatsapp,
callUs, // liveChat,
gasRefillRequest, // callUs,
transferRequest, // gasRefillRequest,
serviceRequest, // transferRequest,
newServiceRequest, // serviceRequest,
search, // newServiceRequest,
filter, // search,
newGasRefillRequest, // filter,
newTransferRequest, // newGasRefillRequest,
submitRequest, // newTransferRequest,
select, // submitRequest,
gasType, // select,
quantity, // gasType,
cylinderType, // quantity,
cylinderSize, // cylinderType,
department, // cylinderSize,
httpError, // department,
tryAgain, // httpError,
destinationSite, // tryAgain,
add, // destinationSite,
site, // add,
onlyNumbers, // site,
youHaveToSelect, // onlyNumbers,
building, // youHaveToSelect,
floor, // building,
createdSuccessfully, // floor,
failedToCompleteRequest, // createdSuccessfully,
youHaveToAddRequests, // failedToCompleteRequest,
assetNo, // youHaveToAddRequests,
manufacture, // assetNo,
model, // manufacture,
serialNumber, // model,
device, // serialNumber,
pickAsset, // device,
} // pickAsset,
// }

@ -1,3 +1,4 @@
///todo deleted
// import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/models/lookup.dart';
// import 'package:test_sa/models/service_request/search_work_order.dart'; // import 'package:test_sa/models/service_request/search_work_order.dart';
// //

@ -1,3 +1,4 @@
///todo deleted
// import 'package:meta/meta.dart'; // import 'package:meta/meta.dart';
// //
// class Subtitle1 { // class Subtitle1 {

@ -1,22 +1,23 @@
import 'package:flutter/material.dart'; ///todo deleted
// import 'package:flutter/material.dart';
class AppTabBar extends StatelessWidget { //
const AppTabBar({Key key}) : super(key: key); // class AppTabBar extends StatelessWidget {
// const AppTabBar({Key key}) : super(key: key);
@override //
Widget build(BuildContext context) { // @override
return TabBar( // Widget build(BuildContext context) {
tabs: [ // return TabBar(
Tab( // tabs: [
icon: Icon(Icons.cloud_outlined), // Tab(
), // icon: Icon(Icons.cloud_outlined),
Tab( // ),
icon: Icon(Icons.beach_access_sharp), // Tab(
), // icon: Icon(Icons.beach_access_sharp),
Tab( // ),
icon: Icon(Icons.brightness_5_sharp), // Tab(
), // icon: Icon(Icons.brightness_5_sharp),
], // ),
); // ],
} // );
} // }
// }

@ -1,65 +1,66 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:test_sa/extensions/context_extension.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/extensions/int_extensions.dart'; // import 'package:test_sa/extensions/context_extension.dart';
// import 'package:test_sa/extensions/int_extensions.dart';
import '../../app_style/app_color.dart'; //
// import '../../app_style/app_color.dart';
class HomeAppBar extends StatelessWidget implements PreferredSizeWidget { //
final GlobalKey<ScaffoldState> scaffoldKey; // class HomeAppBar extends StatelessWidget implements PreferredSizeWidget {
// final GlobalKey<ScaffoldState> scaffoldKey;
const HomeAppBar({Key key, this.scaffoldKey}) : super(key: key); //
// const HomeAppBar({Key key, this.scaffoldKey}) : super(key: key);
@override //
Size get preferredSize => Size.fromHeight(60.toScreenHeight); // @override
// Size get preferredSize => Size.fromHeight(60.toScreenHeight);
@override //
Widget build(BuildContext context) { // @override
return Padding( // Widget build(BuildContext context) {
padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth), // return Padding(
child: AppBar( // padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth),
backgroundColor: context.isDark ? AppColor.backgroundDark : AppColor.backgroundLight, // child: AppBar(
automaticallyImplyLeading: false, // backgroundColor: context.isDark ? AppColor.backgroundDark : AppColor.backgroundLight,
elevation: 0, // automaticallyImplyLeading: false,
leadingWidth: 48.toScreenWidth, // elevation: 0,
leading: InkWell( // leadingWidth: 48.toScreenWidth,
onTap: () { // leading: InkWell(
scaffoldKey.currentState.openDrawer(); // onTap: () {
}, // scaffoldKey.currentState.openDrawer();
child: CircleAvatar(child: Image.network("", fit: BoxFit.fill)), // },
), // child: CircleAvatar(child: Image.network("", fit: BoxFit.fill)),
actions: [ // ),
Stack( // actions: [
children: <Widget>[ // Stack(
Icon( // children: <Widget>[
Icons.notifications, // Icon(
color: context.isDark ? AppColor.neutral10 : AppColor.neutral20, // Icons.notifications,
size: 34, // color: context.isDark ? AppColor.neutral10 : AppColor.neutral20,
), // size: 34,
// ),
///TODO [zaid] : put notifications count rather than number 1 //
if (1 != 0) // ///TODO [zaid] : put notifications count rather than number 1
PositionedDirectional( // if (1 != 0)
end: 0, // PositionedDirectional(
top: 0, // end: 0,
child: Container( // top: 0,
height: 20.toScreenWidth, // child: Container(
width: 20.toScreenWidth, // height: 20.toScreenWidth,
padding: const EdgeInsets.all(1), // width: 20.toScreenWidth,
decoration: BoxDecoration( // padding: const EdgeInsets.all(1),
color: AppColor.red50, // decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10), // color: AppColor.red50,
), // borderRadius: BorderRadius.circular(10),
child: Text( // ),
(1).toString(), // child: Text(
style: Theme.of(context).textTheme.bodySmall?.copyWith(fontWeight: FontWeight.w500, color: AppColor.neutral30), // (1).toString(),
textAlign: TextAlign.center, // style: Theme.of(context).textTheme.bodySmall?.copyWith(fontWeight: FontWeight.w500, color: AppColor.neutral30),
), // textAlign: TextAlign.center,
), // ),
), // ),
], // ),
), // ],
], // ),
), // ],
); // ),
} // );
} // }
// }

@ -1,35 +1,36 @@
import 'dart:convert'; ///todo deleted
// import 'dart:convert';
import 'package:http/http.dart'; //
import 'package:test_sa/models/lookup.dart'; // import 'package:http/http.dart';
import 'package:test_sa/providers/loading_list_notifier.dart'; // import 'package:test_sa/models/lookup.dart';
// import 'package:test_sa/providers/loading_list_notifier.dart';
import '../../../controllers/api_routes/api_manager.dart'; //
import '../../../controllers/api_routes/urls.dart'; // import '../../../controllers/api_routes/api_manager.dart';
// import '../../../controllers/api_routes/urls.dart';
class PentryTaskStatusProvider extends LoadingListNotifier<Lookup> { //
@override // class PentryTaskStatusProvider extends LoadingListNotifier<Lookup> {
Future getDate() async { // @override
if (loading ?? false) return -2; // Future getDate() async {
loading = true; // if (loading ?? false) return -2;
notifyListeners(); // loading = true;
Response response; // notifyListeners();
try { // Response response;
response = await ApiManager.instance.get(URLs.getPentryTaskStatus); // try {
} catch (error) { // response = await ApiManager.instance.get(URLs.getPentryTaskStatus);
loading = false; // } catch (error) {
stateCode = -1; // loading = false;
notifyListeners(); // stateCode = -1;
return -1; // notifyListeners();
} // return -1;
stateCode = response.statusCode; // }
if (response.statusCode >= 200 && response.statusCode < 300) { // stateCode = response.statusCode;
// client's request was successfully received // if (response.statusCode >= 200 && response.statusCode < 300) {
List listJson = json.decode(response.body)["data"]; // // client's request was successfully received
items = listJson.map((department) => Lookup.fromJson(department)).toList(); // List listJson = json.decode(response.body)["data"];
} // items = listJson.map((department) => Lookup.fromJson(department)).toList();
loading = false; // }
notifyListeners(); // loading = false;
return response.statusCode; // notifyListeners();
} // return response.statusCode;
} // }
// }

@ -1,36 +1,37 @@
import 'dart:convert'; ///todo deleted
// import 'dart:convert';
import 'package:http/http.dart'; //
import 'package:test_sa/providers/loading_list_notifier.dart'; // import 'package:http/http.dart';
// import 'package:test_sa/providers/loading_list_notifier.dart';
import '../../controllers/api_routes/api_manager.dart'; //
import '../../controllers/api_routes/urls.dart'; // import '../../controllers/api_routes/api_manager.dart';
import '../../models/lookup.dart'; // import '../../controllers/api_routes/urls.dart';
// import '../../models/lookup.dart';
class RequestStatusProvider extends LoadingListNotifier<Lookup> { //
@override // class RequestStatusProvider extends LoadingListNotifier<Lookup> {
Future getDate() async { // @override
if (loading == true) return -2; // Future getDate() async {
loading = true; // if (loading == true) return -2;
notifyListeners(); // loading = true;
loading = true; // notifyListeners();
notifyListeners(); // loading = true;
try { // notifyListeners();
Response response = await ApiManager.instance.get(URLs.getServiceRequestStatus); // try {
stateCode = response.statusCode; // Response response = await ApiManager.instance.get(URLs.getServiceRequestStatus);
if (response.statusCode >= 200 && response.statusCode < 300) { // stateCode = response.statusCode;
// client's request was successfully received // if (response.statusCode >= 200 && response.statusCode < 300) {
List categoriesListJson = json.decode(response.body)["data"]; // // client's request was successfully received
items = categoriesListJson.map((item) => Lookup.fromJson(item)).toList(); // List categoriesListJson = json.decode(response.body)["data"];
} // items = categoriesListJson.map((item) => Lookup.fromJson(item)).toList();
loading = false; // }
notifyListeners(); // loading = false;
return response.statusCode; // notifyListeners();
} catch (error) { // return response.statusCode;
loading = false; // } catch (error) {
stateCode = -1; // loading = false;
notifyListeners(); // stateCode = -1;
return -1; // notifyListeners();
} // return -1;
} // }
} // }
// }

@ -1,36 +1,37 @@
import 'dart:convert'; ///todo deleted
// import 'dart:convert';
import 'package:http/http.dart'; //
import 'package:test_sa/providers/loading_list_notifier.dart'; // import 'package:http/http.dart';
// import 'package:test_sa/providers/loading_list_notifier.dart';
import '../../controllers/api_routes/api_manager.dart'; //
import '../../controllers/api_routes/urls.dart'; // import '../../controllers/api_routes/api_manager.dart';
import '../../models/lookup.dart'; // import '../../controllers/api_routes/urls.dart';
// import '../../models/lookup.dart';
class AssetTypesProvider extends LoadingListNotifier<Lookup> { //
@override // class AssetTypesProvider extends LoadingListNotifier<Lookup> {
Future getDate() async { // @override
if (loading == true) return -2; // Future getDate() async {
loading = true; // if (loading == true) return -2;
notifyListeners(); // loading = true;
loading = true; // notifyListeners();
notifyListeners(); // loading = true;
try { // notifyListeners();
Response response = await ApiManager.instance.get(URLs.getAssetTypes); // try {
stateCode = response.statusCode; // Response response = await ApiManager.instance.get(URLs.getAssetTypes);
if (response.statusCode >= 200 && response.statusCode < 300) { // stateCode = response.statusCode;
// client's request was successfully received // if (response.statusCode >= 200 && response.statusCode < 300) {
List categoriesListJson = json.decode(response.body)["data"]; // // client's request was successfully received
items = categoriesListJson.map((item) => Lookup.fromJson(item)).toList(); // List categoriesListJson = json.decode(response.body)["data"];
} // items = categoriesListJson.map((item) => Lookup.fromJson(item)).toList();
loading = false; // }
notifyListeners(); // loading = false;
return response.statusCode; // notifyListeners();
} catch (error) { // return response.statusCode;
loading = false; // } catch (error) {
stateCode = -1; // loading = false;
notifyListeners(); // stateCode = -1;
return -1; // notifyListeners();
} // return -1;
} // }
} // }
// }

@ -1,3 +1,4 @@
///todo deleted
// import 'package:flutter/material.dart'; // import 'package:flutter/material.dart';
// import 'package:test_sa/new_views/app_style/app_color.dart'; // import 'package:test_sa/new_views/app_style/app_color.dart';
// //

@ -1,161 +1,162 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:fluttertoast/fluttertoast.dart'; // import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; // import 'package:fluttertoast/fluttertoast.dart';
import 'package:test_sa/controllers/api_routes/http_status_manger.dart'; // import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart'; // import 'package:test_sa/controllers/api_routes/http_status_manger.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; // import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/controllers/validator/validator.dart'; // import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/extensions/context_extension.dart'; // import 'package:test_sa/controllers/validator/validator.dart';
import 'package:test_sa/models/user.dart'; // import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/new_views/pages/land_page/land_page.dart'; // import 'package:test_sa/models/user.dart';
import 'package:test_sa/views/app_style/sizing.dart'; // import 'package:test_sa/new_views/pages/land_page/land_page.dart';
import 'package:test_sa/views/widgets/app_text_form_field.dart'; // import 'package:test_sa/views/app_style/sizing.dart';
import 'package:test_sa/views/widgets/buttons/app_button.dart'; // import 'package:test_sa/views/widgets/app_text_form_field.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; // import 'package:test_sa/views/widgets/buttons/app_button.dart';
// import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
class Login extends StatefulWidget { //
static final String id = "/login"; // class Login extends StatefulWidget {
// static final String id = "/login";
@override //
_LoginState createState() => _LoginState(); // @override
} // _LoginState createState() => _LoginState();
// }
class _LoginState extends State<Login> { //
UserProvider _userProvider; // class _LoginState extends State<Login> {
SettingProvider _settingProvider; // UserProvider _userProvider;
User _user = User(); // SettingProvider _settingProvider;
bool _obscurePassword = true; // User _user = User();
bool _firstTime = true; // bool _obscurePassword = true;
double _height; // bool _firstTime = true;
double _width; // double _height;
String _payload; // double _width;
final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); // String _payload;
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>(); // final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
// final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
@override //
Widget build(BuildContext context) { // @override
_userProvider = Provider.of<UserProvider>(context); // Widget build(BuildContext context) {
_settingProvider = Provider.of<SettingProvider>(context); // _userProvider = Provider.of<UserProvider>(context);
_height = MediaQuery.of(context).size.height; // _settingProvider = Provider.of<SettingProvider>(context);
_width = MediaQuery.of(context).size.width; // _height = MediaQuery.of(context).size.height;
// _width = MediaQuery.of(context).size.width;
return Scaffold( //
key: _scaffoldKey, // return Scaffold(
body: SafeArea( // key: _scaffoldKey,
child: LoadingManager( // body: SafeArea(
isLoading: _userProvider.isLoading || !_settingProvider.isLoaded, // child: LoadingManager(
isFailedLoading: false, // isLoading: _userProvider.isLoading || !_settingProvider.isLoaded,
stateCode: 200, // isFailedLoading: false,
onRefresh: () async {}, // stateCode: 200,
child: Form( // onRefresh: () async {},
key: _formKey, // child: Form(
child: SingleChildScrollView( // key: _formKey,
//padding: EdgeInsets.symmetric(horizontal: 32), // child: SingleChildScrollView(
child: Column( // //padding: EdgeInsets.symmetric(horizontal: 32),
children: [ // child: Column(
//AppNameBar(), // children: [
SizedBox( // //AppNameBar(),
height: MediaQuery.of(context).size.height / 7,
),
Hero(
tag: "logo",
child: Image(
height: _height / 6,
fit: BoxFit.contain,
image: AssetImage("assets/images/logo.png"),
),
),
Padding(
padding: EdgeInsets.symmetric(horizontal: 24 * AppStyle.getScaleFactor(context), vertical: 24 * AppStyle.getScaleFactor(context)),
child: Column(
children: [
SizedBox(
height: 24 * AppStyle.getScaleFactor(context),
),
ATextFormField(
initialValue: _user?.userName,
hintText: context.translation.name,
textAlign: TextAlign.left,
style: Theme.of(context).textTheme.bodyText1,
prefixIconData: Icons.account_circle,
validator: (value) => Validator.hasValue(value) ? null : context.translation.nameValidateMessage,
textInputType: TextInputType.name,
onSaved: (value) {
_user.userName = value;
},
),
SizedBox(height: 12),
ATextFormField(
initialValue: _user?.password,
hintText: context.translation.password,
obscureText: _obscurePassword,
style: Theme.of(context).textTheme.bodyText1,
prefixIconData: Icons.vpn_key_sharp,
textAlign: TextAlign.left,
validator: (value) => Validator.isValidPassword(value) ? null : context.translation.passwordValidateMessage,
showPassword: () {
_obscurePassword = !_obscurePassword;
setState(() {});
},
onSaved: (value) {
_user.password = value;
},
),
SizedBox(
height: 32 * AppStyle.getScaleFactor(context),
),
AButton(
text: context.translation.signIn,
onPressed: () async {
if (!_formKey.currentState.validate()) return;
_formKey.currentState.save();
int status = await _userProvider.login(
user: _user,
);
if (status >= 200 && status < 300) {
if (_userProvider.user.isAuthenticated ?? false) {
_settingProvider.setUser(_userProvider.user);
Navigator.of(context).pushNamed(LandPage.routeName);
} else {
Fluttertoast.showToast(msg: _userProvider.user.message);
}
// if (_userProvider.user.isActive)
// else
// Fluttertoast.showToast(msg: context.translation.activationAlert);
} else {
if (status >= 400 && status < 500) return;
String errorMessage = status == 400 || _userProvider.user?.userName == null
? context.translation.wrongEmailOrPassword
: HttpStatusManger.getStatusMessage(status: status, subtitle: context.translation);
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
content: Text(errorMessage),
));
}
},
),
// SizedBox( // SizedBox(
// height: 140 * AppStyle.getScaleFactor(context), // height: MediaQuery.of(context).size.height / 7,
// ), // ),
// AOutLinedButton( // Hero(
// text: context.translation.signUp, // tag: "logo",
// //color: AColors.cyan, // child: Image(
// onPressed: () { // height: _height / 6,
// Navigator.of(context).pushNamed(Register.id); // fit: BoxFit.contain,
// image: AssetImage("assets/images/logo.png"),
// ),
// ),
// Padding(
// padding: EdgeInsets.symmetric(horizontal: 24 * AppStyle.getScaleFactor(context), vertical: 24 * AppStyle.getScaleFactor(context)),
// child: Column(
// children: [
// SizedBox(
// height: 24 * AppStyle.getScaleFactor(context),
// ),
// ATextFormField(
// initialValue: _user?.userName,
// hintText: context.translation.name,
// textAlign: TextAlign.left,
// style: Theme.of(context).textTheme.bodyText1,
// prefixIconData: Icons.account_circle,
// validator: (value) => Validator.hasValue(value) ? null : context.translation.nameValidateMessage,
// textInputType: TextInputType.name,
// onSaved: (value) {
// _user.userName = value;
// },
// ),
// SizedBox(height: 12),
// ATextFormField(
// initialValue: _user?.password,
// hintText: context.translation.password,
// obscureText: _obscurePassword,
// style: Theme.of(context).textTheme.bodyText1,
// prefixIconData: Icons.vpn_key_sharp,
// textAlign: TextAlign.left,
// validator: (value) => Validator.isValidPassword(value) ? null : context.translation.passwordValidateMessage,
// showPassword: () {
// _obscurePassword = !_obscurePassword;
// setState(() {});
// },
// onSaved: (value) {
// _user.password = value;
// },
// ),
// SizedBox(
// height: 32 * AppStyle.getScaleFactor(context),
// ),
// AButton(
// text: context.translation.signIn,
// onPressed: () async {
// if (!_formKey.currentState.validate()) return;
// _formKey.currentState.save();
// int status = await _userProvider.login(
// user: _user,
// );
// if (status >= 200 && status < 300) {
// if (_userProvider.user.isAuthenticated ?? false) {
// _settingProvider.setUser(_userProvider.user);
// Navigator.of(context).pushNamed(LandPage.routeName);
// } else {
// Fluttertoast.showToast(msg: _userProvider.user.message);
// }
//
// // if (_userProvider.user.isActive)
//
// // else
// // Fluttertoast.showToast(msg: context.translation.activationAlert);
// } else {
// if (status >= 400 && status < 500) return;
//
// String errorMessage = status == 400 || _userProvider.user?.userName == null
// ? context.translation.wrongEmailOrPassword
// : HttpStatusManger.getStatusMessage(status: status, subtitle: context.translation);
// ScaffoldMessenger.of(context).showSnackBar(SnackBar(
// content: Text(errorMessage),
// ));
// }
// }, // },
// ), // ),
const SizedBox(height: 32), // // SizedBox(
], // // height: 140 * AppStyle.getScaleFactor(context),
), // // ),
), // // AOutLinedButton(
], // // text: context.translation.signUp,
), // // //color: AColors.cyan,
), // // onPressed: () {
), // // Navigator.of(context).pushNamed(Register.id);
), // // },
), // // ),
); // const SizedBox(height: 32),
} // ],
} // ),
// ),
// ],
// ),
// ),
// ),
// ),
// ),
// );
// }
// }

@ -1,212 +1,213 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:fluttertoast/fluttertoast.dart'; // import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; // import 'package:fluttertoast/fluttertoast.dart';
import 'package:test_sa/controllers/api_routes/http_status_manger.dart'; // import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart'; // import 'package:test_sa/controllers/api_routes/http_status_manger.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; // import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/controllers/validator/validator.dart'; // import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/extensions/context_extension.dart'; // import 'package:test_sa/controllers/validator/validator.dart';
import 'package:test_sa/models/hospital.dart'; // import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/models/user.dart'; // import 'package:test_sa/models/hospital.dart';
import 'package:test_sa/views/widgets/app_text_form_field.dart'; // import 'package:test_sa/models/user.dart';
import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; // import 'package:test_sa/views/widgets/app_text_form_field.dart';
import 'package:test_sa/views/widgets/buttons/app_button.dart'; // import 'package:test_sa/views/widgets/buttons/app_back_button.dart';
import 'package:test_sa/views/widgets/hospitals/hospital_button.dart'; // import 'package:test_sa/views/widgets/buttons/app_button.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; // import 'package:test_sa/views/widgets/hospitals/hospital_button.dart';
// import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
class Register extends StatefulWidget { //
static final String id = "/register"; // class Register extends StatefulWidget {
// static final String id = "/register";
@override //
_RegisterState createState() => _RegisterState(); // @override
} // _RegisterState createState() => _RegisterState();
// }
class _RegisterState extends State<Register> { //
UserProvider _userProvider; // class _RegisterState extends State<Register> {
SettingProvider _settingProvider; // UserProvider _userProvider;
double _width; // SettingProvider _settingProvider;
double _height; // double _width;
User _user = User(); // double _height;
bool _obscurePassword = true; // User _user = User();
final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); // bool _obscurePassword = true;
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>(); // final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
// final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
@override //
Widget build(BuildContext context) { // @override
_userProvider = Provider.of<UserProvider>(context); // Widget build(BuildContext context) {
_settingProvider = Provider.of<SettingProvider>(context); // _userProvider = Provider.of<UserProvider>(context);
_width = MediaQuery.of(context).size.width; // _settingProvider = Provider.of<SettingProvider>(context);
_height = MediaQuery.of(context).size.height; // _width = MediaQuery.of(context).size.width;
// _height = MediaQuery.of(context).size.height;
return Scaffold( //
key: _scaffoldKey, // return Scaffold(
body: LoadingManager( // key: _scaffoldKey,
isLoading: _userProvider.isLoading, // body: LoadingManager(
isFailedLoading: false, // isLoading: _userProvider.isLoading,
stateCode: 200, // isFailedLoading: false,
onRefresh: () async {}, // stateCode: 200,
child: SafeArea( // onRefresh: () async {},
child: Stack( // child: SafeArea(
children: [ // child: Stack(
Form( // children: [
key: _formKey, // Form(
child: ListView( // key: _formKey,
padding: const EdgeInsets.all(20), // child: ListView(
children: [ // padding: const EdgeInsets.all(20),
//AppNameBar(), // children: [
//SizedBox(height: 16,), // //AppNameBar(),
Hero( // //SizedBox(height: 16,),
tag: "logo", // Hero(
child: Padding( // tag: "logo",
padding: const EdgeInsets.all(16), // child: Padding(
child: Image( // padding: const EdgeInsets.all(16),
height: _height / 6, // child: Image(
image: AssetImage("assets/images/logo.png"), // height: _height / 6,
), // image: AssetImage("assets/images/logo.png"),
), // ),
), // ),
ATextFormField( // ),
initialValue: _user.userName, // ATextFormField(
hintText: context.translation.name, // initialValue: _user.userName,
prefixIconData: Icons.account_circle, // hintText: context.translation.name,
style: Theme.of(context).textTheme.headline6, // prefixIconData: Icons.account_circle,
validator: (value) => Validator.hasValue(value) ? null : context.translation.nameValidateMessage, // style: Theme.of(context).textTheme.headline6,
onSaved: (value) { // validator: (value) => Validator.hasValue(value) ? null : context.translation.nameValidateMessage,
_user.userName = value; // onSaved: (value) {
}, // _user.userName = value;
), // },
const SizedBox(height: 12), // ),
ATextFormField( // const SizedBox(height: 12),
initialValue: _user.email, // ATextFormField(
hintText: context.translation.email, // initialValue: _user.email,
prefixIconData: Icons.email, // hintText: context.translation.email,
textInputType: TextInputType.emailAddress, // prefixIconData: Icons.email,
style: Theme.of(context).textTheme.headline6, // textInputType: TextInputType.emailAddress,
validator: (value) => Validator.isEmail(value) ? null : context.translation.emailValidateMessage, // style: Theme.of(context).textTheme.headline6,
onSaved: (value) { // validator: (value) => Validator.isEmail(value) ? null : context.translation.emailValidateMessage,
_user.email = value; // onSaved: (value) {
}, // _user.email = value;
), // },
const SizedBox(height: 12), // ),
ATextFormField( // const SizedBox(height: 12),
initialValue: _user.password, // ATextFormField(
hintText: context.translation.password, // initialValue: _user.password,
prefixIconData: Icons.vpn_key_sharp, // hintText: context.translation.password,
style: Theme.of(context).textTheme.headline6, // prefixIconData: Icons.vpn_key_sharp,
obscureText: _obscurePassword, // style: Theme.of(context).textTheme.headline6,
validator: (value) => Validator.isValidPassword(value) ? null : context.translation.passwordValidateMessage, // obscureText: _obscurePassword,
showPassword: () { // validator: (value) => Validator.isValidPassword(value) ? null : context.translation.passwordValidateMessage,
_obscurePassword = !_obscurePassword; // showPassword: () {
setState(() {}); // _obscurePassword = !_obscurePassword;
}, // setState(() {});
onSaved: (value) { // },
_user.password = value; // onSaved: (value) {
}, // _user.password = value;
onChange: (value) { // },
_user.password = value; // onChange: (value) {
}, // _user.password = value;
), // },
const SizedBox(height: 12), // ),
ATextFormField( // const SizedBox(height: 12),
initialValue: _user.password, // ATextFormField(
prefixIconData: Icons.vpn_key_sharp, // initialValue: _user.password,
hintText: context.translation.confirmPassword, // prefixIconData: Icons.vpn_key_sharp,
style: Theme.of(context).textTheme.headline6, // hintText: context.translation.confirmPassword,
obscureText: _obscurePassword, // style: Theme.of(context).textTheme.headline6,
validator: (value) => _user.password == value ? null : context.translation.confirmPasswordValidateMessage, // obscureText: _obscurePassword,
showPassword: () { // validator: (value) => _user.password == value ? null : context.translation.confirmPasswordValidateMessage,
_obscurePassword = !_obscurePassword; // showPassword: () {
setState(() {}); // _obscurePassword = !_obscurePassword;
}, // setState(() {});
), // },
const SizedBox(height: 12), // ),
HospitalButton(
hospital: Hospital(id: _user.clientId, name: _user.clientName),
onHospitalPick: (hospital) {
_user.clientId = hospital.id;
_user.clientName = hospital.name;
setState(() {});
},
),
// const SizedBox(height: 12), // const SizedBox(height: 12),
// DepartmentButton( // HospitalButton(
// department: Department(id: _user.departmentId, name: _user.departmentName), // hospital: Hospital(id: _user.clientId, name: _user.clientName),
// onDepartmentPick: (department) { // onHospitalPick: (hospital) {
// _user.departmentId = department.id; // _user.clientId = hospital.id;
// _user.departmentName = department.name; // _user.clientName = hospital.name;
// setState(() {}); // setState(() {});
// }, // },
// ), // ),
const SizedBox(height: 12), // // const SizedBox(height: 12),
ATextFormField( // // DepartmentButton(
initialValue: _user.phoneNumber, // // department: Department(id: _user.departmentId, name: _user.departmentName),
hintText: context.translation.phoneNumber, // // onDepartmentPick: (department) {
style: Theme.of(context).textTheme.headline6, // // _user.departmentId = department.id;
prefixIconData: Icons.phone_android, // // _user.departmentName = department.name;
validator: (value) => Validator.isPhoneNumber(value) ? null : context.translation.phoneNumberValidateMessage, // // setState(() {});
textInputType: TextInputType.phone, // // },
onSaved: (value) { // // ),
_user.phoneNumber = value; // const SizedBox(height: 12),
},
),
SizedBox(height: 8),
// ATextFormField( // ATextFormField(
// initialValue: _user.whatsApp, // initialValue: _user.phoneNumber,
// hintText: context.translation.whatsApp, // hintText: context.translation.phoneNumber,
// style: Theme.of(context).textTheme.headline6, // style: Theme.of(context).textTheme.headline6,
// prefixIconData: FontAwesomeIcons.whatsapp, // prefixIconData: Icons.phone_android,
// prefixIconSize: 36,
// validator: (value) => Validator.isPhoneNumber(value) ? null : context.translation.phoneNumberValidateMessage, // validator: (value) => Validator.isPhoneNumber(value) ? null : context.translation.phoneNumberValidateMessage,
// textInputType: TextInputType.phone, // textInputType: TextInputType.phone,
// onSaved: (value) { // onSaved: (value) {
// _user.whatsApp = value; // _user.phoneNumber = value;
// }, // },
// ), // ),
const SizedBox(height: 12), // SizedBox(height: 8),
AButton( // // ATextFormField(
text: context.translation.signUp, // // initialValue: _user.whatsApp,
onPressed: () async { // // hintText: context.translation.whatsApp,
if (!_formKey.currentState.validate()) return; // // style: Theme.of(context).textTheme.headline6,
_formKey.currentState.save(); // // prefixIconData: FontAwesomeIcons.whatsapp,
if (_user.clientId == null) { // // prefixIconSize: 36,
ScaffoldMessenger.of(context).showSnackBar(SnackBar( // // validator: (value) => Validator.isPhoneNumber(value) ? null : context.translation.phoneNumberValidateMessage,
content: Text(context.translation.hospitalRequired), // // textInputType: TextInputType.phone,
)); // // onSaved: (value) {
return; // // _user.whatsApp = value;
} // // },
if (_user.departmentId == null) { // // ),
ScaffoldMessenger.of(context).showSnackBar(SnackBar( // const SizedBox(height: 12),
content: Text(context.translation.uniteRequired), // AButton(
)); // text: context.translation.signUp,
return; // onPressed: () async {
} // if (!_formKey.currentState.validate()) return;
int status = await _userProvider.register( // _formKey.currentState.save();
user: _user, // if (_user.clientId == null) {
host: _settingProvider.host, // ScaffoldMessenger.of(context).showSnackBar(SnackBar(
); // content: Text(context.translation.hospitalRequired),
if (status >= 200 && status < 300) { // ));
Fluttertoast.showToast(msg: context.translation.activationAlert); // return;
Navigator.of(context).pop(); // }
} else { // if (_user.departmentId == null) {
String errorMessage = status == 402 // ScaffoldMessenger.of(context).showSnackBar(SnackBar(
? context.translation.nameExist // content: Text(context.translation.uniteRequired),
: status == 401 // ));
? context.translation.emailExist // return;
: HttpStatusManger.getStatusMessage(status: status, subtitle: context.translation); // }
ScaffoldMessenger.of(context).showSnackBar(SnackBar( // int status = await _userProvider.register(
content: Text(errorMessage), // user: _user,
)); // host: _settingProvider.host,
} // );
}, // if (status >= 200 && status < 300) {
), // Fluttertoast.showToast(msg: context.translation.activationAlert);
], // Navigator.of(context).pop();
), // } else {
), // String errorMessage = status == 402
ABackButton(), // ? context.translation.nameExist
], // : status == 401
), // ? context.translation.emailExist
), // : HttpStatusManger.getStatusMessage(status: status, subtitle: context.translation);
), // ScaffoldMessenger.of(context).showSnackBar(SnackBar(
); // content: Text(errorMessage),
} // ));
} // }
// },
// ),
// ],
// ),
// ),
// ABackButton(),
// ],
// ),
// ),
// ),
// );
// }
// }

@ -1,76 +1,77 @@
import 'package:firebase_core/firebase_core.dart'; ///todo deleted
import 'package:flare_flutter/flare_actor.dart'; // import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart'; // import 'package:flare_flutter/flare_actor.dart';
import 'package:provider/provider.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/controllers/notification/notification_manger.dart'; // import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart'; // import 'package:test_sa/controllers/notification/notification_manger.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; // import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/models/user.dart'; // import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/new_views/pages/land_page/land_page.dart'; // import 'package:test_sa/models/user.dart';
// import 'package:test_sa/new_views/pages/land_page/land_page.dart';
import 'login.dart'; //
// import 'login.dart';
class SplashScreen extends StatefulWidget { //
static const String id = '/splash'; // class SplashScreen extends StatefulWidget {
// static const String id = '/splash';
const SplashScreen({Key key}) : super(key: key); //
// const SplashScreen({Key key}) : super(key: key);
@override //
State<SplashScreen> createState() => _SplashScreenState(); // @override
} // State<SplashScreen> createState() => _SplashScreenState();
// }
class _SplashScreenState extends State<SplashScreen> { //
SettingProvider _settingProvider; // class _SplashScreenState extends State<SplashScreen> {
UserProvider _userProvider; // SettingProvider _settingProvider;
// UserProvider _userProvider;
_goToUserScreen(User user) { //
if (user.tokenlife != null && (DateTime.tryParse(user.tokenlife)?.isAfter(DateTime.now()) ?? false)) { // _goToUserScreen(User user) {
_userProvider.user = user; // if (user.tokenlife != null && (DateTime.tryParse(user.tokenlife)?.isAfter(DateTime.now()) ?? false)) {
// Navigator.of(context).pushNamed(Login.id); // _userProvider.user = user;
Navigator.of(context).pushNamed(LandPage.routeName); // // Navigator.of(context).pushNamed(Login.id);
} // Navigator.of(context).pushNamed(LandPage.routeName);
} // }
// }
@override //
void initState() { // @override
Firebase.initializeApp(); // void initState() {
// Firebase.initializeApp();
NotificationManger.initialisation((notificationDetails) { //
// todo @sikander, check notifications payload, because notification model is different to need to check from backend // NotificationManger.initialisation((notificationDetails) {
// SystemNotificationModel notification = SystemNotificationModel.fromJson(json.decode(notificationDetails.payload)); // // todo @sikander, check notifications payload, because notification model is different to need to check from backend
// if (notification.path == null || notification.path.isEmpty) return; // // SystemNotificationModel notification = SystemNotificationModel.fromJson(json.decode(notificationDetails.payload));
// Navigator.pushNamed(context, notification.path, arguments: notification.requestId); // // if (notification.path == null || notification.path.isEmpty) return;
}, (id, title, body, payload) async {}); // // Navigator.pushNamed(context, notification.path, arguments: notification.requestId);
super.initState(); // }, (id, title, body, payload) async {});
} // super.initState();
// }
@override //
Widget build(BuildContext context) { // @override
_settingProvider = Provider.of<SettingProvider>(context, listen: false); // Widget build(BuildContext context) {
_userProvider = Provider.of<UserProvider>(context, listen: false); // _settingProvider = Provider.of<SettingProvider>(context, listen: false);
return Scaffold( // _userProvider = Provider.of<UserProvider>(context, listen: false);
backgroundColor: Colors.white, // return Scaffold(
body: Center( // backgroundColor: Colors.white,
child: SizedBox( // body: Center(
width: MediaQuery.of(context).size.width / 1.1, // child: SizedBox(
child: FlareActor( // width: MediaQuery.of(context).size.width / 1.1,
"assets/rives/atoms_splash.flr", // child: FlareActor(
fit: BoxFit.contain, // "assets/rives/atoms_splash.flr",
animation: "splash",
callback: (animation) async {
Navigator.of(context).pushNamed(Login.id);
if (_settingProvider.isLoaded && _settingProvider.user != null) {
_goToUserScreen(_settingProvider.user);
}
},
),
//const Center(child: CircularProgressIndicator())
// Image.asset("assets/images/logo.png",
// fit: BoxFit.contain, // fit: BoxFit.contain,
// animation: "splash",
// callback: (animation) async {
// Navigator.of(context).pushNamed(Login.id);
// if (_settingProvider.isLoaded && _settingProvider.user != null) {
// _goToUserScreen(_settingProvider.user);
// }
// },
// ),
// //const Center(child: CircularProgressIndicator())
//
// // Image.asset("assets/images/logo.png",
// // fit: BoxFit.contain,
// // ),
// ),
// ), // ),
), // );
), // }
); // }
}
}

@ -1,72 +1,73 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:flutter_typeahead/flutter_typeahead.dart'; // import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; // import 'package:flutter_typeahead/flutter_typeahead.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; // import 'package:provider/provider.dart';
import 'package:test_sa/models/service_request/supplier_details.dart'; // import 'package:test_sa/extensions/widget_extensions.dart';
// import 'package:test_sa/models/service_request/supplier_details.dart';
import '../../../providers/work_order/vendor_provider.dart'; //
// import '../../../providers/work_order/vendor_provider.dart';
class AutoGeneratedVendorName extends StatefulWidget { //
final String initialValue; // class AutoGeneratedVendorName extends StatefulWidget {
final Function(SupplierDetails) onSearch; // final String initialValue;
// final Function(SupplierDetails) onSearch;
const AutoGeneratedVendorName({Key key, this.initialValue, this.onSearch}) : super(key: key); //
// const AutoGeneratedVendorName({Key key, this.initialValue, this.onSearch}) : super(key: key);
@override //
State<AutoGeneratedVendorName> createState() => _AutoGeneratedVendorNameState(); // @override
} // State<AutoGeneratedVendorName> createState() => _AutoGeneratedVendorNameState();
// }
class _AutoGeneratedVendorNameState extends State<AutoGeneratedVendorName> { //
TextEditingController _controller; // class _AutoGeneratedVendorNameState extends State<AutoGeneratedVendorName> {
// TextEditingController _controller;
@override //
void initState() { // @override
super.initState(); // void initState() {
_controller = TextEditingController(text: widget.initialValue ?? ""); // super.initState();
} // _controller = TextEditingController(text: widget.initialValue ?? "");
// }
@override //
void didUpdateWidget(covariant AutoGeneratedVendorName oldWidget) { // @override
super.didUpdateWidget(oldWidget); // void didUpdateWidget(covariant AutoGeneratedVendorName oldWidget) {
// super.didUpdateWidget(oldWidget);
if (oldWidget.initialValue != widget.initialValue) { //
_controller = TextEditingController(text: widget.initialValue ?? ""); // if (oldWidget.initialValue != widget.initialValue) {
} // _controller = TextEditingController(text: widget.initialValue ?? "");
} // }
// }
@override //
void dispose() { // @override
_controller.dispose(); // void dispose() {
super.dispose(); // _controller.dispose();
} // super.dispose();
// }
@override //
Widget build(BuildContext context) { // @override
final vendorProvider = Provider.of<VendorProvider>(context, listen: false); // Widget build(BuildContext context) {
return TypeAheadField<SupplierDetails>( // final vendorProvider = Provider.of<VendorProvider>(context, listen: false);
textFieldConfiguration: TextFieldConfiguration( // return TypeAheadField<SupplierDetails>(
style: Theme.of(context).textTheme.titleLarge, // textFieldConfiguration: TextFieldConfiguration(
controller: _controller, // style: Theme.of(context).textTheme.titleLarge,
textAlign: TextAlign.center, // controller: _controller,
decoration: const InputDecoration( // textAlign: TextAlign.center,
hintText: "Vendor Name", // decoration: const InputDecoration(
border: InputBorder.none, // hintText: "Vendor Name",
disabledBorder: InputBorder.none, // border: InputBorder.none,
focusedBorder: InputBorder.none, // disabledBorder: InputBorder.none,
enabledBorder: InputBorder.none, // focusedBorder: InputBorder.none,
), // enabledBorder: InputBorder.none,
textInputAction: TextInputAction.search, // ),
), // textInputAction: TextInputAction.search,
suggestionsCallback: (vale) async { // ),
// await vendorProvider.getVendors(_controller.text.trim()); // suggestionsCallback: (vale) async {
// return vendorProvider.vendors; // // await vendorProvider.getVendors(_controller.text.trim());
}, // // return vendorProvider.vendors;
itemBuilder: (context, vendor) { // },
return ListTile(title: Text(vendor.suppliername)); // itemBuilder: (context, vendor) {
}, // return ListTile(title: Text(vendor.suppliername));
onSuggestionSelected: (hospital) { // },
widget.onSearch(hospital); // onSuggestionSelected: (hospital) {
}, // widget.onSearch(hospital);
).toShadowContainer(context); // },
} // ).toShadowContainer(context);
} // }
// }

@ -1,3 +1,4 @@
///todo deleted
// 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/service_requests_provider.dart'; // import 'package:test_sa/controllers/providers/api/service_requests_provider.dart';

@ -1,214 +1,215 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:test_sa/extensions/context_extension.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/models/service_request/search_work_order.dart'; // import 'package:test_sa/extensions/context_extension.dart';
// import 'package:test_sa/models/service_request/search_work_order.dart';
import '../../../models/service_request/spare_parts.dart'; //
import '../../app_style/sizing.dart'; // import '../../../models/service_request/spare_parts.dart';
import '../../widgets/app_text_form_field.dart'; // import '../../app_style/sizing.dart';
import '../../widgets/buttons/app_button.dart'; // import '../../widgets/app_text_form_field.dart';
import '../../widgets/parts/part_item.dart'; // import '../../widgets/buttons/app_button.dart';
import '../../widgets/titles/app_sub_title.dart'; // import '../../widgets/parts/part_item.dart';
// import '../../widgets/titles/app_sub_title.dart';
class SparePartsBottomSheet extends StatefulWidget { //
final SearchWorkOrder subWorkOrder; // class SparePartsBottomSheet extends StatefulWidget {
final num assetId; // final SearchWorkOrder subWorkOrder;
// final num assetId;
const SparePartsBottomSheet({this.subWorkOrder, this.assetId, Key key}) : super(key: key); //
// const SparePartsBottomSheet({this.subWorkOrder, this.assetId, Key key}) : super(key: key);
@override //
State<SparePartsBottomSheet> createState() => _SparePartsBottomSheetState(); // @override
} // State<SparePartsBottomSheet> createState() => _SparePartsBottomSheetState();
// }
class _SparePartsBottomSheetState extends State<SparePartsBottomSheet> { //
final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); // class _SparePartsBottomSheetState extends State<SparePartsBottomSheet> {
final SearchWorkOrder _workOrder = SearchWorkOrder(); // final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
bool _validate = false; // final SearchWorkOrder _workOrder = SearchWorkOrder();
// bool _validate = false;
@override //
void initState() { // @override
super.initState(); // void initState() {
_workOrder.copyFrom(widget.subWorkOrder); // super.initState();
} // _workOrder.copyFrom(widget.subWorkOrder);
// }
@override //
void dispose() { // @override
_workOrder.sparePartsWorkOrders = widget.subWorkOrder.sparePartsWorkOrders; // void dispose() {
super.dispose(); // _workOrder.sparePartsWorkOrders = widget.subWorkOrder.sparePartsWorkOrders;
} // super.dispose();
// }
@override //
Widget build(BuildContext context) { // @override
final size = MediaQuery.of(context).size; // Widget build(BuildContext context) {
// final size = MediaQuery.of(context).size;
return Padding( //
padding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom), // return Padding(
child: ClipRRect( // padding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
borderRadius: const BorderRadius.only( // child: ClipRRect(
topLeft: Radius.circular(15), // borderRadius: const BorderRadius.only(
topRight: Radius.circular(15), // topLeft: Radius.circular(15),
), // topRight: Radius.circular(15),
clipBehavior: Clip.antiAliasWithSaveLayer, // ),
child: Container( // clipBehavior: Clip.antiAliasWithSaveLayer,
color: Colors.white, // child: Container(
height: size.height * 0.9, // color: Colors.white,
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 20), // height: size.height * 0.9,
child: Form( // padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 20),
key: _formKey, // child: Form(
child: Column( // key: _formKey,
crossAxisAlignment: CrossAxisAlignment.start, // child: Column(
children: [ // crossAxisAlignment: CrossAxisAlignment.start,
const ASubTitle("Spare Parts"), // children: [
const SizedBox(height: 8), // const ASubTitle("Spare Parts"),
Expanded( // const SizedBox(height: 8),
child: Padding( // Expanded(
padding: const EdgeInsets.all(8.0), // child: Padding(
child: SingleChildScrollView( // padding: const EdgeInsets.all(8.0),
child: Column( // child: SingleChildScrollView(
crossAxisAlignment: CrossAxisAlignment.start, // child: Column(
children: [ // crossAxisAlignment: CrossAxisAlignment.start,
Container( // children: [
width: double.infinity, // Container(
padding: const EdgeInsets.all(16), // width: double.infinity,
margin: const EdgeInsets.symmetric(vertical: 16), // padding: const EdgeInsets.all(16),
// decoration: BoxDecoration(color: AColors.grey, borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context)), boxShadow: const [ // margin: const EdgeInsets.symmetric(vertical: 16),
// BoxShadow( // // decoration: BoxDecoration(color: AColors.grey, borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context)), boxShadow: const [
// color: AColors.grey, // // BoxShadow(
// offset: Offset(0, -1), // // color: AColors.grey,
// // offset: Offset(0, -1),
// // )
// // ]),
// child: Column(
// mainAxisSize: MainAxisSize.min,
// children: [
// Row(
// children: [
// Expanded(
// flex: 3,
// child: Column(
// crossAxisAlignment: CrossAxisAlignment.start,
// children: [
// ASubTitle(context.translation.partNumber),
// _validate && _workOrder.sparePartsWorkOrders == null
// ? ASubTitle(
// context.translation.requiredWord,
// color: Colors.red,
// ) // )
// ]), // : const SizedBox.shrink(),
child: Column( // const SizedBox(height: 4),
mainAxisSize: MainAxisSize.min, // // AutoCompletePartsField(
children: [ // // assetId: widget.assetId,
Row( // // onPick: (part) {
children: [ // // _workOrder.sparePartsWorkOrders ??= [];
Expanded( // // _workOrder.sparePartsWorkOrders.add(SparePartsWorkOrders(
flex: 3, // // id: part.reportPartID,
child: Column( // // qty: part.quantity,
crossAxisAlignment: CrossAxisAlignment.start, // // sparePart: SparePart(id: part.id, partName: part.partName, partNo: part.partNo),
children: [ // // installQty: part.installQty,
ASubTitle(context.translation.partNumber), // // returnQty: part.returnQty,
_validate && _workOrder.sparePartsWorkOrders == null // // ));
? ASubTitle( // // },
context.translation.requiredWord, // // ),
color: Colors.red, // ],
) // ),
: const SizedBox.shrink(), // ),
const SizedBox(height: 4), // ],
// AutoCompletePartsField( // ),
// assetId: widget.assetId, // SizedBox(
// onPick: (part) { // height: 8 * AppStyle.getScaleFactor(context),
// _workOrder.sparePartsWorkOrders ??= []; // ),
// _workOrder.sparePartsWorkOrders.add(SparePartsWorkOrders( // if (_workOrder.sparePartsWorkOrders?.isNotEmpty ?? false)
// id: part.reportPartID, // Row(
// qty: part.quantity, // children: [
// sparePart: SparePart(id: part.id, partName: part.partName, partNo: part.partNo), // Expanded(flex: 3, child: Text(context.translation.number)),
// installQty: part.installQty, // Expanded(flex: 1, child: Text(context.translation.quantity)),
// returnQty: part.returnQty, // ],
// )); // ),
// if (_workOrder.sparePartsWorkOrders?.isNotEmpty ?? false)
// Column(
// children: List.generate(
// _workOrder.sparePartsWorkOrders?.length,
// (index) {
// final spare = _workOrder.sparePartsWorkOrders[index];
// SparePartsWorkOrders part = SparePartsWorkOrders(
// id: spare.sparePart?.id,
// sparePart: SparePart(
// id: spare.id,
// partNo: spare.sparePart?.partNo,
// partName: spare.sparePart?.partName,
// ),
// qty: spare.qty?.toInt(),
// installQty: spare.installQty,
// returnQty: spare.returnQty,
// );
// return Column(
// children: [
// PartItem(
// part: part,
// onEdit: (qty) {
// spare.qty = qty;
// },
// onDelete: (part) {
// _workOrder.sparePartsWorkOrders.remove(spare);
// setState(() {});
// },
// ),
// if (_workOrder.calllastSituation?.name?.toLowerCase()?.contains("part installation") ?? false)
// Row(
// children: [
// Expanded(
// child: ATextFormField(
// initialValue: part?.returnQty?.toString(),
// labelText: "Return Quantity",
// textAlign: TextAlign.center,
// style: Theme.of(context).textTheme.titleMedium,
// textInputType: TextInputType.number,
// onSaved: (value) {
// spare.returnQty = num.tryParse(value)?.toDouble();
// },
// ),
// ),
// const SizedBox(width: 8),
// Expanded(
// child: ATextFormField(
// initialValue: part?.installQty?.toString(),
// labelText: "Install Quantity",
// textAlign: TextAlign.center,
// style: Theme.of(context).textTheme.titleMedium,
// textInputType: TextInputType.number,
// onSaved: (value) {
// spare.installQty = num.tryParse(value)?.toDouble();
// },
// ),
// ),
// ],
// ),
// ],
// );
// }, // },
// ), // ),
], // ),
), // const SizedBox(height: 16),
), // ],
], // ),
), // ),
SizedBox( // const SizedBox(height: 24),
height: 8 * AppStyle.getScaleFactor(context), // ],
), // ),
if (_workOrder.sparePartsWorkOrders?.isNotEmpty ?? false) // ),
Row( // ),
children: [ // ),
Expanded(flex: 3, child: Text(context.translation.number)), // AButton(
Expanded(flex: 1, child: Text(context.translation.quantity)), // text: context.translation.submit,
], // onPressed: () async {
), // _formKey.currentState.save();
if (_workOrder.sparePartsWorkOrders?.isNotEmpty ?? false) // widget.subWorkOrder.copyFrom(_workOrder);
Column( // Navigator.pop(context);
children: List.generate( // },
_workOrder.sparePartsWorkOrders?.length, // ),
(index) { // ],
final spare = _workOrder.sparePartsWorkOrders[index]; // ),
SparePartsWorkOrders part = SparePartsWorkOrders( // ),
id: spare.sparePart?.id, // ),
sparePart: SparePart( // ),
id: spare.id, // );
partNo: spare.sparePart?.partNo, // }
partName: spare.sparePart?.partName, // }
),
qty: spare.qty?.toInt(),
installQty: spare.installQty,
returnQty: spare.returnQty,
);
return Column(
children: [
PartItem(
part: part,
onEdit: (qty) {
spare.qty = qty;
},
onDelete: (part) {
_workOrder.sparePartsWorkOrders.remove(spare);
setState(() {});
},
),
if (_workOrder.calllastSituation?.name?.toLowerCase()?.contains("part installation") ?? false)
Row(
children: [
Expanded(
child: ATextFormField(
initialValue: part?.returnQty?.toString(),
labelText: "Return Quantity",
textAlign: TextAlign.center,
style: Theme.of(context).textTheme.titleMedium,
textInputType: TextInputType.number,
onSaved: (value) {
spare.returnQty = num.tryParse(value)?.toDouble();
},
),
),
const SizedBox(width: 8),
Expanded(
child: ATextFormField(
initialValue: part?.installQty?.toString(),
labelText: "Install Quantity",
textAlign: TextAlign.center,
style: Theme.of(context).textTheme.titleMedium,
textInputType: TextInputType.number,
onSaved: (value) {
spare.installQty = num.tryParse(value)?.toDouble();
},
),
),
],
),
],
);
},
),
),
const SizedBox(height: 16),
],
),
),
const SizedBox(height: 24),
],
),
),
),
),
AButton(
text: context.translation.submit,
onPressed: () async {
_formKey.currentState.save();
widget.subWorkOrder.copyFrom(_workOrder);
Navigator.pop(context);
},
),
],
),
),
),
),
);
}
}

@ -1,252 +1,253 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:fluttertoast/fluttertoast.dart'; // import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; // import 'package:fluttertoast/fluttertoast.dart';
import 'package:test_sa/extensions/context_extension.dart'; // import 'package:provider/provider.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/models/service_request/search_work_order.dart'; // import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/models/service_request/supplier_details.dart'; // import 'package:test_sa/models/service_request/search_work_order.dart';
import 'package:test_sa/views/widgets/app_text_form_field.dart'; // import 'package:test_sa/models/service_request/supplier_details.dart';
import 'package:test_sa/views/widgets/buttons/app_button.dart'; // import 'package:test_sa/views/widgets/app_text_form_field.dart';
import 'package:test_sa/views/widgets/status/report/service_report_assistant_employee_menu.dart'; // import 'package:test_sa/views/widgets/buttons/app_button.dart';
import 'package:test_sa/views/widgets/status/report/service_report_maintenance_situation.dart'; // import 'package:test_sa/views/widgets/status/report/service_report_assistant_employee_menu.dart';
import 'package:test_sa/views/widgets/status/report/service_report_repair_location.dart'; // import 'package:test_sa/views/widgets/status/report/service_report_maintenance_situation.dart';
import 'package:test_sa/views/widgets/status/service_request/supplier_engineers_menu.dart'; // import 'package:test_sa/views/widgets/status/report/service_report_repair_location.dart';
// import 'package:test_sa/views/widgets/status/service_request/supplier_engineers_menu.dart';
import '../../../controllers/providers/api/status_drop_down/report/service_report_maintenance_situation_provider.dart'; //
import '../../../models/service_request/supp_engineer_work_orders.dart'; // import '../../../controllers/providers/api/status_drop_down/report/service_report_maintenance_situation_provider.dart';
import '../../widgets/timer/app_timer.dart'; // import '../../../models/service_request/supp_engineer_work_orders.dart';
import '../../widgets/titles/app_sub_title.dart'; // import '../../widgets/timer/app_timer.dart';
import 'auto_generated_vendor_name.dart'; // import '../../widgets/titles/app_sub_title.dart';
// import 'auto_generated_vendor_name.dart';
class WorkOrderDetailsBottomSheet extends StatefulWidget { //
final SearchWorkOrder subWorkOrder; // class WorkOrderDetailsBottomSheet extends StatefulWidget {
final num assetId; // final SearchWorkOrder subWorkOrder;
// final num assetId;
const WorkOrderDetailsBottomSheet({this.subWorkOrder, this.assetId, Key key}) : super(key: key); //
// const WorkOrderDetailsBottomSheet({this.subWorkOrder, this.assetId, Key key}) : super(key: key);
@override //
State<WorkOrderDetailsBottomSheet> createState() => _WorkOrderDetailsBottomSheetState(); // @override
} // State<WorkOrderDetailsBottomSheet> createState() => _WorkOrderDetailsBottomSheetState();
// }
class _WorkOrderDetailsBottomSheetState extends State<WorkOrderDetailsBottomSheet> { //
final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); // class _WorkOrderDetailsBottomSheetState extends State<WorkOrderDetailsBottomSheet> {
final SearchWorkOrder _workOrder = SearchWorkOrder(); // final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
bool _showVendorFields = false; // final SearchWorkOrder _workOrder = SearchWorkOrder();
SuppEngineerWorkOrders engineer; // bool _showVendorFields = false;
// SuppEngineerWorkOrders engineer;
@override //
void initState() { // @override
super.initState(); // void initState() {
_workOrder.copyFrom(widget.subWorkOrder); // super.initState();
if (checkVendorFieldsVisibility(_workOrder.calllastSituation)) { // _workOrder.copyFrom(widget.subWorkOrder);
if (_workOrder.suppEngineerWorkOrders?.isNotEmpty ?? false) { // if (checkVendorFieldsVisibility(_workOrder.calllastSituation)) {
engineer = _workOrder.suppEngineerWorkOrders?.last; // if (_workOrder.suppEngineerWorkOrders?.isNotEmpty ?? false) {
engineer?.id = engineer?.supplierContactId; // engineer = _workOrder.suppEngineerWorkOrders?.last;
} // engineer?.id = engineer?.supplierContactId;
_workOrder.supplier ??= SupplierDetails(id: _workOrder?.supplier?.id); // }
} // _workOrder.supplier ??= SupplierDetails(id: _workOrder?.supplier?.id);
if (context.mounted) { // }
Provider.of<ServiceReportMaintenanceSituationProvider>(context, listen: false).reset(); // if (context.mounted) {
} // Provider.of<ServiceReportMaintenanceSituationProvider>(context, listen: false).reset();
} // }
// }
bool checkVendorFieldsVisibility(Lookup callsLastSituation) { //
bool result = (_workOrder.supplier?.suppliername?.isNotEmpty ?? false) || // bool checkVendorFieldsVisibility(Lookup callsLastSituation) {
(callsLastSituation?.name?.toLowerCase()?.contains("under repair-vendor") ?? false) || // bool result = (_workOrder.supplier?.suppliername?.isNotEmpty ?? false) ||
(callsLastSituation?.name?.toLowerCase()?.contains("waiting for vendor") ?? false); // (callsLastSituation?.name?.toLowerCase()?.contains("under repair-vendor") ?? false) ||
_showVendorFields = result; // (callsLastSituation?.name?.toLowerCase()?.contains("waiting for vendor") ?? false);
return result; // _showVendorFields = result;
} // return result;
// }
@override //
Widget build(BuildContext context) { // @override
final size = MediaQuery.of(context).size; // Widget build(BuildContext context) {
// final size = MediaQuery.of(context).size;
return Padding( //
padding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom), // return Padding(
child: ClipRRect( // padding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
borderRadius: const BorderRadius.only( // child: ClipRRect(
topLeft: Radius.circular(15), // borderRadius: const BorderRadius.only(
topRight: Radius.circular(15), // topLeft: Radius.circular(15),
), // topRight: Radius.circular(15),
clipBehavior: Clip.antiAliasWithSaveLayer, // ),
child: Container( // clipBehavior: Clip.antiAliasWithSaveLayer,
color: Colors.white, // child: Container(
height: size.height * 0.9, // color: Colors.white,
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 20), // height: size.height * 0.9,
child: Form( // padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 20),
key: _formKey, // child: Form(
child: Column( // key: _formKey,
crossAxisAlignment: CrossAxisAlignment.start, // child: Column(
children: [ // crossAxisAlignment: CrossAxisAlignment.start,
const ASubTitle("WO Details"), // children: [
const SizedBox(height: 8), // const ASubTitle("WO Details"),
Expanded( // const SizedBox(height: 8),
child: Padding( // Expanded(
padding: const EdgeInsets.all(8.0), // child: Padding(
child: SingleChildScrollView( // padding: const EdgeInsets.all(8.0),
child: Column( // child: SingleChildScrollView(
crossAxisAlignment: CrossAxisAlignment.start, // child: Column(
children: [ // crossAxisAlignment: CrossAxisAlignment.start,
const SizedBox(height: 8), // children: [
ATextFormField(enable: false, hintText: "Assigned Employee: ${_workOrder.assignedEmployee?.name}"), // const SizedBox(height: 8),
const SizedBox(height: 8), // ATextFormField(enable: false, hintText: "Assigned Employee: ${_workOrder.assignedEmployee?.name}"),
const ASubTitle("Assistant Employee"), // const SizedBox(height: 8),
const SizedBox(height: 4), // const ASubTitle("Assistant Employee"),
ServiceReportAssistantEmployeeMenu( // const SizedBox(height: 4),
assetId: widget.assetId, // ServiceReportAssistantEmployeeMenu(
initialValue: (_workOrder.assistantEmployees?.isNotEmpty ?? false) ? _workOrder.assistantEmployees?.first : null, // assetId: widget.assetId,
onSelect: (assistantsEmployee) { // initialValue: (_workOrder.assistantEmployees?.isNotEmpty ?? false) ? _workOrder.assistantEmployees?.first : null,
if (assistantsEmployee == null) { // onSelect: (assistantsEmployee) {
_workOrder.assistantEmployees = []; // if (assistantsEmployee == null) {
} else { // _workOrder.assistantEmployees = [];
_workOrder.assistantEmployees = [assistantsEmployee]; // } else {
} // _workOrder.assistantEmployees = [assistantsEmployee];
}, // }
), // },
const SizedBox(height: 8), // ),
ASubTitle(context.translation.workingHours), // const SizedBox(height: 8),
const SizedBox(height: 8), // ASubTitle(context.translation.workingHours),
Row( // const SizedBox(height: 8),
children: [ // Row(
Expanded( // children: [
child: AppTimer( // Expanded(
timer: _workOrder.timer, // child: AppTimer(
onChange: (timer) async { // timer: _workOrder.timer,
_workOrder.timer = timer; // onChange: (timer) async {
_workOrder.workingHours = num.tryParse((((timer?.durationInSecond ?? 0) / 60) / 60)?.toStringAsFixed(2) ?? "0"); // _workOrder.timer = timer;
return true; // _workOrder.workingHours = num.tryParse((((timer?.durationInSecond ?? 0) / 60) / 60)?.toStringAsFixed(2) ?? "0");
}, // return true;
), // },
), // ),
], // ),
), // ],
const SizedBox(height: 16), // ),
ATextFormField( // const SizedBox(height: 16),
labelText: "Travel Hours", // ATextFormField(
initialValue: _workOrder.travelingHours?.toString(), // labelText: "Travel Hours",
textInputType: TextInputType.number, // initialValue: _workOrder.travelingHours?.toString(),
onSaved: (value) { // textInputType: TextInputType.number,
_workOrder.travelingHours = num.tryParse(value); // onSaved: (value) {
}, // _workOrder.travelingHours = num.tryParse(value);
), // },
const SizedBox(height: 8), // ),
ATextFormField( // const SizedBox(height: 8),
labelText: "Travel Expense", // ATextFormField(
initialValue: _workOrder.travelingExpenses?.toString(), // labelText: "Travel Expense",
textInputType: TextInputType.number, // initialValue: _workOrder.travelingExpenses?.toString(),
onSaved: (value) { // textInputType: TextInputType.number,
_workOrder.travelingExpenses = num.tryParse(value); // onSaved: (value) {
}, // _workOrder.travelingExpenses = num.tryParse(value);
), // },
const SizedBox(height: 8), // ),
ASubTitle(context.translation.callLastSituation), // const SizedBox(height: 8),
const SizedBox(height: 4), // ASubTitle(context.translation.callLastSituation),
ServiceReportMaintenanceSituation( // const SizedBox(height: 4),
initialValue: _workOrder.calllastSituation, // ServiceReportMaintenanceSituation(
onSelect: (status) { // initialValue: _workOrder.calllastSituation,
if (checkVendorFieldsVisibility(status)) { // onSelect: (status) {
_workOrder.supplier ??= SupplierDetails(id: _workOrder?.supplier?.id); // if (checkVendorFieldsVisibility(status)) {
engineer = null; // _workOrder.supplier ??= SupplierDetails(id: _workOrder?.supplier?.id);
} // engineer = null;
if (status?.value == 12 || _workOrder.calllastSituation?.value == 12) { // }
_workOrder.calllastSituation = status; // if (status?.value == 12 || _workOrder.calllastSituation?.value == 12) {
_workOrder.mrNumber = null; // _workOrder.calllastSituation = status;
setState(() {}); // _workOrder.mrNumber = null;
} else { // setState(() {});
_workOrder.calllastSituation = status; // } else {
} // _workOrder.calllastSituation = status;
setState(() {}); // }
}, // setState(() {});
woId: widget.subWorkOrder?.parentWOId?.toString(), // },
), // woId: widget.subWorkOrder?.parentWOId?.toString(),
if (_workOrder.calllastSituation.value == 12) const ASubTitle(" You have to add parts", color: Colors.amber, padding: EdgeInsets.all(2), font: 11), // ),
if (_workOrder.calllastSituation.value == 12) const SizedBox(height: 8), // if (_workOrder.calllastSituation.value == 12) const ASubTitle(" You have to add parts", color: Colors.amber, padding: EdgeInsets.all(2), font: 11),
if (_workOrder.calllastSituation.value == 12) // if (_workOrder.calllastSituation.value == 12) const SizedBox(height: 8),
ATextFormField( // if (_workOrder.calllastSituation.value == 12)
labelText: "MR number", // ATextFormField(
initialValue: _workOrder.mrNumber, // labelText: "MR number",
onSaved: (value) { // initialValue: _workOrder.mrNumber,
_workOrder.mrNumber = value; // onSaved: (value) {
}, // _workOrder.mrNumber = value;
), // },
if (_showVendorFields) const SizedBox(height: 8), // ),
if (_showVendorFields) // if (_showVendorFields) const SizedBox(height: 8),
AutoGeneratedVendorName( // if (_showVendorFields)
initialValue: _workOrder.supplier?.suppliername, // AutoGeneratedVendorName(
onSearch: (supplier) { // initialValue: _workOrder.supplier?.suppliername,
_workOrder.supplier.id = supplier.id; // onSearch: (supplier) {
_workOrder.supplier.suppliername = supplier.suppliername; // _workOrder.supplier.id = supplier.id;
_workOrder.supplier.suppPersons = supplier.suppPersons; // _workOrder.supplier.suppliername = supplier.suppliername;
setState(() {}); // _workOrder.supplier.suppPersons = supplier.suppPersons;
}, // setState(() {});
), // },
if (_showVendorFields) const SizedBox(height: 8), // ),
if (_showVendorFields) // if (_showVendorFields) const SizedBox(height: 8),
SupplierEngineersMenu( // if (_showVendorFields)
initialValue: engineer, // SupplierEngineersMenu(
engineers: _workOrder?.supplier?.suppPersons, // initialValue: engineer,
onSelect: (engineer) { // engineers: _workOrder?.supplier?.suppPersons,
if (engineer != null) { // onSelect: (engineer) {
this.engineer = engineer; // if (engineer != null) {
} // this.engineer = engineer;
}, // }
), // },
const SizedBox(height: 8), // ),
const ASubTitle("Repair Location"), // const SizedBox(height: 8),
const SizedBox(height: 4), // const ASubTitle("Repair Location"),
ServiceReportRepairLocation( // const SizedBox(height: 4),
initialValue: _workOrder.repairLocation, // ServiceReportRepairLocation(
onSelect: (status) { // initialValue: _workOrder.repairLocation,
_workOrder.repairLocation = status; // onSelect: (status) {
}, // _workOrder.repairLocation = status;
), // },
const SizedBox(height: 8), // ),
ATextFormField( // const SizedBox(height: 8),
labelText: "Technical Comments", // ATextFormField(
initialValue: _workOrder.comment, // labelText: "Technical Comments",
textInputType: TextInputType.multiline, // initialValue: _workOrder.comment,
onSaved: (value) { // textInputType: TextInputType.multiline,
_workOrder.comment = value; // onSaved: (value) {
}, // _workOrder.comment = value;
), // },
const SizedBox(height: 24), // ),
], // const SizedBox(height: 24),
), // ],
), // ),
), // ),
), // ),
AButton( // ),
text: context.translation.submit, // AButton(
onPressed: () async { // text: context.translation.submit,
if (_workOrder?.workingHours == null) { // onPressed: () async {
await Fluttertoast.showToast(msg: "Working Hours Timer Isn't Started"); // if (_workOrder?.workingHours == null) {
return; // await Fluttertoast.showToast(msg: "Working Hours Timer Isn't Started");
} // return;
if (_showVendorFields && (_workOrder.supplier.suppliername == null || _workOrder.supplier.suppliername.isEmpty)) { // }
await Fluttertoast.showToast(msg: "Vendor Name Field is Required"); // if (_showVendorFields && (_workOrder.supplier.suppliername == null || _workOrder.supplier.suppliername.isEmpty)) {
return; // await Fluttertoast.showToast(msg: "Vendor Name Field is Required");
} // return;
if (_showVendorFields && _workOrder.suppEngineerWorkOrders == null) { // }
await Fluttertoast.showToast(msg: "Vendor Engineer Field is Required"); // if (_showVendorFields && _workOrder.suppEngineerWorkOrders == null) {
return; // await Fluttertoast.showToast(msg: "Vendor Engineer Field is Required");
} // return;
_workOrder.suppEngineerWorkOrders ?? []; // }
if (engineer != null) _workOrder.suppEngineerWorkOrders.add(engineer..id = 0); // _workOrder.suppEngineerWorkOrders ?? [];
if (_workOrder.calllastSituation == null) { // if (engineer != null) _workOrder.suppEngineerWorkOrders.add(engineer..id = 0);
await Fluttertoast.showToast(msg: "Call Last Situation Field is Required"); // if (_workOrder.calllastSituation == null) {
return; // await Fluttertoast.showToast(msg: "Call Last Situation Field is Required");
} // return;
_formKey.currentState.save(); // }
widget.subWorkOrder.copyFrom(_workOrder); // _formKey.currentState.save();
Navigator.pop(context); // widget.subWorkOrder.copyFrom(_workOrder);
}, // Navigator.pop(context);
), // },
], // ),
), // ],
), // ),
), // ),
), // ),
); // ),
} // );
} // }
// }

@ -1,41 +1,42 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:test_sa/extensions/context_extension.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/extensions/text_extensions.dart'; // import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; // import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/extensions/widget_extensions.dart';
// import 'package:test_sa/models/lookup.dart';
import '../../../models/service_request/search_work_order.dart'; //
// import '../../../models/service_request/search_work_order.dart';
class WorkOrderDetails extends StatelessWidget { //
final SearchWorkOrder item; // class WorkOrderDetails extends StatelessWidget {
final Lookup assetType; // final SearchWorkOrder item;
// final Lookup assetType;
const WorkOrderDetails({@required this.item, this.assetType, Key key}) : super(key: key); //
// const WorkOrderDetails({@required this.item, this.assetType, Key key}) : super(key: key);
@override //
Widget build(BuildContext context) { // @override
return Column( // Widget build(BuildContext context) {
children: [ // return Column(
_buildRow(context.translation.callId, item.callRequest?.id?.toString() ?? "", context), // children: [
_buildRow(context.translation.assetNumber, item.callRequest?.asset?.assetNumber ?? "", context), // _buildRow(context.translation.callId, item.callRequest?.id?.toString() ?? "", context),
_buildRow("WO No", item.workOrderNo, context), // _buildRow(context.translation.assetNumber, item.callRequest?.asset?.assetNumber ?? "", context),
_buildRow(context.translation.assetName, item.callRequest?.asset?.assetNumber ?? '', context), // _buildRow("WO No", item.workOrderNo, context),
_buildRow(context.translation.department, item.callRequest?.asset?.department ?? '', context), // _buildRow(context.translation.assetName, item.callRequest?.asset?.assetNumber ?? '', context),
_buildRow(context.translation.assetSN, item.callRequest?.asset?.assetSerialNo ?? '', context), // _buildRow(context.translation.department, item.callRequest?.asset?.department ?? '', context),
_buildRow(context.translation.assetType, assetType?.name ?? (item.assetType?.name ?? ""), context), // _buildRow(context.translation.assetSN, item.callRequest?.asset?.assetSerialNo ?? '', context),
_buildRow(context.translation.model, item.callRequest?.asset?.modelDefinition?.modelName ?? "", context), // _buildRow(context.translation.assetType, assetType?.name ?? (item.assetType?.name ?? ""), context),
_buildRow(context.translation.manufacture, item.callRequest?.asset?.modelDefinition?.manufacturerName ?? "", context), // _buildRow(context.translation.model, item.callRequest?.asset?.modelDefinition?.modelName ?? "", context),
_buildRow(context.translation.site, item.callRequest?.asset?.site?.custName ?? "", context), // _buildRow(context.translation.manufacture, item.callRequest?.asset?.modelDefinition?.manufacturerName ?? "", context),
], // _buildRow(context.translation.site, item.callRequest?.asset?.site?.custName ?? "", context),
).toShadowContainer(context); // ],
} // ).toShadowContainer(context);
// }
Widget _buildRow(String title, String value, BuildContext context) { //
return Row( // Widget _buildRow(String title, String value, BuildContext context) {
mainAxisAlignment: MainAxisAlignment.start, // return Row(
children: [ // mainAxisAlignment: MainAxisAlignment.start,
"$title: $value".bodyText(context), // children: [
], // "$title: $value".bodyText(context),
); // ],
} // );
} // }
// }

@ -1,151 +1,152 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:fluttertoast/fluttertoast.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/extensions/context_extension.dart'; // import 'package:fluttertoast/fluttertoast.dart';
import 'package:test_sa/extensions/int_extensions.dart'; // import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/views/app_style/sizing.dart'; // import 'package:test_sa/extensions/int_extensions.dart';
// import 'package:test_sa/views/app_style/sizing.dart';
import '../../../models/service_request/search_work_order.dart'; //
// import '../../../models/service_request/search_work_order.dart';
class WorkOrderItem extends StatelessWidget { //
final int index; // class WorkOrderItem extends StatelessWidget {
final SearchWorkOrder item; // final int index;
final Function(SearchWorkOrder) onPressed; // final SearchWorkOrder item;
// final Function(SearchWorkOrder) onPressed;
const WorkOrderItem({Key key, this.item, this.onPressed, this.index}) : super(key: key); //
// const WorkOrderItem({Key key, this.item, this.onPressed, this.index}) : super(key: key);
@override //
Widget build(BuildContext context) { // @override
Color itemColor = index % 2 == 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary; // Widget build(BuildContext context) {
Color onItemColor = index % 2 != 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary; // Color itemColor = index % 2 == 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary;
// Color onItemColor = index % 2 != 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary;
return Padding( //
padding: const EdgeInsets.symmetric(vertical: 4), // return Padding(
child: ElevatedButton( // padding: const EdgeInsets.symmetric(vertical: 4),
style: ElevatedButton.styleFrom( // child: ElevatedButton(
padding: EdgeInsets.symmetric(vertical: 8, horizontal: 8), // style: ElevatedButton.styleFrom(
backgroundColor: itemColor, // padding: EdgeInsets.symmetric(vertical: 8, horizontal: 8),
shape: RoundedRectangleBorder( // backgroundColor: itemColor,
borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context)), // shape: RoundedRectangleBorder(
), // borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context)),
), // ),
onPressed: () { // ),
item.callRequest.status.value == 5 || item.callRequest.status.value == 3 // onPressed: () {
? Fluttertoast.showToast( // item.callRequest.status.value == 5 || item.callRequest.status.value == 3
msg: "Request is ${item.callRequest.status.name}. No more sub work orders will be create.", // ? Fluttertoast.showToast(
toastLength: Toast.LENGTH_LONG, // msg: "Request is ${item.callRequest.status.name}. No more sub work orders will be create.",
gravity: ToastGravity.BOTTOM, // toastLength: Toast.LENGTH_LONG,
) // gravity: ToastGravity.BOTTOM,
: onPressed(item); // )
}, // : onPressed(item);
child: Column( // },
crossAxisAlignment: CrossAxisAlignment.start, // child: Column(
children: [ // crossAxisAlignment: CrossAxisAlignment.start,
Row( // children: [
children: [ // Row(
Expanded( // children: [
child: Column( // Expanded(
crossAxisAlignment: CrossAxisAlignment.start, // child: Column(
children: [ // crossAxisAlignment: CrossAxisAlignment.start,
Text( // children: [
item.callRequest.callNo ?? "-----", // Text(
style: Theme.of(context).textTheme.headline6.copyWith(color: onItemColor, fontSize: 16, fontWeight: FontWeight.bold), // item.callRequest.callNo ?? "-----",
), // style: Theme.of(context).textTheme.headline6.copyWith(color: onItemColor, fontSize: 16, fontWeight: FontWeight.bold),
// ),
// // Text(
// // item.callRequest.asset.id.toString(),
// // style: Theme.of(context).textTheme.subtitle2.copyWith(
// // color: onItemColor,
// // ),
// // ),
// Row(
// crossAxisAlignment: CrossAxisAlignment.start,
// children: [
// Text(
// "Asset Name:",
// style: Theme.of(context).textTheme.subtitle2.copyWith(
// color: onItemColor,
// ),
// ),
// 8.width,
// Expanded(
// child: Text(
// //CallRequest.Asset.ModelDefinition.AssetND
// // .AssetName
// item.callRequest.asset.modelDefinition.assetName,
// style: Theme.of(context).textTheme.subtitle2.copyWith(
// color: onItemColor,
// ),
// ),
// ),
// ],
// ),
// Row(
// children: [
// Expanded(
// child: Text(
// "Asset Number:",
// style: Theme.of(context).textTheme.subtitle2.copyWith(
// color: onItemColor,
// ),
// ),
// ),
// //if (item.clientName != null)
// Text(
// item.callRequest.asset.assetNumber,
// style: Theme.of(context).textTheme.subtitle2.copyWith(
// color: onItemColor,
// ),
// ),
// ],
// ),
// Row(
// children: [
// Expanded(
// child: Text(
// "Asset SN:",
// style: Theme.of(context).textTheme.subtitle2.copyWith(
// color: onItemColor,
// ),
// ),
// ),
// //if (item.clientName != null)
// Text( // Text(
// item.callRequest.asset.id.toString(), // item.callRequest.asset.assetSerialNo,
// style: Theme.of(context).textTheme.subtitle2.copyWith( // style: Theme.of(context).textTheme.subtitle2.copyWith(
// color: onItemColor, // color: onItemColor,
// ), // ),
// ), // ),
Row( // ],
crossAxisAlignment: CrossAxisAlignment.start, // ),
children: [ // Text(
Text( // item.currentSituation.name,
"Asset Name:", // style: Theme.of(context).textTheme.subtitle2.copyWith(
style: Theme.of(context).textTheme.subtitle2.copyWith( // color: onItemColor,
color: onItemColor, // ),
), // ),
), // Divider(
8.width, // color: onItemColor,
Expanded( // ),
child: Text( // Row(
//CallRequest.Asset.ModelDefinition.AssetND // children: [
// .AssetName // Expanded(
item.callRequest.asset.modelDefinition.assetName, // child: Text(
style: Theme.of(context).textTheme.subtitle2.copyWith( // context.translation.status,
color: onItemColor, // style: Theme.of(context).textTheme.subtitle2.copyWith(
), // color: onItemColor,
), // ),
), // ),
], // ),
), // // if (item.callRequest.status?.id != null) StatusLabel(label: item.callRequest.status.name, backgroundColor: AColors.getGasStatusColor(item.callRequest.status.id)),
Row( // ],
children: [ // ),
Expanded( // ],
child: Text( // ),
"Asset Number:", // ),
style: Theme.of(context).textTheme.subtitle2.copyWith( // ],
color: onItemColor, // ),
), // ],
), // ),
), // ),
//if (item.clientName != null) // );
Text( // }
item.callRequest.asset.assetNumber, // }
style: Theme.of(context).textTheme.subtitle2.copyWith(
color: onItemColor,
),
),
],
),
Row(
children: [
Expanded(
child: Text(
"Asset SN:",
style: Theme.of(context).textTheme.subtitle2.copyWith(
color: onItemColor,
),
),
),
//if (item.clientName != null)
Text(
item.callRequest.asset.assetSerialNo,
style: Theme.of(context).textTheme.subtitle2.copyWith(
color: onItemColor,
),
),
],
),
Text(
item.currentSituation.name,
style: Theme.of(context).textTheme.subtitle2.copyWith(
color: onItemColor,
),
),
Divider(
color: onItemColor,
),
Row(
children: [
Expanded(
child: Text(
context.translation.status,
style: Theme.of(context).textTheme.subtitle2.copyWith(
color: onItemColor,
),
),
),
// if (item.callRequest.status?.id != null) StatusLabel(label: item.callRequest.status.name, backgroundColor: AColors.getGasStatusColor(item.callRequest.status.id)),
],
),
],
),
),
],
),
],
),
),
);
}
}

@ -1,3 +1,4 @@
///todo deleted
// import 'package:flutter/material.dart'; // import 'package:flutter/material.dart';
// import 'package:provider/provider.dart'; // import 'package:provider/provider.dart';
// import 'package:test_sa/extensions/context_extension.dart'; // import 'package:test_sa/extensions/context_extension.dart';

@ -1,63 +1,64 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:test_sa/views/pages/sub_workorder/workorder_details.dart'; // import 'package:flutter/material.dart';
// import 'package:test_sa/views/pages/sub_workorder/workorder_details.dart';
import '../../../models/service_request/search_work_order.dart'; //
import '../../widgets/buttons/app_back_button.dart'; // import '../../../models/service_request/search_work_order.dart';
import '../../widgets/loaders/loading_manager.dart'; // import '../../widgets/buttons/app_back_button.dart';
// import '../../widgets/loaders/loading_manager.dart';
class WorkOrderUpdate extends StatefulWidget { //
final SearchWorkOrder item; // class WorkOrderUpdate extends StatefulWidget {
// final SearchWorkOrder item;
const WorkOrderUpdate({@required this.item, Key key}) : super(key: key); //
// const WorkOrderUpdate({@required this.item, Key key}) : super(key: key);
@override //
State<WorkOrderUpdate> createState() => _WorkOrderUpdateState(); // @override
} // State<WorkOrderUpdate> createState() => _WorkOrderUpdateState();
// }
class _WorkOrderUpdateState extends State<WorkOrderUpdate> { //
final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); // class _WorkOrderUpdateState extends State<WorkOrderUpdate> {
// final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
bool _isLoading = false; //
// bool _isLoading = false;
@override //
Widget build(BuildContext context) { // @override
return Scaffold( // Widget build(BuildContext context) {
body: SafeArea( // return Scaffold(
child: Form( // body: SafeArea(
key: _formKey, // child: Form(
child: LoadingManager( // key: _formKey,
isLoading: _isLoading, // child: LoadingManager(
isFailedLoading: false, // isLoading: _isLoading,
stateCode: 200, // isFailedLoading: false,
onRefresh: () async {}, // stateCode: 200,
child: Column( // onRefresh: () async {},
children: [ // child: Column(
Container( // children: [
color: Theme.of(context).colorScheme.primary, // Container(
padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 4), // color: Theme.of(context).colorScheme.primary,
child: Row( // padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 4),
children: [ // child: Row(
const ABackButton(), // children: [
Expanded( // const ABackButton(),
child: Center( // Expanded(
child: Text( // child: Center(
"Work Order", // child: Text(
// style: Theme.of(context).textTheme.headline6.copyWith(color: AColors.white, fontStyle: FontStyle.italic), // "Work Order",
), // // style: Theme.of(context).textTheme.headline6.copyWith(color: AColors.white, fontStyle: FontStyle.italic),
), // ),
), // ),
const SizedBox(width: 58), // ),
], // const SizedBox(width: 58),
), // ],
), // ),
WorkOrderDetails( // ),
item: widget.item, // WorkOrderDetails(
) // item: widget.item,
], // )
), // ],
), // ),
), // ),
), // ),
); // ),
} // );
} // }
// }

@ -1,436 +1,437 @@
import 'dart:io'; ///todo deleted
// import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/notification/firebase_notification_manger.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/new_views/pages/new_gas_refill_request_page.dart';
import 'package:test_sa/views/app_style/sizing.dart';
import 'package:test_sa/views/pages/device_transfer/track_device_transfer.dart';
import 'package:test_sa/views/pages/user/gas_refill/track_gas_refill.dart';
import 'package:test_sa/views/pages/user/ppm/ppm_page.dart';
import 'package:test_sa/views/pages/user/requests/create_service_request_page.dart';
import 'package:test_sa/views/widgets/dialogs/dialog.dart';
import '../../../models/enums/user_types.dart';
import '../../widgets/land_page/land_page_item.dart';
import '../device_transfer/request_device_transfer.dart';
import 'requests/requests_page.dart';
@Deprecated("Use the page which is inside the [new_views/pages/land_page] folder")
class LandPage extends StatefulWidget {
static const String id = "/old-land-page";
const LandPage({Key key}) : super(key: key);
@override
State<LandPage> createState() => _LandPageState();
}
class _LandPageState extends State<LandPage> {
double _height;
double _width;
UserProvider _userProvider;
SettingProvider _settingProvider;
// DepartmentsProvider _departmentsProvider;
// DevicesProvider _devicesProvider;
double _buttonHeight;
bool firstTime = true;
// ServiceRequestsProvider _serviceRequestsProvider;
// PreventiveMaintenanceVisitsProvider _preventiveMaintenanceVisitsProvider;
// RegularVisitsProvider _regularVisitsProvider;
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
@override
void initState() {
WidgetsBinding.instance.addPostFrameCallback((timeStamp) async {
try {
FirebaseNotificationManger.initialized(context);
} catch (error) {}
});
super.initState();
}
@override
Widget build(BuildContext context) {
String path = ModalRoute.of(context).settings.arguments;
_height = MediaQuery.of(context).size.height;
_width = MediaQuery.of(context).size.width;
_settingProvider = Provider.of<SettingProvider>(context);
_userProvider = Provider.of<UserProvider>(context);
// _departmentsProvider = Provider.of<DepartmentsProvider>(context);
// _devicesProvider = Provider.of<DevicesProvider>(context);
// _serviceRequestsProvider = Provider.of<ServiceRequestsProvider>(context);
// _preventiveMaintenanceVisitsProvider = Provider.of<PreventiveMaintenanceVisitsProvider>(context);
// _regularVisitsProvider = Provider.of<RegularVisitsProvider>(context);
// //
if (firstTime) { // import 'package:flutter/material.dart';
if (path != null) { // import 'package:flutter/services.dart';
Navigator.of(context).pushNamed("/" + path.split("/").first, arguments: path.split("/").last); // import 'package:font_awesome_flutter/font_awesome_flutter.dart';
} // import 'package:provider/provider.dart';
firstTime = false; // import 'package:test_sa/controllers/notification/firebase_notification_manger.dart';
} // import 'package:test_sa/controllers/providers/api/user_provider.dart';
_buttonHeight = 68 * AppStyle.getScaleFactor(context); // import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
return WillPopScope( // import 'package:test_sa/extensions/context_extension.dart';
onWillPop: () async { // import 'package:test_sa/new_views/pages/new_gas_refill_request_page.dart';
bool result = await showDialog( // import 'package:test_sa/views/app_style/sizing.dart';
context: context, // import 'package:test_sa/views/pages/device_transfer/track_device_transfer.dart';
builder: (_) => AAlertDialog( // import 'package:test_sa/views/pages/user/gas_refill/track_gas_refill.dart';
// title: _subtitle.exit, // import 'package:test_sa/views/pages/user/ppm/ppm_page.dart';
title: context.translation.exit, // import 'package:test_sa/views/pages/user/requests/create_service_request_page.dart';
// content: _subtitle.exitAlert, // import 'package:test_sa/views/widgets/dialogs/dialog.dart';
content: context.translation.sureExit, //
)); // import '../../../models/enums/user_types.dart';
if (result == true) { // import '../../widgets/land_page/land_page_item.dart';
if (Platform.isAndroid) { // import '../device_transfer/request_device_transfer.dart';
SystemChannels.platform.invokeMethod('SystemNavigator.pop'); // import 'requests/requests_page.dart';
} else { //
exit(0); // @Deprecated("Use the page which is inside the [new_views/pages/land_page] folder")
} // class LandPage extends StatefulWidget {
} // static const String id = "/old-land-page";
return false; //
}, // const LandPage({Key key}) : super(key: key);
child: Scaffold( //
key: _scaffoldKey, //backgroundColor: Color(0xffF8F8F8), // @override
body: SafeArea( // State<LandPage> createState() => _LandPageState();
child: Stack( // }
children: [ //
ListView( // class _LandPageState extends State<LandPage> {
padding: const EdgeInsets.all(16.0), // double _height;
children: [ // double _width;
//AppNameBar(), // UserProvider _userProvider;
// SizedBox( // SettingProvider _settingProvider;
// height: _height/3.2, //
// width: _width, // // DepartmentsProvider _departmentsProvider;
// child: CarouselSlider.builder( // // DevicesProvider _devicesProvider;
// options: CarouselOptions( // double _buttonHeight;
// height: _height/3, // bool firstTime = true;
// autoPlay: true, //
// viewportFraction: 1 // // ServiceRequestsProvider _serviceRequestsProvider;
// ), // // PreventiveMaintenanceVisitsProvider _preventiveMaintenanceVisitsProvider;
// itemCount: 4, // // RegularVisitsProvider _regularVisitsProvider;
// itemBuilder: (BuildContext context, int itemIndex, int pageViewIndex) => // final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
// Image( //
// @override
// void initState() {
// WidgetsBinding.instance.addPostFrameCallback((timeStamp) async {
// try {
// FirebaseNotificationManger.initialized(context);
// } catch (error) {}
// });
// super.initState();
// }
//
// @override
// Widget build(BuildContext context) {
// String path = ModalRoute.of(context).settings.arguments;
// _height = MediaQuery.of(context).size.height;
// _width = MediaQuery.of(context).size.width;
// _settingProvider = Provider.of<SettingProvider>(context);
// _userProvider = Provider.of<UserProvider>(context);
// // _departmentsProvider = Provider.of<DepartmentsProvider>(context);
// // _devicesProvider = Provider.of<DevicesProvider>(context);
// // _serviceRequestsProvider = Provider.of<ServiceRequestsProvider>(context);
// // _preventiveMaintenanceVisitsProvider = Provider.of<PreventiveMaintenanceVisitsProvider>(context);
// // _regularVisitsProvider = Provider.of<RegularVisitsProvider>(context);
// //
// if (firstTime) {
// if (path != null) {
// Navigator.of(context).pushNamed("/" + path.split("/").first, arguments: path.split("/").last);
// }
// firstTime = false;
// }
// _buttonHeight = 68 * AppStyle.getScaleFactor(context);
// return WillPopScope(
// onWillPop: () async {
// bool result = await showDialog(
// context: context,
// builder: (_) => AAlertDialog(
// // title: _subtitle.exit,
// title: context.translation.exit,
// // content: _subtitle.exitAlert,
// content: context.translation.sureExit,
// ));
// if (result == true) {
// if (Platform.isAndroid) {
// SystemChannels.platform.invokeMethod('SystemNavigator.pop');
// } else {
// exit(0);
// }
// }
// return false;
// },
// child: Scaffold(
// key: _scaffoldKey, //backgroundColor: Color(0xffF8F8F8),
// body: SafeArea(
// child: Stack(
// children: [
// ListView(
// padding: const EdgeInsets.all(16.0),
// children: [
// //AppNameBar(),
// // SizedBox(
// // height: _height/3.2,
// // width: _width, // // width: _width,
// image: AssetImage("assets/images/$itemIndex.png"), // // child: CarouselSlider.builder(
// fit: BoxFit.cover, // // options: CarouselOptions(
// ) // // height: _height/3,
// ), // // autoPlay: true,
// ), // // viewportFraction: 1
// SizedBox( // // ),
// height: 48 * AppStyle.getScaleFactor(context), // // itemCount: 4,
// ), // // itemBuilder: (BuildContext context, int itemIndex, int pageViewIndex) =>
// Hero( // // Image(
// tag: "logo", // // //width: _width,
// child: Image( // // image: AssetImage("assets/images/$itemIndex.png"),
// height: _height / 6, // // fit: BoxFit.cover,
// image: const AssetImage("assets/images/logo.png"), // // )
// ), // // ),
// ), // // ),
GridView.count( // // SizedBox(
shrinkWrap: true, // // height: 48 * AppStyle.getScaleFactor(context),
physics: const ClampingScrollPhysics(), // // ),
crossAxisCount: 2, // // Hero(
crossAxisSpacing: 12, // // tag: "logo",
mainAxisSpacing: 12, // // child: Image(
childAspectRatio: 1, // // height: _height / 6,
children: [ // // image: const AssetImage("assets/images/logo.png"),
if (_userProvider.user != null && _userProvider.user.type == UsersTypes.normal_user) // // ),
LandPageItem( // // ),
// text: _subtitle.newServiceRequest, // GridView.count(
text: context.translation.newServiceRequest, // shrinkWrap: true,
icon: FontAwesomeIcons.screwdriverWrench, // physics: const ClampingScrollPhysics(),
onPressed: () { // crossAxisCount: 2,
Navigator.of(context).pushNamed(CreateServiceRequestPage.id); // crossAxisSpacing: 12,
}, // mainAxisSpacing: 12,
), // childAspectRatio: 1,
LandPageItem( // children: [
// text: _subtitle.trackServiceRequest, // if (_userProvider.user != null && _userProvider.user.type == UsersTypes.normal_user)
text: context.translation.trackServiceRequest,
icon: FontAwesomeIcons.listCheck,
onPressed: () {
Navigator.of(context).pushNamed(ServiceRequestsPage.id);
},
),
//if (_userProvider.user.type == UsersTypes.engineer)
LandPageItem(
// text: _subtitle.preventiveMaintenance,
text: context.translation.preventiveMaintenance,
icon: FontAwesomeIcons.personWalking,
onPressed: () {
Navigator.of(context).pushNamed(PpmPage.id);
},
),
//if (_userProvider.user.type == UsersTypes.engineer)
// LandPageItem( // LandPageItem(
// text: _subtitle.preventiveMaintenance, // // text: _subtitle.newServiceRequest,
// icon: FontAwesomeIcons.toolbox, // text: context.translation.newServiceRequest,
// icon: FontAwesomeIcons.screwdriverWrench,
// onPressed: () { // onPressed: () {
// Navigator.of(context).pushNamed(PreventiveMaintenanceVisitsPage.id); // Navigator.of(context).pushNamed(CreateServiceRequestPage.id);
// }, // },
// ), // ),
if (_userProvider?.user != null && _userProvider?.user?.type != UsersTypes.engineer)
LandPageItem(
text: context.translation.requestGasRefill,
icon: FontAwesomeIcons.truckFast,
onPressed: () {
// Navigator.of(context).pushNamed(RequestGasRefill.id);
Navigator.of(context).pushNamed(NewGasRefillRequestPage.routeName);
},
),
LandPageItem(
text: context.translation.trackGasRefill,
icon: Icons.content_paste_search,
onPressed: () {
Navigator.of(context).pushNamed(TrackGasRefillPage.id);
},
),
LandPageItem(
text: context.translation.deviceTransfer,
icon: FontAwesomeIcons.rightLeft,
onPressed: () {
Navigator.of(context).pushNamed(RequestDeviceTransfer.id);
},
),
LandPageItem(
text: context.translation.trackAssetTransfer,
icon: FontAwesomeIcons.peopleCarryBox,
onPressed: () {
Navigator.of(context).pushNamed(TrackDeviceTransferPage.id);
},
),
// if (_userProvider?.user != null && _userProvider?.user?.type != UsersTypes.normal_user)
// LandPageItem( // LandPageItem(
// text: "Create Sub Work Order", // // text: _subtitle.trackServiceRequest,
// svgPath: "assets/images/sub_workorder_icon.svg", // text: context.translation.trackServiceRequest,
// icon: FontAwesomeIcons.listCheck,
// onPressed: () { // onPressed: () {
// Navigator.of(context).pushNamed(SearchSubWorkOrderPage.id); // Navigator.of(context).pushNamed(ServiceRequestsPage.id);
// }, // },
// ), // ),
], // //if (_userProvider.user.type == UsersTypes.engineer)
), // LandPageItem(
], // // text: _subtitle.preventiveMaintenance,
), // text: context.translation.preventiveMaintenance,
// Align( // icon: FontAwesomeIcons.personWalking,
// alignment: Alignment.topLeft, // onPressed: () {
// child: ABackButton( // Navigator.of(context).pushNamed(PpmPage.id);
// icon: Icons.power_settings_new_rounded,
// onPressed: () async {
// bool result = await showDialog(
// context: context,
// builder: (_) => const AAlertDialog(
// // title: _subtitle.signOut,
// title: "Sign Out",
// // content: _subtitle.signOutAlert,
// content: "Are you sure you want to exit?",
// ));
// if (result) {
// // _devicesProvider.reset();
// // _departmentsProvider.reset();
// // _serviceRequestsProvider.reset();
// // _regularVisitsProvider.reset();
// // _preventiveMaintenanceVisitsProvider.reset();
// _settingProvider.resetSettings();
// _userProvider.reset();
// Navigator.of(context).pop();
// }
// }, // },
// ), // ),
// ), // //if (_userProvider.user.type == UsersTypes.engineer)
// Align( // // LandPageItem(
// alignment: Alignment.topRight, // // text: _subtitle.preventiveMaintenance,
// child: Padding( // // icon: FontAwesomeIcons.toolbox,
// padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), // // onPressed: (){
// child: AIconButton( // // Navigator.of(context).pushNamed(PreventiveMaintenanceVisitsPage.id);
// iconData: Icons.menu, // // },
// color: AColors.primaryColor, // // ),
// buttonSize: 42, // if (_userProvider?.user != null && _userProvider?.user?.type != UsersTypes.engineer)
// backgroundColor: AColors.white, // LandPageItem(
// text: context.translation.requestGasRefill,
// icon: FontAwesomeIcons.truckFast,
// onPressed: () { // onPressed: () {
// _scaffoldKey.currentState.openEndDrawer(); // // Navigator.of(context).pushNamed(RequestGasRefill.id);
// Navigator.of(context).pushNamed(NewGasRefillRequestPage.routeName);
// }, // },
// ), // ),
// LandPageItem(
// text: context.translation.trackGasRefill,
// icon: Icons.content_paste_search,
// onPressed: () {
// Navigator.of(context).pushNamed(TrackGasRefillPage.id);
// },
// ), // ),
// LandPageItem(
// text: context.translation.deviceTransfer,
// icon: FontAwesomeIcons.rightLeft,
// onPressed: () {
// Navigator.of(context).pushNamed(RequestDeviceTransfer.id);
// },
// ), // ),
], // LandPageItem(
), // text: context.translation.trackAssetTransfer,
), // icon: FontAwesomeIcons.peopleCarryBox,
// endDrawer: Drawer( // onPressed: () {
// backgroundColor: Colors.white, // Navigator.of(context).pushNamed(TrackDeviceTransferPage.id);
// child: Column( // },
// children: [
// 40.height,
// Row(
// mainAxisAlignment: MainAxisAlignment.end,
// children: [
// const Icon(Icons.clear).onPress(() => Navigator.pop(context)),
// ],
// ).paddingOnly(start: 4, end: 14),
// Row(
// children: [
// Container(
// height: 50 * AppStyle.getScaleFactor(context),
// width: 50 * AppStyle.getScaleFactor(context),
// padding: EdgeInsets.all(4),
// decoration: BoxDecoration(border: Border.all(color: Theme.of(context).primaryColor, width: 2), shape: BoxShape.circle),
// child: ClipOval(
// child: ClipOval(
// child: Icon(
// Icons.person,
// size: 36,
// color: Theme.of(context).colorScheme.primary,
// ),
// ),
// ),
// ),
// 12.width,
// Text(
// _userProvider.user?.userName ?? "??",
// style: Theme.of(context).textTheme.headline6.copyWith(
// fontWeight: FontWeight.w600,
// ),
// textScaleFactor: AppStyle.getScaleFactor(context),
// ).expanded
// ],
// ).paddingOnly(start: 14, end: 14, top: 21, bottom: 21),
// Divider(
// height: 1,
// thickness: 1,
// color: AColors.greyEF,
// ),
// ListView(
// children: [
// Row(
// children: [
// Radio(
// value: "en",
// activeColor: AColors.grey3A,
// focusColor: AColors.grey3A,
// groupValue: _settingProvider.language,
// onChanged: (value) {
// _settingProvider.setLanguage(value);
// }),
// Text(
// "English",
// style: Theme.of(context).textTheme.bodyText1.copyWith(color: AColors.grey3A),
// textScaleFactor: AppStyle.getScaleFactor(context),
// ),
// Radio(
// value: "ar",
// activeColor: AColors.grey3A,
// focusColor: AColors.grey3A,
// groupValue: _settingProvider.language,
// onChanged: (value) {
// _settingProvider.setLanguage(value);
// }),
// Text(
// "عربي",
// style: Theme.of(context).textTheme.bodyText1.copyWith(color: AColors.grey3A),
// textScaleFactor: AppStyle.getScaleFactor(context),
// ), // ),
// // if (_userProvider?.user != null && _userProvider?.user?.type != UsersTypes.normal_user)
// // LandPageItem(
// // text: "Create Sub Work Order",
// // svgPath: "assets/images/sub_workorder_icon.svg",
// // onPressed: () {
// // Navigator.of(context).pushNamed(SearchSubWorkOrderPage.id);
// // },
// // ),
// ], // ],
// ), // ),
// Row(
// children: [
// Radio(
// value: true,
// activeColor: AColors.grey3A,
// focusColor: AColors.grey3A,
// groupValue: _settingProvider.language,
// onChanged: (value) {
// _settingProvider.setDarkTheme(value);
// }),
// Text(
// "Dark",
// style: Theme.of(context).textTheme.bodyText1.copyWith(color: AColors.grey3A),
// textScaleFactor: AppStyle.getScaleFactor(context),
// ),
// Radio(
// value: false,
// activeColor: AColors.grey3A,
// focusColor: AColors.grey3A,
// groupValue: _settingProvider.language,
// onChanged: (value) {
// _settingProvider.setDarkTheme(value);
// }),
// Text(
// "Light",
// style: Theme.of(context).textTheme.bodyText1.copyWith(color: AColors.grey3A),
// textScaleFactor: AppStyle.getScaleFactor(context),
// ),
// ], // ],
// ), // ),
// // DrawerItem( // // Align(
// // icon: Icons.notifications, // // alignment: Alignment.topLeft,
// // title: _subtitle.notifications, // // child: ABackButton(
// // onPressed: () { // // icon: Icons.power_settings_new_rounded,
// // Navigator.of(context).pushNamed(NotificationsPage.id); // // onPressed: () async {
// // bool result = await showDialog(
// // context: context,
// // builder: (_) => const AAlertDialog(
// // // title: _subtitle.signOut,
// // title: "Sign Out",
// // // content: _subtitle.signOutAlert,
// // content: "Are you sure you want to exit?",
// // ));
// // if (result) {
// // // _devicesProvider.reset();
// // // _departmentsProvider.reset();
// // // _serviceRequestsProvider.reset();
// // // _regularVisitsProvider.reset();
// // // _preventiveMaintenanceVisitsProvider.reset();
// // _settingProvider.resetSettings();
// // _userProvider.reset();
// // Navigator.of(context).pop();
// // }
// // }, // // },
// // ), // // ),
// DrawerItem( // // ),
// icon: Icons.mail, // // Align(
// // title: _subtitle.email, // // alignment: Alignment.topRight,
// title: "Email", // // child: Padding(
// onPressed: () { // // padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4),
// launch("mailto:customerservice@Test SA.com"); // // child: AIconButton(
// }, // // iconData: Icons.menu,
// ), // // color: AColors.primaryColor,
// // DrawerItem( // // buttonSize: 42,
// // icon: Icons.phone_in_talk, // // backgroundColor: AColors.white,
// // title: "${_subtitle.hotLine} 15564",
// // onPressed: () { // // onPressed: () {
// // launch("tel:15564"); // // _scaffoldKey.currentState.openEndDrawer();
// // }, // // },
// // ), // // ),
// // ),
// // ),
// ],
// ),
// ),
// // endDrawer: Drawer(
// // backgroundColor: Colors.white,
// // child: Column(
// // children: [
// // 40.height,
// // Row(
// // mainAxisAlignment: MainAxisAlignment.end,
// // children: [
// // const Icon(Icons.clear).onPress(() => Navigator.pop(context)),
// // ],
// // ).paddingOnly(start: 4, end: 14),
// // Row(
// // children: [
// // Container(
// // height: 50 * AppStyle.getScaleFactor(context),
// // width: 50 * AppStyle.getScaleFactor(context),
// // padding: EdgeInsets.all(4),
// // decoration: BoxDecoration(border: Border.all(color: Theme.of(context).primaryColor, width: 2), shape: BoxShape.circle),
// // child: ClipOval(
// // child: ClipOval(
// // child: Icon(
// // Icons.person,
// // size: 36,
// // color: Theme.of(context).colorScheme.primary,
// // ),
// // ),
// // ),
// // ),
// // 12.width,
// // Text(
// // _userProvider.user?.userName ?? "??",
// // style: Theme.of(context).textTheme.headline6.copyWith(
// // fontWeight: FontWeight.w600,
// // ),
// // textScaleFactor: AppStyle.getScaleFactor(context),
// // ).expanded
// // ],
// // ).paddingOnly(start: 14, end: 14, top: 21, bottom: 21),
// // Divider(
// // height: 1,
// // thickness: 1,
// // color: AColors.greyEF,
// // ),
// // ListView(
// // children: [
// // Row(
// // children: [
// // Radio(
// // value: "en",
// // activeColor: AColors.grey3A,
// // focusColor: AColors.grey3A,
// // groupValue: _settingProvider.language,
// // onChanged: (value) {
// // _settingProvider.setLanguage(value);
// // }),
// // Text(
// // "English",
// // style: Theme.of(context).textTheme.bodyText1.copyWith(color: AColors.grey3A),
// // textScaleFactor: AppStyle.getScaleFactor(context),
// // ),
// // Radio(
// // value: "ar",
// // activeColor: AColors.grey3A,
// // focusColor: AColors.grey3A,
// // groupValue: _settingProvider.language,
// // onChanged: (value) {
// // _settingProvider.setLanguage(value);
// // }),
// // Text(
// // "عربي",
// // style: Theme.of(context).textTheme.bodyText1.copyWith(color: AColors.grey3A),
// // textScaleFactor: AppStyle.getScaleFactor(context),
// // ),
// // ],
// // ),
// // Row(
// // children: [
// // Radio(
// // value: true,
// // activeColor: AColors.grey3A,
// // focusColor: AColors.grey3A,
// // groupValue: _settingProvider.language,
// // onChanged: (value) {
// // _settingProvider.setDarkTheme(value);
// // }),
// // Text(
// // "Dark",
// // style: Theme.of(context).textTheme.bodyText1.copyWith(color: AColors.grey3A),
// // textScaleFactor: AppStyle.getScaleFactor(context),
// // ),
// // Radio(
// // value: false,
// // activeColor: AColors.grey3A,
// // focusColor: AColors.grey3A,
// // groupValue: _settingProvider.language,
// // onChanged: (value) {
// // _settingProvider.setDarkTheme(value);
// // }),
// // Text(
// // "Light",
// // style: Theme.of(context).textTheme.bodyText1.copyWith(color: AColors.grey3A),
// // textScaleFactor: AppStyle.getScaleFactor(context),
// // ),
// // ],
// // ),
// // // DrawerItem(
// // // icon: Icons.notifications,
// // // title: _subtitle.notifications,
// // // onPressed: () {
// // // Navigator.of(context).pushNamed(NotificationsPage.id);
// // // },
// // // ),
// // DrawerItem( // // DrawerItem(
// // icon: FontAwesomeIcons.linkedinIn, // // icon: Icons.mail,
// // title: _subtitle.linkedIn, // // // title: _subtitle.email,
// // title: "Email",
// // onPressed: () { // // onPressed: () {
// // launch("https://www.linkedin.com/company/Test SA/"); // // launch("mailto:customerservice@Test SA.com");
// // }, // // },
// // ), // // ),
// // // DrawerItem(
// // // icon: Icons.phone_in_talk,
// // // title: "${_subtitle.hotLine} 15564",
// // // onPressed: () {
// // // launch("tel:15564");
// // // },
// // // ),
// // // DrawerItem(
// // // icon: FontAwesomeIcons.linkedinIn,
// // // title: _subtitle.linkedIn,
// // // onPressed: () {
// // // launch("https://www.linkedin.com/company/Test SA/");
// // // },
// // // ),
// // // DrawerItem(
// // // icon: FontAwesomeIcons.globe,
// // // title: _subtitle.ourWebsite,
// // // onPressed: () {
// // // launch("https://www.Test SA.com/");
// // // },
// // // ),
// // DrawerItem( // // DrawerItem(
// // icon: FontAwesomeIcons.globe, // // icon: Icons.share,
// // title: _subtitle.ourWebsite, // // // title: _subtitle.shareApp,
// // onPressed: () { // // title: "Share App",
// // launch("https://www.Test SA.com/"); // // onPressed: () async {
// // PackageInfo packageInfo = await PackageInfo.fromPlatform();
// // String shareLink = "\n https://play.google.com/store/apps/details?id=" + packageInfo.packageName + "\n https://apps.apple.com/us/app/";
// // Share.share(shareLink);
// // }, // // },
// // ), // // ),
// DrawerItem( // // ],
// icon: Icons.share, // // ).expanded,
// // title: _subtitle.shareApp, // // Divider(height: 1, thickness: 1, color: AColors.greyEF),
// title: "Share App", // // Row(
// onPressed: () async { // // mainAxisAlignment: MainAxisAlignment.center,
// PackageInfo packageInfo = await PackageInfo.fromPlatform(); // // children: [
// String shareLink = "\n https://play.google.com/store/apps/details?id=" + packageInfo.packageName + "\n https://apps.apple.com/us/app/"; // // Text(
// Share.share(shareLink); // // "Powered By Cloud Solutions",
// }, // // style: Theme.of(context).textTheme.headline6.copyWith(fontWeight: FontWeight.w500, color: AColors.grey3A, fontSize: 12),
// ), // // textScaleFactor: AppStyle.getScaleFactor(context),
// ], // // ),
// ).expanded, // // 6.width,
// Divider(height: 1, thickness: 1, color: AColors.greyEF), // // Image.asset("assets/images/cloud_logo.png", width: 32, height: 32)
// Row( // // ],
// mainAxisAlignment: MainAxisAlignment.center, // // ).paddingOnly(start: 20, end: 20, top: 8, bottom: 8),
// children: [ // // ],
// Text( // // ),
// "Powered By Cloud Solutions", // // ),
// style: Theme.of(context).textTheme.headline6.copyWith(fontWeight: FontWeight.w500, color: AColors.grey3A, fontSize: 12),
// textScaleFactor: AppStyle.getScaleFactor(context),
// ),
// 6.width,
// Image.asset("assets/images/cloud_logo.png", width: 32, height: 32)
// ],
// ).paddingOnly(start: 20, end: 20, top: 8, bottom: 8),
// ],
// ),
// ), // ),
), // );
); // }
} // }
}

@ -1,49 +1,50 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:provider/provider.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart'; // import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; // import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/models/ppm/ppm.dart'; // import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
// import 'package:test_sa/models/ppm/ppm.dart';
class FutureEditPpm extends StatefulWidget { //
final Ppm ppm; // class FutureEditPpm extends StatefulWidget {
// final Ppm ppm;
const FutureEditPpm({Key key, this.ppm}) : super(key: key); //
// const FutureEditPpm({Key key, this.ppm}) : super(key: key);
@override //
State<FutureEditPpm> createState() => _FutureEditPpmState(); // @override
} // State<FutureEditPpm> createState() => _FutureEditPpmState();
// }
class _FutureEditPpmState extends State<FutureEditPpm> { //
UserProvider _userProvider; // class _FutureEditPpmState extends State<FutureEditPpm> {
SettingProvider _settingProvider; // UserProvider _userProvider;
// SettingProvider _settingProvider;
@override //
Widget build(BuildContext context) { // @override
_userProvider = Provider.of<UserProvider>(context); // Widget build(BuildContext context) {
_settingProvider = Provider.of<SettingProvider>(context); // _userProvider = Provider.of<UserProvider>(context);
//String requestId = ModalRoute.of(context).settings.arguments; // _settingProvider = Provider.of<SettingProvider>(context);
// //String requestId = ModalRoute.of(context).settings.arguments;
// return Scaffold( //
// body: FutureBuilder<Pentry>( // // return Scaffold(
// future: RegularVisitsProvider().getPentry(user: _userProvider.user, host: _settingProvider.host, id: widget.ppm.id), // // body: FutureBuilder<Pentry>(
// builder: (BuildContext context, AsyncSnapshot<Pentry> snapshot) { // // future: RegularVisitsProvider().getPentry(user: _userProvider.user, host: _settingProvider.host, id: widget.ppm.id),
// if (snapshot.hasError) { // // builder: (BuildContext context, AsyncSnapshot<Pentry> snapshot) {
// return FailedLoading( // // if (snapshot.hasError) {
// message: context.translation.failedToCompleteRequest, // // return FailedLoading(
// onReload: () { // // message: context.translation.failedToCompleteRequest,
// setState(() {}); // // onReload: () {
// }, // // setState(() {});
// ); // // },
// // );
// // }
// // if (snapshot.hasData) {
// // return EditPentry(
// // pentry: snapshot.data,
// // ppm: widget.ppm,
// // );
// // }
// // return const Center(child: ALoading());
// // },
// // ),
// // );
// } // }
// if (snapshot.hasData) {
// return EditPentry(
// pentry: snapshot.data,
// ppm: widget.ppm,
// );
// } // }
// return const Center(child: ALoading());
// },
// ),
// );
}
}

@ -1,19 +1,20 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:test_sa/views/app_style/sizing.dart'; // import 'package:flutter/material.dart';
// import 'package:test_sa/views/app_style/sizing.dart';
class AppNameBar extends StatelessWidget { //
@override // class AppNameBar extends StatelessWidget {
Widget build(BuildContext context) { // @override
return Container( // Widget build(BuildContext context) {
height: 50 * AppStyle.getScaleFactor(context), // return Container(
// color: AColors.primaryColor, // height: 50 * AppStyle.getScaleFactor(context),
padding: const EdgeInsets.all(8.0), // // color: AColors.primaryColor,
child: Center( // padding: const EdgeInsets.all(8.0),
child: Text( // child: Center(
"Test SA", // child: Text(
style: Theme.of(context).textTheme.headline6.copyWith(/*color: AColors.white,*/ fontStyle: FontStyle.italic), // "Test SA",
), // style: Theme.of(context).textTheme.headline6.copyWith(/*color: AColors.white,*/ fontStyle: FontStyle.italic),
), // ),
); // ),
} // );
} // }
// }

@ -1,27 +1,28 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:test_sa/views/app_style/sizing.dart'; // import 'package:flutter/material.dart';
// import 'package:test_sa/views/app_style/sizing.dart';
class AFlatButton extends StatelessWidget { //
final String text; // class AFlatButton extends StatelessWidget {
final Color textColor; // final String text;
final TextStyle style; // final Color textColor;
final EdgeInsets padding; // final TextStyle style;
final VoidCallback onPressed; // final EdgeInsets padding;
// final VoidCallback onPressed;
const AFlatButton({Key key, this.text, this.textColor, this.style, this.onPressed, this.padding}) : super(key: key); //
// const AFlatButton({Key key, this.text, this.textColor, this.style, this.onPressed, this.padding}) : super(key: key);
@override //
Widget build(BuildContext context) { // @override
return TextButton( // Widget build(BuildContext context) {
style: TextButton.styleFrom( // return TextButton(
foregroundColor: this.textColor ?? Colors.black, // style: TextButton.styleFrom(
padding: padding, // foregroundColor: this.textColor ?? Colors.black,
), // padding: padding,
onPressed: onPressed, // ),
child: Text( // onPressed: onPressed,
text ?? "", // child: Text(
style: style ?? Theme.of(context).textTheme.bodyText1, // text ?? "",
textScaleFactor: AppStyle.getScaleFactor(context), // style: style ?? Theme.of(context).textTheme.bodyText1,
)); // textScaleFactor: AppStyle.getScaleFactor(context),
} // ));
} // }
// }

@ -1,35 +1,36 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:test_sa/views/app_style/sizing.dart'; // import 'package:flutter/material.dart';
// import 'package:test_sa/views/app_style/sizing.dart';
class AOutLinedButton extends StatelessWidget { //
final String text; // class AOutLinedButton extends StatelessWidget {
final Color color; // final String text;
final EdgeInsets padding; // final Color color;
final TextStyle textStyle; // final EdgeInsets padding;
final VoidCallback onPressed; // final TextStyle textStyle;
// final VoidCallback onPressed;
const AOutLinedButton({Key key, this.color/*= AColors.primaryColor*/, this.text, this.padding, this.onPressed, this.textStyle}) : super(key: key); //
// const AOutLinedButton({Key key, this.color/*= AColors.primaryColor*/, this.text, this.padding, this.onPressed, this.textStyle}) : super(key: key);
@override //
Widget build(BuildContext context) { // @override
return OutlinedButton( // Widget build(BuildContext context) {
style: ElevatedButton.styleFrom( // return OutlinedButton(
padding: padding ?? EdgeInsets.symmetric(vertical: 12), // style: ElevatedButton.styleFrom(
textStyle: textStyle ?? Theme.of(context).textTheme.subtitle2.copyWith(fontSize: 18), // padding: padding ?? EdgeInsets.symmetric(vertical: 12),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context))), // textStyle: textStyle ?? Theme.of(context).textTheme.subtitle2.copyWith(fontSize: 18),
), // shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context))),
onPressed: onPressed, // ),
child: Row( // onPressed: onPressed,
children: [ // child: Row(
Expanded( // children: [
child: Text( // Expanded(
text ?? "", // child: Text(
// style: Theme.of(context).textTheme.subtitle2.copyWith(color: AColors.primaryColor, fontSize: 14, fontWeight: FontWeight.w600), // text ?? "",
textAlign: TextAlign.center, // // style: Theme.of(context).textTheme.subtitle2.copyWith(color: AColors.primaryColor, fontSize: 14, fontWeight: FontWeight.w600),
textScaleFactor: AppStyle.getScaleFactor(context), // textAlign: TextAlign.center,
), // textScaleFactor: AppStyle.getScaleFactor(context),
), // ),
], // ),
)); // ],
} // ));
} // }
// }

@ -1,28 +1,29 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:test_sa/views/app_style/sizing.dart'; // import 'package:flutter/material.dart';
// import 'package:test_sa/views/app_style/sizing.dart';
class ASmallButton extends StatelessWidget { //
final String text; // class ASmallButton extends StatelessWidget {
final TextStyle style; // final String text;
final Color color; // final TextStyle style;
final EdgeInsets padding; // final Color color;
final VoidCallback onPressed; // final EdgeInsets padding;
// final VoidCallback onPressed;
const ASmallButton({Key key, this.text, this.style, this.onPressed, this.padding, this.color}) : super(key: key); //
// const ASmallButton({Key key, this.text, this.style, this.onPressed, this.padding, this.color}) : super(key: key);
@override //
Widget build(BuildContext context) { // @override
return ElevatedButton( // Widget build(BuildContext context) {
style: ElevatedButton.styleFrom( // return ElevatedButton(
padding: padding, // style: ElevatedButton.styleFrom(
primary: color ?? Theme.of(context).primaryColor, // padding: padding,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)), // primary: color ?? Theme.of(context).primaryColor,
), // shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),
child: Text( // ),
text ?? "", // child: Text(
style: style ?? Theme.of(context).textTheme.bodyText1.copyWith(color: color == Colors.white ? Theme.of(context).primaryColor : Colors.white), // text ?? "",
textScaleFactor: AppStyle.getScaleFactor(context), // style: style ?? Theme.of(context).textTheme.bodyText1.copyWith(color: color == Colors.white ? Theme.of(context).primaryColor : Colors.white),
), // textScaleFactor: AppStyle.getScaleFactor(context),
onPressed: onPressed); // ),
} // onPressed: onPressed);
} // }
// }

@ -1,23 +1,24 @@
import 'package:flutter/material.dart'; ///todo deleted
// import 'package:flutter/material.dart';
class CarveInImage extends CustomClipper<Path> { //
final double gab; // class CarveInImage extends CustomClipper<Path> {
var radius = 10.0; // final double gab;
// var radius = 10.0;
CarveInImage(this.gab); //
// CarveInImage(this.gab);
@override //
Path getClip(Size size) { // @override
Path path = Path(); // Path getClip(Size size) {
path.lineTo(0, size.height); // Path path = Path();
path.lineTo(size.width / 2 - gab / 2, size.height); // path.lineTo(0, size.height);
path.arcToPoint(Offset(size.width / 2 + gab / 2, size.height), radius: Radius.circular(gab / 2)); // path.lineTo(size.width / 2 - gab / 2, size.height);
path.lineTo(size.width, size.height); // path.arcToPoint(Offset(size.width / 2 + gab / 2, size.height), radius: Radius.circular(gab / 2));
path.lineTo(size.width, 0); // path.lineTo(size.width, size.height);
path.lineTo(0, 0); // path.lineTo(size.width, 0);
return path; // path.lineTo(0, 0);
} // return path;
// }
@override //
bool shouldReclip(CustomClipper<Path> oldClipper) => true; // @override
} // bool shouldReclip(CustomClipper<Path> oldClipper) => true;
// }

@ -1,79 +1,80 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:test_sa/extensions/context_extension.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/views/app_style/sizing.dart'; // import 'package:test_sa/extensions/context_extension.dart';
// import 'package:test_sa/views/app_style/sizing.dart';
import 'date_picker.dart'; //
// import 'date_picker.dart';
class FromToDateBar extends StatefulWidget { //
final DateTime from; // class FromToDateBar extends StatefulWidget {
final DateTime to; // final DateTime from;
final Function(DateTime) onPickFrom; // final DateTime to;
final Function(DateTime) onPickTo; // final Function(DateTime) onPickFrom;
// final Function(DateTime) onPickTo;
const FromToDateBar({Key key, this.from, this.to, this.onPickFrom, this.onPickTo}) : super(key: key); //
// const FromToDateBar({Key key, this.from, this.to, this.onPickFrom, this.onPickTo}) : super(key: key);
@override //
_FromToDateBarState createState() => _FromToDateBarState(); // @override
} // _FromToDateBarState createState() => _FromToDateBarState();
// }
class _FromToDateBarState extends State<FromToDateBar> { //
DateTime _from; // class _FromToDateBarState extends State<FromToDateBar> {
DateTime _to; // DateTime _from;
// DateTime _to;
@override //
void initState() { // @override
_from = widget.from; // void initState() {
_to = widget.to; // _from = widget.from;
super.initState(); // _to = widget.to;
} // super.initState();
// }
@override //
Widget build(BuildContext context) { // @override
return Row( // Widget build(BuildContext context) {
mainAxisAlignment: MainAxisAlignment.spaceEvenly, // return Row(
children: [ // mainAxisAlignment: MainAxisAlignment.spaceEvenly,
Column( // children: [
crossAxisAlignment: CrossAxisAlignment.start, // Column(
children: [ // crossAxisAlignment: CrossAxisAlignment.start,
Text( // children: [
context.translation.from, // Text(
style: Theme.of(context).textTheme.bodyText1.copyWith(fontSize: 12, fontWeight: FontWeight.normal), // context.translation.from,
textScaleFactor: AppStyle.getScaleFactor(context), // style: Theme.of(context).textTheme.bodyText1.copyWith(fontSize: 12, fontWeight: FontWeight.normal),
), // textScaleFactor: AppStyle.getScaleFactor(context),
ADatePicker( // ),
date: _from, // ADatePicker(
from: DateTime(1950), // date: _from,
onDatePicker: (date) { // from: DateTime(1950),
_from = date; // onDatePicker: (date) {
setState(() {}); // _from = date;
widget.onPickFrom(date); // setState(() {});
}, // widget.onPickFrom(date);
), // },
], // ),
), // ],
Column( // ),
crossAxisAlignment: CrossAxisAlignment.start, // Column(
children: [ // crossAxisAlignment: CrossAxisAlignment.start,
Text( // children: [
context.translation.to, // Text(
style: Theme.of(context).textTheme.bodyText1.copyWith(fontSize: 12, fontWeight: FontWeight.normal), // context.translation.to,
textScaleFactor: AppStyle.getScaleFactor(context), // style: Theme.of(context).textTheme.bodyText1.copyWith(fontSize: 12, fontWeight: FontWeight.normal),
), // textScaleFactor: AppStyle.getScaleFactor(context),
ADatePicker( // ),
date: _to, // ADatePicker(
from: DateTime(1950), // date: _to,
onDatePicker: (date) { // from: DateTime(1950),
_to = date; // onDatePicker: (date) {
setState(() {}); // _to = date;
widget.onPickTo(date); // setState(() {});
}, // widget.onPickTo(date);
), // },
], // ),
), // ],
SizedBox.shrink(), // ),
SizedBox.shrink(), // SizedBox.shrink(),
SizedBox.shrink(), // SizedBox.shrink(),
], // SizedBox.shrink(),
); // ],
} // );
} // }
// }

@ -1,72 +1,73 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:test_sa/views/app_style/sizing.dart'; // import 'package:flutter/material.dart';
// import 'package:test_sa/views/app_style/sizing.dart';
class ADateTimePicker extends StatelessWidget { //
final DateTime date; // class ADateTimePicker extends StatelessWidget {
final DateTime from; // final DateTime date;
final DateTime to; // final DateTime from;
final Function(DateTime) onDateTimePicker; // final DateTime to;
final bool enable; // final Function(DateTime) onDateTimePicker;
// final bool enable;
const ADateTimePicker({Key key, this.date, this.onDateTimePicker, this.from, this.to, this.enable}) : super(key: key); //
// const ADateTimePicker({Key key, this.date, this.onDateTimePicker, this.from, this.to, this.enable}) : super(key: key);
@override //
Widget build(BuildContext context) { // @override
return ElevatedButton( // Widget build(BuildContext context) {
style: ElevatedButton.styleFrom( // return ElevatedButton(
foregroundColor: Colors.white, // style: ElevatedButton.styleFrom(
textStyle: Theme.of(context).textTheme.subtitle2, // foregroundColor: Colors.white,
shape: RoundedRectangleBorder( // textStyle: Theme.of(context).textTheme.subtitle2,
borderRadius: BorderRadius.circular(12 * AppStyle.getScaleFactor(context)), // shape: RoundedRectangleBorder(
), // borderRadius: BorderRadius.circular(12 * AppStyle.getScaleFactor(context)),
), // ),
child: Text( // ),
date == null ? "Pick Time" : date.toString().substring(0, date.toString().lastIndexOf(":")), // child: Text(
textScaleFactor: AppStyle.getScaleFactor(context), // date == null ? "Pick Time" : date.toString().substring(0, date.toString().lastIndexOf(":")),
), // textScaleFactor: AppStyle.getScaleFactor(context),
onPressed: enable // ),
? () async { // onPressed: enable
// TimeOfDay picked = await showTimePicker(context: context, initialTime: TimeOfDay.now()); // ? () async {
onDateTimePicker(await showDateTimePicker(context: context, initialDate: date, firstDate: from, lastDate: to)); // // TimeOfDay picked = await showTimePicker(context: context, initialTime: TimeOfDay.now());
} // onDateTimePicker(await showDateTimePicker(context: context, initialDate: date, firstDate: from, lastDate: to));
: null, // }
); // : null,
} // );
} // }
// }
Future<DateTime> showDateTimePicker({ //
BuildContext context, // Future<DateTime> showDateTimePicker({
DateTime initialDate, // BuildContext context,
DateTime firstDate, // DateTime initialDate,
DateTime lastDate, // DateTime firstDate,
}) async { // DateTime lastDate,
initialDate ??= DateTime.now(); // }) async {
firstDate ??= initialDate.subtract(const Duration(days: 365 * 100)); // initialDate ??= DateTime.now();
lastDate ??= firstDate.add(const Duration(days: 365 * 200)); // firstDate ??= initialDate.subtract(const Duration(days: 365 * 100));
// lastDate ??= firstDate.add(const Duration(days: 365 * 200));
final DateTime selectedDate = await showDatePicker( //
context: context, // final DateTime selectedDate = await showDatePicker(
initialDate: initialDate, // context: context,
firstDate: firstDate, // initialDate: initialDate,
lastDate: lastDate, // firstDate: firstDate,
); // lastDate: lastDate,
// );
if (selectedDate == null) return null; //
// if (selectedDate == null) return null;
if (!context.mounted) return selectedDate; //
// if (!context.mounted) return selectedDate;
final TimeOfDay selectedTime = await showTimePicker( //
context: context, // final TimeOfDay selectedTime = await showTimePicker(
initialTime: TimeOfDay.fromDateTime(selectedDate), // context: context,
); // initialTime: TimeOfDay.fromDateTime(selectedDate),
// );
return selectedTime == null //
? selectedDate // return selectedTime == null
: DateTime( // ? selectedDate
selectedDate.year, // : DateTime(
selectedDate.month, // selectedDate.year,
selectedDate.day, // selectedDate.month,
selectedTime.hour, // selectedDate.day,
selectedTime.minute, // selectedTime.hour,
); // selectedTime.minute,
} // );
// }

@ -1,47 +1,48 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:test_sa/extensions/context_extension.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/models/department.dart'; // import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/views/app_style/sizing.dart'; // import 'package:test_sa/models/department.dart';
import 'package:test_sa/views/widgets/departments/single_department_picker.dart'; // import 'package:test_sa/views/app_style/sizing.dart';
// import 'package:test_sa/views/widgets/departments/single_department_picker.dart';
class DepartmentButton extends StatelessWidget { //
final Function(Department) onDepartmentPick; // class DepartmentButton extends StatelessWidget {
final Department department; // final Function(Department) onDepartmentPick;
// final Department department;
const DepartmentButton({Key key, this.department, this.onDepartmentPick}) : super(key: key); //
// const DepartmentButton({Key key, this.department, this.onDepartmentPick}) : super(key: key);
@override //
Widget build(BuildContext context) { // @override
return ElevatedButton( // Widget build(BuildContext context) {
style: ElevatedButton.styleFrom( // return ElevatedButton(
elevation: 0, // style: ElevatedButton.styleFrom(
padding: EdgeInsets.symmetric(horizontal: 8, vertical: 8), // elevation: 0,
shape: RoundedRectangleBorder( // padding: EdgeInsets.symmetric(horizontal: 8, vertical: 8),
borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)), // shape: RoundedRectangleBorder(
), // borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)),
// foregroundColor: AColors.primaryColor, // ),
// backgroundColor: AColors.inputFieldBackgroundColor, // // foregroundColor: AColors.primaryColor,
), // // backgroundColor: AColors.inputFieldBackgroundColor,
child: Row( // ),
children: [ // child: Row(
Expanded( // children: [
child: Padding( // Expanded(
padding: const EdgeInsets.symmetric(horizontal: 8), // child: Padding(
child: Text( // padding: const EdgeInsets.symmetric(horizontal: 8),
department?.name ?? context.translation.pickUnite, // child: Text(
style: Theme.of(context).textTheme.bodyText1, // department?.name ?? context.translation.pickUnite,
textScaleFactor: AppStyle.getScaleFactor(context), // style: Theme.of(context).textTheme.bodyText1,
textDirection: TextDirection.rtl, // textScaleFactor: AppStyle.getScaleFactor(context),
textAlign: TextAlign.left, // textDirection: TextDirection.rtl,
), // textAlign: TextAlign.left,
), // ),
), // ),
// const Icon(Icons.keyboard_arrow_down, size: 28, color: AColors.grey3A), // ),
], // // const Icon(Icons.keyboard_arrow_down, size: 28, color: AColors.grey3A),
), // ],
onPressed: () async { // ),
Department _department = await Navigator.of(context).pushNamed(SingleDepartmentPicker.id) as Department; // onPressed: () async {
onDepartmentPick(_department); // Department _department = await Navigator.of(context).pushNamed(SingleDepartmentPicker.id) as Department;
}); // onDepartmentPick(_department);
} // });
} // }
// }

@ -1,75 +1,76 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:provider/provider.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/extensions/context_extension.dart'; // import 'package:provider/provider.dart';
import 'package:test_sa/views/widgets/loaders/image_loader.dart'; // import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/views/widgets/requests/info_row.dart'; // import 'package:test_sa/views/widgets/loaders/image_loader.dart';
import 'package:test_sa/views/widgets/requests/request_status.dart'; // import 'package:test_sa/views/widgets/requests/info_row.dart';
// import 'package:test_sa/views/widgets/requests/request_status.dart';
import '../../../controllers/providers/api/user_provider.dart'; //
import '../../../models/device/device_transfer_info.dart'; // import '../../../controllers/providers/api/user_provider.dart';
import '../images/multi_image_picker.dart'; // import '../../../models/device/device_transfer_info.dart';
// import '../images/multi_image_picker.dart';
class DeviceTransferInfoSection extends StatelessWidget { //
final DeviceTransferInfo info; // class DeviceTransferInfoSection extends StatelessWidget {
final bool isSender; // final DeviceTransferInfo info;
final VoidCallback onEdit; // final bool isSender;
// final VoidCallback onEdit;
const DeviceTransferInfoSection({Key key, this.info, this.onEdit, this.isSender}) : super(key: key); //
// const DeviceTransferInfoSection({Key key, this.info, this.onEdit, this.isSender}) : super(key: key);
@override //
Widget build(BuildContext context) { // @override
info.userName = Provider.of<UserProvider>(context).user.username; // Widget build(BuildContext context) {
info.attachments ??= []; // info.userName = Provider.of<UserProvider>(context).user.username;
return Column( // info.attachments ??= [];
children: [ // return Column(
RequestInfoRow( // children: [
title: context.translation.hospital,
info: info.client.name,
),
RequestInfoRow(
title: context.translation.department,
info: info.department.name,
),
// RequestInfoRow( // RequestInfoRow(
// title: isSender ? "Sender Name " : "Receiver Name", // title: context.translation.hospital,
// info: info.userName, // info: info.client.name,
// ), // ),
RequestInfoRow( // RequestInfoRow(
title: context.translation.workingHours, // title: context.translation.department,
info: info.workingHours, // info: info.department.name,
), // ),
RequestInfoRow( // // RequestInfoRow(
title: context.translation.travelingHours, // // title: isSender ? "Sender Name " : "Receiver Name",
info: info.travelingHours, // // info: info.userName,
), // // ),
RequestInfoRow( // RequestInfoRow(
title: "Comment", // title: context.translation.workingHours,
info: info.comment, // info: info.workingHours,
), // ),
RequestInfoRow( // RequestInfoRow(
title: "Assigned Engineer", // title: context.translation.travelingHours,
info: info.assignedEmployeeName, // info: info.travelingHours,
), // ),
RequestInfoRow( // RequestInfoRow(
title: "Signature", // title: "Comment",
info: info.engSignature?.isEmpty != false ? context.translation.noDateFound : null, // info: info.comment,
contentWidget: info.engSignature?.isEmpty != false ? null : ImageLoader(url: info.engSignature), // ),
), // RequestInfoRow(
Padding( // title: "Assigned Engineer",
padding: const EdgeInsets.symmetric(vertical: 16), // info: info.assignedEmployeeName,
child: MultiFilesPicker( // ),
label: "Attachments", // RequestInfoRow(
files: info.attachments, // title: "Signature",
enabled: false, // info: info.engSignature?.isEmpty != false ? context.translation.noDateFound : null,
), // contentWidget: info.engSignature?.isEmpty != false ? null : ImageLoader(url: info.engSignature),
), // ),
RequestInfoRow( // Padding(
title: context.translation.status, // padding: const EdgeInsets.symmetric(vertical: 16),
infoWidget: StatusLabel( // child: MultiFilesPicker(
label: info.status?.name, /*backgroundColor: AColors.getGasStatusColor(info.status?.id)*/ // label: "Attachments",
), // files: info.attachments,
), // enabled: false,
], // ),
); // ),
} // RequestInfoRow(
} // title: context.translation.status,
// infoWidget: StatusLabel(
// label: info.status?.name, /*backgroundColor: AColors.getGasStatusColor(info.status?.id)*/
// ),
// ),
// ],
// );
// }
// }

@ -1,41 +1,42 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:test_sa/extensions/int_extensions.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; // import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/views/app_style/sizing.dart'; // import 'package:test_sa/extensions/widget_extensions.dart';
// import 'package:test_sa/views/app_style/sizing.dart';
class DrawerItem extends StatelessWidget { //
final String title; // class DrawerItem extends StatelessWidget {
final IconData icon; // final String title;
final VoidCallback onPressed; // final IconData icon;
// final VoidCallback onPressed;
const DrawerItem({Key key, this.title, this.icon, this.onPressed}) : super(key: key); //
// const DrawerItem({Key key, this.title, this.icon, this.onPressed}) : super(key: key);
@override //
Widget build(BuildContext context) { // @override
return Padding( // Widget build(BuildContext context) {
padding: const EdgeInsets.all(0.0), // return Padding(
child: ElevatedButton( // padding: const EdgeInsets.all(0.0),
style: ElevatedButton.styleFrom( // child: ElevatedButton(
padding: EdgeInsets.zero, // style: ElevatedButton.styleFrom(
elevation: 0, // padding: EdgeInsets.zero,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context))), // elevation: 0,
primary: Theme.of(context).colorScheme.onPrimary, // shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context))),
), // primary: Theme.of(context).colorScheme.onPrimary,
onPressed: onPressed, // ),
child: Row( // onPressed: onPressed,
children: [ // child: Row(
Icon(icon, /*color: AColors.grey3A,*/ size: 20), // children: [
12.width, // Icon(icon, /*color: AColors.grey3A,*/ size: 20),
Text( // 12.width,
title, // Text(
style: Theme.of(context).textTheme.headline6.copyWith( // title,
fontSize: 14, /* color: AColors.grey3A*/ // style: Theme.of(context).textTheme.headline6.copyWith(
), // fontSize: 14, /* color: AColors.grey3A*/
textScaleFactor: AppStyle.getScaleFactor(context), // ),
), // textScaleFactor: AppStyle.getScaleFactor(context),
], // ),
).paddingOnly(start: 20, end: 20), // ],
), // ).paddingOnly(start: 20, end: 20),
); // ),
} // );
} // }
// }

@ -1,97 +1,98 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:flutter_typeahead/flutter_typeahead.dart'; // import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; // import 'package:flutter_typeahead/flutter_typeahead.dart';
import 'package:test_sa/controllers/providers/api/devices_provider.dart'; // import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart'; // import 'package:test_sa/controllers/providers/api/devices_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; // import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/views/app_style/sizing.dart'; // import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; // import 'package:test_sa/views/app_style/sizing.dart';
// import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
import '../../../models/device/asset.dart'; //
// import '../../../models/device/asset.dart';
class AutoCompleteDeviceField extends StatefulWidget { //
final Asset initialValue; // class AutoCompleteDeviceField extends StatefulWidget {
final int hospitalId; // final Asset initialValue;
final Function(int) onPick; // final int hospitalId;
// final Function(int) onPick;
const AutoCompleteDeviceField({Key key, this.initialValue, this.onPick, this.hospitalId}) : super(key: key); //
// const AutoCompleteDeviceField({Key key, this.initialValue, this.onPick, this.hospitalId}) : super(key: key);
@override //
_AutoCompleteDeviceFieldState createState() => _AutoCompleteDeviceFieldState(); // @override
} // _AutoCompleteDeviceFieldState createState() => _AutoCompleteDeviceFieldState();
// }
class _AutoCompleteDeviceFieldState extends State<AutoCompleteDeviceField> { //
SettingProvider _settingProvider; // class _AutoCompleteDeviceFieldState extends State<AutoCompleteDeviceField> {
AssetProvider _devicesProvider; // SettingProvider _settingProvider;
UserProvider _userProvider; // AssetProvider _devicesProvider;
TextEditingController _controller; // UserProvider _userProvider;
// TextEditingController _controller;
@override //
void initState() { // @override
_controller = TextEditingController(text: widget.initialValue.assetSerialNo); // void initState() {
super.initState(); // _controller = TextEditingController(text: widget.initialValue.assetSerialNo);
} // super.initState();
// }
@override //
void dispose() { // @override
_controller.dispose(); // void dispose() {
super.dispose(); // _controller.dispose();
} // super.dispose();
// }
@override //
Widget build(BuildContext context) { // @override
_settingProvider = Provider.of<SettingProvider>(context); // Widget build(BuildContext context) {
_userProvider = Provider.of<UserProvider>(context); // _settingProvider = Provider.of<SettingProvider>(context);
_devicesProvider = Provider.of<AssetProvider>(context); // _userProvider = Provider.of<UserProvider>(context);
// _devicesProvider = Provider.of<AssetProvider>(context);
return LoadingManager( //
isLoading: _devicesProvider.isLoading, // return LoadingManager(
isFailedLoading: _devicesProvider.devices == null, // isLoading: _devicesProvider.isLoading,
stateCode: _devicesProvider.stateCode, // isFailedLoading: _devicesProvider.devices == null,
onRefresh: () async { // stateCode: _devicesProvider.stateCode,
_devicesProvider.reset(); // onRefresh: () async {
await _devicesProvider.getAssets(); // _devicesProvider.reset();
}, // await _devicesProvider.getAssets();
child: Container( // },
padding: const EdgeInsets.symmetric(horizontal: 16), // child: Container(
decoration: BoxDecoration( // padding: const EdgeInsets.symmetric(horizontal: 16),
color: Colors.white, // decoration: BoxDecoration(
// border: Border.all(color: AColors.black), // color: Colors.white,
borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)), // // border: Border.all(color: AColors.black),
boxShadow: [AppStyle.boxShadow]), // borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)),
child: TypeAheadField<Asset>( // boxShadow: [AppStyle.boxShadow]),
textFieldConfiguration: TextFieldConfiguration( // child: TypeAheadField<Asset>(
style: Theme.of(context).textTheme.headline6, // textFieldConfiguration: TextFieldConfiguration(
controller: _controller, // style: Theme.of(context).textTheme.headline6,
textAlign: TextAlign.center, // controller: _controller,
decoration: const InputDecoration( // textAlign: TextAlign.center,
border: InputBorder.none, // decoration: const InputDecoration(
disabledBorder: InputBorder.none, // border: InputBorder.none,
focusedBorder: InputBorder.none, // disabledBorder: InputBorder.none,
enabledBorder: InputBorder.none, // focusedBorder: InputBorder.none,
), // enabledBorder: InputBorder.none,
textInputAction: TextInputAction.search, // ),
), // textInputAction: TextInputAction.search,
suggestionsCallback: (value) async { // ),
return await _devicesProvider.getDevicesList( // suggestionsCallback: (value) async {
host: _settingProvider.host, // return await _devicesProvider.getDevicesList(
user: _userProvider.user, // host: _settingProvider.host,
hospitalId: widget.hospitalId ?? _userProvider.user.clientId, // user: _userProvider.user,
// serialNumber: value, // hospitalId: widget.hospitalId ?? _userProvider.user.clientId,
); // // serialNumber: value,
}, // );
itemBuilder: (context, device) { // },
return ListTile( // itemBuilder: (context, device) {
title: Text(device.assetSerialNo), // return ListTile(
subtitle: Text("${device.modelDefinition.modelName}/${device.modelDefinition.manufacturerName}"), // title: Text(device.assetSerialNo),
); // subtitle: Text("${device.modelDefinition.modelName}/${device.modelDefinition.manufacturerName}"),
}, // );
onSuggestionSelected: (device) { // },
_controller.text = device.assetSerialNo; // onSuggestionSelected: (device) {
widget.onPick(device.id); // _controller.text = device.assetSerialNo;
}, // widget.onPick(device.id);
), // },
), // ),
); // ),
} // );
} // }
// }

@ -1,86 +1,87 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:flutter_typeahead/flutter_typeahead.dart'; // import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; // import 'package:flutter_typeahead/flutter_typeahead.dart';
import 'package:test_sa/controllers/providers/api/devices_provider.dart'; // import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart'; // import 'package:test_sa/controllers/providers/api/devices_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; // import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/views/app_style/sizing.dart'; // import 'package:test_sa/models/lookup.dart';
// import 'package:test_sa/views/app_style/sizing.dart';
class AutoCompleteModelField extends StatefulWidget { //
final Lookup initialValue; // class AutoCompleteModelField extends StatefulWidget {
final Function(Lookup) onPick; // final Lookup initialValue;
// final Function(Lookup) onPick;
const AutoCompleteModelField({ //
Key key, // const AutoCompleteModelField({
this.initialValue, // Key key,
this.onPick, // this.initialValue,
}) : super(key: key); // this.onPick,
// }) : super(key: key);
@override //
_AutoCompleteModelFieldState createState() => _AutoCompleteModelFieldState(); // @override
} // _AutoCompleteModelFieldState createState() => _AutoCompleteModelFieldState();
// }
class _AutoCompleteModelFieldState extends State<AutoCompleteModelField> { //
SettingProvider _settingProvider; // class _AutoCompleteModelFieldState extends State<AutoCompleteModelField> {
AssetProvider _devicesProvider; // SettingProvider _settingProvider;
UserProvider _userProvider; // AssetProvider _devicesProvider;
TextEditingController _controller; // UserProvider _userProvider;
// TextEditingController _controller;
@override //
void initState() { // @override
_controller = TextEditingController(text: widget.initialValue?.name); // void initState() {
super.initState(); // _controller = TextEditingController(text: widget.initialValue?.name);
} // super.initState();
// }
@override //
void dispose() { // @override
_controller.dispose(); // void dispose() {
super.dispose(); // _controller.dispose();
} // super.dispose();
// }
@override //
Widget build(BuildContext context) { // @override
_settingProvider = Provider.of<SettingProvider>(context); // Widget build(BuildContext context) {
_userProvider = Provider.of<UserProvider>(context); // _settingProvider = Provider.of<SettingProvider>(context);
_devicesProvider = Provider.of<AssetProvider>(context); // _userProvider = Provider.of<UserProvider>(context);
// _devicesProvider = Provider.of<AssetProvider>(context);
return Container( //
padding: const EdgeInsets.symmetric(horizontal: 16), // return Container(
decoration: BoxDecoration( // padding: const EdgeInsets.symmetric(horizontal: 16),
color: Colors.white, // decoration: BoxDecoration(
// border: Border.all(color: AColors.black), // color: Colors.white,
borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)), // // border: Border.all(color: AColors.black),
boxShadow: [AppStyle.boxShadow]), // borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)),
child: TypeAheadField<Lookup>( // boxShadow: [AppStyle.boxShadow]),
textFieldConfiguration: TextFieldConfiguration( // child: TypeAheadField<Lookup>(
style: Theme.of(context).textTheme.headline6, // textFieldConfiguration: TextFieldConfiguration(
controller: _controller, // style: Theme.of(context).textTheme.headline6,
textAlign: TextAlign.center, // controller: _controller,
decoration: const InputDecoration( // textAlign: TextAlign.center,
hintText: "Model", // decoration: const InputDecoration(
border: InputBorder.none, // hintText: "Model",
disabledBorder: InputBorder.none, // border: InputBorder.none,
focusedBorder: InputBorder.none, // disabledBorder: InputBorder.none,
enabledBorder: InputBorder.none, // focusedBorder: InputBorder.none,
), // enabledBorder: InputBorder.none,
textInputAction: TextInputAction.search, // ),
), // textInputAction: TextInputAction.search,
suggestionsCallback: (value) async { // ),
return await _devicesProvider.getModels( // suggestionsCallback: (value) async {
code: value, // return await _devicesProvider.getModels(
); // code: value,
}, // );
itemBuilder: (context, lookup) { // },
return ListTile( // itemBuilder: (context, lookup) {
title: Text(lookup.name), // return ListTile(
); // title: Text(lookup.name),
}, // );
onSuggestionSelected: (lookup) { // },
_controller.text = lookup.name; // onSuggestionSelected: (lookup) {
widget.onPick(lookup); // _controller.text = lookup.name;
}, // widget.onPick(lookup);
), // },
); // ),
} // );
} // }
// }

@ -1,110 +1,111 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:test_sa/models/hospital.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/views/app_style/sizing.dart'; // import 'package:test_sa/models/hospital.dart';
// import 'package:test_sa/views/app_style/sizing.dart';
import '../loaders/app_loading.dart'; //
// import '../loaders/app_loading.dart';
class BuildingTypeMenu extends StatefulWidget { //
final Function(Buildings) onSelect; // class BuildingTypeMenu extends StatefulWidget {
Buildings initialValue; // final Function(Buildings) onSelect;
List<Buildings> building; // Buildings initialValue;
bool enabled, loading; // List<Buildings> building;
// bool enabled, loading;
BuildingTypeMenu({ //
Key key, // BuildingTypeMenu({
this.onSelect, // Key key,
this.initialValue, // this.onSelect,
this.building = const [], // this.initialValue,
this.enabled = true, // this.building = const [],
this.loading = false, // this.enabled = true,
}) : super(key: key); // this.loading = false,
// }) : super(key: key);
@override //
_BuildingTypeMenuState createState() { // @override
return _BuildingTypeMenuState(); // _BuildingTypeMenuState createState() {
} // return _BuildingTypeMenuState();
} // }
// }
class _BuildingTypeMenuState extends State<BuildingTypeMenu> { //
Buildings _selectedBuilding; // class _BuildingTypeMenuState extends State<BuildingTypeMenu> {
List<Buildings> _building; // Buildings _selectedBuilding;
// List<Buildings> _building;
@override //
void initState() { // @override
super.initState(); // void initState() {
_selectedBuilding = widget.initialValue; // super.initState();
_building = widget.building; // _selectedBuilding = widget.initialValue;
} // _building = widget.building;
// }
@override //
void didUpdateWidget(covariant BuildingTypeMenu oldWidget) { // @override
if (oldWidget.building != widget.building) { // void didUpdateWidget(covariant BuildingTypeMenu oldWidget) {
_building = widget.building; // if (oldWidget.building != widget.building) {
_selectedBuilding = null; // _building = widget.building;
} // _selectedBuilding = null;
if (oldWidget.initialValue != widget.initialValue && widget.initialValue != null) { // }
_selectedBuilding = widget.initialValue; // if (oldWidget.initialValue != widget.initialValue && widget.initialValue != null) {
} // _selectedBuilding = widget.initialValue;
super.didUpdateWidget(oldWidget); // }
} // super.didUpdateWidget(oldWidget);
// }
@override //
void dispose() { // @override
super.dispose(); // void dispose() {
} // super.dispose();
// }
@override //
Widget build(BuildContext context) { // @override
return Container( // Widget build(BuildContext context) {
padding: const EdgeInsets.symmetric(horizontal: 16), // return Container(
decoration: BoxDecoration( // padding: const EdgeInsets.symmetric(horizontal: 16),
// color: AColors.inputFieldBackgroundColor, // decoration: BoxDecoration(
border: Border.all( // // color: AColors.inputFieldBackgroundColor,
color: const Color(0xffefefef), // border: Border.all(
), // color: const Color(0xffefefef),
borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)), // ),
// boxShadow: const [ // borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)),
// AppStyle.boxShadow // // boxShadow: const [
// ] // // AppStyle.boxShadow
), // // ]
child: widget.loading // ),
? const Padding(padding: EdgeInsets.all(8.0), child: ALoading()) // child: widget.loading
: (widget.enabled && (_building?.isEmpty ?? false)) || (!widget.enabled) // ? const Padding(padding: EdgeInsets.all(8.0), child: ALoading())
? ListTile( // : (widget.enabled && (_building?.isEmpty ?? false)) || (!widget.enabled)
title: Center(child: Text(widget.initialValue?.name ?? "")), // ? ListTile(
) // title: Center(child: Text(widget.initialValue?.name ?? "")),
: DropdownButton<Buildings>( // )
value: _selectedBuilding, // : DropdownButton<Buildings>(
iconSize: 24, // value: _selectedBuilding,
icon: const Icon(Icons.keyboard_arrow_down_rounded), // iconSize: 24,
elevation: 0, // icon: const Icon(Icons.keyboard_arrow_down_rounded),
isExpanded: true, // elevation: 0,
hint: Text( // isExpanded: true,
"Select Building", // hint: Text(
style: Theme.of(context).textTheme.subtitle1, // "Select Building",
), // style: Theme.of(context).textTheme.subtitle1,
style: TextStyle(color: Theme.of(context).primaryColor), // ),
underline: const SizedBox.shrink(), // style: TextStyle(color: Theme.of(context).primaryColor),
onChanged: (Buildings newValue) { // underline: const SizedBox.shrink(),
setState(() { // onChanged: (Buildings newValue) {
_selectedBuilding = newValue; // setState(() {
}); // _selectedBuilding = newValue;
widget.onSelect(newValue); // });
}, // widget.onSelect(newValue);
items: _building?.map<DropdownMenuItem<Buildings>>((Buildings value) { // },
return DropdownMenuItem<Buildings>( // items: _building?.map<DropdownMenuItem<Buildings>>((Buildings value) {
value: value, // return DropdownMenuItem<Buildings>(
child: Text( // value: value,
value.name ?? "", // child: Text(
style: Theme.of(context).textTheme.subtitle1.copyWith( // value.name ?? "",
color: Theme.of(context).primaryColor, // style: Theme.of(context).textTheme.subtitle1.copyWith(
fontSize: 11, // color: Theme.of(context).primaryColor,
//fontWeight: FontWeight.bold // fontSize: 11,
), // //fontWeight: FontWeight.bold
), // ),
); // ),
})?.toList() ?? // );
[], // })?.toList() ??
)); // [],
} // ));
} // }
// }

@ -1,111 +1,112 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:test_sa/models/hospital.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/views/app_style/sizing.dart'; // import 'package:test_sa/models/hospital.dart';
// import 'package:test_sa/views/app_style/sizing.dart';
import '../loaders/app_loading.dart'; //
// import '../loaders/app_loading.dart';
class DepartmentTypeMenu extends StatefulWidget { //
final Function(Departments) onSelect; // class DepartmentTypeMenu extends StatefulWidget {
Departments initialValue; // final Function(Departments) onSelect;
List<Departments> departments; // Departments initialValue;
bool enabled, loading; // List<Departments> departments;
// bool enabled, loading;
DepartmentTypeMenu({ //
Key key, // DepartmentTypeMenu({
this.onSelect, // Key key,
this.initialValue, // this.onSelect,
this.departments = const [], // this.initialValue,
this.enabled = true, // this.departments = const [],
this.loading = false, // this.enabled = true,
}) : super(key: key); // this.loading = false,
// }) : super(key: key);
@override //
_DepartmentTypeMenuState createState() { // @override
return _DepartmentTypeMenuState(); // _DepartmentTypeMenuState createState() {
} // return _DepartmentTypeMenuState();
} // }
// }
class _DepartmentTypeMenuState extends State<DepartmentTypeMenu> { //
Departments _selected; // class _DepartmentTypeMenuState extends State<DepartmentTypeMenu> {
List<Departments> _departments; // Departments _selected;
// List<Departments> _departments;
@override //
void initState() { // @override
super.initState(); // void initState() {
_selected = widget.initialValue; // super.initState();
_departments = widget.departments; // _selected = widget.initialValue;
} // _departments = widget.departments;
// }
@override //
void didUpdateWidget(covariant DepartmentTypeMenu oldWidget) { // @override
if (oldWidget.departments != widget.departments) { // void didUpdateWidget(covariant DepartmentTypeMenu oldWidget) {
_departments = widget.departments; // if (oldWidget.departments != widget.departments) {
_selected = null; // _departments = widget.departments;
} // _selected = null;
if (oldWidget.initialValue != widget.initialValue && widget.initialValue != null) { // }
_selected = widget.initialValue; // if (oldWidget.initialValue != widget.initialValue && widget.initialValue != null) {
} // _selected = widget.initialValue;
super.didUpdateWidget(oldWidget); // }
} // super.didUpdateWidget(oldWidget);
// }
@override //
void dispose() { // @override
super.dispose(); // void dispose() {
} // super.dispose();
// }
@override //
Widget build(BuildContext context) { // @override
return Container( // Widget build(BuildContext context) {
padding: const EdgeInsets.symmetric(horizontal: 16), // return Container(
decoration: BoxDecoration( // padding: const EdgeInsets.symmetric(horizontal: 16),
// color: AColors.inputFieldBackgroundColor, // decoration: BoxDecoration(
border: Border.all( // // color: AColors.inputFieldBackgroundColor,
color: Color(0xffefefef), // border: Border.all(
), // color: Color(0xffefefef),
borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)), // ),
// boxShadow: const [ // borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)),
// AppStyle.boxShadow // // boxShadow: const [
// ] // // AppStyle.boxShadow
), // // ]
child: widget.loading // ),
? const Padding(padding: EdgeInsets.all(8.0), child: ALoading()) // child: widget.loading
: (widget.enabled && (_departments?.isEmpty ?? false)) || (!widget.enabled) // ? const Padding(padding: EdgeInsets.all(8.0), child: ALoading())
? ListTile( // : (widget.enabled && (_departments?.isEmpty ?? false)) || (!widget.enabled)
title: Center(child: Text(widget.initialValue?.name ?? "")), // ? ListTile(
) // title: Center(child: Text(widget.initialValue?.name ?? "")),
: DropdownButton<Departments>( // )
value: _selected, // : DropdownButton<Departments>(
iconSize: 24, // value: _selected,
icon: const Icon(Icons.keyboard_arrow_down_rounded), // iconSize: 24,
elevation: 0, // icon: const Icon(Icons.keyboard_arrow_down_rounded),
isExpanded: true, // elevation: 0,
hint: Text( // isExpanded: true,
"Select Department", // hint: Text(
style: Theme.of(context).textTheme.subtitle1, // "Select Department",
), // style: Theme.of(context).textTheme.subtitle1,
style: TextStyle(color: Theme.of(context).primaryColor), // ),
underline: SizedBox.shrink(), // style: TextStyle(color: Theme.of(context).primaryColor),
onChanged: (Departments newValue) { // underline: SizedBox.shrink(),
setState(() { // onChanged: (Departments newValue) {
_selected = newValue; // setState(() {
}); // _selected = newValue;
widget.onSelect(newValue); // });
}, // widget.onSelect(newValue);
items: widget?.departments?.map<DropdownMenuItem<Departments>>((Departments value) { // },
return DropdownMenuItem<Departments>( // items: widget?.departments?.map<DropdownMenuItem<Departments>>((Departments value) {
value: value, // return DropdownMenuItem<Departments>(
child: Text( // value: value,
value?.name ?? "", // child: Text(
style: Theme.of(context).textTheme.subtitle1.copyWith( // value?.name ?? "",
color: Theme.of(context).primaryColor, // style: Theme.of(context).textTheme.subtitle1.copyWith(
fontSize: 11, // color: Theme.of(context).primaryColor,
//fontWeight: FontWeight.bold // fontSize: 11,
), // //fontWeight: FontWeight.bold
), // ),
); // ),
})?.toList() ?? // );
[], // })?.toList() ??
), // [],
); // ),
} // );
} // }
// }

@ -1,112 +1,113 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:test_sa/models/hospital.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/views/app_style/sizing.dart'; // import 'package:test_sa/models/hospital.dart';
// import 'package:test_sa/views/app_style/sizing.dart';
import '../loaders/app_loading.dart'; //
// import '../loaders/app_loading.dart';
class FloorTypeMenu extends StatefulWidget { //
final Function(Floors) onSelect; // class FloorTypeMenu extends StatefulWidget {
Floors initialValue; // final Function(Floors) onSelect;
List<Floors> floors; // Floors initialValue;
bool enabled; // List<Floors> floors;
bool loading; // bool enabled;
// bool loading;
FloorTypeMenu({ //
Key key, // FloorTypeMenu({
this.onSelect, // Key key,
this.initialValue, // this.onSelect,
this.floors = const [], // this.initialValue,
this.enabled = true, // this.floors = const [],
this.loading = false, // this.enabled = true,
}) : super(key: key); // this.loading = false,
// }) : super(key: key);
@override //
_FloorTypeMenuState createState() { // @override
return _FloorTypeMenuState(); // _FloorTypeMenuState createState() {
} // return _FloorTypeMenuState();
} // }
// }
class _FloorTypeMenuState extends State<FloorTypeMenu> { //
Floors _selected; // class _FloorTypeMenuState extends State<FloorTypeMenu> {
List<Floors> _floors; // Floors _selected;
// List<Floors> _floors;
@override //
void initState() { // @override
super.initState(); // void initState() {
_selected = widget.initialValue; // super.initState();
_floors = widget.floors; // _selected = widget.initialValue;
} // _floors = widget.floors;
// }
@override //
void didUpdateWidget(covariant FloorTypeMenu oldWidget) { // @override
if (oldWidget.floors != widget.floors) { // void didUpdateWidget(covariant FloorTypeMenu oldWidget) {
_floors = widget.floors; // if (oldWidget.floors != widget.floors) {
_selected = null; // _floors = widget.floors;
} // _selected = null;
if (oldWidget.initialValue != widget.initialValue && widget.initialValue != null) { // }
_selected = widget.initialValue; // if (oldWidget.initialValue != widget.initialValue && widget.initialValue != null) {
} // _selected = widget.initialValue;
super.didUpdateWidget(oldWidget); // }
} // super.didUpdateWidget(oldWidget);
// }
@override //
void dispose() { // @override
super.dispose(); // void dispose() {
} // super.dispose();
// }
@override //
Widget build(BuildContext context) { // @override
return Container( // Widget build(BuildContext context) {
padding: const EdgeInsets.symmetric(horizontal: 16), // return Container(
decoration: BoxDecoration( // padding: const EdgeInsets.symmetric(horizontal: 16),
// color: AColors.inputFieldBackgroundColor, // decoration: BoxDecoration(
border: Border.all( // // color: AColors.inputFieldBackgroundColor,
color: const Color(0xffefefef), // border: Border.all(
), // color: const Color(0xffefefef),
borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)), // ),
// boxShadow: const [ // borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)),
// AppStyle.boxShadow // // boxShadow: const [
// ] // // AppStyle.boxShadow
), // // ]
child: widget.loading // ),
? const Padding(padding: EdgeInsets.all(8.0), child: ALoading()) // child: widget.loading
: (widget.enabled && (_floors?.isEmpty ?? false)) || (!widget.enabled) // ? const Padding(padding: EdgeInsets.all(8.0), child: ALoading())
? ListTile( // : (widget.enabled && (_floors?.isEmpty ?? false)) || (!widget.enabled)
title: Center(child: Text(widget.initialValue?.name ?? "")), // ? ListTile(
) // title: Center(child: Text(widget.initialValue?.name ?? "")),
: DropdownButton<Floors>( // )
value: _selected, // : DropdownButton<Floors>(
iconSize: 24, // value: _selected,
icon: const Icon(Icons.keyboard_arrow_down_rounded), // iconSize: 24,
elevation: 0, // icon: const Icon(Icons.keyboard_arrow_down_rounded),
isExpanded: true, // elevation: 0,
hint: Text( // isExpanded: true,
"Select Floor", // hint: Text(
style: Theme.of(context).textTheme.subtitle1, // "Select Floor",
), // style: Theme.of(context).textTheme.subtitle1,
style: TextStyle(color: Theme.of(context).primaryColor), // ),
underline: const SizedBox.shrink(), // style: TextStyle(color: Theme.of(context).primaryColor),
onChanged: (Floors newValue) { // underline: const SizedBox.shrink(),
setState(() { // onChanged: (Floors newValue) {
_selected = newValue; // setState(() {
}); // _selected = newValue;
widget.onSelect(newValue); // });
}, // widget.onSelect(newValue);
items: _floors?.map<DropdownMenuItem<Floors>>((Floors value) { // },
return DropdownMenuItem<Floors>( // items: _floors?.map<DropdownMenuItem<Floors>>((Floors value) {
value: value, // return DropdownMenuItem<Floors>(
child: Text( // value: value,
value.name ?? "", // child: Text(
style: Theme.of(context).textTheme.subtitle1.copyWith( // value.name ?? "",
color: Theme.of(context).primaryColor, // style: Theme.of(context).textTheme.subtitle1.copyWith(
fontSize: 11, // color: Theme.of(context).primaryColor,
//fontWeight: FontWeight.bold // fontSize: 11,
), // //fontWeight: FontWeight.bold
), // ),
); // ),
})?.toList() ?? // );
[], // })?.toList() ??
), // [],
); // ),
} // );
} // }
// }

@ -1,90 +1,91 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:test_sa/extensions/context_extension.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/views/widgets/app_text_form_field.dart'; // import 'package:test_sa/extensions/context_extension.dart';
// import 'package:test_sa/views/widgets/app_text_form_field.dart';
import '../../../models/new_models/gas_refill_model.dart'; //
import '../buttons/app_button.dart'; // import '../../../models/new_models/gas_refill_model.dart';
import '../titles/app_sub_title.dart'; // import '../buttons/app_button.dart';
// import '../titles/app_sub_title.dart';
class GasRefillCreateDetailsItem extends StatefulWidget { //
final GasRefillDetails model; // class GasRefillCreateDetailsItem extends StatefulWidget {
final VoidCallback onPressed; // final GasRefillDetails model;
final bool isUpdate; // final VoidCallback onPressed;
// final bool isUpdate;
const GasRefillCreateDetailsItem({Key key, this.isUpdate, this.model, this.onPressed}) : super(key: key); //
// const GasRefillCreateDetailsItem({Key key, this.isUpdate, this.model, this.onPressed}) : super(key: key);
@override //
State<GasRefillCreateDetailsItem> createState() => _GasRefillCreateDetailsItemState(); // @override
} // State<GasRefillCreateDetailsItem> createState() => _GasRefillCreateDetailsItemState();
// }
class _GasRefillCreateDetailsItemState extends State<GasRefillCreateDetailsItem> { //
GlobalKey<FormState> _formKey; // class _GasRefillCreateDetailsItemState extends State<GasRefillCreateDetailsItem> {
// GlobalKey<FormState> _formKey;
@override //
void initState() { // @override
super.initState(); // void initState() {
_formKey = GlobalKey<FormState>(); // super.initState();
} // _formKey = GlobalKey<FormState>();
// }
@override //
Widget build(BuildContext context) { // @override
final startEditing = widget.isUpdate && (widget.model.selectedForEditing ?? false); // Widget build(BuildContext context) {
return Form( // final startEditing = widget.isUpdate && (widget.model.selectedForEditing ?? false);
key: _formKey, // return Form(
child: Column( // key: _formKey,
crossAxisAlignment: CrossAxisAlignment.start, // child: Column(
children: [ // crossAxisAlignment: CrossAxisAlignment.start,
Row( // children: [
children: [ // Row(
Expanded(child: Text(widget.model.gasType.name)), // children: [
IconButton(onPressed: widget.onPressed, /* color: widget.isUpdate ? AColors.cyan : AColors.red,*/ icon: Icon(widget.isUpdate ? Icons.edit : Icons.delete)) // Expanded(child: Text(widget.model.gasType.name)),
], // IconButton(onPressed: widget.onPressed, /* color: widget.isUpdate ? AColors.cyan : AColors.red,*/ icon: Icon(widget.isUpdate ? Icons.edit : Icons.delete))
), // ],
Wrap( // ),
spacing: 10, // Wrap(
children: [ // spacing: 10,
Text("Quantity: ${widget.model.requestedQty.toStringAsFixed(0)}"), // children: [
Text("Cylinder Size: ${widget.model.cylinderSize.name}"), // Text("Quantity: ${widget.model.requestedQty.toStringAsFixed(0)}"),
Text("Cylinder Type: ${widget.model.cylinderType.name}"), // Text("Cylinder Size: ${widget.model.cylinderSize.name}"),
], // Text("Cylinder Type: ${widget.model.cylinderType.name}"),
), // ],
if (widget.model.deliverdQty != null) // ),
Row( // if (widget.model.deliverdQty != null)
children: [ // Row(
const Text("Delivered Quantity: "), // children: [
Text(widget.model.deliverdQty.toStringAsFixed(0)), // const Text("Delivered Quantity: "),
], // Text(widget.model.deliverdQty.toStringAsFixed(0)),
), // ],
if (startEditing) const SizedBox(height: 16), // ),
if (startEditing) ASubTitle(context.translation.deliveredQuantity), // if (startEditing) const SizedBox(height: 16),
if (startEditing) const SizedBox(height: 4), // if (startEditing) ASubTitle(context.translation.deliveredQuantity),
if (startEditing) // if (startEditing) const SizedBox(height: 4),
ATextFormField( // if (startEditing)
initialValue: widget.model.deliverdQty?.toString() ?? "0", // ATextFormField(
textAlign: TextAlign.center, // initialValue: widget.model.deliverdQty?.toString() ?? "0",
style: Theme.of(context).textTheme.titleMedium, // textAlign: TextAlign.center,
// validator: (value) => Validator.isNumeric(value) ? null : "allow numbers only", // style: Theme.of(context).textTheme.titleMedium,
textInputType: TextInputType.number, // // validator: (value) => Validator.isNumeric(value) ? null : "allow numbers only",
onSaved: (value) { // textInputType: TextInputType.number,
if (value.isNotEmpty) { // onSaved: (value) {
widget.model.deliverdQty = double.tryParse(value); // if (value.isNotEmpty) {
} else { // widget.model.deliverdQty = double.tryParse(value);
widget.model.deliverdQty = 0; // } else {
} // widget.model.deliverdQty = 0;
}, // }
), // },
if (startEditing) const SizedBox(height: 8), // ),
if (startEditing) // if (startEditing) const SizedBox(height: 8),
AButton( // if (startEditing)
text: context.translation.edit, // AButton(
onPressed: () { // text: context.translation.edit,
_formKey.currentState?.save(); // onPressed: () {
widget.onPressed(); // _formKey.currentState?.save();
}, // widget.onPressed();
), // },
const Divider(), // ),
], // const Divider(),
), // ],
); // ),
} // );
} // }
// }

@ -1,65 +1,66 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:test_sa/controllers/validator/validator.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/extensions/context_extension.dart'; // import 'package:test_sa/controllers/validator/validator.dart';
import 'package:test_sa/views/widgets/app_text_form_field.dart'; // import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/views/widgets/requests/info_row.dart'; // import 'package:test_sa/views/widgets/app_text_form_field.dart';
import 'package:test_sa/views/widgets/titles/app_sub_title.dart'; // import 'package:test_sa/views/widgets/requests/info_row.dart';
import 'package:test_sa/views/widgets/titles/app_title.dart'; // import 'package:test_sa/views/widgets/titles/app_sub_title.dart';
// import 'package:test_sa/views/widgets/titles/app_title.dart';
import '../../../models/new_models/gas_refill_model.dart'; //
// import '../../../models/new_models/gas_refill_model.dart';
class GasRefillUpdateDetailsItem extends StatelessWidget { //
final GasRefillDetails details; // class GasRefillUpdateDetailsItem extends StatelessWidget {
final bool enableEdit; // final GasRefillDetails details;
final bool validate; // final bool enableEdit;
// final bool validate;
const GasRefillUpdateDetailsItem({Key key, this.details, this.enableEdit, this.validate}) : super(key: key); //
// const GasRefillUpdateDetailsItem({Key key, this.details, this.enableEdit, this.validate}) : super(key: key);
@override //
Widget build(BuildContext context) { // @override
return Column( // Widget build(BuildContext context) {
crossAxisAlignment: CrossAxisAlignment.start, // return Column(
children: [ // crossAxisAlignment: CrossAxisAlignment.start,
ATitle(details.gasType.name), // children: [
RequestInfoRow( // ATitle(details.gasType.name),
title: "Cylinder Size", // RequestInfoRow(
info: details.cylinderSize.name, // title: "Cylinder Size",
), // info: details.cylinderSize.name,
RequestInfoRow( // ),
title: "Requested Quantity", // RequestInfoRow(
info: details.deliverdQty?.toStringAsFixed(0) ?? "", // title: "Requested Quantity",
), // info: details.deliverdQty?.toStringAsFixed(0) ?? "",
enableEdit // ),
? Column( // enableEdit
crossAxisAlignment: CrossAxisAlignment.start, // ? Column(
children: [ // crossAxisAlignment: CrossAxisAlignment.start,
ASubTitle(context.translation.quantity), // children: [
if (validate && details.deliverdQty == null) // ASubTitle(context.translation.quantity),
ASubTitle( // if (validate && details.deliverdQty == null)
context.translation.requiredWord, // ASubTitle(
color: Colors.red, // context.translation.requiredWord,
), // color: Colors.red,
SizedBox( // ),
height: 4, // SizedBox(
), // height: 4,
ATextFormField( // ),
initialValue: (details.deliverdQty ?? "").toString(), // ATextFormField(
textAlign: TextAlign.center, // initialValue: (details.deliverdQty ?? "").toString(),
style: Theme.of(context).textTheme.subtitle1, // textAlign: TextAlign.center,
validator: (value) => Validator.isNumeric(value) ? null : "allow numbers only", // style: Theme.of(context).textTheme.subtitle1,
textInputType: TextInputType.number, // validator: (value) => Validator.isNumeric(value) ? null : "allow numbers only",
onSaved: (value) { // textInputType: TextInputType.number,
details.deliverdQty = double.tryParse(value); // onSaved: (value) {
}, // details.deliverdQty = double.tryParse(value);
), // },
], // ),
) // ],
: RequestInfoRow( // )
title: "Delivered Quantity", // : RequestInfoRow(
info: details.deliverdQty?.toStringAsFixed(0), // title: "Delivered Quantity",
), // info: details.deliverdQty?.toStringAsFixed(0),
//SizedBox(height: 16,) // ),
], // //SizedBox(height: 16,)
); // ],
} // );
} // }
// }

@ -1,95 +1,96 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:flutter_typeahead/flutter_typeahead.dart'; // import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; // import 'package:flutter_typeahead/flutter_typeahead.dart';
import 'package:test_sa/controllers/providers/api/hospitals_provider.dart'; // import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; // import 'package:test_sa/controllers/providers/api/hospitals_provider.dart';
import 'package:test_sa/extensions/context_extension.dart'; // import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/models/hospital.dart'; // import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/views/app_style/sizing.dart'; // import 'package:test_sa/models/hospital.dart';
// import 'package:test_sa/views/app_style/sizing.dart';
class HospitalAutoCompleteField extends StatefulWidget { //
final String initialValue; // class HospitalAutoCompleteField extends StatefulWidget {
final Function(Hospital) onSearch; // final String initialValue;
// final Function(Hospital) onSearch;
//final Function(Hospital) onSave; //
// //final Function(Hospital) onSave;
const HospitalAutoCompleteField({ //
Key key, // const HospitalAutoCompleteField({
this.onSearch, // Key key,
this.initialValue, // this.onSearch,
}) : super(key: key); // this.initialValue,
// }) : super(key: key);
@override //
_HospitalAutoCompleteFieldState createState() => _HospitalAutoCompleteFieldState(); // @override
} // _HospitalAutoCompleteFieldState createState() => _HospitalAutoCompleteFieldState();
// }
class _HospitalAutoCompleteFieldState extends State<HospitalAutoCompleteField> { //
SettingProvider _settingProvider; // class _HospitalAutoCompleteFieldState extends State<HospitalAutoCompleteField> {
TextEditingController _controller; // SettingProvider _settingProvider;
// TextEditingController _controller;
@override //
void initState() { // @override
_controller = TextEditingController(text: widget.initialValue); // void initState() {
super.initState(); // _controller = TextEditingController(text: widget.initialValue);
} // super.initState();
// }
@override //
void didUpdateWidget(covariant HospitalAutoCompleteField oldWidget) { // @override
super.didUpdateWidget(oldWidget); // void didUpdateWidget(covariant HospitalAutoCompleteField oldWidget) {
// super.didUpdateWidget(oldWidget);
if (oldWidget.initialValue != widget.initialValue) { //
_controller = TextEditingController(text: widget.initialValue); // if (oldWidget.initialValue != widget.initialValue) {
} // _controller = TextEditingController(text: widget.initialValue);
} // }
// }
@override //
void dispose() { // @override
_controller.dispose(); // void dispose() {
super.dispose(); // _controller.dispose();
} // super.dispose();
// }
@override //
Widget build(BuildContext context) { // @override
_settingProvider = Provider.of<SettingProvider>(context); // Widget build(BuildContext context) {
// _settingProvider = Provider.of<SettingProvider>(context);
return Container( //
padding: EdgeInsets.symmetric(horizontal: 16), // return Container(
decoration: BoxDecoration( // padding: EdgeInsets.symmetric(horizontal: 16),
// color: AColors.inputFieldBackgroundColor, // decoration: BoxDecoration(
border: Border.all( // // color: AColors.inputFieldBackgroundColor,
color: Color(0xffefefef), // border: Border.all(
), // color: Color(0xffefefef),
borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)), // ),
// boxShadow: [ // borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)),
// AppStyle.boxShadow // // boxShadow: [
// ] // // AppStyle.boxShadow
), // // ]
child: TypeAheadField<Hospital>( // ),
textFieldConfiguration: TextFieldConfiguration( // child: TypeAheadField<Hospital>(
style: Theme.of(context).textTheme.headline6, // textFieldConfiguration: TextFieldConfiguration(
controller: _controller, // style: Theme.of(context).textTheme.headline6,
textAlign: TextAlign.center, // controller: _controller,
decoration: InputDecoration( // textAlign: TextAlign.center,
hintText: context.translation.hospital, // decoration: InputDecoration(
border: InputBorder.none, // hintText: context.translation.hospital,
disabledBorder: InputBorder.none, // border: InputBorder.none,
focusedBorder: InputBorder.none, // disabledBorder: InputBorder.none,
enabledBorder: InputBorder.none, // focusedBorder: InputBorder.none,
), // enabledBorder: InputBorder.none,
textInputAction: TextInputAction.search, // ),
), // textInputAction: TextInputAction.search,
suggestionsCallback: (vale) async { // ),
return await HospitalsProvider().getHospitalsList(host: _settingProvider.host, title: vale); // suggestionsCallback: (vale) async {
}, // return await HospitalsProvider().getHospitalsList(host: _settingProvider.host, title: vale);
itemBuilder: (context, hospital) { // },
return ListTile( // itemBuilder: (context, hospital) {
title: Text(hospital.name), // return ListTile(
); // title: Text(hospital.name),
}, // );
onSuggestionSelected: (hospital) { // },
widget.onSearch(hospital); // onSuggestionSelected: (hospital) {
}, // widget.onSearch(hospital);
), // },
); // ),
} // );
} // }
// }

@ -1,107 +1,108 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:flutter_typeahead/flutter_typeahead.dart'; // import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; // import 'package:flutter_typeahead/flutter_typeahead.dart';
import 'package:test_sa/controllers/providers/api/hospitals_provider.dart'; // import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; // import 'package:test_sa/controllers/providers/api/hospitals_provider.dart';
import 'package:test_sa/extensions/context_extension.dart'; // import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/models/hospital.dart'; // import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/views/app_style/sizing.dart'; // import 'package:test_sa/models/hospital.dart';
import 'package:test_sa/views/widgets/loaders/app_loading.dart'; // import 'package:test_sa/views/app_style/sizing.dart';
// import 'package:test_sa/views/widgets/loaders/app_loading.dart';
class HospitalAutoCompleteField extends StatefulWidget { //
final String initialValue; // class HospitalAutoCompleteField extends StatefulWidget {
final Function(Hospital) onSearch; // final String initialValue;
final bool enabled; // final Function(Hospital) onSearch;
// final bool enabled;
//final Function(Hospital) onSave; //
// //final Function(Hospital) onSave;
const HospitalAutoCompleteField({ //
Key key, // const HospitalAutoCompleteField({
this.onSearch, // Key key,
this.initialValue, // this.onSearch,
this.enabled = true, // this.initialValue,
}) : super(key: key); // this.enabled = true,
// }) : super(key: key);
@override //
_HospitalAutoCompleteFieldState createState() => _HospitalAutoCompleteFieldState(); // @override
} // _HospitalAutoCompleteFieldState createState() => _HospitalAutoCompleteFieldState();
// }
class _HospitalAutoCompleteFieldState extends State<HospitalAutoCompleteField> { //
SettingProvider _settingProvider; // class _HospitalAutoCompleteFieldState extends State<HospitalAutoCompleteField> {
TextEditingController _controller; // SettingProvider _settingProvider;
// TextEditingController _controller;
@override //
void initState() { // @override
_controller = TextEditingController(text: widget.initialValue); // void initState() {
super.initState(); // _controller = TextEditingController(text: widget.initialValue);
} // super.initState();
// }
@override //
void didUpdateWidget(covariant HospitalAutoCompleteField oldWidget) { // @override
super.didUpdateWidget(oldWidget); // void didUpdateWidget(covariant HospitalAutoCompleteField oldWidget) {
// super.didUpdateWidget(oldWidget);
if (oldWidget.initialValue != widget.initialValue) { //
_controller = TextEditingController(text: widget.initialValue); // if (oldWidget.initialValue != widget.initialValue) {
} // _controller = TextEditingController(text: widget.initialValue);
} // }
// }
@override //
void dispose() { // @override
_controller.dispose(); // void dispose() {
super.dispose(); // _controller.dispose();
} // super.dispose();
// }
@override //
Widget build(BuildContext context) { // @override
_settingProvider = Provider.of<SettingProvider>(context); // Widget build(BuildContext context) {
// _settingProvider = Provider.of<SettingProvider>(context);
return Container( //
padding: EdgeInsets.symmetric(horizontal: 16), // return Container(
decoration: BoxDecoration( // padding: EdgeInsets.symmetric(horizontal: 16),
// color: AColors.inputFieldBackgroundColor, // decoration: BoxDecoration(
border: Border.all( // // color: AColors.inputFieldBackgroundColor,
color: Color(0xffefefef), // border: Border.all(
), // color: Color(0xffefefef),
borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)), // ),
// boxShadow: [ // borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)),
// AppStyle.boxShadow // // boxShadow: [
// ] // // AppStyle.boxShadow
), // // ]
child: widget.enabled // ),
? TypeAheadField<Hospital>( // child: widget.enabled
textFieldConfiguration: TextFieldConfiguration( // ? TypeAheadField<Hospital>(
style: Theme.of(context).textTheme.headline6, // textFieldConfiguration: TextFieldConfiguration(
controller: _controller, // style: Theme.of(context).textTheme.headline6,
textAlign: TextAlign.center, // controller: _controller,
decoration: InputDecoration( // textAlign: TextAlign.center,
hintText: context.translation.hospital, // decoration: InputDecoration(
border: InputBorder.none, // hintText: context.translation.hospital,
disabledBorder: InputBorder.none, // border: InputBorder.none,
focusedBorder: InputBorder.none, // disabledBorder: InputBorder.none,
enabledBorder: InputBorder.none, // focusedBorder: InputBorder.none,
), // enabledBorder: InputBorder.none,
textInputAction: TextInputAction.search, // ),
), // textInputAction: TextInputAction.search,
suggestionsCallback: (vale) async { // ),
return await HospitalsProvider().getHospitalsListByVal(searchVal: _controller.text); // suggestionsCallback: (vale) async {
}, // return await HospitalsProvider().getHospitalsListByVal(searchVal: _controller.text);
itemBuilder: (context, hospital) { // },
return ListTile( // itemBuilder: (context, hospital) {
title: Text(hospital.name), // return ListTile(
); // title: Text(hospital.name),
}, // );
onSuggestionSelected: (hospital) { // },
widget.onSearch(hospital); // onSuggestionSelected: (hospital) {
}, // widget.onSearch(hospital);
) // },
: widget.initialValue == null // )
? const Padding( // : widget.initialValue == null
padding: EdgeInsets.all(8.0), // ? const Padding(
child: ALoading(), // padding: EdgeInsets.all(8.0),
) // child: ALoading(),
: ListTile( // )
title: Center(child: Text(widget.initialValue)), // : ListTile(
), // title: Center(child: Text(widget.initialValue)),
); // ),
} // );
} // }
// }

@ -1,48 +1,49 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:test_sa/extensions/context_extension.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/models/hospital.dart'; // import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/views/app_style/sizing.dart'; // import 'package:test_sa/models/hospital.dart';
import 'package:test_sa/views/widgets/hospitals/single_hospital_picker.dart'; // import 'package:test_sa/views/app_style/sizing.dart';
// import 'package:test_sa/views/widgets/hospitals/single_hospital_picker.dart';
class HospitalButton extends StatelessWidget { //
final Function(Hospital) onHospitalPick; // class HospitalButton extends StatelessWidget {
final Hospital hospital; // final Function(Hospital) onHospitalPick;
// final Hospital hospital;
const HospitalButton({Key key, this.hospital, this.onHospitalPick}) : super(key: key); //
// const HospitalButton({Key key, this.hospital, this.onHospitalPick}) : super(key: key);
@override //
Widget build(BuildContext context) { // @override
return ElevatedButton( // Widget build(BuildContext context) {
style: ElevatedButton.styleFrom( // return ElevatedButton(
elevation: 0, // style: ElevatedButton.styleFrom(
// foregroundColor: AColors.primaryColor, // elevation: 0,
// backgroundColor: AColors.inputFieldBackgroundColor, // // foregroundColor: AColors.primaryColor,
padding: EdgeInsets.symmetric(horizontal: 8, vertical: 8), // // backgroundColor: AColors.inputFieldBackgroundColor,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context))), // padding: EdgeInsets.symmetric(horizontal: 8, vertical: 8),
), // shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context))),
child: Row( // ),
children: [ // child: Row(
Expanded( // children: [
child: Padding( // Expanded(
padding: const EdgeInsets.symmetric(horizontal: 8), // child: Padding(
child: Text( // padding: const EdgeInsets.symmetric(horizontal: 8),
hospital?.name ?? context.translation.pickHospital, // child: Text(
// style: Theme.of(context).textTheme.bodyText1.copyWith(fontSize: 14, color: AColors.grey3A), // hospital?.name ?? context.translation.pickHospital,
// textScaleFactor: AppStyle.getScaleFactor(context), // // style: Theme.of(context).textTheme.bodyText1.copyWith(fontSize: 14, color: AColors.grey3A),
textDirection: TextDirection.rtl, // // textScaleFactor: AppStyle.getScaleFactor(context),
textAlign: TextAlign.left, // textDirection: TextDirection.rtl,
), // textAlign: TextAlign.left,
), // ),
), // ),
const Icon( // ),
Icons.keyboard_arrow_down, // const Icon(
size: 28, /*color: AColors.grey3A*/ // Icons.keyboard_arrow_down,
), // size: 28, /*color: AColors.grey3A*/
], // ),
), // ],
onPressed: () async { // ),
Hospital _hospital = await Navigator.of(context).pushNamed(SingleHospitalPicker.id) as Hospital; // onPressed: () async {
onHospitalPick(_hospital); // Hospital _hospital = await Navigator.of(context).pushNamed(SingleHospitalPicker.id) as Hospital;
}); // onHospitalPick(_hospital);
} // });
} // }
// }

@ -1,32 +1,33 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:test_sa/views/app_style/sizing.dart'; // import 'package:flutter/material.dart';
// import 'package:test_sa/views/app_style/sizing.dart';
import 'image_item.dart'; //
import 'images_viewer.dart'; // import 'image_item.dart';
// import 'images_viewer.dart';
class ImagesList extends StatelessWidget { //
final List<String> images; // class ImagesList extends StatelessWidget {
final EdgeInsets padding; // final List<String> images;
// final EdgeInsets padding;
const ImagesList({Key key, this.images, this.padding}) : super(key: key); //
// const ImagesList({Key key, this.images, this.padding}) : super(key: key);
@override //
Widget build(BuildContext context) { // @override
return ListView.builder( // Widget build(BuildContext context) {
padding: padding ?? EdgeInsets.symmetric(horizontal: 32 * AppStyle.getScaleFactor(context)), // return ListView.builder(
scrollDirection: Axis.horizontal, // padding: padding ?? EdgeInsets.symmetric(horizontal: 32 * AppStyle.getScaleFactor(context)),
itemCount: images.length, // scrollDirection: Axis.horizontal,
itemBuilder: (context, itemIndex) { // itemCount: images.length,
return ImageItem( // itemBuilder: (context, itemIndex) {
url: images[itemIndex], // return ImageItem(
onPressed: () { // url: images[itemIndex],
Navigator.of(context).push(MaterialPageRoute( // onPressed: () {
builder: (_) => ImagesViewer( // Navigator.of(context).push(MaterialPageRoute(
initialIndex: itemIndex, // builder: (_) => ImagesViewer(
images: images, // initialIndex: itemIndex,
))); // images: images,
}, // )));
); // },
}); // );
} // });
} // }
// }

@ -1,86 +1,87 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:test_sa/views/app_style/sizing.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/views/widgets/loaders/image_loader.dart'; // import 'package:test_sa/views/app_style/sizing.dart';
// import 'package:test_sa/views/widgets/loaders/image_loader.dart';
class ImagesViewer extends StatelessWidget { //
final List<String> images; // class ImagesViewer extends StatelessWidget {
final int initialIndex; // final List<String> images;
// final int initialIndex;
const ImagesViewer({ //
Key key, // const ImagesViewer({
this.images, // Key key,
this.initialIndex = 0, // this.images,
}) : super(key: key); // this.initialIndex = 0,
// }) : super(key: key);
@override //
Widget build(BuildContext context) { // @override
return Scaffold( // Widget build(BuildContext context) {
body: DefaultTabController( // return Scaffold(
length: images.length, // body: DefaultTabController(
initialIndex: initialIndex, // length: images.length,
child: SafeArea( // initialIndex: initialIndex,
child: Column( // child: SafeArea(
children: [ // child: Column(
images.length == 1 // children: [
? SizedBox.shrink() // images.length == 1
: Column( // ? SizedBox.shrink()
children: [ // : Column(
SizedBox( // children: [
height: 8 * AppStyle.getScaleFactor(context), // SizedBox(
), // height: 8 * AppStyle.getScaleFactor(context),
TabBar( // ),
isScrollable: images.length * 84 > MediaQuery.of(context).size.width, // TabBar(
indicator: BoxDecoration( // isScrollable: images.length * 84 > MediaQuery.of(context).size.width,
color: Theme.of(context).primaryColor, // indicator: BoxDecoration(
borderRadius: BorderRadius.only( // color: Theme.of(context).primaryColor,
topRight: Radius.circular(24 * AppStyle.getScaleFactor(context)), // borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(24 * AppStyle.getScaleFactor(context)), // topRight: Radius.circular(24 * AppStyle.getScaleFactor(context)),
), // bottomLeft: Radius.circular(24 * AppStyle.getScaleFactor(context)),
), // ),
indicatorSize: TabBarIndicatorSize.label, // ),
tabs: images // indicatorSize: TabBarIndicatorSize.label,
.map((imagePath) => InteractiveViewer( // tabs: images
child: Container( // .map((imagePath) => InteractiveViewer(
height: 60, // child: Container(
width: 80, // height: 60,
padding: EdgeInsets.all( // width: 80,
AppStyle.getScaleFactor(context), // padding: EdgeInsets.all(
), // AppStyle.getScaleFactor(context),
child: ClipRRect( // ),
borderRadius: BorderRadius.only( // child: ClipRRect(
topRight: Radius.circular(22 * AppStyle.getScaleFactor(context)), // borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(22 * AppStyle.getScaleFactor(context)), // topRight: Radius.circular(22 * AppStyle.getScaleFactor(context)),
), // bottomLeft: Radius.circular(22 * AppStyle.getScaleFactor(context)),
child: ImageLoader( // ),
url: imagePath, // child: ImageLoader(
boxFit: BoxFit.cover, // url: imagePath,
), // boxFit: BoxFit.cover,
), // ),
), // ),
)) // ),
.toList(), // ))
), // .toList(),
SizedBox( // ),
height: 8 * AppStyle.getScaleFactor(context), // SizedBox(
), // height: 8 * AppStyle.getScaleFactor(context),
], // ),
), // ],
Expanded( // ),
child: TabBarView( // Expanded(
children: images // child: TabBarView(
.map((imagePath) => InteractiveViewer( // children: images
child: ImageLoader( // .map((imagePath) => InteractiveViewer(
url: imagePath, // child: ImageLoader(
boxFit: BoxFit.contain, // url: imagePath,
), // boxFit: BoxFit.contain,
)) // ),
.toList(), // ))
), // .toList(),
), // ),
], // ),
), // ],
), // ),
), // ),
); // ),
} // );
} // }
// }

@ -1,143 +1,144 @@
import 'dart:io'; ///todo deleted
// import 'dart:io';
import 'package:file_picker/file_picker.dart'; //
import 'package:flutter/cupertino.dart'; // import 'package:file_picker/file_picker.dart';
import 'package:flutter/material.dart'; // import 'package:flutter/cupertino.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart'; // import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart'; // import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:test_sa/extensions/context_extension.dart'; // import 'package:image_picker/image_picker.dart';
import 'package:test_sa/views/app_style/sizing.dart'; // import 'package:test_sa/extensions/context_extension.dart';
// import 'package:test_sa/views/app_style/sizing.dart';
class AMiniOneFilePicker extends StatefulWidget { //
final Function(File) onPick; // class AMiniOneFilePicker extends StatefulWidget {
final File file; // final Function(File) onPick;
final String label; // final File file;
final bool error; // final String label;
// final bool error;
const AMiniOneFilePicker({Key key, this.label, this.error, this.file, this.onPick}) : super(key: key); //
// const AMiniOneFilePicker({Key key, this.label, this.error, this.file, this.onPick}) : super(key: key);
@override //
_AMiniOneFilePickerState createState() => _AMiniOneFilePickerState(); // @override
} // _AMiniOneFilePickerState createState() => _AMiniOneFilePickerState();
// }
class _AMiniOneFilePickerState extends State<AMiniOneFilePicker> { //
File _file; // class _AMiniOneFilePickerState extends State<AMiniOneFilePicker> {
// File _file;
@override //
void initState() { // @override
super.initState(); // void initState() {
_file = widget.file; // super.initState();
} // _file = widget.file;
// }
@override //
Widget build(BuildContext context) { // @override
return Column( // Widget build(BuildContext context) {
crossAxisAlignment: CrossAxisAlignment.start, // return Column(
children: [ // crossAxisAlignment: CrossAxisAlignment.start,
Visibility( // children: [
visible: widget.label != null, // Visibility(
child: Column( // visible: widget.label != null,
children: [ // child: Column(
SizedBox(height: 8 * AppStyle.getScaleFactor(context)), // children: [
Text( // SizedBox(height: 8 * AppStyle.getScaleFactor(context)),
widget.label ?? '', // Text(
style: Theme.of(context).textTheme.titleLarge, // widget.label ?? '',
textScaleFactor: AppStyle.getScaleFactor(context), // style: Theme.of(context).textTheme.titleLarge,
), // textScaleFactor: AppStyle.getScaleFactor(context),
], // ),
), // ],
), // ),
Visibility( // ),
visible: _file == null && widget.error == true, // Visibility(
child: Column( // visible: _file == null && widget.error == true,
children: [ // child: Column(
const SizedBox(height: 4), // children: [
Text( // const SizedBox(height: 4),
context.translation.requiredFile, // Text(
style: Theme.of(context).textTheme.titleLarge.copyWith(color: Colors.red), // context.translation.requiredFile,
textScaleFactor: AppStyle.getScaleFactor(context), // style: Theme.of(context).textTheme.titleLarge.copyWith(color: Colors.red),
), // textScaleFactor: AppStyle.getScaleFactor(context),
], // ),
), // ],
), // ),
const SizedBox(height: 8), // ),
SizedBox( // const SizedBox(height: 8),
width: MediaQuery.of(context).size.width, // SizedBox(
child: ElevatedButton( // width: MediaQuery.of(context).size.width,
style: ElevatedButton.styleFrom( // child: ElevatedButton(
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context))), // style: ElevatedButton.styleFrom(
//primary: Colors.grey[200], // shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context))),
textStyle: Theme.of(context).textTheme.labelSmall, // //primary: Colors.grey[200],
padding: _file == null ? null : EdgeInsets.zero, // textStyle: Theme.of(context).textTheme.labelSmall,
), // padding: _file == null ? null : EdgeInsets.zero,
child: Padding( // ),
padding: const EdgeInsets.all(8.0), // child: Padding(
child: Text( // padding: const EdgeInsets.all(8.0),
_file == null ? context.translation.pickFile : _file.path.split("/").last, // child: Text(
textScaleFactor: AppStyle.getScaleFactor(context), // _file == null ? context.translation.pickFile : _file.path.split("/").last,
), // textScaleFactor: AppStyle.getScaleFactor(context),
), // ),
onPressed: () async { // ),
onFilePicker(context.translation); // onPressed: () async {
}, // onFilePicker(context.translation);
), // },
), // ),
], // ),
); // ],
} // );
// }
fromFilePicker(AppLocalizations subtitle) async { //
FilePickerResult result = await FilePicker.platform.pickFiles( // fromFilePicker(AppLocalizations subtitle) async {
type: FileType.custom, // FilePickerResult result = await FilePicker.platform.pickFiles(
allowedExtensions: ['jpg', 'jpeg', 'png', 'pdf', 'doc', 'docx', 'xlsx', 'pptx'], // type: FileType.custom,
); // allowedExtensions: ['jpg', 'jpeg', 'png', 'pdf', 'doc', 'docx', 'xlsx', 'pptx'],
if (result != null) { // );
for (var path in result.paths) { // if (result != null) {
_file = File(path); // for (var path in result.paths) {
widget.onPick(_file); // _file = File(path);
} // widget.onPick(_file);
setState(() {}); // }
} // setState(() {});
} // }
// }
onFilePicker(AppLocalizations subtitle) async { //
ImageSource source = await showDialog( // onFilePicker(AppLocalizations subtitle) async {
context: context, // ImageSource source = await showDialog(
builder: (dialogContext) => CupertinoAlertDialog( // context: context,
actions: <Widget>[ // builder: (dialogContext) => CupertinoAlertDialog(
TextButton( // actions: <Widget>[
child: Text(subtitle.pickFromCamera), // TextButton(
onPressed: () { // child: Text(subtitle.pickFromCamera),
Navigator.of(dialogContext).pop(ImageSource.camera); // onPressed: () {
}, // Navigator.of(dialogContext).pop(ImageSource.camera);
), // },
TextButton( // ),
child: Text(subtitle.pickFromGallery), // TextButton(
onPressed: () { // child: Text(subtitle.pickFromGallery),
Navigator.of(dialogContext).pop(ImageSource.gallery); // onPressed: () {
}, // Navigator.of(dialogContext).pop(ImageSource.gallery);
), // },
TextButton( // ),
child: Text(subtitle.pickFromFiles), // TextButton(
onPressed: () async { // child: Text(subtitle.pickFromFiles),
await fromFilePicker(subtitle); // onPressed: () async {
Navigator.pop(context); // await fromFilePicker(subtitle);
}, // Navigator.pop(context);
), // },
], // ),
), // ],
); // ),
if (source == null) return; // );
// if (source == null) return;
final pickedFile = await ImagePicker().pickImage(source: source, imageQuality: 70, maxWidth: 800, maxHeight: 800); //
// final pickedFile = await ImagePicker().pickImage(source: source, imageQuality: 70, maxWidth: 800, maxHeight: 800);
if (pickedFile != null) { //
File fileImage = File(pickedFile.path); // if (pickedFile != null) {
if (fileImage != null) { // File fileImage = File(pickedFile.path);
_file = File(pickedFile.path); // if (fileImage != null) {
widget.onPick(_file); // _file = File(pickedFile.path);
} // widget.onPick(_file);
} // }
setState(() {}); // }
} // setState(() {});
} // }
// }

@ -1,127 +1,128 @@
import 'dart:io'; ///todo deleted
// import 'dart:io';
import 'package:flutter/cupertino.dart'; //
import 'package:flutter/material.dart'; // import 'package:flutter/cupertino.dart';
import 'package:image_picker/image_picker.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/extensions/context_extension.dart'; // import 'package:image_picker/image_picker.dart';
import 'package:test_sa/views/app_style/sizing.dart'; // import 'package:test_sa/extensions/context_extension.dart';
// import 'package:test_sa/views/app_style/sizing.dart';
class AOneImagePicker extends StatefulWidget { //
final Function(File) onPick; // class AOneImagePicker extends StatefulWidget {
final File image; // final Function(File) onPick;
final String label; // final File image;
final bool error; // final String label;
// final bool error;
const AOneImagePicker({Key key, this.label, this.error, this.image, this.onPick}) : super(key: key); //
// const AOneImagePicker({Key key, this.label, this.error, this.image, this.onPick}) : super(key: key);
@override //
_AOneImagePickerState createState() => _AOneImagePickerState(); // @override
} // _AOneImagePickerState createState() => _AOneImagePickerState();
// }
class _AOneImagePickerState extends State<AOneImagePicker> { //
File _image; // class _AOneImagePickerState extends State<AOneImagePicker> {
// File _image;
@override //
void initState() { // @override
super.initState(); // void initState() {
_image = widget.image; // super.initState();
} // _image = widget.image;
// }
@override //
Widget build(BuildContext context) { // @override
return Column( // Widget build(BuildContext context) {
crossAxisAlignment: CrossAxisAlignment.start, // return Column(
children: [ // crossAxisAlignment: CrossAxisAlignment.start,
Visibility( // children: [
visible: widget.label != null, // Visibility(
child: Column( // visible: widget.label != null,
children: [ // child: Column(
SizedBox( // children: [
height: 8 * AppStyle.getScaleFactor(context), // SizedBox(
), // height: 8 * AppStyle.getScaleFactor(context),
Text( // ),
widget.label ?? '', // Text(
style: Theme.of(context).textTheme.headline6, // widget.label ?? '',
textScaleFactor: AppStyle.getScaleFactor(context), // style: Theme.of(context).textTheme.headline6,
), // textScaleFactor: AppStyle.getScaleFactor(context),
], // ),
), // ],
), // ),
Visibility( // ),
visible: _image == null && widget.error == true, // Visibility(
child: Column( // visible: _image == null && widget.error == true,
children: [ // child: Column(
SizedBox( // children: [
height: 4, // SizedBox(
), // height: 4,
Text( // ),
context.translation.requiredImage, // Text(
style: Theme.of(context).textTheme.headline6.copyWith(color: Colors.red), // context.translation.requiredImage,
textScaleFactor: AppStyle.getScaleFactor(context), // style: Theme.of(context).textTheme.headline6.copyWith(color: Colors.red),
), // textScaleFactor: AppStyle.getScaleFactor(context),
], // ),
), // ],
), // ),
SizedBox( // ),
height: 8, // SizedBox(
), // height: 8,
Container( // ),
height: MediaQuery.of(context).size.height / 8, // Container(
width: MediaQuery.of(context).size.width, // height: MediaQuery.of(context).size.height / 8,
child: ElevatedButton( // width: MediaQuery.of(context).size.width,
style: ElevatedButton.styleFrom( // child: ElevatedButton(
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context))), // style: ElevatedButton.styleFrom(
primary: Colors.grey[200], // shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context))),
padding: _image == null ? null : EdgeInsets.zero, // primary: Colors.grey[200],
), // padding: _image == null ? null : EdgeInsets.zero,
child: _image == null // ),
? Text( // child: _image == null
context.translation.pickImage, // ? Text(
style: Theme.of(context).textTheme.headline6, // context.translation.pickImage,
textScaleFactor: AppStyle.getScaleFactor(context), // style: Theme.of(context).textTheme.headline6,
) // textScaleFactor: AppStyle.getScaleFactor(context),
: ClipRRect( // )
borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)), // : ClipRRect(
child: Image( // borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)),
height: MediaQuery.of(context).size.height / 6, // child: Image(
width: MediaQuery.of(context).size.width, // height: MediaQuery.of(context).size.height / 6,
image: FileImage(_image), // width: MediaQuery.of(context).size.width,
fit: BoxFit.cover, // image: FileImage(_image),
), // fit: BoxFit.cover,
), // ),
onPressed: () async { // ),
ImageSource source = await showDialog( // onPressed: () async {
context: context, // ImageSource source = await showDialog(
builder: (_) => CupertinoAlertDialog( // context: context,
actions: <Widget>[ // builder: (_) => CupertinoAlertDialog(
TextButton( // actions: <Widget>[
child: Text("pick from camera"), // TextButton(
onPressed: () { // child: Text("pick from camera"),
Navigator.of(context).pop(ImageSource.camera); // onPressed: () {
}, // Navigator.of(context).pop(ImageSource.camera);
), // },
TextButton( // ),
child: Text("pick from gallery"), // TextButton(
onPressed: () { // child: Text("pick from gallery"),
Navigator.of(context).pop(ImageSource.gallery); // onPressed: () {
}, // Navigator.of(context).pop(ImageSource.gallery);
), // },
], // ),
)); // ],
if (source == null) return; // ));
// if (source == null) return;
final pickedFile = await ImagePicker().pickImage(source: source, imageQuality: 70, maxWidth: 1000, maxHeight: 1000); //
// final pickedFile = await ImagePicker().pickImage(source: source, imageQuality: 70, maxWidth: 1000, maxHeight: 1000);
setState(() { //
if (pickedFile != null) { // setState(() {
_image = File(pickedFile.path); // if (pickedFile != null) {
widget.onPick(_image); // _image = File(pickedFile.path);
} // widget.onPick(_image);
}); // }
}, // });
), // },
), // ),
], // ),
); // ],
} // );
} // }
// }

@ -1,140 +1,141 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:test_sa/extensions/context_extension.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/extensions/int_extensions.dart'; // import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/text_extensions.dart'; // import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; // import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/new_views/app_style/app_color.dart'; // import 'package:test_sa/extensions/widget_extensions.dart';
// import 'package:test_sa/new_views/app_style/app_color.dart';
class InputWidget extends StatefulWidget { //
final String labelText; // class InputWidget extends StatefulWidget {
final String hintText; // final String labelText;
final TextEditingController controller; // final String hintText;
final VoidCallback suffixTap; // final TextEditingController controller;
final bool isEnable; // final VoidCallback suffixTap;
final bool hasSelection; // final bool isEnable;
final int lines; // final bool hasSelection;
final bool isInputTypeNum; // final int lines;
final bool isTextIsPassword; // final bool isInputTypeNum;
final bool isBackgroundEnable; // final bool isTextIsPassword;
final bool isEnableBorder; // final bool isBackgroundEnable;
final double verticalPadding; // final bool isEnableBorder;
final double horizontalPadding; // final double verticalPadding;
final Function(String) onChange; // final double horizontalPadding;
final Function(String) validator; // final Function(String) onChange;
// final Function(String) validator;
InputWidget( //
this.labelText, // InputWidget(
this.hintText, // this.labelText,
this.controller, { // this.hintText,
Key key, // this.controller, {
this.isTextIsPassword = false, // Key key,
this.suffixTap, // this.isTextIsPassword = false,
this.validator, // this.suffixTap,
this.isEnable = true, // this.validator,
this.hasSelection = false, // this.isEnable = true,
this.isEnableBorder = false, // this.hasSelection = false,
this.lines = 1, // this.isEnableBorder = false,
this.onChange, // this.lines = 1,
this.isInputTypeNum = false, // this.onChange,
this.isBackgroundEnable = false, // this.isInputTypeNum = false,
this.verticalPadding = 10, // this.isBackgroundEnable = false,
this.horizontalPadding = 16, // this.verticalPadding = 10,
}) : super(key: key); // this.horizontalPadding = 16,
// }) : super(key: key);
@override //
_InputWidgetState createState() { // @override
return _InputWidgetState(); // _InputWidgetState createState() {
} // return _InputWidgetState();
} // }
// }
class _InputWidgetState extends State<InputWidget> { //
bool isObscureText; // class _InputWidgetState extends State<InputWidget> {
// bool isObscureText;
@override //
void initState() { // @override
super.initState(); // void initState() {
isObscureText = widget.isTextIsPassword; // super.initState();
} // isObscureText = widget.isTextIsPassword;
// }
@override //
void dispose() { // @override
super.dispose(); // void dispose() {
} // super.dispose();
// }
@override //
Widget build(BuildContext context) { // @override
return Container( // Widget build(BuildContext context) {
height: 56, // return Container(
padding: EdgeInsets.only(left: widget.horizontalPadding, right: widget.horizontalPadding, bottom: widget.verticalPadding, top: widget.verticalPadding), // height: 56,
alignment: Alignment.center, // padding: EdgeInsets.only(left: widget.horizontalPadding, right: widget.horizontalPadding, bottom: widget.verticalPadding, top: widget.verticalPadding),
decoration: BoxDecoration( // alignment: Alignment.center,
borderRadius: BorderRadius.circular(10), // decoration: BoxDecoration(
color: widget.isBackgroundEnable ? Color(0xffF7F7F7) : Colors.white, // borderRadius: BorderRadius.circular(10),
border: Border.all( // color: widget.isBackgroundEnable ? Color(0xffF7F7F7) : Colors.white,
color: widget.isEnableBorder ? Color(0xffefefef) : Colors.transparent, // border: Border.all(
width: 1, // color: widget.isEnableBorder ? Color(0xffefefef) : Colors.transparent,
), // width: 1,
boxShadow: const [ // ),
BoxShadow( // boxShadow: const [
color: Color.fromRGBO(0, 0, 0, 0.05), // BoxShadow(
blurRadius: 10.0, // color: Color.fromRGBO(0, 0, 0, 0.05),
spreadRadius: 0.0, // blurRadius: 10.0,
offset: Offset(0, 0), // spreadRadius: 0.0,
), // offset: Offset(0, 0),
], // ),
), // ],
child: InkWell( // ),
onTap: widget.hasSelection ? () {} : null, // child: InkWell(
child: Row( // onTap: widget.hasSelection ? () {} : null,
children: [ // child: Row(
Expanded( // children: [
child: Column( // Expanded(
mainAxisSize: MainAxisSize.min, // child: Column(
crossAxisAlignment: CrossAxisAlignment.start, // mainAxisSize: MainAxisSize.min,
children: [ // crossAxisAlignment: CrossAxisAlignment.start,
Text( // children: [
widget.labelText, // Text(
style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), // widget.labelText,
), // style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20),
TextFormField( // ),
enabled: widget.isEnable, // TextFormField(
scrollPadding: EdgeInsets.zero, // enabled: widget.isEnable,
keyboardType: widget.isInputTypeNum ? TextInputType.number : TextInputType.text, // scrollPadding: EdgeInsets.zero,
controller: widget.controller, // keyboardType: widget.isInputTypeNum ? TextInputType.number : TextInputType.text,
maxLines: widget.lines, // controller: widget.controller,
validator: widget.validator, // maxLines: widget.lines,
obscuringCharacter: "*", // validator: widget.validator,
obscureText: isObscureText, // obscuringCharacter: "*",
onChanged: widget.onChange, // obscureText: isObscureText,
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.primary50 : AppColor.neutral50), // onChanged: widget.onChange,
decoration: InputDecoration( // style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.primary50 : AppColor.neutral50),
isDense: true, // decoration: InputDecoration(
hintText: widget.hintText, // isDense: true,
// hintStyle: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.primary50 : AppColor.neutral50), // hintText: widget.hintText,
hintStyle: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20.withOpacity(.4)), // // hintStyle: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.primary50 : AppColor.neutral50),
//suffixIconConstraints: const BoxConstraints(minWidth: 50), // hintStyle: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20.withOpacity(.4)),
// suffixIcon: widget.suffixTap == null ? null : IconButton(icon: const Icon(Icons.mic, color: MyColors.darkTextColor), onPressed: widget.suffixTap), // //suffixIconConstraints: const BoxConstraints(minWidth: 50),
contentPadding: EdgeInsets.zero, // // suffixIcon: widget.suffixTap == null ? null : IconButton(icon: const Icon(Icons.mic, color: MyColors.darkTextColor), onPressed: widget.suffixTap),
border: InputBorder.none, // contentPadding: EdgeInsets.zero,
focusedBorder: InputBorder.none, // border: InputBorder.none,
enabledBorder: InputBorder.none, // focusedBorder: InputBorder.none,
), // enabledBorder: InputBorder.none,
), // ),
], // ),
), // ],
), // ),
if (widget.isTextIsPassword) ...[ // ),
16.width, // if (widget.isTextIsPassword) ...[
Icon(isObscureText ? Icons.visibility_rounded : Icons.visibility_off_rounded).onPress(() { // 16.width,
setState(() { // Icon(isObscureText ? Icons.visibility_rounded : Icons.visibility_off_rounded).onPress(() {
isObscureText = !isObscureText; // setState(() {
}); // isObscureText = !isObscureText;
}) // });
], // })
if (widget.hasSelection) Icon(Icons.keyboard_arrow_down_outlined), // ],
], // if (widget.hasSelection) Icon(Icons.keyboard_arrow_down_outlined),
), // ],
), // ),
); // ),
} // );
} // }
// }

@ -1,46 +1,47 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:flutter_svg/svg.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/extensions/context_extension.dart'; // import 'package:flutter_svg/svg.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; // import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/views/app_style/sizing.dart'; // import 'package:test_sa/extensions/widget_extensions.dart';
// import 'package:test_sa/views/app_style/sizing.dart';
import '../../../new_views/app_style/app_color.dart'; //
// import '../../../new_views/app_style/app_color.dart';
class LandPageItem extends StatelessWidget { //
final String text; // class LandPageItem extends StatelessWidget {
final IconData icon; // final String text;
final VoidCallback onPressed; // final IconData icon;
final String svgPath; // final VoidCallback onPressed;
// final String svgPath;
const LandPageItem({Key key, this.svgPath, this.text, this.icon, this.onPressed}) : super(key: key); //
// const LandPageItem({Key key, this.svgPath, this.text, this.icon, this.onPressed}) : super(key: key);
@override //
Widget build(BuildContext context) { // @override
return InkWell( // Widget build(BuildContext context) {
onTap: onPressed, // return InkWell(
child: Column( // onTap: onPressed,
crossAxisAlignment: CrossAxisAlignment.start, // child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween, // crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ // mainAxisAlignment: MainAxisAlignment.spaceBetween,
if (icon != null) // children: <Widget>[
Icon( // if (icon != null)
icon, // Icon(
// color: AColors.primaryColor, // icon,
size: 42 * AppStyle.getScaleFactor(context), // // color: AColors.primaryColor,
), // size: 42 * AppStyle.getScaleFactor(context),
if (svgPath != null) // ),
SvgPicture.asset( // if (svgPath != null)
svgPath, // SvgPicture.asset(
width: 42 * AppStyle.getScaleFactor(context), // svgPath,
height: 42 * AppStyle.getScaleFactor(context), // width: 42 * AppStyle.getScaleFactor(context),
// color: AColors.primaryColor, // height: 42 * AppStyle.getScaleFactor(context),
), // // color: AColors.primaryColor,
Text(text, // ),
style: TextStyle( // Text(text,
color: context.isDark ? AppColor.neutral30 : AppColor.neutral50, // style: TextStyle(
)), // color: context.isDark ? AppColor.neutral30 : AppColor.neutral50,
], // )),
).toShadowContainer(context), // ],
); // ).toShadowContainer(context),
} // );
} // }
// }

@ -1,105 +1,106 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:test_sa/views/app_style/sizing.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/views/widgets/buttons/app_icon_button2.dart'; // import 'package:test_sa/views/app_style/sizing.dart';
// import 'package:test_sa/views/widgets/buttons/app_icon_button2.dart';
import '../../../models/service_request/spare_parts.dart'; //
// import '../../../models/service_request/spare_parts.dart';
class PartItem extends StatefulWidget { //
final SparePartsWorkOrders part; // class PartItem extends StatefulWidget {
final Function(SparePartsWorkOrders) onDelete; // final SparePartsWorkOrders part;
final Function(int qty) onEdit; // final Function(SparePartsWorkOrders) onDelete;
// final Function(int qty) onEdit;
const PartItem({Key key, this.part, this.onEdit, this.onDelete}) : super(key: key); //
// const PartItem({Key key, this.part, this.onEdit, this.onDelete}) : super(key: key);
@override //
_PartItemState createState() => _PartItemState(); // @override
} // _PartItemState createState() => _PartItemState();
// }
class _PartItemState extends State<PartItem> { //
@override // class _PartItemState extends State<PartItem> {
Widget build(BuildContext context) { // @override
return Column( // Widget build(BuildContext context) {
children: [ // return Column(
const Divider(), // children: [
Row( // const Divider(),
crossAxisAlignment: CrossAxisAlignment.start, // Row(
children: [ // crossAxisAlignment: CrossAxisAlignment.start,
Expanded( // children: [
child: Column( // Expanded(
crossAxisAlignment: CrossAxisAlignment.start, // child: Column(
children: [ // crossAxisAlignment: CrossAxisAlignment.start,
Row( // children: [
children: [ // Row(
Expanded( // children: [
child: Text( // Expanded(
widget?.part?.sparePart?.partNo ?? "", // child: Text(
style: Theme.of(context).textTheme.bodyText1.copyWith(fontSize: 12, fontWeight: FontWeight.bold), // widget?.part?.sparePart?.partNo ?? "",
), // style: Theme.of(context).textTheme.bodyText1.copyWith(fontSize: 12, fontWeight: FontWeight.bold),
), // ),
AIconButton2( // ),
iconData: Icons.add, // AIconButton2(
color: Theme.of(context).primaryColor, // iconData: Icons.add,
onPressed: () { // color: Theme.of(context).primaryColor,
if (widget.onEdit == null) { // onPressed: () {
++widget.part.qty; // if (widget.onEdit == null) {
} else { // ++widget.part.qty;
widget.onEdit(++widget.part.qty); // } else {
} // widget.onEdit(++widget.part.qty);
setState(() {}); // }
}, // setState(() {});
), // },
AIconButton2( // ),
iconData: Icons.remove, // AIconButton2(
color: Theme.of(context).primaryColor, // iconData: Icons.remove,
onPressed: widget.part.qty < 2 // color: Theme.of(context).primaryColor,
? null // onPressed: widget.part.qty < 2
: () { // ? null
if (widget.onEdit == null) { // : () {
--widget.part.qty; // if (widget.onEdit == null) {
} else { // --widget.part.qty;
widget.onEdit(--widget.part.qty); // } else {
} // widget.onEdit(--widget.part.qty);
setState(() {}); // }
}, // setState(() {});
), // },
SizedBox( // ),
width: 8 * AppStyle.getScaleFactor(context), // SizedBox(
), // width: 8 * AppStyle.getScaleFactor(context),
Text( // ),
widget.part.qty.toString(), // Text(
style: Theme.of(context).textTheme.headline6.copyWith( // widget.part.qty.toString(),
//fontSize: 12, // style: Theme.of(context).textTheme.headline6.copyWith(
//fontWeight: FontWeight.bold // //fontSize: 12,
), // //fontWeight: FontWeight.bold
), // ),
SizedBox( // ),
width: 8 * AppStyle.getScaleFactor(context), // SizedBox(
), // width: 8 * AppStyle.getScaleFactor(context),
], // ),
), // ],
widget.part?.sparePart?.partName == null // ),
? const SizedBox.shrink() // widget.part?.sparePart?.partName == null
: Text( // ? const SizedBox.shrink()
widget.part?.sparePart?.partName, // : Text(
style: Theme.of(context).textTheme.caption.copyWith(fontSize: 11, fontWeight: FontWeight.bold), // widget.part?.sparePart?.partName,
maxLines: 1, // style: Theme.of(context).textTheme.caption.copyWith(fontSize: 11, fontWeight: FontWeight.bold),
overflow: TextOverflow.ellipsis, // maxLines: 1,
), // overflow: TextOverflow.ellipsis,
// ),
// Row(crossAxisAlignment: ,) //
], // // Row(crossAxisAlignment: ,)
), // ],
), // ),
AIconButton2( // ),
iconData: Icons.close, // AIconButton2(
color: Colors.red, // iconData: Icons.close,
onPressed: () { // color: Colors.red,
widget.onDelete(widget.part); // onPressed: () {
}, // widget.onDelete(widget.part);
), // },
], // ),
), // ],
], // ),
); // ],
} // );
} // }
// }

@ -1,110 +1,111 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:flutter_typeahead/flutter_typeahead.dart'; // import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; // import 'package:flutter_typeahead/flutter_typeahead.dart';
import 'package:test_sa/controllers/providers/api/devices_provider.dart'; // import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart'; // import 'package:test_sa/controllers/providers/api/devices_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; // import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/extensions/context_extension.dart'; // import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/extensions/int_extensions.dart'; // import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; // import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/extensions/widget_extensions.dart';
// import 'package:test_sa/models/lookup.dart';
import '../../../../extensions/text_extensions.dart'; //
import '../../../../models/device/asset.dart'; // import '../../../../extensions/text_extensions.dart';
import '../../../../models/device/asset_search.dart'; // import '../../../../models/device/asset.dart';
import '../../../../new_views/app_style/app_color.dart'; // import '../../../../models/device/asset_search.dart';
import '../../../../new_views/app_style/app_text_style.dart'; // import '../../../../new_views/app_style/app_color.dart';
import '../../../app_style/sizing.dart'; // import '../../../../new_views/app_style/app_text_style.dart';
// import '../../../app_style/sizing.dart';
class AutoCompleteDeviceNumberField extends StatefulWidget { //
final Lookup initialValue; // class AutoCompleteDeviceNumberField extends StatefulWidget {
final int hospitalId; // final Lookup initialValue;
final Function(Lookup) onPick; // final int hospitalId;
// final Function(Lookup) onPick;
const AutoCompleteDeviceNumberField({Key key, this.initialValue, this.onPick, this.hospitalId}) : super(key: key); //
// const AutoCompleteDeviceNumberField({Key key, this.initialValue, this.onPick, this.hospitalId}) : super(key: key);
@override //
State<AutoCompleteDeviceNumberField> createState() => _AutoCompleteDeviceNumberFieldState(); // @override
} // State<AutoCompleteDeviceNumberField> createState() => _AutoCompleteDeviceNumberFieldState();
// }
class _AutoCompleteDeviceNumberFieldState extends State<AutoCompleteDeviceNumberField> { //
SettingProvider _settingProvider; // class _AutoCompleteDeviceNumberFieldState extends State<AutoCompleteDeviceNumberField> {
AssetProvider _devicesProvider; // SettingProvider _settingProvider;
UserProvider _userProvider; // AssetProvider _devicesProvider;
TextEditingController _controller; // UserProvider _userProvider;
// TextEditingController _controller;
@override //
void initState() { // @override
_controller = TextEditingController(text: widget.initialValue?.name); // void initState() {
super.initState(); // _controller = TextEditingController(text: widget.initialValue?.name);
} // super.initState();
// }
@override //
void didUpdateWidget(covariant AutoCompleteDeviceNumberField oldWidget) { // @override
if (widget.initialValue != oldWidget.initialValue) { // void didUpdateWidget(covariant AutoCompleteDeviceNumberField oldWidget) {
_controller = TextEditingController(text: widget.initialValue?.name); // if (widget.initialValue != oldWidget.initialValue) {
} // _controller = TextEditingController(text: widget.initialValue?.name);
super.didUpdateWidget(oldWidget); // }
} // super.didUpdateWidget(oldWidget);
// }
@override //
void dispose() { // @override
_controller.dispose(); // void dispose() {
super.dispose(); // _controller.dispose();
} // super.dispose();
// }
@override //
Widget build(BuildContext context) { // @override
_settingProvider = Provider.of<SettingProvider>(context); // Widget build(BuildContext context) {
_userProvider = Provider.of<UserProvider>(context); // _settingProvider = Provider.of<SettingProvider>(context);
_devicesProvider = Provider.of<AssetProvider>(context); // _userProvider = Provider.of<UserProvider>(context);
final border = UnderlineInputBorder(borderSide: BorderSide.none, borderRadius: BorderRadius.circular(10)); // _devicesProvider = Provider.of<AssetProvider>(context);
return Container( // final border = UnderlineInputBorder(borderSide: BorderSide.none, borderRadius: BorderRadius.circular(10));
decoration: BoxDecoration( // return Container(
color: AppColor.background(context), // decoration: BoxDecoration(
borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)), // color: AppColor.background(context),
boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)], // borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)),
), // boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)],
child: TypeAheadField<Asset>( // ),
minCharsForSuggestions: 1, // child: TypeAheadField<Asset>(
textFieldConfiguration: TextFieldConfiguration( // minCharsForSuggestions: 1,
style: AppTextStyles.bodyText, // textFieldConfiguration: TextFieldConfiguration(
controller: _controller, // style: AppTextStyles.bodyText,
textAlign: TextAlign.start, // controller: _controller,
textInputAction: TextInputAction.search, // textAlign: TextAlign.start,
decoration: InputDecoration( // textInputAction: TextInputAction.search,
border: border, // decoration: InputDecoration(
disabledBorder: border, // border: border,
focusedBorder: border, // disabledBorder: border,
enabledBorder: border, // focusedBorder: border,
errorBorder: border, // enabledBorder: border,
contentPadding: EdgeInsets.symmetric(vertical: 8.toScreenHeight, horizontal: 16.toScreenWidth), // errorBorder: border,
constraints: const BoxConstraints(), // contentPadding: EdgeInsets.symmetric(vertical: 8.toScreenHeight, horizontal: 16.toScreenWidth),
suffixIconConstraints: const BoxConstraints(minWidth: 0), // constraints: const BoxConstraints(),
filled: true, // suffixIconConstraints: const BoxConstraints(minWidth: 0),
fillColor: (context.isDark ? AppColor.neutral50 : AppColor.background(context)), // filled: true,
errorStyle: AppTextStyle.tiny.copyWith(color: context.isDark ? AppColor.red50 : AppColor.red60), // fillColor: (context.isDark ? AppColor.neutral50 : AppColor.background(context)),
floatingLabelStyle: AppTextStyle.body1?.copyWith(fontWeight: FontWeight.w500, color: context.isDark ? null : AppColor.neutral20), // errorStyle: AppTextStyle.tiny.copyWith(color: context.isDark ? AppColor.red50 : AppColor.red60),
labelText: context.translation.assetNumber, // floatingLabelStyle: AppTextStyle.body1?.copyWith(fontWeight: FontWeight.w500, color: context.isDark ? null : AppColor.neutral20),
), // labelText: context.translation.assetNumber,
), // ),
suggestionsCallback: (value) async { // ),
return await _devicesProvider.getDevicesList( // suggestionsCallback: (value) async {
host: _settingProvider.host, // return await _devicesProvider.getDevicesList(
user: _userProvider.user, // host: _settingProvider.host,
hospitalId: widget.hospitalId, // user: _userProvider.user,
addPagination: false, // hospitalId: widget.hospitalId,
search: AssetSearch(assetNo: value), // addPagination: false,
); // search: AssetSearch(assetNo: value),
}, // );
itemBuilder: (context, device) { // },
return device.assetNumber.bodyText(context).paddingOnly(bottom: 16, start: 16); // itemBuilder: (context, device) {
}, // return device.assetNumber.bodyText(context).paddingOnly(bottom: 16, start: 16);
onSuggestionSelected: (device) { // },
_controller.text = device.assetNumber; // onSuggestionSelected: (device) {
widget.onPick(Lookup(id: device.id, name: device.assetNumber)); // _controller.text = device.assetNumber;
}, // widget.onPick(Lookup(id: device.id, name: device.assetNumber));
), // },
); // ),
} // );
} // }
// }

@ -1,75 +1,76 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:test_sa/views/app_style/sizing.dart'; // import 'package:flutter/material.dart';
// import 'package:test_sa/views/app_style/sizing.dart';
class RequestInfoRow extends StatelessWidget { //
final String title; // class RequestInfoRow extends StatelessWidget {
final String info; // final String title;
final String content; // final String info;
final Widget contentWidget; // final String content;
final Widget infoWidget; // final Widget contentWidget;
// final Widget infoWidget;
const RequestInfoRow({Key key, this.title, this.info, this.content, this.contentWidget, this.infoWidget}) : super(key: key); //
// const RequestInfoRow({Key key, this.title, this.info, this.content, this.contentWidget, this.infoWidget}) : super(key: key);
@override //
Widget build(BuildContext context) { // @override
if (info != null && info.isEmpty) { // Widget build(BuildContext context) {
return SizedBox.shrink(); // if (info != null && info.isEmpty) {
} // return SizedBox.shrink();
if (content != null && content.isEmpty) { // }
return SizedBox.shrink(); // if (content != null && content.isEmpty) {
} // return SizedBox.shrink();
return Column( // }
children: [ // return Column(
Row( // children: [
children: [ // Row(
Text( // children: [
title + " : ", // Text(
style: Theme.of(context).textTheme.subtitle2.copyWith( // title + " : ",
//fontSize: 12 // style: Theme.of(context).textTheme.subtitle2.copyWith(
), // //fontSize: 12
textScaleFactor: AppStyle.getScaleFactor(context), // ),
), // textScaleFactor: AppStyle.getScaleFactor(context),
if (info != null) // ),
Expanded( // if (info != null)
child: Text( // Expanded(
info, // child: Text(
style: Theme.of(context).textTheme.bodyText2, // info,
textAlign: TextAlign.right, // style: Theme.of(context).textTheme.bodyText2,
textScaleFactor: AppStyle.getScaleFactor(context), // textAlign: TextAlign.right,
), // textScaleFactor: AppStyle.getScaleFactor(context),
), // ),
if (infoWidget != null) // ),
Expanded( // if (infoWidget != null)
child: Row( // Expanded(
mainAxisAlignment: MainAxisAlignment.end, // child: Row(
children: [ // mainAxisAlignment: MainAxisAlignment.end,
infoWidget, // children: [
], // infoWidget,
), // ],
), // ),
], // ),
), // ],
if (content != null) // ),
Padding( // if (content != null)
padding: const EdgeInsets.symmetric(horizontal: 8), // Padding(
child: Row( // padding: const EdgeInsets.symmetric(horizontal: 8),
children: [ // child: Row(
Expanded( // children: [
child: Text( // Expanded(
content ?? 'No data found', // child: Text(
style: Theme.of(context).textTheme.bodyText2, // content ?? 'No data found',
textAlign: TextAlign.center, // style: Theme.of(context).textTheme.bodyText2,
textScaleFactor: AppStyle.getScaleFactor(context), // textAlign: TextAlign.center,
), // textScaleFactor: AppStyle.getScaleFactor(context),
), // ),
], // ),
), // ],
), // ),
if (contentWidget != null) contentWidget, // ),
Divider( // if (contentWidget != null) contentWidget,
color: Theme.of(context).primaryColor, // Divider(
), // color: Theme.of(context).primaryColor,
], // ),
); // ],
} // );
} // }
// }

@ -1,142 +1,143 @@
import 'package:flutter/cupertino.dart'; ///todo deleted
import 'package:flutter/material.dart'; // import 'package:flutter/cupertino.dart';
import 'package:fluttertoast/fluttertoast.dart'; // import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; // import 'package:fluttertoast/fluttertoast.dart';
import 'package:test_sa/controllers/api_routes/http_status_manger.dart'; // import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; // import 'package:test_sa/controllers/api_routes/http_status_manger.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart'; // import 'package:test_sa/controllers/providers/api/service_requests_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; // import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/extensions/context_extension.dart'; // import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/models/service_request/service_request.dart'; // import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/views/app_style/sizing.dart'; // import 'package:test_sa/models/service_request/service_request.dart';
import 'package:test_sa/views/widgets/buttons/app_small_button.dart'; // import 'package:test_sa/views/app_style/sizing.dart';
import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; // import 'package:test_sa/views/widgets/buttons/app_small_button.dart';
import 'package:test_sa/views/widgets/status/employee/assigned_to_menu.dart'; // import 'package:test_sa/views/widgets/date_and_time/date_picker.dart';
// import 'package:test_sa/views/widgets/status/employee/assigned_to_menu.dart';
class ServiceRequestsUpdateDialog extends StatefulWidget { //
final ServiceRequest request; // class ServiceRequestsUpdateDialog extends StatefulWidget {
// final ServiceRequest request;
const ServiceRequestsUpdateDialog({ //
Key key, // const ServiceRequestsUpdateDialog({
this.request, // Key key,
}) : super(key: key); // this.request,
// }) : super(key: key);
@override //
State<ServiceRequestsUpdateDialog> createState() => _ServiceRequestsUpdateDialogState(); // @override
} // State<ServiceRequestsUpdateDialog> createState() => _ServiceRequestsUpdateDialogState();
// }
class _ServiceRequestsUpdateDialogState extends State<ServiceRequestsUpdateDialog> with TickerProviderStateMixin { //
DateTime _dateTime; // class _ServiceRequestsUpdateDialogState extends State<ServiceRequestsUpdateDialog> with TickerProviderStateMixin {
Lookup _employee; // DateTime _dateTime;
// Lookup _employee;
UserProvider _userProvider; //
SettingProvider _settingProvider; // UserProvider _userProvider;
ServiceRequestsProvider _serviceRequestsProvider; // SettingProvider _settingProvider;
// ServiceRequestsProvider _serviceRequestsProvider;
final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); //
// final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
_update() async { //
if (_dateTime == null && _employee == null) { // _update() async {
Fluttertoast.showToast( // if (_dateTime == null && _employee == null) {
msg: context.translation.noDateFound, // Fluttertoast.showToast(
); // msg: context.translation.noDateFound,
return; // );
} // return;
showDialog<void>( // }
context: context, // showDialog<void>(
barrierDismissible: false, // context: context,
builder: (BuildContext context) { // barrierDismissible: false,
return CupertinoAlertDialog( // builder: (BuildContext context) {
title: Text(context.translation.updatingDots), // return CupertinoAlertDialog(
content: Center(child: CircularProgressIndicator()), // title: Text(context.translation.updatingDots),
); // content: Center(child: CircularProgressIndicator()),
}, // );
); // },
int status = await _serviceRequestsProvider.updateRequest(user: _userProvider.user, request: widget.request); // );
if (status == 200) Navigator.of(context).pop(); // int status = await _serviceRequestsProvider.updateRequest(user: _userProvider.user, request: widget.request);
Navigator.of(context).pop(); // if (status == 200) Navigator.of(context).pop();
Fluttertoast.showToast( // Navigator.of(context).pop();
msg: HttpStatusManger.getStatusMessage(status: status, subtitle: context.translation), // Fluttertoast.showToast(
); // msg: HttpStatusManger.getStatusMessage(status: status, subtitle: context.translation),
} // );
// }
@override //
void initState() { // @override
super.initState(); // void initState() {
} // super.initState();
// }
@override //
Widget build(BuildContext context) { // @override
_userProvider = Provider.of<UserProvider>(context, listen: false); // Widget build(BuildContext context) {
_settingProvider = Provider.of<SettingProvider>(context, listen: false); // _userProvider = Provider.of<UserProvider>(context, listen: false);
_serviceRequestsProvider = Provider.of<ServiceRequestsProvider>(context, listen: false); // _settingProvider = Provider.of<SettingProvider>(context, listen: false);
return Column( // _serviceRequestsProvider = Provider.of<ServiceRequestsProvider>(context, listen: false);
mainAxisSize: MainAxisSize.min, // return Column(
children: [ // mainAxisSize: MainAxisSize.min,
SizedBox( // children: [
// height: MediaQuery.of(context).size.height / 1.2, // SizedBox(
child: Form( // // height: MediaQuery.of(context).size.height / 1.2,
key: _formKey, // child: Form(
child: Padding( // key: _formKey,
padding: const EdgeInsets.all(16.0), // child: Padding(
child: Column( // padding: const EdgeInsets.all(16.0),
children: [ // child: Column(
Row( // children: [
mainAxisAlignment: MainAxisAlignment.spaceBetween, // Row(
children: [ // mainAxisAlignment: MainAxisAlignment.spaceBetween,
ASmallButton( // children: [
text: context.translation.cancel, // ASmallButton(
onPressed: () { // text: context.translation.cancel,
Navigator.of(context).pop(); // onPressed: () {
}, // Navigator.of(context).pop();
), // },
ASmallButton( // ),
text: context.translation.update, // ASmallButton(
onPressed: _update, // text: context.translation.update,
) // onPressed: _update,
], // )
), // ],
SizedBox( // ),
height: 8.0 * AppStyle.getScaleFactor(context), // SizedBox(
), // height: 8.0 * AppStyle.getScaleFactor(context),
Row( // ),
children: [ // Row(
Expanded( // children: [
child: Text( // Expanded(
context.translation.date, // child: Text(
style: Theme.of(context).textTheme.subtitle1, // context.translation.date,
textScaleFactor: AppStyle.getScaleFactor(context), // style: Theme.of(context).textTheme.subtitle1,
), // textScaleFactor: AppStyle.getScaleFactor(context),
), // ),
ADatePicker( // ),
date: _dateTime, // ADatePicker(
from: DateTime.now(), // date: _dateTime,
onDatePicker: (date) { // from: DateTime.now(),
_dateTime = date; // onDatePicker: (date) {
setState(() {}); // _dateTime = date;
}, // setState(() {});
), // },
], // ),
), // ],
SizedBox( // ),
height: 8.0 * AppStyle.getScaleFactor(context), // SizedBox(
), // height: 8.0 * AppStyle.getScaleFactor(context),
AssignedToMenu( // ),
initialValue: _employee, // AssignedToMenu(
onSelect: (employee) { // initialValue: _employee,
_employee = employee; // onSelect: (employee) {
}, // _employee = employee;
), // },
SizedBox( // ),
height: 8.0 * AppStyle.getScaleFactor(context), // SizedBox(
), // height: 8.0 * AppStyle.getScaleFactor(context),
], // ),
), // ],
), // ),
), // ),
), // ),
], // ),
); // ],
} // );
} // }
// }

@ -1,196 +1,197 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:test_sa/extensions/context_extension.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/models/device/asset_transfer.dart'; // import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/views/app_style/sizing.dart'; // import 'package:test_sa/models/device/asset_transfer.dart';
import 'package:test_sa/views/widgets/buttons/app_small_button.dart'; // import 'package:test_sa/views/app_style/sizing.dart';
import 'package:test_sa/views/widgets/equipment/pick_asset.dart'; // import 'package:test_sa/views/widgets/buttons/app_small_button.dart';
// import 'package:test_sa/views/widgets/equipment/pick_asset.dart';
import '../../../models/device/asset_transfer_search.dart'; //
import '../app_text_form_field.dart'; // import '../../../models/device/asset_transfer_search.dart';
import '../switch_button.dart'; // import '../app_text_form_field.dart';
// import '../switch_button.dart';
class AssetTransferSearchDialog extends StatefulWidget { //
final AssetTransfer initialSearchValue; // class AssetTransferSearchDialog extends StatefulWidget {
final bool expandedSearch; // final AssetTransfer initialSearchValue;
final Function(AssetTransfer) onSearch; // final bool expandedSearch;
// final Function(AssetTransfer) onSearch;
const AssetTransferSearchDialog({Key key, this.initialSearchValue, this.expandedSearch, this.onSearch}) : super(key: key); //
// const AssetTransferSearchDialog({Key key, this.initialSearchValue, this.expandedSearch, this.onSearch}) : super(key: key);
@override //
AssetTransferSearchDialogState createState() => AssetTransferSearchDialogState(); // @override
} // AssetTransferSearchDialogState createState() => AssetTransferSearchDialogState();
// }
class AssetTransferSearchDialogState extends State<AssetTransferSearchDialog> with TickerProviderStateMixin { //
AssetTransferSearch _search; // class AssetTransferSearchDialogState extends State<AssetTransferSearchDialog> with TickerProviderStateMixin {
final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); // AssetTransferSearch _search;
bool _isLoading = false; // final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
// bool _isLoading = false;
@override //
void initState() { // @override
super.initState(); // void initState() {
_search = AssetTransferSearch(); // super.initState();
// _search.fromSearch(widget.initialSearchValue); // _search = AssetTransferSearch();
} // // _search.fromSearch(widget.initialSearchValue);
// }
@override //
Widget build(BuildContext context) { // @override
return Padding( // Widget build(BuildContext context) {
padding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom), // return Padding(
child: ClipRRect( // padding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
borderRadius: const BorderRadius.only(topLeft: Radius.circular(15), topRight: Radius.circular(15)), // child: ClipRRect(
clipBehavior: Clip.antiAliasWithSaveLayer, // borderRadius: const BorderRadius.only(topLeft: Radius.circular(15), topRight: Radius.circular(15)),
child: Container( // clipBehavior: Clip.antiAliasWithSaveLayer,
color: Colors.white, // child: Container(
height: MediaQuery.of(context).size.height / 1.3, // color: Colors.white,
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 20), // height: MediaQuery.of(context).size.height / 1.3,
child: Form( // padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 20),
key: _formKey, // child: Form(
child: ListView( // key: _formKey,
padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 16), // child: ListView(
children: [ // padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 16),
Row( // children: [
mainAxisAlignment: MainAxisAlignment.spaceBetween, // Row(
children: [ // mainAxisAlignment: MainAxisAlignment.spaceBetween,
ASmallButton( // children: [
text: context.translation.cancel, // ASmallButton(
onPressed: () { // text: context.translation.cancel,
Navigator.of(context).pop(); // onPressed: () {
}, // Navigator.of(context).pop();
),
ASmallButton(
text: context.translation.search,
onPressed: () {
if (!_formKey.currentState.validate()) {
return;
}
_formKey.currentState.save();
Navigator.of(context).pop(_search);
},
)
],
),
ASwitchButton(
title: "Most Recent",
value: _search.mostRecent ?? false,
onChange: (value) {
_search.mostRecent = value;
setState(() {});
},
),
SizedBox(height: 8.0 * AppStyle.getScaleFactor(context)),
PickAsset(
device: _search.asset,
onPickAsset: (device) {
_search.asset = device;
setState(() {});
},
),
SizedBox(height: 8.0 * AppStyle.getScaleFactor(context)),
ATextFormField(
initialValue: "_search.title",
hintText: context.translation.title,
style: Theme.of(context).textTheme.titleLarge,
textInputAction: TextInputAction.search,
onAction: () {
if (!_formKey.currentState.validate()) {
return;
}
_formKey.currentState.save();
Navigator.of(context).pop(_search);
},
onSaved: (value) {
// _search.title = value;
},
),
SizedBox(height: 8.0 * AppStyle.getScaleFactor(context)),
// HospitalAutoCompleteField(
// initialValue: _search?.hospital?.name,
// onSearch: (selected) async {
// _search.building = null;
// _search.floor = null;
// _search.department = null;
// _search.buildingsList = null;
// _search.floorsList = null;
// _search.departmentsList = null;
// _isLoading = true;
// setState(() {});
// await HospitalsProvider().getHospitalsListByVal(searchVal: selected?.name ?? "").then((value) {
// _search.hospital = value?.firstWhere((element) => element.name == selected.name, orElse: () => null);
// _search.buildingsList = _search.hospital?.buildings;
// });
// _isLoading = false;
// setState(() {});
// }, // },
// ), // ),
const SizedBox(height: 8), // ASmallButton(
// BuildingTypeMenu( // text: context.translation.search,
// initialValue: _search?.building, // onPressed: () {
// building: _search.buildingsList, // if (!_formKey.currentState.validate()) {
// enabled: !_isLoading, // return;
// onSelect: (status) { // }
// _search.building = status; // _formKey.currentState.save();
// _search.floorsList = status?.floors; // Navigator.of(context).pop(_search);
// setState(() {});
// }, // },
// )
// ],
// ), // ),
const SizedBox(height: 8), // ASwitchButton(
// FloorTypeMenu( // title: "Most Recent",
// initialValue: _search?.floor, // value: _search.mostRecent ?? false,
// floors: _search.floorsList, // onChange: (value) {
// enabled: !_isLoading, // _search.mostRecent = value;
// onSelect: (status) {
// _search.floor = status;
// _search.departmentsList = _search.floor?.departments;
// setState(() {}); // setState(() {});
// }, // },
// ), // ),
const SizedBox(height: 8), // SizedBox(height: 8.0 * AppStyle.getScaleFactor(context)),
// DepartmentTypeMenu( // PickAsset(
// initialValue: _search?.department, // device: _search.asset,
// departments: _search.departmentsList, // onPickAsset: (device) {
// enabled: !_isLoading, // _search.asset = device;
// onSelect: (status) {
// _search.department = status;
// setState(() {}); // setState(() {});
// }, // },
// ), // ),
SizedBox(height: 8.0 * AppStyle.getScaleFactor(context)), // SizedBox(height: 8.0 * AppStyle.getScaleFactor(context)),
ATextFormField( // ATextFormField(
initialValue: "_search.room", // initialValue: "_search.title",
hintText: context.translation.room, // hintText: context.translation.title,
style: Theme.of(context).textTheme.titleLarge, // style: Theme.of(context).textTheme.titleLarge,
textInputAction: TextInputAction.search, // textInputAction: TextInputAction.search,
onAction: () { // onAction: () {
if (!_formKey.currentState.validate()) { // if (!_formKey.currentState.validate()) {
return; // return;
} // }
_formKey.currentState.save(); // _formKey.currentState.save();
Navigator.of(context).pop(_search); // Navigator.of(context).pop(_search);
}, // },
onSaved: (value) { // onSaved: (value) {
// _search.room = value; // // _search.title = value;
}, // },
), // ),
SizedBox(height: 16.0 * AppStyle.getScaleFactor(context)), // SizedBox(height: 8.0 * AppStyle.getScaleFactor(context)),
// Visibility( // // HospitalAutoCompleteField(
// visible: (_search.toMap()..remove("mostRecent"))?.isNotEmpty ?? false, // // initialValue: _search?.hospital?.name,
// child: Padding( // // onSearch: (selected) async {
// padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 16), // // _search.building = null;
// child: AButton( // // _search.floor = null;
// padding: EdgeInsets.zero, // // _search.department = null;
// text: context.translation.clearSearch, // // _search.buildingsList = null;
// onPressed: () { // // _search.floorsList = null;
// _search = DeviceTransferSearch(); // // _search.departmentsList = null;
// // _isLoading = true;
// // setState(() {});
// // await HospitalsProvider().getHospitalsListByVal(searchVal: selected?.name ?? "").then((value) {
// // _search.hospital = value?.firstWhere((element) => element.name == selected.name, orElse: () => null);
// // _search.buildingsList = _search.hospital?.buildings;
// // });
// // _isLoading = false;
// // setState(() {});
// // },
// // ),
// const SizedBox(height: 8),
// // BuildingTypeMenu(
// // initialValue: _search?.building,
// // building: _search.buildingsList,
// // enabled: !_isLoading,
// // onSelect: (status) {
// // _search.building = status;
// // _search.floorsList = status?.floors;
// // setState(() {});
// // },
// // ),
// const SizedBox(height: 8),
// // FloorTypeMenu(
// // initialValue: _search?.floor,
// // floors: _search.floorsList,
// // enabled: !_isLoading,
// // onSelect: (status) {
// // _search.floor = status;
// // _search.departmentsList = _search.floor?.departments;
// // setState(() {});
// // },
// // ),
// const SizedBox(height: 8),
// // DepartmentTypeMenu(
// // initialValue: _search?.department,
// // departments: _search.departmentsList,
// // enabled: !_isLoading,
// // onSelect: (status) {
// // _search.department = status;
// // setState(() {});
// // },
// // ),
// SizedBox(height: 8.0 * AppStyle.getScaleFactor(context)),
// ATextFormField(
// initialValue: "_search.room",
// hintText: context.translation.room,
// style: Theme.of(context).textTheme.titleLarge,
// textInputAction: TextInputAction.search,
// onAction: () {
// if (!_formKey.currentState.validate()) {
// return;
// }
// _formKey.currentState.save();
// Navigator.of(context).pop(_search); // Navigator.of(context).pop(_search);
// }, // },
// onSaved: (value) {
// // _search.room = value;
// },
// ),
// SizedBox(height: 16.0 * AppStyle.getScaleFactor(context)),
// // Visibility(
// // visible: (_search.toMap()..remove("mostRecent"))?.isNotEmpty ?? false,
// // child: Padding(
// // padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 16),
// // child: AButton(
// // padding: EdgeInsets.zero,
// // text: context.translation.clearSearch,
// // onPressed: () {
// // _search = DeviceTransferSearch();
// // Navigator.of(context).pop(_search);
// // },
// // ),
// // ),
// // ),
// ],
// ),
// ), // ),
// ), // ),
// ), // ),
], // );
), // }
), // }
),
),
);
}
}

@ -1,56 +1,57 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:test_sa/models/lookup.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/views/app_style/sizing.dart'; // import 'package:test_sa/models/lookup.dart';
// import 'package:test_sa/views/app_style/sizing.dart';
class FilterItem extends StatelessWidget {
final bool isSelected;
final Lookup status;
final VoidCallback onSelected;
const FilterItem({Key key, this.status, this.isSelected, this.onSelected}) : super(key: key);
// //
// Color getStatusColor() { // class FilterItem extends StatelessWidget {
// switch (status.id) { // final bool isSelected;
// case 0: // final Lookup status;
// return AColors.green; // final VoidCallback onSelected;
// case 4: //
// return AColors.deepRed; // const FilterItem({Key key, this.status, this.isSelected, this.onSelected}) : super(key: key);
// case 6: //
// return AColors.green; // //
// case 5: // // Color getStatusColor() {
// return AColors.orange; // // switch (status.id) {
// case 8: // // case 0:
// return AColors.green; // // return AColors.green;
// case 9: // // case 4:
// return AColors.orange; // // return AColors.deepRed;
// default: // // case 6:
// return AColors.grey; // // return AColors.green;
// // case 5:
// // return AColors.orange;
// // case 8:
// // return AColors.green;
// // case 9:
// // return AColors.orange;
// // default:
// // return AColors.grey;
// // }
// // }
//
// @override
// Widget build(BuildContext context) {
// return Opacity(
// opacity: isSelected ? 1 : .5,
// child: SizedBox(
// height: 30,
// child: ElevatedButton(
// style: ElevatedButton.styleFrom(
// padding: EdgeInsets.symmetric(horizontal: 8),
// shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context))),
// // primary: getStatusColor(),
// ),
// child: Text(
// status.name ?? "",
// style: Theme.of(context).textTheme.bodyText1.copyWith(
// // color: getStatusColor().computeLuminance() > 0.5 ? AColors.black : Colors.white,
// ),
// textScaleFactor: AppStyle.getScaleFactor(context),
// ),
// onPressed: onSelected,
// ),
// ),
// );
// } // }
// } // }
@override
Widget build(BuildContext context) {
return Opacity(
opacity: isSelected ? 1 : .5,
child: SizedBox(
height: 30,
child: ElevatedButton(
style: ElevatedButton.styleFrom(
padding: EdgeInsets.symmetric(horizontal: 8),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context))),
// primary: getStatusColor(),
),
child: Text(
status.name ?? "",
style: Theme.of(context).textTheme.bodyText1.copyWith(
// color: getStatusColor().computeLuminance() > 0.5 ? AColors.black : Colors.white,
),
textScaleFactor: AppStyle.getScaleFactor(context),
),
onPressed: onSelected,
),
),
);
}
}

@ -1,170 +1,122 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:test_sa/extensions/context_extension.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/models/ppm/ppm_search.dart'; // import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/views/app_style/sizing.dart'; // import 'package:test_sa/models/ppm/ppm_search.dart';
import 'package:test_sa/views/widgets/buttons/app_small_button.dart'; // import 'package:test_sa/views/app_style/sizing.dart';
import 'package:test_sa/views/widgets/titles/app_sub_title.dart'; // import 'package:test_sa/views/widgets/buttons/app_small_button.dart';
// import 'package:test_sa/views/widgets/titles/app_sub_title.dart';
import '../switch_button.dart'; //
// import '../switch_button.dart';
class PpmSearchDialog extends StatefulWidget { //
final PpmSearch initialSearchValue; // class PpmSearchDialog extends StatefulWidget {
final bool expandedSearch; // final PpmSearch initialSearchValue;
final Function(PpmSearch) onSearch; // final bool expandedSearch;
// final Function(PpmSearch) onSearch;
const PpmSearchDialog({Key key, this.initialSearchValue, this.expandedSearch, this.onSearch}) : super(key: key); //
// const PpmSearchDialog({Key key, this.initialSearchValue, this.expandedSearch, this.onSearch}) : super(key: key);
@override //
_PpmSearchDialogState createState() => _PpmSearchDialogState(); // @override
} // _PpmSearchDialogState createState() => _PpmSearchDialogState();
class _PpmSearchDialogState extends State<PpmSearchDialog> with TickerProviderStateMixin {
PpmSearch _search;
List<Lookup> status = [
Lookup(
name: "Done",
id: 0,
),
Lookup(name: "Not Yet", id: 1),
Lookup(
name: "On Hold",
id: 2,
),
];
List<Lookup> contactStatus = [
// Lookup(name: "Hospital Employee", value: "H",),
// Lookup(name: "Under Warranty", value: "CW"),
// Lookup(name: "Under Maintenance Contract", value: "CC",),
];
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
@override
void initState() {
super.initState();
_search = PpmSearch();
/// todo : working
// _search.fromSearch(widget.initialSearchValue);
}
@override
Widget build(BuildContext context) {
DateTime today = DateTime.now();
return SizedBox(
height: MediaQuery.of(context).size.height / 1.3,
child: Form(
key: _formKey,
child: ListView(
// shrinkWrap: true,
// physics: const ClampingScrollPhysics(),
padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 16),
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
ASmallButton(
text: context.translation.cancel,
onPressed: () {
Navigator.of(context).pop();
},
),
ASmallButton(
text: context.translation.search,
onPressed: () {
if (!_formKey.currentState.validate()) {
return;
}
_formKey.currentState.save();
Navigator.of(context).pop(_search);
},
)
],
),
ASwitchButton(
title: "Most Recent",
value: _search.mostRecent ?? false,
onChange: (value) {
_search.mostRecent = value;
setState(() {});
},
),
SizedBox(
height: 8.0 * AppStyle.getScaleFactor(context),
),
// ATextFormField(
// initialValue: _search.deviceNumber,
// hintText: context.translation.assetNumber,
// style: Theme.of(context).textTheme.headline6,
// textInputAction: TextInputAction.search,
// onAction: () {
// if (!_formKey.currentState.validate()) {
// return;
// } // }
// _formKey.currentState.save(); //
// Navigator.of(context).pop(_search); // class _PpmSearchDialogState extends State<PpmSearchDialog> with TickerProviderStateMixin {
// }, // PpmSearch _search;
// onSaved: (value) { // List<Lookup> status = [
// _search.deviceNumber = value; // Lookup(
// }, // name: "Done",
// id: 0,
// ), // ),
// SizedBox( // Lookup(name: "Not Yet", id: 1),
// height: 8.0 * AppStyle.getScaleFactor(context), // Lookup(
// name: "On Hold",
// id: 2,
// ), // ),
// ATextFormField( // ];
// initialValue: _search.deviceName, //
// hintText: context.translation.assetName, // List<Lookup> contactStatus = [
// style: Theme.of(context).textTheme.headline6, // // Lookup(name: "Hospital Employee", value: "H",),
// textInputAction: TextInputAction.search, // // Lookup(name: "Under Warranty", value: "CW"),
// onAction: () { // // Lookup(name: "Under Maintenance Contract", value: "CC",),
// if (!_formKey.currentState.validate()) { // ];
// return; //
// final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
//
// @override
// void initState() {
// super.initState();
// _search = PpmSearch();
//
// /// todo : working
// // _search.fromSearch(widget.initialSearchValue);
// } // }
// _formKey.currentState.save(); //
// Navigator.of(context).pop(_search); // @override
// }, // Widget build(BuildContext context) {
// onSaved: (value) { // DateTime today = DateTime.now();
// _search.deviceName = value; // return SizedBox(
// height: MediaQuery.of(context).size.height / 1.3,
// child: Form(
// key: _formKey,
// child: ListView(
// // shrinkWrap: true,
// // physics: const ClampingScrollPhysics(),
// padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 16),
// children: [
// Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
// children: [
// ASmallButton(
// text: context.translation.cancel,
// onPressed: () {
// Navigator.of(context).pop();
// }, // },
// ), // ),
// SizedBox( // ASmallButton(
// height: 8.0 * AppStyle.getScaleFactor(context), // text: context.translation.search,
// ), // onPressed: () {
// ATextFormField(
// initialValue: _search.deviceSerialNumber,
// hintText: context.translation.serialNumber,
// style: Theme.of(context).textTheme.headline6,
// textInputAction: TextInputAction.search,
// onAction: () {
// if (!_formKey.currentState.validate()) { // if (!_formKey.currentState.validate()) {
// return; // return;
// } // }
// _formKey.currentState.save(); // _formKey.currentState.save();
// Navigator.of(context).pop(_search); // Navigator.of(context).pop(_search);
// }, // },
// onSaved: (value) { // )
// _search.deviceSerialNumber = value; // ],
// ),
// ASwitchButton(
// title: "Most Recent",
// value: _search.mostRecent ?? false,
// onChange: (value) {
// _search.mostRecent = value;
// setState(() {});
// }, // },
// ), // ),
// SizedBox( // SizedBox(
// height: 8.0 * AppStyle.getScaleFactor(context), // height: 8.0 * AppStyle.getScaleFactor(context),
// ), // ),
// HospitalAutoCompleteField( // // ATextFormField(
// initialValue: _search.hospital?.name, // // initialValue: _search.deviceNumber,
// // onSave: (value){ // // hintText: context.translation.assetNumber,
// // _search.hospital = value; // // style: Theme.of(context).textTheme.headline6,
// // textInputAction: TextInputAction.search,
// // onAction: () {
// // if (!_formKey.currentState.validate()) {
// // return;
// // }
// // _formKey.currentState.save();
// // Navigator.of(context).pop(_search);
// // }, // // },
// onSearch: (value) { // // onSaved: (value) {
// _search.hospital = value; // // _search.deviceNumber = value;
// Navigator.of(context).pop(_search); // // },
// }, // // ),
// ), // // SizedBox(
// // SizedBox(height: 8.0 * AppStyle.getScaleFactor(context),), // // height: 8.0 * AppStyle.getScaleFactor(context),
// // ),
// // ATextFormField( // // ATextFormField(
// // initialValue: _search.brand, // // initialValue: _search.deviceName,
// // hintText: _subtitle.brand, // // hintText: context.translation.assetName,
// // style: Theme.of(context).textTheme.headline6, // // style: Theme.of(context).textTheme.headline6,
// // textInputAction: TextInputAction.search, // // textInputAction: TextInputAction.search,
// // onAction: () { // // onAction: () {
@ -175,22 +127,15 @@ class _PpmSearchDialogState extends State<PpmSearchDialog> with TickerProviderSt
// // Navigator.of(context).pop(_search); // // Navigator.of(context).pop(_search);
// // }, // // },
// // onSaved: (value) { // // onSaved: (value) {
// // _search.brand = value; // // _search.deviceName = value;
// // }, // // },
// // ), // // ),
// SizedBox( // // SizedBox(
// height: 8.0 * AppStyle.getScaleFactor(context), // // height: 8.0 * AppStyle.getScaleFactor(context),
// ), // // ),
// AutoCompleteModelField(
// initialValue: _search.model,
// onPick: (lookup) {
// _search.model = lookup;
// Navigator.of(context).pop(_search);
// },
// ),
// // ATextFormField( // // ATextFormField(
// // initialValue: _search.model, // // initialValue: _search.deviceSerialNumber,
// // hintText: _subtitle.model, // // hintText: context.translation.serialNumber,
// // style: Theme.of(context).textTheme.headline6, // // style: Theme.of(context).textTheme.headline6,
// // textInputAction: TextInputAction.search, // // textInputAction: TextInputAction.search,
// // onAction: () { // // onAction: () {
@ -201,134 +146,190 @@ class _PpmSearchDialogState extends State<PpmSearchDialog> with TickerProviderSt
// // Navigator.of(context).pop(_search); // // Navigator.of(context).pop(_search);
// // }, // // },
// // onSaved: (value) { // // onSaved: (value) {
// // _search.model = value; // // _search.deviceSerialNumber = value;
// // },
// // ),
// // SizedBox(
// // height: 8.0 * AppStyle.getScaleFactor(context),
// // ),
// // HospitalAutoCompleteField(
// // initialValue: _search.hospital?.name,
// // // onSave: (value){
// // // _search.hospital = value;
// // // },
// // onSearch: (value) {
// // _search.hospital = value;
// // Navigator.of(context).pop(_search);
// // },
// // ),
// // // SizedBox(height: 8.0 * AppStyle.getScaleFactor(context),),
// // // ATextFormField(
// // // initialValue: _search.brand,
// // // hintText: _subtitle.brand,
// // // style: Theme.of(context).textTheme.headline6,
// // // textInputAction: TextInputAction.search,
// // // onAction: (){
// // // if(!_formKey.currentState.validate()) {
// // // return;
// // // }
// // // _formKey.currentState.save();
// // // Navigator.of(context).pop(_search);
// // // },
// // // onSaved: (value){
// // // _search.brand = value;
// // // },
// // // ),
// // SizedBox(
// // height: 8.0 * AppStyle.getScaleFactor(context),
// // ),
// // AutoCompleteModelField(
// // initialValue: _search.model,
// // onPick: (lookup) {
// // _search.model = lookup;
// // Navigator.of(context).pop(_search);
// // }, // // },
// // ), // // ),
// // // ATextFormField(
// // // initialValue: _search.model,
// // // hintText: _subtitle.model,
// // // style: Theme.of(context).textTheme.headline6,
// // // textInputAction: TextInputAction.search,
// // // onAction: (){
// // // if(!_formKey.currentState.validate()) {
// // // return;
// // // }
// // // _formKey.currentState.save();
// // // Navigator.of(context).pop(_search);
// // // },
// // // onSaved: (value){
// // // _search.model = value;
// // // },
// // // ),
// // SizedBox(
// // height: 8.0 * AppStyle.getScaleFactor(context),
// // ),
// // ASubTitle(context.translation.status),
// // SizedBox(
// // height: 4.0 * AppStyle.getScaleFactor(context),
// // ),
// // PentryVisitsStatusMenu(
// // initialValue: _search.statusValue,
// // onSelect: (status) {
// // _search.statusValue = status;
// // },
// // ),
// // Wrap(
// // spacing: 10,
// // runSpacing: 10,
// // children: List.generate(
// // status.length,
// // (index) {
// // bool isSelected = _search.statusValue == status[index].id;
// // return FilterItem(
// // isSelected: isSelected,
// // onSelected: (){
// // if(isSelected) {
// // _search.statusValue = null;
// // } else {
// // _search.statusValue = status[index].id;
// // }
// //
// // setState(() {});
// // },
// // status: status[index],
// // );
// // }
// //
// // ),
// // ),
// SizedBox( // SizedBox(
// height: 8.0 * AppStyle.getScaleFactor(context), // height: 8.0 * AppStyle.getScaleFactor(context),
// ), // ),
// ASubTitle(context.translation.status), // ASubTitle(context.translation.contactStatus),
// SizedBox( // SizedBox(
// height: 4.0 * AppStyle.getScaleFactor(context), // height: 4.0 * AppStyle.getScaleFactor(context),
// ), // ),
// PentryVisitsStatusMenu( // // AssignedToMenu(
// initialValue: _search.statusValue, // // initialValue: _search.contactStatus,
// onSelect: (status) { // // onSelect: (status) {
// _search.statusValue = status; // // _search.contactStatus = status;
// }, // // },
// ), // // ),
// Wrap( // // Wrap(
// spacing: 10, // // spacing: 10,
// runSpacing: 10, // // runSpacing: 10,
// children: List.generate( // // children: List.generate(
// status.length, // // contactStatus.length,
// (index) { // // (index) {
// bool isSelected = _search.statusValue == status[index].id; // // bool isSelected = _search.contactStatus == contactStatus[index];
// return FilterItem( // // return FilterItem(
// isSelected: isSelected, // // isSelected: isSelected,
// onSelected: (){ // // onSelected: (){
// if(isSelected) { // // if(isSelected) {
// _search.statusValue = null; // // _search.contactStatus = null;
// } else { // // } else {
// _search.statusValue = status[index].id; // // _search.contactStatus = contactStatus[index];
// } // // }
// // //
// setState(() {}); // // setState(() {});
// }, // // },
// status: status[index], // // status: contactStatus[index],
// ); // // );
// } // // }
// // //
// ), // // ),
// ), // // ),
SizedBox(
height: 8.0 * AppStyle.getScaleFactor(context),
),
ASubTitle(context.translation.contactStatus),
SizedBox(
height: 4.0 * AppStyle.getScaleFactor(context),
),
// AssignedToMenu(
// initialValue: _search.contactStatus,
// onSelect: (status) {
// _search.contactStatus = status;
// },
// ),
// Wrap(
// spacing: 10,
// runSpacing: 10,
// children: List.generate(
// contactStatus.length,
// (index) {
// bool isSelected = _search.contactStatus == contactStatus[index];
// return FilterItem(
// isSelected: isSelected,
// onSelected: (){
// if(isSelected) {
// _search.contactStatus = null;
// } else {
// _search.contactStatus = contactStatus[index];
// }
//
// setState(() {});
// },
// status: contactStatus[index],
// );
// }
//
// ),
// ),
SizedBox(
height: 8.0 * AppStyle.getScaleFactor(context),
),
ASubTitle(context.translation.actualDate),
SizedBox(
height: 4.0 * AppStyle.getScaleFactor(context),
),
// FromToDateBar(
// from: _search.actualDateFrom,
// to: _search.actualDateTo,
// onPickFrom: (date) {
// _search.actualDateFrom = date;
// },
// onPickTo: (date) {
// _search.actualDateTo = date;
// },
// ),
// SizedBox( // SizedBox(
// height: 8.0 * AppStyle.getScaleFactor(context), // height: 8.0 * AppStyle.getScaleFactor(context),
// ), // ),
// ASubTitle(context.translation.expectDate), // ASubTitle(context.translation.actualDate),
// SizedBox( // SizedBox(
// height: 4.0 * AppStyle.getScaleFactor(context), // height: 4.0 * AppStyle.getScaleFactor(context),
// ), // ),
// FromToDateBar( // // FromToDateBar(
// from: _search.expectedDateFrom ?? DateTime(today.year, today.month, 1), // // from: _search.actualDateFrom,
// to: _search.expectedDateTo ?? DateTime(today.year, (today.month + 1).clamp(1, 12), today.month == 12 ? 31 : 0), // // to: _search.actualDateTo,
// onPickFrom: (date) { // // onPickFrom: (date) {
// _search.expectedDateFrom = date; // // _search.actualDateFrom = date;
// }, // // },
// onPickTo: (date) { // // onPickTo: (date) {
// _search.expectedDateTo = date; // // _search.actualDateTo = date;
// }, // // },
// ), // // ),
// Visibility( // // SizedBox(
// visible: _search.toMap().isNotEmpty, // // height: 8.0 * AppStyle.getScaleFactor(context),
// child: Padding( // // ),
// padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 16), // // ASubTitle(context.translation.expectDate),
// child: AButton( // // SizedBox(
// padding: EdgeInsets.zero, // // height: 4.0 * AppStyle.getScaleFactor(context),
// text: context.translation.clearSearch, // // ),
// onPressed: () { // // FromToDateBar(
// _search = VisitsSearch(); // // from: _search.expectedDateFrom ?? DateTime(today.year, today.month, 1),
// Navigator.of(context).pop(_search); // // to: _search.expectedDateTo ?? DateTime(today.year, (today.month + 1).clamp(1, 12), today.month == 12 ? 31 : 0),
// }, // // onPickFrom: (date) {
// ), // // _search.expectedDateFrom = date;
// // },
// // onPickTo: (date) {
// // _search.expectedDateTo = date;
// // },
// // ),
// // Visibility(
// // visible: _search.toMap().isNotEmpty,
// // child: Padding(
// // padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 16),
// // child: AButton(
// // padding: EdgeInsets.zero,
// // text: context.translation.clearSearch,
// // onPressed: () {
// // _search = VisitsSearch();
// // Navigator.of(context).pop(_search);
// // },
// // ),
// // ),
// // ),
// ],
// ), // ),
// ), // ),
], // );
), // }
), // }
);
}
}

@ -1,329 +1,330 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:test_sa/extensions/context_extension.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/models/service_request/service_request_search.dart'; // import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/views/app_style/sizing.dart'; // import 'package:test_sa/models/service_request/service_request_search.dart';
import 'package:test_sa/views/widgets/buttons/app_button.dart'; // import 'package:test_sa/views/app_style/sizing.dart';
import 'package:test_sa/views/widgets/buttons/app_small_button.dart'; // import 'package:test_sa/views/widgets/buttons/app_button.dart';
import 'package:test_sa/views/widgets/hospitals/hospital_auto_complete_field.dart'; // import 'package:test_sa/views/widgets/buttons/app_small_button.dart';
import 'package:test_sa/views/widgets/status/service_request/service_request_status_mune.dart'; // import 'package:test_sa/views/widgets/hospitals/hospital_auto_complete_field.dart';
import 'package:test_sa/views/widgets/switch_button.dart'; // import 'package:test_sa/views/widgets/status/service_request/service_request_status_mune.dart';
import 'package:test_sa/views/widgets/titles/app_sub_title.dart'; // import 'package:test_sa/views/widgets/switch_button.dart';
// import 'package:test_sa/views/widgets/titles/app_sub_title.dart';
import '../../../models/employee.dart'; //
import '../../../models/new_models/assigned_employee.dart'; // import '../../../models/employee.dart';
import '../app_text_form_field.dart'; // import '../../../models/new_models/assigned_employee.dart';
import '../date_and_time/date_picker.dart'; // import '../app_text_form_field.dart';
import '../status/report/service_report_all_users.dart'; // import '../date_and_time/date_picker.dart';
import '../status/report/service_report_visit_date_operator.dart'; // import '../status/report/service_report_all_users.dart';
// import '../status/report/service_report_visit_date_operator.dart';
class ServiceRequestsSearchDialog extends StatefulWidget { //
final ServiceRequestSearch initialSearchValue; // class ServiceRequestsSearchDialog extends StatefulWidget {
final bool expandedSearch; // final ServiceRequestSearch initialSearchValue;
final Function(ServiceRequestSearch) onSearch; // final bool expandedSearch;
// final Function(ServiceRequestSearch) onSearch;
const ServiceRequestsSearchDialog({Key key, this.initialSearchValue, this.expandedSearch, this.onSearch}) : super(key: key); //
// const ServiceRequestsSearchDialog({Key key, this.initialSearchValue, this.expandedSearch, this.onSearch}) : super(key: key);
@override //
_ServiceRequestsSearchDialogState createState() => _ServiceRequestsSearchDialogState(); // @override
} // _ServiceRequestsSearchDialogState createState() => _ServiceRequestsSearchDialogState();
// }
class _ServiceRequestsSearchDialogState extends State<ServiceRequestsSearchDialog> with TickerProviderStateMixin { //
ServiceRequestSearch _search; // class _ServiceRequestsSearchDialogState extends State<ServiceRequestsSearchDialog> with TickerProviderStateMixin {
List<Lookup> status = [ // ServiceRequestSearch _search;
Lookup( // List<Lookup> status = [
name: "New", // Lookup(
id: 4, // name: "New",
), // id: 4,
Lookup( // ),
name: "Repaired", // Lookup(
id: 6, // name: "Repaired",
), // id: 6,
Lookup(name: "Repeated", id: 8), // ),
Lookup( // Lookup(name: "Repeated", id: 8),
name: "Closed", // Lookup(
id: 9, // name: "Closed",
), // id: 9,
Lookup( // ),
name: "Under Repair", // Lookup(
id: 5, // name: "Under Repair",
), // id: 5,
]; // ),
// ];
final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); //
// final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
@override //
void initState() { // @override
super.initState(); // void initState() {
_search = ServiceRequestSearch(); // super.initState();
_search.fromSearch(widget.initialSearchValue); // _search = ServiceRequestSearch();
} // _search.fromSearch(widget.initialSearchValue);
@override
Widget build(BuildContext context) {
return SizedBox(
height: MediaQuery.of(context).size.height / 1.2,
child: Form(
key: _formKey,
child: Padding(
padding: const EdgeInsets.all(16.0),
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
ASmallButton(
text: context.translation.cancel,
onPressed: () {
Navigator.of(context).pop();
},
),
ASmallButton(
text: context.translation.search,
onPressed: () {
if (!_formKey.currentState.validate()) {
return;
}
_formKey.currentState.save();
Navigator.of(context).pop(_search);
},
)
],
),
SizedBox(
height: 8.0 * AppStyle.getScaleFactor(context),
),
ASwitchButton(
title: "Most Recent",
value: _search.mostRecent ?? false,
onChange: (value) {
_search.mostRecent = value;
setState(() {});
},
),
SizedBox(
height: 8.0 * AppStyle.getScaleFactor(context),
),
ATextFormField(
labelText: "Call ID",
onSaved: (value) {
_search.callId = value;
},
),
SizedBox(
height: 8.0 * AppStyle.getScaleFactor(context),
),
ATextFormField(
initialValue: _search.deviceNumber,
hintText: context.translation.assetNumber,
style: Theme.of(context).textTheme.headline6,
textInputAction: TextInputAction.search,
onAction: () {
if (!_formKey.currentState.validate()) {
return;
}
_formKey.currentState.save();
Navigator.of(context).pop(_search);
},
onSaved: (value) {
_search.deviceNumber = value;
},
),
SizedBox(
height: 8.0 * AppStyle.getScaleFactor(context),
),
ATextFormField(
initialValue: _search.deviceSerialNumber,
hintText: context.translation.serialNumber,
style: Theme.of(context).textTheme.headline6,
textInputAction: TextInputAction.search,
onAction: () {
if (!_formKey.currentState.validate()) {
return;
}
_formKey.currentState.save();
Navigator.of(context).pop(_search);
},
onSaved: (value) {
_search.deviceSerialNumber = value;
},
),
SizedBox(
height: 8.0 * AppStyle.getScaleFactor(context),
),
HospitalAutoCompleteField(
initialValue: _search.hospital?.name,
// onSave: (value){
// _search.hospital = value;
// },
onSearch: (value) {
_search.hospital = value;
Navigator.of(context).pop(_search);
},
),
SizedBox(
height: 8.0 * AppStyle.getScaleFactor(context),
),
ATextFormField(
initialValue: _search.deviceName,
hintText: context.translation.deviceName,
style: Theme.of(context).textTheme.headline6,
textInputAction: TextInputAction.search,
onAction: () {
if (!_formKey.currentState.validate()) {
return;
}
_formKey.currentState.save();
Navigator.of(context).pop(_search);
},
onSaved: (value) {
_search.deviceName = value;
},
),
SizedBox(
height: 8.0 * AppStyle.getScaleFactor(context),
),
ATextFormField(
initialValue: _search.model,
hintText: context.translation.model,
style: Theme.of(context).textTheme.headline6,
textInputAction: TextInputAction.search,
onAction: () {
if (!_formKey.currentState.validate()) {
return;
}
_formKey.currentState.save();
Navigator.of(context).pop(_search);
},
onSaved: (value) {
_search.model = value;
},
),
SizedBox(
height: 16 * AppStyle.getScaleFactor(context),
),
const ASubTitle("Status"),
const SizedBox(
height: 4,
),
ServiceRequestStatusMenu(
initialValue: _search.statusValue,
onSelect: (status) {
_search.statusValue = status;
},
),
SizedBox(
height: 16 * AppStyle.getScaleFactor(context),
),
ASubTitle(context.translation.assignedEmployee),
const SizedBox(height: 4),
ServiceReportAllUsers(
initialValue: _search.assignedEmployee == null ? null : Employee(id: _search.assignedEmployee.id, name: _search.assignedEmployee.name),
onSelect: (engineer) {
_search.assignedEmployee = AssignedEmployee(id: engineer.id, name: engineer.name);
},
),
SizedBox(
height: 16 * AppStyle.getScaleFactor(context),
),
const ASubTitle("Request Date"),
const SizedBox(height: 4),
ServiceReportVisitDateOperator(
initialValue: _search.dateOperator,
onSelect: (status) {
_search.dateOperator = status;
setState(() {});
},
),
Row(
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
if (_search?.dateOperator?.name?.toLowerCase()?.contains("between") ?? false) const ASubTitle("From"),
ADatePicker(
date: DateTime.tryParse(_search.from ?? ""),
from: DateTime(1950),
onDatePicker: (date) {
_search.from = date?.toIso8601String();
setState(() {});
},
),
],
),
),
if (_search?.dateOperator?.name?.toLowerCase()?.contains("between") ?? false) const SizedBox(width: 16),
if (_search?.dateOperator?.name?.toLowerCase()?.contains("between") ?? false)
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
const ASubTitle("To"),
ADatePicker(
date: DateTime.tryParse(_search.to ?? ""),
from: DateTime(1950),
onDatePicker: (date) {
_search.to = date?.toIso8601String();
setState(() {});
},
),
],
),
),
],
),
const SizedBox(width: 16),
// Padding(
// padding: const EdgeInsets.symmetric(horizontal: 12),
// child: Wrap(
// spacing: 10,
// runSpacing: 10,
// alignment: WrapAlignment.spaceEvenly,
// children: List.generate(
// status.length,
// (index) {
// bool isSelected = _search.statusValue == status[index];
// return FilterItem(
// isSelected: isSelected,
// onSelected: (){
// if(isSelected) {
// _search.statusValue = null;
// } else {
// _search.statusValue = status[index];
// } // }
// //
// @override
// Widget build(BuildContext context) {
// return SizedBox(
// height: MediaQuery.of(context).size.height / 1.2,
// child: Form(
// key: _formKey,
// child: Padding(
// padding: const EdgeInsets.all(16.0),
// child: SingleChildScrollView(
// child: Column(
// crossAxisAlignment: CrossAxisAlignment.start,
// children: [
// Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
// children: [
// ASmallButton(
// text: context.translation.cancel,
// onPressed: () {
// Navigator.of(context).pop();
// },
// ),
// ASmallButton(
// text: context.translation.search,
// onPressed: () {
// if (!_formKey.currentState.validate()) {
// return;
// }
// _formKey.currentState.save();
// Navigator.of(context).pop(_search);
// },
// )
// ],
// ),
// SizedBox(
// height: 8.0 * AppStyle.getScaleFactor(context),
// ),
// ASwitchButton(
// title: "Most Recent",
// value: _search.mostRecent ?? false,
// onChange: (value) {
// _search.mostRecent = value;
// setState(() {}); // setState(() {});
// }, // },
// status: status[index], // ),
// ); // SizedBox(
// height: 8.0 * AppStyle.getScaleFactor(context),
// ),
// ATextFormField(
// labelText: "Call ID",
// onSaved: (value) {
// _search.callId = value;
// },
// ),
// SizedBox(
// height: 8.0 * AppStyle.getScaleFactor(context),
// ),
// ATextFormField(
// initialValue: _search.deviceNumber,
// hintText: context.translation.assetNumber,
// style: Theme.of(context).textTheme.headline6,
// textInputAction: TextInputAction.search,
// onAction: () {
// if (!_formKey.currentState.validate()) {
// return;
// }
// _formKey.currentState.save();
// Navigator.of(context).pop(_search);
// },
// onSaved: (value) {
// _search.deviceNumber = value;
// },
// ),
// SizedBox(
// height: 8.0 * AppStyle.getScaleFactor(context),
// ),
// ATextFormField(
// initialValue: _search.deviceSerialNumber,
// hintText: context.translation.serialNumber,
// style: Theme.of(context).textTheme.headline6,
// textInputAction: TextInputAction.search,
// onAction: () {
// if (!_formKey.currentState.validate()) {
// return;
// }
// _formKey.currentState.save();
// Navigator.of(context).pop(_search);
// },
// onSaved: (value) {
// _search.deviceSerialNumber = value;
// },
// ),
// SizedBox(
// height: 8.0 * AppStyle.getScaleFactor(context),
// ),
// HospitalAutoCompleteField(
// initialValue: _search.hospital?.name,
// // onSave: (value){
// // _search.hospital = value;
// // },
// onSearch: (value) {
// _search.hospital = value;
// Navigator.of(context).pop(_search);
// },
// ),
// SizedBox(
// height: 8.0 * AppStyle.getScaleFactor(context),
// ),
// ATextFormField(
// initialValue: _search.deviceName,
// hintText: context.translation.deviceName,
// style: Theme.of(context).textTheme.headline6,
// textInputAction: TextInputAction.search,
// onAction: () {
// if (!_formKey.currentState.validate()) {
// return;
// }
// _formKey.currentState.save();
// Navigator.of(context).pop(_search);
// },
// onSaved: (value) {
// _search.deviceName = value;
// },
// ),
// SizedBox(
// height: 8.0 * AppStyle.getScaleFactor(context),
// ),
// ATextFormField(
// initialValue: _search.model,
// hintText: context.translation.model,
// style: Theme.of(context).textTheme.headline6,
// textInputAction: TextInputAction.search,
// onAction: () {
// if (!_formKey.currentState.validate()) {
// return;
// } // }
// _formKey.currentState.save();
// Navigator.of(context).pop(_search);
// },
// onSaved: (value) {
// _search.model = value;
// },
// ),
// SizedBox(
// height: 16 * AppStyle.getScaleFactor(context),
// ),
// const ASubTitle("Status"),
// const SizedBox(
// height: 4,
// ),
// ServiceRequestStatusMenu(
// initialValue: _search.statusValue,
// onSelect: (status) {
// _search.statusValue = status;
// },
// ),
// SizedBox(
// height: 16 * AppStyle.getScaleFactor(context),
// ),
// ASubTitle(context.translation.assignedEmployee),
// const SizedBox(height: 4),
// ServiceReportAllUsers(
// initialValue: _search.assignedEmployee == null ? null : Employee(id: _search.assignedEmployee.id, name: _search.assignedEmployee.name),
// onSelect: (engineer) {
// _search.assignedEmployee = AssignedEmployee(id: engineer.id, name: engineer.name);
// },
// ),
// SizedBox(
// height: 16 * AppStyle.getScaleFactor(context),
// ),
// const ASubTitle("Request Date"),
// const SizedBox(height: 4),
// ServiceReportVisitDateOperator(
// initialValue: _search.dateOperator,
// onSelect: (status) {
// _search.dateOperator = status;
// setState(() {});
// },
// ),
// Row(
// children: [
// Expanded(
// child: Column(
// crossAxisAlignment: CrossAxisAlignment.stretch,
// children: [
// if (_search?.dateOperator?.name?.toLowerCase()?.contains("between") ?? false) const ASubTitle("From"),
// ADatePicker(
// date: DateTime.tryParse(_search.from ?? ""),
// from: DateTime(1950),
// onDatePicker: (date) {
// _search.from = date?.toIso8601String();
// setState(() {});
// },
// ),
// ],
// ),
// ),
// if (_search?.dateOperator?.name?.toLowerCase()?.contains("between") ?? false) const SizedBox(width: 16),
// if (_search?.dateOperator?.name?.toLowerCase()?.contains("between") ?? false)
// Expanded(
// child: Column(
// crossAxisAlignment: CrossAxisAlignment.stretch,
// children: [
// const ASubTitle("To"),
// ADatePicker(
// date: DateTime.tryParse(_search.to ?? ""),
// from: DateTime(1950),
// onDatePicker: (date) {
// _search.to = date?.toIso8601String();
// setState(() {});
// },
// ),
// ],
// ),
// ),
// ],
// ),
// const SizedBox(width: 16),
// // Padding(
// // padding: const EdgeInsets.symmetric(horizontal: 12),
// // child: Wrap(
// // spacing: 10,
// // runSpacing: 10,
// // alignment: WrapAlignment.spaceEvenly,
// // children: List.generate(
// // status.length,
// // (index) {
// // bool isSelected = _search.statusValue == status[index];
// // return FilterItem(
// // isSelected: isSelected,
// // onSelected: (){
// // if(isSelected) {
// // _search.statusValue = null;
// // } else {
// // _search.statusValue = status[index];
// // }
// //
// // setState(() {});
// // },
// // status: status[index],
// // );
// // }
// //
// // ),
// // ),
// // ),
// //
// Visibility(
// visible: widget.initialSearchValue.toMap().isNotEmpty,
// child: Padding(
// padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 16),
// child: AButton(
// padding: EdgeInsets.zero,
// text: context.translation.clearSearch,
// onPressed: () {
// _search = ServiceRequestSearch();
// Navigator.of(context).pop(_search);
// },
// ),
// ),
// ),
// ],
// ), // ),
// ), // ),
// ), // ),
// ),
Visibility( // );
visible: widget.initialSearchValue.toMap().isNotEmpty, // }
child: Padding( // }
padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 16),
child: AButton(
padding: EdgeInsets.zero,
text: context.translation.clearSearch,
onPressed: () {
_search = ServiceRequestSearch();
Navigator.of(context).pop(_search);
},
),
),
),
],
),
),
),
),
);
}
}

@ -1,37 +1,38 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:provider/provider.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/controllers/providers/api/status_drop_down/asset_transfer_status_provider.dart'; // import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart'; // import 'package:test_sa/controllers/providers/api/status_drop_down/asset_transfer_status_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; // import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; // import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/views/widgets/status/single_status_menu.dart'; // import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
// import 'package:test_sa/views/widgets/status/single_status_menu.dart';
class AssetStatusMenu extends StatelessWidget { //
final Function(Lookup) onSelect; // class AssetStatusMenu extends StatelessWidget {
final Lookup initialValue; // final Function(Lookup) onSelect;
final bool enabled; // final Lookup initialValue;
// final bool enabled;
const AssetStatusMenu({Key key, this.enabled = true, this.onSelect, this.initialValue}) : super(key: key); //
// const AssetStatusMenu({Key key, this.enabled = true, this.onSelect, this.initialValue}) : super(key: key);
@override //
Widget build(BuildContext context) { // @override
final settingProvider = Provider.of<SettingProvider>(context); // Widget build(BuildContext context) {
final userProvider = Provider.of<UserProvider>(context); // final settingProvider = Provider.of<SettingProvider>(context);
final assetProvider = Provider.of<AssetTransferStatusProvider>(context); // final userProvider = Provider.of<UserProvider>(context);
return LoadingManager( // final assetProvider = Provider.of<AssetTransferStatusProvider>(context);
isLoading: assetProvider.isLoading, // return LoadingManager(
isFailedLoading: assetProvider.items == null, // isLoading: assetProvider.isLoading,
stateCode: assetProvider.stateCode, // isFailedLoading: assetProvider.items == null,
onRefresh: () async { // stateCode: assetProvider.stateCode,
assetProvider.reset(); // onRefresh: () async {
await assetProvider.getData(user: userProvider.user, host: settingProvider.host); // assetProvider.reset();
}, // await assetProvider.getData(user: userProvider.user, host: settingProvider.host);
child: SingleStatusMenu( // },
initialStatus: initialValue, // child: SingleStatusMenu(
statuses: assetProvider.items, // initialStatus: initialValue,
onSelect: onSelect, // statuses: assetProvider.items,
enabled: enabled, // onSelect: onSelect,
)); // enabled: enabled,
} // ));
} // }
// }

@ -1,35 +1,36 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:provider/provider.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/controllers/providers/api/status_drop_down/employee/assigned_to_provider.dart'; // import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart'; // import 'package:test_sa/controllers/providers/api/status_drop_down/employee/assigned_to_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; // import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; // import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/views/widgets/status/single_status_menu.dart'; // import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
// import 'package:test_sa/views/widgets/status/single_status_menu.dart';
class AssignedToMenu extends StatelessWidget { //
final Function(Lookup) onSelect; // class AssignedToMenu extends StatelessWidget {
final Lookup initialValue; // final Function(Lookup) onSelect;
// final Lookup initialValue;
const AssignedToMenu({Key key, this.onSelect, this.initialValue}) : super(key: key); //
// const AssignedToMenu({Key key, this.onSelect, this.initialValue}) : super(key: key);
@override //
Widget build(BuildContext context) { // @override
final settingProvider = Provider.of<SettingProvider>(context); // Widget build(BuildContext context) {
final userProvider = Provider.of<UserProvider>(context); // final settingProvider = Provider.of<SettingProvider>(context);
final menuProvider = Provider.of<AssignedToProvider>(context); // final userProvider = Provider.of<UserProvider>(context);
return LoadingManager( // final menuProvider = Provider.of<AssignedToProvider>(context);
isLoading: menuProvider.isLoading, // return LoadingManager(
isFailedLoading: menuProvider.items == null, // isLoading: menuProvider.isLoading,
stateCode: menuProvider.stateCode, // isFailedLoading: menuProvider.items == null,
onRefresh: () async { // stateCode: menuProvider.stateCode,
menuProvider.reset(); // onRefresh: () async {
await menuProvider.getData(user: userProvider.user, host: settingProvider.host); // menuProvider.reset();
}, // await menuProvider.getData(user: userProvider.user, host: settingProvider.host);
child: SingleStatusMenu( // },
initialStatus: initialValue, // child: SingleStatusMenu(
statuses: menuProvider.items, // initialStatus: initialValue,
onSelect: onSelect, // statuses: menuProvider.items,
)); // onSelect: onSelect,
} // ));
} // }
// }

@ -1,3 +1,4 @@
///todo deleted
// import 'package:flutter/material.dart'; // import 'package:flutter/material.dart';
// import 'package:provider/provider.dart'; // import 'package:provider/provider.dart';
// import 'package:test_sa/controllers/providers/api/status_drop_down/employee/engineers_provider.dart'; // import 'package:test_sa/controllers/providers/api/status_drop_down/employee/engineers_provider.dart';

@ -1,3 +1,4 @@
///todo deleted
// import 'package:flutter/material.dart'; // import 'package:flutter/material.dart';
// import 'package:test_sa/models/employee.dart'; // import 'package:test_sa/models/employee.dart';
// import 'package:test_sa/views/app_style/sizing.dart'; // import 'package:test_sa/views/app_style/sizing.dart';

@ -1,35 +1,36 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:provider/provider.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/controllers/providers/api/status_drop_down/gas_refill/gas_cylinder_size_provider.dart'; // import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart'; // import 'package:test_sa/controllers/providers/api/status_drop_down/gas_refill/gas_cylinder_size_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; // import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; // import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/views/widgets/status/single_status_menu.dart'; // import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
// import 'package:test_sa/views/widgets/status/single_status_menu.dart';
class GasCylinderSizeMenu extends StatelessWidget { //
final Function(Lookup) onSelect; // class GasCylinderSizeMenu extends StatelessWidget {
final Lookup initialValue; // final Function(Lookup) onSelect;
// final Lookup initialValue;
const GasCylinderSizeMenu({Key key, this.onSelect, this.initialValue}) : super(key: key); //
// const GasCylinderSizeMenu({Key key, this.onSelect, this.initialValue}) : super(key: key);
@override //
Widget build(BuildContext context) { // @override
final settingProvider = Provider.of<SettingProvider>(context); // Widget build(BuildContext context) {
final userProvider = Provider.of<UserProvider>(context); // final settingProvider = Provider.of<SettingProvider>(context);
final menuProvider = Provider.of<GasCylinderSizesProvider>(context); // final userProvider = Provider.of<UserProvider>(context);
return LoadingManager( // final menuProvider = Provider.of<GasCylinderSizesProvider>(context);
isLoading: menuProvider.isLoading, // return LoadingManager(
isFailedLoading: menuProvider.items == null, // isLoading: menuProvider.isLoading,
stateCode: menuProvider.stateCode, // isFailedLoading: menuProvider.items == null,
onRefresh: () async { // stateCode: menuProvider.stateCode,
menuProvider.reset(); // onRefresh: () async {
await menuProvider.getData(user: userProvider.user, host: settingProvider.host); // menuProvider.reset();
}, // await menuProvider.getData(user: userProvider.user, host: settingProvider.host);
child: SingleStatusMenu( // },
initialStatus: initialValue, // child: SingleStatusMenu(
statuses: menuProvider.items, // initialStatus: initialValue,
onSelect: onSelect, // statuses: menuProvider.items,
)); // onSelect: onSelect,
} // ));
} // }
// }

@ -1,35 +1,36 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:provider/provider.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/controllers/providers/api/status_drop_down/gas_refill/gas_cylinder_type_provider.dart'; // import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart'; // import 'package:test_sa/controllers/providers/api/status_drop_down/gas_refill/gas_cylinder_type_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; // import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; // import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/views/widgets/status/single_status_menu.dart'; // import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
// import 'package:test_sa/views/widgets/status/single_status_menu.dart';
class GasCylinderTypesMenu extends StatelessWidget { //
final Function(Lookup) onSelect; // class GasCylinderTypesMenu extends StatelessWidget {
final Lookup initialValue; // final Function(Lookup) onSelect;
// final Lookup initialValue;
const GasCylinderTypesMenu({Key key, this.onSelect, this.initialValue}) : super(key: key); //
// const GasCylinderTypesMenu({Key key, this.onSelect, this.initialValue}) : super(key: key);
@override //
Widget build(BuildContext context) { // @override
final settingProvider = Provider.of<SettingProvider>(context); // Widget build(BuildContext context) {
final userProvider = Provider.of<UserProvider>(context); // final settingProvider = Provider.of<SettingProvider>(context);
final menuProvider = Provider.of<GasCylinderTypesProvider>(context); // final userProvider = Provider.of<UserProvider>(context);
return LoadingManager( // final menuProvider = Provider.of<GasCylinderTypesProvider>(context);
isLoading: menuProvider.isLoading, // return LoadingManager(
isFailedLoading: menuProvider.items == null, // isLoading: menuProvider.isLoading,
stateCode: menuProvider.stateCode, // isFailedLoading: menuProvider.items == null,
onRefresh: () async { // stateCode: menuProvider.stateCode,
menuProvider.reset(); // onRefresh: () async {
await menuProvider.getData(user: userProvider.user, host: settingProvider.host); // menuProvider.reset();
}, // await menuProvider.getData(user: userProvider.user, host: settingProvider.host);
child: SingleStatusMenu( // },
initialStatus: initialValue, // child: SingleStatusMenu(
statuses: menuProvider.items, // initialStatus: initialValue,
onSelect: onSelect, // statuses: menuProvider.items,
)); // onSelect: onSelect,
} // ));
} // }
// }

@ -1,37 +1,38 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:provider/provider.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/controllers/providers/api/status_drop_down/gas_refill/gas_status_provider.dart'; // import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart'; // import 'package:test_sa/controllers/providers/api/status_drop_down/gas_refill/gas_status_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; // import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; // import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/views/widgets/status/single_status_menu.dart'; // import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
// import 'package:test_sa/views/widgets/status/single_status_menu.dart';
class GasStatusMenu extends StatelessWidget { //
final Function(Lookup) onSelect; // class GasStatusMenu extends StatelessWidget {
final Lookup initialValue; // final Function(Lookup) onSelect;
final bool enabled; // final Lookup initialValue;
// final bool enabled;
const GasStatusMenu({Key key, this.enabled = true, this.onSelect, this.initialValue}) : super(key: key); //
// const GasStatusMenu({Key key, this.enabled = true, this.onSelect, this.initialValue}) : super(key: key);
@override //
Widget build(BuildContext context) { // @override
final settingProvider = Provider.of<SettingProvider>(context); // Widget build(BuildContext context) {
final userProvider = Provider.of<UserProvider>(context); // final settingProvider = Provider.of<SettingProvider>(context);
final menuProvider = Provider.of<GasStatusProvider>(context); // final userProvider = Provider.of<UserProvider>(context);
return LoadingManager( // final menuProvider = Provider.of<GasStatusProvider>(context);
isLoading: menuProvider.isLoading, // return LoadingManager(
isFailedLoading: menuProvider.items == null, // isLoading: menuProvider.isLoading,
stateCode: menuProvider.stateCode, // isFailedLoading: menuProvider.items == null,
onRefresh: () async { // stateCode: menuProvider.stateCode,
menuProvider.reset(); // onRefresh: () async {
await menuProvider.getData(user: userProvider.user, host: settingProvider.host); // menuProvider.reset();
}, // await menuProvider.getData(user: userProvider.user, host: settingProvider.host);
child: SingleStatusMenu( // },
initialStatus: initialValue, // child: SingleStatusMenu(
statuses: menuProvider.items, // initialStatus: initialValue,
onSelect: onSelect, // statuses: menuProvider.items,
enabled: enabled, // onSelect: onSelect,
)); // enabled: enabled,
} // ));
} // }
// }

@ -1,35 +1,36 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:provider/provider.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/controllers/providers/api/status_drop_down/gas_refill/gas_types_provider.dart'; // import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart'; // import 'package:test_sa/controllers/providers/api/status_drop_down/gas_refill/gas_types_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; // import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; // import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/views/widgets/status/single_status_menu.dart'; // import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
// import 'package:test_sa/views/widgets/status/single_status_menu.dart';
class GasTypeMenu extends StatelessWidget { //
final Function(Lookup) onSelect; // class GasTypeMenu extends StatelessWidget {
final Lookup initialValue; // final Function(Lookup) onSelect;
// final Lookup initialValue;
const GasTypeMenu({Key key, this.onSelect, this.initialValue}) : super(key: key); //
// const GasTypeMenu({Key key, this.onSelect, this.initialValue}) : super(key: key);
@override //
Widget build(BuildContext context) { // @override
final settingProvider = Provider.of<SettingProvider>(context); // Widget build(BuildContext context) {
final userProvider = Provider.of<UserProvider>(context); // final settingProvider = Provider.of<SettingProvider>(context);
final menuProvider = Provider.of<GasTypesProvider>(context); // final userProvider = Provider.of<UserProvider>(context);
return LoadingManager( // final menuProvider = Provider.of<GasTypesProvider>(context);
isLoading: menuProvider.isLoading, // return LoadingManager(
isFailedLoading: menuProvider.items == null, // isLoading: menuProvider.isLoading,
stateCode: menuProvider.stateCode, // isFailedLoading: menuProvider.items == null,
onRefresh: () async { // stateCode: menuProvider.stateCode,
menuProvider.reset(); // onRefresh: () async {
await menuProvider.getData(user: userProvider.user, host: settingProvider.host); // menuProvider.reset();
}, // await menuProvider.getData(user: userProvider.user, host: settingProvider.host);
child: SingleStatusMenu( // },
initialStatus: initialValue, // child: SingleStatusMenu(
statuses: menuProvider.items, // initialStatus: initialValue,
onSelect: onSelect, // statuses: menuProvider.items,
)); // onSelect: onSelect,
} // ));
} // }
// }

@ -1,117 +1,118 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:flutter_typeahead/flutter_typeahead.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:flutter_typeahead/flutter_typeahead.dart';
import 'package:test_sa/views/app_style/sizing.dart'; // import 'package:test_sa/models/lookup.dart';
// import 'package:test_sa/views/app_style/sizing.dart';
class MultiStatusMenu extends StatefulWidget { //
final List<Lookup> statuses; // class MultiStatusMenu extends StatefulWidget {
final List<Lookup> initialSelectedStatus; // final List<Lookup> statuses;
final Function(List<Lookup>) onSelect; // final List<Lookup> initialSelectedStatus;
// final Function(List<Lookup>) onSelect;
const MultiStatusMenu({Key key, this.statuses, this.onSelect, this.initialSelectedStatus}) : super(key: key); //
// const MultiStatusMenu({Key key, this.statuses, this.onSelect, this.initialSelectedStatus}) : super(key: key);
@override //
_MultiStatusMenuState createState() => _MultiStatusMenuState(); // @override
} // _MultiStatusMenuState createState() => _MultiStatusMenuState();
// }
class _MultiStatusMenuState extends State<MultiStatusMenu> { //
List<Lookup> _selectedStatus = []; // class _MultiStatusMenuState extends State<MultiStatusMenu> {
TextEditingController _controller; // List<Lookup> _selectedStatus = [];
// TextEditingController _controller;
@override //
void initState() { // @override
_controller = TextEditingController(); // void initState() {
_selectedStatus.addAll(widget.initialSelectedStatus); // _controller = TextEditingController();
super.initState(); // _selectedStatus.addAll(widget.initialSelectedStatus);
} // super.initState();
// }
@override //
void dispose() { // @override
_controller.clear(); // void dispose() {
super.dispose(); // _controller.clear();
} // super.dispose();
// }
@override //
Widget build(BuildContext context) { // @override
return Column( // Widget build(BuildContext context) {
crossAxisAlignment: CrossAxisAlignment.start, // return Column(
children: [ // crossAxisAlignment: CrossAxisAlignment.start,
Wrap( // children: [
crossAxisAlignment: WrapCrossAlignment.start, // Wrap(
alignment: WrapAlignment.start, // crossAxisAlignment: WrapCrossAlignment.start,
runAlignment: WrapAlignment.start, // alignment: WrapAlignment.start,
children: List.generate(_selectedStatus.length, (index) { // runAlignment: WrapAlignment.start,
final status = _selectedStatus[index]; // children: List.generate(_selectedStatus.length, (index) {
return Container( // final status = _selectedStatus[index];
height: 36 * AppStyle.getScaleFactor(context), // return Container(
margin: EdgeInsets.all(4 * AppStyle.getScaleFactor(context)), // height: 36 * AppStyle.getScaleFactor(context),
//padding: EdgeInsets.all(4 * AppStyle.getScaleFactor(context)), // margin: EdgeInsets.all(4 * AppStyle.getScaleFactor(context)),
decoration: BoxDecoration(color: Theme.of(context).colorScheme.primary, borderRadius: BorderRadius.circular(8)), // //padding: EdgeInsets.all(4 * AppStyle.getScaleFactor(context)),
child: Row( // decoration: BoxDecoration(color: Theme.of(context).colorScheme.primary, borderRadius: BorderRadius.circular(8)),
mainAxisSize: MainAxisSize.min, // child: Row(
children: [ // mainAxisSize: MainAxisSize.min,
const SizedBox( // children: [
width: 12, // const SizedBox(
), // width: 12,
Text( // ),
status.name, // Text(
style: Theme.of(context).textTheme.bodyText1.copyWith( // status.name,
color: Theme.of(context).colorScheme.onPrimary, // style: Theme.of(context).textTheme.bodyText1.copyWith(
), // color: Theme.of(context).colorScheme.onPrimary,
), // ),
IconButton( // ),
color: Theme.of(context).colorScheme.onPrimary, // IconButton(
onPressed: () { // color: Theme.of(context).colorScheme.onPrimary,
_selectedStatus.remove(status); // onPressed: () {
widget.onSelect(_selectedStatus); // _selectedStatus.remove(status);
setState(() {}); // widget.onSelect(_selectedStatus);
}, // setState(() {});
icon: const Icon(Icons.delete)) // },
], // icon: const Icon(Icons.delete))
)); // ],
}), // ));
), // }),
Container( // ),
padding: const EdgeInsets.symmetric(horizontal: 16), // Container(
decoration: BoxDecoration( // padding: const EdgeInsets.symmetric(horizontal: 16),
color: Colors.white, // decoration: BoxDecoration(
// border: Border.all(color: AColors.black), // color: Colors.white,
borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)), // // border: Border.all(color: AColors.black),
boxShadow: const [AppStyle.boxShadow]), // borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)),
child: TypeAheadField<Lookup>( // boxShadow: const [AppStyle.boxShadow]),
textFieldConfiguration: TextFieldConfiguration( // child: TypeAheadField<Lookup>(
style: Theme.of(context).textTheme.subtitle1, // textFieldConfiguration: TextFieldConfiguration(
controller: _controller, // style: Theme.of(context).textTheme.subtitle1,
textAlign: TextAlign.center, // controller: _controller,
decoration: const InputDecoration( // textAlign: TextAlign.center,
border: InputBorder.none, // decoration: const InputDecoration(
disabledBorder: InputBorder.none, // border: InputBorder.none,
focusedBorder: InputBorder.none, // disabledBorder: InputBorder.none,
enabledBorder: InputBorder.none, // focusedBorder: InputBorder.none,
), // enabledBorder: InputBorder.none,
textInputAction: TextInputAction.search, // ),
), // textInputAction: TextInputAction.search,
suggestionsCallback: (vale) { // ),
return widget.statuses.where((Lookup option) { // suggestionsCallback: (vale) {
return option.name.toLowerCase().contains(_controller.text); // return widget.statuses.where((Lookup option) {
}); // return option.name.toLowerCase().contains(_controller.text);
}, // });
itemBuilder: (context, part) { // },
return ListTile( // itemBuilder: (context, part) {
title: Text(part.name), // return ListTile(
); // title: Text(part.name),
}, // );
onSuggestionSelected: (status) { // },
_controller.clear(); // onSuggestionSelected: (status) {
if (!_selectedStatus.contains(status)) { // _controller.clear();
_selectedStatus.add(status); // if (!_selectedStatus.contains(status)) {
widget.onSelect(_selectedStatus); // _selectedStatus.add(status);
setState(() {}); // widget.onSelect(_selectedStatus);
} // setState(() {});
}, // }
), // },
), // ),
], // ),
); // ],
} // );
} // }
// }

@ -1,35 +1,36 @@
import 'package:flutter/material.dart'; ///todo deleted
import 'package:provider/provider.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/controllers/providers/api/status_drop_down/pentry/pentry_status_provider.dart'; // import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart'; // import 'package:test_sa/controllers/providers/api/status_drop_down/pentry/pentry_status_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; // import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/models/lookup.dart'; // import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; // import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/views/widgets/status/single_status_menu.dart'; // import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
// import 'package:test_sa/views/widgets/status/single_status_menu.dart';
class PentryStatusMenu extends StatelessWidget { //
final Function(Lookup) onSelect; // class PentryStatusMenu extends StatelessWidget {
final Lookup initialValue; // final Function(Lookup) onSelect;
// final Lookup initialValue;
const PentryStatusMenu({Key key, this.onSelect, this.initialValue}) : super(key: key); //
// const PentryStatusMenu({Key key, this.onSelect, this.initialValue}) : super(key: key);
@override //
Widget build(BuildContext context) { // @override
final settingProvider = Provider.of<SettingProvider>(context); // Widget build(BuildContext context) {
final userProvider = Provider.of<UserProvider>(context); // final settingProvider = Provider.of<SettingProvider>(context);
final menuProvider = Provider.of<PentryStatusProvider>(context); // final userProvider = Provider.of<UserProvider>(context);
return LoadingManager( // final menuProvider = Provider.of<PentryStatusProvider>(context);
isLoading: menuProvider.isLoading, // return LoadingManager(
isFailedLoading: menuProvider.items == null, // isLoading: menuProvider.isLoading,
stateCode: menuProvider.stateCode, // isFailedLoading: menuProvider.items == null,
onRefresh: () async { // stateCode: menuProvider.stateCode,
menuProvider.reset(); // onRefresh: () async {
await menuProvider.getData(user: userProvider.user, host: settingProvider.host); // menuProvider.reset();
}, // await menuProvider.getData(user: userProvider.user, host: settingProvider.host);
child: SingleStatusMenu( // },
initialStatus: initialValue, // child: SingleStatusMenu(
statuses: menuProvider.items, // initialStatus: initialValue,
onSelect: onSelect, // statuses: menuProvider.items,
)); // onSelect: onSelect,
} // ));
} // }
// }

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save